《数据结构大作业.doc》由会员分享,可在线阅读,更多相关《数据结构大作业.doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程设计说明书设计题目: 学生管理系统专 业: xxxxxx班级: xxxxxxxxxxxxxxxxxx设 计 人: xxxxxxxxxxxxxxx山 东 科 技 大 学2015年 1 月 3 日山 东 科 技 大 学课 程 设 计 任 务 书专业: xxx 班级:xxxxx 学号:xxxxxxx一、 课程设计题目:学生管理系统二、 设计原始资料:1、数据构造C语言版 人民邮电出版社2、C+面向对象程序设计 电子工业出版社3、程序设计根底-基于C语言 科学出版社三、 设计应解决以下各主要问题:1、 首先输入所有学生的信息。2、输出一个学生学号后,能查找到此学生的信息并输出结果采用查找方法实现3
2、、要求是用构造体,链或数组等实现上述要求4、先按总成绩高的优先输出,总成绩一样学号小的优先输出四、 设计说明书应附有以下图纸: 1、功能模块图 2、存储学生信息流程图 3、查询个人信息流程图 4、主函数流程图 五、命题发出日期:2021 年11月3日设计完成日期:2021年1月3日设计指导教师签章: 系主任签章: 课程设计成绩评定表分类成绩平时考勤20%平时实验30%综合实验30%课程设计说明书质量20%总分指导教师签章:年月日 学生管理系统 学生信息管理者用此程序所要完成的主要工作为:输入学生的个人信息、查找学生信息、通过此系统可以方便的进展上述工作。每位同学所包含的信息有:姓名、学号、语文
3、成绩、数学成绩与英语成绩。1.1 主函数模块 本模块的主要功能是调用各个模块,实现程序的主要功能。 1.2 排序功能 本模块的主要功能是根据用户的选择进展数组的创立,并对输入数据或者随机产生的数据进展排序1.3 输入子模块 本模块的主要功能是通过键盘录入学生信息,并对用户输入数据进展处理,创立数组。1.4 系统需求分析开发环境:Windows XP以上版本操作系统实用软件:编写实验报告:Microsoft Office Word二、概要设计2.1 功能模块图 开场 退出系统查询学生信息输出有补考的同学添加学生信息 功能模块图1存储学生信息功能,定义构造体student,用scanf与cin函数
4、进展输入。流程图如图 存储学生信息流程图: 程序开场 初始化存入构造体数组中 inYN 完毕 存储学生信息流程图 相应代码设计:typedef struct Achar a20;/学生姓名 int num;/学生学号int chscore,mascore,enscore;/学生的语文数学英语成绩 Student; /存储学生个人信息的构造体typedef structStudent *elem;int length; SqList;2 查找有补考的同学,并按成绩降序排列输出。流程图如图查找有补考同学信息功能流程图: 开场用sort函数排序,再进展判断输出信息L.elemi.chscore60|
5、L.elemi.mascore60|L.elemi.enscore60 Y 完毕没有补考的同学 N 查找有补考同学信息功能流程图 3 将学生按照学号的升幂排序,为后续查询学生用二分查找提供条件。流程图如图sort函数排序流程图: 开场调用sort函数 in N Ya.num b.num? N 完毕 Y 交换 sort函数排序流程图4 查找学生个人信息,根据用户输入的学号进展查找。查找方法为二分查找。5 主函数流程图如图主函数流程图: 开场 完毕二分查找 i p?输出有补考的同学Scanf与cin函数in?CreatList(L,m);构造一个学生系统N YNYNY 主函数流程图2.2 各模块函
6、数 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构造体,多组情况,每组输入两个整数分别表示学生的总数与查询数量。 调用sort函数,首先将学生按成绩排序,运用for循环与if(L.elemi.chscor
7、e60|L.elemi.mascore60|L.elemi.enscore60)语句输出,如果总成绩一样,学号小的在前面。3.3 排序调用sort()函数对Student按照学号升序进展排序,此函数中采用了冒泡排序的方法,此方法只有在前一个学生的学号大于后一个学生的学号时,才会需要一个辅助空间用作暂存记录,空间复杂度低,并且稳定。 3.4 查询学生信息运用for循环函数,输入要查询学生的学号,对已经排序的student进展二分查找,low=high时遍历,如果nu=smid.no 时找到输出学生的信息语句:printf(%s %d %d %d %dn,L.elemi.a,L.elemi.num
8、,L.elemi.chscore,L.elemi.mascore,L.elemi.enscore);如果没有输出printf(NOT FOUNDn); 主函数中while等待输入,用户只要在运行的页面中输入ctrl+z,即可退出系统。四、 运行结果及分析本程序需用二分法,其余方法超时,在输入输出时注意用标准语言输入,注意格式。在运行框内输入 Zhangyi 2021 01 90 90 90Zhanger 2021 02 80 80 80Zhangsan 202104 70 70 70Zhangsi 2021 04 60 60 60Zhangwu 2021 05 50 50 50wcr 1124
9、 100 100 100loushangdashen 1234 60 60 602021 012021 032021 0512021 06输出结果为以下图:五.总结 通过这次课程设计,我学会了很多,首先,我对自身的知识掌握度加大了,以前只是单纯的课本掌握,现在通过编写,修改,测试程序,对课程设计中的一些知识更加了解了。其次,对于一些比拟死板的知识,通过运用,对它提高了很大的兴趣,而且,自己设计的程序能够运行出来,自己非常有自豪感,满足感。 总的说来,努力还是很有成效的,锻炼了整体的能力,并且通过一次次的调试来读懂程序,程序更加完善。数据构造在编程语言中是一门相当有技术含量的语言,学会并能够掌握
10、它,对以后的生活帮助很大。附:主要算法的源代码#include#include#include#include#includeusing namespace std;typedef int Status;#define OK 1#define ERROR 0#define OVERFLOW -2#define MAXSIZE 2001typedef structchar a20;int num;int chscore,mascore,enscore; Student;typedef structStudent *elem;int length; SqList;bool cmp (const S
11、tudent &a,const Student &b)int sum1 = a.chscore + a.mascore + a.enscore;int sum2 = b.chscore + b.mascore + b.enscore;if(sum1 = sum2)return a.num sum2;bool cmpp (const Student &a,const Student &b)return a.num b.num;void CreatList(SqList &L,int n)L.elem=new StudentMAXSIZE;for(int i=0; iL.elemi.numL.el
12、emi.chscoreL.elemi.mascoreL.elemi.enscore;L.length=n;void Sesrch_Bin(SqList &L,int n)int low=0,high=L.length-1,mid;while(low=high)mid=(low+high)/2;if(num=L.elemmid.num) return mid;else if(numL.elemmid.num) high=mid-1;else low=mid+1;return 0;int main()int m,n,a;SqList L;scanf(%d%d,&m,&n);CreatList(L,
13、m);sort(L.elem,L.elem+n,cmp);for(int i=0; im; i+)if(L.elemi.chscore60|L.elemi.mascore60|L.elemi.enscore60)printf(%s %d %d %d %dn,L.elemi.a,L.elemi.num,L.elemi.chscore,L.elemi.mascore,L.elemi.enscore);sort(L.elem,L.elem+n,cmpp);for(int i=0; ia;b=Sesrch_Bin(L,a);if(b=0)printf(NOT FOUNDn);elseprintf(%s %d %d %d %dn,L.elemb-1.a,L.elemb-1.num,L.elemb-1.chscore,L.elemb-1.mascore,L.elemb-1.enscore);第 16 页
限制150内