学生成绩信息管理系统_第1页
学生成绩信息管理系统_第2页
学生成绩信息管理系统_第3页
学生成绩信息管理系统_第4页
学生成绩信息管理系统_第5页
免费预览已结束,剩余44页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西安文理学院信息工程学院软件编程课程设计报告设计题目:学生成绩管理系统课程设计学生学号:0204140137专业班级:物联网工程一班学生姓名:张旺阳学生成绩:指导教师(职称):课题工作时间:2015-11-25 至2015-12-9信息工程学院软件编程课程设计任务书学生姓名张旺阳学号0204140137专业班级物联网工程一班设计题目学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)。主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分,设计并输出统计报表(3)能查询学生成绩,/、及格科目

2、及学生名单(4)能按班级输出学生的成绩单(5)能按班级,按课程,对学生成绩进行排序。指导教师:日期:2015年11月25日成绩评定表学生姓名:张旺阳 学号: 0204140137 专业/班级: 物联网工程一班类别合计分值各项分值评分标准实际得分合计得分备注平时表现1010按时参加设计指导,无违反纪律情况。完成情况3020按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。10能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行止确的回答。报告质量3515报告文字通顺,内容翔实,论述充 分、完整,立论正确,结构严谨合 理;才给字数符合相关要求,工整 规范,整齐划一。5课

3、题背景介绍清楚,综述分析充分。5设计方案合理、可行,论证严谨,逻辑性强,具有说服力。5符号统一;图表完备、符合规范要求。5能对整个设计过程进行全面的总结,得出有价值的结论或结果。答辩情况2510在规定时间内能就所设计的内容 进行阐述,言简意明,重点突出, 论点止确,条理清晰。15在规定时间内能准确、完整、流利地回答教师所提出的问题。总评成绩:分指导教师:(签字)日 期:一年 月日教育资料1 .概述11.1 课题背景11.2 系统功能31.3 设计要求 4 2 .概要设计 5 2.1 系统功能模块5-2.2 各模块流程图 6-3 .详细设计83.1 程序中使用的数据结构 83.2 函数列表104

4、 .设计结果与分析 125 .总结与体会15参考文献X附录主要程序代码X教育资料教育资料1.1 课题背景随着计算机的普及,计算机在生活中得到越来越多的应用,其中在计算机上运行的各种软件在解决生活中的实际问题中起到重大的作用,而目前在编写应用程序时,C+以其高效及灵活性成为大多数程序设计者的首选,其次对于普通用 户者,利用C+语言设计出适用的小型软件对解决生活中的繁琐问题有很大的作 用。在学校或班级,教师经常会对某次考试中的所有学生的成绩进行统计和管理,由于学生数目经常繁多,所以在处理统计学生总成绩和平均成绩时工作会相对繁琐,所以针对这种情况,同时我分析了成绩管理所需要的功能,在利用C+胡言及V

5、C+6.0程序运行平台之下,设计一种小型的学生成绩管理系统。1.2 系统功能1. 录入2. 修改3. 求总分4. 求平均分5. 查询6. 排序1.3 设计要求学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩( 语文、数学、英语和计算机) 。主要功能:1) 能按学期、按班级完成对学生成绩的录入、修改(2) 能按班级统计学生的成绩,求学生的总分及平均分,设计并输出统计报表(3) 能查询学生成绩,不及格科目及学生名单(4) 能按班级输出学生的成绩单(5) 能按班级,按课程,对学生成绩进行排序。要求:使用二进制文件方式存储数据,系统以菜单方式工作第二章 概要设计5.1 系统功能模块( 1)创建主

6、菜单( 2)实现学生成绩信息录入( 3)实现学生成绩信息查询( 4)实现学生成绩信息修改(一)修改某个学生的成绩(a) 按学期查询学生的成绩(b)按班级查询学生的成绩(c) 按学号查询学生的成绩( 二 )查询不及格的科目和学生名单( 5)实现学生成绩统计(a) 按班级统计学生的总分。(b) 按班级统计学生的平均分。(6)实现学生成绩信息输出(7)保存学生的成绩信息于文件2.2系统功能流程图让迎使用学生成缭系统设计输入学生基本信息 (学期,学号、姓 名,班级,成绩)修我学生基本信息遢出系统统计学生基本信息存储学 生范本 害息输出学生基本信息查询学生基本信息姓修攵接名¥二迸制文件方式存信

7、息学e旬接号苣班音句技级技期诺询及学生查不格生总和均力求分平力第三章详细设计3.1 主要数据结构typedef struct studentMarkint term;int classes;char name10;int number;char sex7;float chinese;float math;float english;float computer;struct studentMark *next; MARK;这是定义一个结构体,主要包括学期,班级,姓名,学号,性别,语文成绩,数学成绩, 英语成绩,计算机成绩,以及包括一个结构体指针。另外还用了typedef这个关键字。因此,在程序

8、的后面也可以用MARKB定义结构体变量或结构体指针变量。int term;定义学期,学期只能是第一学期或者第二学期。例如 int 1 ;则表示第一学期。int classes;定义班级,班级只能是一班或者二班。例如 int 2 ;则是表示定义为二班。char name10;定义姓名,在数组中存放字符串。例如char name="yang” ;则该学生的姓名为yangint number;定义学号,例如int 1 ;则该学生学号为1 号。char sex7; 定义姓别,其性别最大长度为7.例如char sex=“mad';说明该学生为男生。同样可 以这样定义女生。float c

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

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

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

12、, 按班级查找学生的函数原型, 按学期查找学生的函数原型,通过这个函数可以查找学生不及格科目3.1.3 修改函数MARK *changeMark(MARK *head);修改学生成绩信息的函数原型,可以修改学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息。3.1.4 统计函数void conuntMark(MARK *head);统计学生成绩的函数原型,在函数 conuntMark (head)中用户可以统计 学生的总成绩以及平均成绩,通过调用函数 totalMark (head)和函数aveMark (head)完成操作。3.1.5 输出函数void total

13、Mark(MARK *head);统计学生总成绩的函数原型,void aveMark(MARK *head);统计学生平均成绩的函数原型,void printClassMark(MARK *head);输出学生成绩信息的函数原型,通过此函数可以输出学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息到屏幕上。void saveFileMark(MARK *head);存储学生成绩信息于文件的函数原型,通过此函数可以输出学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息与文件中。第四章设计结果及分析4.1 程序设计结果4.1.1 源程序如下:

14、#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define MAR (struct studentMark *)malloc(sizeof(structstudentMark)typedef struct studentMarkint term;int classes;char name10;int number;char sex7;float chinese;float math;float english;float computer;struct

15、 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);MARK *changeMark(MARK *head);void conuntMark(MARK

16、*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);vo

17、id 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(

18、"7退出系统n");教育资料printf("I*n");fflush(stdin);printf(" 请选择:");scanf("%d",&choose);if(1=choose)head=creat();else if(2=choose)searchMark(head);else if(3=choose)head=changeMark(head);else if(4=choose)conuntMark(head);else if(5=choose)printClassMark(head);else if(

19、6=choose)saveFileMark(head);elseprintf(" 退出系统");break;/ 创建一个学生成绩信息系统MARK *creat()MARK *head=NULL,*p1=NULL,*p2=NULL;char ch;fflush(stdin);printf(" 请问是否输入信息?(y 或 n)n");scanf("%c",&ch);head=p1=p2=MAR;while(p1!=NULL && ch='y')p1=MAR;printf(" 请输入要录入学

20、生信息的学期( 学期只能为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->cla

21、sses);while(p1->classes!=1 && p1->classes!=2)getchar();printf(" 输入错误! 请重新输入:");scanf("%d",&p1->classes);printf(" 请输入该班的学生信息!n");printf(" 请输入学生学号:");fflush(stdin);scanf("%d",&p1->number);printf(" 请输入学生姓名:");fflush

22、(stdin);scanf("%s",p1->name);printf(" 请输入学生姓别:");fflush(stdin);scanf("%s",p1->sex);fflush(stdin);printf(" 请输入语文成绩(0-100):");scanf("%f",&p1->chinese);fflush(stdin);printf(" 请输入数学成绩(0-100):");scanf("%f",&p1->math

23、);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->ne

24、xt = NULL; / 链表结尾return(head);/ 查找学生成绩信息void 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(

25、"%d",&choose1);if(1=choose1)searchMarkStusentone(head);else if(2=choose1)searchMarkFail(head);elseprintf(" 返回主菜单");break;/ 修改学生成绩信息(按学期或按学号修改)MARK *changeMark(MARK *head)int choose2;MARK *p=head->next;char name10;char ch;printf("int number;printf("你所需要修改的n")

26、printf("1修改学号n");printf("2修改姓名n");printf("3修改班级n");修改性别n");4printf("*n");printf("修改成绩n");printf("*n");fflush(stdin);printf(" 请选择:");scanf("%d",&choose2);while(1)while(p!=NULL)if(1=choose2)教育资料printf("你 要 修

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

28、 学 号是 %dn",p->name,p->number);break;else if(2=choose2)printf(" 你要修改的信息是: 姓名 !n");fflush(stdin);printf(" 请输入你要修改的学生的学号:");scanf("%d",&number);if(number=p->number)输入学号,判断条件fflush(stdin);printf(" 请输入该学生的姓名:");scanf("%s",p->name);输入要

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

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

31、,&number);if(number=p->number)fflush(stdin);printf(" 请 输 入 该 学 生 的 性 别 :");/ 输入要做修改的性别scanf("%s",p->sex);printf(" 修改该学生的性别后n");printf(" 该学生的新性别为:%sn",p->sex);break;else if(5=choose2)printf(" 你要修改的信息是: 成绩 !n");/ 按学号修改成绩fflush(stdin);print

32、f(" 请输入你要修改的学生的学号:");scanf("%d",&number);if(number=p->number)/ 输入学号fflush(stdin);printf(" 请输入该学生新的语文成绩:n");scanf("%f",&p->chinese);fflush(stdin);printf(" 请输入该学生新的数学成绩:n");scanf("%f",&p->math);/ 输入新的四门成绩fflush(stdin);pri

33、ntf(" 请输入该学生新的英语成绩:n");scanf("%f",&p->english);fflush(stdin);printf(" 请输入该学生新的计算机成绩:n");scanf("%f",&p->computer);printf(" 修改后的成绩n");printf("该学生新的语文成绩:%fn",p->chinese);printf("该学生新的数学成绩:%fn",p->math);printf(&quo

34、t;请该学生新的英语成绩:%fn",p->english);printf("该学生新的计算机成绩:%fn",p->computer);break;elsep=p->next;printf("是 否 还 要 继 续 修 改 信 息 (y/n):n");/ 判断,是否还要修改信息, 跳出循环fflush(stdin);if(ch=getchar()='n')break;return(head);/ 统计学生成绩总分和平均分void conuntMark(MARK *head)MARK *p=head->nex

35、t;int classes;char ch1,ch2;fflush(stdin);printf(" 请 输 入 要 统 计 成 绩 的 班 级 (1 或 2):");scanf("%d",&classes);printf(" 正在统计该班级学生的总分, 请稍侯 !n");while(1)totalMark(p);printf(" 是否还要继续统计其他学生的成绩(y/n):");fflush(stdin);if(ch1=getchar()='n')break;printf(" 是否统

36、计该班级学生平均分?(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");I*教育资料printf(" 学期 t 学号 t 班别 t 姓名 t

37、 性别 t 语文 tt 数学 tt 英语tt 计算机 ttn");printf("*n");while(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(&

38、quot;%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;MARK *p=head->next;if(p=NULL)printf(" 没有任何信息,请先存入信息!n")

39、;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 )

40、;fprintf(stu,"%s %d",p->name,p->number); 教育资料fprintf(stu,"%s",p->sex );fprintf(stu,"%f %f %f %f",p->chinese ,p->math ,p->english ,p->comp uter );p=p->next ;fclose(stu);printf("已经保存文件在s中! n"fileName);printf(" 请按任意键返回主菜单!n");get

41、char();/ 查找某个学生的成绩void searchMarkStusentone(MARK *head)char ch1,ch2;MARK *p=head->next;if(p=NULL)printf(" 没有任何信息,请先存入信息!n");printf(" 请按任意键返回主菜单!n");getchar();教育资料)elsewhile(1)(printf("你要选择何种方式查询成绩!n");printf("n");printf("a、学号:n");printf("b、班级

42、:n");printf("c、学期:n");printf("n");fflush(stdin);scanf("%c",&ch1);switch(chl)(case 'a':searchnumber(head);break;case 'b':searchclasses(head);break;case 'c':searchterm(head);break;)printf("n");printf("是否还要继续查询学生的信息(y/n):&quo

43、t;);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);prin

44、tf(" 请输入要查找的名字n");gets(name);while(p!=NULL)if(!strcmp(name,p->name)printf(" 姓名 学号 n");printf("%s %dn",p->name ,p->number );if(p->chinese <60)printf("%s 的语文成绩不及格n",p->name );if(p->math <60)printf("%s的数学成绩不及格n",p->name );if(p

45、->english <60)printf("%s的英语成绩不及格n",p->name );if(p->computer <60)printf("%s 的计算机成绩不及格n",p->name );flag+; printf("n");p=p->next;if(flag=0)printf(" 没有你要找的信息!n");break;case 2 :fflush(stdin);printf(" 请输入你想要查找的学号:n");scanf("%d&quo

46、t;,&number);while(p!=NULL)if(number=p->number)printf(" 姓名 学号 n");printf("%s %dn",p->name ,p->number );if(p->chinese <60)printf("%s 的语文成绩不及格n",p->name );if(p->math <60)printf("%s的数学成绩不及格n",p->name );if(p->english <60)printf(

47、"%s的英语成绩不及格n",p->name );if(p->computer <60)printf("%s 的计算机成绩不及格n",p->name );flag+;printf("n");p=p->next;if(flag=0)printf(" 没有你要找的信息!n");break;case 3printf(" 请按任意键返回!n");getchar();break;default:printf(" 你输入的有误!请重新选择n");break;w

48、hile(choose5!=1 && choose5!=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"

49、;);printf("t 学期 t 学号 t 班别 t 姓名 t 性别 t 语文 t数学 t 英语 t 计算机 tn");printf("n");printf("%dt",p->term);printf("%dt",p->number);printf("%dt",p->classes);printf("%st",p->name);printf("%st",p->sex);printf("%1ft",p-&g

50、t;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(" 请输入你要查询成绩的班级:");"

51、,classes);scanf("%d",&classes);printf(" 请输出明所有同学的成绩:'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);

52、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&qu

53、ot;);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("请输出第学期所有班级的信息:n");printf("n");printf("t 学期 t 学号 t 班别 t 姓名 t 性别 t 语文 t 数学 t 英语 t计算机 tn");printf("n");while(p!=NULL)if(term=p->term)printf("%dt",p->term);printf("%dt",p->number);printf("%dt",p->classes);printf("

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论