《C课设竞赛成绩管理系统报告.docx》由会员分享,可在线阅读,更多相关《C课设竞赛成绩管理系统报告.docx(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、沈 阳 工 程 学 院信 息 学 院C+程序设计课 程 设 计设计题目: 竞赛程序管理系统 系 别 计算机科学及技术系 班级 计算机 学生姓名 学 号 指导老师 职称 起止日期: 2016年12月26日起至 2016年12月30日止任 务 分 工组长姓名题目竞赛成果管理系统工程组成员个人任务描绘自我评定负责小组分工合作,整体程序的编写,并将全部的程序汇总,运行,修改。良 主要负责根据编写好的程序画出相应的流程图,最终排版好整个报告,绪论,总结等等。良沈 阳 工 程 学 院 信 息 学 院 C+程序设计 课程设计成果评定表系部: 计算机科学及技术系 班级: 计算机 学生姓名: 指 导 教 师 评
2、 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,搜集资料;能制定课程设计方案和日程支配。5432工作实力看法工作看法细致,遵守纪律,出勤状况是否良好,可以独立完成设计工作, 5432工作量按期圆满完成规定的设计任务,工作量饱满,难度相宜。5432说明书的质量说明书立论正确,阐述充分,结论严谨合理,文字通顺,技术用语精确,符号统一,编号齐全,图表完备,书写工整标准。5432指导老师评审成果加权分合计乘以12 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有确定广泛性;有综合归纳资料的实
3、力5432工作量工作量饱满,难度适中。5432说明书的质量说明书立论正确,阐述充分,结论严谨合理,文字通顺,技术用语精确,符号统一,编号齐全,图表完备,书写工整标准。5432评阅老师评审成果加权分合计乘以8分加权分合计评 阅 教 师 签 名: 年 月 日课 程 设 计 总 评 成 绩分沈 阳 工 程 学 院 信 息 学 院 C+程序设计 课程设计成果评定表系部: 计算机科学及技术系 班级: 计算机 学生姓名: 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,搜集资料;能制定课程设计方案和日程支配。5432工作实力看法工作看法细致,遵守纪律,出勤状况是
4、否良好,可以独立完成设计工作, 5432工作量按期圆满完成规定的设计任务,工作量饱满,难度相宜。5432说明书的质量说明书立论正确,阐述充分,结论严谨合理,文字通顺,技术用语精确,符号统一,编号齐全,图表完备,书写工整标准。5432指导老师评审成果加权分合计乘以12 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有确定广泛性;有综合归纳资料的实力5432工作量工作量饱满,难度适中。5432说明书的质量说明书立论正确,阐述充分,结论严谨合理,文字通顺,技术用语精确,符号统一,编号齐全,图表完备,书写工整标准。5
5、432评阅老师评审成果加权分合计乘以8分加权分合计评 阅 教 师 签 名: 年 月 日课 程 设 计 总 评 成 绩分 沈阳工程学院信息学院课程设计任务书 课程设计题目: 竞赛成果管理系统 系 别 计算机科学及技术系 班级 计算机 学生姓名 学 号 指导老师 职称 课程设计进展地点: 任 务 下 达 时 间: 2021 年 12 月 5 日起止日期: 2016年12月26日起至 2016年12月30日止系主任 2021 年 12 月 6 日批准一、课程设计的原始资料及根据查阅有关资料,进一步理解面对对象程序设计的思想,并利用MFC框架编写一个简洁的windows系统。通过本设计可以加深理解运用
6、面对对象程序设计思想开发一个系统的方法,进步分析问题、解决问题和实际动手的实力。二、课程设计主要内容及要求设计内容:设置:N-参赛学校总数,M-男子竞赛工程数,W-女子竞赛工程数;各工程名次取法有如下几种:取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1;取前3名:第1名得分 5,第2名得分 3,第3名得分2;2.用户自定义:每个工程名次取法由用户指定。3.由用户填写竞赛结果,输入各工程获奖运发动的信息。4.全部信息记录完毕后,用户可以查询各个学校的竞赛成果,生成团体总分报表,查看参赛学校信息和竞赛工程信息等。设计要求:(1)要求利用面对对象的方法以及MFC
7、框架来完成系统的设计;(2)要求在设计的过程中建立清楚的类层次,并画出类图;(3)设计功能满意要求、易于操作的友好界面;(4)界面中需有菜单、工具栏、状态栏;(5)在系统的设计中,至少要用到面对对象的一种机制:继承、多态等;(6)在完成该题目时,小组人员进展具体的任务分工,并要在报告中表达出来。三、对课程设计说明书撰写内容、格式、字数的要求1课程设计说明书是表达和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。一般不应少于3000字。2在适当位置协作相应的试验原理图、功能模块图、算法流程图等图表进展说明。
8、应做到文理通顺,内容正确完好,书写工整,装订整齐。3设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的方法以及今后的目的。4课程设计说明书手写或打印均可。手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时承受A4纸,页边距均为20mm,正文承受宋体小四号字,行间距18磅。文中大标题承受黑体小三号字,一级节标题承受黑体四号字,二级节标题承受黑体小四号字,表题及图题承受宋体五号字。5课程设计说明书装订依次为:封面、任务书、成果评定表、书目、正文、参考文献。四、设计完成后应提交成果的种类、数量、质量等方面的要求(1)完成“任务书中指定
9、的功能,运行结果正确。(2)课程设计说明书。五、时间进度支配依次阶段日期计 划 完 成 内 容备注1第1天进展设计打算,阅读资料,分析设计任务书,明确设计要求、内容和步骤2第2天需求分析3第3天概要设计,具体设计4第4天编码、调试5第5天程序辩论,撰写课程设计报告六、主要参考资料文献1 王育坚. 主编Visual C+面对对象编程教程第二版. 北京:清华高校出版2 陈维兴, 林小茶.C高级程序设计教程. 北京:清华高校出版社3 谭浩强.C程序设计教程. 北京:中国科学技术出版社4 王燕.面对对象的理论及C理论. 北京:清华高校出版社5 马石安, 魏文平. 主编Visual C+程序设计及应用教
10、程. 北京:清华高校出版社10郑莉 董渊 张瑞丰 编着. C+语言程序设计(第3版). 北京:清华高校出版社.2006摘 要本次C+课程设计的题目是竞赛成果管理,在系统的设计中,用到了类的继承,在存储设计上用到了链表存储。竞赛成果管理系统是完全根据用户须要自主输入所须要信息。系统可以实现四个功能,分别是:1、初始化设置:可以初始化参赛学校总数,M-男子竞赛工程数、名称,W-女子竞赛工程数、名称;2、用户自定义:每个工程名次、成果取法由用户指定,由用户填写竞赛结果,输入各工程获奖运发动的信息;3、成果查询:全部信息记录完毕后,用户可以查询各个学校的竞赛成果,查看参赛学校信息和竞赛工程信息等;4、
11、生成团体总分报表,查看每个学校的总分。一周的C+课程设计学习中,先要学习C+课程的目的是驾驭类的继承的方法,学习运用计算机语言编写程序,以实现所须要处理的任务。要正确处理算法及语法的关系。不应把学习重点放在语法规那么上,语法是重要的,不驾驭语法规那么就无法编写出正确的程序。确定要把重点放在解题的思路上和运用何种存储的方法,通过思索和大量的阅读,来构造一个完好的程序。关键词 类的继承,友元类,链表,数组,竞赛成果管理目 录摘 要I目 录II第一章 绪论111绪论112课程设计的目的113设计内容和要求1设计内容1设计要求114系统分析215课程设计意义2第二章 原理及运行环境321 c+语言概述
12、32.1.1 C+语言概述32.1.2 C+语言的主要特点322 根本操作3第三章 系统分析及设计931系统设计9系统总体框架9类的层次图9系统流程图10系统关键算法流程图11第四章 系统功能实现154. 1菜单函数154. 2初始化功能174. 3各工程名次取法功能184. 4输入各工程获奖运发动的信息功能204. 5查询功能204. 6生成团队报表功能214. 7查看参赛学校信息功能224. 8输出竞赛信息功能23结论25致谢26参考文献27第一章 绪论11绪论竞赛成果管理系统是竞赛管理中的一个重要内容,随着时代的进步,竞赛类型、人员数量也不断增加、分工的不断细化,对竞赛管理的要求也不断进
13、步。早期的人工方式的管理系统已不相宜现代竞赛成果管理的开展,实现竞赛成果管理的系统化、标准化、自动化,是竞赛管理管理的首选。此次课程设计的目的是以C+语言程序设计为根底,针对具有确定难度的综合性题目,进展分析、编程、调试和运行,进一步驾驭面对对象和面对过程程序设计的根本方法和编程技巧,稳固所学理论学问,使理论及理论相结合,进步分析问题、解决问题的实力。通过设计一个简洁的成果管理系统,进一步熟识C+中类的概念、类的封装、继承和多态的实现方式。理解系统开发的须要分析,类层次设计,模块分析,编码测试,模块组装及整体调试的全过程,逐步熟识程序设计的方法,并养成良好的编程习惯。12课程设计的目的 (1)
14、要求学生可以娴熟驾驭C+语言的根本学问和技能。 (2)根本驾驭面对对象程序设计的根本思路和方法。 (3)可以利用所学的根本学问和技能,解决简洁的面对对象程序设计问题。13设计内容和要求设计内容设置:N-参赛学校总数,M-男子竞赛工程数,W-女子竞赛工程数;各工程名次取法有如下几种:取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1;取前3名:第1名得分 5,第2名得分 3,第3名得分2;2.用户自定义:每个工程名次取法由用户指定。3.由用户填写竞赛结果,输入各工程获奖运发动的信息。4.全部信息记录完毕后,用户可以查询各个学校的竞赛成果,生成团体总分报表,查看参
15、赛学校信息和竞赛工程信息等。设计要求(1)要求利用面对对象的方法以及MFC框架来完成系统的设计;(2)要求在设计的过程中建立清楚的类层次,并画出类图;(3)设计功能满意要求、易于操作的友好界面;(4)界面中需有菜单、工具栏、状态栏;(5)在系统的设计中,至少要用到面对对象的一种机制:继承、多态等;(6)在完成该题目时,小组人员进展具体的任务分工,并要在报告中表达出来。14系统分析根据问题描绘和要求,系统要求可以实现初始化设置:初始化N-参赛学校总数,M-男子竞赛工程数,W-女子竞赛工程数;实现用户自定义:每个工程名次取法由用户指定;由用户填写竞赛结果,输入各工程获奖运发动的信息;全部信息记录完
16、毕后,用户可以查询各个学校的竞赛成果,生成团体总分报表,查看参赛学校信息和竞赛工程信息等。本课设中,对不同的对象实行不同的储存构造,比照赛工程实行链表式构造,对于参赛运发动实行一个构造就可以了。本程序中主要用到链表的一些根本操作,将竞赛工程信息,运发动信息,赛事信息都构造成链表。具体功能通过主函数分别调用各函数实现。参考本课设功能要求,本程序分为六个模块:主函数,全部学校信息类模块sportmen,各个学校信息类模块school,各运开工程类sport,初始化信息类compete,提示模块。主函数模块主要通过for循环来限制菜单,并通过各种类定义其对象。全部学校信息类模块包括:public i
17、nput输入学校信息学校名称、编号、display输出函数运发动名字、运发动的学校编码、运开工程名称、得分、private私有成员number、name40、num-school、sportname、num、score。各个学校信息类模块包括:public input输入各学校名称、display-1函数输出学校信息,编号及名称、display函数主要输出学校名字编号及分数、private私有成员name40、num-school、score。运开工程类模块包括:public input函数是各工程名次的取法函数取前5名、前3名、自定义、display是输出一个工程的全部信息函数名字、编号、运
18、开工程、得分、input-sportmen是输出获奖运发动信息的函数,private int *p;/运动名次得分 Sportmen *head;/运发动数组地址 Sport *next;/运开工程指针链表。 初始化信息类包括:初始化N-参赛学校总数,M-男子竞赛工程数,W-女子竞赛工程数。综合考虑系统具有下面5项功能模块:查询个学校信息、生成团队报表、输出各参赛学校的信息、输出竞赛工程信息、退出。15课程设计意义通过设计此系统,娴熟驾驭C+语言的根本学问和技能,根本驾驭面对对象程序开发的根本思路和方法,培育学生的动手操作实力,进步自主学艺实力,可以利用所学的根本学问和技能,进展简洁应用程序设
19、计。加深理解利用程序设计思想开发一个系统的整个流程,进步分析问题、解决问题和实际动手的实力。第二章 原理及运行环境21 c+语言概述2. C+语言概述 C+语言即保存了C语言的有效性、灵敏性、便于移植等全部精华和特点,有添加了面对对象编程的支持,具有强大的编程功能,可便利地构造出模拟现实问题的实体和操作;编写出的程序具有构造清楚、易于扩大等优良特性,相宜及各种应用软件、系统软件的程序设计。用C+编写的程序可读性好,生成的代码质量高,运行效率仅比汇编语言慢10%20%。2. C+语言的主要特点C+语言是C语言的超集。它即保持了C语言的简洁、高效和接近汇编语言等特点,又抑制了C语言的缺点,其编译系
20、统能检查更多的语法错误,因此,C+比C语言更平安。C+保持了及C语言的兼容。绝大多数C语言程序可以不经修改干脆在C+环境中运行,用C语言编写的众多库函数可以用于C+程序中。C+程序在可重用性、可扩大性、可维护性和牢靠性等方面都较C语言得到了进步,使其更相宜开发大中型的系统软件和应用程序。C+设计成静态类型、和C同样高效且可移植的多用路程序设计语言。22 根本操作(1)新建一个工程 首先鼠标左键单击“文件菜单,选择“新建单击鼠标左键,系统将弹出一个窗口,单击“工程选项,将得到图2.1所示窗口。请在“工程名称栏填入工程名,然后鼠标左键单击左边窗口倒数第三项“Win32 Console Applic
21、ation,使该项变蓝,然后鼠标左键单击“确定按钮。得到图2.2所示窗口,选择“一个空工程,单击“完成得到图2.3。再单击“确定得到图2.4所示的窗口。图2.2 选择限制台程序图2.3 创立新工程图2.4 Visual C+ 6.0 的工作环境(2)新建一个源文件 要新建一个C程序源文件可以选择“文件菜单的“新建选项,在弹出的窗口中选择“文件选项单击,得到如图2.5所示的窗口,其“位置栏中的内容是默认的,在“添加到工程前打勾,“工程名也是默认的。图2.5 新建源文件 (3)编辑程序编辑环境如图2.6所示。把程序代码输入计算机,如图2.7所示。图2.6 编辑区域图2.7 编辑程序(4) 编译、连
22、接、运行、调试一个程序 当源文件编辑完成后,就可以编译、连接和运行程序了。方法如下:1.单击“组建菜单的“编译选项,将完成编译工作得到*.cpp目的文件(文件名就是源文件的名字),编译结果将在窗口最下面的输出窗口显示。可根据窗口的提示修改源文件以改正错误。2.单击“组建菜单的“组建选项,完成连接工作得到可执行文件文件名是工程名,连接的结果也将在窗口最下面的输出窗口显示。3.单击“组建菜单的“全部重建选项,将完成编译和连接两项工作,编译和连接的结果将在输出窗口显示。4.单击“组建菜单的“执行选项,可运行程序,程序运行的结果如图2.8所示。图2.8 程序运行结果第三章 系统分析及设计31系统设计系
23、统总体框架运用面对对象的程序设计思想进展分析,整个系统涉及四大类信息和操作:全部学校信息类sportmen、各个学校信息类school、各运开工程类sport、初始化信息类compete。系统的总体框架就是显示主菜单,用户根据须要初始化N-参赛学校总数,M-男子竞赛工程数,W-女子竞赛工程数,各工程名次取法以及填写获奖运发动的信息等等。进入管理子菜单,在子菜单中根据提示选择相应的功能。 所示:(1) class Sportmen类的int number-运开工程编号,char name40- 运发动名字,int num_school-学校编码,char sport_name80-参与运开工程名
24、称,int num-名次,int score-得分,void input(char *a,int i,int s)-输入学校信息,void display()-输出函数。由于定义了友元类friend class Sport,Sport是Sportmen的友元类。(2) class School各个学校信息类,包含本类对象特有的数据,int num_school-学校编,char name40-学校名称,int score-学校总得分,void display_1()-输出函数,void display()-输出函数,由于定义了友元类friend class Compete-Compete为Sp
25、ortmen的友员类。(3) class Sport各运开工程类包含类中的char name40-运开工程名称,int num-运开工程的名次数,int *p-运动名次得分,Sportmen *head-运发动数组地址,Sport *next-运开工程指针链表,void input()-各工程名次,void display()-输出一个工程的全部的信息,void input_sportman()-输入获奖运发动的信息,int find_sport(int j)-查找在一个工程中,学校的得分k,由于定义了友元类friend class Compete是Sport的友元类。(4) class Co
26、mpete初始化信息类包括int N-学校个数,int M-男子竞赛工程数,int W-女子竞赛工程数,Sport *M_head-男子竞赛工程链表指针,Sport *W_head-女子竞赛工程链表指针,School *head-学校数组地址,void input()-初始化输入函数,void chain_M()-男子竞赛工程填写,void chain_W()-女子竞赛工程填写,void display(int j)-显示工程信息,j=0显示男子的工程信息,j=1显示女子的工程信息,void input_men()-输入全部的获奖的运发动信息,void display_sport()-显示全部
27、的竞赛运发动的工程信息,void account()-计算各学校团体总分,void find_school()-并查询各学校的成果,void diplay_school1()-输出团队总分报表,void display_school()-输出参赛学校信息。int Nint Mint WSport *M_headSport *W_headSchool *headchar name40 int numint *pSportmen *headSport *nextint num_schoolchar name40int scoreint numberchar name40int num_schooc
28、har sport_name80int numint scoreFloat pay全部学校信息类信息初始化类运开工程类各个学校信息类友元类友元类友元类友元类图3.1 类的层次图主函数首先调用菜单函数,显示菜单,菜单函数给出用户可选择的工程,用户可以通过选择该项前的代码来实现想要实现的功能。菜单函数返回一个值给主函数,主函数根据返回值,调用相应函数。:图3.2 主函数流程图3.2系统关键算法流程图1初始化信息 添加输入学校总数以及名称、男子女子工程总数及名称、各工程名次的取法、输入男女子竞赛获奖信息,如图3.3所示: 开始完毕输入学校总数及名称男女子工程数及名称运动名次得分信息获奖信息 初始化信
29、息函数流程图(2) 查询各学校信息在1的根底上请输入你想查询的学校编码1、2、3,查询学校编号,假设找到那么显示该学校的信息,假设找不到那么提示未找到,如图3.4所示: 开 始输入要查询的学校编号num-schoolNum-school0输入错误 结 束NY输出学校名字及其编码图3.4 查询各学校信息流程图(3)生成团队报表 运行程序在1的根底上,选择菜单中的“2-生成团队报表即可。如图3.5所示:开 始输入数字“2-生成团队报表结 束输出学校编码,名称及其分数图3.5 生成团队报表流程图4输出各参赛学校信息运行程序在1的根底上,选择菜单中的“3-输出各参赛学校信息,即可显示参赛学校编号及其名
30、称。如图3.6所示:完毕输入数字3-输出各参赛学校信息输出学校的编号及学校信息开始 图3.6 输出各参赛学校信息流程图5输出竞赛工程信息 运行程序在1的根底上,选择“4-输出竞赛工程信息即可显示出男女子全部竞赛工程信息,包括:运开工程名称,运发动名字,运发动所属学校编号,运开工程及其得分。如图3.7所示: 开 始结 束输入数字“4-输出竞赛工程信息输出全部信息 图3.7输出竞赛工程信息流程图第四章 系统功能实现4. 1菜单函数菜单函数首先标出欢迎运用竞赛成果管理系统,然后给出用户可选择的工程,用户可以通过选择该项前的代码来实现想要实现的功能。程序源代码如下:int main() Tishi()
31、;string k; Compete q;q.input();q.account();cout=n;cout *n;cout * *n;cout * *n;cout * 欢迎进入运动会竞赛成果管理系统 *n;cout * 郭景辉&程年 *n;cout * *n;cout *n;cout n;cout =n;for(;) cout *endl; cout * *endl;cout * 1-查询各学校信息 *endl;cout * 2-生成团队报表 *endl;cout * 3-输出各参赛学校的信息 *endl;cout * 4-输出竞赛工程信息 *endl;cout * 5-退出 *endl;c
32、out * *endl;cout *k;if(k=1)q.find_school();else if(k=2)q.diplay_school1();else if(k=3)q.display_school();else if(k=4)q.display_sport();else if(k=5)break;else cout输入错误!endl;return 0;:图4.1 菜单功能实现用户在选择菜单之前要初始化一些信息,之后可以通过选择该项前的代码来实现想要实现的功能。 4. 2初始化功能初始化要求:初始化N-参赛学校总数,M-男子竞赛工程数,W-女子竞赛工程数,程序源代码如下:void inp
33、ut()/初始化输入函数int i;coutN; /N为学校总数head=new SchoolN;for(i=0;iN;i+)headi.input(i+1);/输入学校名字 display_school();/调用输出函数coutM;coutW;chain_M();/调用男子竞赛工程函数chain_W();input_men();/调用获奖的运发动信息函数在程序运行后,入要添加的信息,如下图。系统会罗列须要初始化的工程,用户只需根据对应工程输入信息。图 初始化功能实现4. 3各工程名次取法功能各工程名次取法有以下几种:取前5名:第1名得分 7,第2名得分 5,第3名得分 3,第4名得分 2,
34、第5名得分1;取前3名:第1名得分 5,第2名得分 3,第3名得分 2;用户自定义:各名次权值由用户指定。程序源代码如下: void input()/各工程名次string k;int i;coutname;for(;) cout运动名次-取前名2-取前名3-自定义k;if(k=1)num=5;p=new int5; p4=1; p3=2;p2=3; p1=5;p0=7;break;else if(k=2)num=3;p=new int3; p2=2; p1=3;p0=5;break;else if(k=3)coutnum;p=new intnum;for(i=0;inum;i+)cout第i
35、+1pi;break;else cout错误!endl; coutendl;for(i=0;inum;i+)cout第i+1名得分:;coutpiendl;图 名次取法实现图4. 4输入各工程获奖运发动的信息功能要求:由程序提示用户填写竞赛结果,输入各工程获奖运发动的信息。程序源代码如下,运行结果如图4.5所示:void input_sportman()/输入获奖运发动的信息 int i;head=new Sportmennum;coutname 获奖信息填写endl;for(i=0;inum;i+)cout请输入第i+1名的信息endl;headi.input(name,i+1,pi);/输
36、入运发动的名字,名次,得分图各工程获奖运发动的信息功能实现4. 5查询功能查询功能:全部信息记录完毕后,用户可以查询各个学校的竞赛成果。程序源代码如下:void find_school()/并查询各学校的成果int j;int i;cout请输入你想查的学校编码j;for(i=0;iN;i+)/N为学校总数if(headi.num_school=j)headi.display();/调用函数break;void display()/被调用的函数coutnum_schoolsetw(10)namesetw(10)scoreendl;/输出学校编号,学校名字及分数在菜单中输入1,即可查询各个学校的竞赛成果。如图4.6所示: