运动会分数统计系统 课程设计

上传人:r****d 文档编号:95382689 上传时间:2022-05-24 格式:DOC 页数:24 大小:257.50KB
收藏 版权申诉 举报 下载
运动会分数统计系统 课程设计_第1页
第1页 / 共24页
运动会分数统计系统 课程设计_第2页
第2页 / 共24页
运动会分数统计系统 课程设计_第3页
第3页 / 共24页
资源描述:

《运动会分数统计系统 课程设计》由会员分享,可在线阅读,更多相关《运动会分数统计系统 课程设计(24页珍藏版)》请在装配图网上搜索。

1、***************** 实践教学 ****************** 兰州理工大学 计算机与通信学院 2021年秋季学期 面向对象课程设计 题 目:运动会分数统计系统 专业班级:计算机科学与技术3班 姓 名: 董 强 军 学 号: 07240309 指导教师: 刘 嘉 成 绩:______________ 目 录 序 言 2 摘 要 3 第一章 问题描述 4 第二章 需求

2、分析 5 2.1 需求陈述 5 2.2 建立对象模型 5 2.3 建立功能模型 5 第三章 概要设计 6 3.1 系统设计 6 3.1.1 系统分析 6 3.1.2 系统设计思想 6 3.2 系统类层次及结构图 7 第四章 详细设计 9 4.1 类与对象的设计 9 4.1.1 类属性的详细设计 9 4.1.2 类行为的详细设计 9 4.2 类的详细继承关系 10 第五章 测试与维护 11 运行界面 11 设计总

3、结 15 参考文献 15 致谢 16 附录:源代码……………………………………………………………………… 17 序 言 近年来,在计算机软件业,面向对象程序设计的思想已经被越来越多的软件设计人员所接受。不仅因为它是一种最先进的,新颖的计算机程序设计思想,最主要的是这种新的思想更接近人的思维活动,人们利用这种思想进行程序设计时,可以很大程度地提高编程能力,减少软件维护的开销。面向对象程序设计方法是通过增加软件的可扩充性和可重用性来提高程序员的编程能力。 随着计算机在我国广泛而深入的应用,在分析和开发计算机系统软件和应用软件的过程中,迫切需要掌握各种数据结构的描述方法以

4、及相应的处理算法。因此面向对象程序设计知识是计算机相关科学的学生和从事计算机应用的技术人员必备的专业根底知识。我们也可以认为:对象+消息=程序。 摘 要 本文详细介绍了运动会分数统计系统程序的设计与实现,该程序具有运动会成绩的输入,统计与输出等功能。实际设计过程中,通过对类的使用,加深我们面向对象编程的思想,有助于的以后的学习。在课程设计中,程序设计语言采用Visual C++,程序运行平台为Windows XP。对于获得名次的同学在存储其成绩的时候采用了链表的结构,有利于数据的存储与查找。程序通过调试运行,现了最初的设计目标,并且经过适当完善后,在实际中可以解决更多的问题。

5、 关键词 运动会分数统计 程序设计 C++ 第一章 问题描述 本课程设计主要解决在运动会上,将各个比赛工程所有获得名次的同学的成绩输入,成绩查询,成绩修改,成绩删除,以及成绩输出。 该程序用于运动会上,涉及到比赛工程成绩的录入,某个学校在某个工程中获得成绩的查询,某个学校在某个运动工程中获得的成绩的修改,某个学校在某个运动工程中获得的成绩的删除,以及某个学校所有获得成绩的得分报表以及团体成绩的

6、得分报表。其中比赛成绩的录入可以按照运动工程举行的次序输入,也可以输入自己指定的运动工程的成绩;自己扩展的功能是“某个学校在某个工程中获得成绩的查询,某个学校在某个运动工程中获得的成绩的修改,某个学校在某个运动工程中获得的成绩的删除〞三项,这三项都要求输入学校以及运动工程编号,通过这两项作为参数具体的函数可以查询、修改成绩或者是删除某项成绩记录,进而影响到最后得分报表的输出。 第二章 需求分析 本课程设计主要解决在运动会上,将各个比赛工程所有获得名次的同学的成绩输入,成绩查询

7、,成绩修改,成绩删除,以及成绩输出。 2.1.1 开发语言 本课程涉及主要采用了C++。C++语言代表着对以往语言之精华的开展和提炼,既支持面向对象的程序设计,也支持结构化的程序设计。它修补了C语言中的一些漏洞,提供更好的类型检查和编译时的分析,提供了异常处理机制,简化了程序的出错处理,利用throw、try和catch关键字,提高了程序的可靠性和可读性。 函数重载允许相同的函数名具有不同参数表,系统根据参数的个数和类型匹配相应的函数。提供了模板机制。模板包括类模板和函数模板两种,它们将数据类型作为参数。 2.1.2 运行环境 。Visual C++(简称VC)是Mi

8、crosoft公司推出的目前使用极为广泛的基于Windows平台的C++可视化开发环境。 “可视〞的资源编辑器与MFC类以及应用程序向导,为快速高效地开发出功能强大的Windows应用程序提供了极大的方便。利用进行Internet、数据库及多媒体等多方面的程序开发也很容易。 2.2 建立对象模型 将各个比赛工程所有获得名次的同学的成绩输入,成绩查询,成绩修改,成绩删除,以及成绩输出封装为一个类,通过函数调用将这些对象连接起来。 2.3 建立功能模型 1〕输入男女参赛工程数及工程编号,工程名次、 得分,参赛学校、运发动编号、性别; 2〕产生各学校的成绩单,内容包括各校所取得的每项成绩的

9、工程号、名次、姓名; 3〕产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团 体总分; 4〕要求系统能实现查询、排序、删除、修改功能。 第三章 概要设计 3.1 系统设计 系统分析 该程序先采用了一个spotmeeting类成员void menu()中的switch语句来控制要执行操作的编号,用户可以有多种选择,根据不同的需要选择不同的操作。 其中具体的操作主要采用的是一个链表的结构,涉及到了链表的插入,链表的查找,以及链表的删除等知识点。链表的插入解决了各个工程中获得名次的同学的成绩的录入问题,链表的查找解决了运动工程成绩的查询,以及后面的成绩

10、的输出、删除都要用到链表的查找,查找时先将头结点的地址赋给查找函数,根据查找的条件依次与每个结点中相应的比拟,假设相等那么输出所需要的信息,否那么返回“查找的元素不存在〞信息。而成绩的删除,先查找到其所在的结点,然后将该结点前后结点相连,再删除该结点;成绩的修改要先查找到其所在的结点,然后再重新录入数据;至于学校所获得的各项成绩的输出,将该校所在的头结点的地址赋给控制输出的函数,利用指针的移动依次将各项成绩输出,而团体成绩的输出,先要根据运动工程编号来确定是男生还是女生工程,然后再依次累加,分别得到男女生的团体得分,最后将两者相加,得到学校的团体得分。

11、 系统功能要求如下: 1〕输入男、女参赛工程数及工程编号,工程名次、得分,参赛学校编号、运发动编号、性别; 2〕产生各学校的成绩单,内容包括各校所取得的每项成绩的工程号、名次(成绩)、姓名; 3〕产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。 4〕要求系统能实现查询、排序、删除、修改功能。 系统设计思想 面向对象程序设计方法是通过增加软件的可扩充性和可重用性来提高程序员的编程能力的。面向对象程序的根本元素是对象面向对象的主要结构特点是:第一,程序一般由类的定义和类的使用两局部组成,在主程序中定义各对象并规定它们之间传递消息的规律;第二,

12、程序间的一切操作都是通过向对象发送消息来实现的,对象接收到消息后,启动有关方法完成相应的操作;第三,类由继承关系产生相互间的联系。一个程序中涉及到的类,可以由程序设计者自己定义,也可以使用现成的类。尽量使用现成的类,是面向对象程序设计范型所倡导的程序设计风格。 3.2 系统类层次及结构图 1 2 3 4 5 6 7 输入运动会的一些根本信息 〔参赛学校数,男女的工程数〕 开始 列出操作目录,选择要操作的编号 输 入 修 改 查 询 删 除 输 出 各 个 项 目 输 体 出

13、成 学 绩 校 团 退 出 程 序 列出操作目录 选择要操作的编号 结束 图 3.1 系统流程图 用一个do—while循环语句执行完标号为1—6的某个分支之后,重新回到操作目录,选择要进行的操作,直到选择标号为7的分支退出程序。 sportmeeting 类studentlist 类St

14、udent 类的继承图 第四章 详细设计 4.1 类与对象的设计 该程序先采用了一个嵌套在do—while循环语句中的switch语句来控制要执行操作的编号,用户可以有多种选择,根据不同的需要选择不同的操作。 其中具体的操作主要采用的是一个链表的结构,涉及到了链表的插入,链表的查找,以及链表的删除等知识点。链表的插入解决了各个工程中获得名次的同学的成绩的录入问题,具体为:为每个学校建立一个头结点,假设该学校有同学取得名次,建立一个新的结点来存储该同学的信息,并将其插到该学校所在链表的最后一个结点后面。链表的查找解决了运动工

15、程成绩的查询,以及后面的成绩的输出、删除都要用到链表的查找,查找时先将头结点的地址赋给查找函数,根据查找的条件依次与每个结点中相应的比拟,假设相等那么输出所需要的信息,否那么返回“查找的元素不存在〞信息。而成绩的删除,先查找到其所在的结点,然后将该结点前后结点相连,再删除该结点;成绩的修改要先查找到其所在的结点,然后再重新录入数据;至于学校所获得的各项成绩的输出,将该校所在的头结点的地址赋给控制输出的函数,利用指针的移动依次将各项成绩输出,而团体成绩的输出,先要根据运动工程编号来确定是男生还是女生工程,然后再依次累加,分别得到男女生的团体得分,最后将两者相加,得到学校的团体得分。 类

16、属性的详细设计 类的属性包括静态属性和动态属性。该程序用于运动会上,其中类的静态属性包括:运动工程的编号,参加比赛的学校总数,涉及到的动态属性包括:比赛工程成绩的录入,某个学校在某个工程中获得成绩的查询,某个学校在某个运动工程中获得的成绩的修改,某个学校在某个运动工程中获得的成绩的删除,以及某个学校所有获得成绩的得分报表以及团体成绩的得分报表。其中比赛成绩的录入可以按照运动工程举行的次序输入,也可以输入自己指定的运动工程的成绩;自己扩展的功能是“某个学校在某个工程中获得成绩的查询,某个学校在某个运动工程中获得的成绩的修改,某个学校在某个运动工程中获得的成绩的删除〞三项,这三项都要求输入学校以

17、及运动工程编号,通过这两项作为参数具体的函数可以查询、修改成绩或者是删除某项成绩记录,进而影响到最后得分报表的输出。 sportmeeting 类studentlist 类Student 图4类的继承图 第五章 测试与维护 运行界面 一:进入系统,按要求输入各工程数级参赛校数,否那么,将会显示出错,如下列图所示。 〔图6.1〕

18、 〔图6.2〕 二:进入主界面,如下列图所示。 〔图6.3〕 三:按要求输入前三名同学的成绩,如下列图所示。 〔图6.4〕 四:查询某个工程,如下列图所示。 〔图6.5〕 〔图6.6〕 五:输出某个工程的成绩,如下列图所示。

19、 〔图6.7〕 六:删除某个工程并再次进行验证是否删除,如下列图所示。 〔图6.8〕 〔图6.9〕 七:修改某个工程,如下列图所示。 〔图6.10〕 八:退出系统界面,如下列图所示 〔图6.11〕 设计总结 本次课程设计,使我对课程设计的设计方法、步骤

20、、思路、有一定的了解与认识。它相当于实际设计工作的模拟。在课程设计过程中,根本能按照规定的程序进行,先针对表达式算法为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型;收集、调查有关资料,然后进入草案阶段,其间与指导教师进行几次方案的讨论、修改,再讨论、再修改,最后定案。 通过此次课程设计,我了解了编写应用软件的一般步骤,获得了很多珍贵的经验。特别是怎么样通过理论与实践相结合,把书本上的内容应用到我们做的程序上去。怎样使各个子模块实施其的详细功能,特别是各个子模块之间的接口,一定要相当清晰,到达相互协调的作用其次,我熟悉了所学的各种知识。学会了很多关于程序设计的经验和技巧,明

21、白了程序的使用性和通用性是程序生存周期长短的关键,学会了调试程序的一般方法。重要的是,通过这次设计,逐步我具备了走向程序员的根本素质。知道应如何在困难重重中一步一步细心的发现问题,解决问题。并深刻体会到了团体合作精神的重要性,知道了在软件设计中对界面和功能如何平衡,如何到达相对的完美。 参考文献 [1]陈维兴,林小茶.c++面向对象程序设计教程. 北京: 清华大学出版社,1996.2004. [2]张国峰. C++程序设计实用教程. 北京: 清华大学出版社,1996. [3]张松梅. C++语言教程. 电子科技大学出版社,1993. [4]阎龙. C程序员的C++指南

22、. 北京航空航天大学出版社,1992. [5]王博. 面向对象的建模、设计技术与方法. 北京希望电脑公司,1990. [6]汪成为. 面向对象分析、设计及应用. 国防工业出版社,1992. [7]江明德. 面向对象程序设计. 电子工业出版社,1993. [8]吕凤翥.C++语言程序设计.电子工业出版社,2001. 致谢 首先感谢我的指导老师刘嘉老师,他在我的课程设计过程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在不熟悉的领域中仍能迅速掌握新的技术。 在这两周的C++课程设计中,

23、对课本中所学的各种知识进一步理解和掌握,学会了如何把学到的知识用于解决实际问题,锻炼了自己动手的能力。 一个人要完成所有的工作是非常困难和耗时的。在以后的学习中我会更加注意各个方面的能力的协调开展。在课程设计时遇到了很多的问题,在老师的帮助,和对各种资料的查阅中,将问题解决,培养了我自主动手,独立研究的能力,为今后在学习工作中能更好的开展打下了坚实的根底。 我的同学在我的课程设计中也给了我很多无私的帮助和支持,在此一并表示感谢。 附录:源代码 #include #include

24、ing> #include using namespace std; class student { public: student(int ps=0, int sc=0, int cID=0, int sID=0, char c='\0', string nm=""); void print(); int pos; //排名 int score; //成绩 int schID; //学校ID int stuID; //学生ID char sex; //性别 string name; //学生姓名 }; studen

25、t::student(int ps,int sc, int cID, int sID, char c, string nm) :name(nm), pos(ps), score(sc), schID(cID), stuID(sID), sex(c) {} void student::print() { cout<

26、ist(); void print(); void add(int it,char c); void mod(int it,char c); student list[3]; }; studentlist::studentlist() {} studentlist::~studentlist() {} void studentlist::mod(int it,char c) { cout<<"这是你将要修改的信息\n"; print(); cout<<"你输入\n"; add(it,c); } void studentlist::add(int

27、 it, char c) { int i; cout<<"分别输入1,2,3的信息\n"; for (i=0; i < 3; i++) { cout<<"成绩 学校ID 学生ID 学生姓名\n"; cin>>list[i].score>>list[i].schID>>list[i].stuID>>list[i].name; list[i].pos=i+1; list[i].sex=c; } } void studentlist::print() { cout<<"分别输出1,2 ,3名次的信息\n"; cout<<"成绩 学校ID 学生

28、ID 学生性别 学生姓名\n"; int i; for (i=0; i < 3; i++) { cout<

29、某个工程的成绩"<

30、 cout<>ch; switch(ch) { case 1:insert(); break; case 2:find(); break; case 3:mod(); break; case 4:del(); break; case 5:cout<<"输入要查询的学校代号\n"; cin>>z; printone(z); break; case 6:printall(); break; default:break; } }while(ch != 7

31、); } void sportmeeting::insert() { int it; cout<<"输入要添加的工程\n"; cin>>it; cout<<"添加男子(m)或女子(w)\n"; char c; cin>>c; if (c == 'w') { wlist[it].add(it,c); wflags[it]=true; } else { mlist[it].add(it,c); mflags[it]=true; } } void sportmeeting::del() { int it; cout<<"输入要删除的记录的工程号

32、\n"; cin>>it; char c; cout<<"删除男子(m)或女子(w)\n"; cin>>c; if (c == 'w') { wflags[it]=false; } else { mflags[it]=false; } } void sportmeeting::find() { int it; cout<<"输入要修改的工程号\n"; cin>>it; char c; cout<<"查询男子(m)或女子(w)"; cin>>c; if (c == 'w') { if (wflags[it]) { wlist[it].pri

33、nt(); } else { cout<<"没有该信息\n"; } } else { if (mflags[it]) { mlist[it].print(); } else cout<<"没有该信息\n"; } } void sportmeeting::mod() { int it; cout<<"输入要查询的工程号\n"; cin>>it; char c; cout<<"查询男子(m)或女子(w)"; cin>>c; if (c == 'w') { if (wflags[it]) { wlist[it].mod(it,c); }

34、else { cout<<"没有该信息\n"; } } else { if (mflags[it]) { mlist[it].mod(it ,c); } cout<<"没有该信息\n"; } } void sportmeeting::check() { int i, j; int n; for (i=0; i < m; i++) { if (mflags[i]) { for (j=0; j < 3; j++) { n=mlist[i].list[i].schID; arr[n-1].mv[j].push_back(i+1); arr[n-1]

35、.sumscore+=(j+1); arr[n-1].mscore+=(j+1); } } } for (i=0; i < m; i++) { if (wflags[i]) { for (j=0; j < 3; j++) { n=wlist[i].list[i].schID; arr[n-1].wv[j].push_back(i+1); arr[n-1].sumscore+=(j+1); arr[n-1].wscore+=(j+1); } } } } void sportmeeting::printall() { if(!flag) { check

36、(); flag=true; } int i; cout<<"学校ID 学校总分 男子总分 女子总分\n"; for (i=0; i < n; i++) { cout<

37、<"男子局部\n"; for (i=0; i<3; i++) { cout<<"下面是第"<>n; cout<<"输入本次运动会男子工程的数量\n"; cin>>m; cout<<"输入本次运动会女子工程的数量\n"; cin>>w; sportmeeting sport(n,m,w); sport.menu(); return 0; }

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

相关资源

更多
正为您匹配相似的精品文档
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!