1、 目 录1、摘 要12、关键词. 23、前 言 231目的 332设计方法33.3实现方法及主要代码 34调试问题 3.5系统的使用说明3.6.总结4、结论 5、参考文献6、致谢7、附录 Hcpc系统的竞赛试题提交信息统计系统的设计与实现 摘 要:在这个计算机高速发展的时代,它所带给我们的便利是有目共睹的,我们都希望能够很好的运用计算机科技,跟上时代的发展。这次课程设计的主要目的是进一步掌握和利用高级语言进行程序设计的能力;进一步理解和运用结构化程序设计的思想和方法;熟练常用的C语言知识,能做到灵活运用;学会调试一个复杂程序的基本方法;基本掌握C语言的功能函数;和书写程设计开发文档的能力(书写
2、课程设计报告)。本次课程设计主要主要用到的知识是C+语言中的结构体,在算法上主要采用了使用数组地址查找的方法,这样就很大的提高了查找的效率,在程序出错的过程中,进一步熟练了调试程序过程,加强了程序的写作能力,和对程序代码检查能力,在设计方面进一步了解了好算法对程序的提高作用,有助于写出高质量的代码。加强了在不懂的情况下自学的能力和查阅资料的能力。关键词:c+;面向对象;排名;查询;数据结构;类;Microsoft Visual C+ 6.0; 一、前言 此次课程设计目的在于考查同学们在上学期对c+学习的成效,再者也是培养同学们的对专业的学习兴趣,对于没有进入ACM的同学来说,这也将是一次很好的
3、锻炼机会,培养了大家主动学习的能力,在整个课程设计的过程中,同学们相互帮助,一起探讨了设计过程中遇到的各种问题,达到了很好的效果。而我所要设计的这个成绩系统记录册主要是为了设计出一个高效率的对学生成绩查询的过程,避免过于繁琐的查再有,当面对相对较大的数据量,设计一种比较高效的数据存储结构就成了一大问题,怎样快速的查询也要求我们设计一个较为快速的统计方法,所以成绩记录簿系统的竞赛试题提交信息统计系统的设计就成了必要。成绩记录簿主要是运用c+编程中的数组和类来实现功能,因为采用链式储存显然阅是小题大作的。设计这个系统,用到的高级程序设计语言是C+,采用面向对象的方法,采用链式存储方式,读取文件添加
4、比赛信息,给出统计结果。 二、设计分析根据课程设计题目的要求,这个程序要实现以下的功能:1)welcome函数显示欢迎信息,检查原始数据文件是否存在;2)insert函数 插入学生信息3) comp函数 对所有的数据进行排名统计等;4) print函数 显示所有学生的资料5)del函数对学生数据进行删除;6)save函数对进行操作后的数据进行保存;7)exit函数询问是否需要继续查询不再查询则显示结束画面,系统退出。这里的功能还是比较简单的,对于存储及查询操作,运用链表显然是小题大做的,所以这里我采用了数组来进行操作三、实现方法类的定义: 定义一个”student”类;把我们所要进行的学生的学
5、号,年龄,成绩等定义到类中去,这样就利用类的特性对数据进行了保护代码如下:class Student/定义student的类string name;/姓名string num;/学号string sex;/性别int age;/年龄float score4;/成绩float sum; /总分float average; /平均分int pm;/排名/面是成员函数部分其中“ACCEPTINFO”类用来保存正确提交的比赛队员编号和解决问题所用的语言。“PROBLEM”类用以保存题目编号、分值、各种提交结果、各语言提交情况,该题目的提交信息,用链表包含“ACCEPTINFO”类型节点;“COMPET
6、ITION”类保存比赛批次、比赛描述、题目数、参赛人数、比赛开始和结束时间、链表保存“PROBLEM”类型节点各方法说明:1)Welcome函数:显示欢迎界面,并检查原始数据文件是否存在,不存在则系统无法运行,程序退出,存在则继续;2)Load_examinfo函数,读取examinfo.txt输出所有比赛批次的描述信息,并提升选择比赛,按照输入返回对应的比赛类对象,用以后续操作;3)examcontestinfo函数读取examcontest.txt调用COMPETITION类的成员方法插入建立该场比赛的试题信息表;4)Load_examsubmits函数读取teamses.txt获取队员编
7、号,以判断该提交是否属于所查看的比赛;读取examsubmits.txt添加比赛提交情况,调用COMPETITION的成员方法Submit判断添加提交信息;5)所有数据准备完成,打印统计结果包括比赛信息描述,按题目顺序显示各题目的各种提交信息;6)Save函数提示是否保存至文件,输入保存文件名,调用COMPETITION成员方法SAVE保存数据至指定文件;7)Continue函数所有工作完成,询问是否继续操作,否则转到结束界面Quit;8)Quit函数,显示结束界面。提示退出系统;储存结构:如图2图2四、调试问题在开始编码前,做好了系统的分析工作,搭好系统框架,按函数执行的顺序编码,完成一个函
8、数编码,使用一个简单的函数,输出检验操作是否完成,并使用Microsoft Visual C+ 6.0 所提供的调试工具,调试错误;整个编码过程没有遇到较大的问题。值得注意的是,在链表的插入过程中出现了指针的非法访问,主要原因是指针没有初始化,或是边界条件设置不恰当。在以后的学习中需要格外注意。五、系统的使用说明书1)运行前准备:先将要查询的学生信息保存到文件student.txt; 2)运行系统1. 欢迎界面图1-1按提示,回车进入系统 。图1-12. 按任意键后将进入主菜单,用户根据自己的需要按数字键进行下一步操作。 (图1-2)图1-23. 输入学生资料:将保存在student,txt中
9、的数据复制到页面中后出现阶段如图1-3所示界面图1-34. 按2进行显示学生全部信息,界面如图1-4图1-45. 按要求是删除学生信息界面如图;(图1-5)图1-5 6提示保存文件界面图1-6(保存成功)图1-66. 结束界面,(图1-7)回车退出系统图1-7六、结论 这次课程设计让我感触挺多的,在大一的时候自己没有好好的学,认为编程是很烦琐的事情,自认为自己以后也是不会从事编程这方面的工作的,可以说对自己专业课学习的态度是不够好的,老师要我做什么我就会做什么,从来不会主动去完成一些编程,因为它的实际应用我也很难看到。而这经历了这次课和设计之后,我知道了更多的关于编程的东西,可以说是更加理解编
10、程了吧。同学们在一起的这几天,都互相帮助,我的设计也是在很多高手的指点下完成的,自己不懂的地方问他们,他们就会耐心的帮你讲解,所以我也学到了很多的东西。在看到自己设计出来的系统真的能够实现一些功能后自己也是很高兴的。虽然系统完成的工作不多,但是,在完成这个系统还是遇到了一些小问题,在解决这些问题之后,不仅收获到了成功的喜悦,增加了程序设计的兴趣。同时还学得了面向对象的编程方法,熟悉了数据结。这也说明编程的应用价值也是很大的,我看到了它的价值,也看到了自己的进步。学习兴趣提高了,能力提高了,和大家也相处得更好些了,我想,在今后的学习过程中,我会更加端正自己的学习态度,有不懂的地方会主动问同学,争
11、取能够取得更大的成效。构的运用,提高了编程能力。编写系统所用到的知识有:C+高级程序设计语言(包括函数的使用,对象的使用,文件的操作),数据结构。等参考文献 1 谭浩强.c+程序设计 2 严蔚敏 吴伟民.数据结构(c语言版) 致 谢本报告是在姚敦红老师的悉心指导和热情关怀下完成的。在完成过程中老师给了我许多好的意见和建议,在此感谢老师的悉心指导。 附录系统源代码 #include#include#include#includeusing namespace std;#define MAXSIZE 800class Studentstring name;string num;string sex
12、;int age;float score4;float sum; float average; int pm;public:Student()friend void sort_paim(Student *STU,int len);string getname()return name;string getnum()return num;string getsex()return sex;int getage()return age;float getsum()return sum;float getaverage()return average;float getscore0()return
13、score0;float getscore1()return score1;float getscore2()return score2;float getscore3()return score3;int getpm()return pm;void insert(string NAME,string NUM,string SEX,int AGE,float *SC)name=NAME;num=NUM;sex=SEX;age=AGE;score0=SC0;score1=SC1;score2=SC2;score3=SC3;sum=score0+score1+score2+score3;avera
14、ge=sum/4;return;bool comp(Student a,Student b)return a.getnum()b.getaverage();void sort_paim(Student *STU,int len)int i;sort(STU,STU+len,comp2);for(i=0;ilen;i+)STUi.pm=i+1;sort(STU,STU+len,comp);void wellcome()cout 欢迎使用学生成绩记录簿系统 endl;cout -09级计算机科学技术系一班 廖娟 (0906401046)endl; cout=endl;coutendl;couten
15、dl;system(pause);system(cls);void print(Student *STU,int len)if(len=0) cerr没有数据!;system(pause);system(cls);return;cout 学号 姓名 性别 年龄 外语 高数 C语言 马哲 总分 平均分 名次endl;for(int i=0;ilen;i+)coutSTUi.getnum() STUi.getname() STUi.getsex() STUi.getage() STUi.getscore0() STUi.getscore1() STUi.getscore2() STUi.getsc
16、ore3() STUi.getsum() STUi.getaverage() STUi.getpm()endl;system(pause);int function()int a;system(cls);cout*菜单选项*endl; /以下14行为主界面cout1-输入学生资料 2-显示学生资料 endl;cout3-删除学生资料 4-修改学生资料 endl; cout5-查询学生资料 6-统计学生资料 endl;cout7-保存学生资料 0-退出系统 endl;cout*endl; do cout 请选择你要进行的操作序号:a; while (a7|a0);return a;bool In
17、sert(Student *STU,int &len)string name,sex,num;int age;float score4;coutname;coutnum;coutsex;coutage;coutscore0score1score2score3;STUlen.insert(name,num,sex,age,score);len+;return true;void del(Student *STU,int &len)if(len=0) cerr没有数据!;system(pause);system(cls);return;system(cls);char ch;print(STU,l
18、en);int i,j;string num;docoutnum;for(i=0;ilen;i+)if(STUi.getnum()=num) for(j=i;jlen-1;j+)STUj=STUj+1;len-;sort_paim(STU,len);cout删除成功!n删除后的信息为:n;print(STU,len);system(cls);return ;coutch;if(ch=N|ch=n) return;while(1);return;void search(Student *STU,int len)if(len=0) cerr没有数据!;system(pause);system(cl
19、s);return;system(cls);char ch;int i;string num;docoutnum;for(i=0;ilen;i+)if(STUi.getnum()=num) cout 学号 姓名 性别 年龄 外语 高数 C语言 马哲 总分 平均分 名次endl;coutSTUi.getnum() STUi.getname() STUi.getsex() STUi.getage() STUi.getscore0() STUi.getscore1() STUi.getscore2() STUi.getscore3() STUi.getsum() STUi.getaverage()
20、STUi.getpm()endl;system(pause);return;coutch;if(ch=N|ch=n) return;while(1);return;void modify(Student *STU,int len)if(len=0) cerr没有数据!;system(pause);system(cls);return;system(cls);char ch;print(STU,len);int i;float sc4;string num;docoutnum;for(i=0;ilen;i+)if(STUi.getnum()=num) cout 学号 姓名 性别 年龄 外语 高数
21、 C语言 马哲 总分 平均分 名次endl;coutSTUi.getnum() STUi.getname() STUi.getsex() STUi.getage() STUi.getscore0() STUi.getscore1() STUi.getscore2() STUi.getscore3() STUi.getsum() STUi.getaverage() STUi.getpm()endl;coutsc0sc1sc2sc3;STUi.insert(STUi.getname(),STUi.getnum(),STUi.getsex(),STUi.getage(),sc);cout修改成功!;
22、sort_paim(STU,len);system(pause);system(cls);return;coutch;if(ch=N|ch=n) return;while(1);return;void creat(Student *STU,int &len)char ch;do Insert(STU,len);coutch; while (ch=y|ch=Y);sort_paim(STU,len);cout输入完成!;system(pause);system(cls);void save(Student *STU,int len)if(len=0) cerr没有数据!;system(pause
23、);system(cls);return;coutfilename;ofstream fout(filename);fout 学号 姓名 性别 年龄 外语 高数 C语言 马哲 总分 平均分 名次endl;for(int i=0;ilen;i+)foutSTUi.getnum() STUi.getname() STUi.getsex() STUi.getage() STUi.getscore0() STUi.getscore1() STUi.getscore2() STUi.getscore3() STUi.getsum() STUi.getaverage() STUi.getpm()endl;
24、fout.close();cout保存成功!;system(pause);system(cls);void Statistics(Student *STU,int len)if(len=0) cerr没有数据!;system(pause);system(cls);return;int i;int Excellent4=0;int Good4=0;int Pass4=0;int Fail4=0;float score4=0.0;string str=外语,高数, C语言,马哲;for (i=0;ilen;i+)score0+=STUi.getscore0();score1+=STUi.getsc
25、ore1();score2+=STUi.getscore2();score3+=STUi.getscore3();switch(int(STUi.getscore0()/10)case 10:;case 9: Excellent0+;break;case 8:case 7:Good0+;break;case 6:Pass0+;break;default:Fail0+;switch(int(STUi.getscore1()/10)case 10:;case 9: Excellent1+;break;case 8:case 7:Good1+;break;case 6:Pass1+;break;de
26、fault:Fail1+;switch(int(STUi.getscore2()/10)case 10:;case 9: Excellent2+;break;case 8:case 7:Good2+;break;case 6:Pass2+;break;default:Fail2+;switch(int(STUi.getscore3()/10)case 10:;case 9: Excellent3+;break;case 8:case 7:Good3+;break;case 6:Pass3+;break;default:Fail3+;cout各科目总平均分:n;coutscore0/len sc
27、ore1/len score2/len score3/lenendl;cout各科目分段统计情况n;for(i=0;i4;i+)coutstri 100*Excellenti/len% 100*Goodi/len% 100*Passi/len% 100*Faili/len% endl;system(pause);system(cls);void exit()system(cls);coutendl;coutendl;coutendl;couttt* endl tt 成绩记录簿系统 endl tt endl tt 谢谢使用本系统! 欢迎再次使用! endl tt* endl;int main()
28、system(color 3b);wellcome();Student STUMAXSIZE;/班级成员列表int people=0;/人数int flag=1;doflag=function();switch(flag)case 1:creat(STU,people);break;case 2:print(STU,people);break;case 3:del(STU,people);break;case 4:modify(STU,people);break;case 5:search(STU,people);break;case 6:Statistics(STU,people);break;case 7:save(STU,people);break;case 0:exit();break;default: flag=0;while(flag);return 0; 文档来源网络,版权归原作者。如有侵权,请告知,我看到会立刻处理。23
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922