收藏 分销(赏)

运动会管理系统-毕业论文.doc

上传人:可**** 文档编号:2177857 上传时间:2024-05-22 格式:DOC 页数:29 大小:383.50KB 下载积分:10 金币
下载 相关 举报
运动会管理系统-毕业论文.doc_第1页
第1页 / 共29页
运动会管理系统-毕业论文.doc_第2页
第2页 / 共29页


点击查看更多>>
资源描述
摘要 运动会管理系统是典型的信息管理系统,该系统属简易类型,可以完成运动会管理中的基本操作,包括数据信息的录入、数据的修改、数据的删除和数据的显示。本文中的系统程序合理,简单易懂。同时,对系统的开发原理,系统的功能特点和设计方案进行了介绍。通过流程图和截图说明了系统的运行情况,接着又进行数据测试,得到结果进行分析,得出本系统的优点和不足。根据更高的需求,可以在这简易系统的原理下,可以进一步增加数据,提高实用性。 关键词:运动会;管理系统;c语言 Abstract Games management system is typical of information management systems, we made this system is a simple type, you can complete the games management the basic operations, including data entry, data modification, data deletion and data display. This article first to use VC++6.0 to write programming tools, the program reasonable, simple and understandable. At the same time, principles of system development, system characteristics and design features were introduced. Provides flow diagrams and screenshots illustrate the operation of the system; data went on to have a test, analyze results and concluded that the strengths and weaknesses of the system. According to the higher demand, can in principle with this simple system, data can be further increased, improving usability. Keywords: sports competition;management system ;c language 目 录 1概述 1 1.1设计题目及要求 1 1.2系统功能需求分析 1 2总体设计 3 2.1系统功能模块图 3 3详细设计 4 3.1工作流程图 4 3.1.1 添加运动员数据函数 4 3.1.2显示运动员数据函数 6 3.1.3删除运动员数据函数 7 3.1.4更改运动员数据函数 8 4调试分析 10 4.1测试数据及其结果分析 10 4.2源程序 13 5总结 23 参考文献 24 致谢 25 1概述 本运动会管理系统是典型的信息管理系统,我们所做的该系统属简易类型,可以完成运动会管理中的基本操作,可以帮助裁判员记录和分析运动员的成绩以及排名情况,有效的减少裁判员的工作压力,还可以减少不必要的错误出现。 1.1设计题目及要求 1.《运动会成绩管理系统》的界面为汉字界面,输出输入均用汉字,并有操作提示,让用户如何操作; 2.添加运动员数据:录入运动员信息,录入参赛运动员数量、编号、姓名等; 3. 录入成绩:录入运动员各项目的成绩; 4.查询所有运动员信息:并可自定义规则进行排序; 5. 删除运动员数据:可删除各个运动员的信息; 6. 修改运动员数据:可以修改运动员的数据。 1.2系统功能需求分析 对程序设计题目的分析可知,整个程序的设计实现大致分为十一个模块,每一个模块对应一个函数。在这些函数当中,添加运动员数据函数,删除数据函数,修改数据函数和显示数据函数是严格按照题目的要求,而按某项成绩排序函数属于附加功能。读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。 1.添加运动员数据函数 :主要实现程序最初运行时运动员数据的录入以及其后的运行中运动员数据的追加功能; 2. 删除运动员数据函数:实现的功能是按照号码对运动员的数据记录进行删除; 3 .排序函数 :按照题目的具体要求实现的是某项成绩的递减排序以及名次显示,其中总成绩相同者名次相同; 4. 更改数据函数:可以实现对运动员的各项信息进行修改; 5. 显示函数:实现的是显示目前所有的有效运动员记录信息。 除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。 每一个运动员记录都包含号码、姓名,以及百米赛跑、铅球、跳高和跳远四门成绩,在程序当中,将运动员记录类型定义为结构体类型,添加以及追加的运动员信息直接写入E盘的student.txt文件中,其它函数每次对运动员记录的访问,其数据来源都是student.txt文件,这样做不但可以保证运动员数据的一致性,而且可以对运动员数据进行永久保存,保证每次运行程序都可以采用原来的数据。 2总体设计 2.1系统功能模块图:《运动会成绩管理系统》主要由四部分管理模块组成,分别是添加模块、显示模块、删除模块和更改模块,图示如下: 运动会成绩管理系统 添加运动员数据 显示运动员数据 删除运动员数据 更改运动员数据 图2.1系统功能模块图 3详细设计 3.1工作流程图 显示一系列功能选项 输入n,判断n是否是1--9 根据n的值调用各模块函数 本程序主要由11个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,添加运动员数据函数、删除数据函数、更改数据函数、显示数据函数是程序中较为核心的部分,此外还可以对运动员的成绩进行排序。下面分别进行说明。 N Y 图3.1主函数数据工作流程图 Y 输入n 判断n 添加数据函数 开始 选择其他操作 N 3.1.1添加运动员数据函数 图3.1添加数据流程图 具体程序段如下: { FILE *fp; int n,i; struct student stu; if((fp=fopen("e:\\student.txt","a"))==NULL) //如果文件已经存在,可以追加学生信息 { if((fp=fopen("e:\\student.txt","w"))==NULL) // 文件不存在时,创建新文件,输入学生信息 { printf("文件打开失败!\n"); return; } } printf("请输入要添加的运动员数量,按回车键确认:"); scanf("%d",&n); for(i=1;i<=n;i++) { printf("\n请输入第%d个运动员的号码、姓名,用空格分开,并按回车键确认:\n",i); scanf("%s%s",stu.num,stu.name); printf("\n请输入第%d个运动员的百米赛跑、铅球、跳高和跳远四项成绩,用空格分开,并按回车键确认:\n",i); scanf("%f%f%f%f",&stu.baimi,&stu.qianqiu,&stu.tiaogao,&stu.tiaoyuan); fprintf(fp,"%s %s %f %f %f %f\n",stu.num,stu.name,stu.baimi,stu.qianqiu,stu.tiaogao,stu.tiaoyuan); } fclose(fp); } 输入n 判断n 显示运动员数据 开始 选择其他操作 N 3.1.2显示运动员数据函数 Y 图3.2显示数据流程图shhhkjjjjkkjshufvhbvjxvfjiioszjioziokfjdskdfjvkkdkliuliuchengDDSCDCKJHKKJCKDCNMNMKKLIUCHENGTU 具体程序段如下: { struct student stu[N]; int i,n; n=reads(stu); printf("*********************所有的学生信息如下**********************\n\n"); printf(" 序号 号码 姓名 百米赛跑 铅球 跳高 跳远 \n"); printf("*************************************************************\n"); for(i=0;i<n;i++) printf("\n%3d%12s%11s%11.2f%12.2f%11.2f%11.2f\n",i+1,stu[i].num,stu[i].name,stu[i].baimi,stu[i].qianqiu,stu[i].tiaogao,stu[i].tiaoyuan); getch(); } 3.1.3删除运动员数据函数 输入n 判断n 删除运动员数据 开始 选择其他操作 N Y 图3.3删除数据流程图 具体程序段如下: { struct student stu[N]; char number[20]; int n,i,j; n=reads(stu); printf("\n请输入要删除信息运动员号码,按回车键确认:"); scanf("%s",number); for(i=0;i<n;i++) if(strcmp(number,stu[i].num)==0) break; if(i>=n) { printf("没有找到该运动员信息!\n"); return; } else { for(j=i+1;j<n;j++) stu[j-1]=stu[j]; } save(stu,n-1); printf("删除成功!\n"); } 3.1.4 更改运动员数据函数 输入n 判断n 更改运动员数据 开始 选择其他操作 Y N 图3.4更改数据流程图 具体程序段如下: { struct student stu[N]; int n,i; char number[20]; printf("\n请输入要更改信息的学生学号,按回车键确认:"); scanf("%s",number); n=reads(stu); for(i=0;i<n;i++) if(strcmp(number,stu[i].num)==0) break; if(i>=n) { printf("无此学生信息!"); return; } printf("\n请输入更改后学生的号码,姓名,百米赛跑、铅球、跳高、跳远四门成绩,按回车键确认:\n"); scanf("%s%s%f%f%f%f",stu[i].num,stu[i].name,&stu[i].baimi,&stu[i].qianqiu,&stu[i].tiaogao,&stu[i].tiaoyuan); save(stu,n); } 4调试分析 4.1测试数据及结果分析 图4.1主菜单函数界面 图4.2数据录入 图4.3 数据显示 图4.4 数据更改 图4.5 数据排序 按照测试结果初步分析可见,当n值的输入符合预先设定在1—9之间时,将会执行相对应的函数模块;当n值不在这个范围内时程序将会出现错误提示,主界面将会再次弹出,用户需重新输入。 总的来说,本程序基本符合设计要求,可以实现设计要求的各项操作。本系统操作比较简单,提示清晰。但是本系统还是存在一些不足,如界面比较简单等,具有一定的局限性。 4.2源程序: #include<stdio.h> #include<stdlib.h> #include"conio.h" #define N 20 struct student { char num[20]; char name[10]; float baimi; float qianqiu; float tiaogao; float tiaoyuan; }; void menu(); int reads(struct student stu[N]); void save(struct student stu[N],int n); void add(); void del(); void sort(); void kdie(); void keep(); void sheep(); void query(); void show(); void change(); void main() { int n; while(1) { menu(); printf("\n 请输入您要选择的操作序号,按回车键确认:"); scanf("%d",&n); switch(n) { case 1: add();break; case 2: show();break; case 3: del();break; case 4: change();break; case 5: sort();break; case 6:kdie();break; case 7: keep();break; case 8 :sheep();break; case 9: exit(0); default: printf("输入错误,请输入列表中存在的序号!\n "); } } } void menu() { printf("\n ************************* 运动员成绩管理系统********************"); printf("\n ************** 1 添加运动员数据 ************"); printf("\n ************** 2 显示运动员数据 ************"); printf("\n ************** 3 删除运动员数据 ************"); printf("\n ************** 4 更改运动员数据 ************"); printf("\n ************** 5 百米成绩排序 ************"); printf("\n ************** 6 铅球成绩排序 ************"); printf("\n ************** 7 跳高成绩排序 ************"); printf("\n ************** 8 跳远成绩排序 ************"); printf("\n ************** 9 退出 ************"); printf("\n********************************************************"); } int reads(struct student stu[N]) // 读取运动员文件中的内容 { FILE *fp; int i=0; if((fp=fopen("e:\\student.txt","r"))==NULL) { printf("文件打开失败!\n"); return 0; } else { for(i=0;!feof(fp);i++) scanf(fp,"%s %s %f %f %f %f\n",stu[i].num,stu[i].name,&stu[i].baimi,&stu[i].qianqiu,&stu[i].tiaogao,&stu[i].tiaoyuan); } fclose(fp); return i; } void save(struct student stu[N],int n) // 运动员信息改变后更新文件 { FILE *fp; int i=0; if((fp=fopen("e:\\student.txt","w"))==NULL) { printf("文件打开失败!\n"); return ; } else { for(i=0;i<n;i++) fprintf(fp,"%s %s %f %f %f %f\n",stu[i].num,stu[i].name,stu[i].baimi,&stu[i].qianqiu,stu[i].tiaogao,stu[i].tiaoyuan); } fclose(fp); } void add()/*添加运动员信息*/ { FILE *fp; int n,i; struct student stu; if((fp=fopen("e:\\student.txt","a"))==NULL) //如果文件已经存在,可以追加学生信息 { if((fp=fopen("e:\\student.txt","w"))==NULL) // 文件不存在时,创建新文件,输入学生信息 { printf("文件打开失败!\n"); return; } } printf("请输入要添加的运动员数量,按回车键确认:"); scanf("%d",&n); for(i=1;i<=n;i++) { printf("\n请输入第%d个运动员的号码、姓名,用空格分开,并按回车键确认:\n",i); scanf("%s%s",stu.num,stu.name); printf("\n请输入第%d个运动员的百米赛跑、铅球、跳高和跳远四项成绩,用空格分开,并按回车键确认:\n",i); scanf("%f%f%f%f",&stu.baimi,&stu.qianqiu,&stu.tiaogao,&stu.tiaoyuan); fprintf(fp,"%s %s %f %f %f %f\n",stu.num,stu.name,stu.baimi,stu.qianqiu,stu.tiaogao,stu.tiaoyuan); } fclose(fp); } void show() // 运动员信息显示函数 { struct student stu[N]; int i,n; n=reads(stu); printf("*********************所有的学生信息如下**********************\n\n"); printf(" 序号 号码 姓名 百米赛跑 铅球 跳高 跳远 \n"); printf("*************************************************************\n"); for(i=0;i<n;i++) printf("\n%3d%12s%11s%11.2f%12.2f%11.2f%11.2f\n",i+1,stu[i].num,stu[i].name,stu[i].baimi,stu[i].qianqiu,stu[i].tiaogao,stu[i].tiaoyuan); getch(); } void del() /*运动员信息删除函数*/ { struct student stu[N]; char number[20]; int n,i,j; n=reads(stu); printf("\n请输入要删除信息运动员号码,按回车键确认:"); scanf("%s",number); for(i=0;i<n;i++) if(strcmp(number,stu[i].num)==0) break; if(i>=n) { printf("没有找到该运动员信息!\n"); return; } else { for(j=i+1;j<n;j++) stu[j-1]=stu[j]; } save(stu,n-1); printf("删除成功!\n"); } void change() //学生信息更改 { struct student stu[N]; int n,i; char number[20]; printf("\n请输入要更改信息的学生学号,按回车键确认:"); scanf("%s",number); n=reads(stu); for(i=0;i<n;i++) if(strcmp(number,stu[i].num)==0) break; if(i>=n) { printf("无此学生信息!"); return; } printf("\n请输入更改后学生的号码,姓名,百米赛跑、铅球、跳高、跳远四门成绩,按回车键确认:\n"); scanf("%s%s%f%f%f%f",stu[i].num,stu[i].name,&stu[i].baimi,&stu[i].qianqiu,&stu[i].tiaogao,&stu[i].tiaoyuan); save(stu,n); } void sort() // 按百米赛跑成绩排名 { struct student stu[N],temp; int i,j,n; n=reads(stu); for(i=0;i<n-1;i++) for(j=0;j<n-1;j++) { if(stu[j].baimi<stu[j+1].baimi){temp=stu[j];stu[j]=stu[j+1];stu[j+1]=temp;}} save(stu,n); j=1 ; printf("*********************百米赛跑成绩排序结果如下****************************\n\n"); printf(" 名次 号码 姓名 百米赛跑 成绩 \n"); printf("***********************************************************************\n"); for(i=0;i<n;i++) // 输出结果并排名 { if(stu[i].baimi==stu[i+1].baimi) printf("\n%3d%12s%11s%11.2f%11.2f%11.2f%11.2f\n",j,stu[i].num,stu[i].name,stu[i].baimi,stu[i].baimi); else printf("\n%3d%12s%11s%11.2f%11.2f%11.2f%11.2f\n",j++,stu[i].num,stu[i].name,stu[i].baimi,stu[i].baimi); } getch(); } void kdie() // 按铅球成绩排名 { struct student stu[N],temp; int i,j,n; n=reads(stu); for(i=0;i<n-1;i++) for(j=0;j<n-1;j++) { if(stu[j].qianqiu<stu[j+1].qianqiu){temp=stu[j];stu[j]=stu[j+1];stu[j+1]=temp;}} save(stu,n); j=1 ; printf("*********************铅球成绩排序结果如下****************************\n\n"); printf(" 名次 号码 姓名 铅球 成绩 \n"); printf("***********************************************************************\n"); for(i=0;i<n;i++) // 输出结果并排名 { if(stu[i].baimi==stu[i+1].qianqiu) printf("\n%3d%12s%11s%11.2f%11.2f%11.2f%11.2f\n",j,stu[i].num,stu[i].name,stu[i].qianqiu,stu[i].qianqiu); else printf("\n%3d%12s%11s%11.2f%11.2f%11.2f%11.2f\n",j++,stu[i].num,stu[i].name,stu[i].qianqiu,stu[i].qianqiu); } getch(); } void keep() // 按跳高成绩排名 { struct student stu[N],temp; int i,j,n; n=reads(stu); for(i=0;i<n-1;i++) for(j=0;j<n-1;j++) { if(stu[j].tiaogao<stu[j+1].tiaogao){temp=stu[j];stu[j]=stu[j+1];stu[j+1]=temp;}} save(stu,n); j=1 ; printf("*********************跳高成绩排序结果如下****************************\n\n"); printf(" 名次 号码 姓名 跳高 成绩 \n"); printf("***********************************************************************\n"); for(i=0;i<n;i++) // 输出结果并排名 { if(stu[i].tiaogao==stu[i+1].tiaogao) printf("\n%3d%12s%11s%11.2f%11.2f%11.2f%11.2f\n",j,stu[i].num,stu[i].name,stu[i].tiaogao,stu[i].tiaogao); else printf("\n%3d%12s%11s%11.2f%11.2f%11.2f%11.2f\n",j++,stu[i].num,stu[i].name,stu[i].tiaogao,stu[i].tiaogao); } getch(); } void sheep() // 跳远成绩远排名 { struct student stu[N],temp; int i,j,n; n=reads(stu); for(i=0;i<n-1;i++) for(j=0;j<n-1;j++) { if(stu[j].tiaoyuan<stu[j+1].tiaoyuan){temp=stu[j];stu[j]=stu[j+1];stu[j+1]=temp;}} save(stu,n); j=1 ; printf("*********************跳远成绩排序结果如下****************************\n\n"); printf(" 名次 号码 姓名 跳远 成绩 \n"); printf("***********************************************************************\n"); for(i=0;i<n;i++) // 输出结果并排名 { if(stu[i].tiaoyuan==stu[i+1].tiaoyuan) printf("\n%3d%12s%11s%11.2f%11.2f%11.2f%11.2f\n",j,stu[i].num,stu[i].name,stu[i].tiaoyuan,stu[i].tiaoyuan); else printf("\n%3d%12s%11s%11.2f%11.2f%11.2f%11.2f\n",j++,stu[i].num,stu[i].name,stu[i].tiaoyuan,stu[i].tiaoyuan); } getch(); } 5总结 这是大学以来的第一次上课程设计,感受很多,收获也很多。其中最重要的是做什么事都要自己动手,动脑。C语言课程设计在基本知识的基础上由老师引导,自己很多都靠自学,不明白的问老师,但由此自学能力得到了很大的培养。在设计过程中,我感觉到一点,程序是不能一气呵成的,至少一气呵成的程序不会尽善尽美,程序编写要一步一步的完成。我认为编写程序,首先对于要编的程序要有一个总体思路,要明确想要什么,只要把思路理清楚了,程序就好编写了,把程序分割成几个块,即多个函数,一块一块的编写;然后将分散的函数用另外的函数连接起来或者用main函数连接,到这一步,程序也就初步编成了,之后便是调试,检查错误;最后对已经编写好的程序进行一些修改添加,使它更加人性化。 系统的成功完成也不能离开老师和同学的帮助,体会到了团队合作的重要性。系统设计的过程也是一个不断摸索的过程。只有对所作题目有了清楚的认识和理解,有了思想上的充分准备,才能在设计过程中“胸有成竹“。当实际操作过程中遇到这样那样的困难,就通过查看资料、上网等方式解决。在整个过程中,需要不断的调试,更改代码。当中,我遇到了很多棘手问题。在不断思考、调试后,不仅锻炼了我的实际动手能力,更锻炼了我发现问题、分析问题的能力。 参考文献 [1]科钦.C语言程序设计.北京:电子工业出版社,1987:56-58 [2]徐君毅.C语言程序设计基础.上海:复旦大学出版社,1992:87-98 [3]李成付.C语言程序设计基础.北京:科学出版社,1992:42-67 [4]郝玉洁.C语言程序设计.北京:机械工业出版社,2000:63-88 [5]钱启平.C语言程序设计基础.北京:中国铁道出版社,2000:91-99 [6]李大友.C语言程序设计基础.北京:清华大学出版社,1999:58-98 [7]黄迪明.C语言程序设计.北京:电子科技大学出版社,1998:78-98 [8]姜仲秋.C语言程序设计基础.南京:南京大学出版社,1998:16-100 [9]李国昌.C语言程序设计基础.北京:科学出版社,1998:78-120 [10]谭浩强.C语言程序设计.北京:清华大学出版社,2000:74-129 致 谢 在本次课程设计中,我非常感谢在我遇到问题时耐心给我讲解和解决问题的老师和同学们。在老师的帮助下我不但完成了课程设计,而且也学到了很多知识,让我掌握了学习方法。同学之间的帮助,相互鼓励,以及相互探讨,给了我很大的信心,以及跨越式的进步。 在课程设计即将完成之际,回顾紧张但又充实的制作过程
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服