C語言實現歌手比賽系統

本文實例為大傢分享瞭C語言實現歌手比賽系統的具體代碼,供大傢參考,具體內容如下

一、項目簡介

對一次歌手比賽的成績進行管理
輸入每個選手的數據包括編號、姓名、十個評委的成績,根據輸入計算出總成績和平均成績(去掉最高分,去掉最低分)。

二、任務概述

要求歌手比賽系統實現對學生基本信息(如編號、姓名、性別等)及十個評委的成績的管理(增加、刪除、修改或更新、查詢、統計、保存到文件、從文件裝載等操作)。

三、功能展示

四、思維導圖

五、程序源碼

#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");
    }
    }
}

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: