欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    《数据结构》课程设计报告运动会分数统计 .doc

    • 资源ID:2526510       资源大小:337KB        全文页数:20页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《数据结构》课程设计报告运动会分数统计 .doc

    数据结构课程设计报告设计题目:运动会分数统计 题目:运动会分数统计一、 问题描述参加运动会有n个学校,学校编号为1n.比赛分成m个男子项目和w个女子项目。项目编号为男子1.m,女子m+1.m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)二、 基本要求1). 可以输入各个项目的前三名或前五名的成绩;2). 能统计各学校总分;3). 可以按学校编号、学校总分、男女团体总分排序输出;4). 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。5). 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。6). 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。三、算法思想 本课设要求输入信息,统计分数,执行排序与查找功能,在要求中没有在建立数据之后进行插入和删除操作,而在排序和查找过程中有许多的随机读取数据操作,因此使用顺序结构而不用链表。由于各个要求属性具有一定的联系,在定义数据时使用结构体和结构体数组来存储信息数据。考虑到程序的要求在设计函数时将学校个数和项目个数设计为可变的数据,为方便使用设计菜单函数(menu),而由于要求将信息存储在文件中故设计文件的存储(savetofile)与读取函数(readfromfile),信息输入函数(input)在输入基本信息后由系统统计总分的内容并全部存入文件file中,在接下来的函数中开始都需要读取文件中的信息,信息的输出(output)输出输入函数中统计后的各项信息,在排序输出(sortput)中使用冒泡排序法进行不同关键字的排序,查询函数(search)采用顺序表的查找来完成。四、数据结构(1) 项目数据表:运动会系统先制定本次运动会所需的参赛项目。本数据表根据要求设计存储每个项目的编号、要取的名次、各个名次名称及各名次对应的分数。用于对以后项目情况的统计已及查询。其中inum,top,range由输入信息输入,而mark有range和top决定。typedef struct int inum; /*项目编号*/ int top; /*取名次的数目*/ int range5; /*名次*/ int mark5; /*分数*/itemnode; /*存放项目信息*/(2) 学校数据表:本数据表根据要求储存了各个参赛学校的总体情况,包括学校的编号、学校总分、男子团体总分、女子团体总分,并且包括项目数据数组tn。其中snum和tn中部分数据由输入信息输入,而其他三项内容score,mscore,wscore将由系统进行自动统计。typedef struct int snum; /*学校编号*/ int score; /*学校总分*/ int mscore; /*男团体总分*/ int wscore; /*女团体总分*/ itemnode tm0+w0; /*项目数组*/snode; /*存放学校信息*/snode an0; /* 定义一个学校数组*/ 这二个数据表相关联接,an中包括tn,形成一个整体。五、模块划分1、Void menu(int n,int m,int w) 功能是提供界面窗口2、Void savetofile() 功能是保存输入的运动会信息到file文件3、Void readfromfile() 功能是从file文件中读取运动会信息4、Void input(int n,int m,int w) 功能是输入信息并统计5、Void output(int n,int m,int w) 功能是按学校、项目输出统计信息6、Void sortput(int n,int m,int w) 功能是按四种方法排序并输出结果7、Void search(int n,int m,int w) 功能是按两种方法查询并输出结果六、源程序#include<stdio.h>#include<math.h>#include <process.h>#define n0 20 /*学校最大数目*/ #define m0 20 /*男子项目最大数目*/ #define w0 20 /*女子项目最大数目*/typedef struct int inum; /*项目编号*/ int top; /*取名次的数目*/ int range5; /*名次*/ int mark5; /*分数*/itemnode; /*存放项目信息*/typedef struct int snum; /*学校编号*/ int score; /*学校总分*/ int mscore; /*男团体总分*/ int wscore; /*女团体总分*/ itemnode tm0+w0; /*项目数组*/snode; /*存放学校信息*/snode an0; /* 定义一个学校数组*/void menu(int n,int m,int w) /*菜单函数*/ int c; void input(int n,int m,int w);void output(int n,int m,int w);void sortput(int n,int m,int w);void search(int n,int m,int w);printf("ttt欢迎使用ttttnn"); printf("t*运动会分数统计系统*nn"); printf("tt*1.信息输入*n"); printf("tt*2.统计输出*n"); printf("tt*3.排序输出*n"); printf("tt*4.信息查询*n"); printf("tt*0.退出系统*nn"); printf("=nn");printf("请选择要实现步骤的编号(04):"); scanf("%d",&c);switch(c) case 1: input(n,m,w);break; case 2: output(n,m,w);break; case 3: sortput(n,m,w);break; case 4: search(n,m,w);break; case 0:printf("谢谢使用,再见!n"); exit(0); default: printf("输入错误,请重试!n");menu(n,m,w); void savetofile() /*信息存入文件file*/FILE *fp; int i; if(fp=fopen("file.txt","w")=NULL) printf("cannot open the filen"); return; for(i=0;i<n0;i+) if(ai.snum!='0') if(fwrite(&ai,sizeof(snode),1,fp)!=1) printf("file write errorn"); return; fclose(fp);void readfromfile() /*信息从文件file中取出*/ int i;FILE *fp; if(fp=fopen("file.txt","rb")=NULL) printf("cannot open the filen"); return; for(i=0;i<n0;i+) fread(&ai,sizeof(snode),1,fp); fclose(fp);void input(int n,int m,int w) /*信息输入*/int i,j,s,k,q=0; for(i=0;i<n;i+) printf("学校编号:"); scanf("%d",&ai.snum); /*输入学校信息*/ for(j=0;j<m+w;j+) printf("项目编号:"); scanf("%d",&ai.tj.inum); printf("取名次个数(3或者5):"); scanf("%d",&ai.tj.top); printf("获得名次个数(15):"); scanf("%d",&k); /*输入项目信息*/ for(s=0;s<k;s+) printf("所获名次(15):"); scanf("%d",&ai.tj.ranges); /*输入所获名次信息*/ printf("n"); for(i=0;i<n;i+) ai.score=0; ai.mscore=0; ai.wscore=0; /*初始化分数*/for(i=0;i<n;i+) for(j=0;j<m+w;j+) for(s=0;s<5;s+) if(ai.tj.top=3) switch(ai.tj.ranges) case 0: ai.tj.marks=0; break; case 1: ai.tj.marks=5; break; case 2: ai.tj.marks=3; break; case 3: ai.tj.marks=2; break; else if(ai.tj.top=5) switch(ai.tj.ranges) case 0: ai.tj.marks=0; break; case 1: ai.tj.marks=7; break; case 2: ai.tj.marks=5; break; case 3: ai.tj.marks=3; break; case 4: ai.tj.marks=2; break; case 5: ai.tj.marks=1; break; else printf("信息有误!");printf("n");exit(0); ai.score=ai.score+ai.tj.marks; /*记学校总分*/ if(j<=m-1) ai.mscore=ai.mscore+ai.tj.marks; /*记男子团体总分*/ else ai.wscore=ai.wscore+ai.tj.marks; /*记女子团体总分*/while(q!=1)printf("输入完毕!返回? 1是 2否"); /*返回菜单*/ scanf("%d",&q); printf("n");printf("n");savetofile(); menu(n,m,w);void output(int n,int m,int w) /*统计输出*/ readfromfile();int i,j,s,q=0; for(i=0;i<n;i+) /*显示结果*/printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%dn",ai.snum,ai.score,ai.mscore,ai.wscore); for(j=0;j<m+w;j+) printf("项目编号:%d 所取名次数量:%dn",ai.tj.inum,ai.tj.top); for(s=0;s<5;s+) if(ai.tj.ranges!=0) printf("名次:%d 分数:%dn",ai.tj.ranges,ai.tj.marks);printf("n");printf("n");while(q!=1)printf("统计完毕!返回? 1是 2否"); /*返回菜单*/ scanf("%d",&q); printf("n");printf("n"); menu(n,m,w);void sortput(int n,int m,int w) /*排序输出函数*/ readfromfile();int c,i,j,k,q=0;int tempn0; printf("t*排序输出系统*nn"); printf("tt*1.按学校编号输出*n"); printf("tt*2.按学校总分输出*n"); printf("tt*3.按男团总分输出*n"); printf("tt*4.按女团总分输出*n"); printf("=nn");do printf("请选择要实现功能的编号(14):"); scanf("%d",&c);switch(c) case 1: for(i=0;i<n;i+) tempi=i; for(i=0;i<n;i+) for(j=i+1;j<n;j+)if(atempi.snum>aj.snum) k=tempi; tempi=tempj; tempj=k; /* 用冒泡排序方法排序*/ for(i=0;i<n;i+) printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%dn",atempi.snum,atempi.score,atempi.mscore,atempi.wscore); /*按学校编号输出*/ break; case 2: for(i=0;i<n;i+)tempi=i; for(i=0;i<n;i+) for(j=i+1;j<n;j+)if(atempi.score<aj.score) k=tempi; tempi=tempj; tempj=k; /* 用冒泡排序方法排序*/ for(i=0;i<n;i+) printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%dn",atempi.snum,atempi.score,atempi.mscore,atempi.wscore); /*按学校总分输出*/ break; case 3: for(i=0;i<n;i+)tempi=i; for(i=0;i<n;i+) for(j=i+1;j<n;j+) if(atempi.mscore<aj.mscore) k=tempi; tempi=tempj; tempj=k; /* 用冒泡排序方法排序*/ for(i=0;i<n;i+) printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%dn",atempi.snum,atempi.score,atempi.mscore,atempi.wscore); /*按男团总分输出*/ break; case 4: for(i=0;i<n;i+) tempi=i; for(i=0;i<n;i+) for(j=i+1;j<n;j+) if(atempi.wscore<aj.wscore) k=tempi; tempi=tempj; tempj=k; /* 用冒泡排序方法排序*/ for(i=0;i<n;i+) printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%dn",atempi.snum,atempi.score,atempi.mscore,atempi.wscore); /*按女图总分输出*/ break; default: printf("输入错误,请重试!n");printf("请选择 1 返回主菜单 0继续"); /*返回菜单或继续排序*/scanf("%d",&q);printf("n");while(q=0);printf("n");if(q!=0)menu(n,m,w);void search(int n,int m,int w) /*查询函数*/ readfromfile();int c,i,j,k,d,l,q=0; printf("t*查询系统*nn"); printf("tt*1.按学校编号查询*n"); printf("tt*2.按项目编号查询*n"); printf("=nn");do k=-1;d=-1;l=-1;printf("请选择要实现功能的编号(12):"); scanf("%d",&c); switch(c) case 1: printf("要查询的学校编号:"); /*查找学校编号下标*/scanf("%d",&c);for(i=0;i<n;i+)if(ai.snum=c) k=i;if(k=-1)printf("错误:这个学校没有参加此次运动会!n"); elseprintf("要查询的项目编号:"); /*查找项目编号下标*/ scanf("%d",&c);for(j=0;j<m+w;j+)if(ak.tj.inum=c) d=j;if(d=-1) printf("此次运动会没有这个项目n"); else /*显示结果*/ printf("这个项目取前 %d名,该学校的成绩如下:n", ak.td.top); for(i=0;i<5;i+) if(ak.td.rangei!=0) printf("名次:%dn",ak.td.rangei); break; case 2: printf("要查询的项目编号:"); /*查找项目编号下标*/ scanf("%d",&c); for(i=0;i<n;i+)for(j=0;j<m+w;j+) if(ai.tj.inum=c)l=j; if(l=-1) printf("此次运动会没有这个项目n"); else /*显示结果*/ printf("该项目取前 %d名,取得名次的学校n",a0.tl.top);for(i=0; i<n;i+) for(j=0;j<5;j+) if(ai.tl.rangej!=0) printf("学校编号:%d,名次:%dn",ai.snum,ai.tl.rangej); break; default: printf("输入错误,请重试!n");printf("请选择 1 返回主菜单 0继续"); /*返回菜单或继续查询*/ scanf("%d",&q); printf("n");while(q=0);printf("n"); if(q!=0)menu(n,m,w);void main() /*主函数*/ int n,m,w; printf("ttt欢迎使用ttttnn"); printf("t*运动会分数统计系统*nn");printf("请先输入运动会主要信息n"); /*设计运动会主要数据个数*/ printf("输入学校个数:"); scanf("%d",&n);printf("输入男子项目个数:"); scanf("%d",&m);printf("输入女子项目个数:"); scanf("%d",&w);menu(n,m,w);七、测试数据测试取学校个数为3,男子项目个数2.女子项目个数1项目学校编号1(男)编号2(男)编号3(女)取前3取前5取前5编号1名次31、43、4编号2名次22、51、5编号3名次132八、运行及测试情况1、主菜单界面2、输入信息运行测试(部分数据)3、分数统计运行测试4、排序统计输出运行测试5、查询输出运行测试6、退出系统运行测试九、课设总结通过为期一周的课程设计,我对数据结构这门课程有了更深一步的了解。虽然是应用C语言来编写程序,但却深刻的体现了数据结构对编程的重要性。这次课程设计运用C语言与数据结构知识,编写一个运动会分数统计系统。其中遇到了不少问题,平时自己在编写一些普通常见的程序时只是运用单一的知识而课程设计却需要将各个方面的内容联系结合,例如文件与程序的结合,输入、输出、统计、查找的综合应用等,因此真正的程序设计必须先有一个正确的算法思想,运用正确的数据结构和编程语言,灵活的运用并联系几个方面的内容。通过课设也使我认识到,要学好编程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西

    注意事项

    本文(《数据结构》课程设计报告运动会分数统计 .doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开