C语言歌手比赛系统

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

C语言歌手比赛系统

普通学长   2022-06-02 我要评论

一、项目简介

对一次歌手比赛的成绩进行管理
输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。

二、任务概述

要求歌手比赛系统实现对学生基本信息(如编号、姓名、性别等)及十个评委的成绩的管理(增加、删除、修改或更新、查询、统计、保存到文件、从文件装载等操作)。

三、功能展示

四、思维导图

五、程序源码

#include<stdio.h>
#include<stdlib.h>
struct singer/*定义结构体*/ 
{

    int num;
    char name[10];
    float score[20];
    float aver;
    float sum;
    int ord;

}singer[100]; 


void singer_information(int b)
 /*输入选手信息*/ 
{
    int i;


    for(i=1;i<=b;i++)
    {
        printf("请输入选手编号:");
        scanf("%d",&singer[i].num);
        printf("请输入选手姓名:");
        scanf("%s",&singer[i].name);
    } 
}


int singer_score(int b)    
{
    int j,c;
    float a[50];
    for(j=1;j<=b;j++)
            {
                printf("\n请输入评委1对歌手%d的打分",j);
                scanf("%f",&singer[j].score[1]);
                printf("请输入评委2对歌手%d的打分",j);
                scanf("%f",&singer[j].score[2]);
                printf("请输入评委3对歌手%d的打分",j);
                scanf("%f",&singer[j].score[3]);
                printf("请输入评委4对歌手%d的打分",j);
                scanf("%f",&singer[j].score[4]);
                printf("请输入评委5对歌手%d的打分",j);
                scanf("%f",&singer[j].score[5]);
                printf("请输入评委6对歌手%d的打分",j);
                scanf("%f",&singer[j].score[6]);
                printf("请输入评委7对歌手%d的打分",j);
                scanf("%f",&singer[j].score[7]);
                printf("请输入评委8对歌手%d的打分",j);
                scanf("%f",&singer[j].score[8]);
                printf("请输入评委9对歌手%d的打分",j);
                scanf("%f",&singer[j].score[9]);
                printf("请输入评委10对歌手%d的打分",j);
                scanf("%f",&singer[j].score[10]);
                a[j]=singer[j].score[1]+singer[j].score[2]+singer[j].score[3]+singer[j].score[4]+singer[j].score[5]+singer[j].score[6]+singer[j].score[7]+singer[j].score[8]+singer[j].score[9]+singer[j].score[10];
                singer[j].sum=a[j];
            }
                
}


int singer_grade(int b)/* 歌手总成绩 */
{
    int a,c;
    float n[50],max,min;
    for(a=1;a<=b;a++)
    {
        max=singer[a].score[1];
        min=singer[a].score[1];
        for(c=1;c<=10;c++)
            {
                if(max<singer[a].score[c])   max=singer[a].score[c];
                if(min>singer[a].score[c])   min=singer[a].score[c];
            }
        n[a]=(singer[a].sum-max-min)/8.0;
        singer[a].aver=n[a];        
    }        
}

int order(int b)/*成绩排序*/ 
{
    int j,t,i;

        for(i=1;i<=b;i++)
                {
                for(j=1,t=1;j<=b;j++)
                {
                if(singer[i].aver<singer[j].aver)
                {
                t=t+1;
                }
                }
                singer[i].ord=t;
                }
                for(i=1;i<=b;i++)
                {
                    for(j=1;j<=b;j++)
                    {
                        if(i==singer[j].ord)
                            printf("%s是第%d     得分为%15.2f\n",singer[j].name,i,singer[j].aver);
                    }
                    printf("\n\n\n");
                }
            
}

int search(int c)/*数据查询*/ 
{
    printf("所查选手的数据:编号%d    姓名%s   平均成绩%f   总成绩%f\n",singer[c].num,singer[c].name,singer[c].aver,singer[c].score[c]);    
} 

 
 
 int addition(int i)/*数据追加*/
 {
     printf("请输入选手编号及姓名:");
    scanf("%d,%s/n",&singer[i+1].num,&singer[i+1].name);
    
    printf("请输入评委1对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[1]);
    printf("请输入评委2对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[2]);
    printf("请输入评委3对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[3]);
    printf("请输入评委4对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[4]);
    printf("请输入评委5对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[5]);
    printf("请输入评委6对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[6]);
    printf("请输入评委7对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[7]);
    printf("请输入评委8对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[8]);
    printf("请输入评委9对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[9]);
    printf("请输入评委10对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[10]);
 }


main()
{
    int a,b,c,i,n=1;
    FILE *fp;
    fp = fopen("歌手.txt","wt+");
    
     printf("     歌手比赛系统   \n");
     printf("*********************\n");
     printf("* 1)输入选手数据   *\n"); 
     printf("* 2)评委打分       *\n");
     printf("* 3)成绩排序       *\n");
     printf("* 4)数据查询       *\n");
     printf("* 5)追加学生数据   *\n");
     printf("* 6)写入数据文件   *\n");      
     printf("* 7)退出系统       *\n");
     printf("*********************\n");
    while(n)
    {
    printf("你想进行的操作: ");
    scanf("%d",&a);
    printf("\n\n");
    switch(a)
    {
        case 1: 
                printf("你想进行的操作:输入选手数据\n "); 
                printf("请输入选手个数");
                scanf("%d",&b);
                singer_information(b);
                printf("----------------------\n");
            
        break;
        case 2: 
                printf("你想进行的操作:评委打分\n ");
                singer_score(b);
                printf("-----------------------\n");
                
         break;
        case 3:  
                printf("你想进行的操作:成绩排序(按平均分)\n ");
                singer_grade(b);
                order(b);
                printf("-------------------------\n");
                
          break;
        case 4:
                printf("你想进行的操作:数据查询\n ");
                 printf("请输入要查询选手编号:"); 
                 scanf("%d",&c);
                 printf("所查选手的数据:编号%d    姓名%s   平均成绩%f   总成绩%f\n",singer[c].num,singer[c].name,singer[c].aver,singer[c].sum);
                 
                printf("--------------------------\n");
          break;
        case 5:
                printf("你想进行的操作:追加学生数据\n ");  
               addition(b);
                   printf("---------------------------\n");
                
          break;
        case 6: 
                printf("你想进行的操作:写入数据文件\n ");
                printf("将数据写入文件中:\n");
                for (i = 0 ; i <=b ; i++)
                {
                    fprintf(fp,"%d ",singer[i].num);
                    fprintf(fp,"%s ",singer[i].name);
                    fprintf(fp,"%d\n",singer[i].aver);
                    }
         break;
        case 7: exit(0);
        default :printf("输入错误请重新输入!\n");
    }
    }
}

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们