C语言课程设计-成绩排序系统_第1页
C语言课程设计-成绩排序系统_第2页
C语言课程设计-成绩排序系统_第3页
C语言课程设计-成绩排序系统_第4页
C语言课程设计-成绩排序系统_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

PAGEword文档可自由复制编辑word文档可自由复制编辑学号2013-20142013-2014学年第二学期《高级语言程序设计》课程设计报告题目:成绩排序专业:计算机科学与技术班级:姓名:指导教师:成绩:计算机与信息工程系2014年6月2日目录TOC\o"1-3"\f\h\u143731设计目的及要求 1215301.1课程设计的目的 1243231.2课程设计的基本要求 1175662设计内容 2227172.1模块说明 214702.2模块结构图 2230532.3详细设计说明 4176262.31程序流程图 482502.3.2删除学生成绩记录模块 54982.3.3查询学生成绩记录模块 6275712.3.4学生成绩排序模块 76152.4函数流程图 8853程序测试 9180723.1软件测试 9248583.2运行结果及截图 9186644参考文献 11170045总结 12127756源代码 131设计目的及要求1.1课程设计的目的(1).巩固和掌握高级语言程序设计基本概念;(2).掌握基本的程序设计方法;(3).掌握开发软件所需的需求定义能力;(4).提高书写程序设计说明文档的能力;(5).提高综合运用高级语言的能力,强化编程和调试能力。1.2课程设计的基本要求1)根据所给的课程设计题目,分析课程设计题目的要求;2)对系统功能模块进行分析,写出详细的设计说明文档;3)编写程序代码,调试所编写程序使其能正确运行;4)设计完成的软件便于完成和使用;5)设计完成后提交课程设计报告;课程设计报告内容包括:课程设计的目的、设计任务与要求、设计说明书、设计成果和心得五个部分,具体要求见设计报告模板;6)总结:调试分析过程描述:包括测试数据、测试输出结果以及对程序调试过程中的存在问题的思考(列出主要问题的出错现象、出错原因等)包括课程设计过程中的学习体会与收获;7)任务:设计一个学生成绩排序系统,该系统的主要功能如下:具备对成绩的管理功能(添加、删除、排序)具备对成绩的统计功能(最高分,最低分,平均分,及格率等)具备按学号、姓名、或课程名查询成绩的功能。学生成绩应该保存在文件中。备注:成绩记录以下信息:班级,学好,姓名,课程名,成绩(百分制)。可以用表示学生成绩的结构体数组存储数据。2设计内容2.1模块说明本次程序设计中我设计了五个模块,分别是增加信息、查询成绩、删除成绩、成绩排序、统计成绩。这几个模块总原本的信息,查找、添加、删除、排序作为主函数的子函数。2.2模块结构图系统可以按功能进行模块划分,其模块如图a所示:用户界面用户界面主函数增加学生成绩记录删除学生成绩记录查询学生成绩记录统计学生成绩记录学生成绩排序创建图a模板设计图其中:(1).增加学生成绩记录模块可以完成学生成绩的输入,输入信息包括班级、学号、姓名、课程名、成绩。(2)删除学生成绩记录模块可以完成学生成绩的删除。(3)查询学生成绩记录模块可以完成学生成绩的查询可以通过输入姓名、学号或者是课程名来查询学生成绩。(4)统计学生成绩记录模块可以完成对学生成绩的统计可以在已有的学生成绩记录中,输出平均分、最高分、最低分、及格率。(5)学生成绩排序模块可以完成对学生成绩的排序按照成绩的高低来进行排序。2.3详细设计说明2.31程序流程图YNNY开始进入目录选择YNNY开始进入目录选择判断是否有排序保存删除查询添加 统计及格率统计单科统计单科最高统计单科最低统计单科平均是否继续退出系统图b系统流程图增加学生成绩记录模块(voidManage::add())对应于总体设计时的系统功能模块图,各个功能模块的处理逻辑如下:主要完成将数据存入单链表中的工作。在这次增加学生成绩记录中,记录可以从二进制形式存储的数据文件中读入,也可以从键盘逐个读入学生记录。如图c所示:开始输入班级学号姓名课程开始输入班级学号姓名课程成绩结束2.3.2删除学生成绩记录模块(voidManage::del())要删除某个学生的信息,就要从磁盘文件中将所有同学信息读出来,然后除要删除的学生外,其它的所有记录再重新存入原来的磁盘文件中,如图d所示:开始开始读入信息读入信息输入要删除学生的学号输入要删除学生的学号是否找到是否找到 N删除成功Y删除成功结束结束图d删除学生成绩记录流程图2.3.3查询学生成绩记录模块(voidManage::search())主要完成在单链表中查找满足相关条件的学生记录。用户可以按照学生的学号、姓名或课程名在单链表中进行查找。未找到输出提示信息,如图3-4所示:NNY开始读入信息输入要查找学生的学号、姓名、或课程名是否找到该学生不存在查找对象输出该学生信息结束图3-4查询学生成绩记录流程图主要完成对最高分、最低分、平均分、及格率的统计,如图e所示:开始读入信息输出所有学生的平均分、最高分、最低分和及格率结束开始读入信息输出所有学生的平均分、最高分、最低分和及格率结束2.3.4学生成绩排序模块主要完成按照成绩的高低来进行排序,如图f所示:结结束初始化指向第一个位置待排序元素为N-1个初始化最大值及位置,计算待比较元素的地址和计算比较次数比较对象小于当前最大值保存新的最大值和它的位置调整指针,准备下一次比较本次比较操作结束?将最大值元素和当前位置元素进行交换,调整到一个位置调整缓冲区对应记录N—1个最大值选择结束开始YNYNNY图f学生成绩排序流程图2.4函数流程图系统首先进入欢迎界面并提示用户输入不同的阿拉伯数字会进行不同的操作。在用户做出选择后,根据用户输入的阿拉伯数字,程序将调用相应的功能模块,实现用户要进行的操作。完成一次用户的操作后,再回到欢迎界面,等待用户再做出选择,再调用相应的功能模块……,知道用户在欢迎界面选择了退出,该系统结束,终止执行,如图g所示:开始开始按学号删除选择2输出最高分、最低分、平均分和及格率统计选择1选择操作输出界面按学号删除选择2输出最高分、最低分、平均分和及格率统计选择1选择操作输出界面输入学生的班级、学号、姓名、课程名、成绩输入学生的班级、学号、姓名、课程名、成绩输入数据选择3输入数据选择3退出系统退出系统选择5结束 图g函数流程图、3程序测试3.1软件测试打开软件后,界面会出现你所需要的功能,根据你要进行的操作来选择。3.2运行结果及截图1)此图为程序运行成功后,出现的界面,此为主菜单界面,可依据界面执行。如图4-1所示: 图4-1主菜单2)首先增加学生成绩记录,输入学生的班级、学号、姓名、课程名、成绩,如图4-2所示:图4-2增加学生成绩记录3)返回主菜单,进行查询学生成绩记录操作,如图4-3所示:图4-3查询学生成绩记录4)返回主菜单,选择相应的操作,对学生成绩进行排序,如图4-4所示:图4-4学生成绩排序5)返回主菜单,进行对学生成绩统计操作,输出最高分、最低分、平均分和及格率,如图4-5所示:图4-5统计学生成绩6)返回主菜单,进行删除学生成绩记录操作,按照学号来删除学生信息,如图4-6所示:图4-6删除学生成绩记录4参考文献[1]谭浩强.C程序设计题解与上机指导.北京:清华大学出版社,2009[2]廖雷.C语言程序设计.北京:高等教育出版社,2006[3]贾学.宋海民.C语言程序设计.北京:中国铁道出版社,2007[4]赵海廷.C语言程序设计.北京:人民邮电出版社,2006.[5]范刚龙.王康平.C程序设计.武汉:武汉理工大学出版社,2006[6]张强华.C语言程序设计.北京:人民邮电出版社,2010[7]徐新华.C语言程序设计教程.北京:清华大学出版社,2010[8]谭浩强.C语言程序设计.北京:清华大学出版社,2011[9].《C语言课程设计案例精编》,吴启武等编著,清华大学出版社出版,[10].《C语言课程设计案例精编》,郭翠英等编著,中国水利水电出版社出版。5总结本次课程设计,使我对《数据结构》这门课程有了更深入的理解。《数据结构》是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。一个人的力量是有限的,要想把课程设计做的更好,就要学会参考一定的资料,吸取别人的经验,让自己和别人的思想有机的结合起来,得出属于你自己的灵感。在本课程设计中,我明白了理论与实际应用相结合的重要性,并提高了自己组织数据及编写大型程序的能力。培养了基本的、良好的程序设计技能以及合作能力。这次课程设计同样提高了我的综合运用所学知识的能力。程序的编写需要有耐心,有些事情看起来很复杂,但问题需要一点一点去解决,分析问题,把问题一个一个划分,划分成小块以后就逐个去解决。再总体解决大的问题。这样做起来不仅有条理也使问题得到了轻松的解决。在这段时间里,一直修改着相应的程序,并且尝试着调试各种运行结果。终于,在自己的努力下,课程设计还算是有点起色。经过这次的编程,我学会了很多东西。比如说,如何在网上查找一些有用的东西,如何设计自己的目标,如何规划好自己的学习时间,如何让自己的思想应用到程序的编程过程中去,如何合理运用各种资源来提高自己的编程甚至是学习的能力。另外,还有几点,我深有感触,就是我还问了别人怎样在Word文档中截图、怎样扩大或缩小图片等等。总之,收获真的是挺大的。通过这段时间的课程设计,我认识到数据结构是一门比较难的课程。需要多花时间上机练习。这次的程序训练培养了我实际分析问题、编程和动手能力,使我掌握了程序设计的基本技能,提高了我适应实际,实践编程的能力。这次的课程设计我对于专业课的学习有了更加深刻的认识,以为现在学的知识用不上就加以怠慢,等到想用的时候却发现自己的学习原来是那么的不扎实。以后努力学好每门专业课,让自己拥有更多的知识,才能解决更多的问题!总的来说,这次课程设计让我获益匪浅,对数据结构也有了进一步的理解和认识。不管怎么说,这次C++课程设计不仅给了我提高编程的能力的机会,而且让我的综合素质得到了一个全面的发展。我相信,这样的日子一定能成为我以后生活中一段美好的回忆。6源代码#include<iostream>#include<string>usingnamespacestd;classNode{public:stringbanji;//班级stringxuehao;stringname;stringkcm;//课程名intscore;intindex;Node*next;Node(){index=0;next=NULL;}Node(string_banji,string_xuehao,string_name,string_kcm,int_score,Node*_next){banji=_banji;xuehao=_xuehao;name=_name;kcm=_kcm;score=_score;next=_next;index=0;}};classManage{public:Manage();voidapp();voiddel(string&_xuehao);voidsort();voidstat();//统计voidsearch(string&_xuehao);private:Node*head,*tail;};Manage::Manage(){head=tail=NULL;}voidManage::app(){Node*u;stringbanji;//班级stringxuehao;stringname;stringkcm;//课程名intscore;charch;cout<<"班级学号姓名课程名成绩"<<endl;do{cin>>banji;cin>>xuehao;cin>>name;cin>>kcm;cin>>score;u=newNode(banji,xuehao,name,kcm,score,NULL);if(head==NULL){head=u;tail=u;}else{tail->next=u;tail=u;}cout<<"是否继续(y/n)";cin>>ch;}while(ch=='y');}voidManage::search(string&_xuehao){Node*u;cout<<"查找结果:"<<endl;cout<<"班级学号姓名课程名成绩"<<endl;for(u=head;u!=NULL;u=u->next){if(u->xuehao==_xuehao){cout<<""<<u->banji<<""<<u->xuehao<<""<<u->name<<""<<u->kcm<<""<<u->score<<endl;break;}}if(u==NULL)cout<<"不存在查找对象!"<<endl;}voidManage::del(string&_xuehao){Node*u;Node*p;if(head==NULL){cout<<"error"<<endl;exit(0);}else{for(u=head;u!=NULL;u=u->next){if(u->xuehao==_xuehao){if(u==head){head=head->next;break;}else{p=u->next;break;}p=u;}}}}voidManage::stat(){doubleaver,max,min,percent;Node*u;intcountAll=0,count=0;min=max=head->score;for(u=head;u;u=u->next){aver+=u->score;if(u->score>=max)max=u->score;if(min>u->score)min=u->score;if(u->score>=60.0)count++;countAll++;}aver=aver/countAll;percent=(double)count/countAll;cout<<"平均分:"<<aver<<endl;cout<<"最高成绩:"<<max<<endl;cout<<"最低成绩:"<<min<<endl;cout<<"及格率:"<<percent<<endl;}voidManage::sort(){Node*temp,*temp2;doubles;for(temp=head;temp;temp=temp->next){s=temp->score;if(head->next!=NULL)for(temp2=head,temp->index=1;temp2;temp2=temp2->next)if(temp2->score>s)temp->index++;}cout<<"班级学号姓名课程名成绩"<<endl;intcount=0;for(Node*u=head;u;u=u->next)count++;for(inti=1;i<=count;i++)for(Node*s=head;s;s=s->next)if(s->index==i)cout<<""<<s->banji<<""<<s->xuehao<<""<<s->name<<""<<s->kcm<<""<<s->score<<endl;}intmain(){Managem;intoperChoice;do{cout<<endl;cout<<"*************************"<<endl;cout<<"*主菜

温馨提示

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

评论

0/150

提交评论