学生成绩管理系统课程设计报告-C++实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C++课程设计报告课程设计题目:学生成绩管理系统学生姓名:吴深深学号:201420181013专业:软件工程班级:1421810指导教师:邓微2015年6月27日目录1功能需求分析........................................................................................................................32总体设计................................................................................................................................33数据结构的设计....................................................................................................................54算法设计................................................................................................................................84.1总体的算法设计........................................................................................................84.2较难部分的算法设计.................................................................................................94.2.1密码验证模块.................................................................................................94.2.2降序排序部分.................................................................................................94.2.3打开已有文件部分.......................................................................................115.程序代码..............................................................................................................................126.运行环境............................................................................................................................247.运行结果..............................................................................................................................248.课程设计总结......................................................................................................................28学生成绩管理系统课程设计报告1功能需求分析学生成绩管理是一个学校必不可少的部分,随着计算机和计算机知识的普及,学生成绩管理系统得到了更大的发展空间,通过对学生成绩管理系统的开发,可以提高校务人员的工作效率。本系统具有以下基本功能:1、功能菜单实现功能选择;2、输入功能:输入学生信息,并保存到文件中;3、计算每个学生的总分与平均分并排序4、能根据学号修改学生信息5、能根据学号删除学生信息6、查询功能:1)能够根据学号查询学生信息;2)能够根据姓名、班级查询学生信息3)统计学生成绩,按照班级和科目计算平均分。2总体设计根据以上功能需求,本系统定义了一下函数,来逐步实现。(1)voidinput_student();该函数实现从键盘中录入学生成绩,并且保存给学生类数组。(2)voidrank_down();该函数以总分对学生降序排序,该函数会从每个学生的成员函数中调用intget_sum()函数,在调用函数时,被调函数根据输入数据计算出总分并且返回给主调函数。排序以冒泡法实现,排序完成后,再依次给每个学生的数据成员rank(名次)赋值。(3)voidsave_student();在有数据后,该函数可以实现数据以十进制的方式保存,保存时,可以自己输入文件名以及保存地址。(4)voidrwrite_student();该函数实现对学生成绩等信息进行修改,修改前,以学号先查找到该学生,并且输出其详细信息,方便操作者进行修改。(5)voiddelete_student();该函数能够以学号为依据,实现对象的删除,并且删除后该位置会被写一个数据填充。(6)voidserch_menu();该函数被调用后系统会进入查看菜单,可选择以不同的方式查看学生的成绩信息。按照不同的选择,该函数会调用一下函数。①voidsurch_number();该函数以学号为依据实现精确查找。②voidsurch_CLASS();能够根据姓名、班级查询学生信息③voiddetial_class();该函数能够汇总您要查询的班级详细情况,功能包括人数,每个人都详细情况,班级平均分,和该班级的各个科目的平均分。④voidsubject_ave();该函数能够计算出所有科目的平均分。(7)voidopen_file();该函数可以打开已经保存的学生信息,并且显示到屏幕上,打开后可以进行上述的各种操作。除此之外,还写了voidmain_menu();主菜单,实现对上述各个功能的选择。录入学生信息以总分降序排序保存学生信息查看学生信息根据学号修改学生信息根据学号删除学生信息打开已有学生文件根据学号查询个人信息按照姓名和班级查询查询班级详细情况查询科目平均分学生成绩管理系统功能模块图学生成绩管理系统3数据结构的设计UML类图classstudentstudent-ave:int-chinese:int-CLASS:string-comprehensive:int-english:int-math:int-name:string-number:string-rank:int-sex:string-sum:int+get_ave():int+get_chinese():int+get_CLASS():string+get_comprehensive():int+get_english():int+get_math():int+get_name():string+get_number():string+get_sum():int+set_rank(int):void+set_Rn(int,int,int):void+~student()«friend»+operator(ostream&,student&):ostream&+operator(istream&,student&):istream&数据结构的代码设计如下:constintN=5000;//students[N]staticintcount=N;//控制学生的操作数,默认值为N,在main中会提示改变classstudent//定义学生类{private:stringname,sex,number,CLASS;intchinese,math,english,comprehensive,sum,ave,rank;public:stringget_name()//外部接口,查询信息时用到。{returnname;}stringget_number()//外部接口,查询信息时用到。{returnnumber;}intget_chinese()//外部接口,分班级处理时用到。{returnchinese;}intget_math()//外部接口,分班级处理时用到。{returnmath;}intget_english()//外部接口,分班级处理时用到。{returnenglish;}intget_comprehensive()//外部接口,分班级处理时用到。{returncomprehensive;}intget_sum()//总分是排序的依据,在输出信息和排序时会产生{sum=chinese+math+english+comprehensive;returnsum;}intget_ave(){ave=(chinese+math+english+comprehensive)/4;returnave;}stringget_CLASS(){returnCLASS;}voidset_rank(intrank)//对多个学生进行排序时产生产生名次{this-rank=rank;}voidset_Rn(intnsum,intnave,intnrank)//我把总分、平均数和名次称为余项。{//这些数据在基本数据录入后会产生。sum=nsum;//提供这个外部接口用于从文件中读取这些数据ave=nave;rank=nrank;}friendistream&operator(istream&in,student&cs)//重载插入符,实现输入基本数据{incs.CLASScs.numbercs.namecs.sexcs.chinesecs.mathcs.englishcs.comprehensive;returnin;}friendostream&operator(ostream&out,student&cs)//重载提取符,实现格式输出详细信息{outcs.CLASS\tcs.number\tcs.name\tcs.sex\tcs.chinese\tcs.math\tcs.english\tcs.comprehensive\tcs.get_sum()\tcs.get_ave()\tcs.rank\tendl;returnout;}~student(){}};students[N];//N=5000,但是学生的操作数是由count控制注意:学生的最终操作数是通过count决定。4算法设计4.1总体的算法设计开始密码验证模块功能选择模块录入学生信息以总分降序排序保存学生信息查看学生信息根据学号修改学生信息根据学号删除学生信息打开已有学生文件根据学号查询个人信息按照姓名和班级查询查询班级详细情况查询科目平均分12364571234是否继续操作?是密码设置完成或密码正确结束否程序运行流程图4.2较难部分的算法设计4.2.1密码验证模块该模块主要使用输入输出流的模块编写,进入密码验证模块时先检验密码文件是否存在,若不存在,则进行密码设置,进行密码设置时要输入两次,确保能够记住密码,设置密码成功后,密码内容会保存在文件。若密码文件存在,则成功打开,输入密码并验证,只有三次输入机会。密码验证模块验证密码文件是否存在?存在不存在判断密码是正确二次输入判相同保存密码到文件进入主菜单重新输入输入密码设置密码不正确正确

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功