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

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

发布于 2021-05-30 14:07:04
收藏
分享
海报
0 条评论
165
上一篇:thinkphp中Auth类认证的示例分析 下一篇:C语言如何实现Floyd算法
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码