




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计实践报告第1页共14页中南大学C语言程序设计实践报告题目校际运动会管理系统学生姓名XXXX学号XXXXXXXXXX指导教师XXXXXX学院信息科学与工程学院专业班级XXXXXXXXXXXX完成时间2012年06月XX日校际运动会管理系统实验要求1、需要处理的基础数据学校信息:学校编号、学校名称、男子竞赛项目、女子竞赛项目、项目积分、总分等运动员信息:运动员编号、所属学校、姓名、性别、年龄、参赛项目、成绩、名次、积分等2、系统的基本功能基本信息输入:输入学校、运动员的基本信息竞赛信息输入:(1)根据运动员的参赛项目和获取名次,自动给予运动员相应的积分:第1名得分5,第2名得分3,第3名得分2,其他名次不得分;(2)根据运动员所属的学校,自动给学校的相应竞赛项目加上积分;信息查询:(1)查询学校信息(2)查询运动员信息成绩排序按照分数从高到低,对学校的团体名次、学校的男子或女子竞赛名次进行排序。二、总体设计校际运动会管理系统包括的函数有:menu();//主菜单(用户界面)addSchoolInfo();//录入学校基本信息addAthleteInfo();//录入运动员基本信息addProjectInfo();//录入比赛成绩信息searchSchoolInfo();//查询学校信息searchAthleteInfo();//查询运动员信息sortSchool();//学校成绩排序versionInfo();//系统版本信息显示main();//主函数系统功能模块:versionInfo()exit()addSchoolInfo()addAthleteInfo()addProjectInfo()searchSchoolInfo()searchAthleteInfo()sortSchool()menu()main()versionInfo()exit()addSchoolInfo()addAthleteInfo()addProjectInfo()searchSchoolInfo()searchAthleteInfo()sortSchool()menu()main() 详细设计#include<stdio.h>#include<string.h>#defineSCN10#defineATN30//构造学校结构体structschool{ intnum; charname[12]; intf_score; intm_score; intscore;}sc[SCN];//构造运动员结构体structathlete{ intnum; charsc_name[12]; charname[12]; intsex; intage; charproject[12]; intscore; intrank; ints_score;}at[ATN];intsNo=0;intaNo=0;//菜单voidmenu(){ printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("┃校级运动会管理系统┃\n"); printf("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"); printf("┃1.录入学校信息2.录入运动员信息┃\n"); printf("┃3.录入竞赛信息4.查询学校信息┃\n"); printf("┃5.查询运动员信息6.成绩排序┃\n"); printf("┃7.版本信息0.退出系统┃\n"); printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf("\n");}//插入学校信息的方法voidaddSchoolInfo(){ intn,i=1; printf("请问你要录入多少个学校信息:"); scanf("%d",&n); while(n--){ printf("请输入第%d个学校编号:",i); scanf("%d",&sc[sNo].num); printf("请输入第%d个学校名称:",i); scanf("%s",sc[sNo].name); printf("第%d个学校信息录入完毕。\n",i); i++; sNo++; }}voidaddAthleteInfo(){//插入运动员基本信息的方法 intn,i=1; printf("请问你要录入多少个运动员信息:"); scanf("%d",&n); while(n--){ intj,k=1; printf("请输入第%d个运动员编号:",i); scanf("%d",&at[aNo].num); while(k){printf("请输入第%d个运动员所在学校:",i); scanf("%s",at[aNo].sc_name);for(j=0;j<sNo;j++){if(strcmp(sc[j].name,at[aNo].sc_name)==0){k=0;break;}}if(j>=sNo){printf("运动员所在学校不存在,请确认后重新输入!\n");}} printf("请输入第%d个运动员姓名:",i); scanf("%s",at[aNo].name); printf("请输入第%d个运动员性别(1:男,0:女):",i); scanf("%d",&at[aNo].sex); printf("请输入第%d个运动员年龄:",i); scanf("%d",&at[aNo].age); printf("请输入第%d个运动员参赛项目:",i); scanf("%s",at[aNo].project); printf("第%d个运动员信息录入完毕。\n",i); i++; aNo++; }}//录入成绩的方法voidaddProjectInfo(){ inti,j,flag=1,num,rank,score; while(flag){ printf("请输入运动员编号、名次、成绩:"); scanf("%d%d%d",&num,&rank,&score); for(i=0;i<aNo;i++){ if(num==at[i].num){ //按照编号查找对应运动员 at[i].rank=rank; at[i].score=score; if(rank==1)at[i].s_score=5; //按照名次给予运动员相应积分 elseif(rank==2)at[i].s_score=3; elseif(rank==3)at[i].s_score=2; elseat[i].s_score=0; for(j=0;j<sNo;j++){ if(strcmp(sc[j].name,at[i].sc_name)==0){ //运动员所在学校匹配 sc[j].score+=at[i].s_score; //对应学校加分 if(at[i].sex==1)sc[j].m_score+=at[i].s_score; elsesc[j].f_score+=at[i].s_score; break; } } break; } } if(i>=aNo){printf("您要插入的学生不存在!\n");} printf("是否继续录入竞赛信息,1:是,0:否。"); scanf("%d",&flag); printf("\n"); }}//查询学校信息的方法voidsearchSchoolInfo(){ inti; charname[12]; printf("请输入要查询的学校名称:"); scanf("%s",name); for(i=0;i<sNo;i++){ printf("%d",i); if(strcmp(name,sc[i].name)==0){ //匹配名字输出信息 printf("您要查询的信息如下:\n"); printf("学校编号:%d\n",sc[i].num); printf("学校名称:%s\n",sc[i].name); printf("男子总分:%d\n",sc[i].m_score); printf("女子总分:%d\n",sc[i].f_score); printf("团体总分:%d\n",sc[i].score); break; } } if(i>=sNo)printf("您所查询的信息不存在。\n");}//查询运动员信息的方法voidsearchAthleteInfo(){ inti; charname[12]; printf("请输入要查询的运动员名称:"); scanf("%s",name); for(i=0;i<aNo;i++){ if(strcmp(name,at[i].name)==0){ //匹配名字输出信息 printf("您要查询的信息如下:\n"); printf("运动员编号:%d\n",at[i].num); printf("所在学校:%s\n",at[i].sc_name); printf("运动员姓名:%s\n",at[i].name); if(at[i].sex==1)printf("运动员性别:男\n"); elseprintf("运动员性别:女\n"); printf("运动员年龄:%d\n",at[i].age); printf("运动员参赛项目:%s\n",at[i].project); printf("运动员成绩:%d\n",at[i].score); printf("运动员名次:%d\n",at[i].rank); printf("运动员积分:%d\n",at[i].s_score); break; } } if(i>=aNo)printf("您所查询的信息不存在!\n");}//学校成绩排序方法voidsortSchool(){ structschoolsort[SCN],temp; inti,j,c,max; for(i=0;i<sNo;i++){ sort[i]=sc[i]; } printf("请选择按照排序方式(1:团体总分,2:女子总分,3:男子总分):"); scanf("%d",&c); switch(c){ case1: for(i=0;i<sNo;i++){ max=sort[i].score; for(j=i;j<sNo;j++){ if(sort[j].score>max){ max=sort[j].score; temp=sort[i]; sort[i]=sort[j]; sort[j]=temp; } } } for(i=0;i<sNo;i++){ printf("第%d名:%s(分数:%d)\n",i+1,sort[i].name,sort[i].score); } break; case2: for(i=0;i<sNo;i++){ max=sort[i].f_score; for(j=i;j<sNo;j++){ if(sort[j].f_score>max){ max=sort[j].f_score; temp=sort[i]; sort[i]=sort[j]; sort[j]=temp; } } } for(i=0;i<sNo;i++){ printf("第%d名:%s(分数:%d)\n",i+1,sort[i].name,sort[i].f_score); } break; case3: for(i=0;i<sNo;i++){ max=sort[i].m_score; for(j=i;j<sNo;j++){ if(sort[j].m_score>max){ max=sort[j].m_score; temp=sort[i]; sort[i]=sort[j]; sort[j]=temp; } } } for(i=0;i<sNo;i++){ printf("第%d名:%s(分数:%d)\n",i+1,sort[i].name,sort[i].m_score); } break; }}voidversionInfo(){printf("校际运动会管理系统\n\n\n");printf("1、需要处理的基础数据\n");printf("学校信息:学校编号、学校名称、男子竞赛项目、女子竞赛项目、\n");printf("项目积分、总分等\n");printf("运动员信息:运动员编号、所属学校、姓名、性别、年龄、参赛\n");printf("项目、成绩、名次、积分等\n");printf("2、系统的基本功能\n");printf("基本信息输入:输入学校、运动员的基本信息\n");printf("竞赛信息输入:\n");printf("(1)根据运动员的参赛项目和获取名次,自动给予运动员相\n");printf("应的积分:第1名得分5,第2名得分3,第3名得分2,\n");printf("其他名次不得分;\n");printf("(2)根据运动员所属的学校,自动给学校的相应竞赛项目加\n");printf("上积分;\n");printf("信息查询:\n");printf("(1)查询学校信息\n");printf("(2)查询运动员信息\n");printf("成绩排序:\n");printf("按照分数从高到低,对学校的团体名次、学校的男子或女\n");printf("子竞赛名次进行排序。\n\n\n");printf("设计者:\n");printf("指导老师:\n");printf("中南大学\n");printf("2012年06月21日\n");}intmain(){ intset,flag=1; while(flag){ menu(); printf("请输入你的选择:"); scanf("%d",&set); switch(set){ case1:addSchoolInfo();break; case2:addAthleteInfo();break; case3:addProjectInfo();break; case4:searchSchoolInfo();break; case5:searchAthleteInfo();break; case6:sortSchool();break; case7:versionInfo();break; case0:flag=0; } }}功能介绍,数据结构及用法说明main()是整个系统的主函数,设置了用户的主界面,用户进入界面可以通过选择进入各个子系统。用switch语句来对界面操作。menu()是系统的主界面,全部通过printf来实现。通过主函数对menu()的操作,用户可以按照自己的需求选择子系统:1选项是录入学校的基本信息2选项是录入运动员的基本信息3选项是录入运动员的成绩情况4选项查询学校信息5选项查询运动员信息6选项对学校排名用选择排序法进行排序并按名次显示7选项显示整个系统的版本信息8选项退出整个系统addSchoolInfo()是系统录入学校信息的函数,用输入函数scanf()和输出函数printf完成。可以一次选择输入多少个学校的信息。addAthleteInfo()是系统录入运动员基本信息的函数,运用C语言的strcmp()函数对学生的学校名和已录入的学校名进行匹配,当学生的学校名在系统中找不到时,系统会提示,从而提高系统的安全性。addProjectInfo()是系统运动员成绩情况插入的函数,由于运动员的名字可能重名,所以采用运动员编号的形式对运动员成绩进行插入,保证了成绩的唯一性,按照名次给予运动员相应的积分,同样用strcmp()函数匹配运动员对应的学校,从而给对应的学校添加相应的积分以便于在sortScho
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 采购合同合同管理专业成果展示重点基础知识点
- 采购合同风险法律咨询重点基础知识点
- 工程保证金合同范例
- 物业人员合同范例
- 二零二五版房地产开发商项目抵押合同范例
- 借款合同、收据范例
- 微商合作协议合同书
- 健身房私教合同范例x二零二五年
- 房产最高额抵押担保合同书二零二五年
- 环保设备清洗合同范本
- 美国睡眠医学会睡眠及其相关事件判读手册规则、术语和技术规
- 国外保护非物质文化遗产的现状
- 动火作业安全检查表
- 李大钊简介完
- 中考英语阅读理解:图表类(附参考答案)
- 农作物病虫害防治服务投标方案(技术标)
- 【班级管理表格】学生检讨反思承诺书
- GSV2.0反恐安全管理手册
- 应用文写作说课稿 终稿
- 单位车辆领取免检标志委托书范本
- 行政公文写作-决定(应用文写作课件)
评论
0/150
提交评论