学生成绩管理系统.docx
- 文档编号:15183429
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:50
- 大小:19.96KB
学生成绩管理系统.docx
《学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统.docx(50页珍藏版)》请在冰点文库上搜索。
学生成绩管理系统
#include
#include
#include
typedefstructstudent{//学生信息
intno;
charname[20];
intclassNumber;
intchinese;
intmaths;
intenglish;
structstudent*next;
}LIST;
LIST*CreateList();//创建学生信息
voidDispList(LIST*h);//浏览学生信息
LIST*changeList(LIST*first);//修改学生信息
LIST*addList(LIST*h);//插入学生信息
LIST*deleteList(LIST*h);//删除学生信息
voidfindList(LIST*head);//寻找学生信息
LIST*resetList(LIST*h);//排序学生信息
voidsaveList(LIST*head);//保存学生信息
LIST*loadList();//读取学生信息
intmain(void){
LIST*head;
while
(1){
system("cls");
printf("学生成绩管理系统");
printf("\n1.创建学生信息");
printf("\n2.浏览学生信息");
printf("\n3.修改学生信息");
printf("\n4.插入学生信息");
printf("\n5.删除学生信息");
printf("\n6.寻找学生信息");
printf("\n7.排序学生信息");
printf("\n8.保存学生信息");
printf("\n9.读取学生信息");
printf("\n请选择:
");
switch(getchar())
{
case'1':
system("cls");head=CreateList();break;
case'2':
system("cls");DispList(head);break;
case'3':
system("cls");DispList(head);head=changeList(head);break;
case'4':
system("cls");DispList(head);head=addList(head);break;
case'5':
system("cls");DispList(head);head=deleteList(head);break;
case'6':
system("cls");findList(head);break;
case'7':
system("cls");head=resetList(head);break;
case'8':
system("cls");saveList(head);break;
case'9':
system("cls");head=loadList();break;
default:
printf("\n输入错误");
}
}
return0;
}
LIST*CreateList(){//创建学生信息
inti,n,sure=1;
LIST*h=NULL,*prev=NULL,*cur=NULL,*temp;
printf("\n请输入有多少学生:
");
scanf("%d",&n);
for(i=0;i cur=(LIST*)malloc(sizeof(LIST)); if(cur==NULL){ printf("\n空间已满。 "); return0; } cur->next=NULL; if(h==NULL) h=cur; else prev->next=cur; sure=1; printf("\n请输入学号: "); while(sure==1){ sure=0; scanf("%d",&cur->no); if(cur->no<0) { printf("\n输入学生学号错误,重新输入: "); sure=1;} else {for(temp=h;temp->next! =NULL;temp=temp->next) { if(cur->no==temp->no) {printf("\n链表中已存在此学号,不能输入相同的学号,请重新输入: "); sure=1;}} } } printf("\n请输入姓名: "); scanf("%s",cur->name); sure=1; printf("\n请输入班级: "); while(sure==1){ sure=0; scanf("%d",&cur->classNumber); if(cur->classNumber<0) {getchar(); printf("\n输入学生班级错误,重新输入: "); sure=1;} } printf("\n请输入语文成绩: "); scanf("%d",&cur->chinese); while(cur->chinese<0||cur->chinese>100) {printf("\n输入分数错误,应在0~100之间\n重新输入: "); scanf("%d",&cur->chinese); } printf("\n请输入数学成绩: "); scanf("%d",&cur->maths); while(cur->maths<0||cur->maths>100) {printf("\n输入分数错误,应在0~100之间\n重新输入: "); scanf("%d",&cur->maths); } printf("\n请输入英语成绩: "); scanf("%d",&cur->english); while(cur->english<0||cur->english>100) {printf("\n输入分数错误,应在0~100之间\n重新输入: "); scanf("%d",&cur->english); } prev=cur; } returnh; } voidDispList(LIST*h){//浏览学生信息 LIST*p=h; intno=0,sumChinese=0,sumMaths=0,sumEnglish=0; while(p! =NULL) { printf("\n学号姓名班级语文数学英语平均分总分"); printf("\n%3d%5s%3d%3d%3d%3d%3d%4d",p->no,p->name,p->classNumber,p->chinese,p->maths,p->english,(p->chinese+p->maths+p->english)/3,(p->chinese+p->maths+p->english)); no=no+1; sumChinese=sumChinese+p->chinese; sumMaths=sumMaths+p->maths; sumEnglish=sumEnglish+p->english; p=p->next; } printf("\n全班语文平均分: %d",sumChinese/no); printf("\n全班数学平均分: %d",sumMaths/no); printf("\n全班英语平均分: %d",sumEnglish/no); printf("\n是否继续? "); getch(); } LIST*changeList(LIST*first){//修改学生信息 intnumber,noNOW,sure,sure2=1; LIST*h=NULL,*cur=NULL,*temp=NULL; h=first; cur=first; printf("\n输入要修改的学生学号: "); scanf("%d",&number); getchar(); while(cur! =NULL){ if(cur->no==number){ printf("\n已经找到如下信息: "); printf("\n学号姓名班级语文数学英语平均分总分"); printf("\n%3d%5s%3d%3d%3d%3d%3d%4d",cur->no,cur->name,cur->classNumber,cur->chinese,cur->maths,cur->english,(cur->chinese+cur->maths+cur->english)/3,(cur->chinese+cur->maths+cur->english)); while(sure2==1){ printf("\n要修改哪项: 1: 学号2: 姓名3: 班级4: 语文5: 数学6: 英语7: 退出\n"); sure2=1; switch(getchar()) { case'1': { printf("\n请输入学号: "); sure=1; while(sure==1){ sure=0; scanf("%d",&noNOW); if(noNOW<0) { printf("\n输入学生学号错误,重新输入: "); sure=1;} else {for(temp=h;temp->next! =NULL;temp=temp->next) { if(noNOW==temp->no) {printf("\n链表中已存在此学号,不能输入相同的学号,请重新输入: "); sure=1;}} } } cur->no=noNOW;}getchar();break; case'2': { printf("\n请输入姓名: "); scanf("%s",cur->name); }getchar();break; case'3': {printf("\n请输入班级: "); sure=1; while(sure==1){ sure=0; scanf("%d",&cur->classNumber); if(cur->classNumber<0) {getchar(); printf("\n输入学生班级错误,重新输入: "); sure=1;} }}getchar();break; case'4': {printf("\n请输入语文成绩: "); scanf("%d",&cur->chinese); while(cur->chinese<0||cur->chinese>100) {printf("\n输入分数错误,应在0~100之间\n重新输入: "); scanf("%d",&cur->chinese); } }getchar();break; case'5': { printf("\n请输入数学成绩: "); scanf("%d",&cur->maths); while(cur->maths<0||cur->maths>100) {printf("\n输入分数错误,应在0~100之间\n重新输入: "); scanf("%d",&cur->maths); } }getchar();break; case'6': { printf("\n请输入英语成绩: "); scanf("%d",&cur->english); while(cur->english<0||cur->english>100) {printf("\n输入分数错误,应在0~100之间\n重新输入: "); scanf("%d",&cur->english); } }getchar();break; case'7': sure2=0;break; default: printf("\n输入错误"); } } break; } cur=cur->next; } if(cur==NULL) printf("\n没有此学号。 "); getchar(); returnh; } LIST*addList(LIST*h){//插入学生信息 LIST*pre=NULL,*p=NULL,*cur=NULL,*prev=NULL,*temp=NULL; intsure; p=h; cur=(LIST*)malloc(sizeof(LIST)); if(cur==NULL){ printf("\n空间已满。 "); return0; } cur->next=NULL; printf("\n请输入学号: "); sure=1; while(sure==1){ sure=0; scanf("%d",&cur->no); if(cur->no<0) {getchar(); printf("\n输入学生学号错误,重新输入: "); sure=1;} else {for(temp=h;temp! =NULL;temp=temp->next) { if(cur->no==temp->no) {printf("\n链表中已存在此学号,不能输入相同的学号! "); sure=1;}} } } printf("\n请输入姓名: "); scanf("%s",&cur->name); printf("\n请输入班级: "); sure=1; while(sure==1){ sure=0; scanf("%d",&cur->classNumber); if(cur->classNumber<0) {getchar(); printf("\n输入学生班级错误,重新输入: "); sure=1;} } printf("\n请输入语文成绩: "); scanf("%d",&cur->chinese); while(cur->chinese<0||cur->chinese>100) {printf("\n输入分数错误,应在0~100之间\n重新输入: "); scanf("%d",&cur->chinese); } printf("\n请输入数学成绩: "); scanf("%d",&cur->maths); while(cur->maths<0||cur->maths>100) {printf("\n输入分数错误,应在0~100之间\n重新输入: "); scanf("%d",&cur->maths); } printf("\n请输入英语成绩: "); scanf("%d",&cur->english); while(cur->english<0||cur->english>100) {printf("\n输入分数错误,应在0~100之间\n重新输入: "); scanf("%d",&cur->english); } if(h==NULL) { h=cur; cur->next=NULL; } else { while((cur->no =NULL)) { pre=p; p=p->next; } if(cur->no>=p->no) { if(h==p) { h=cur; cur->next=p; } else { pre->next=cur; cur->next=p; } } else { p->next=cur; cur->next=NULL; } } returnh; } LIST*deleteList(LIST*h){//删除学生信息 LIST*p=NULL,*temp=NULL; intnomber; floaty='a'; p=h; printf("\n输入要删除的学生学号: "); scanf("%d",&nomber); getchar(); while(p! =NULL) { if(p->no==nomber) { printf("\n确认信息: "); printf("\n学号姓名班级语文数学英语平均分总分"); printf("\n%3d%5s%3d%3d%3d%3d%3d%4d",p->no,p->name,p->classNumber,p->chinese,p->maths,p->english,(p->chinese+p->maths+p->english)/3,(p->chinese+p->maths+p->english)); break; } temp=p; p=p->next;} if(p==NULL) {printf("\n没有找到此ID号"); getchar(); getchar(); return(h); } else{ printf("\n确认删除请输入Y: "); y=getchar(); if(y=='y'||y=='Y'){ if(p==h) { printf("\n删除成功! ");getchar();getchar();return(h->next);} else{temp->next=p->next; printf("\n删除成功! "); getchar();getchar();return(h);} }elseprintf("\n返回。 ");getchar();getchar();return(h); } } voidfindList(LIST*head){//寻找学生信息 intnumber,classN,n=0,x,score; charcName[30]; typedefstructstudent2{//学生信息 intno; charname[20]; intclassNumber; intchinese; intmaths; intenglish; structstudent2*next; }LIST2; LIST*p=head; LIST2*h,*prev,*cur; charturn='y'; while(p! =NULL) { cur=(LIST2*)malloc(sizeof(LIST2)); cur->next=NULL; if(h==NULL) h=cur; else prev->next=cur; cur->no=p->no; strcpy(cur->name,p->name); cur->classNumber=p->classNumber; cur->chinese=p->chinese; cur->maths=p->maths; cur->english=p->english; prev=cur; p=p->next; } while(turn=='y'||turn=='Y'){ system("cls"); printf("\n1.按照学号查找"); printf("\n2.按照姓名查找"); printf("\n3.按照班级查找"); printf("\n4.按照语文成绩查找"); printf("\n5.按照数学成绩查找"); printf("\n6.按照英语成绩查找"); printf("\n7.按照平均分查找"); printf("\n8.按照总分绩查找"); printf("\n请选择: "); prev=h; switch(getchar()) { case'1': { system("cls"); printf("\n输入学号: "); scanf("%d",&number); printf("\n学号姓名班级语文数学英语平均分总分"); while(prev! =NULL) { if(prev->no==number) {printf("\n%3d%5s%3d%3d%3d%3d%3d%4d",prev->no,prev->name,prev->classNumber,prev->chinese,prev->maths,prev->english,(prev->chinese+prev->maths+prev->english)/3,(prev->chinese+prev->maths+prev->english)); n=n+1;} else{ if(prev==h) h=prev->next; else cur->next=prev->next; } cur=prev; prev=prev->next; } if(n==0){ printf("\n没有找到该学号"); } getchar(); turn='a'; printf("\n结果中寻找? (Y/N)"); while(turn! ='y'&&turn! ='Y'&&turn! ='n'&&turn! ='N'){ scanf("%s",&turn);} break; } case'2': { system("cls"); getchar(); printf("\n输入学生姓名: "); scanf("%s",cName); printf("\n学号姓名班级语文数学英语平均分总分"); while(prev! =NULL) { if(strstr(prev->name,cName)) {printf("\n%3d%5s%3d%3d%3d%3d%3d%4d",prev->no,prev->name,prev->classNumber,prev->chinese,prev->maths,prev->english,(prev->chinese+prev->maths+prev->english)/3,(prev->chinese+prev->maths+prev->english)); n=n+1;} else{ if(prev==h) h=prev->next; else cur->next=prev->next; } cur=prev; prev=prev->next; } if(n==0){ printf("\n没有找到该姓名"); } getchar(); turn='a'; printf(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统