研究生入学考试成绩处理系统_第1页
研究生入学考试成绩处理系统_第2页
研究生入学考试成绩处理系统_第3页
研究生入学考试成绩处理系统_第4页
研究生入学考试成绩处理系统_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、数据结构课程设计题目:研究生入学考试成绩处理系统学院:班级:学生姓名:学生学号:指导教师:2013年11月27日课程设计任务书姓名班级学号设计题目研究生入学考试成绩处理系统理论要点印象最深刻的是在一叉树的第一个兀素是下标从1开始,而顺序表的数组的下标是从0开始,这个细节总会导致内存出错,最后通过在堆排序过程中,先将数组后移,排序完后将数组在前移解决了这个问题,因此印象较为深刻,其他的调试错误,般都是在程序测试的过程中改正,问题不大。设计目标本系统能择优选择出研究生考试成绩好的,进而可以大大减少人们的工作量。研究方法步骤1、准备阶段:建立课题,准备相关的资料。2、实施阶段:编写相关的程序,查阅书

2、籍。3、总结阶段:将程序运行,填写实验才跆。预期结果输入学生成绩后,系统便会按要求对成绩进行排序,选取成绩局的,然后输出。计划与进步的安排1、第T:寻找设计题目,安排进度。2、第二天:查阅资料,进行设计前必要的资料准备。3、第三天、第四天、第五天:程序编写、上机调试4、第二周的第T至第三天上机调试程序、结果分析。5、第二周的第四天:撰写设计才艮告。目录摘要11 题目分析22 概要设计33 详细设计43.1 数据结构设计43.2 算法设计44 调试分析55 用户使用76 测试结果87 结论体会118 参考文献129 源程序13数据结构课程设计摘要众所周知,每年都会有一大批大学生选择考研究生,这就

3、给各大高校的招生工作带来巨大的压力,招生需要对研究生考试的三门成绩做排序,然后择优录取,这个工作异常繁琐,这就需要一个软件,能对他们的成绩做排序,而且也要保证这个程序在排完序之后能做进一步的处理,能选择出成绩好的输出,而且需要保证这个程序操作简单,正确率高,这能为我们的阅卷老师减轻很大的压力。关键词:成绩、择优、排序、输出-9 -1题目分析假设某大学计算机应用技术专业招收研究生n名,现在要根据报考者的考试成绩择优录取。考试课程有政治、英语、数学、专业综合四门。考试成绩分为两类:第一类为每门课程都达到最低录取线;第二类为有一门或多门课程未达到最低录取线。录取方法是在每门课程达到最低录取线的考生中

4、按总分从高到低录取。试设计一个成绩处理程序实现以上功能。根据录取方法,打印输出n份录取通知书,列出录取者四门课程的成绩及总分(要求采用堆排序)。并能实现对任一考生或任一门课程成绩的查找(要求两种查找方式,根据考号或姓名进行查找,采用高效的查找算法)。录取通知书的格式如下:成窗卜 汉XXf1XXuFouhairebeenadmitteclFourscores:.PoliticsEnglishMathematicsMajorTotal(图一)2概要设计(图二)3详细设计(1)数据结构设计由于本题明确要求在进行排序时必须采用推排序的算法,而堆排序最常采用的数据存储结构便是顺序表存储结构,因此在我的设

5、计中是采用的结构体数组将各个学生的信息进行存储,同时这也方便排序算法的实现。typedefstructstringname;intPolitics;intEnglish;intMathematics;intMajor;intTotal;stringNum;Student;(2)算法设计由于题目要求本程序的查找是针对考号和姓名两种方式进行查找的,而不是针对相应的可比较的数据进行查找,所以像二叉查找和二叉排序树这些查找方法基本都用不上,因此本程序采用的是“蛮力”查找的方法,及对整个结构体数组进行遍历,而与要查找的信息一一进行对比,只不过在进行比较的过程中用的是string类中的重载“="

6、,这样更加的方便快捷。而堆排序的算法,由于学生成绩的录取是一个从高分到低分排序的过程,因此推排序的算法就是一个建立“大顶堆”的一个过程。4调试分析由于查找的算法是用的“蛮力”的算法,而对成绩的录入也非常的简单,因此详细设计这一块主要说说堆排序的详细设计算法。堆排序的详细设计分析:首先题目要求是按四门课程的总分进行排序,由此我们知道我们要建立的堆是一个“大顶堆”,而建堆过程中主要解决的两个问题是:(1)如何由一个无序序列建成一个堆?(2)如何在输出堆元素之后,调整剩余的元素成为一个新的堆?在无序序列建立堆的过程中在我的程序中是用HeapAdjust()这个函数实现的,将建堆的过程看做事一个反复筛

7、选的过程,则只需从从最后一个非终端断点n/2的下界开始向前一次进行筛选,若所比较的元素比其后继的元素要小则不需要进行交换,否则需要该元素与其父节点进行交换。即该过程中每一步都是将二叉树的子树建立成一个小顶堆的过程,这主要是方便在后面调整的过程中将堆顶元素和最后一个元素进行交换,即将其从大到小排序的过程。intHeapAdjust(Student(&S_USE)MAX_SIZE,ints,intm)Studentrc;intj;rc=S_USEs;for(j=2*s;j<=m;j*=2)if(j<m&&(S_USEj.Total>S_USEj+1.Tot

8、al)j+;if(rc.Total<S_USEj.Total)break;S_USEs=S_USEj;s=j;S_USEs=rc;return0;而调整的过程比较简单,即将队堆顶的元素与顺序表的最后一个元素进行交换,然后将剩下的元素建堆的一个过程,主要函数实现如下:intHeapSort(Student(&S_USE)MAX_SIZE)inti;Studenttmp;for(i=count_U;i>=0;i-)S_USEi=S_USEi-1;cout<<"Iamhere!"<<endl;for(i=count_U/2;i>0

9、;i-)/要不要减一先记在这里HeapAdjust(S_USE,i,count_U);for(i=count_U;i>1;i-)tmp=S_USE1;S_USE1=S_USEi;S_USEi=tmp;HeapAdjust(S_USE,1,i-1);for(i=0;i<count_U;i+)S_USEi=S_USEi+1;return0;5用户使用点击运行程序,在弹出的窗口中,会提示要输入的信息:1、首先提示输入的是学生的个数:此时输入你所需要输入的学生的个数即可。2、提示信息为“请按照学生的姓名、政治、英语、数学和专业综合的分数以及考号依次进行输入”:按照学生的信息一一进行输入即可

10、3、提示信息为“请输入要录取学生的个数:”此时用户输入要录取学生的个数,窗口中便会显示出录取学生的信息4、然后便是查找的过程,用户按提示进行输入,便可按考号和姓名两种方式对所需要的信息进行查找。6测试结果在测试的过程中我一共用到了如下26组数据:aaa979885911001bbb568945971002ccc626864921003ddd666869921004eee707248951005fff506878911006ggg707686951007hhh757879961008iii456568781009jjj656869981010kkk623268971011lll657589100

11、1012mmm6578891231013nnn235689451014ooo477889651015ppp658941451016qqq688978891017rrr588945971018sss457856891019ttt616161911020uuu737475941021vvv5658591241022www656869951023xxx686978941024yyy562345561025zzz124556981026然后要求程序通过排序后录取前五位,程序运行结果如下:ADMISSIONHOT1GE111:VouLauebeenAdmittedVollfscores:oJitic?6

12、5nglisli75latliematics89lajo*100otal329:lizlnaUnziuEiszLt4j£CeoscienceADHISSIONNOTICEdi5;Vouilidtielieenadm±七七七日Voursccres:olitics?5hglish7fllatheRatits79lajor96otal3ZB二liin目UniuEi'siXyofGeoscienceHDHISSIONNOTICEADMISSIONMOTICEVouhavebeen«dnittedVqiwscores:olit;icsq7nsrlish78lathe

13、natics85lajor"otzal371hinAUniuevsityGeosci&n&eADMISSIONMOTIGEmn:havebeenadmittedVoiii'scores:ollt1JCS£5n9lisk78lathenatics8?lajor133otal355phin司UniuEwityofGgn£ci±nee(图三)33=Vquh寻bc«n小dnittedVourscores;bliticsEnglistilathenaticslajorrotal78 ?63655327(图四)(图五)通过与原数据的

14、比较,结果准确无误:一下便是查找的测试结果:通过分析知道,结果准确无误。数据结构课程设计7结论体会经过一个星期的课程设计,过程曲折可谓一语难尽。整天都是对着电脑,不然就是翻阅资料。在此期间我失落过,也曾一度热情高涨。点点滴滴令我回味无长。这次课程设计使我体会到只有做到细心耐心,恒心才能做好事情。这次的课程设计,加强了我们动手、思考和解决问题的能力。巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。通过课程设计,培养

15、了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。而且做课程设计同时也是对课本知识的巩固和加强,平时看课本时,有些问题就不是很能理解,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这个期末测试之后的课程设计对我们的作用是非常大的。这次的课程设计使我懂得了理论与实际相结合是很非常重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在整个设计过程中,构思是很花费时间的。调试时经常会遇到这样那样

16、的错误,有的是因为粗心造成的语法错误。当然,很多也时用错了方法,总是实现不了。同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。- ii -数据结构课程设计8参考文献1严蔚敏,吴伟民编著.数据结构(C语言版)一一北京:清华大学出版社,2007.2谭浩强编著C程序设计(第三版)一一北京:清华大学出版社,20083刘振安,孙忱,刘燕君编著C程序设计课程设计一一北京:机械工业出版社,20074于海英编著C语言程序设计一一北京:清华大学出版社,20125杨剑编著数据结构一一清华大学出版社,20116陈维兴,林小茶.C+面向对象程序设计教程.北京:清华大学出版社,

17、2009.6-19 -9源程序#include<iostream>#include<string>usingnamespacestd;constintMAX_SIZE=100;constintL_P=60;/分别表示各门的最低录取分数线constintL_E=60;constintL_MATH=60;constintL_MAJOR=90;intcount_A=0;/用于记录全部录入的学生的个数intcount_U=0;/用于记录达到最低分数线的学生的个数intcount_N=0;/用与记录为达到最低分数线的学生的个数intcount_ACC=0;/用于记录录取学生的个数

18、typedefstructstringname;intPolitics;intEnglish;intMathematics;intMajor;intTotal;stringNum;Student;/intHeapAdjust(Student(&S_USE)MAX_SIZE,ints,intm);堆排序intHeapSort(Student(&S_USE)MAX_SIZE);调整intPanDuan(Student(&S_ALL)MAX_SIZE,Student(&S_USE)MAX_SIZE,Student(&S_UNUSE)MAX_SiZE);/判断该

19、研究生是否有录取资格才能进行堆排序intFind(Student(&S_ALL)MAX_SIZE);查找成绩intDisplay。,输出成绩单intPutIn(Student&S);成绩录入/intFind(Student(&S_ALL)MAX_SIZE)intk,i;stringnum,name;cout<<"请输入您要查找的方式:1:按考号查找,2:按姓名查找"<<endl;cin>>k;if(k=1)(cout<<”请输入要查询考生的考号:"<<endl;cin>>

20、;num;for(i=0;i<count_A;i+)(.if(num=S_ALLi.Num)(cout<<"查到成功!该学生的信息如下:"<<endl;cout<<"name"<<S_ALL<<endl;cout<<"num"<<S_ALLi.Num<<endl;cout<<"Politics"<<S_ALLi.Politics<<endl;cout<<&

21、quot;English"<<S_ALLi.English<<endl;cout<<"Mathematics"<<S_ALLi.Mathematics<<endl;cout<<"Major"<<S_ALLi.Major<<endl;cout<<"Total"<<S_ALLi.Total<<endl;break;if(i=count_A)cout<<"查找失败!"&

22、lt;<endl;return0;elseif(k=2)(cout<<”请输入要查询考生的姓名:"<<endl;cin>>name;for(i=0;i<count_A;i+)(.if(name=S_ALL)cout<<"查到成功!该学生的信息如下:"<<endl;cout<<"name"<<S_ALL<<endl;cout<<"num"<<S_ALLi.Num<&l

23、t;endl;cout<<"Politics"<<S_ALLi.Politics<<endl;cout<<"English"<<S_ALLi.English<<endl;cout<<"Mathematics"<<S_ALLi.Mathematics<<endl;cout<<"Major"<<S_ALLi.Major<<endl;cout<<"Total

24、"<<S_ALLi.Total<<endl;break;if(i=count_A)cout<<"查找失败!"<<endl;return0;elsereturn1;intHeapAdjust(Student(&S_USE)MAX_SIZE,ints,intm)(Studentrc;intj;rc=S_USEs;for(j=2*s;j<=m;j*=2)(if(j<m&&(S_USEj.Total>S_USEj+1.Total)j+;if(rc.Total<S_USEj.To

25、tal)break;S_USEs=S_USEj;s=j;cout<<"Iamhereheapadjust!"<<endl;S_USEs=rc;return0;intHeapSort(Student(&S_USE)MAX_SIZE)inti;Studenttmp;for(i=count_U;i>=0;i-)S_USEi=S_USEi-1;cout<<"Iamhere!"<<endl;for(i=count_U/2;i>0;i-)要不要减一先记在这里HeapAdjust(S_USE,i,co

26、unt_U);for(i=count_U;i>1;i-)tmp=S_USE1;S_USE1=S_USEi;S_USEi=tmp;/cout<<"Iamhereheapsort!"<<endl;HeapAdjust(S_USE,1,i-1);for(i=0;i<count_U;i+)S_USEi=S_USEi+1;return0;intDisplay(Student(&S)MAX_SIZE)inti;cout<<”请输入要录取学生的个数:"<<endl;cin>>count_ACC;fo

27、r(i=0;i<count_ACC;i+).cout<<"ADMISSIONNOTICE"<<endl;cout<<S<<":"<<endl;cout<<"Youhavebeenadmitted"<<endl;cout<<"Yourscores:"<<endl;cout<<"Politics"<<Si.Politics<<endl;co

28、ut<<"English"<<Si.English<<endl;cout<<"Mathematics"<<Si.Mathematics<<endl;cout<<"Major"<<Si.Major<<endl;cout<<"Total"<<Si.Total<<endl;cout<<endl<<endl;cout<<"ChinaUn

29、iversityofGeoscience"<<endl;return0;intPutIn(Student(&S)MAX_SIZE)inti;/cout<<"请您输入要录入学生的信息,"0"表示结束"<<endl;cout<<"请您输入要录入学生的个数"<<endl;cin>>count_A;cout<<"请我照学生的姓名、政治、英语、数学和专业综合的分数以及考号依次进行输入:"<<endl;for(i=

30、0;i<count_A;i+).cin>>S;cin>>Si.Politics;cin>>Si.English;cin>>Si.Mathematics;cin>>Si.Major;cin>>Si.Num;Si.Total=Si.Politics+Si.English+Si.Mathematics+Si.Major;return0; intPanDuan(Student(&S_ALL)MAX_SIZE,Student(&S_USE)MAX_SIZE,Student(&S_UNUSE)MAX_SIZE)inti;for(i=0;i<count_A;i+)if(S_

温馨提示

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

评论

0/150

提交评论