东莞自考计算机成绩录入,学生成绩信息管理系统

本文详细介绍了学生成绩信息管理系统的功能需求、系统分析、数据结构设计、算法描述、程序调试情况和主要功能实现。系统采用二进制文件存储数据,支持学生成绩录入、查询、修改、统计及输出,包括按学期、班级查询,统计平均分、总分,输出不及格科目等。开发工具为VC++6.0,结构体定义包括学期、班级、姓名、学号、性别和各科成绩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《学生成绩信息管理系统》由会员分享,可在线阅读,更多相关《学生成绩信息管理系统(30页珍藏版)》请在人人文库网上搜索。

1、1 问题描述学生成绩管理系统学生成绩管理系统学生信息包括学期、学号、班级、姓名,和语文、数学、英语、计算机四门课成绩。并按班级、学期查询学生成绩,并能录入、修改,求学生平均成绩和总成绩,输出不及格科目,按班级输出成绩单,按班级对学生成绩进行排序。2 系统分析2.1 问题定义学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)。主要功能:(1) 能按学期、按班级完成对学生成绩的录入、修改(2) 能按班级统计学生的成绩,求学生的总分及平均分,设计并输出统计报表(3) 能查询学生成绩,不及格科目及学生名单(4) 能按班级输出学生的成绩单(5) 能按班。

2、级,按课程,对学生成绩进行排序。要求:使用二进制文件方式存储数据,系统以菜单方式工作2.2开发工具 VC+6.02.3数据结构typedef struct studentMark int term; int classes; char name10; int number; char sex7; float chinese;float math;float english;float computer;struct studentMark *next; MARK;这是定义一个结构体,主要包括学期,班级,姓名,学号,性别,语文成绩,数学成绩,英语成绩,计算机成绩,以及包括一个结构体指针。另外还用。

3、了typedef这个关键字。因此,在程序的后面也可以用MARK来定义结构体变量或结构体指针变量。int term; 定义学期,学期只能是第一学期或者第二学期。例如int 1;则表示第一学期。 int classes; 定义班级,班级只能是一班或者二班。例如 int 2;则是表示定义为二班。 char name10; 定义姓名,在数组中存放字符串。例如 char name=“yang”;则该学生的姓名为yang int number; 定义学号,例如int 1;则该学生学号为1号。 char sex7; 定义姓别,其性别最大长度为7.例如 char sex=“man”;说明该学生为男生。同样可以。

4、这样定义女生。 float chinese; 定义语文成绩。float math; 定义数学成绩。float english; 定义英语成绩。float computer; 定义计算机成绩。struct studentMark *next; 定义一个结构体指针。int main();主函数,程序的入口。void m(MARK *head);主菜单的函数原型,在函数m(head)中主要有选择创建学生成绩信息,查询学生成绩信息,修改学生成绩信息,统计学生成绩信息,输出学生成绩信息,存储学生成绩信息于文件,以及退出体统等选项可供用户选择。 MARK *creat(void );创建函数的函数原型,在。

5、函数creat()中用户可以输入初始的学生信息:其中包括学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息。void searchMark(MARK *head);查询菜单的函数原型,在函数searchMark(head)中用户可以自由选择是查询某一个学生的成绩还是查询不及格学生的成绩。而这通过调用函数searchMarkStusentone(head)和函数searchMarkFail(head)完成操作。void searchMarkStusentone(MARK *head);查询某个学生成绩的函数原型,在函数searchMarkStusentone(head。

6、)中用户可以按学号或班级或者是按学期来查找某个学生的成绩。通过函数searchnumber(head)和函数 searchclasses(head)以及函数searchterm(head)完成操作。void searchnumber(MARK *head) 按学号查找学生的函数原型,;void searchclasses(MARK *head); 按班级查找学生的函数原型,void searchterm(MARK *head); 按学期查找学生的函数原型,void searchMarkFail(MARK *head);查询没有及格的学生的函数原型,通过这个函数可以查找学生不及格科目及学生名单。。

7、MARK *changeMark(MARK *head);修改学生成绩信息的函数原型,可以修改学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息。void conuntMark(MARK *head);统计学生成绩的函数原型,在函数conuntMark(head)中用户可以统计学生的总成绩以及平均成绩,通过调用函数totalMark(head)和函数aveMark(head)完成操作。void totalMark(MARK *head); 统计学生总成绩的函数原型,void aveMark(MARK *head); 统计学生平均成绩的函数原型,void printC。

8、lassMark(MARK *head);输出学生成绩信息的函数原型,通过此函数可以输出学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息到屏幕上。void saveFileMark(MARK *head);存储学生成绩信息于文件的函数原型,通过此函数可以输出学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息与文件中。2.4算法描述(1)创建主菜单(2)实现学生成绩信息录入(3)实现学生成绩信息查询(4)实现学生成绩信息修改(一)修改某个学生的成绩(a)按学期查询学生的成绩(b)按班级查询学生的成绩(c)按学号查询学生的成绩(二)查询不及。

9、格的科目和学生名单(5)实现学生成绩统计(a)按班级统计学生的总分。(b)按班级统计学生的平均分。(6)实现学生成绩信息输出(7)保存学生的成绩信息于文件(8)流程图如下:2.5程序调试情况(1)源程序如下:#include#include#include#include#define MAR (struct studentMark *)malloc(sizeof(struct studentMark)typedef struct studentMark int term; int classes; char name10; int number; char sex7; float chine。

10、se;float math;float english;float computer;struct studentMark *next; MARK;void m(MARK *head); MARK *creat(void );void searchMark(MARK *head);void searchMarkStusentone(MARK *head);void searchnumber(MARK *head);void searchclasses(MARK *head);void searchterm(MARK *head);void searchMarkFail(MARK *head);。

11、MARK *changeMark(MARK *head);void conuntMark(MARK *head);void totalMark(MARK *head); void aveMark(MARK *head);void printClassMark(MARK *head);void saveFileMark(MARK *head);int main(void)MARK *head=NULL;printf( *n);printf( # 欢迎进入学生成绩信息管理系统#n);printf( *n);printf(n);head=creat();m(head);return(0);void 。

12、m(MARK *head )int choose;while(1)printf(*n);printf( 学生成绩信息管理n);printf(*n);printf( 1创建成绩信息n);printf( 2查询成绩信息n);printf( 3修改成绩信息n);printf( 4统计成绩信息n);printf( 5按班级输出学生信息n);printf( 6保存成绩信息于文件n);printf( 7退出系统n);printf(*n);fflush(stdin);printf(请选择:);scanf(%d,&choose);if(1=choose)head=creat();else if(2=choos。

13、e)searchMark(head);else if(3=choose)head=changeMark(head);else if(4=choose)conuntMark(head);else if(5=choose)printClassMark(head);else if(6=choose)saveFileMark(head);elseprintf(退出系统);break;/创建一个学生成绩信息系统MARK *creat()MARK *head=NULL,*p1=NULL,*p2=NULL;char ch;fflush(stdin);printf(请问是否输入信息?(y 或n)n);scan。

14、f(%c,&ch);head=p1=p2=MAR; while(p1!=NULL & ch=y)p1=MAR; printf(请输入要录入学生信息的学期(学期只能为 1 或 2 ):); fflush(stdin); scanf(%d,&p1-term); while(p1-term!=1 & p1-term!=2) getchar(); printf(输入错误!请重新输入:);scanf(%d,&p1-term); printf(请输入要录入学生成绩信息的班级:); fflush(stdin); scanf(%d,&p1-classes); while(p1-classes!=1 & p1-。

15、classes!=2)getchar();printf(输入错误!请重新输入:); scanf(%d,&p1-classes);printf(请输入该班的学生信息!n); printf(请输入学生学号:); fflush(stdin); scanf(%d,&p1-number);printf(请输入学生姓名:); fflush(stdin); scanf(%s,p1-name);printf(请输入学生姓别:); fflush(stdin); scanf(%s,p1-sex);fflush(stdin);printf(请输入语文成绩(0-100):); scanf(%f,&p1-chinese。

16、);fflush(stdin);printf(请输入数学成绩(0-100):); scanf(%f,&p1-math);fflush(stdin);printf(请输入英语成绩(0-100):); scanf(%f,&p1-english);fflush(stdin);printf(请输入计算机成绩(0-100):);scanf(%f,&p1-computer); p2-next=p1;p2=p1;printf(是否还要输入信息(y/n):); fflush(stdin); scanf(%c,&ch);p2-next = NULL; /链表结尾return(head);/查找学生成绩信息voi。

17、d searchMark(MARK *head)int choose1;while(1)printf(*n);printf( 查询学生成绩信息n);printf( 1查询某个学生成绩n);printf( 2查询不及格学生成绩n);printf( 3返回主菜单n);printf(*n);fflush(stdin);printf(请选择:);scanf(%d,&choose1);if(1=choose1)searchMarkStusentone(head);else if(2=choose1)searchMarkFail(head);elseprintf(返回主菜单);break;/修改学生成绩信。

18、息(按学期或按学号修改)MARK *changeMark(MARK *head)int choose2;MARK *p=head-next;char name10;char ch;int number;printf(*n);printf( 你所需要修改的n);printf( 1修改学号n);printf( 2修改姓名n);printf( 3修改班级n);printf( 4修改性别n);printf( 5修改成绩n);printf(*n);fflush(stdin);printf(请选择:);scanf(%d,&choose2);while(1)while(p!=NULL)if(1=choose。

19、2)printf(你要修改的信息是:学号!n); /按姓名修改学号fflush(stdin); printf(请输入你要修改的学生姓名:);scanf(%s,name);if (strcmp(name,p-name)=0)fflush(stdin);printf(请输入该学生新的学号:); /输入新学号scanf(%d,&p-number);printf(修改学生的学号后:n);printf(%s学生的新学号是%dn,p-name,p-number);break;else if(2=choose2)printf(你要修改的信息是:姓名!n);fflush(stdin);printf(请输入你要。

20、修改的学生的学号:);scanf(%d,&number);if(number=p-number) /输入学号,判断条件 fflush(stdin);printf(请输入该学生的姓名:);scanf(%s,p-name); /输入要做修改的学生姓名printf(修改学生的姓名后:n);printf(%s是该学生的新姓名n,p-name);break; else if(3=choose2)printf(你要修改的信息是:班级!n); /按学号修改班级fflush(stdin);printf(请输入你要修改的学生的学号:);scanf(%d,&number);if(number=p-number)f。

21、flush(stdin);printf(请输入该学生的班级:); /输入要做修改的班级scanf(%d,&p-classes);printf(修改班级后n);printf(该学生的新班级为:%dn,p-classes);break; else if(4=choose2)printf(你要修改的信息是:性别!n); /按学号修改性别fflush(stdin);printf(请输入你要修改的学生的学号:);scanf(%d,&number);if(number=p-number)fflush(stdin);printf(请输入该学生的性别:); /输入要做修改的性别scanf(%s,p-sex);。

22、printf(修改该学生的性别后n);printf(该学生的新性别为:%sn,p-sex);break;else if(5=choose2)printf(你要修改的信息是:成绩!n); /按学号修改成绩fflush(stdin);printf(请输入你要修改的学生的学号:);scanf(%d,&number);if(number=p-number) /输入学号fflush(stdin);printf(请输入该学生新的语文成绩:n); scanf(%f,&p-chinese);fflush(stdin);printf(请输入该学生新的数学成绩:n);scanf(%f,&p-math); /输入新。

23、的四门成绩 fflush(stdin);printf(请输入该学生新的英语成绩:n);scanf(%f,&p-english);fflush(stdin);printf(请输入该学生新的计算机成绩:n);scanf(%f,&p-computer);printf(修改后的成绩n);printf(该学生新的语文成绩:%fn,p-chinese); printf(该学生新的数学成绩:%fn,p-math); printf(请该学生新的英语成绩:%fn,p-english); printf(该学生新的计算机成绩:%fn,p-computer); break;elsep=p-next;printf(是否。

24、还要继续修改信息(y/n):n); /判断,是否还要修改信息,跳出循环fflush(stdin);if(ch=getchar()=n)break; return(head);/统计学生成绩总分和平均分void conuntMark(MARK *head)MARK *p=head-next;int classes;char ch1,ch2;fflush(stdin);printf(请输入要统计成绩的班级(1或2):); scanf(%d,&classes);printf(正在统计该班级学生的总分,请稍侯!n);while(1) totalMark(p); printf(是否还要继续统计其他学生的。

25、成绩(y/n):);fflush(stdin);if(ch1=getchar()=n)break;printf(是否统计该班级学生平均分?(y/n):);fflush(stdin); if(ch2=getchar()!=n)printf(正在统计该班学生平均分进行统计,请稍侯!n);aveMark(p); /调用平均分函数printf(n);/按班级输出学生信息void printClassMark(MARK *head)MARK *p;p=head-next;printf(*n);printf(学期t学号t班别t姓名t性别t语文tt数学tt英语tt计算机ttn);printf(*n);whi。

26、le(p!=NULL) printf(%dt,p-term); printf(%dt,p-number); printf(%dt,p-classes); printf(%st,p-name);printf(%st,p-sex);printf(%ft,p-chinese); printf(%1ft,p-math);printf(%1ft,p-english);printf(%1ft,p-computer);p=p-next;printf(n);printf(*n);/保存学生成绩信息于文件void saveFileMark(MARK *head)char *fileName;FILE *stu;。

27、MARK *p=head-next;if(p=NULL)printf(没有任何信息,请先存入信息!n);printf(请按任意键返回主菜单!n);getchar();elsefileName=(char *)malloc(sizeof(char);fflush(stdin);printf(请输入你要保存的文件名!n);gets(fileName);fileName=strcat(fileName,.txt);stu=fopen(fileName,wb+);while(p!=NULL)fprintf(stu,%d %d,p-term ,p-classes );fprintf(stu,%s %d,。

28、p-name,p-number);fprintf(stu,%s,p-sex );fprintf(stu,%f %f %f %f,p-chinese ,p-math ,p-english ,p-computer );p=p-next ;fclose(stu);printf(已经保存文件在%s中!n,fileName);printf(请按任意键返回主菜单!n);getchar();/查找某个学生的成绩void searchMarkStusentone(MARK *head)char ch1,ch2;MARK *p=head-next; if(p=NULL)printf(没有任何信息,请先存入信息!。

29、n);printf(请按任意键返回主菜单!n);getchar();elsewhile(1) printf( 你要选择何种方式查询成绩!n);printf( n);printf( a、学号: n);printf( b、班级: n);printf( c、学期: n);printf( n);fflush(stdin);scanf(%c,&ch1);switch(ch1)case a:searchnumber(head);break; case b:searchclasses(head);break;case c:searchterm(head);break;printf(n);printf(是否还。

30、要继续查询学生的信息(y/n):);fflush(stdin);if(ch2=getchar()=n)break; /查询不及格学生void searchMarkFail(MARK *head)MARK *p=head-next ;char name10;int number,flag=0;int choose5;dofflush(stdin);printf(请输入! (1按姓名查询 2按学号查询 3 返回)n);scanf(%d,&choose5);switch(choose5)case 1 :fflush(stdin);printf(请输入要查找的名字n);gets(name);while。

31、(p!=NULL)if(!strcmp(name,p-name)printf(姓名 学号n);printf(%s %dn,p-name ,p-number );if(p-chinese name );if(p-math name );if(p-english name );if(p-computer name );flag+;printf(n);p=p-next;if(flag=0)printf(没有你要找的信息!n);break;case 2 :fflush(stdin);printf(请输入你想要查找的学号:n);scanf(%d,&number);while(p!=NULL)if(num。

32、ber=p-number)printf(姓名 学号n);printf(%s %dn,p-name ,p-number );if(p-chinese name );if(p-math name );if(p-english name );if(p-computer name );flag+;printf(n);p=p-next;if(flag=0)printf(没有你要找的信息!n);break;case 3:printf(请按任意键返回!n);getchar();break;default:printf(你输入的有误!请重新选择n);break;while(choose5!=1 & choos。

33、e5!=2 & choose5!=3);printf(按任意键返回!n);getchar();/按学号查询void searchnumber(MARK *head)MARK *p=head-next;int number,i=0;printf(请输入你要查询的学生学号:n);scanf(%d,&number);while(p!=NULL)if(number=p-number) printf(-n);printf(t学期t学号t班别t姓名t性别t语文t数学t英语t计算机tn);printf(-n);printf(%dt,p-term);printf(%dt,p-number);printf(%d。

34、t,p-classes); printf(%st,p-name);printf(%st,p-sex); printf(%1ft,p-chinese); printf(%1ft,p-math);printf(%1ft,p-english);printf(%1ft,p-computer);i=2;p=p-next; if(i=0)printf(没找到该学生的信息!); /按班级查询成绩void searchclasses(MARK *head)int classes,i=0;MARK *p=head-next;printf(请输入你要查询成绩的班级:);scanf(%d,&classes); pr。

35、intf(请输出%d班所有同学的成绩:n,classes);printf(-n);printf(t学期t学号t班别t姓名t性别t语文t数学t英语t计算机tn); printf(-n);while(p!=NULL) if(classes=p-classes) printf(%dt,p-term); printf(%dt,p-number); printf(%dt,p-classes); printf(%st,p-name); printf(%st,p-sex); printf(%1ft,p-chinese);printf(%1ft,p-math); printf(%1ft,p-english);。

36、printf(%1ft,p-computer);printf(n);printf(n);i=2;p=p-next;if(i=0)printf(没找到学生信息!n); /按学期查询void searchterm(MARK *head)int term,i=0;MARK *p=head-next; printf(请输入你要查询成绩的学期:);scanf(%d,&term);printf(请输出第%d学期所有班级的信息:n);printf(-n);printf(t学期t学号t班别t姓名t性别t语文t数学t英语t计算机tn);printf(-n);while(p!=NULL) if(term=p-te。

37、rm)printf(%dt,p-term);printf(%dt,p-number);printf(%dt,p-classes);printf(%st,p-name); printf(%st,p-sex); printf(%1ft,p-chinese);printf(%1ft,p-math);printf(%1ft,p-english); printf(%1ft,p-computer);printf(n);printf(n);i=2;p=p-next;if(i=0)printf(没找到学生信息!n); /学生总分void totalMark(MARK *head)float total=0;int i=0;MARK *p=head-next;while(p!=NULL)total=p-chinese+p-math+p-english+p-computer; printf(第%d个学生的总分为:%1f!n,i+1,total);printf(n);printf(已经统计了第%d个学生的总成绩!n,i+1); printf(n);print。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值