学生成绩管理.docx

上传人:b****5 文档编号:2913965 上传时间:2022-11-16 格式:DOCX 页数:36 大小:753.54KB
下载 相关 举报
学生成绩管理.docx_第1页
第1页 / 共36页
学生成绩管理.docx_第2页
第2页 / 共36页
学生成绩管理.docx_第3页
第3页 / 共36页
学生成绩管理.docx_第4页
第4页 / 共36页
学生成绩管理.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

学生成绩管理.docx

《学生成绩管理.docx》由会员分享,可在线阅读,更多相关《学生成绩管理.docx(36页珍藏版)》请在冰豆网上搜索。

学生成绩管理.docx

学生成绩管理

 

摘要

本文从系统分析、系统设计、系统调试等各方面详细论述了设计学生成绩管理系统的开发全过程。

本系统是针对学校而开发的,它充分解决了学校查询繁琐、统计耗用时间长、统计工作量大、统计表不直观、数据更新慢、以及人工手工统计容易出错等问题,它具有界面美观、结构简单、交互性好、操作方便、容易掌握的特点,旨在学生成绩管理系统查询简单化、准确化、自动化,从而减少认为统计造成的误差、提高管理工作效率。

关键词:

C++学生成绩管理系统源代码

 

目录

摘要1

目录2

前言4

第1章系统分析5

1.1需求分析:

5

1.1.1学生信息录入功能5

1.1.2文件保存功能5

1.1.3文件打开功能5

1.1.4查询功能5

1.1.5报表输出功能5

第2章系统总体设计6

2.1概要设计6

2.2模块基本介绍6

2.2.1用户输入模块6

2.2.2学生信息录入模块6

2.2.3文件保存功能模块6

2.2.4文件打开功能模块6

2.2.5查询功能模块6

2.2.6报表输出功能模块6

2.3模块图7

第3章详细设计8

3.1详细设计8

3.1.1用户输入模块设计8

3.1.2学生信息录入模块设计8

3.1.3文件保存功能模块8

3.1.4文件打开功能模块8

3.1.5查询功能模块8

3.1.6报表输出功能模块9

 

第4章系统测试10

4.1系统主体功能10

4.2遇到的问题10

第5章使用说明11

设计总结19

参考文献20

致谢21

附录22

前言

该程序的开发旨在实现对学生成绩信息进行录入,修改,删除,查询等操作。

使得教师,学生可以对信息进行访问,修改及时查询。

简化现有系统的流程使之更加便捷合理操作,尽可能的实现无纸话管理,以及解决手工完成耗时巨大,效率很低的问题。

该信息管理系统集管理科学信息科学,系统科学,现代通信技术,电子计算机技术为一体,对成绩管理者的劳动强度,提高工作质量和效率;方便管理人员对信息的查询、提高信息资源的利用效率和管理水平都具有重要的意义。

第1章系统分析

1.1需求分析:

用数组或链表数据结构完成一个学生成绩管理系统,此系统的具体功能要求如下:

1.1.1学生信息录入功能

1)用户从键盘输入每个学生的信息:

学号、姓名、性别、数学、英语、政治、程序设计基础、物理五门课成绩。

2)可插入一个或多个学生信息到当前编辑的班级数据中。

3)可删除一个或多个学生信息。

1.1.2文件保存功能

1)学生信息每一班存为一个数据文件,数据文件可在程序中打开、编辑和重新保存。

2)用户输入学生信息可随时保存数据文件。

1.1.3文件打开功能

1)程序只能对当前打开的数据文件进行编辑。

1.1.4查询功能

1)浏览所有学生信息;

2)按学号查询学生信息;

3)按姓名查询学生信息;

4)查询一个班总成绩和平均成绩;

5)查询一个班某一门课总成绩和平均成绩;

6)查询某一门课分数段(<60,60-69,70-79,80-89,>90)学生数。

1.1.5报表输出功能

1)按学号输出一个班学生信息:

学号、姓名、性别、数学、英语、政治、程序设计基础、物理成绩和总成绩,到屏幕和文件。

2)按总成绩输出从高到低输出学号、姓名信息。

注:

以上功能以菜单形式供用户使用,并有一定的容错功能。

第2章系统总体设计

2.1概要设计

整个学生成绩管理系统采用链表作为基本数据结构,创建一个类student用于保存学生的数据且是链表中的一个节点。

类list作为保存整个链表之用。

主函数通过switch语句来根据用户的需要连接各个模块,以实现用户的需要。

2.2模块基本介绍

2.2.1用户输入模块

在此模块中,用户将根据菜单提示结合自己的需求输入一个0~11的值,来实现一定的功能。

2.2.2学生信息录入模块

此模块可以让用户从键盘输入每个学生的信息:

学号、姓名、性别、数学、英语、政治、程序设计基础、物理五门课成绩。

用户可插入一个或多个学生信息到当前编辑的班级数据中。

用户可删除一个或多个学生信息。

2.2.3文件保存功能模块

用户在确定以录入的成绩无误之后,可以将学生信息以每一班为单位存为一个数据文件。

用户输入的学生信息可随时保存数据文件。

2.2.4文件打开功能模块

用户可以用此模块将数据文件在程序中打开、编辑,程序只能对当前打开的数据文件进行编辑。

2.2.5查询功能模块

在此模块里,用户可实现以下操作:

1.浏览所有学生信息;2.按学号查询学生信息;3.按姓名查询学生信息;4.查询一个班每个人的总成绩和平均成绩;5.查询一个班某一门课每个人的总成绩和平均成绩;6)进行成绩的统计分析:

包括总人数,每门课的最高成绩、最低成绩、平均成绩、各个分数段的人数(100-90、89-80、79-70、69-60、59-50、50以下)、及格人数。

2.2.6报表输出功能模块

在此模块中,用户可以浏览所有学生的信息,或者可以按学号输出一个班学生信息:

学号、姓名、性别、数学、英语、政治、程序设计基础、物理成绩和总成绩,到屏幕和文件。

也可以按总成绩输出从高到低输出学号、姓名信息。

 

2.3模块图

第3章详细设计

3.1详细设计

主要功能模块的算法设计思路:

3.1.1用户输入模块设计

提示用户输入一个0~11的值,并存储在一个整型变量m中。

3.1.2学生信息录入模块设计

通过应用list中的instu()函数,来新建一个链表中的节点,即一个新的学生信息,来进行成绩的录入功能。

成绩修改功能,可以根据姓名或学号进行查询并修改相应的课程的成绩,使用了voidsearch(chars[10],int)和voidsearch1(chars[20],int)函数进行操作。

search函数根据姓名查找,search1函数根据学号进行查找。

因为学号和姓名,都是存储在字符数组中的,所以都是通过字符串的比较进行查找的。

然后根据整形参数进行对应的课程成绩的修改。

成绩删除功能,也是可以根据姓名或学号进行删除,查询的算法和成绩修改功能的查询方法是一样的,当找到要删除的节点时,因为节点都是在堆内存中保存的,所以可以直接delete掉,并将前一个节点的next指针指向被删掉的节点的next指针所指向的节点。

3.1.3文件保存功能模块

先提示用户输入保存文件的文件名及班级名称。

文件的前两行分别是班级名称和成绩单的开头,然后通过ofstream变量output来进行学生信息的输出,一项一项的输出,并设定格式,直到输出节点为NULL为止,之后关闭output。

3.1.4文件打开功能模块

先提示用户输入要打开的数据文件的名称,然后通过一个ifstream变量input来进行文件操作。

首先判断文件是否存在,如果不存在则输出"Filedoesnotexist",并跳出switch语句。

文件存在的话,则可以进行数据的存入了。

因为数据文件具有固定的格式,即开头两行是班级名称和表头,则可以先用两次input.getline(temp,80);语句来将input设置到第三行,此时可以将数据通过input读入链表中。

先用input.eof()判断文件中是否有数据,若有数据,则进行数据的读入,直到文件结束。

3.1.5查询功能模块

可以根据姓名或学号进行查找,搜索方法和前几个模块相同。

通过

 

outstu1(char*n)和outstu(char*n)来进行输出。

总成绩和平均成绩的查询通过函数voidoutsum(char*)和voidoutsum1(char*)来完成。

通过函数scanall()来浏览所有学生的信息。

通过函数think()来进行成绩的统计分析。

3.1.6报表输出功能模块

通过建立一个新的类classstucopy用于拷贝student的数据,并实现排序功能。

创建一个stucopystu[M]数组,将原链表的数据拷贝与数组中,然后用选择排序方法将数组排序,然后用output按照标准的格式输出或保存为数据文件。

 

第4章系统测试

4.1系统主体功能

退出系统。

成绩的录入:

包括学生学号、姓名、性别和各门课程成绩的录入。

成绩的查询:

可以根据学号或姓名查询某个学生的成绩。

成绩的修改:

可以根据学号或姓名来修改相应的学生的成绩。

数据的删除:

可以根据学号或姓名指定删除某个学生的数据。

成绩的统计分析:

包括总人数、最高成绩、最低成绩、平均成绩、各个分数段的人数(100-90、89-80、79-70、69-60、59-50、50以下)、及格率。

总成绩和平均成绩的查询:

可以根据学号或姓名查询。

浏览所有学生信息。

将所有学生信息保存成文件。

打开指定的数据文件。

按总成绩排序输出学生信息。

按学号顺序输出学生信息,并可保存成文件。

4.2遇到的问题

插入数据和删除数据等操作需要移动记录数据,容易出错。

经过我们一组的讨论和查阅资料,使用单链表结构管理学生成绩,方便随时插入和删除学生记录,

且不必移动数据,实现动态管理。

第5章使用说明

1、进入主界面:

2、选择操作项序号:

(例如输入1选择成绩录入)

 

3、依次根据系统提示输入学生信息,也可输入多个学生信息:

4、最后根据提示输入1返回系统界面

 

5、输入完成后可以选择2进行成绩查询:

6、可以根据学号查询:

 

7、也可以根据姓名查询:

8、选择3进行成绩修改,根据提示可以选择查询需要修改的学生成绩的方法,根据姓名或者学号,查询出后可根据系统提示修改学生成绩:

 

9、在录入和修改学生信息完成后,我们可以输入7来浏览所有学生信息:

10、或者选择4来删除学生信息,也是可以根据姓名和学号来查询删除:

 

11、选择8,系统可以将所有学生信息保存成文件,或者选择9将学生信息数据文件导入到系统中:

12、按总成绩排序输出学生信息:

 

13、按学号顺序输出学生信息,并可以保存成文件:

14、退出系统

 

15、打开输出文件:

设计总结

经过本次课程设计,发现做软件真的需要做很多工作,不仅仅是敲代码。

首先,必须要有需求分析。

就拿这次的题目来说,一个清晰的需求分析能让我省去很多工作,能让我把代码写的更清晰,让我的代码能有更好的重用性,以此简化程序。

而这次的题目其实也算不上需求分析,只能算是功能分析吧。

从界面到用户登陆判断,从增删改查基本功能到文件读写。

如果能够把代码细化,把基本功能都封装成函数,这样应该会提高代码的重用性。

其次,有了清晰的需求分析,还要有注释。

注释也很重要,特别是写过之后重用和测试代码时,都必须得看。

否则就不得不将已写好的封装函数从头到尾再看一遍,再理解,这样很浪费时间。

有了注释,就可以省去这些重新理解函数的时间,可以提高效率。

再次,写注释是为了使函数更简单的被理解。

而写注释之前,必须要测试这段代码的可行性。

必须要尽可能多的考虑会出现的情况,对不希望出现的情况予以相对的措施或者提示。

这样在代码重用的时候也可以放心的重用,而不必因为代码写的不够完善而再来修改,这样也会浪费很多时间。

最后,程序的测试。

一个完善的程序应该经得起测试。

自己的程序写得好不好,最终得看测试。

如果输入了非法的输入或者操作,程序是否能够正常运行?

还是会像这次一输入错误就会死循环?

这是程序的健壮性。

做好以上几个方面,程序基本就做好了。

但是任何一个程序都不可能没有BUG,金无足赤人无完人。

如果要追求完美,就不得不锲而不舍,定期得

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1