《数据结构课程设计学生成绩管理系统资料》由会员分享,可在线阅读,更多相关《数据结构课程设计学生成绩管理系统资料(30页珍藏版)》请在金锄头文库上搜索。
1、辽 宁 科 技 大 学课程设计报告 设计题目: 学生成绩管理 学院、系: 电子与信息工程学院 专业班级: 计算机 11-2 班 学生姓名: 赵月 指导教师: 龙艳彬 成 绩: 2013年 1 月 8 日目 录一、需求分析-3二、概要设计-3三、详细设计-53.1系统流程图-53.2界面设计-63.3各功能模块的设计-7四、测试与分析-9五、总结-15六、附录(源代码)-161. 需求分析11问题描述本系统实现了学生成绩管理的功能,具有学生成绩的输入、读取、查询、修改、插入、删除、排序,统计等功能。12基本要求 (1)输入的形式和输入值的范围; 首先输入学生个数,按回车键。按照提示选择,将学生信
2、息保存在文本文档中,具体对学生信息进行插入删除查询操作时,将保存在文本文档中的学生信息提取出来,保存在自己定义的数据结构中,然后再对该数据结构进行操作,所有操作完成,或者在相应的命令后,再将学生信息保存到文本文档中。输入数据类型主要是char、int、float等数据类型,输入内容包括:学期、学号、姓名、高等数学成绩,数据机构成绩,大学英语成绩总分,平均分等数据。 (2)输出的形式;学期、学号、姓名、高等数学成绩,数据结构成绩,大学英语成绩,总分,平均分等数据。 (3)程序所能达到的功能;1. 数据输入功能,输入的数据能最终保存在文件中;2.数据删除功能,能最终从文件中删除;3. 排序功能,根
3、据自己设计的数据结构,设计排序算法4.多种查询(如按学号查询、按姓名查询、按成绩查询等)及输出功能;6. 学生信息的修改(比如修改学生姓名,修改学生某门课程的成绩) 7. 其它功能(如各种统计,统计每个学生所有课程的平均分,统计某门课程所有学生的平均分等等)2、 概要设计1. 数据结构:数组(顺序存储结构)2. 程序模块:(1)先编入系统所需的库函数,使程序可运行#include #include #include /主要是对cin,cout之类的一些操纵运算,是I/O流控制头文件。 #include /文件和标准控制台的输入输出#include (2) 主界面的设计在主界面中包括“输入学生信
4、息并保存到文件 读取文件并输出学生信息 按学号及学期查询 按姓名及学期查询 按学号及学期修改信息 插入信息 按学号及学期删除信息 按数据结构降序(冒泡)排序 按总分降序(选择)排序 统计各科成绩的总分和平均分 11退出”等全部的功能。每个函数体如下:void input(Student *r); /输入void output(Student *r); /输出void searchnum(Student *r); /按 学号及学期 查找void searchname(Student *r); /按 姓名及学期 查找void change(Student *r); /按 学号及学期 修改信息Stu
5、dent *insert(Student *r); /插入信息void shanchu(Student *r); /按 学号及学期 删除信息void maopao(Student *r); /按数据结构降序(冒泡)排序void xuanze(Student *r); /按总分降序(选择)排序void tongji(Student *r); /统计各科总分和平均分信息(3) Main()函数的设计 在main()函数中主要运用do-while循环语句和switch()-case选择判断语句来调用相关功能模块。系统的运行是在一个循环里进行的,只有在主界面并选择“退出”时,才会跳出循环,并退出程序。
6、void main()coutnum; /全局变量Student *p=(Student *)new Studentnum;/定义指针数组,存放学生个数int m;docoutendl;coutendl;cout菜单栏-*nendl;coutt* 输入学生信息并保存到文件 读取文件并输出学生信息 *endl;coutt* 按学号及学期查询 按姓名及学期查询 *endl;coutt* 按学号及学期修改信息 插入信息 *endl;coutt* 按学号及学期删除信息 按数据结构降序(冒泡)排序 *endl;coutt* 按总分降序(选择)排序 统计各科成绩的总分和平均分*endl;coutt* 退出
7、 *endl;coutt*-*nendl;coutm;switch(m)case 1: input(p); /输入break;case 2:output(p);break;case 3: searchnum(p);break;case 4: searchname(p);break;case 5: change(p);break;case 6: p=insert(p);break;case 7: shanchu(p);break;case 8: maopao(p);break;case 9:xuanze(p);break;case 10: tongji(p);break;case 11: /退出
8、break;while(m!=11); 3、详细设计1、系统流程图输入学生个数主界面输入学生成绩输出学生成绩查询学生成绩修改学生成绩插入学生成绩删除学生信息按总分排序按单科排序统计分数退出退出2、界面设计在此界面用户可以选择要操作的选项,回车之后即可进入相关的页面进行操作(例如:选择1,即可进入输入学生信息页面)3、各功能模块的设计主函数模块: 用函数void main()来实现 主要是来显示主菜单,使用户选择操作。首先定义一个指针数组(全局使用)Student *p=(Student *)new Studentnum;在此处num是指学生个数,并不是学号,在这里应用了do-while和swi
9、tch-case语句来进行选择。最后若选择“11”则是保存记录并退出循环。输入学生记录模块:用函数void input(Student *r);来实现 主要功能用来对学生的成绩进行输入。首先会有个提示“输入学生的个数”,之后跳出主菜单,选择1,进入输入模块输入所需学生个数的学生信息,比如学期,学号,姓名,成绩等。输完之后会自动跳出主菜单。期间会有一些提示语,按照提示操作。根据if和for语句来判定是否有重复学号输入,在本操作中,允许有重复学生姓名出现。t=1表示找到了与之重复的学号,t=0表示未出现重复学号。在此期间会根据语句算出总分和平均分,并默认按学号排序保存到文件中去。之后返回主菜单。输
10、出学生记录模块: 用函数void output(Student *r);来实现 主要功能是用来输出学生的信息。在系统已经录入了学生资料的前提下,用该功能可以显示学生的信息资料。同时也会自动跳出主菜单进行后续操作。其中stew()指的是两字节之间的间隔,在括号中填入数字就会有相应的间隔。按学号及学期来查找学生记录模块: 用函数void searchnum(Student *r);来实现 主要功能时用来查找学生记录。首先会有提示输入学号及学期,再用for循环语句和if判断语句来进行查找,if(rm.num=n&rm.term=k)若找到则显示学生记录并跳出循环;if(rm.num!=n&rm.term!=k)若没有则提示“该学号不存在,或没有这个学期的成绩!”。按姓名及学期来查找学生记录模块: 用函数void searchname(Student *r)来实现 主要功能也是用来查找学生记录的。首先会有提示输入姓名及学期,再用for循环语句和if判断语句来进行查找,if(rm.name0 = n0) & (rm.term = k)若找到则显示学生记录并跳出循环;if(rm.name0!=n0&rm.term!=k)若没有则提示该姓名不存在,或没有这个学期的成绩!按学号及学期修改信息: 用函数void change(Student *r)来实现