数据结构课程设计学生成绩管理系统C++Word文档格式.docx
《数据结构课程设计学生成绩管理系统C++Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计学生成绩管理系统C++Word文档格式.docx(47页珍藏版)》请在冰豆网上搜索。
3)课程设计评分标准:
⑴学习态度:
10分;
⑵系统设计:
20分;
⑶编程调试:
⑷回答问题:
⑸论文撰写:
30分。
4)参考文献:
⑴蔚敏,伟民.数据结构(C语言版)[M].清华大学出版社.2010.3
⑵蔚敏,伟民.数据结构题集(C语言版)[M].清华大学出版社.1999.2
⑶钦铭,燕等.数据结构课程设计[M].大学出版社.2007.8
5)课程设计进度安排
⑴准备阶段(4学时):
选择设计题目、了解目的要求、查阅相关资料;
⑵程序模块设计分析阶段(4学时):
程序概要设计、详细设计;
⑶代码编写调试阶段(8学时):
程序模块代码编写、调试、测试;
⑷撰写论文阶段(4学时):
总结设计任务和设计容,撰写设计论文。
学生签名:
年月日
6)课程设计题目具体要求:
能够实现对学生成绩的常用管理功能。
⑴采用一定的存储结构对学生成绩进行管理;
⑵可以进行成绩的录入、查询、修改、删除等操作;
⑶可以查询某门课程的平均分,学生的排名,不同分数段的学生人数及学生信息等;
⑷可以查询某学生的各课程分数,总分及学生的班级排名等;
⑸可以按学号排序输出全部学生的成绩信息、总分及班级排名等。
课程设计(论文)评审意见
(1)学习态度(10分):
优( )、良( )、中( )、一般( )、差( );
(2)系统设计(20分):
优()、良( )、中( )、一般( )、差( );
(3)编程调试(20分):
(4)回答问题(20分):
(5)论文撰写(30分):
(6)格式规性及考勤是否降等级:
是( )、否( )
评阅人:
娟职称:
讲师
2014年12月28日
第1章设计任务分析
1.1.需求与功能分析
1.1.1.需求分析
学生成绩管理系统是一个教育单位不可缺少的部分它的容对于学校的决策者和管理者来说都至关重要所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。
以前各个学校的学生成绩管理基本上都是靠手工进行,但随着各个学校的规模增大,有关学生成绩管理工作所涉及的数据量也越来越大,有的学校不得不靠增加人力、物力来进行学生成绩管理。
这种管理式存在着多缺点,如:
效率低、性差等,另外其所用时间长,产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
如今学校的学生越来越多,成绩管理的工作量越来越大,手工管理成绩的弊端也越来越明显。
作为计算机应用的一部分,使用计算机对学生档案信息进行管理具有手工管理所无法比拟的优点,如检索迅速、查找便、可靠性高、存储量大、性好、寿命长、成本低等,能够极大地提高学生档案管理的效率。
所以我想借本次课程设计之际,设计一个简易的学生成绩管理系统。
1.1.2.功能分析
1)输入输出的形式和输入值的围
首先输入学生个数按回车键,然后按照提示选择输入学生信息并将学生信息保存在文本文档中,具体对学生信息进行插入删除查询操作时,将保存在文本文档中的学生信息提取出来保存在自己定义的数据结构中,然后再对该数据结构进行操作,所有操作完成后或者在相应的命令后再将学生信息保存到文本文档中。
输入数据类型主要是char、int、float等数据类型,输入容包括学号、姓名、基础会计成绩、大学英语成绩、数据结构成绩、总分、平均分等数据。
输出的形式为学号、姓名、基础会计成绩、大学英语成绩、数据结构成绩、总分、平均分等数据。
2)程序所达到的功能
i.数据输入功能,输入的数据能最终保存在文件中;
ii.数据删除功能,能最终从文件中删除;
iii.多种排序功能,根据自己设计的数据结构,设计排序算法;
iv.多种查询功能(如按学号查询、按姓名查询等)及输出功能;
v.学生信息的修改(比如修改学生姓名,修改学生某门课程的成绩等);
vi.其他功能(如各种统计,统计每个学生所有课程的平均分,统计某门课程的所有学生的平均分等等)
第2章功能实现详细设计
2.
2.1.库函数
先编入系统所需的库函数,使程序可运行。
#include<
stdio.h>
iostream>
stdlib.h>
iomanip>
//主要是对cin,cout之类的一些操纵运算,是I/O流控制头文件
conio.h>
//文件和标准控制台的输入输出
2.2.菜单界面的设计
2.2.1.主菜单的设计
在主界面中包括“<
1>
输入学生信息并保存到文件<
2>
读取文件并输出学生信息<
3>
按学号查询<
4>
按姓名查询<
5>
按学号修改信息<
6>
插入学生信息<
7>
按学号删除信息<
8>
各科成绩排序<
9>
按总分降序排序<
10>
各科成绩统计<
11>
分数段查找<
12>
按学号排序<
13>
退出”等功能。
每个函数体如下:
voidinput(Stu*r);
//输入
voidoutput(Stu*r);
//输出
voidsearchnum(Stu*r);
//按学号查找
voidsearchname(Stu*r);
//按姓名查找
voidmodify(Stu*r);
//修改学生信息
Stu*insert(Stu*r);
//插入信息
voiderase(Stu*r);
//按学号删除信息
voidsortmenu();
//排序菜单
voidsortsum(Stu*r);
//按总分降序排序
voidstat(Stu*r);
//统计各科总分和平均分信息
voidintmenu();
//分数段查找菜单
图2.2.1主菜单界面在此界面中用户可以选择要操作的选项,回车之后即进行相关操作或进入相关二级菜单
voidsortnum(Stu*r);
//按学号排序
2.2.2.排序菜单的设计
在排序菜单中包括“<
按基础会计成绩排序<
按大学英语成绩排序<
按数据结构成绩排序<
返回上级菜单”等功能。
voidsort_BA(Stu*r);
//基础会计成绩排序
voidsort_UE(Stu*r);
//大学英语成绩排序
voidsort_DS(Stu*r);
//数据结构成绩排序
2.2.3.分数段查找菜单的设计
在分数段查找菜单中包括“<
基础会计分数段查找<
大学英语分数段查找<
数据结构分数段查找<
voidint_BA(Stu*r);
//基础会计分数段查找
voidint_UE(Stu*r);
//大学英语分数段查找
voidint_DS(Stu*r);
//数据结构分数段查找
2.3.详细设计
2.3.1.系统流程图
2.3.2.
1.
1.1.
1.2.
1.3.
1)
2)
2.1.
2.2.
2.3.
2.3.1.
2.3.2.各功能模块的设计
1)主函数模块
用函数intmain()来实现,主要功能是显示菜单,让用户根据提示选择操作,首先定义一个指针数组(全局使用)Stu*p=(Stu*)newStu[num];
此处num指学生个数,并不是学号,这里应用了do-while和switch-case语句来进行循环选择,最后若用户选择“13”则保存记录并退出循环。
2)学生记录输入模块
用函数voidinput(Stu*r)来实现,在主菜单选择“1”进入输入模块之后用户需要输入所需学生个数的学生信息,包括学号、姓名、各科成绩等,输入完成之后会返回主菜单。
本函数根据设计的条件判断循环来判断是否有重复学号输入。
本函数还将算出学生的总分与平均分并按学号的默认顺序将其与输入的原始学生记录保存的文件中去。
3)学生记录输入模块
用函数voidoutput(Stu*r)来实现,在系统已经录入了学生资料的前提下,调用本函数可以输出学生资料。
其中setw()控制域宽,括号里整型数据的数值代表域宽的字符数。
4)按学号查找学生记录模块
用函数voidsearchnum(Stu*r)来实现,首先提示用户输入要查找的学生学号,再用for循环语句和if判断语句进行循环判断来进行查找,if(r[m].num==n)表示找到学生记录,然后显示学生记录并跳出循环,if(r[m].num!
=n)表示未找到学生记录并输出提示“该学号不存在!
”。
5)按姓名查找学生记录模块
用函数voidsearchname(Stu*r)来实现,首先提示用户输入要查找的学生姓名,再用for循环语句和if判断语句进行循环判断来进行查找,if(r[m].name[0]==n[0])表示找到学生记录,然后显示学生记录并跳出循环,if(r[m].name[0]!
=n[0])表示未找到学生记录并输出提示“该姓名不存在!
6)按学号修改学生信息模块
用函数voidmodify(Stu*r)来实现,首先提示用户输入要修改信息的学生序号,再通过if条件语句进行判断输入的学号是否存在,if(r[m].num!
=n)表示输入的学生学号不存在,输出提示“该学号不存在”,再利用begin标记和goto语句重新开始循环并提示用户重新输入要修改的学生学号。
if(r[m].num==n)若输入的学生学号存在,则先输出修改前的学生信息,此处有一个while循环语句和switch-case选择语句,用来选择修改学生的某一科成绩,并让用户选择是否继续进行修改。
最后将修改过后的记录写入文件中,并输出提示“文件已修改并写入”。
7)插入学生信息模块
用函数Stu*insert(Stu*r)来实现,主要功能是添加学生资料。
在此模块中定义了另一个指针数组:
Stu*y=(Stu*)newStu(num+1);
用来存放新添加的学生记录。
再利用for循环语句进行输入新学生记录,最后输出一个提示语句让用户判断是否继续输入