数据结构课程设计-学生成绩管理系统(C++)(50页).doc
《数据结构课程设计-学生成绩管理系统(C++)(50页).doc》由会员分享,可在线阅读,更多相关《数据结构课程设计-学生成绩管理系统(C++)(50页).doc(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-数据结构课程设计-学生成绩管理系统(C+)-第 46 页课程设计(论文)任务书 软 件 学 院 学院 专业 班一、课程设计(论文) 学 生 成 绩 管 理 系 统 的 设 计 与 实 现 二、课程设计(论文)工作自2014年12月22日起至2012年12月27日止 三、课程设计(论文) 地点: 创 新 大 楼 机 房 四、课程设计(论文)内容要求:1本课程设计的目的训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力,巩
2、固、深化学生的理论知识,提升编程水平。2课程设计的任务及要求1)基本要求:要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编写上机程序和上机调试等若干步骤完成题目,最终写出完整的报告;在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率;程序设计语言推荐使用C/C+,程序书写规范,源程序需必要的注释;每位同学需提交可独立运行的程序和规范的课程设计报告。2)课程设计论文编写要求理论设计部分以课程设计论文的形式提交,格式必须按照课程设计论文标准格式进行书写和装订;课程设计报告(论文)包括中文目录、设计任务、需求分析、概要设计、详细设计、编码实现、调试分析、总结
3、、谢辞、参考文献、附录等;设计部分应包含系统功能模块图,调试分析应包括运行截图等。3)课程设计评分标准: 学习态度:10分;系统设计:20分;编程调试:20分;回答问题:20分;论文撰写:30分。4)参考文献:严蔚敏,吴伟民. 数据结构(C语言版)M. 清华大学出版社. 2010.3 严蔚敏,吴伟民. 数据结构题集(C语言版)M. 清华大学出版社何钦铭,冯燕等. 数据结构课程设计M. 浙江大学出版社5)课程设计进度安排准备阶段(4学时):选择设计题目、了解目的要求、查阅相关资料;程序模块设计分析阶段(4学时):程序概要设计、详细设计;代码编写调试阶段(8学时):程序模块代码编写、调试、测试;撰
4、写论文阶段(4学时):总结设计任务和设计内容,撰写设计论文。学生签名: 年 月 日6)课程设计题目具体要求:能够实现对学生成绩的常用管理功能。采用一定的存储结构对学生成绩进行管理;可以进行成绩的录入、查询、修改、删除等操作;可以查询某门课程的平均分,学生的排名,不同分数段的学生人数及学生信息等; 可以查询某学生的各课程分数,总分及学生的班级排名等;可以按学号排序输出全部学生的成绩信息、总分及班级排名等。课程设计(论文)评审意见(1)学习态度(10分):优()、良()、中()、一般()、差(); (2)系统设计(20分):优( )、良()、中()、一般()、差(); (3)编程调试(20分):优
5、()、良()、中()、一般()、差();(4)回答问题(20分):优()、良()、中()、一般()、差();(5)论文撰写(30分):优()、良()、中()、一般()、差();(6)格式规范性及考勤是否降等级:是()、否()评阅人: 周娟 职称: 讲师 2014年12 月 28日目 录第1章 设计任务分析1第2章 功能实现详细设计2第3章 功能测试8第4章 调试与改进19第5章 小结20第6章 源代码21第1章 设计任务分析1.1. 需求与功能分析1.1.1. 需求分析学生成绩管理系统是一个教育单位不可缺少的部分它的内容对于学校的决策者和管理者来说都至关重要所以学生成绩管理系统应该能够为用户提
6、供充足的信息和快捷的查询手段。以前各个学校的学生成绩管理基本上都是靠手工进行,但随着各个学校的规模增大,有关学生成绩管理工作所涉及的数据量也越来越大,有的学校不得不靠增加人力、物力来进行学生成绩管理。这种管理方式存在着许多缺点,如:效率低、保密性差等,另外其所用时间长,产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。如今学校的学生越来越多,成绩管理的工作量越来越大,手工管理成绩的弊端也越来越明显。作为计算机应用的一部分,使用计算机对学生档案信息进行管理具有手工管理所无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等,能够极大地提高学生档案管理的
7、效率。所以我想借本次课程设计之际,设计一个简易的学生成绩管理系统。1.1.2. 功能分析1) 输入输出的形式和输入值的范围首先输入学生个数按回车键,然后按照提示选择输入学生信息并将学生信息保存在文本文档中,具体对学生信息进行插入删除查询操作时,将保存在文本文档中的学生信息提取出来保存在自己定义的数据结构中,然后再对该数据结构进行操作,所有操作完成后或者在相应的命令后再将学生信息保存到文本文档中。输入数据类型主要是char、int、float等数据类型,输入内容包括学号、姓名、基础会计成绩、大学英语成绩、数据结构成绩、总分、平均分等数据。输出的形式为学号、姓名、基础会计成绩、大学英语成绩、数据结
8、构成绩、总分、平均分等数据。2) 程序所达到的功能i. 数据输入功能,输入的数据能最终保存在文件中;ii. 数据删除功能,能最终从文件中删除;iii. 多种排序功能,根据自己设计的数据结构,设计排序算法;iv. 多种查询功能(如按学号查询、按姓名查询等)及输出功能;v. 学生信息的修改(比如修改学生姓名,修改学生某门课程的成绩等);vi. 其他功能(如各种统计,统计每个学生所有课程的平均分,统计某门课程的所有学生的平均分等等)第2章 功能实现详细设计1.2. 库函数先编入系统所需的库函数,使程序可运行。#include#include#include#include /主要是对cin,cout
9、之类的一些操纵运算,是I/O流控制头文件#include /文件和标准控制台的输入输出1.3. 菜单界面的设计1.3.1. 主菜单的设计在主界面中包括“输入学生信息并保存到文件 读取文件并输出学生信息 按学号查询 按姓名查询 按学号修改信息 插入学生信息 按学号删除信息 各科成绩排序 按总分降序排序 各科成绩统计 分数段查找 按学号排序 退出”等功能。每个函数体如下:void input(Stu *r); /输入 void output(Stu *r); /输出 void searchnum(Stu *r); /按学号查找void searchname(Stu *r); /按姓名查找void
10、modify(Stu *r); /修改学生信息Stu *insert(Stu *r); /插入信息void erase(Stu *r); /按学号删除信息void sortmenu(); /排序菜单void sortsum(Stu *r); /按总分降序排序void stat(Stu *r); /统计各科总分和平均分信息void intmenu(); /分数段查找菜单图2.2.1 主菜单界面 在此界面中用户可以选择要操作的选项,回车之后即进行相关操作或进入相关二级菜单void sortnum(Stu *r); /按学号排序1.3.2. 排序菜单的设计在排序菜单中包括“按基础会计成绩排序 按大学
11、英语成绩排序 按数据结构成绩排序 返回上级菜单”等功能。每个函数体如下:void sort_BA(Stu *r); /基础会计成绩排序void sort_UE(Stu *r); /大学英语成绩排序图2.2.2 排序菜单界面void sort_DS(Stu *r); /数据结构成绩排序1.3.3. 分数段查找菜单的设计在分数段查找菜单中包括“基础会计分数段查找 大学英语分数段查找数据结构分数段查找返回上级菜单”等功能。每个函数体如下:void int_BA(Stu *r); /基础会计分数段查找void int_UE(Stu *r); /大学英语分数段查找图2.2.3 分数段查找菜单界面void
12、 int_DS(Stu *r); /数据结构分数段查找1.4. 详细设计1.4.1. 系统流程图输入学生人数主菜单界面输入学生成绩输出学生成绩按学号查询成绩按姓名查询成绩修改学生信息各科成绩排序按学号删除信息插入学生信息按总分降序排序各科成绩统计分数段查找按学号排序退出退出1.1.1.1. 各功能模块的设计1) 主函数模块用函数int main()来实现,主要功能是显示菜单,让用户根据提示选择操作,首先定义一个指针数组(全局使用)Stu *p=(Stu *)new Stunum; 此处num指学生个数,并不是学号,这里应用了do-while和switch-case语句来进行循环选择,最后若用户
13、选择“13”则保存记录并退出循环。2) 学生记录输入模块用函数void input(Stu *r)来实现,在主菜单选择“1”进入输入模块之后用户需要输入所需学生个数的学生信息,包括学号、姓名、各科成绩等,输入完成之后会返回主菜单。本函数根据设计的条件判断循环来判断是否有重复学号输入。本函数还将算出学生的总分与平均分并按学号的默认顺序将其与输入的原始学生记录保存的文件中去。3) 学生记录输入模块用函数void output(Stu *r)来实现,在系统已经录入了学生资料的前提下,调用本函数可以输出学生资料。其中setw()控制域宽,括号里整型数据的数值代表域宽的字符数。4) 按学号查找学生记录模
14、块用函数void searchnum(Stu *r)来实现,首先提示用户输入要查找的学生学号,再用for循环语句和if判断语句进行循环判断来进行查找,if(rm.num=n)表示找到学生记录,然后显示学生记录并跳出循环,if(rm.num!=n)表示未找到学生记录并输出提示“该学号不存在!”。5) 按姓名查找学生记录模块用函数void searchname(Stu *r)来实现,首先提示用户输入要查找的学生姓名,再用for循环语句和if判断语句进行循环判断来进行查找,if(rm.name0=n0) 表示找到学生记录,然后显示学生记录并跳出循环,if(rm.name0!=n0)表示未找到学生记录
15、并输出提示“该姓名不存在!”。6) 按学号修改学生信息模块用函数void modify(Stu *r)来实现,首先提示用户输入要修改信息的学生序号,再通过if条件语句进行判断输入的学号是否存在,if(rm.num!=n)表示输入的学生学号不存在,输出提示“该学号不存在”,再利用begin标记和goto语句重新开始循环并提示用户重新输入要修改的学生学号。if(rm.num=n)若输入的学生学号存在,则先输出修改前的学生信息,此处有一个while循环语句和switch-case选择语句,用来选择修改学生的某一科成绩,并让用户选择是否继续进行修改。最后将修改过后的记录写入文件中,并输出提示“文件已修
16、改并写入”。7) 插入学生信息模块用函数Stu *insert(Stu *r)来实现,主要功能是添加学生资料。在此模块中定义了另一个指针数组:Stu *y=(Stu *)new Stu(num+1);用来存放新添加的学生记录。再利用for循环语句进行输入新学生记录,最后输出一个提示语句让用户判断是否继续输入,若用户输入“Y”或“y”则继续输入,否则将返回主菜单。8) 删除学生记录模块用函数void erase(Stu *r)来实现,首先对文件进行读取,之后的if判断语句根据用户输入的学号来显示删除前的信息记录,然后用for循环语句循环把后一位的信息提前一位,整体数量建议,来进行全局变量的修改,
17、之后再把修改过后的信息记录保存到文件中去。9) 各科成绩降序与学号(冒泡)排序模块用函数void sort_BA(Stu *r),void sort_UE(Stu *r),void sort_DS(Stu *r)三个函数来实现,主要功能是利用用户保存在文件的学生记录按单科成绩进行降序排序。首先对文件进行读取,然后进行冒泡排序。冒泡排序有两个优点,一是代码比较容易,二是具有稳定性。这里的稳定性是指原序列中相同两元素的相对顺序仍然保持到排序后的序列。冒泡排序时进过n-1趟子排序完成的,第i趟子排序从第1个数至第n+1个数,若第i个数比后一个数大则交换两数。排序之后,将排序之后的结果写入文件,再读取
18、文件的时候,输出的就是按单科成绩排序后的结果。10) 总分降序排序模块用函数void sortsum(Stu *r)来实现,主要功能是利用保存在文件的学生总分进行排序。首先对文件进行读取,然后进行选择排序。其基本思想是:n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:初始状态:无序区为R1.n,有序区为空。第1趟排序:在无序区R1.n中选出关键字最小的记录Rk,将它与无序区的第1个记录R1交换,使R1.1和R2.n分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。第i趟排序第i趟排序开始时,当前有序区和无序区分别为R1.i-1和R(i.n)。该趟排序从当前无序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 学生 成绩管理系统 50
限制150内