C语言如何实现学生成绩管理系统
作者
这篇文章给大家分享的是有关C语言如何实现学生成绩管理系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
设计一个学生成绩管理系统,实现对学生成绩的动态管理,实现对学生成绩的输入,显示,删除,查找,插入,最佳,保存,计算,排序等主要功能。
功能要求
1、每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩。 2、输入功能:可以一次完成若干条记录的输入。 3、显示功能:完成全部学生记录的显示。 4、查找功能:完成按姓名查找学生记录,并显示。 5、排序功能:按学生平均成绩进行排序。 6、插入功能:按平均成绩高低插入一条学生记录 7、删除功能:如果输入错误,可以删除学生记录; 8、退出。
代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> #defineSIZE_NAME10 #defineSIZE_ID20 intRecord=0; typedefstruct{ charname[SIZE_NAME]; charid[SIZE_ID]; inta,b,c; intava; }pInfo; typedefstructnode{ pInfopeople; structnode*next; }linkList; intmenu(); intcreate(linkList*head); intdisplay(linkList*head); intsearch(linkList*head,char*info); intmodify(linkList*head,char*pid); intadd2(linkList*head,char*pid); intdelt(linkList*head,char*info); intcompare(intava1,intava2); intsort(linkList*head,intboolean);//1升序0降序 intmain() { linkListhead,*p; charinfo[SIZE_ID]; inttemp,chus,i; head.next=NULL; while(1){ switch(menu()){ case1: create(&head); break; case2: display(&head); break; case3: printf("请输入需要查询的学号或姓名:"); scanf("%s",info); p=&head; p=p->next; for(i=0;i<search(&head,info);i++){ p=p->next; } printf("搜索到:\n"); printf("\t\t\t\t学生信息\n"); printf("--------------------------------------------------------------------------------\n"); printf("\t\t学号\t\t姓名\t\t\t平均成绩\n"); printf("--------------------------------------------------------------------------------\n"); printf("%20s\t",p->people.id); printf("%10s\t",p->people.name); printf("%20d\n",p->people.ava); break; case4: printf("请输入需要修改的学号:"); scanf("%s",info); modify(&head,info); break; case5: printf("请输入需要添加的学号:"); scanf("%s",info); add2(&head,info); break; case6: printf("请输入需要删除的学号或姓名:"); scanf("%s",info); delt(&head,info); break; case7: printf("请输入1或0:\n\t1:升序\n\t0:降序\n"); scanf("%d",&temp); sort(&head,temp); break; case8: exit(0); break; default: printf("输错了,再来一次\n"); } system("pause"); system("cls"); } system("pause"); return0; } intmenu() { intchus; printf("\t学生信息\n\n"); printf("请输入(1--8):\n"); printf("\t1.创建学生信息\n"); printf("\t2.显示学生信息\n"); printf("\t3.查询学生信息\n"); printf("\t4.修改学生信息\n"); printf("\t5.添加学生信息\n"); printf("\t6.删除学生信息\n"); printf("\t7.排序学生成绩\n"); printf("\t8.退出\n"); scanf("%d",&chus); returnchus; } intcreate(linkList*head) { linkList*s,*p; p=head; printf("请输入学号姓名三科成绩,输入end结束\n"); while(1){ s=(linkList*)malloc(sizeof(linkList)); scanf("%s",s->people.id); if(!strcmp(s->people.id,"end")){ return0; } scanf("%s",s->people.name); scanf("%d",&s->people.a); scanf("%d",&s->people.b); scanf("%d",&s->people.c); s->people.ava=(s->people.a+s->people.b+s->people.c)/3; s->next=p->next; p->next=s; p=s; Record++; } return0; } intdisplay(linkList*head) { inti; linkList*p; p=head; p=p->next; printf("\t\t\t\t学生信息\n"); printf("--------------------------------------------------------------------------------\n"); printf("\t\t学号\t\t姓名\t\t\t平均成绩\n"); printf("--------------------------------------------------------------------------------\n"); for(i=0;i<Record;i++,p=p->next){ printf("%20s\t",p->people.id); printf("%10s\t",p->people.name); printf("%20d\n",p->people.ava); } return0; } intsearch(linkList*head,char*info) { inti; linkList*p; p=head; p=p->next; for(i=0;i<Record;i++,p=p->next){ if((!strcmp(p->people.id,info))||(!strcmp(info,p->people.name))){ returni; } } return-1; } intmodify(linkList*head,char*pid) { inti; linkList*p; p=head; p=p->next; for(i=0;i<search(head,pid);i++){ p=p->next; } printf("请输入新信息:\n"); scanf("%s",p->people.id); scanf("%s",p->people.name); scanf("%d",&p->people.a); scanf("%d",&p->people.b); scanf("%d",&p->people.c); p->people.ava=(p->people.a+p->people.b+p->people.c)/3; return0; } intadd2(linkList*head,char*pid) { inti; linkList*p,*s; p=head; p=p->next; s=(linkList*)malloc(sizeof(linkList)); while(p->next!=NULL){ p=p->next; } printf("请输入需要添加的姓名和成绩:\n"); strcpy(s->people.id,pid); scanf("%s",s->people.name); scanf("%d",&s->people.a); scanf("%d",&s->people.b); scanf("%d",&s->people.c); s->people.ava=(s->people.a+s->people.b+s->people.c)/3; if(search(head,s->people.id)==-1){ s->next=p->next; p->next=s; Record++; } else{ printf("学号重复了\n"); } sort(head,0); return0; } intdelt(linkList*head,char*info) { inti,n; linkList*p,*s; p=head; n=search(head,info); if(-1==n){ printf("没有找到\n"); return0; } for(i=0;i<n;i++){ p=p->next; } p->next=p->next->next; Record--; return0; } intcompare(intava1,intava2) { if(ava1<ava2){ return1; } return0; } intsort(linkList*head,intboolean) { linkList*p,*pre; pInfotemp; if(boolean){ for(p=head->next;p!=NULL;p=p->next){ for(pre=p->next;pre!=NULL;pre=pre->next){ if(0==compare(p->people.ava,pre->people.ava)){ temp=p->people; p->people=pre->people; pre->people=temp; } } } } else{ for(p=head->next;p!=NULL;p=p->next){ for(pre=p->next;pre!=NULL;pre=pre->next){ if(1==compare(p->people.ava,pre->people.ava)){ temp=p->people; p->people=pre->people; pre->people=temp; } } } } return0; }
感谢各位的阅读!关于“C语言如何实现学生成绩管理系统”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
目录
推荐阅读
0 条评论
本站已关闭游客评论,请登录或者注册后再评论吧~