| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 523 人关注过本帖, 1 人收藏
标题:关于校运会成绩管理的问题,其中修改比赛成绩、数据读取及存储。三个功能不 ...
取消只看楼主 加入收藏
whscai
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-12-2
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:0 
关于校运会成绩管理的问题,其中修改比赛成绩、数据读取及存储。三个功能不知道怎么实现,求解答
完成校际运动会成绩管理功能,包括输入项目及参赛成绩,输入参赛学校,统计各校成绩并排序。
各项目名次取法有如下几种:
取前5名:第1名得分7,第2名得分5,第3名得分3,第4名得分2,第5名得分1;
取前3名:第1名得分5,第2名得分3,第3名得分2; 
用户自定义分数选择,并有查错功能(名次靠前的得分要高于名次靠后的得分)
【实现提示】 
(1)显示主菜单功能选项,包括初始化、输入比赛成绩、修改比赛成绩、成绩统计、数据读取及存储。
(2)初始化:从文件读取比赛项目和参赛学校;增加比赛项目及名称;增加参赛学校及名称;
(3)输入各比赛项目比赛成绩:选择项目,输入各名次的选手名及所属学校
(4)统计各学校总分并排序。
(5)输出显示所有参赛项目及已输入成绩,并提示未完成输入的项目。
(6)修改已输入比赛项目成绩:选择项目—>选择待修改名次—>修改该名次选手名及学校
(7)输出到文件,并能从文件进行数据的读取。


#include<stdio.h>
#include<string.h>
struct match   //声明一个比赛类型
{
int isMen;//判断是否为男子,1则为男子
char name[100];//比赛名字
char result[3][20];//比赛结果,存储前三名名字
char SchoolOfResult[3][20];//前三名学校名字
}allMatch[100];          //声明所有比赛,默认不超过100;
int main()
{
int i,j, z, n , m, w, temp_flag, flag;
char school[10][20];//学校名称
int score[3];//前三名加分
char temp_result[3][20];//存刚输入的比赛结果,前三名名字
char temp_SchoolOfresult[3][20];//存刚输入的比赛结果前三名学校名字
char temp_name[20];//存刚输入学校名字
int scoreOfSchool[10] = {0,0,0,0,0,0,0,0,0,0};//各学校总分,下标与school对应
printf("输入参赛学校总数、男子竞赛项目数量和女子项目数量:\n");
scanf("%d %d %d",&n,&m,&w);
//struct match allMatch[100];          //声明所有比赛,默认不超过100
printf("\n请输入学校名称:\n");
for(i = 0; i < n; i++)
{
scanf("%s",school[i]);//接受输入的学校名字
}
printf("\n请输入前三名可得分:\n");
for(i = 0;i < 3;i++)//接受输入的前三名加分
{
scanf("%d",&score[i]);
}
printf("\n接下来请输入比、比赛结果:\n(格式:比赛名称  第一名  学校  第二名  学校  第三名  学校)\n男子项目:\n");
for(i = 0; i < m;i++)//男子比赛结果,用for循环
{
allMatch[i].isMen = 1;
scanf("%s %s %s %s %s %s %s",temp_name,temp_result[0],temp_SchoolOfresult[0],temp_result[1],temp_SchoolOfresult[1],temp_result[2],temp_SchoolOfresult[2]);
    strcpy(allMatch[i].name , temp_name);
strcpy(allMatch[i].result[0] ,temp_result[0]);
strcpy(allMatch[i].SchoolOfResult[0],temp_SchoolOfresult[0]);
strcpy(allMatch[i].result[1] , temp_result[1]);
strcpy(allMatch[i].SchoolOfResult[1],temp_SchoolOfresult[1]);
strcpy(allMatch[i].result[2] , temp_result[2]);
strcpy(allMatch[i].SchoolOfResult[2],temp_SchoolOfresult[2]);
}//男子for循环
printf("\n女子项目:\n");
for(i = 0; i < w; i++)//女子比赛结果
{
allMatch[m+i].isMen = 0;
scanf("%s %s %s %s %s %s %s",temp_name,temp_result[0],temp_SchoolOfresult[0],temp_result[1],temp_SchoolOfresult[1],temp_result[2],temp_SchoolOfresult[2]);
strcpy(allMatch[m+i].name , temp_name);
strcpy(allMatch[m+i].result[0] ,temp_result[0]);
strcpy(allMatch[m+i].SchoolOfResult[0],temp_SchoolOfresult[0]);
strcpy(allMatch[m+i].result[1] , temp_result[1]);
strcpy(allMatch[m+i].SchoolOfResult[1],temp_SchoolOfresult[1]);
strcpy(allMatch[m+i].result[2] , temp_result[2]);
strcpy(allMatch[m+i].SchoolOfResult[2],temp_SchoolOfresult[2]);
}//女子for循环
printf("\n现在比赛结果输入完毕!您可以选择查询操作。\n");
temp_flag = 1;
while(temp_flag == 1){//判断是否退出,false则退出循环
    printf("--------------------------------------\n");
    printf("请选择要进行的操作");
printf("\n1.查看各学校总分 \n2.查看各学校各项目结果\n3.结束\n");
printf("--------------------------------------\n");
scanf("%d",&flag);//根据输入的数字选择操作
switch(flag)
{
case 1://输入0则
    for(i = 0 ; i < n; i++)
        {
        scoreOfSchool[i] = 0;
        }
printf("\n总共有%d个学校,分别是:\n",n);
for(i = 0; i < n;i++ )

{
printf("%s  ",school[i]);//首先打印出n个学校
}
printf("\n");
printf("\n以下是各个学校的得分情况:\n");
for(i = 0;i < (w+m);i++)//循环得到allMatch里的元素
{
for(z = 0;z < 3; z++)//z表示名次,0对应第一名
{
for(j = 0; j < n;j++)//循环与所有学校比较
{
if(strcmp(allMatch[i].SchoolOfResult[z],school[j])==0)//判定学校名字
{
scoreOfSchool[j] += score[z];//对应学校加对应的分数
}
}
}
}
for(i = 0;i < n ;i++)
{
printf("%s %d\n",school[i],scoreOfSchool[i]);//输出所以学校总分
}
break;
case 2://输入1则

printf("\n比赛详细情况:\n比赛项目 男子or女子 第一名(名字和学校)第二名(名字和学校)第三名(名字和学校)\n");
for(i = 0;i<(w+m);i++)
{
printf("     %s     ",allMatch[i].name);//输出比赛名字
if(allMatch[i].isMen==1)
{
    printf("男子          ");}
else printf("女子          ");
for(j = 0;j < 3;j++)
{
    printf("%s  ",allMatch[i].result[j]);//输出比赛的前三名 名字
printf("%s                ",allMatch[i].SchoolOfResult[j]);
}
printf("\n");
}
break;
case 3://输入3则
temp_flag = 0;//改为false,使得下次进入while结束
break;
}
}
return 0;
}
搜索更多相关主题的帖子: 运动会 校运会 统计 项目 学校 
2014-12-02 16:56
快速回复:关于校运会成绩管理的问题,其中修改比赛成绩、数据读取及存储。三个功 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017824 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved