奥运会奖牌统计系统刘鑫.doc

上传人:doc321 文档编号:12860924 上传时间:2021-12-06 格式:DOC 页数:30 大小:612KB
返回 下载 相关 举报
奥运会奖牌统计系统刘鑫.doc_第1页
第1页 / 共30页
奥运会奖牌统计系统刘鑫.doc_第2页
第2页 / 共30页
奥运会奖牌统计系统刘鑫.doc_第3页
第3页 / 共30页
奥运会奖牌统计系统刘鑫.doc_第4页
第4页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《奥运会奖牌统计系统刘鑫.doc》由会员分享,可在线阅读,更多相关《奥运会奖牌统计系统刘鑫.doc(30页珍藏版)》请在三一文库上搜索。

1、沈阳航空航天大学课程设计学号 _班级 _姓名 _指导教师_郭建新 _年月日沈阳航空航天大学课程设计任务书系:自动化专业:自动化班级:学号: 20题目:奥运会奖牌统计系统一、课程设计时间20122013 第 1 学期第 2 周,共计1 周, 20 学时。二、课程设计内容用 C 语言编写软件完成以下任务:(1) 录入国家的信息,并且保存到一个磁盘文件;(2) 录入国家的金牌,银牌和铜牌数;(3) 统计国家的总成绩(计算方法:总成绩=金牌数 +银牌数 +铜牌数);(4) 先按照金牌数对国家排序,再按照总成绩进行排序;(5) 查询某个国家的成绩 (按照国家名、 金牌数、总成绩等关键词进行查询) 。三、

2、课程设计要求程序质量:贯彻结构化的程序设计思想。用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括 “录入国家信息” 、“录入成绩” 、“统计”、“退出”等项。代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容参见提供的模板。四、指导教师和学生签字指导教师: _学生签名: _五、成绩六、教师评语目录一、 需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。该系统是一个较为典型数据管理与查询系统 .使用对象是面向奥运会组委会以及关心热爱奥运的普通民众。因此该系统应当具备操作简单、 稳

3、定、功能齐全等特点。1. 操作简单性分析:该系统进入与退出都给出了简单易懂的操作提示。而且在每一个功能执行时也都给出了简单明了的操作提示。可以说只要实字你就可以很熟练的使用该系统。2. 稳定性分析:该系统源程序采用模块化设计思想,对每一个功能都利用独立函数实现各模块不相互影响。因此保证了在用户操作合理的情况下,系统不会出现错误操作提示, 更不会出现系统崩溃的情况。3. 主要功能分析:(1)数据输入对及时更新的数据输入文本并保存。系统允许输入国家名。对及时更新的奖牌数包括金牌、银牌、铜牌进行输入性修改并自动计算奖牌总数。奖牌数数以整型数据输入。(2)数据查询点击查询选项系统会给出多种查找方式并给

4、出相应提示,使用者可以根据自己的需要选择不同的查询对象查询自己所需要的数据。( 3)数据输出点击主菜单的输出奖牌榜,系统将自动将文件中所包含的信息打印在屏幕上,使用者将得到奖牌的全部情况。一目了然。二、设计分析主要有 5 个功能模块,每个模块对应一个C 语言自定义函数。这些函数原型及其功能简述如下:(1)voidmenu();xt","a");if(fp=fopen(" 奥运会金牌统计信息 .txt","a")=NULL)printf(" 文件打开失败 n");exit(0);文件的读取用于读出文件中满足

5、要求的数据。进而进行下一步的数据处理。像奖牌信息修改。以下一段程序就是采用读取文件操作:fp=fopen(" 奥运会金牌统计信息 .txt","r"); if(fp=fopen(" 奥运会金牌统计信息 .txt","r")=NULL) printf(" 文件打开失败 n");exit(0);else3、关于排序算法实现将系统中随机输入的数据进行奖牌总数、金牌数、银牌数和铜牌数的排序,实现奖牌榜的输出。算法的实现关键在于文件数据读取与贮存于适当的结构体成员中。应当注意的是下一个排序是建立在前一个排

6、序的基础上。例如下面程序段就是排序算法:for(i=0;!feof(fp);i+)fscanf(fp,"%s %d %d %d",coui.name,&coui.gold,&c oui.silver,&coui.bronze);for(j=0;j<i;j+)sumj=couj.gold+couj.silver+couj.bronze;for(i=0;i<j;i+)for(n=i;n<j;n+)if(sumi<sumn)T=coui;t=sumi;coui=coun;sumi=sumn;coun=T;sumn=t;4、关于查询算

7、法本系统主要目的就是查找数据。数据处理和修改首要任务就是找到要修改数据的位置。这就需要运用到字符串对比函数将输入的数据和文本中的数据尽心比较。例如以下程序段就运用了此算法:for(i=0;!feof(fp);i+)fscanf(fp,"%s %d %d %d",coui.name,&coui.gold,&coui.silver,&coui.bronze);for(j=0;j<i;j+)if(strcmp(couj.name,name)=0)五、个人总结本次课设是对C 语言全方位考查。既是学校对学生学习情况的考查,也是学生自己对自己C 语言掌握情

8、况的一次真正的检验。在这一周的课设过程当中及时为完成学校交给的任务股市对自己在基本知识和实践能力的一次全方位的提升。在课设过程中同学们充分发挥了互相帮助互相交流、互相学习的良好学习方法。但我觉得系统的编写更多的应该是独立的思考编写出自己对题目对程序的理解,编出自己的特色。自我感觉课设一周的学习比我一年的理论的学习学到的东还要多。像这种实践环节对于理工科的学生来说还是多多益善。无论是学校还是老师或者是同学都应当给予足够的重视。而我编写的系统首先不管好坏他完全出自我个人的想法。代表了我个人对 C 语言的理解,对这个系统的理解。我编写的系统源程序可能有点长,但是它很好地体现了模块化的思想。合理的运用

9、不同的操作语句,使程序的主线思路非常明了。而缺点则是一方面在数据的输入时可能会出现重复的情况。另一方面,由于程序较长在编译和运行时刻能反应稍慢。对题目的评价方面,我觉得在排序要求方面不应当先执行总奖牌数的排序,应先进行金牌排序。六、参考文献谭浩强 C程序设计北京:清华大学出版社,2005七、源程序xt","a");if(fp=fopen("奥运会金牌统计信息.txt","a")=NULL)printf(" 文件打开失败 n");exit(0);elseprintf(" 请输入您想录入的国家数并按

10、回车键确认 n");scanf("%d",&n);printf(" 请录入国家名并按回车键确认n");for(i=0;i<n;i+)scanf("%s",;fprintf(fp,"%s %d %d %dn",;fclose(fp);main();void medal()xt","r");if(fp=fopen("奥运会金牌统计信息.txt","r")=NULL)printf(" 文件打开失败 n");e

11、xit(0);elsefor(i=0;!feof(fp);i+)fscanf(fp,"%s %d %d %d",coui.name,&coui.gold,&coui.silver,&coui.bronze);for(j=0;j<i;j+)if(strcmp(couj.name,name)=0)printf(" 请录入金牌数、银牌数、铜牌数中间用空格隔开并按回车键确认n");scanf("%d%d %d",&couj.gold,&couj.silver,&couj.bronze);b

12、reak;if(j>=i)printf(" 无此国家信息! 请先执行操作1录入国家信息。n");exit(0);fclose(fp);fp=fopen(" 奥运会金牌统计信息 .txt","w"); if(fp=fopen(" 奥 运 会 金 牌 统 计 信息.txt","w")=NULL)printf(" 文件打开失败 n");exit(0);elsefor(n=0;n<i-1;n+)fprintf(fp,"%s %d %d %dn",cou

13、n.name,coun.gold,coun.silver,coun.bronze);fclose(fp);main();void seek()xt","r");if(fp=fopen("奥运会金牌统计信息.txt","r")=NULL)printf(" 文件打开失败 n");exit(0);elsechar name10010;printf(" 请输入您想查询的国家数并按回车键确认 n");scanf("%d",&n);printf(" 请输入欲查

14、询的国家名并按回车键逐一确认 n");for(j=0;j<n;j+)scanf("%s",namej);printf(" 国名金银铜 nn");for(i=0,j=0;!feof(fp);i+)fscanf(fp,"%s %d %d %dn",&,&,&if(strcmp(namej,=0)printf("%s%d%d%dnn",;j+;rewind(fp);elsecontinue;fclose(fp);main();void gold()xt","r&

15、quot;);if(fp=fopen("奥运会金牌统计信息.txt","r")=NULL)printf(" 文件打开失败 n");exit(0);elsefor(i=0;!feof(fp);i+)fscanf(fp,"%s %d %d %d",coui.name,&coui.gold,&coui.silver,&coui.bronze);for(j=0;j<i;j+)sumj=couj.gold+couj.silver+couj.bronze;for(i=0;i<j;i+)for

16、(n=i;n<j;n+)if(sumi<sumn)T=coui;t=sumi;coui=coun;sumi=sumn;coun=T;sumn=t;n=0;loop: printf(" 请输入您需查询的金牌数并按回车键确认 n");scanf("%d",&s);n=0;printf(" 国名金银铜总成绩nn");for(i=0;i<j;i+)if(coui.gold=s)printf("%s %d %d %d % dnn",coui.name,coui.gold,coui.silver,co

17、ui.br onze,sumi);n+;if(n=0)printf(" 抱歉!无此金牌信息。请重新输入 nn");goto loop;fclose(fp);main();void grade()xt","r");if(fp=fopen("奥运会金牌统计信息.txt","r")=NULL)printf(" 文件打开失败 n");exit(0);elsefor(i=0;!feof(fp);i+)fscanf(fp,"%s %d %d %d",coui.name,&

18、;coui.gold,&coui.silver,&coui.bronze);for(j=0;j<i;j+)sumj=couj.gold+couj.silver+couj.bronze;for(i=0;i<j;i+)for(n=i;n<j;n+)if(sumi<sumn)T=coui;t=sumi;coui=coun;sumi=sumn;coun=T;sumn=t;n=0;loop: printf(" 请输入您需查询的总成绩并按回车键确认 n");scanf("%d",&s);n=0;printf("

19、; 国名金银铜总成绩nn");for(i=0;i<j;i+)if(sumi=s)printf("%s%d%d%d%dnn",coui.name,coui.gold,coui.silver,coui.bronze,sumi);n+;if(n=0)printf(" 抱歉!无此金牌信息。请重新输入 nn");goto loop;fclose(fp);main();void statistic()xt","r");if(fp=fopen("奥运会金牌统计信息.txt","r")

20、=NULL)printf(" 文件打开失败 n");exit(0);elsefor(i=0;!feof(fp);i+)fscanf(fp,"%s %d %d %d",coui.name,&coui.g old,&coui.silver,&coui.bronze);for(j=0;j<i;j+)sumj=couj.gold+couj.silver+couj.bronze;for(i=0;i<j;i+)for(n=i;n<j;n+)if(sumi<sumn)T=coui;t=sumi;coui=coun;sum

21、i=sumn;coun=T;sumn=t;for(i=0;i<j;i+)for(n=i;n<j;n+)if(sumi=sumn)&&(coui.gold<coun.gold)T=coui;t=sumi;coui=coun;sumi=sumn;coun=T;sumn=t;for(i=0;i<j;i+)for(n=i;n<j;n+)if(sumi=sumn)&&(coui.gold=coun.gold)&&(coui.silver<coun.silver)T=coui;t=sumi;coui=coun;sumi=sumn;coun=T;sumn=t;printf("*奖牌榜*nn");printf(" 国名金银铜总成绩nn");for(i=1;i<j-1;i+)printf("%s%d%d%d%dnn",coui.name,coui.gold,coui.silver,coui.bronze,sumi);fclose(fp);main();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1