1、实验报告实验课名称:数据结构实验实验名称:考试日程安排与程序统计班级:20130613学号:16姓名:时间:2015-5-25一、问题描述10 个班的学生,要安排 10门必修课程的考试,必修课程是以班级来确定的,每个班各有 3 门必修课,因此各班的考试科目是不相同的;安排考表的原则是:相同课程采用统一的试卷,因此同一门课程的考试必须在相同时间进行,同一个班所修的科目必须安排在不同的时间进行考试,以避免考试时间的冲突。并要求全部考试的日程尽可能短。0,1,2,3,4,5,6,7,8,9 代表10 门要考试的课程,以B1,B2,B3,B4,B5,B6,B7,B8,B9,B10 代表 10 个班,每
2、个人的信息包括学号、姓名、班级、各门考试课程成绩、三门课程总成绩, 每个班的学生人数自行设定。要求设计一个简单的考试成绩的查询统计系统实现以下功能:-按考试总分从高到底输出全体学生的信息。-按照从 B1 到 B10 的班级顺序,分班级按照考试总分从高到底的顺序输出各班学生的信息。-输出指定班的学生考试成绩信息。-按总成绩统计出 90 分以上、8089 分、7079 分、6069 分、60 分以下各分数段的人数,并按总分从高到低分段输出。-根据指定的某们课程的成绩,统计出上述各分数段的人数,并按分数从高到低分段输出。-统计并输出指定班级中总成绩或某一门课成绩的各分数段人数和每个人具体的信息。查找
3、学生成绩-查找总分或某一门课程成绩的指定分数段的人数及学生的详细信息。-查找指定班级中总分或某一门课程成绩属于某分数段的学生详细信息。-查找指定学生(例如给定学号)的具体信息,包括:姓名、班级、各科分数、总分数等。二、数据结构设计typedef int KeyType; typedef char InfoType10;typedef struct/*记录类型*/KeyType key;/*关键字项*/InfoType data;/*其他数据项,类型为 InfoType*/ RecType三、算法设计#include using namespace std; #define MAXE 20 ty
4、pedef int KeyType;/*线性表中最多元素个数*/typedef char InfoType10;typedef struct/*记录类型*/KeyType key;/*关键字项*/InfoType data; RecType;/*其他数据项,类型为 InfoType*/void SelectSort(RecType R,int n) /*直接选择排序算法*/int i,j,k,l; RecType temp;for (i=0;in-1;i+)/*做第 i 趟排序*/k=i;for (j=i+1;jn;j+) Rk */*在当前无序区 Ri.n-1中选 key 最小的if (Rj
5、.keyRk.key)k=j;/*k 记下目前找到的最小关键字所在的位置*/if (k!=i)/*交换 Ri和 Rk */temp=Ri;Ri=Rk;Rk=temp;printf(i=%d,i); for (l=0;ln;l+)printf(%2d,Rl.key);/*输出每一趟的排序结果*/printf(n);int main()int i,k,n=10,m=5;KeyType a=6,8,7,9,0,1,3,2,4,5;RecType RMAXE; for (i=0;in;i+)Ri.key=ai;printf(n);printf(初始关键字); for (k=0;kn;k+)printf
6、(%2d,Rk.key); printf(n); SelectSort(R,n);printf(最后结果); for (k=0;kn;k+)printf(%2d,Rk.key); printf(nn);system(pause);/*输出初始关键字序列*/*输出初始关键字序列*/四、界面设计程序包含有多个功能,所以,采用菜单,以方便用户进行功能选择。菜单如下:1:直接插入排序算法验证2:快速排序算法验证。3: 直接选择排序算法验证。4: 退出五、运行测试与分析1)直接插入排序算法验证2) 快速排序算法验证。3) 直接选择排序算法验证。六、实验收获与思考这次实验我对选择拍循序,插入排序,快速排序有了更好的理解,以及时间复杂度的问题分析,通过这次实验,我对排序的内容有了更深入的了解。编程技术有了很大的提高。教师评分:教师签字: