C综合练习~比赛评分系统

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>

#define N 10 
#define M 5 
	
	int add = N-1;

    //int sum[N]={0},Max[N],Min[N];
    int sum[N]={0}; 
	 
    float aver[N];
	

struct player

  {
		int num;
		
		char name[10];
		
		int score[M];
	//	int  Max[N];
	//	int  Min[N];

   };

 void Inistplayer(struct player a[],int n)

	{
		
		
		int i;
		printf("请分别输入%d位选手的信息(例:1 小赵):\n",n);		
		for(i=0;i<n;i++)
		{
		scanf("%d %s",&a[i].num,&a[i].name);
		
		//printf("您已成功录入选手信息为:%S号选手 姓名为:%s",a[i].num,a[i].name);	
		}
	
	}

 void Inputscore(struct player *p,int n)

  {
	
	int i;
	
	for(i=0;i<n;i++)
	{ 
	printf("请第%d位评委打分:",i+1);
	scanf("%d",p->score[i]);//输入一个整数值到p所指结构体变量
	}
	
  }

 void sort(struct player a[],float b[],int n)//???

 {

		int i,k,j,t;
		
		float temp;//? 
		
		char str[8];//?
		
		for(i=0;i<n;i++)

   {

		k=i;		
		for(j=i+1;j<n;j++)
	    if(b[k]>b[j])
		 k=j;
		
		if(k!=i)
       {
		temp=b[i];
		
		b[i]=b[k];
		
		b[k]=temp;
		
		strcpy(str,a[i].name);  //把从src地址开始且含有NULL结束符的字符串复制到a[i]数组中 
		
		strcpy(a[i].name,a[k].name);
		
		strcpy(a[k].name,str);
		
		t=a[i].num;
		
		a[i].num=a[k].num;
		
		a[k].num=t;

      } 

   }

 }

  void main()

{

		int flag=1,n,i,m,j;
		int as;
		int bs;
		struct player a[N];
		
		FILE *fp;//定义一个fp指针 
		
		fp = fopen("选手信息汇总.txt","w+");
		
		printf("\n\n\n\n\t\t\t\t****************欢迎使用木子比赛评分系统****************\t\n\n");
		
		time_t t;
		struct tm *pt;
		char *pc;
		time(&t);
	    pc=ctime(&t);
	
		printf("\t\t\t\t当前时间为:%s\t\t\n",pc);
		pt=localtime(&t);
		
		printf("\t\t\t\t * 1. 输入选手基本信息 \n");
		
		printf("\t\t\t\t * 2. 评委打分 \n");
		
		printf("\t\t\t\t * 3. 选手成绩显示 \n");
		
		printf("\t\t\t\t * 4. 成绩排序 \n");
		
		printf("\t\t\t\t * 5. 数据查询 \n");
		
		printf("\t\t\t\t * 6. 写入数据文件,并生成文本文档。 \n");
		
		printf("\t\t\t\t * 7. 退出系统 \n");
		
		printf("\t\t\t\t********************************************************\n\n");

  while(flag)

   {

		printf("请输入要进行的操作编号:\t\n");
		scanf("%d",&n);

		switch(n)

  {

		case 1:
		
		printf("请输入选手个数:\n");
		scanf("%d",&as);
		
		Inistplayer(a,as);
		
		break;
		
		case 2:
		printf("请输入评委个数:\n");
		scanf("%d",&bs); 
		
		for(i=0;i<as;i++)
   {
        
		int j;
		printf("第%d位选手的成绩:\n",i+1);
		for(j=0;j<bs;j++)

     {
		 printf("请第%d位评委打分:",j+1);
		 scanf("%d",&a[i].score[j]);
     }
         printf("\n");

   }
     break;

    case 3:

		for(i=0;i<as;i++)
		{
		printf("第%d位选手的成绩为:\n",i+1);		
			for(j=0;j<bs;j++)
			{
			printf("%d\t\n",a[i].score[j]);		
			}				
		}

    break;

	case 4:
	//	printf("参赛选手的平均成绩(在去除最高和最低成绩后得到的)排名为:\n");
	printf("参赛选手的平均成绩排名为:\n"); 
		
		for(i=0;i<as;i++)
		
		{
		
	//	Max[i]=a[i].score[0];
		
	//	Min[i]=a[i].score[0];
		
		for(j=0;j<bs;j++)
		
		{		
		sum[i]+=a[i].score[j];		
	//	if(Max[i]<a[i].score[j]) Max[i]=a[i].score[j];		
	//	if(Min[i]>a[i].score[j]) Min[i]=a[i].score[j];		
		}
		
		//aver[i]=(float)(sum[i]-Max[i]-Min[i])/(M-2);
		aver[i]=(float)(sum[i])/(M);
		}
		
		sort(a,aver,as);		
		for(i=0;i<as;i++)
		{
	//	int mc;
	//	mc=as-i;		
		printf("第%d名为:%s 平均成绩为:%5.2f\n",i+1,a[i].name,aver[i]);	
		}	
	break;

	case 5://数据查询 
		printf("你想查询选手的参赛号:");
		
		scanf("%d",&m);
		
		for(i=0;i<as;i++)
		{
		
		if(a[i].num==m)
	//	Min[i]
		{
	//	printf("%d号选手: %s\n总分:%d \n最高分:%d,最低分:%d\n平均分(去掉一个最高分和一个最低分之后的成绩):%5.2f\n",a[i].num,a[i].name,sum[i],Max[i],Min[i],aver[i]);
	//	printf("%d号选手: %s\n总分:%d \n最高分:%d,最低分:%d\n平均分(去掉一个最高分和一个最低分之后的成绩):%5.2f\n",a[i].num,a[i].name,sum[i],a[i].Max,a[i].Min,aver[i]);
		printf("%d号选手: %s\n平均分:%5.2f\n",a[i].num,a[i].name,aver[i]);
	//	printf("\n");
		}
		 
	   }
     break;
    case 6:
		printf("正在将数据写入文件中...\n");
		fprintf(fp,"本场比赛的开始时间为:%s \n",pc);
		for (i = 0;i<as;i++)
	
		{
		fprintf(fp,"选手排名为:%d ",as-i);
		fprintf(fp," 选手编号为:%d ",a[i].num);
		
		fprintf(fp," 姓名为:%s ",a[i].name);
	//	fprintf(fp," 当前时间为:%s \n",pc1);
    	fprintf(fp,"总成绩为:%d ",sum[i]);
     	
	//	fprintf(fp,"最高分为:%d ",Max[i]);
	//	fprintf(fp," 最低分为:%d ",Min[i]);
		
		fprintf(fp,"选手的平均成绩为:%5.2f \n\n",aver[i]);
		
		}
		fprintf(fp,"各选手成绩明细:\n");
			for(i=0;i<as;i++)
		{
		fprintf(fp,"%d号选手的成绩为:\n",a[i].num);		
			for(j=0;j<bs;j++)
			{
			fprintf(fp,"%d\t\n",a[i].score[j]);		
			}				
		}
		
		fclose(fp);
		
		printf("数据写入成功!已在程序对应目录下生成文本文档。\n");
		
	break;

		case 7:
		printf("您已成功退出本系统,欢迎下次使用。\n"); 	
		exit(0);
		
		break;
		
		default:
		//flag=0;
	    printf("目录中不存在此选项。请您核对目录表后进行操作。\n"); 
		
	}
		
	}
//	return main();		
}


 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值