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

上传人:r****d 文档编号:95382689 上传时间:2022-05-24 格式:DOC 页数:24 大小:257.50KB
返回 下载 相关 举报
运动会分数统计系统 课程设计_第1页
第1页 / 共24页
运动会分数统计系统 课程设计_第2页
第2页 / 共24页
运动会分数统计系统 课程设计_第3页
第3页 / 共24页
点击查看更多>>
资源描述
*实践教学* 兰州理工大学计算机与通信学院2021年秋季学期面向对象课程设计题 目:运动会分数统计系统 专业班级:计算机科学与技术3班姓 名: 董 强 军学 号: 07240309 指导教师: 刘 嘉 成 绩:_ 目 录序 言2摘 要3第一章 问题描述4第二章 需求分析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设计总结15参考文献15致谢16附录:源代码 17序 言近年来,在计算机软件业,面向对象程序设计的思想已经被越来越多的软件设计人员所接受。不仅因为它是一种最先进的,新颖的计算机程序设计思想,最主要的是这种新的思想更接近人的思维活动,人们利用这种思想进行程序设计时,可以很大程度地提高编程能力,减少软件维护的开销。面向对象程序设计方法是通过增加软件的可扩充性和可重用性来提高程序员的编程能力。随着计算机在我国广泛而深入的应用,在分析和开发计算机系统软件和应用软件的过程中,迫切需要掌握各种数据结构的描述方法以及相应的处理算法。因此面向对象程序设计知识是计算机相关科学的学生和从事计算机应用的技术人员必备的专业根底知识。我们也可以认为:对象+消息=程序。摘 要 本文详细介绍了运动会分数统计系统程序的设计与实现,该程序具有运动会成绩的输入,统计与输出等功能。实际设计过程中,通过对类的使用,加深我们面向对象编程的思想,有助于的以后的学习。在课程设计中,程序设计语言采用Visual C+,程序运行平台为Windows XP。对于获得名次的同学在存储其成绩的时候采用了链表的结构,有利于数据的存储与查找。程序通过调试运行,现了最初的设计目标,并且经过适当完善后,在实际中可以解决更多的问题。关键词 运动会分数统计 程序设计 C+ 第一章 问题描述本课程设计主要解决在运动会上,将各个比赛工程所有获得名次的同学的成绩输入,成绩查询,成绩修改,成绩删除,以及成绩输出。 该程序用于运动会上,涉及到比赛工程成绩的录入,某个学校在某个工程中获得成绩的查询,某个学校在某个运动工程中获得的成绩的修改,某个学校在某个运动工程中获得的成绩的删除,以及某个学校所有获得成绩的得分报表以及团体成绩的得分报表。其中比赛成绩的录入可以按照运动工程举行的次序输入,也可以输入自己指定的运动工程的成绩;自己扩展的功能是“某个学校在某个工程中获得成绩的查询,某个学校在某个运动工程中获得的成绩的修改,某个学校在某个运动工程中获得的成绩的删除三项,这三项都要求输入学校以及运动工程编号,通过这两项作为参数具体的函数可以查询、修改成绩或者是删除某项成绩记录,进而影响到最后得分报表的输出。 第二章 需求分析本课程设计主要解决在运动会上,将各个比赛工程所有获得名次的同学的成绩输入,成绩查询,成绩修改,成绩删除,以及成绩输出。211 开发语言 本课程涉及主要采用了C+。C+语言代表着对以往语言之精华的开展和提炼,既支持面向对象的程序设计,也支持结构化的程序设计。它修补了C语言中的一些漏洞,提供更好的类型检查和编译时的分析,提供了异常处理机制,简化了程序的出错处理,利用throw、try和catch关键字,提高了程序的可靠性和可读性。 函数重载允许相同的函数名具有不同参数表,系统根据参数的个数和类型匹配相应的函数。提供了模板机制。模板包括类模板和函数模板两种,它们将数据类型作为参数。212 运行环境 。Visual C+(简称VC)是Microsoft公司推出的目前使用极为广泛的基于Windows平台的C+可视化开发环境。 “可视的资源编辑器与MFC类以及应用程序向导,为快速高效地开发出功能强大的Windows应用程序提供了极大的方便。利用进行Internet、数据库及多媒体等多方面的程序开发也很容易。2.2 建立对象模型将各个比赛工程所有获得名次的同学的成绩输入,成绩查询,成绩修改,成绩删除,以及成绩输出封装为一个类,通过函数调用将这些对象连接起来。2.3 建立功能模型1输入男女参赛工程数及工程编号,工程名次、 得分,参赛学校、运发动编号、性别;2产生各学校的成绩单,内容包括各校所取得的每项成绩的工程号、名次、姓名;3产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团 体总分;4要求系统能实现查询、排序、删除、修改功能。第三章 概要设计3.1 系统设计 系统分析 该程序先采用了一个spotmeeting类成员void menu()中的switch语句来控制要执行操作的编号,用户可以有多种选择,根据不同的需要选择不同的操作。其中具体的操作主要采用的是一个链表的结构,涉及到了链表的插入,链表的查找,以及链表的删除等知识点。链表的插入解决了各个工程中获得名次的同学的成绩的录入问题,链表的查找解决了运动工程成绩的查询,以及后面的成绩的输出、删除都要用到链表的查找,查找时先将头结点的地址赋给查找函数,根据查找的条件依次与每个结点中相应的比拟,假设相等那么输出所需要的信息,否那么返回“查找的元素不存在信息。而成绩的删除,先查找到其所在的结点,然后将该结点前后结点相连,再删除该结点;成绩的修改要先查找到其所在的结点,然后再重新录入数据;至于学校所获得的各项成绩的输出,将该校所在的头结点的地址赋给控制输出的函数,利用指针的移动依次将各项成绩输出,而团体成绩的输出,先要根据运动工程编号来确定是男生还是女生工程,然后再依次累加,分别得到男女生的团体得分,最后将两者相加,得到学校的团体得分。 系统功能要求如下:1输入男、女参赛工程数及工程编号,工程名次、得分,参赛学校编号、运发动编号、性别;2产生各学校的成绩单,内容包括各校所取得的每项成绩的工程号、名次(成绩)、姓名;3产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。4要求系统能实现查询、排序、删除、修改功能。 系统设计思想 面向对象程序设计方法是通过增加软件的可扩充性和可重用性来提高程序员的编程能力的。面向对象程序的根本元素是对象面向对象的主要结构特点是:第一,程序一般由类的定义和类的使用两局部组成,在主程序中定义各对象并规定它们之间传递消息的规律;第二,程序间的一切操作都是通过向对象发送消息来实现的,对象接收到消息后,启动有关方法完成相应的操作;第三,类由继承关系产生相互间的联系。一个程序中涉及到的类,可以由程序设计者自己定义,也可以使用现成的类。尽量使用现成的类,是面向对象程序设计范型所倡导的程序设计风格。3.2 系统类层次及结构图12345 67输入运动会的一些根本信息参赛学校数,男女的工程数开始列出操作目录,选择要操作的编号输入修改查 询删 除 输 出 各 个 项目输 体出 成学 绩校团退出程序列出操作目录选择要操作的编号结束 图 3.1 系统流程图用一个dowhile循环语句执行完标号为16的某个分支之后,重新回到操作目录,选择要进行的操作,直到选择标号为7的分支退出程序。sportmeeting类studentlist类Student类的继承图 第四章 详细设计4.1 类与对象的设计该程序先采用了一个嵌套在dowhile循环语句中的switch语句来控制要执行操作的编号,用户可以有多种选择,根据不同的需要选择不同的操作。其中具体的操作主要采用的是一个链表的结构,涉及到了链表的插入,链表的查找,以及链表的删除等知识点。链表的插入解决了各个工程中获得名次的同学的成绩的录入问题,具体为:为每个学校建立一个头结点,假设该学校有同学取得名次,建立一个新的结点来存储该同学的信息,并将其插到该学校所在链表的最后一个结点后面。链表的查找解决了运动工程成绩的查询,以及后面的成绩的输出、删除都要用到链表的查找,查找时先将头结点的地址赋给查找函数,根据查找的条件依次与每个结点中相应的比拟,假设相等那么输出所需要的信息,否那么返回“查找的元素不存在信息。而成绩的删除,先查找到其所在的结点,然后将该结点前后结点相连,再删除该结点;成绩的修改要先查找到其所在的结点,然后再重新录入数据;至于学校所获得的各项成绩的输出,将该校所在的头结点的地址赋给控制输出的函数,利用指针的移动依次将各项成绩输出,而团体成绩的输出,先要根据运动工程编号来确定是男生还是女生工程,然后再依次累加,分别得到男女生的团体得分,最后将两者相加,得到学校的团体得分。 类属性的详细设计类的属性包括静态属性和动态属性。该程序用于运动会上,其中类的静态属性包括:运动工程的编号,参加比赛的学校总数,涉及到的动态属性包括:比赛工程成绩的录入,某个学校在某个工程中获得成绩的查询,某个学校在某个运动工程中获得的成绩的修改,某个学校在某个运动工程中获得的成绩的删除,以及某个学校所有获得成绩的得分报表以及团体成绩的得分报表。其中比赛成绩的录入可以按照运动工程举行的次序输入,也可以输入自己指定的运动工程的成绩;自己扩展的功能是“某个学校在某个工程中获得成绩的查询,某个学校在某个运动工程中获得的成绩的修改,某个学校在某个运动工程中获得的成绩的删除三项,这三项都要求输入学校以及运动工程编号,通过这两项作为参数具体的函数可以查询、修改成绩或者是删除某项成绩记录,进而影响到最后得分报表的输出。 sportmeeting类studentlist类Student 图4类的继承图第五章 测试与维护运行界面一:进入系统,按要求输入各工程数级参赛校数,否那么,将会显示出错,如下列图所示。 图6.1 图6.2二:进入主界面,如下列图所示。 图6.3三:按要求输入前三名同学的成绩,如下列图所示。 图6.4四:查询某个工程,如下列图所示。 图6.5 图6.6五:输出某个工程的成绩,如下列图所示。 图6.7六:删除某个工程并再次进行验证是否删除,如下列图所示。 图6.8 图6.9七:修改某个工程,如下列图所示。 图6.10八:退出系统界面,如下列图所示 图6.11 设计总结本次课程设计,使我对课程设计的设计方法、步骤、思路、有一定的了解与认识。它相当于实际设计工作的模拟。在课程设计过程中,根本能按照规定的程序进行,先针对表达式算法为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型;收集、调查有关资料,然后进入草案阶段,其间与指导教师进行几次方案的讨论、修改,再讨论、再修改,最后定案。通过此次课程设计,我了解了编写应用软件的一般步骤,获得了很多珍贵的经验。特别是怎么样通过理论与实践相结合,把书本上的内容应用到我们做的程序上去。怎样使各个子模块实施其的详细功能,特别是各个子模块之间的接口,一定要相当清晰,到达相互协调的作用其次,我熟悉了所学的各种知识。学会了很多关于程序设计的经验和技巧,明白了程序的使用性和通用性是程序生存周期长短的关键,学会了调试程序的一般方法。重要的是,通过这次设计,逐步我具备了走向程序员的根本素质。知道应如何在困难重重中一步一步细心的发现问题,解决问题。并深刻体会到了团体合作精神的重要性,知道了在软件设计中对界面和功能如何平衡,如何到达相对的完美。参考文献1陈维兴,林小茶.c+面向对象程序设计教程. 北京: 清华大学出版社,1996.2004.2张国峰. C+程序设计实用教程. 北京: 清华大学出版社,1996. 3张松梅. C+语言教程. 电子科技大学出版社,1993. 4阎龙. C程序员的C+指南. 北京航空航天大学出版社,1992.5王博. 面向对象的建模、设计技术与方法. 北京希望电脑公司,1990. 6汪成为. 面向对象分析、设计及应用. 国防工业出版社,1992. 7江明德. 面向对象程序设计. 电子工业出版社,1993. 8吕凤翥语言程序设计电子工业出版社,2001. 致谢 首先感谢我的指导老师刘嘉老师,他在我的课程设计过程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在不熟悉的领域中仍能迅速掌握新的技术。在这两周的C+课程设计中,对课本中所学的各种知识进一步理解和掌握,学会了如何把学到的知识用于解决实际问题,锻炼了自己动手的能力。一个人要完成所有的工作是非常困难和耗时的。在以后的学习中我会更加注意各个方面的能力的协调开展。在课程设计时遇到了很多的问题,在老师的帮助,和对各种资料的查阅中,将问题解决,培养了我自主动手,独立研究的能力,为今后在学习工作中能更好的开展打下了坚实的根底。我的同学在我的课程设计中也给了我很多无私的帮助和支持,在此一并表示感谢。附录:源代码#include#include#includeusing namespace std;class studentpublic: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; /学校IDint stuID; /学生IDchar sex; /性别string name; /学生姓名;student: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()coutpos score schID stuID sex nameendl;class studentlistpublic:studentlist();studentlist();void print();void add(int it,char c);void mod(int it,char c);student list3;studentlist:studentlist()studentlist:studentlist()void studentlist:mod(int it,char c)cout这是你将要修改的信息n;print();cout你输入n;add(it,c);void studentlist:add(int it, char c)int i;cout分别输入1,2,3的信息n;for (i=0; i 3; i+)coutlisti.scorelisti.schIDlisti.stuIDlisti.name;listi.pos=i+1;listi.sex=c;void studentlist:print()cout分别输出1,2 ,3名次的信息n;cout成绩 学校ID 学生ID 学生性别 学生姓名n;int i;for (i=0; i 3; i+)coutlisti.score listi.schID listi.stuID listi.sex listi.nameendl;/用一个循环和switch语句控制要执行的操作docout*运动会成绩管理系统*endl;couttt 1、输入某个工程的成绩endl;coutendl;couttt 2、修改某个工程的成绩endl;coutendl;couttt 3、查询某个学校参加某个工程的成绩endl;coutendl;couttt 4、删除某个错误的记录endl;coutendl;couttt 5、输出某个学校的成绩单及得分报表endl;coutendl;couttt 6、输出学校的团体得分报表endl;coutendl;couttt 7、退出该程序endlch;switch(ch)case 1:insert();break;case 2:find();break;case 3:mod();break;case 4:del();break;case 5:coutz;printone(z);break;case 6:printall();break;default:break;while(ch != 7);void sportmeeting:insert()int it;coutit;coutc;if (c = w)wlistit.add(it,c);wflagsit=true;elsemlistit.add(it,c);mflagsit=true;void sportmeeting:del()int it;coutit;char c;coutc;if (c = w)wflagsit=false;elsemflagsit=false;void sportmeeting:find()int it;coutit;char c;coutc;if (c = w)if (wflagsit)wlistit.print();elsecout没有该信息n;elseif (mflagsit)mlistit.print();elsecout没有该信息n;void sportmeeting:mod()int it;coutit;char c;coutc;if (c = w)if (wflagsit)wlistit.mod(it,c);elsecout没有该信息n;elseif (mflagsit)mlistit.mod(it ,c);cout没有该信息n;void sportmeeting:check()int i, j;int n;for (i=0; i m; i+)if (mflagsi)for (j=0; j 3; j+)n=mlisti.listi.schID;arrn-1.mvj.push_back(i+1);arrn-1.sumscore+=(j+1);arrn-1.mscore+=(j+1);for (i=0; i m; i+)if (wflagsi)for (j=0; j 3; j+)n=wlisti.listi.schID;arrn-1.wvj.push_back(i+1);arrn-1.sumscore+=(j+1);arrn-1.wscore+=(j+1);void sportmeeting:printall()if(!flag)check();flag=true;int i;cout学校ID 学校总分 男子总分 女子总分n;for (i=0; i n; i+)couti+1 arrn.sumscore arrn.mscore arrn.wscoreendl;void sportmeeting:printone(int n)if (!flag)check();flag=true;int i,j,k, f;cout男子局部n;for (i=0; i3; i+)cout下面是第i+1名n;k=arrn-1.mvi.size();for(j=0; jk; j+)f=arrn-1.mvi.at(j);mlistf-1.listi.print();cout女子局部n;for (i=0; i3; i+)cout下面是第i+1名n;k=arrn-1.wvi.size();for(j=0; jk; j+)f=arrn-1.wvi.at(j);wlistf-1.listi.print();cout总分是arrn.sumscoreendl;int main()int n,m, w;coutn;coutm;coutw;sportmeeting sport(n,m,w);sport.menu();return 0;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


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

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


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