数据结构线性表实验,学生管理系统,c语言的时候不是自己写的,现在又有机会自己写一份,定义了全局的链表,老师说函数没参数,最好用ADT,就到这吧,不想改了,看来以后写程序要考虑函数的通用性,应该系统的学学C++了,用对象的思想来写程序了;
SqList:
#include
#include
#include
#include
const int MAXN=100+10;
typedef struct{
char name[10];
char no[10];
int sco;
}Student;
int len=0;
void Input(Student *stu)
{
printf("输入学生个数: ");
int N,i;
scanf("%d",&N);
if(N>=MAXN) printf("输入人数已达最大限度(最多学生人数为109人),请谅解!\n");
else{
len=N;
for(i=1;i<=N;++i)
{
printf("\n请输入第%d个学生的名字: ",i);
scanf("%s",stu[i].name);
printf("\n请输入第%d个学生的学号: ",i);
scanf("%s",stu[i].no);
printf("\n请输入第%d个学生的分数: ",i);
scanf("%d",&stu[i].sco);
}
}
printf("\n\n输入回车键返回主菜单");
getch(); return ;
}
void Output(Student *stu)
{
int i=0;
if(len<=0)
printf("\n尚未录入学生信息,请录入!!!");
else
{
printf("姓名\t\t学号\t\t成绩\n");
for(i=1;i<=len;++i)
{
printf("%-16s%-16s%d\n",stu[i].name,stu[i].no,stu[i].sco);
}
}
printf("\n输入回车键返回主菜单");
getch();
return ;
}
void Get_Len(Student *stu)
{
if(len<=0) printf("学生人数为0,请先录入学生信息!!!\n");
else{
printf("\n学生总数为: %d\n",len);
}
printf("\n\n输入回车键返回主菜单");
getch();
return ;
}
void Search_Name(Student *stu)
{
printf("\n请输入学生姓名:");
char str[23]; scanf("%s",str);
int i=0;
for(i=1;i<=len;++i)
{
if(!strcmp(str,stu[i].name)) break;
}
if(i<=len) printf("\n该学生的学号为: %s 成绩为: %d\n",stu[i].no,stu[i].sco);
else printf("找不到该学生信息\n");
printf("\n\n输入回车键返回主菜单");
getch();
}
void Search_Pos(Student *stu)
{
printf("请输入学生序号: ");
int num;
scanf("%d",&num); puts("");
if(num>len||num<1)
{
printf("输入错误,请核对后重试!!!\n"); return ;
}
else {
printf("学生姓名:%s\n",stu[num].name);
printf("学生学号:%s\n",stu[num].no);
printf("学生分数:%d\n",stu[num].sco);
}
printf("\n\n输入回车键返回主菜单");
getch();
}
void Insert(Student *stu)
{
printf("请输入插入位置: ");
int pos; scanf("%d",&pos); puts("");
if(pos<1||pos>len+1) printf("输入信息错误,请核对后再试!!!\n");
else{
int i=0;
for(i=len;i>=pos;--i)
{
strcpy(stu[i+1].name,stu[i].name);
strcpy(stu[i+1].no,stu[i].no);
stu[i+1].sco=stu[i].sco;
}
printf("请输入要插入的学生的信息\n");
printf("姓名: "); scanf("%s",stu[pos].name);
printf("学号: "); scanf("%s",stu[pos].no);
printf("分数:"); scanf("%d",&stu[pos].sco);
printf("\n插入成功!"); len++;
}
printf("\n\n输入回车键返回主菜单");
getch();
}
void Delete(Student *stu)
{
if(len<=0) printf("\n学生人数为0,请先录入学生信息!!!");
else
{
printf("\n请输入删除学生的编号: ");
int num=0; scanf("%d",&num); puts("");
if(num<1||num>len)
{
printf("\n输入有误,请核对后重试!!!\n");
}
else{
int i=0;
for(i=num;i
#include
#include
#include
#include
#include
typedef struct Student{
char name[22],no[22];
int sco;
}Student;
typedef struct LNode{
Student date;
struct LNode *next;
}LNode,*LinkList;
void Ini(LinkList &L) {
L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; L->date.sco=0;
}
void CreateList_R(LinkList &L)
{
printf("请输入录入学生个数: ");
int N; scanf("%d",&N);
L->date.sco=N;
LNode *p=L; int i=0;
for(i=1;i<=N;++i)
{
LNode *b=(LinkList)malloc(sizeof(LNode)); b->next=NULL;
printf("\n请输入第%d个学生的姓名: ",i);
scanf("%s",b->date.name);
printf("\n请输入第%d个学生的学号: ",i);
scanf("%s",b->date.no);
printf("\n请输入第%d个学生的成绩: ",i);
scanf("%d",&b->date.sco);
p->next=b; p=b;
}
printf("\n信息录入成功!");
printf("\n\n输入回车键返回主菜单");
getch();
}
void TraveList(LinkList &L)
{
if(L->next==NULL) printf("\n尚未录入学生信息,请录入!!!");
else{
LNode* p=L->next;
printf("姓名\t\t学号\t\t成绩\n");
while(p!=NULL)
{
printf("%-16s%-16s%d\n",p->date.name,p->date.no,p->date.sco);
p=p->next;
}
}
printf("\n\n输入回车键返回主菜单");
getch();
}
void Search_Name(LinkList &L)
{
printf("\n请输入学生姓名:");
char str[23]; scanf("%s",str);
LNode *p=L;
while(p->next&&strcmp(str,p->next->date.name)) p=p->next;
if(p->next)
printf("\n该学生的学号为: %s 成绩为: %d\n",p->next->date.no,p->next->date.sco);
else printf("\n找不到该学生信息!!!\n");
printf("\n\n输入回车键返回主菜单");
getch();
}
void Search_Pos(LinkList &L)
{
printf("请输入学生序号: "); int num;
scanf("%d",&num); puts("");
if(num>L->date.sco||num<1)
printf("输入错误,请核对后重试!!!\n");
else {
LNode *p=L; int i=0;
while(inext; ++i;
}
printf("学生姓名:%s\n",p->date.name);
printf("学生学号:%s\n",p->date.no);
printf("学生分数:%d\n",p->date.sco);
}
printf("\n\n输入回车键返回主菜单");
getch();
}
void Insert(LinkList &L)
{
printf("请输入插入位置: ");
int pos; scanf("%d",&pos); puts("");
if(pos<1||pos>L->date.sco+1) printf("输入信息错误,请核对后再试!!!\n");
else{
LNode *s=(LNode*)malloc(sizeof(LNode));
printf("请输入要插入的学生的信息\n");
printf("姓名: "); scanf("%s",s->date.name);
printf("学号: "); scanf("%s",s->date.no);
printf("分数:"); scanf("%d",&s->date.sco);
int i=0; LNode *p=L;
while(inext; ++i;
}
s->next=p->next; p->next=s;
printf("\n插入成功!"); L->date.sco++;
}
printf("\n\n输入回车键返回主菜单");
getch();
}
void Delete(LinkList &L)
{
if(L->date.sco<=0) printf("学生人数为0,请先录入学生信息!!!");
else
{
printf("请输入删除学生的编号: ");
int num=0; scanf("%d",&num); puts("");
if(num<1||num>(L->date.sco+1))
{
printf("输入有误,请核对后重试!!!\n");
}
else{
int i=1; LNode *pre=L,*s=L->next;
while(inext; s=s->next; ++i;
}
pre->next=s->next; free(s);
L->date.sco--; printf("\n删除成功!");
}
}
printf("\n\n输入回车键返回主菜单");
getch();
}
void Get_Len(LinkList &L)
{
int len=L->date.sco;
if(len<=0) printf("学生人数为0,请先录入学生信息!!!\n");
else{
printf("\n学生总数为: %d\n",len);
}
printf("\n\n输入回车键返回主菜单");
getch();
return ;
}
void Meau(LinkList &L)
{
int choose;
printf("--------------------------欢迎使用学生信息管理系统----------------------------\n\n\n\n");
printf("1.输入学生信息\n");
printf("2.查看学生信息\n");
printf("3.输入姓名,查找学生信息\n");
printf("4.输入学生编号,查看学生信息\n");
printf("5.输入学生信息,插入到指定位置\n");
printf("6.删除指定位置学生信息\n");
printf("7.统计学生个数\n");
printf("8.退出系统\n");
printf("\n\n请输入操做所对编号: ");
scanf("%d",&choose); puts("");
switch(choose)
{
case 1: CreateList_R(L); break;
case 2: TraveList(L); break;
case 3: Search_Name(L); break;
case 4: Search_Pos(L); break;
case 5: Insert(L); break;
case 6: Delete(L); break;
case 7: Get_Len(L); break;
case 8: exit(0);
default: printf("\n输入有误! 请核对后重新输如入!!!\n");
printf("\n\n输入回车键返回主菜单"); getch();
break;
}
return ;
}
int main()
{
system("color 4e"); LinkList L; Ini(L);
while(1)
{
system("cls");
Meau(L);
}
return 0;
}