学生成绩信息管理系统.docx
《学生成绩信息管理系统.docx》由会员分享,可在线阅读,更多相关《学生成绩信息管理系统.docx(27页珍藏版)》请在冰豆网上搜索。
![学生成绩信息管理系统.docx](https://file1.bdocx.com/fileroot1/2022-10/12/a9255578-c018-4ca6-994b-d1ea7090d7de/a9255578-c018-4ca6-994b-d1ea7090d7de1.gif)
学生成绩信息管理系统
1问题描述
学生成绩管理系统
学生成绩管理系统
学生信息包括学期、学号、班级、姓名,和语文、数学、英语、计算机四门课成绩。
并按班级、学期查询学生成绩,并能录入、修改,求学生平均成绩和总成绩,输出不及格科目,按班级输出成绩单,按班级对学生成绩进行排序。
2系统分析
2.1问题定义
学生成绩管理系统设计
学生成绩信息包括:
学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)。
主要功能:
(1)能按学期、按班级完成对学生成绩的录入、修改
(2)能按班级统计学生的成绩,求学生的总分及平均分,设计并输出统计报表
(3)能查询学生成绩,不及格科目及学生名单
(4)能按班级输出学生的成绩单
(5)能按班级,按课程,对学生成绩进行排序。
要求:
使用二进制文件方式存储数据,系统以菜单方式工作
2.2开发工具VC++6.0
2.3数据结构
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);
存储学生成绩信息于文件的函数原型,通过此函数可以输出学生的学期、班级、姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息与文件中。
2.4算法描述
(1)创建主菜单
(2)实现学生成绩信息录入
(3)实现学生成绩信息查询
(4)实现学生成绩信息修改
(一)修改某个学生的成绩
(a)按学期查询学生的成绩
(b)按班级查询学生的成绩
(c)按学号查询学生的成绩
(二)查询不及格的科目和学生名单
(5)实现学生成绩统计
(a)按班级统计学生的总分。
(b)按班级统计学生的平均分。
(6)实现学生成绩信息输出
(7)保存学生的成绩信息于文件
(8)流程图如下:
2.5程序调试情况
(1)源程序如下:
#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;
}
}
//创建一个学生成绩信息系统
MARK*creat()
{
MARK*head=NULL,*p1=NULL,*p2=NULL;
charch;
fflush(stdin);
printf("请问是否输入信息?
(y或n)\n");
scanf("%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("请输入要录入学生成绩信