c语言学生成绩管理系统(C语言如何实现学生成绩管理系统)

发布时间:2025-12-10 23:33:01 浏览次数:1

设计一个学生成绩管理系统,实现对学生成绩的动态管理,实现对学生成绩的输入,显示,删除,查找,插入,**,保存,计算,排序等主要功能。

功能要求

1、每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩。
2、输入功能:可以一次完成若干条记录的输入。
3、显示功能:完成全部学生记录的显示。
4、查找功能:完成按姓名查找学生记录,并显示。
5、排序功能:按学生平均成绩进行排序。
6、插入功能:按平均成绩高低插入一条学生记录
7、删除功能:如果输入错误,可以删除学生记录;
8、退出。

代码:

#include<stdio.h>#include<stdlib.h>#include<string.h>#defineSIZE_NAME10#defineSIZE_ID20intRecord=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语言如何实现学生成绩管理系统”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

c语言学生成绩管理系统
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477