数据结构大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计说明书
设计题目:学生管理系统
专业:xxxxxx
班级:xxxxxxxxxxxxxxxxxx
设计人:xxxxxxxxxxxxxxx 山东科技大学2015年 1 月 3 日
学生管理系统
1.需求分析说明
学生信息管理者用此程序所要完成的主要工作为:输入学生的个人信息、查找学生信息、通过此系统可以方便的进行上述工作。
每位同学所包含的信息有:姓名、学号、语文成绩、数学成绩和英语成绩。
1.1 主函数模块
本模块的主要功能是调用各个模块,实现程序的主要功能。
1.2 排序功能
本模块的主要功能是根据用户的选择进行数组的创建,并对输入数据或者随机产生的数据进行排序
1.3 输入子模块
本模块的主要功能是通过键盘录入学生信息,并对用户输入数据进行处理,创建数组。
1.4 系统需求分析
开发环境:Windows XP以上版本操作系统
实用软件:编写实验报告:Microsoft Office Word
编译工具:visual C++ 6.0
二、概要设计
2.1 功能模块图
功能模块图
2.2各模块的算法设计说明
(1)存储学生信息功能,定义结构体student,用scanf和cin函数进行输入。流程图如图2.1.1 存储学生信息流程图:
存储学生信息流程图
相应代码设计:
typedef struct A
{
char a[20];//学生姓名
int num;//学生学号
int chscore,mascore,enscore;//学生的语文数学英语成绩
} Student; //存储学生个人信息的结构体
typedef struct
{
Student *elem;
int length;
} SqList;
(2)查找有补考的同学,并按成绩降序排列输出。流程图如图2.1.2查找有补考同学信息功能流程图:
查找有补考同学信息功能流程图
(3)将学生按照学号的升幂排序,为后续查询学生用二分查找提供条件。流程图如图2.1.3sort函数排序流程图:
sort函数排序流程图
(4)查找学生个人信息,根据用户输入的学号进行查找。查找方法为二分查找。
(5)主函数流程图如图3.1.4主函数流程图:
主函数流程图
2.2 各模块函数
bool cmp (const Student &a,const Student &b);//按照总成绩进行排序bool cmpp (const Student &a,const Student &b);//按照学号进行排序void CreatList(SqList &L,int n);//建立数组
void Sesrch_Bin(SqList &L,int n);//进行二分查找
三、详细设计
3.1 输入学生信息
程序运行后,创建一个student结构体,多组情况,每组输入两个整数分别表示学生的总数和查询数量。
3.2输出有补考学生的全部信息
调用sort()函数,首先将学生按成绩排序,运用for循环和
if(L.elem[i].chscore<60||L.elem[i].mascore<60||L.elem[i].enscore<6 0)语句输出,如果总成绩相同,学号小的在前面。
3.3 排序
调用sort()函数对Student按照学号升序进行排序,此函数中采用了冒泡排序的方法,此方法只有在前一个学生的学号大于后一个学生的学号时,才会需要一个辅助空间用作暂存记录,空间复杂度低,并且稳定。
3.4 查询学生信息
运用for循环函数,输入要查询学生的学号,对已经排序的student进行二分查找,low<=high时遍历,如果nu==s[mid].no 时找到输出学生的信息语句:
{printf("%s %d %d %d %d\n",L.elem[i].a,L.elem[i].num,L.elem[i].chs core,L.elem[i].mascore,L.elem[i].enscore);}
如果没有输出printf("NOT FOUND\n");
3.5退出程序
主函数中while(~)等待输入,用户只要在运行的页面中输入ctrl+z,即可退出系统。
四、运行结果及分析
本程序需用二分法,其余方法超时,在输入输出时注意用标准语言输入,注意格式。
在运行框内输入
Zhangyi 201501 90 90 90
Zhanger 201502 80 80 80
Zhangsan 201404 70 70 70
Zhangsi 201504 60 60 60
Zhangwu 201505 50 50 50
wcr 1124 100 100 100
loushangdashen 1234 60 60 60
201501
201503
201505
1
201506
输出结果为下图:
五.总结
通过这次课程设计,我学会了很多,首先,我对自身的知识掌握度加大了,以前只是单纯的课本掌握,现在通过编写,修改,测试程序,对课程设计中的一些知识更加了解了。其次,对于一些比较死板的知识,通过运用,对它提高了很大的兴趣,而且,自己设计的程序能够运行出来,自己非常有自豪感,满足感。
总的说来,努力还是很有成效的,锻炼了整体的能力,并且通过一次次的调试来读懂程序,程序更加完善。数据结构在编程语言中是一门相当有技术含量的语言,学会并能够掌握它,对以后的生活帮助很大。
附:主要算法的源代码
#include
#include
#include