搜索
您的当前位置:首页正文

学生成绩管理系统课程设计报告,DOC

来源:爱够旅游网


仅供个人学习参考

目录

1、需求与功能分析 3 2、系统总体框架4 3、模块设计与分析4 4、类的设计与分析6 5、特色算法分析7 6、功能测试10 7、存在的不足与对策13 8、程序源代码 14 9、使用说明23 10、参考文献23 仅供个人学习参考

1、 需求与功能分析

(1)需求分析

学生成绩管理系统主要提供成绩查询,方便管理的网上的信息查阅平台,学生可以通过该系统查阅与自己相关信息,查看留言、提交留言。教师可以通过成绩管理系统查阅学生成绩信息,教师信息,查看教师留言、学生留言、提交留言、留言的管理等相关操作。系统管理员可以实现以上的所有功能,还有对学生的添加、删除、修改、教师的添加、删除、修改,数据库的备份、数据库的还原等相关操作。

根据开发要求,学生成绩管理系统主要应用于教育系统,完成对日常的教学、教务、教师以及学生的计算机化的管理。开发学生成绩管理系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。目前,学校工作繁杂、资料重多。目前,管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的、统一的系统。因此,开发一套适和大众的、兼容性好的系统是很有必要的。 (2)功能分析 ?“学生成绩管理系统”包括九个模块:输入学生资料,输出学生资料,学生姓名按顺序排列,添加学生资料,按姓名查找,删除该学生资料,查找并显示学生资料,按姓名查找,修改该学生资料,从文件中读入数据,储存学生资料并退出系统。这九个模块既相互联系又相互独立。

本系统根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,以方便对成绩的各项管理操作。本系统能对成绩进行输入和输出;能按姓名对学生进行排序,并显示学生资料、成绩等,不过得以系统输入学生资料、成绩为前提;能添加学生成绩资料;能根据学生的姓名来查询该学生的成绩资料,并修改或是删除该学生信息;能够从文件中读取学生信息,并且添加到系统中;能把对系统所进行的操作进行保存,以及时更新系统中的数据。 仅供个人学习参考

2、 系统总体框架

主 菜 单 输入学生资料模块 输出学生资料模块 按学生姓名进行排列模块 添加学生按姓名资料查找,模块 删除该学生资图1 查找并显示学生资料模块 按姓名查找,修改学生资料从文件中读入数据模块 储存学生资料并退出系统模块 3、模块设计与分析

(1)输入学生资料模块: 主要功能用来对学生的成绩进行收集和输入。在学生信息保存在系统中的前提下,成绩录入需要输入学生资料,比如班级,学号,姓名。在准确输入学生资料后,就可以对该学生的各科成绩进行录入。该学生各科成绩输入成功后,系统会提示是否继续进行操作,如果想继续输入学生成绩就输入y,不想再输入学生成绩的话就输入n,再输入n之后,系统返回到主菜单。

(2)输出学生资料模块:

主要功能用来对学生的成绩进行输出。在系统已经录入了学生资料成绩的前提下,使用该功能可以显示所有学生的信息,资料等等。具体包括学生的班级,学号,姓名和各科成绩。在查看学生的资料,成绩各方面的信息后,按任意键就可以返回到主菜单。 仅供个人学习参考

(3)按学生姓名进行排列模块

主要功能是用来对学生的资料按姓名进行排序。在系统保存学生资料,成绩的前提下,使用此功能可以对学生的资料按姓名进行排序,这样就方便查找姓氏相同或是相近的同学的资料。 (4)添加学生资料模块

主要功能是用来添加学生资料,成绩。如果系统有保存学生资料的情况下,想录入学生成绩

的话,就不用添加学生资料这模块。如果系统没有保存该学生信息的话,就要使用此模块,在成功添加学生资料后,就可以对该学生进行其他的操作。 (5)按姓名查找,删除该学生资料模块 主要功能是用来删除学生资料。在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生姓名,系统查找该学生资料后,就可以删除了。由于学生辍学,毕业等原因,及时对系统进行更新,删除一些没用的信息,可以使系统更加优化 (6)查找并显示学生资料模块 主要功能是用来查找学生资料。在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,这样系统就会显示该学生资料和各科成绩等信息 (7)按姓名查找,修改学生资料模块 主要功能是用来修改学生资料。在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,系统就会显示该学生资料和各科成绩等信息,这样就可以修改该学生的资料,成绩等信息。

(8)从文件中读入数据模块

主要功能是用来从文件中读入学生数据。由于一些资料可以用Word文档或Excel表格输入,故在此模块中增加了导入数据的功能。这样就方便很多,不用把学生资料一个一个添加,节省了很多时间精力。 仅供个人学习参考

(9)储存学生资料并退出系统模块

主要功能是用来储存学生资料。在对系统进行一系列操作,比如添加、删除、修改学生资料后,对系统的最新操作进行保存,及时更新系统,方便下一次的操作。 4、类的设计与分析

Student类类图

student num cla name byyl jsjzc sjk jsjyy typedefclass { public: charnum[10]; charcla[10]; charname[20]; charbyyl[10]; charjsjzc[20]; charsjk[10]; charjsjyy[20]; }Student; 名称 num cla name byyl jsjzc sjk jsjyy 5、特色算法分析 表1Student类说明表 属性 说明 数据成员 说明学生学号 数据成员 说明学生班级 数据成员 说明学生名字 数据成员 说明学生编译原理成绩 数据成员 说明学生计算机组成成绩 数据成员 说明学生数据库成绩 数据成员 说明学生计算机英语成绩 功能:定义菜单函数,通过输出函数显示系统功能。利用switch语句实现多分支选择结构。

仅供个人学习参考

算法思路:switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用

此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句。

流程图:

仅供个人学习参考

yes case=1 no 输入学生资料 yes case=2 no 输出学生资料 yes case=3 no 按学生姓名进行排列 yes case=4 yes case=5 no 添加学生资料 按姓名查找,删除该学生资料 yes case=6 no 查找并显示学生资 按姓名查找,修改学生资料 yes case=7 no yes case=8 no 从文件中读入数据 yes case=0 储存学生资料并退出系统

仅供个人学习参考

代码:

voidmain()//主函数调用。 {

intn=0; for(;;) {

switch(menu()) {

case1:

cout<cout<cout<cout<cout<仅供个人学习参考

system(\"pause\"); break; case8:

cout<cout<图八为按姓名查找,修改学生资料模块 图九为从文件中读入数据模块 图十为储存学生资料并退出系统模块

仅供个人学习参考

7、存在的不足与对策

本学生成绩管理系统由九个模块组成,每个模块相互联系又相互独立。这个学生成绩管理系统存在着很多不足之处,由于自己本身编程能力的问题,这个系统可以实现的功能非常有限。只能实现学生管理系统最基本的功能,可以进行简单的输入、输出学生资料,查询和修改学生信息,能直接从文件中读入数据,能对系统所作的修改、操作进行保存等。而且在每个模块也有不足的地方,比如在输入学生资料时,对每个信息项没有严格的规定,可以输入任何的字符。同时有些模块还不能实现本应该有的功能,这有待以后努力,争能够实现该有的功能。 在21世纪的科技时代,科学技术突飞猛进,计算机已经不仅是在科技上应用,而且在生活中也是同样得到了广泛在应用。如今,不管是小学、初中、高中、甚至是很多大学生的学生成绩管理基本上是靠人工进行管理,但随着时间的变化,学校规模的扩大,有关学生成绩管理工作和所涉及到的数据量越来越大越来越多,大多数学校不得不靠增加人力、物力、财力来进行学生成绩管理。但是人工管理成绩档案具有效率低、查找麻烦、可靠性不高、保密性低等因素。因此开发出一个不仅仅是适用于大中专院校以及其它高校通用的学生成绩管理系统是必要的。 开发一个学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高了办学效益和现代化水平。为广大教师和学生提高工作效率,实现学生成绩信息管理工作流程的系统化、规范化和自动化。现在我国的大中专院校的学生成绩档案管理水平普遍都不是很高,有的还停留在全用纸介质基础上,这种管理方式已不能适应时代的发展,社会的需求,因为它浪费了大量的人力物力,也存在着许多不足的因素。在今天信息时代这种传统的管理方法必然会被计算机为基础的信息管理系统所代替。一个高效的学生成绩管理系统可以存储历届的学生成绩档案,不需要大量的人力,只需要几名专门录入员即可操作系统,节省大量人力,可以迅速查到所需信

仅供个人学习参考

息、高效、安全,学生在能方便的查看自己的成绩。

8、程序源代码

#include #include #include #include #include #include #include usingnamespacestd; typedefclass {

public: charnum[10]; charcla[10]; charname[20]; charbyyl[10]; charjsjzc[20]; charsjk[10]; charjsjyy[20]; }Student; Studentstu[80]; intmenu() {

charc;

for(;c<'0'||c>'8';) {

system(\"cls\"); cout<<\"欢迎使用本学生成绩管理系统!!\"<cout<cout<cout<intInput(Studentstud[],intn)//输入数据。 {

inti=0;

charsign,x[10];

for(;sign!='n'&&sign!='N';) {

cout<>stud[n+i].cla; cout<>stud[n+i].num; cout<>stud[n+i].name; cout<>stud[n+i].byyl; cout<>stud[n+i].jsjzc; cout<>stud[n+i].sjk; cout<>stud[n+i].jsjyy; gets(x); cout<>&sign; i++; }

return(n+i); }

voidDisplay(Studentstud[],intn)//输出数据。 {

inti;

cout<cout<printf(\"\\%-9s%-9s%-9s%-9s%-9s%-9s%-9s\\n\e,stud[i-1].byyl,stud[i-1].jsjzc,stud[i-1].sjk,stud[i-1].jsjyy); if(i>1&&i%10==0) {

cout<cout<cout<cout<voidSort(Studentstud[],intn)//按名字排序。 {

inti,j; chart[20]; for(i=0;i0) {

strcpy(t,stud[j+1].cla); strcpy(stud[j+1].cla,stud[j].cla); strcpy(stud[j].cla,t); strcpy(t,stud[j+1].num); strcpy(stud[j+1].num,stud[j].num); strcpy(stud[j].num,t); strcpy(t,stud[j+1].name); strcpy(stud[j+1].name,stud[j].name); strcpy(stud[j].name,t); strcpy(t,stud[j+1].byyl); strcpy(stud[j+1].name,stud[j].byyl); strcpy(stud[j].byyl,t); strcpy(t,stud[j+1].jsjzc); strcpy(stud[j+1].name,stud[j].jsjzc); strcpy(stud[j].jsjzc,t); strcpy(t,stud[j+1].sjk); strcpy(stud[j+1].name,stud[j].sjk); strcpy(stud[j].sjk,t); strcpy(t,stud[j+1].jsjyy); strcpy(stud[j+1].name,stud[j].jsjyy); strcpy(stud[j].jsjyy,t); }

cout<intInsert(Studentstud[],intn)//插入一条学生信息。 {

charx[10];

cout<>stud[n].cla;

cout<cin>>stud[n].num;

cout<>stud[n].name;

cout<>stud[n].byyl;

cout<>stud[n].jsjzc;

cout<>stud[n].sjk;

cout<>stud[n].jsjyy; gets(x); n++;

cout<intDelete(Studentstud[],intn)//按名字查找信息,删除信息。 {

chars[20]; inti=0,j; cin>>s;

while(strcmp(stud[i].name,s)!=0&&iprintf(\"\\\没有发现该学生资料!\\n\");/*返回失败信息*/ return(n); }

for(j=i;jstrcpy(stud[j].num,stud[j+1].num); strcpy(stud[j].name,stud[j+1].name); strcpy(stud[j].cla,stud[j+1].cla); strcpy(stud[j].byyl,stud[j+1].byyl); strcpy(stud[j].jsjzc,stud[j+1].jsjzc); strcpy(stud[j].sjk,stud[j+1].sjk); strcpy(stud[j].jsjyy,stud[j+1].jsjyy); }

cout<voidQuery(Studentstud[],intn)//按名字查找信息 {

chars[20]; inti=0;

cout<>s;

仅供个人学习参考

while(strcmp(stud[i].name,s)!=0&&iprintf(\"\\\没有发现该学生资料!\\n\");/*输入失败信息*/ return; }

cout<cout<cout<cout<intXiugai(Studentstud[],intn)//修改信息。 {

n=Delete(stud,n); cout<intAddfromText(Studentstud[],intn)//从文件中读入数据。 {

inti=0,num; FILE*fp; charfilename[20]; cout<>filename; if((fp=fopen(filename,\"rb\"))==NULL) {

cout<fscanf(fp,\"%d\for(;ifscanf(fp,\"%s%s%s%s%s%s%s\stud[n+i].jsjzc,stud[n+i].sjk,stud[n+i].jsjyy); i++; }

n+=num; fclose(fp);

cout<system(\"pause\"); return(n); }

voidWritetoText(Studentstud[],intn)//将所有记录写入文件。 {

inti=0; FILE*fp;

charfilename[20];

cout<>filename;

if((fp=fopen(filename,\"w\"))==NULL) {

cout<fprintf(fp,\"%d\\n\for(;ifprintf(fp,\"%-6s%-5s%-5s%-5s%-5s%-5s%-5s\\n\[i].byyl,stud[i].jsjzc,stud[i].sjk,stud[i].jsjyy); i++; }

fclose(fp); cout<cout<>b; if(b==0) {

cout<voidmain()//主函数调用。 {

intn=0; for(;;) {

switch(menu()) {

仅供个人学习参考

case1:

cout<cout<cout<cout<cout<cout<cout<cout<cout<cout<cout<9、使用手册

(1)用户进入系统后,就会看到学生管理系统的主菜单页面。系统总共有九个模块,分别由0到8表示,在主菜单页面只能输入数字0到8,输入其他字符无效,如果用户输入无效字符,系统仍停留在主菜单页面。

(2)进入到主菜单页面后,用户可以根据自己的需求选择不同的选项,选择后系统就会进入子系统页面,然后用户按系统的提示操作就行了。 10、参考文献 《C++程序设计》钱能?清华大学出版社 《C++程序设计试验指导》钱能?清华大学出版社 《C程序设计》谭浩强?清华大学出版社

仅供个人学习参考

因篇幅问题不能全部显示,请点此查看更多更全内容

Top