成绩排序问题_第1页
成绩排序问题_第2页
成绩排序问题_第3页
成绩排序问题_第4页
成绩排序问题_第5页
全文预览已结束

下载本文档

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

文档简介

实验报告实验课名称:数据结构实验实验名称:考试日程安排与成绩统计问题一、问题描述现要安排考试的考表(即考试日程表10个班的学生,要安1030,1,2,3,4,5,6,7,8,9代表10门要考试的课程,以B,B,B,B,B,B,B,B,B,B代1 2 3

4 5

7 8 9 10表10个班,每个人的信息包括学号、姓名、班级、各门考试课程成绩、三门课程总成绩,每个班的学生人数自行设定。要求设计一个简单的考试成绩的查询统计系统实现以下功能:显示学生考试情况-按考试总分从高到底输出全体学生的信息。-BB1 10

的班级顺序,分班级按照考试总分从高到底的顺序输出各班学生的信息。-输出指定班的学生考试成绩信息。统计学生考试成绩-9080~8970~7960~6960以下各分数段的人数,并按总分从高到低分段输出。-根据指定的某们课程的成绩,统计出上述各分数段的人数,并按分数从高到低分段输出。-统计并输出指定班级中总成绩或某一门课成绩的各分数段人数和每个人具体的信息。查找学生成绩-查找总分或某一门课程成绩的指定分数段的人数及学生的详细信息。-查找指定班级中总分或某一门课程成绩属于某分数段的学生详细信息。-查找指定学生(例如给定学号)的具体信息,包括:姓名、班级、各科分数、总分数等。二、数据结构设计根据实验要求,对学生成绩的存储的数据结构如下:typedefstruct{charnumber[15];//学号charname[100];//姓名intfen[4];//成绩(分别为语文成绩、数学成绩、英语成绩、总分)intn[2];//名次(n[0]为总分名次n[1]为单科名次)}node;typedefstruct{nodestu[maxsize+1];//存放学生信息intnum;//存放学生人数}SqList;三、算法设计根据问题要求,首先创建学生信息,输入各科成绩,计算总分,之后利用快速排序实现对学生单科及总分的排序,最后输出。设计流程图如图1.1所示。1.1设计流程图数据输入根据输入提示,对学生基本信息做相应的输入,其代码如下:cout<<"请输入学生人数:"<<endl;cin>>a.num;for(i=1;i<=a.num;i++)//输入每个学生的三门成绩{cout<<"请输入第"<<i<<"个学生的学号和姓名:"<<endl;cin>>a.stu[i].number;cin>>a.stu[i].name;cout<<"请输入第"<<i<<"个学生语文,数学,英语成绩:"<<endl;cin>>a.stu[i].fen[0];cin>>a.stu[i].fen[1];cin>>a.stu[i].fen[2];}}学生信息初始化完成后,在根据输入提示选择相应操作:while(1){cout<<"1.总分排序"<<endl;cout<<"2.语文排序"<<endl;cout<<"3.数学排序"<<endl;cout<<"4.英语排序"<<endl;cout<<"0.退 出\n"<<endl;cout<<"请选择:"<<endl;cin>>choice;switch(choice){case1:……case2:……case3:……case4:……case0:return0;default:cout<<"输入错误,请重新输入(0--4)"<<endl;break;}}创建学生信息并进行相应排序,本实验中采用快速排序,其代码如下:intPartition(SqList&L,intlow,inthigh,inti) //枢轴函数{intpivotkey;//枢轴关键字pivotkey=L.stu[low].fen[i];L.stu[0]=L.stu[low];while(low<high){while(low<high&&L.stu[high].fen[i]>=pivotkey)--high;L.stu[low]=L.stu[high];while(low<high&&L.stu[low].fen[i]<=pivotkey)++low;L.stu[high]=L.stu[low];}L.stu[low]=L.stu[0];returnlow;}voidQSort(SqList&L,intlow,inthigh,inti) //快速排序函数{intpivotloc;if(low<high)//子序列长度大于1{pivotloc=Partition(L,low,high,i);QSort(L,low,pivotloc-1,i); //QSort(L,pivotloc+1,high,i);//递归快速排序}}根据所选择的操作进行相应的输出,代码如下:case1:QuickSort(x,3);place(x,0,3);//排序display2(x);//调用输出函数break;case2:QuickSort(x,0);place(x,1,0);//排序display3(x);//调用输出函数break;case3:QuickSort(x,1); place(x,1,1);//display3(x);//调用输出函数break;case4:QuickSort(x,2);place(x,1,2);//排序display3(x);//调用输出函数break;case0:return0;四、界面设计程序包含输入提示功能和输出提示功能。五、运行测试与分析1.2所示。图1.2

温馨提示

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

评论

0/150

提交评论