zoukankan      html  css  js  c++  java
  • 数据结构习题集之运动会分数统计

    运动会分数统计

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    typedef struct Score{
        char AthleteName [20];
        char SchoolName [20];
        int SchoolCode;
        int Rank;
        char Achievement [10];
    }Score;
    
    typedef struct Match{
        int MatchCode;
        char  MatchName[10];
        int Top;
        Score *RankList;
    }Match,*Event;
    
    typedef struct Record{
        int MatchCode;
        char  MatchName[10];
        int Rank;
        char Achievement [10];
        char AthleteName [20];
        int GetScore;
    }Record;
    
    typedef struct School{
       char SchoolName [20];
       int num;
       int ptr;
       Record *RecordList;
    }School,*SchoolSheet;
    
    typedef struct Team{
        int SchoolCode;
        char SchoolName [20];
        int ManTotal;
        int WomanTotal;
        int  TeamTotal;
    }Team,*All;
    
    int n,m,w,t;
    Event A;
    SchoolSheet  B;
    All C;
    int ScoreList [8]={5,3,2,7,5,3,2,1};
    
    void Start()
    {
        printf("<<<<<<<<---------------------------------------------------->>>>>>>>>>
    ");
        printf("              欢迎使用运动会分数统计系统                    
    ");
        printf("<<<<<<<<---------------------------------------------------->>>>>>>>>>
    ");
        return;
    }
    
    void Function()
    {
        printf("
    
    <<<<<<<<<<<<----功能选择---->>>>>>>>>>>>>>>
    
    ");
        printf("-------------1.登录初始化
    ");
        printf("-------------2.清零
    ");
        printf("-------------3.录入各项比赛成绩
    ");
        printf("-------------4.产生学校成绩单
    ");
        printf("-------------5.产生团体总分报表
    ");
        printf("-------------6.结果显示
    ");
        printf("-------------7.返回主界面
    ");
        printf("-------------0.退出系统
    
    
    ");
        return;
    }
    void  login()
    {
        char Passpord [12]="yzc5201314";
        printf("请输入密码: 
    ");
        char Key[12];
        scanf("%s",Key);
        while(1){
             if(strcmp(Passpord,Key)==0)
                 break;
             else
             {
                  printf("请再次输入密码:
    ");
                  scanf("%s",Key);
             }
        }
        printf("参加运动会的学校个数:  ");
        scanf("%d",&n);
        printf("运动会的男子项目个数:  ");
        scanf("%d",&m);
        printf("运动会的女子项目个数:  ");
        scanf("%d",&w);
        A=(Event)malloc((w+m)*sizeof(Match));
        B=(SchoolSheet)malloc(n*sizeof(School));
        C=(All)malloc(n*sizeof(Team));
        if(!A)
           exit(1);
         if(!B)
           exit(1);
        if(!C)
           exit(1);
        return;
    }
    void Clear()
    {
        for(int i=0;i<n;i++){
            (B+i)->num=0;
            (B+i)->ptr=0;
            (B+i)->RecordList=NULL;
            (C+i)->SchoolCode=0;
            (C+i)->ManTotal=0;
            (C+i)->WomanTotal=0;
            (C+i)->TeamTotal=0;
        }
        for(int j=0;j<(m+w);j++){
            (A+j)->Top=0;
            (A+j)->MatchCode=0;
            (A+j)->RankList=NULL;
        }
        return;
    }
    
    void Input(){
        int num=0;
        for(int i=0;i<(m+w);i++)
        {
            (A+i)->MatchCode=i+1;
            scanf("%d%s",&(A+i)->Top,(A+i)->MatchName);
            num=(A+i)->Top;
            (A+i)->RankList=(Score*)malloc(num*sizeof(Score));
            Score *R=(A+i)->RankList;
            for(int j=0;j<num;j++)
            {
                (R+j)->Rank=j+1;
                scanf("%s", (R+j)->AthleteName);
                scanf("%s", (R+j)->SchoolName);
                scanf("%d",&(R+j)->SchoolCode);
                (B+(R+j)->SchoolCode-1)->num++;
                scanf("%s", (R+j)->Achievement);
            }
        }
        return;
    }
    void SchoolScoreSheet()
    {
        for(int j=0;j<n;j++)
        {
            int c=(B+j)->num;
            (B+j)->RecordList=(Record *)malloc( c*sizeof(Record));
        }
        int num=0;
        for(int i=0;i<(m+w);i++)
        {
             Score *R=(A+i)->RankList;
             num=(A+i)->Top;
             for(int j=0;j<num;j++)
             {
                  int k=0, h=0;
                  k=(R+j)->SchoolCode-1;
                  strcpy( (B+k)->SchoolName,(R+j)->SchoolName);
                  h=(B+k)->ptr;
                  Record *L=(B+k)->RecordList;
                  (L+h)->MatchCode=i+1;
                  (L+h)->Rank=(R+j)->Rank;
                  strcpy( (L+h)->MatchName,(A+i)->MatchName);
                  strcpy( (L+h)->AthleteName,(R+j)->AthleteName);
                  strcpy( (L+h)->Achievement,(R+j)->Achievement);
                  if((A+i)->Top!=3)
                     (L+h)->GetScore=ScoreList[(R+j)->Rank+2];
                  else
                     (L+h)->GetScore=ScoreList[(R+j)->Rank-1];
                  (B+k)->ptr++;
             }
        }
        return;
    }
    
    void TeamScoreSheet()
    {
             for(int i=0;i<n;i++)
             {
                 (C+i)->SchoolCode=i+1;
                 strcpy( (C+i)->SchoolName,(B+i)->SchoolName);
                 Record * L=(B+i)->RecordList;
                 for(int j=0;j<(B+i)->num;j++)
                 {
                     if((L+j)->MatchCode<=m)
                        (C+i)->ManTotal=(C+i)->ManTotal+(L+j)->GetScore;
                     else
                        (C+i)->WomanTotal= (C+i)->WomanTotal+(L+j)->GetScore;
                 }
                 (C+i)->TeamTotal=(C+i)->ManTotal+(C+i)->WomanTotal;
             }
             return;
    }
    
    void Show(){
        for(int i=0;i<n;i++)
        {
            printf("
    
    %s的成绩单:
    ",(B+i)->SchoolName);
            printf("
    	项目号	项目名	姓名	名次	成绩	   得分
    ");
            int k=(B+i)->num;
            Record *L=(B+i)->RecordList;
            for(int j=0;j<k;j++)
            {
                 printf("	%d	%s	%s	%d	%s	   %d
    ",(L+j)->MatchCode,(L+j)->MatchName,(L+j)->AthleteName,(L+j)->Rank,(L+j)->Achievement,  (L+j)->GetScore);
            }
        }
        printf("
    
    团体总分报表:
    ");
        printf("
    	校号	学校名称    	男子团体总分	女子团体总分	团体总分
    ");
        for(int i=0;i<n;i++)
        {
            printf("	%d	%-20s%d		%d		%d
    ",(C+i)->SchoolCode,(C+i)->SchoolName,(C+i)->ManTotal, (C+i)->WomanTotal, (C+i)->TeamTotal);
        }
        return;
    }
    void logoff()                       //退出系统
    {
         printf("
    		>>>>>>>>Welcome back!!<<<<<<<<<
    ");
         exit(0);
    }
    
    void Home()
    {
        Function();
        while(1){
        printf("请输入选择的功能:");
        scanf("%d",&t);
        while(t!=0&&t!=1&&t!=2&&t!=3&&t!=4&&t!=5&&t!=6&&t!=7)
       {
       printf("输入有误,请重新选择:");
       scanf("%d",&t);
       }
       switch(t)
       {
       case 1:    login();break;
       case 2:    Clear();break;
       case 3:    Input();break;
       case 4:    SchoolScoreSheet();break;
       case 5:    TeamScoreSheet();break;
       case 6:    Show();break;
       case 7:    Home();break;
       case 0:    logoff();break;
       }
    }
    return;
    }
    int main()
    {
        system("Color 1e");
        Start();
        Home();
        return 0;
    }
    
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    34 bootstrap引入
    32 jQuery——自制飞粒特效
    32 EasyUI——初识、导入至项目
    前端学习相关
    31 jQuery——元素进出场动画效果
    30 jQuery——操作事件
    30 jQuery——操作文档结构
    29 jQuery——操作元素样式
    28 jQuery——操作元素内容
    27 jquery——操作元素属性
  • 原文地址:https://www.cnblogs.com/zhichao-yan/p/13368513.html
Copyright © 2011-2022 走看看