运动会成绩管理系统课程设计.doc_第1页
运动会成绩管理系统课程设计.doc_第2页
运动会成绩管理系统课程设计.doc_第3页
运动会成绩管理系统课程设计.doc_第4页
运动会成绩管理系统课程设计.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一 概述1.问题描述1. 数据类型结构体数组的定义如下:struct node int num; struct node *f22; /*指针数组变量名*/ void exit0() /输出到文件函数 void input() /输入函数 void(*g)()=input,each,biaohao,zongfen,nanzong,nvzong,xuexiao,xiangmu,exit02结构体的有关算法结构体把一组变量从逻辑上和内存位置上组合起来。结构体变量的长度是各成员变量的长度之和。与数组不同,数组要求所有元素的数据类型是一致的,而结构体则没有这个要求,它可以依编程者的需要,把数据类型截然不同的一些元素组成一个整体,而每个元素就称为这个结构体的一个成员。2.系统分析 运动会成绩管理系统,涉及到比赛项目成绩的录入,某个学院在某个项目中获得成绩的查询,某个学校在某个运动项目中获得的成绩的修改,某个学院在某个运动项目中获得的成绩的删除,以及某个学院所有获得成绩的得分报表以及团体成绩的得分报表。其中比赛成绩的录入可以按照运动项目举行的次序输入,也可以输入自己指定的运动项目的成绩;自己扩展的功能是“某个学院在某个项目中获得成绩的查询,某个学院在某个运动项目中获得的成绩的修改,某个学院在某个运动项目中获得的成绩的删除”三项,这三项都要求输入学院以及运动项目编号,通过这两项作为参数具体的函数可以查询、修改成绩或者是删除某项成绩记录,进而影响到最后得分报表的输出。二 总体方案设计1整体设计思路系统共分五个子系统:输入系统,修改系统,排序系统,查询系统,保存系统。在相应的系统内可完成相应的功能。各模块相对独立,每个模块用一个大型的函数来处理数据。本程序包括5个模块:a.主程序模块:Void main()Do接受命令; 处理命令;while(“命令”=退出);b.信息输入模块实现信息的输入;c.信息查询模块实现信息的查询;d.信息排序查询模块实现各种的有序输出;e.信息存盘模块实现输出到文件。各模块的关系如下: 主程序模块信息输入模块信息查询信息排序查询模块信息存盘模块.2算法的整体思路本系统涉及到比赛项目成绩的录入,某个学院在某个项目中获得成绩的查询,某个学校在某个运动项目中获得的成绩的修改,某个学院在某个运动项目中获得的成绩的删除,以及某个学院所有获得成绩的得分报表以及团体成绩的得分报表。主要采用数组,指针,结构体类型。 各个模块相对独立,退出一个子系统后可以进入其他系统。算法简单易行,时间复杂度大部分都是O(l)级的,运行速度快。3工作内容 系统设计,详细设计,编写代码,结果测试与分析。4关键问题对于获得名次的同学在存储其成绩的时候采用了链表的结构,有利于数据的存储与查找。程序通过调试运行,实现了最初的设计目标,并且经过适当完善后,在实际中可以解决更多的问题。三 详细设计1. 输入系统功能:1. 按输入方式输入后按回车键就可以输入信息,并且返回“输入完成!”提示 2但若输入的学院代码,项目代码与已有记录雷同或不存在,则不能输入。 3若同一个项目中输入的学院代码雷同,则不能输入,并且返回“同一个学院不能在同一项目中有两个名次,请重新输入第%d名的学院代号!”的提示信息。2修改系统功能:若发现输入的数据有误可以重新输入项目代码,以前的该项目成绩将被删除。3排序系统 4查询系统5.程序流程图 开始输入运动会的一些基本信息(参赛学院数,男女项目数)列出一个操作目录,选择要操作的编号输入成绩退出出统计各学院的总分按女团体总分排序输出按学院编号查询学院某个项目的成绩按项目编号查询取得前三或前五名的学院按学院总分排序输出按学院编号排序输出列出操作目录选择要操作编号结束123456789按男团体总分排序输出四 程序的调试与运行结果说明.调试步骤附录A 原程序清单#include #include #include /*屏幕操作函数*/#include #include#includeint n,b,m,w,i,j;struct node int num; struct node *f22;void exit0() FILE *fp; int k;alp:if(fp=fopen(sore.txt,w)=NULL) printf(创建文件失败n); printf( 1*重试n); printf( 2*强制退出(数据将不会保存到文件)n); printf( 3*回到主菜单n); alj: scanf(%d,&k); if(k=1) goto alp; else if(k=2) exit(0); else if(k=3) return; else printf(输入错误,请重新输入:); goto alj; fprintf(fp,nn); /* fprintf:传送格式化输出到一个文件中 */ fprintf(fp,运动会分数统计表nnn); /*用 法: int fprintf(FILE *stream, char *format, argument,.); */ fprintf(fp,项目代号); for(i=1;i=m+w;i+) fprintf(fp,%5d,i); fprintf(fp, ); fprintf(fp,n 学院代号n); for(i=1;i=n;i+) fprintf(fp,%10d,i); for(b=1;bm+w|ab1) printf(n此项目代号不存在,重新输入n); goto ale; ae=0; for(i=0;i=n;i+) if(fiab.num!=0) ae=1; break; if(ae=1) al2: printf(n此项目成绩曾经已被录入过,是否要重新录入(您输入的项目代号可能有误,强烈建议您查证后再录入):n); printf( 1+重新录入(若重新录入,以前的该项目成绩将被删除)n); printf( 2+不要,待查证后再录入nn); scanf(%d,&af); if(af=2) printf(您已取消录入!n); return; else if(af=1) for(i=1;i=n;i+) if(fiab.num!=0) fi0.num=fi0.num-fiab.num; if(ab=m) fim+w+1.num=fim+w+1.num-fiab.num; else fim+w+2.num=fim+w+2.num-fiab.num; fiab.num=0; else goto al2; al: printf(n此项目是以前几名为胜出者:nn); printf( 3-以前三名n); printf( 5-以前五名nn); scanf(%d,&ac); if(ac=3) printf(n请依次输入获胜学院代号:); af=5; for(i=0;in|ae1) printf(%d学院代号不存在,重新输入第%d名的学院代号n,ae,g); goto alq; for(b=0;b5;b+) if(ae=getb) printf(同一个学院不能在同一项目中有两个名次,请重新输入第%d名的学院代号!n,g); goto alq; else getb=ae; fae0.num=fae0.num+af; faeab.num=af; if(ab3) af=af-2; else af-; g+; else if(ac=5) printf(请依次输入获胜学院代号:); af=7; for(i=0;in|ae1) printf(%d学院代号不存在,重新输入第%d名的学院代号n,ae,g); goto alw; for(b=0;b5;b+) if(ae=getb) printf(同一个学院不能在同一项目中有两个名次,请重新输入第%d名的学院代号!n,g); goto alw; else getb=ae; fae0.num=fae0.num+af; faeab.num=af; if(ab3) af=af-2; else af-; g+; else goto al; printf(nn 输入完成 ! ! ! ! n); void each() printf(n 对应的格式为:n 学院代号:团体总成绩nn ); for(i=1;i=n;i+) printf(%2d:%3d ,i,fi0.num); if(i%3=0) printf(n ); void biaohao() printf(n项目代号 ); for(i=1;i9) printf(%4d ,i); else printf(%5d ,i); printf(n); printf(学院代号 n); for(i=1;i=n;i+) printf( %d ,i); for(b=1;b9) printf(%4d,fib.num); else printf(%5d,fib.num); printf(n); void zongfen() struct nod int ke; int num; ; int ha; struct nod *de; de=(struct nod *)malloc(sizeof(struct nod)*n+1); printf(n 按学院编号排序输出nn); printf( 学院代号 总分nn); for(i=1;i=n;i+) dei.ke=i; dei.num=fi0.num; for(i=1;i=n;i+) for(b=i;bdei.num) ha=deb.ke; deb.ke=dei.ke; dei.ke=ha; ha=deb.num; deb.num=dei.num; dei.num=ha; for(i=1;i=n;i+) printf(%13d%8dn,dei.ke,dei.num); void nanzong() struct nod int ke; int num; ; int ha; struct nod *de; de=(struct nod *)malloc(sizeof(struct nod)*n+1); printf(n 按男子团体总分排序输出nn); printf( 学院代号 男子团体总分nn); for(i=1;i=n;i+) dei.ke=i; dei.num=fim+w+1.num; for(i=1;i=n;i+) for(b=i;bdei.num) ha=deb.ke; deb.ke=dei.ke; dei.ke=ha; ha=deb.num; deb.num=dei.num; dei.num=ha; for(i=1;i=n;i+) printf(%13d%12dn,dei.ke,dei.num); void nvzong() struct nod int ke; int num; ; int ha; struct nod *de; de=(struct nod *)malloc(sizeof(struct nod)*n+1); printf( 按女子团体总分排序输出nn); printf( 学院代号 女子团体总分nn); for(i=1;i=n;i+) dei.ke=i; dei.num=fim+w+2.num; for(i=1;i=n;i+) for(b=i;bdei.num) ha=deb.ke; deb.ke=dei.ke; dei.ke=ha; ha=deb.num; deb.num=dei.num; dei.num=ha; for(i=1;in|drm+w|dtm+w|ge1) printf(没有此项目代号,重新输入n); goto all; for(i=1;i=n;i+) if(fbge.num=2) sedy=1; if(sedy=0) printf(此项目没有录入成绩n); return; for(i=1;i0;i-) for(b=1;b=n;b+) if(fbge.num=i) printf(%5d,b); void(*g)()=input,each,biaohao,zongfen,nanzong,nvzong,xuexiao,xiangmu,exit0;void main() int choos; clrscr(); /*清屏幕*/ gotoxy(1,1); /*移动光标*/ textcolor(YELLOW); /*设置文本显示颜色为黄色*/ textbackground(BLUE); /*设置背景颜色为蓝色*/ window(1,1,99,99); /* 制作显示菜单的窗口,大小根据菜单条数设计*/ clrscr(); printf(nn * * * 运动会分数统计 * * *nnn); printf(输入本次运动会参加的学院数n:); scanf(%d,&n); while(n20) if(n20) printf(n 参赛学院个数不能大于20nn); printf(输入本次运动会参加的学院数n:); scanf(%d,&n); printf(输入本次运动会男子项目总数m:); scanf(%d,&m); printf(输入本次运动会女子项目总数w:); scanf(%d,&w); for(i=0;i=n;i+) fi=(struct node

温馨提示

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

评论

0/150

提交评论