版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计大作业090821班题 目 运动会分数统计 专 业 计算机科学与技术 学生姓名 赵志强 学 号 39 指导教师 唐国民 完成日期 湖州师院信息与工程学院目 录一、实验内容概述3二、实验目的概述4三、解题思路的描述5四、源程序清单8五、程序调试及测试结果15六、结论与体会17七、参考文献18运动会分数统计【内容摘要】问题描述:参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(
2、m=20,n=20)功能要求:1) 可以输入各个项目的前三名或前五名的成绩;2) 能统计各学校总分,3) 可以按学校编号或名称、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前 三或前五名的学校。5) 数据存入文件并能随时查询 6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称 输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程
3、序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明。【关键字】运动会分数统计,线性表,链表,遍历【Abstract】Description:There are various schools participate in the games, and stamp them from 1. n. Competition is divided into N male project, and N female project. Projec
4、t Numbers for man from 1 to M, womens from m + 1 to M + w. Different project take the top five or top three points; The top five points respectively is: 7, 5, 3, 2, 1,and the top three points respectively is: 5, 3, 2,;Which to take the top five or top three set by the students themselves. (m = 20, n
5、 = 20)Functional requirements:1) can enter each item the top three or top five result,2) can calculate each schools total score,3) men and women groups total score sorting results can output according to the school numbers or name, school total score. 4) can follow the school Numbers inquires the sc
6、hool for a specific project; Can be obtained by project Numbers inquires topthree or top five schools.5) data files, and can deposit enquiries6) regulation: input data form and scope: can enter the school name, the name of the sportOutput format: Chinese clew, each school grades for plasticInterface
7、 requirements: there is a reasonable hint, each function may establish menu, according to the prompt, can complete the relevant function requirement.Storage structure: the students themselves according to your own design system function requirements, but it will require games and related data to sto
8、red in data file. (data file of reading and writing data method and other related content in c language program design book, please self-study solve) please last due in material storage structure of where you use,Test data: require all legal data; 1, 2, the overall illegal data; 3, local illegal dat
9、a. Test procedures, to ensure the stability of the program. Test data and test results of material in submission, please state.【Key words】Sports scores statistics,Linear list,Linked list,seek一、 实验内容概述这次课程设计题目是运动会的分数统计系统,它要求参加运动会的n个学校编号为1n。比赛分成m个男生项目和w个女生项目,项目编号为1-m和m+1-m+w。由于各项目参加人数差别比较大,有些项目取前五名,得分
10、的顺序为7,5,3,2,1;还有些项目只能取前三名,得分顺序为5,3,2。需要产生各学校的成绩单和团体总分报表。为了实现这个程序,调用了多个子函数。save函数是实现对数据的存储,getchar函数是从stdin流中读取字符,system函数是向系统发出一个DOS命令程序中用到的system(“pause”);其功能是运行的时候就可以出现:“请按任意键继续”,由于在这个从程序中的下一条命令是返回主菜单界面若不加一条命令的话,就会使显示是清屏。malloc函数的功能是内存分配如:gl=(ALLitems*)malloc(sizeof(ALLitems)g2=(ALLNode*)malloc(si
11、zeof(ALLNode);就是g1和g2指针非配内存地址空间大小。函数fclose的功能是关闭数据流,如程序中用到的flose(fp2)就是将fp2文件的数据流关闭,用在本程序的save函数中,当执行funct1输入信息保存后关闭当前信息流。程序中自定义的funct1-8的功能分别是:funct1():输入各个项目成绩并存储文件funct2():统计各学校总分funct3():按学校编号排序输出funct4():按学校总分排序输出funct5():按男团体总分排序输出funct6():按女团体总分排序输出funct7():按学校编号查询学校某个项目情况funct8():按项目编号查询取得名次
12、的学校funct0():退出最后是主函数main()它是所有程序运行的入口二、 实验目的概述“数据结构”是计算机科学与技术专业一门十分重要的专业技术基础课,计算机科学各领域及有关的应用软件都要使用到各种数据结构。在我国,“数据结构与算法”已经作为理工科非计算机专业必修的信息技术基础课程之一。世界上许多科技人员对学习、研究数据结构和算法都非常重视,对于从是计算机科学及其应用的科技工作者来说,数据结构与算法更是必须透彻的掌握的重要基础。 学习数据结构与算法的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题,课程设计是加强学生实践能力的一个强有力的手段。作为一名计算机专业的学生,通过对计
13、算机课程两年的学习,掌握C+和数据结构,在完成课程设计和变成过程中,要深化对数据结构与算法课程中的基本概念、理论和方法的理解,训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念,在老师的指导下完成最少换车次数问题,把自己所学的理论用具体的问题来解决,更加直接,易懂。提高程序设计与调试水平。在通过学习数据结构,我们要掌握数据结构的各个算法,运用学过的算法去解决实际中的问题,将数据结构用用武之地,也能提高我们的运用能力和编写程序的能力,对我们的技能也有进一步的提高,对我们的未来之路铺路搭桥。在这个实验中,我主要是类的成员函数去解决问题,除了学习到C语言的知识外,同样还学习到C+的知
14、识,对我的知识也有很大扩展,将C和C+相结合,达到共同解决问题的目的。在这个运用中,主要是学会类的定义以及使用,还有类的成员函数的定义和使用,通过用类的对象去调用类的成员函数,最后达到目的,这能够体现出面向对象的编程方法,与以往的面向过程的编程方法有很大的层次性的提高,达到提高思维能力。三、 解题思路的描述1.本程序中学校的存储结构为链表:Prev school1 next头结点Prev school(最后) next其中school类为:class school:public athlete /*学校*/ public: int count; /*学校获奖数*/ int serial; /*
15、学校编号*/ int menscore; /*男选手总分*/ int womenscore; /*女选手总分*/ int totalscore; /*总分*/ athlete athMaxSize; /*获奖运动员信息数组,包括分数,名次,项目*/ school *prev;/前指针 school *next; /后指针;其中部分主要的函数:添加操作add(school* &head)查询操作checkFunc(school *head,int &n)文件保存save(school *head)总分快速排序tquicksort(vector& v, int first, int last)总分
16、基数排序 tbaseSort(vector& v, int d) 2.关键算法 添加项目号for ( i = 1 ; i serial =要添加的编号) (first-athfirst-count).item =要添加的项目号;(first-athfirst-count).range =i(名次) First指向的学校的项目加一;更新总分break;first = first-next;3.查询操作:开始输入项目编号temp是数字NY0temp18NY输出“项目不存在”学校遍历结束temp存在YNNext schoolNtemp是奇数 NY取5名取3名输入获奖的学校编号se1senext;输出
17、向量中的内容1. 所有学校总分统计表2. 学校成绩查询3. 项目情况查询4. 返回主菜单1. 按学校编号统计2. 按学校名次统计3. 按男团总分统计4. 按女团总分统计5. 返回查询菜单6. 返回主菜单/按学校编号顺序输出所有参赛学校运动会成绩void serialSort(vector& v)for(int i=0;iv.size();i+)cout*vi;四、 源程序清单#include#include#include#define LT(a,b) (a)(b)#define LIST_INIT_SIZE 100/线性表存储空间的初始分配量#define LISTINCREMENT 10/
18、线性表存储空间的分配增量typedef int InfoType; / 定义其它数据项的类型typedef int KeyType; / 定义关键字类型为整型struct RedType / 记录类型 KeyType key; / 关键字项 InfoType otherinfo; / 其它数据项,具体类型在主程中定义 ;typedef struct int schnum;/学校的编号 int mscore20;/学校在各个男生项目的积分 int wscore20;/学校在各个女生项目的积分school;/学校记录类型typedef int ElemType;struct SqList Elem
19、Type *elem;/ 存储空间基址 int length; / 当前长度 int listsize; / 当前分配的存储容量(以sizeof(ElemType)为单位) ;struct List RedType r20; int length; ;int InitList(SqList &L) / 算法.3 / 操作结果:构造一个空的顺序线性表 L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType); if(!L.elem) exit(-1); / 存储分配失败 L.length=0; / 空表长度为 L.listsize=LIST
20、_INIT_SIZE; / 初始存储容量 return 1; int ListInsert(SqList &L,int i,ElemType e) / 算法.4 / 初始条件:顺序线性表L已存在,iListLength(L)+1 / 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加 ElemType *newbase,*q,*p; if(iL.length+1) / i值不合法 return 0; if(L.length=L.listsize) / 当前存储空间已满,增加分配 if(!(newbase=(ElemType *)realloc(L.elem,(L.listsize+L
21、ISTINCREMENT)*sizeof(ElemType) exit(-1); / 存储分配失败 L.elem=newbase; / 新基址 L.listsize+=LISTINCREMENT; / 增加存储容量 q=L.elem+i-1; / q为插入位置 for(p=L.elem+L.length-1;p=q;-p) / 插入位置及之后的元素右移 *(p+1)=*p; *q=e; / 插入e +L.length; / 表长增 return 1; void InsertSort(List &L) / 对顺序表L作直接插入排序。算法.1 int i,j; for(i=2;i=L.length
22、;+i) if LT(L.ri.key,L.ri-1.key) / ,需将L.ri插入有序子表 L.r0=L.ri; / 复制为哨兵 for(j=i-1;LT(L.r0.key,L.rj.key);-j) L.rj+1=L.rj; / 记录后移 L.rj+1=L.r0; / 插入到正确位置 void print(List L) int i; for(i=1;i=L.length;i+) printf(%d,%d,%d)n,L.length-i+1,L.ri.otherinfo,L.ri.key); printf(n); void main() /规定男生项目前三名分别积分、,女生项目前五名分别
23、积分、 /规定没有名次则积分为,不考虑并列的情况 /请正确输入各学校对应项目的积分 int n,m,w,i,j; school a20; int summscore20,sumwscore20,sumscore20;/定义存储各个学校男团、女团、总分 RedType d20;/定义排序所需的数组为RedType型 SqList L,Lm,Lw;/定义存放各个学校总分、男团、女团积分的顺序线性表 List Lr;/定义积分排序所需的顺序线性表 InitList(L);/初始化各线性表 InitList(Lm); InitList(Lw); cout请输入参加运动会的学校数目(20):n; whi
24、le(n20) cout输入学校数目有误,请重新输入!endl; cout请输入参加运动会的学校数目(20):n; cout请分别输入男生、女生的项目数目(20):mw; cout规定男生项目前三名分别积分、endl; cout女生项目前五名分别积分、endl; cout没有名次则积分为,且本程序不涉及并列排名的情况!endl; cout请正确输入各学校对应项目的积分!nendl; for(i=1;i=n;i+) ai-1.schnum=i;/赋给学校对应的编号 printf(请输入学校%d 男生各个项目的成绩:n,i); for(j=1;jai-1.mscorej-1; printf(请输入
25、学校%d 女生各个项目的成绩:n,i); for(j=1;jai-1.wscorej-1; for(i=0;in;i+) summscorei=ai.mscore0; for(j=1;jm;j+) summscorei+=ai.mscorej;/求出学校男团总分并存储到数组中对应位置 ListInsert(Lm,i+1,summscorei);/将学校男团总分插入存放在线性表对应位置 sumwscorei=ai.wscore0; for(j=1;jch; switch(ch) case 1:/查看各学校总分统计,并按学校编号排序输出查看 for(i=0;in;i+) printf(学校编号:%
26、d 学校总分:%dn,i+1,L.elemi); break;case 2:/按学校总分排序输出查看 Lr.length=n; for(i=0;in;i+) di.key=L.elemi; di.otherinfo=i+1; Lr.ri+1=di; InsertSort(Lr); cout按学校总分排序后以(名次,学校编号,学校总分)形式输出为:endl; print(Lr); break;case 3:/按男团总分排序输出查看 Lr.length=n; for(i=0;in;i+) di.key=Lm.elemi; di.otherinfo=i+1; Lr.ri+1=di; InsertSo
27、rt(Lr); cout按男团总分排序后以(名次,学校编号,男团总分)形式输出为:endl; print(Lr); break; case 4:/按女团总分排序输出查看 Lr.length=n; for(i=0;in;i+) di.key=Lw.elemi; di.otherinfo=i+1; Lr.ri+1=di; InsertSort(Lr); cout按女团总分排序后以(名次,学校编号,女团总分)形式输出为:endl; print(Lr); break;case 5:/按学校编号查询学校某个项目的情况 int s,t; cout请输入要查询的学校编号:s; while(sn)/输入学校编
28、号不在初始定义范围之内 cerr输入学校编号有误,请重新正确输入!endl; cout请输入要查询的学校编号:s;/重新输入 i=0; while(ai.schnum!=s) +i;/通过循环找到输入编号的对应学校在数组a中的位置 cout请输入要查询的项目序号:t; while(tm+w)/输入项目序号不在初始定义范围之内 cout输入项目序号有误,请重新正确输入!endl; cout请输入要查询的项目序号:t;/重新输入 if(t=m)/该项目属于男生项目 printf(该学校该项目积分为:%dn,ai.mscoret-1);/从学校男生项目积分数组里输出 else /该项目属于女生项目
29、printf(该学校该项目积分为:%dn,ai.wscoret-m-1);/从学校女生项目积分数组里输出 break; case 6:/按项目编号查询取得前三或前五名的学校 cout请输入要查询的项目序号:t; while(tm+w)/输入项目序号不在初始定义范围之内 cout输入项目序号有误,请重新正确输入!endl; cout请输入要查询的项目序号:t;/重新输入 if(t=m)/该项目属于男生项目 i=0; while(ai.mscoret-1!=5) +i;/通过循环找到该项目第一名学校在a中的位置 printf(获得该项目第一名的是学校:%d 号n,i+1); i=0; while(
30、ai.mscoret-1!=3) +i;/通过循环找到该项目第二名学校在a中的位置 printf(获得该项目第二名的是学校:%d 号n,i+1); i=0; while(ai.mscoret-1!=2) +i;/通过循环找到该项目第三名学校在a中的位置 printf(获得该项目第三名的是学校:%d 号n,i+1); else/该项目属于女生项目 i=0; while(ai.wscoret-m-1!=7) +i;/通过循环找到该项目第一名学校在a中的位置 printf(获得该项目第一名的是学校:%d 号n,i+1); i=0; while(ai.wscoret-m-1!=5) +i;/通过循环找
31、到该项目第二名学校在a中的位置 printf(获得该项目第二名的是学校:%d 号n,i+1); i=0; while(ai.wscoret-m-1!=3) +i;/通过循环找到该项目第三名学校在a中的位置 printf(获得该项目第三名的是学校:%d 号n,i+1); i=0; while(ai.wscoret-m-1!=2) +i;/通过循环找到该项目第四名学校在a中的位置 printf(获得该项目第四名的是学校:%d 号n,i+1); i=0; while(ai.wscoret-m-1!=1) +i;/通过循环找到该项目第五名学校在a中的位置 printf(获得该项目第五名的是学校:%d 号n,i+1); break; default:flag=0;printf(程序结束,按任意键退出!n);/退出程序 getchar();五、 程序调
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027年初中九年级道德与法治上册第二单元第一课《牢记初心使命》教学设计
- 2026中国新能源装备出口市场拓展策略研究报告
- 2026注塑机行业能效标准升级与技术改造路径研究报告
- 2026电子竞技产业市场现状分析及未来趋势与商业机会研究报告
- 2026中国智能网联汽车标准体系建设与测试示范区效果评估报告
- 2026中国生物质能发电政策环境分析及项目经济性测算与投资决策参考
- 2026固态电池产业化进度与产业链配套成熟度研究报告
- 2026中国工业母机高端数控系统突破路径及军工订单影响投资价值
- 2026中国心力衰竭器械治疗市场供需分析与投资风险预警报告
- 2026物联网安全芯片需求分析及标准制定进程与战略并购机会探讨
- 《药物临床试验质量管理规范(GCP)》试题附答案
- 2026山西晋中介休市同城供热有限公司招聘职位表考试参考题库及答案解析
- 河南省郑州市实验中学2026-2027学年高二上学期第一次月考物理试卷
- 2026年高考广西卷生物高考真题(含解析)
- 2026年安徽合肥单招考试题库
- 辽宁石化职业技术学院单招职业技能考试题库及答案
- 2026-2027学年四年级上册数学单元全真模拟培优卷(人教版)第4单元 加法模型和乘法模型
- 2026年全国职业病诊断医师培训职业性化学中毒复习题及答案
- 帕金森病深部脑刺激(DBS)手术
- 平面设计师招聘笔试题及解答(某大型国企)2025年
- 2026年温州市房地产行业分析报告及未来发展趋势报告
评论
0/150
提交评论