成绩排序问题_第1页
成绩排序问题_第2页
成绩排序问题_第3页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告实验课名称:数据结构实验实验名称:考试日程安排与成绩统计问题、问题描述现要安排考试的考表(即考试日程表),假设共有10个班的学生,要安 排10门必修课程的考试,必修课程是以班级来确定的,每个班各有3门必修课,因此各班的考试科目是不相同的;安排考表的原则是:相同 课程采用统一的试卷,因此同一门课程的考试必须在相同时间进行,同 一个班所修的科目必须安排在不同的时间进行考试,以避免考试时间的冲突。并要求全部考试的日程尽可能短。要求对考试结果做统计和排序。假设分别以编号0,123,4,5,6,7,8,9代表10 门要考试的课程,以B1,B2,B3,B4,B5,B6,B7,B8,B9,Bl 0

2、代表10个班,每个人的信息包括学号、姓名、班级、各门考试课程成绩、 三门课程总成绩,每个班的学生人数自行设定。要求设计一个简单的考 试成绩的查询统计系统实现以下功能:显示学生考试情况-按考试总分从高到底输出全体学生的信息。-按照从B1到B10的班级顺序,分班级按照考试总分从高到底的顺序 输出各班学生的信息。-输出指定班的学生考试成绩信息。统计学生考试成绩-按总成绩统计出90分以上、8089分、7079分、6069分、60分 以下各分数段的人数,并按总分从高到低分段输出。-根据指定的某们课程的成绩,统计出上述各分数段的人数,并按分 数从高到低分段输出。-统计并输出指定班级中总成绩或某一门课成绩的

3、各分数段人数和 每个人具体的信息。查找学生成绩-查找总分或某一门课程成绩的指定分数段的人数及学生的详细信 息。-查找指定班级中总分或某一门课程成绩属于某分数段的学生详细 信息。-查找指定学生(例如给定学号)的具体信息,包括:姓名、班级、 各科分数、总分数等。、数据结构设计根据实验要求,对学生成绩的存储的数据结构如下:typedef structchar nu mber15;学号char name100;姓名int fen 4;/ 成绩(分别为语文成绩、数学成绩、英语成绩、总分) intn2;/ 名次(n0为总分名次n1为单科名次)n ode;typedef structn ode stumax

4、size+1; /存放学生信息int num; /存放学生人数SqList;三、算法设计根据问题要求,首先创建学生信息,输入各科成绩,计算总分,之后利用快 速排序实现对学生单科及总分的排序,最后输出。设计流程图如图1.1所示。图1.1设计流程图(1)数据输入根据输入提示,对学生基本信息做相应的输入,其代码如下:cout«"请输入学生人数:"<<endl;cin>>a.num;for(i=1;i<=a.num;i+)输入每个学生的三门成绩coutvv"请输入第"vvivv"个学生的学号和姓名:"&

5、lt;<endl; cin> >a.stui. nu mber;cin> >a.stui. name;cout«"请输入第"<<i<<"个学生语文,数学,英语成绩:"<<endl; cin> >a.stui.fe n 0;cin> >a.stui.fe n1;cin> >a.stui.fe n 2;学生信息初始化完成后,在根据输入提示选择相应操作:while(1) cout<<"1.总分排序"<<en

6、dl; cout<<"2.语文排序"<<endl; cout<<"3.数学排序"<<endl; cout<<"4.英语排序"<<endl; cout<<"0.退 出 n"«endl; cout«"请选择:"<<e ndl; cin> >choice;switch(choice)case 1: case 2: case 3: case 4: case 0:return 0

7、;default:coutvv"输入错误,请重新输入(0-4) "vvendl;break;(2)创建学生信息并进行相应排序,本实验中采用快速排序,其代码如下: int Partitio n(SqList & L,i nt low,i nt high, int i)枢轴函数int pivotkey; /枢轴关键字pivotkey=L.stulow.fe ni;L.stu0=L.stulow;while(lowvhigh)while(low<high&&L.stuhigh.fe ni>=pivotkey)-high;L.stulow=L.s

8、tuhigh;while(low<high&&L.stulow.fe niv=pivotkey)+low;L.stuhigh=L.stulow;L.stulow=L.stu0;return low;void QSort(SqList & L,i nt low,i nt high,i nt i)快速排序函数int pivotloc;if(lowvhigh)/子序列长度大于1pivotloc=Partitio n( L,low,high,i);QSort(L,low,pivotloc-1,i); 递归快速排序 QSort(L,pivotloc+1,high,i); /

9、 递归快速排序(3)根据所选择的操作进行相应的输出,代码如下:case 1:QuickSort(x,3); place(x,0,3); 排序 display2(x);调用输出函数 break;case 2:QuickSort(x,0); place(x,1,0); 排序 display3(x); 调用输出函数 break;case 3:QuickSort(x,1); place(x,1,1); 排序 display3(x); 调用输出函数 break;case 4:QuickSort(x,2); place(x,1,2); 排序 display3(x); 调用输出函数 break;case 0

10、:return 0;四、界面设计程序包含输入提示功能和输出提示功能。五、运行测试与分析(1) 运行程序,显示提示,如图1.2所示。请输入学生人数:图1.2启动界面(2) 按要求输入学生数,学生信息和成绩,如图1.3所示谙输入第L个学生的学号和妊名= 91请输入第1个学生语文,数学,英语成奏,E 9请输入第更个学生的学号和妊名32”叫请输入第2个学生语文,数学.英语成裁:R7 低 90请输人第3个学生的学号和妊名=03苕输入第丁个学生语文,数学,英语成橫:90 仙 973 - 二二二二 菜分文芋语图1.3数据输入界面(3) 数据结果输出。根据实验要求输出实验结果。如图1.4所示幘起择:r学号娃名语文数学英语总分总分名次0311909897285102S*nS8796902732 一 mJ- -1 .% f01W4J7689762413青逸择:&qu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论