Hcpc系统的竞赛试题提交信息统计系统的设计与实现_第1页
Hcpc系统的竞赛试题提交信息统计系统的设计与实现_第2页
Hcpc系统的竞赛试题提交信息统计系统的设计与实现_第3页
Hcpc系统的竞赛试题提交信息统计系统的设计与实现_第4页
Hcpc系统的竞赛试题提交信息统计系统的设计与实现_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

学院计算机系Hcpc系统的竞赛试题提交信息统计系统的设计与实现专业:计算机科学与技术学生姓名:学号:年级专业与班级:20级1班指导老师与职称:姚敦红讲师湖南·提交日期:2010年12月目录1、摘要……………………12、关键词.…………………23、前言………………23.1目的…………………33.2设计方法………………33.3实现方法与主要代码………………3.4调试问题………………3.5系统的使用说明…………3.6.总结………………………4、结论…………………5、参考文献………………6、致谢……………………7、附录……………………Hcpc系统的竞赛试题提交信息统计系统的设计与实现学生:指导老师:姚敦红(怀化学院计算机系,怀化418008)摘要:在这个计算机高速发展的时代,它所带给我们的便利是有目共睹的,我们都希望能够很好的运用计算机科技,跟上时代的发展。这次课程设计的主要目的是进一步掌握和利用高级语言进行程序设计的能力;进一步理解和运用结构化程序设计的思想和方法;熟练常用的C语言知识,能做到灵活运用;学会调试一个复杂程序的基本方法;基本掌握C语言的功能函数;和书写程设计开发文档的能力(书写课程设计报告)。本次课程设计主要主要用到的知识是C++语言中的结构体,在算法上主要采用了使用数组地址查找的方法,这样就很大的提高了查找的效率,在程序出错的过程中,进一步熟练了调试程序过程,加强了程序的写作能力,和对程序代码检查能力,在设计方面进一步了解了好算法对程序的提高作用,有助于写出高质量的代码。加强了在不懂的情况下自学的能力和查阅资料的能力。关键词:c++;面向对象;排名;查询;数据结构;类;MicrosoftVisualC++6.0;一、前言此次课程设计目的在于考查同学们在上学期对c++学习的成效,再者也是培养同学们的对专业的学习兴趣,对于没有进入ACM的同学来说,这也将是一次很好的锻炼机会,培养了大家主动学习的能力,在整个课程设计的过程中,同学们相互帮助,一起探讨了设计过程中遇到的各种问题,达到了很好的效果。而我所要设计的这个成绩系统记录册主要是为了设计出一个高效率的对学生成绩查询的过程,避免过于繁琐的查再有,当面对相对较大的数据量,设计一种比较高效的数据存储结构就成了一大问题,怎样快速的查询也要求我们设计一个较为快速的统计方法,所以成绩记录簿系统的竞赛试题提交信息统计系统的设计就成了必要。。成绩记录簿主要是运用c++编程中的数组和类来实现功能,因为采用链式储存显然阅是小题大作的。设计这个系统,用到的高级程序设计语言是C++,采用面向对象的方法,采用链式存储方式,读取文件添加比赛信息,给出统计结果。二、设计分析根据课程设计题目的要求,这个程序要实现以下的功能:1)welcome函数显示欢迎信息,检查原始数据文件是否存在;2)insert函数插入学生信息3)comp函数对所有的数据进行排名统计等;4)print函数显示所有学生的资料5)del函数对学生数据进行删除;6)save函数对进行操作后的数据进行保存;7)exit函数询问是否需要继续查询不再查询则显示结束画面,系统退出。这里的功能还是比较简单的,对于存储与查询操作,运用链表显然是小题大做的,所以这里我采用了数组来进行操作三、实现方法类的定义:定义一个”student”类;把我们所要进行的学生的学号,年龄,成绩等定义到类中去,这样就利用类的特性对数据进行了保护代码如下:classStudent//定义student的类{ stringname;//姓名 stringnum;//学号 stringsex;//性别 intage;//年龄 floatscore[4];//成绩 floatsum;//总分 floataverage;//平均分 intpm;//排名 //面是成员函数部分其中“ACCEPTINFO”类用来保存正确提交的比赛队员编号和解决问题所用的语言。“PROBLEM”类用以保存题目编号、分值、各种提交结果、各语言提交情况,该题目的提交信息,用链表包含“ACCEPTINFO”类型节点;“COMPETITION”类保存比赛批次、比赛描述、题目数、参赛人数、比赛开始和结束时间、链表保存“PROBLEM”类型节点各方法说明:1)Welcome函数:显示欢迎界面,并检查原始数据文件是否存在,不存在则系统无法运行,程序退出,存在则继续;2)Load_examinfo函数,读取examinfo.txt输出所有比赛批次的描述信息,并提升选择比赛,按照输入返回对应的比赛类对象,用以后续操作;3)examcontestinfo函数读取examcontest.txt调用COMPETITION类的成员方法插入建立该场比赛的试题信息表;4)Load_examsubmits函数读取teamses.txt获取队员编号,以判断该提交是否属于所查看的比赛;读取examsubmits.txt添加比赛提交情况,调用COMPETITION的成员方法Submit判断添加提交信息;5)所有数据准备完成,打印统计结果包括比赛信息描述,按题目顺序显示各题目的各种提交信息;6)Save函数提示是否保存至文件,输入保存文件名,调用COMPETITION成员方法SAVE保存数据至指定文件;7)Continue函数所有工作完成,询问是否继续操作,否则转到结束界面Quit;8)Quit函数,显示结束界面。提示退出系统;储存结构:如图2-1图2-1四、调试问题在开始编码前,做好了系统的分析工作,搭好系统框架,按函数执行的顺序编码,完成一个函数编码,使用一个简单的函数,输出检验操作是否完成,并使用MicrosoftVisualC++6.0所提供的调试工具,调试错误;整个编码过程没有遇到较大的问题。值得注意的是,在链表的插入过程中出现了指针的非法访问,主要原因是指针没有初始化,或是边界条件设置不恰当。在以后的学习中需要格外注意。五、系统的使用说明书1)运行前准备:先将要查询的学生信息保存到文件student.txt;2)运行系统欢迎界面图1-1按提示,回车进入系统。图1-1按任意键后将进入主菜单,用户根据自己的需要按数字键进行下一步操作。(图1-2)图1-2输入学生资料:将保存在student,txt中的数据复制到页面中后出现阶段如图1-3所示界面图1-3按2进行显示学生全部信息,界面如图1-4图1-4按要求是删除学生信息界面如图;(图1-5)图1-56.提示保存文件界面图1-6(保存成功)图1-6结束界面,(图1-7)回车退出系统图1-7六、结论这次课程设计让我感触挺多的,在大一的时候自己没有好好的学,认为编程是很烦琐的事情,自认为自己以后也是不会从事编程这方面的工作的,可以说对自己专业课学习的态度是不够好的,老师要我做什么我就会做什么,从来不会主动去完成一些编程,因为它的实际应用我也很难看到。而这经历了这次课和设计之后,我知道了更多的关于编程的东西,可以说是更加理解编程了吧。同学们在一起的这几天,都互相帮助,我的设计也是在很多高手的指点下完成的,自己不懂的地方问他们,他们就会耐心的帮你讲解,所以我也学到了很多的东西。在看到自己设计出来的系统真的能够实现一些功能后自己也是很高兴的。虽然系统完成的工作不多,但是,在完成这个系统还是遇到了一些小问题,在解决这些问题之后,不仅收获到了成功的喜悦,增加了程序设计的兴趣。同时还学得了面向对象的编程方法,熟悉了数据结。这也说明编程的应用价值也是很大的,我看到了它的价值,也看到了自己的进步。学习兴趣提高了,能力提高了,和大家也相处得更好些了,我想,在今后的学习过程中,我会更加端正自己的学习态度,有不懂的地方会主动问同学,争取能够取得更大的成效。构的运用,提高了编程能力。编写系统所用到的知识有:C++高级程序设计语言(包括函数的使用,对象的使用,文件的操作),数据结构。等参考文献[1]谭浩强.c++程序设计[2]严蔚敏吴伟民.数据结构(c语言版)致谢本报告是在姚敦红老师的悉心指导和热情关怀下完成的。在完成过程中老师给了我许多好的意见和建议,在此感谢老师的悉心指导。附录系统源代码#include<iostream>#include<fstream>#include<string>#include<algorithm>usingnamespacestd;#defineMAXSIZE800classStudent{ stringname; stringnum; stringsex; intage; floatscore[4]; floatsum; floataverage; intpm;public: Student(){} friendvoidsort_paim(Student*STU,intlen); stringgetname(){returnname;}; stringgetnum(){returnnum;}; stringgetsex(){returnsex;}; intgetage(){returnage;}; floatgetsum(){returnsum;}; floatgetaverage(){returnaverage;}; floatgetscore0(){returnscore[0];} floatgetscore1(){returnscore[1];} floatgetscore2(){returnscore[2];} floatgetscore3(){returnscore[3];} intgetpm(){returnpm;}; voidinsert(stringNAME,stringNUM,stringSEX,intAGE,float*SC) { name=NAME; num=NUM; sex=SEX; age=AGE; score[0]=SC[0]; score[1]=SC[1]; score[2]=SC[2]; score[3]=SC[3]; sum=score[0]+score[1]+score[2]+score[3]; average=sum/4; return; }};boolcomp(Studenta,Studentb){ returna.getnum()<b.getnum();}boolcomp2(Studenta,Studentb){ returna.getaverage()>b.getaverage();}voidsort_paim(Student*STU,intlen){ inti; sort(STU,STU+len,comp2); for(i=0;i<len;i++) STU[i].pm=i+1; sort(STU,STU+len,comp);}voidwellcome(){ cout<<"欢迎使用学生成绩记录簿系统"<<endl; cout<<"---09级计算机科学技术系一班廖娟(0906401046)"<<endl;cout<<"============================================================================"<<endl; cout<<endl; cout<<endl; system("pause"); system("cls");}voidprint(Student*STU,intlen){ if(len==0) { cerr<<"没有数据!!!"; system("pause"); system("cls"); return; } cout<<"学号姓名性别年龄外语高数C语言马哲总分平均分名次"<<endl; for(inti=0;i<len;i++) cout<<STU[i].getnum()<<""<<STU[i].getname()<<""<<STU[i].getsex()<<""<<STU[i].getage()\ <<""<<STU[i].getscore0()<<""<<STU[i].getscore1()<<""<<STU[i].getscore2()<<""<<STU[i].getscore3()\ <<""<<STU[i].getsum()<<""<<STU[i].getaverage()<<""<<STU[i].getpm()<<endl; system("pause");}intfunction(){ inta; system("cls"); cout<<"***********************************菜单选项************************************"<<endl;//以下14行为主界面 cout<<"1----输入学生资料2----显示学生资料"<<endl; cout<<"3----删除学生资料4----修改学生资料"<<endl; cout<<"5----查询学生资料6----统计学生资料"<<endl; cout<<"7----保存学生资料0----退出系统"<<endl; cout<<"*******************************************************************************"<<endl; do { cout<<"请选择你要进行的操作序号:"<<endl; cin>>a; }while(a>7||a<0); returna;}boolInsert(Student*STU,int&len){ stringname,sex,num; intage; floatscore[4]; cout<<"请输入姓名:"; cin>>name; cout<<"请输入学号"; cin>>num; cout<<"请输入性别"; cin>>sex; cout<<"请输入年龄"; cin>>age; cout<<"请输入各科成绩"; cin>>score[0]>>score[1]>>score[2]>>score[3]; STU[len].insert(name,num,sex,age,score); len++; returntrue;}voiddel(Student*STU,int&len){ if(len==0) { cerr<<"没有数据!!!"; system("pause"); system("cls"); return; } system("cls"); charch; print(STU,len); inti,j; stringnum; do{ cout<<"请输入需要删除的学生学号:"; cin>>num; for(i=0;i<len;i++) { if(STU[i].getnum()==num) { for(j=i;j<len-1;j++) STU[j]=STU[j+1]; len--; sort_paim(STU,len); cout<<"删除成功!!!\n删除后的信息为:\n"; print(STU,len); system("cls"); return; } } cout<<"没有找到该学号!!!\n继续(y/n)"; cin>>ch; if(ch=='N'||ch=='n')return; }while(1); return;}voidsearch(Student*STU,intlen){ if(len==0) { cerr<<"没有数据!!!"; system("pause"); system("cls"); return; } system("cls"); charch; inti; stringnum; do{ cout<<"请输入需要查找的学生学号:"; cin>>num; for(i=0;i<len;i++) { if(STU[i].getnum()==num) { cout<<"学号姓名性别年龄外语高数C语言马哲总分平均分名次"<<endl; cout<<STU[i].getnum()<<""<<STU[i].getname()<<""<<STU[i].getsex()<<""<<STU[i].getage()\ <<""<<STU[i].getscore0()<<""<<STU[i].getscore1()<<""<<STU[i].getscore2()<<""<<STU[i].getscore3()\ <<""<<STU[i].getsum()<<""<<STU[i].getaverage()<<""<<STU[i].getpm()<<endl; system("pause"); return; } } cout<<"没有找到该学号!!!\n继续(y/n)"; cin>>ch; if(ch=='N'||ch=='n')return; }while(1); return;}voidmodify(Student*STU,intlen){ if(len==0) { cerr<<"没有数据!!!"; system("pause"); system("cls"); return; } system("cls"); charch; print(STU,len); inti; floatsc[4]; stringnum; do{ cout<<"请输入需要修改的学生学号:"; cin>>num; for(i=0;i<len;i++) { if(STU[i].getnum()==num) { cout<<"学号姓名性别年龄外语高数C语言马哲总分平均分名次"<<endl; cout<<STU[i].getnum()<<""<<STU[i].getname()<<""<<STU[i].getsex()<<""<<STU[i].getage()\ <<""<<STU[i].getscore0()<<""<<STU[i].getscore1()<<""<<STU[i].getscore2()<<""<<STU[i].getscore3()\ <<""<<STU[i].getsum()<<""<<STU[i].getaverage()<<""<<STU[i].getpm()<<endl; cout<<"请输入各科成绩"; cin>>sc[0]>>sc[1]>>sc[2]>>sc[3]; STU[i].insert(STU[i].getname(),STU[i].getnum(),STU[i].getsex(),STU[i].getage(),sc); cout<<"修改成功!!!"; sort_paim(STU,len); system("pause"); system("cls"); return; } } cout<<"没有找到该学号!!!\n继续(y/n)"; cin>>ch; if(ch=='N'||ch=='n')return; }while(1); return;}voidcreat(Student*STU,int&len){ charch; do { Insert(STU,len); cout<<"继续添加(y/n)"; cin>>ch; }while(ch=='y'||ch=='Y'); sort_paim(STU,len); cout<<"输入完成!!!"; system("pause"); system("cls");}voidsave(Student*STU,intlen){ if(len==0) { cerr<<"没有数据!!!"; system("pause"); system("cls"); return; } cout<<"请输入需要保存的文件名"; char[100]; cin>>; ofstreamfout(); fout<<"学号姓名性别年龄外语高数C语言马哲总分平均分名次"<<endl; for(inti=0;i<len;i++) fout<<STU[i].getnum()<<""<<STU[i].getname()<<""<<STU[i].getsex()<<""<<STU[i].getage()\ <<""<<STU[i].getscore0()<<""<<STU[i].getscore1()<<""<<STU[i].getscore2()<<""<<STU[i].getscore3()\ <<""<<STU[i].getsum()<<""<<STU[i].getaverage()<<""<<STU[i].getpm()<<endl; fout.close(); cout<<"保存成功!!!"; system("pause"); system("cls");}voidStatistics(Student*STU,intlen){ if(len==0) { cerr<<"没有数据!!!"; system("pause"); system("cls"); return; } inti; intExcellent[4]={0}; intGood[4]={0};intPass[4]={0}; intFail[4]={0}; floatscore[4]={0.0}; stringstr[]={"外语","高数","C语言","马哲"}; for(i=0;i<len;i++) { score[0]+=STU[i].getscore0(); score[1]+=STU[i].getscore1(); score[2]+=STU[i].getscore2(); score[3]+=STU[i].getscore3(); switch(int(STU[i].getscore0()/10)) { case10:; case9:Excellent[0]++;break; case8: case7:Good[0]++;break; case6:Pass[0]++;break; default:Fail[0]++; } switch(int(STU[i].getscore1()/10)) { case10:; case9:Excellent[1]++;break; case8: case7:Good[1]++;break; case6:Pass[1]++;break; default:Fail[1]++; } switch(int(STU[i].getscore2()/10)) { case10:; case9:Excellent[2]++;break; case8: case7:Good[2]++;break; case6:Pass[2]++;break; default:Fail[2]++; } switch(int(STU[i].getscore3()/10)) { case10:; case9:Excellent[3]++;break; case8: case7:Good[3]++;brea

温馨提示

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

评论

0/150

提交评论