21 项目实战报告书.docx
《21 项目实战报告书.docx》由会员分享,可在线阅读,更多相关《21 项目实战报告书.docx(31页珍藏版)》请在冰豆网上搜索。
21项目实战报告书
江苏财经职业技术学院
项目实战报告书
标题:
学生成绩管理系统
系别:
计算机技术与艺术设计系
专业:
计算机应用技术
学号:
1011401121
姓名:
王舒
指导教师:
胡永祥
2011年6月3日
摘要
本系统依据开发要求主要应用于教育系统,完成对日常的教育工作中学生成绩档案的数字化管理。
开发本系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。
目前,学校工作繁杂、资料重多,虽然各类管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的、统一的系统。
因此,开发一套适和大众的、兼容性好的系统是很有必要的。
本系统在开发过程中,注意使其符合操作的业务流程,并力求系统的全面性、通用性,使得本系统不只适用于一家教育机构。
在开发方法的选择上,选择了生命周期法与原型法相结合的方法,遵循系统调查研究、系统分析、系统设计和系统实施四个主要阶段进行设计,而在具体的设计上,采取了演化式原型法,随着用户的使用及对系统了解的不断加深,对某一部分或几部分进行重新分析、设计、实施。
本论文主要从系统分析、系统设计、系统实施与使用等几个方面进行介绍。
关键字:
学生成绩,管理系统,系统分析
学生成绩管理系统
引言
随着学校规模的不断扩大,学生数量急剧增加,有关学生的各科成绩信息量也成倍增长。
面对庞大的成绩信息,需要学生管理系统来提高学生管理工作的效率。
通过这样的系统可以做到成绩的规范管理、科学统计和快速查询、修改、增加、删除等,从而减少管理方面的工作量。
本系统主要用于学生成绩管理,总体任务是实现学生成绩信息的系统化、规范化和自动化。
其主要任务是用计算机对学生各科成绩进行管理,如修改、增加、删除,另外还考虑到学生名次的排序等,针对这些要求设计了学生成绩管理系统。
其功能主要有:
1)有关学生信息的输入,包括输入学生所在班级、所学课程和成绩等2)学生课程的修改3)学生名次的排序。
1、设计目标
●每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩
●输入功能:
可以一次完成若干条记录的输入
●显示功能:
完成全部学生记录的显示
●查找功能:
完成按学号查找学生记录并显示
●排序功能:
按学生总分进行排序
●插入功能:
按学号插入一条学生记录
●将学生记录保存在文件中
●提供一个菜单来调用各个功能,调用菜单的界面应尽可能清晰美观
2、设计概要
2.1学生成绩管理系统所实现的功能
2.1.1数据库的安全性。
进入数据库需要输入用户的密码,不同的用户可以有不同的权限。
2.1.2数据库的操作界面设计。
用户通过菜单进行选择。
如下图所示:
图2.1.2主菜单界面
2.2程序的输出格式
图2.2程序的输出格式
2.3程序基本功能模块图
图2.3基本功能模块图
输入
显示
删除
查找
插入
追加
保存
读入
计算
拷贝
排序
索引
分类合计
3、程序设计
3.1系统功能模块所对应的功能函数
◆函数原型:
menu_select()
函数功能:
主菜单。
用户通过菜单进行选择。
调用各功能函数。
◆函数原型:
student*creat()
函数功能:
该函数是用来创建单链表。
当在主函数中输入1时,即进入创建链表函数,即开始输入学生信息,按照提示信息输入学号、三门课程的成绩,每输入完一个数就按一下回车键,当输入学号为0时结束输入,返回主函数,显示主菜单界面。
◆函数原型:
student*del(student*head)
函数功能:
该函数的作用是删除指定学号的学生记录。
首先根据提示信息输入要删除结点的学号,输入后根据学号顺序查找结点,如果没有找到,则输出没有找到的信息;否则,显示找到的信息,然后删除。
调用结束返回主函数,显示主菜单。
◆函数原型:
voiddisplay(student*head)
函数功能:
该函数的作用是显示单链表。
本函数以二维表的形式输出,直观漂亮。
调整格式,对齐表格线。
◆函数原型:
voidsearch(student*head)
函数功能:
该函数的作用是查找指定学号的学生记录。
根据提示信息输入要查找结点的学号,输入后根据学号顺序查找,如果没有找到,则输出没有找到的信息;否则,显示找到的信息。
调用结束返回主函数,显示主菜单。
◆函数原型:
voidsave(student*head)
函数功能:
该函数的作用是将学生记录保存到指定文件中。
在访问链表的过程中将记录写入文件。
◆函数原型:
student*load()
函数功能:
该函数的作用是将学生记录从文件中取出放到链表中。
Load和creat函数算法相同,不同点在于creat是从键盘上接受数据,而Load函数是从文件中读数据。
◆函数原型:
student*computer(student*head)
函数功能:
该函数作用是计算每个学生成绩的总分和平均分。
◆函数原型:
voidcopynew(student*head)
函数功能:
该函数的作用是把学生记录从原来的文件中复制到新文件中。
◆函数原型:
voidsort(student*head)
函数功能:
排序。
是对链表上的结点按照总分的由大到小的顺序进行排序。
◆函数原型:
voidmodify(student*head)
函数功能:
修改数据。
根据提示信息输入要查找结点的学号,输入后根据学号顺序查找,如果没有找到,则输出没有找到的信息;否则,修改找到的信息。
调用结束返回主函数,显示主菜单。
◆函数原型:
student*append(student*head)
函数功能:
添加记录。
在链表最后添加一个结点记录,返回主函数。
◆函数原型:
voidindex()
函数功能:
建立索引。
设置索引是为了分类合计。
◆函数原型:
voidfail(student*head)
函数功能:
查找不及格学生的信息。
顺序查找各结点只要有一门学科分数低于60分就显示该学生的全部信息,返回索引函数。
◆函数原型:
voidfive(student*head)
函数功能:
查找全年级前五名的学生,并显示他们的全部信息。
返回索引函数。
◆函数原型:
voidaverage(student*head)
函数功能:
求各班的平均分。
通过学号字段来区分班级,在这个字段内的记录的总分相加,除以人数,算出各班的平均分并显示。
完毕后返回索引函数。
◆函数原型:
voidclassscore(student*head)
函数功能:
显示一个班的学生信息。
输入班级号,通过学号控制顺序查找并显示该班全部学生信息。
◆函数原型:
voidmain()
函数功能:
有机调用各个子函数。
使用switch()函数进行菜单的选择。
4、程序清单
#include
#include
#include
#include
#include
#include
typedefstructs1
{
longno;
charname[10];
floatscore[3];
floatsum;
floataverage;
intorder;
structs1*next;
}STUDENT;
intmenu_select()
{
char*menu[]={"**************MENU**************",
"1.Enterlist",
"2.Deletearecordfromlist",
"3.Printlist",
"4.Searchrecordonnumber",
"5.Savethefile",
"6.Loadthefile",
"7.Computerthescore",
"8.Copythefiletonewfile",
"9.Sortdata",
"10.modifydata",
"11.Appendrecordtofile",
"12.Indexonnumber",
"13.totalonnumber",
"14.Quit"
};
chars[3];
intc,i;
clrscr();
gotoxy(2,2);
printf("Pressanykeyentermenu......\n");
clrscr();
gotoxy(1,1);
textcolor
(1);
textbackground(0);
gotoxy(10,2);
putch(0xc9);
for(i=1;i<54;i++)
putch(0xcd);
putch(0xbb);
for(i=3;i<20;i++)
{
gotoxy(10,i);
putch(0xba);
gotoxy(64,i);
putch(0xba);
}
gotoxy(10,20);
putch(0xc8);
for(i=1;i<54;i++)
putch(0xcd);
putch(0xbc);
window(11,3,63,19);
clrscr();
for(i=0;i<15;i++)
{
gotoxy(10,i+1);
cprintf("%s",menu[i]);
}
textbackground(0);
window(1,1,80,50);
gotoxy(20,21);
do
{
printf("Enteryourchoice(0-14):
");
scanf("%s",s);
c=atoi(s);
}
while(c<0||c>14);
returnc;
}
intmenu_select2()
{
char*menu[]={"**************MENU**************",
"1.Thestudentwhofailintest",
"2.Thefirsttofifthingrade",
"3.Classaverageonsubject",
"4.Classtotalrecord",
"5.Quit"};
chars[3];
intc,i;
clrscr();
gotoxy(2,2);
printf("Pressanykeyentermenu\n");
clrscr();
gotoxy(1,1);
textcolor
(1);
textbackground(0);
gotoxy(10,2);
putch(0xc9);
for(i=1;i<54;i++)
putch(0xcd);
putch(0xbb);
for(i=3;i<12;i++)
{
gotoxy(10,i);
putch(0