学生成绩信息管理系统.docx
- 文档编号:23119846
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:26
- 大小:186.71KB
学生成绩信息管理系统.docx
《学生成绩信息管理系统.docx》由会员分享,可在线阅读,更多相关《学生成绩信息管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
学生成绩信息管理系统
西安文理学院
信息工程学院
软件编程课程设计报告
设计题目:
学生成绩管理系统课程设计
学生学号:
07
专业班级:
物联网工程一班
************************************
学生成绩:
指导教师(职称):
课题工作时间:
2015-11-25至2015-12-9
信息工程学院软件编程课程设计任务书
学生姓名
张旺阳
学号
07
专业班级
物联网工程一班
设计题目
学生成绩管理系统设计
学生成绩信息包括:
学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)。
主要功能:
(1)能按学期、按班级完成对学生成绩的录入、修改
(2)能按班级统计学生的成绩,求学生的总分及平均分,设计并输出统计报表
(3)能查询学生成绩,不及格科目及学生名单
(4)能按班级输出学生的成绩单
(5)能按班级,按课程,对学生成绩进行排序。
指导教师:
日期:
2015年11月25日
成绩评定表
学生姓名:
张旺阳学号:
07专业/班级:
物联网工程一班
类别
合计
分值
各项分值
评分标准
实际得分
合计得分
备注
平时表现
10
10
按时参加设计指导,无违反纪律情况。
完成情况
30
20
按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。
10
能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。
报告质量
35
15
报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告字数符合相关要求,工整规范,整齐划一。
5
课题背景介绍清楚,综述分析充分。
5
设计方案合理、可行,论证严谨,逻辑性强,具有说服力。
5
符号统一;图表完备、符合规范要求。
5
能对整个设计过程进行全面的总结,得出有价值的结论或结果。
答辩情况
25
10
在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。
15
在规定时间内能准确、完整、流利地回答教师所提出的问题。
总评成绩:
分
指导教师:
(签字)
日期:
年月日
1.概述1
课题背景1
系统功能3
设计要求4
2.概要设计5
系统功能模块5
各模块流程图6
3.详细设计8
程序中使用的数据结构8
函数列表10
4.设计结果与分析12
5.总结与体会15
参考文献X
附录主要程序代码X
课题背景
随着计算机的普及,计算机在生活中得到越来越多的应用,其中在计算机上运行的各种软件在解决生活中的实际问题中起到重大的作用,而目前在编写应用程序时,c++以其高效及灵活性成为大多数程序设计者的首选,其次对于普通用户者,利用c++语言设计出适用的小型软件对解决生活中的繁琐问题有很大的作用。
在学校或班级,教师经常会对某次考试中的所有学生的成绩进行统计和管理,由于学生数目经常繁多,所以在处理统计学生总成绩和平均成绩时工作会相对繁琐,所以针对这种情况,同时我分析了成绩管理所需要的功能,在利用C++语言及VC++程序运行平台之下,设计一种小型的学生成绩管理系统。
系统功能
1.录入
2.修改
3.求总分
4.求平均分
5.查询
6.排序
设计要求
学生成绩信息包括:
学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)。
主要功能:
(1)能按学期、按班级完成对学生成绩的录入、修改
(2)能按班级统计学生的成绩,求学生的总分及平均分,设计并输出统计报表
(3)能查询学生成绩,不及格科目及学生名单
(4)能按班级输出学生的成绩单
(5)能按班级,按课程,对学生成绩进行排序。
要求:
使用二进制文件方式存储数据,系统以菜单方式工作
第二章概要设计
系统功能模块
(1)创建主菜单
(2)实现学生成绩信息录入
(3)实现学生成绩信息查询
(4)实现学生成绩信息修改
(一)修改某个学生的成绩
(a)按学期查询学生的成绩
(b)按班级查询学生的成绩
(c)按学号查询学生的成绩
(二)查询不及格的科目和学生名单
(5)实现学生成绩统计
(a)按班级统计学生的总分。
(b)按班级统计学生的平均分。
(6)实现学生成绩信息输出
(7)保存学生的成绩信息于文件
系统功能流程图
第三章详细设计
主要数据结构
typedefstructstudentMark
{
intterm;
intclasses;
charname[10];
intnumber;
charsex[7];
floatchinese;
floatmath;
floatenglish;
floatcomputer;
structstudentMark*next;
}MARK;
这是定义一个结构体,主要包括学期,班级,姓名,学号,性别,语文成绩,数学成绩,英语成绩,计算机成绩,以及包括一个结构体指针。
另外还用了typedef这个关键字。
因此,在程序的后面也可以用MARK来定义结构体变量或结构体指针变量。
intterm;定义学期,学期只能是第一学期或者第二学期。
例如int1;则表示第一学期。
intclasses;定义班级,班级只能是一班或者二班。
例如int2;则是表示定义为二班。
charname[10];定义姓名,在数组中存放字符串。
例如charname[]=“yang”;则该学生的姓名为yang
intnumber;定义学号,例如int1;则该学生学号为1号。
charsex[7];定义姓别,其性别最大长度为7.
例如charsex[]=“man”;说明该学生为男生。
同样可以这样定义女生。
floatchinese;定义语文成绩。
floatmath;定义数学成绩。
floatenglish;定义英语成绩。
floatcomputer;定义计算机成绩。
structstudentMark*next;定义一个结构体指针。
主函数
intmain();
主函数,程序的入口。
voidm(MARK*head);
主菜单的函数原型,在函数m(head)中主要有选择创建学生成绩信息,查询学生成绩信息,修改学生成绩信息,统计学生成绩信息,输出学生成绩信息,存储学生成绩信息于文件,以及退出体统等选项可供用户选择。
MARK*creat(void);
创建函数的函数原型,在函数creat()中用户可以输入初始的学生信息:
其中包括学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息。
查询函数
voidsearchMark(MARK*head);
查询菜单的函数原型,在函数searchMark(head)中用户可以自由选择是查询某一个学生的成绩还是查询不及格学生的成绩。
而这通过调用函数searchMarkStusentone(head)和函数searchMarkFail(head)完成操作。
voidsearchMarkStusentone(MARK*head);
查询某个学生成绩的函数原型,在函数searchMarkStusentone(head)中用户可以按学号或班级或者是按学期来查找某个学生的成绩。
通过函数searchnumber(head)和函数searchclasses(head)以及函数searchterm(head)完成操作。
voidsearchnumber(MARK*head)按学号查找学生的函数原型,;
voidsearchclasses(MARK*head);按班级查找学生的函数原型,
voidsearchterm(MARK*head);按学期查找学生的函数原型,
voidsearchMarkFail(MARK*head);
查询没有及格的学生的函数原型,通过这个函数可以查找学生不及格科目及学生名单。
修改函数
MARK*changeMark(MARK*head);
修改学生成绩信息的函数原型,可以修改学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息。
统计函数
voidconuntMark(MARK*head);
统计学生成绩的函数原型,在函数conuntMark(head)中用户可以统计学生的总成绩以及平均成绩,通过调用函数totalMark(head)和函数aveMark(head)完成操作。
输出函数
voidtotalMark(MARK*head);统计学生总成绩的函数原型,
voidaveMark(MARK*head);统计学生平均成绩的函数原型,
voidprintClassMark(MARK*head);
输出学生成绩信息的函数原型,通过此函数可以输出学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息到屏幕上。
voidsaveFileMark(MARK*head);
存储学生成绩信息于文件的函数原型,通过此函数可以输出学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息与文件中。
第四章设计结果及分析
程序设计结果
源程序如下:
#include<>
#include<>
#include<>
#include<>
#defineMAR(structstudentMark*)malloc(sizeof(structstudentMark))
typedefstructstudentMark
{
intterm;
intclasses;
charname[10];
intnumber;
charsex[7];
floatchinese;
floatmath;
floatenglish;
floatcomputer;
structstudentMark*next;
}MARK;
voidm(MARK*head);
MARK*creat(void);
voidsearchMark(MARK*head);
voidsearchMarkStusentone(MARK*head);
voidsearchnumber(MARK*head);
voidsearchclasses(MARK*head);
voidsearchterm(MARK*head);
voidsearchMarkFail(MARK*head);
MARK*changeMark(MARK*head);
voidconuntMark(MARK*head);
voidtotalMark(MARK*head);
voidaveMark(MARK*head);
voidprintClassMark(MARK*head);
voidsaveFileMark(MARK*head);
intmain(void)
{
MARK*head=NULL;
printf("**********************************************\n");
printf("##欢迎进入学生成绩信息管理系统##\n");
printf("**********************************************\n");
printf("\n");
head=creat();
m(head);
return(0);
}
voidm(MARK*head)
{
intchoose;
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();
elseif(2==choose)
searchMark(head);
elseif(3==choose)
head=changeMark(head);
elseif(4==choose)
conuntMark(head);
elseif(5==choose)
printClassMark(head);
elseif(6==choose)
saveFileMark(head);
else
printf("退出系统");
break;
}
}
xt");
stu=fopen(fileName,"wb+");
while(p!
=NULL)
{
fprintf(stu,"%d%d",p->term,p->classes);
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->computer);
p=p->next;
}
fclose(stu);
printf("已经保存文件在%s中!
\n",fileName);
printf("请按任意键返回主菜单!
\n");
getchar();
}
}
//查找某个学生的成绩
voidsearchMarkStusentone(MARK*head)
{
charch1,ch2;
MARK*p=head->next;
if(p==NULL)
{
printf("没有任何信息,请先存入信息!
\n");
printf("请按任意键返回主菜单!
\n");
getchar();
}
else
while
(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("是否还要继续查询学生的信息(y/n):
");
fflush(stdin);
if((ch2=getchar())=='n')
break;
}
}
//查询不及格学生
voidsearchMarkFail(MARK*head)
{
MARK*p=head->next;
charname[10];
intnumber,flag=0;
intchoose5;
do
{
fflush(stdin);
printf("请输入!
(1按姓名查询2按学号查询3返回)\n");
scanf("%d",&choose5);
switch(choose5)
{
case1:
fflush(stdin);
printf("请输入要查找的名字\n");
gets(name);
while(p!
=NULL)
{
if(!
strcmp(name,p->name))
{
printf("姓名学号\n");
printf("%s%d\n",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("%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;
case2:
fflush(stdin);
printf("请输入你想要查找的学号:
\n");
scanf("%d",&number);
while(p!
=NULL)
{
if(number==p->number)
{
printf("姓名学号\n");
printf("%s%d\n",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("%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;
case3:
printf("请按任意键返回!
\n");
getchar();
break;
default:
printf("你输入的有误!
!
请重新选择\n");
break;
}
}while(choose5!
=1&&choose5!
=2&&choose5!
=3);
printf("按任意键返回!
\n");
getchar();
}
//按学号查询
voidsearchnumber(MARK*head)
{
MARK*p=head->next;
intnumber,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计算机\t\n");
printf("-------------------------------------------------------------------------\n");
printf("%d\t",p->term);
printf("%d\t",p->number);
printf("%d\t",p->classes);printf("%s\t",p->name);
printf("%s\t",p->sex);
printf("%1f\t",p->chinese);
printf("%1f\t",p->math);
printf("%1f\t",p->english);
printf("%1f\t",p->computer);
i=2;
}
p=p->next;
}
if(i==0)
printf("没找到该学生的信息!
");
}
//按班级查询成绩
voidsearchclasses(MARK*head)
{
intclasses,i=0;
MARK*p=head->next;
printf("请输入你要查询成绩的班级:
");
scanf("%d",&classes);
printf("请输出%d班所有同学的成绩:
\n",classes);
printf("------------------------------------------------------------------------\n");
printf("\t学期\t学号\t班别\t姓名\t性别\t语文\t数学\t英语\t计算机\t\n");printf("-------------------------------------------------------------------------\n");
while(p!
=NULL)
{
if(classes==p->classes)
{
printf("%d\t",p->term);
printf("%d\t",p->nu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩 信息管理 系统