• 运动会管理系统


    #include<iostream>
    #include<cstring>
    #include<math.h>
    #include<stdio.h>
    #include<algorithm>
    #define LEN sizeof(struct School)
    using namespace std;

    struct xm_item{
    int item;                 //项目编号
    char name[20];            //项目名称
    int count;                //该项目得分人的数量
    }Xm_item[10];


    struct Student{
    char name[20];            //姓名
    int score;                //得分成绩
    int range;                //得分名次
    char item[20];            //得分项目
    int sex;                  //性别  “0”代表男性 “1”代表女性
    };


    struct School      
    {
    int count;                       //计算实际运动员个数
    int serial;                      //学校编号
    char name[20];                   //学校名称
    int menscore;                    //男子团体总分
    int womenscore;                  //女子团体总分
    int jifeng;                      //学校积分
    struct Student  student[20];    //参赛运动员
    struct School *next;             //下一个参赛学校
    };


    int main()
    {
     
      int CreatXm_item();//比赛项目信息初始化
      struct School *CreatSchool(int n);//比赛信息统计
      void LookInformation(struct School * A);//比赛信息查询
      void CorrectInformation(struct School *B);//修改比赛信息
      void SortSchool(struct School * C);//学校排名查询
      void SortStudent(struct School *D);//学生排名查询
      struct School *head;
      printf("请输入项目初始化信息:\n\n");
      int m;
      m=CreatXm_item();
      printf("比赛信息统计\n");
      head=CreatSchool(m);
      printf("请输入你要进行的操作:\n");
      printf("------------------------------操作菜单------------------------------\n");
      printf("                            信息查询 请按“1”                      \n");
      printf("                            修改信息 请按“2”                      \n");
      printf("                            学校排名 请按“3”                      \n");
      printf("                            学生排名 请按“4”                      \n");
      printf("                            结束操作 请按“5”                      \n");
      printf("--------------------------------------------------------------------\n");
       int ch;
       while(cin>>ch)
      {
      switch(ch)
      {
      case 1:LookInformation(head);break;
      case 2:CorrectInformation(head);break;
      case 3:SortSchool(head);break;
      case 4:SortStudent(head);break;
      case 5:printf("程序已经自动关闭,欢迎您下次继续使用\n");break;
      default:printf("输入错误,请重新输入\n");break;
      }
      printf("请输入你要进行的操作:\n");
      printf("------------------------------操作菜单------------------------------\n");
      printf("                            信息查询 请按“1”                      \n");
      printf("                            修改信息 请按“2”                      \n");
      printf("                            学校排名 请按“3”                      \n");
      printf("                            学生排名 请按“4”                      \n");
      printf("                            结束操作 请按“5”                      \n");
      printf("--------------------------------------------------------------------\n");
     
      }
      return 0;
    }


    int CreatXm_item()//比赛项目信息初始化
    {
     int n,i;
     printf("请输入此次运动会的项目个数:\n");
        cin>>n;
     printf("请输入项目信息:\n");
     printf("----------------------------项目信息--------------------------\n");
     for(i=0;i<n;i++)
     {
      printf("项目编号     项目名称     项目得分人数量\n");
      scanf("%d%s%d",&Xm_item[i].item,&Xm_item[i].name,&Xm_item[i].count);
     }

         printf("--------------------------------------------------------------\n");

      return n;
    }


     

    struct School * CreatSchool(int n)//比赛信息统计
    {
        int i,num,j=0;
     struct School *p,*q;
     q=p=(struct School *)malloc(LEN);
        printf("请输入学校的个数:\n");
     cin>>num;
     for(i=1;i<num;i++)
     {
     p->next=(struct School *)malloc(LEN);
     p=p->next;
     }
     p->next=NULL; 
     p=q;
     for(i=0;i<num;i++)
     {
     printf("参赛运动员个数  学校编号  学校名称\n");
     scanf("%d%d%s",&p->count,&p->serial,&p->name);
     p=p->next;
     }
     p=q;
     while(n--)
     {
        printf("项目%s信息情况如下:\n",Xm_item[j].name);
     printf("项目编号     项目名称     项目得分人数量\n");
     printf("%-15d%-15s%-15d\n",Xm_item[j].item,Xm_item[j].name,Xm_item[j].count);
     p=q;
     while(num--)
     {
         p->jifeng=0;
      p->menscore=0;
      p->womenscore=0;
      for(i=(p->count)*j;i<(p->count)*(j+1);i++)
     
         {
      printf("学生姓名  得分名次  得分成绩  得分项目  性别\n");
      scanf("%s%d%d%s%d",&p->student[i].name,&p->student[i].range,&p->student[i].score,&p->student[i].item,&p->student[i].sex);
        if(p->student[i].sex==0)
          p->menscore=p->menscore+p->student[i].score;
      else
       p->womenscore=p->womenscore+p->student[i].score;
        
      }
      p->jifeng=p->menscore+p->womenscore;
         printf("%d\n%d\n%d\n",p->menscore,p->womenscore,p->jifeng);
      p=p->next;
     }
     
     j++;
     }
    return q;


    }

    void LookInformation(struct School *A)//比赛信息查询
    {
     int xmitem,num,i;
     char name1[20];
     struct School *p;
     p=A;
        printf("请输入你要查询的学生的学校编号:\n");
     cin>>num;
     printf("请输入你要查询的学生的项目编号:\n");
     cin>>xmitem;
     printf("请输入你要查询的学生的姓名:\n");
     cin>>name1;
       while(p->serial!=num)
      { 
       if(p==NULL)
       {
        printf("输入错误,请重新输入\n");
           break;
       }
       p=p->next;
      }
      for(i=(p->count)*(xmitem-1);i<(p->count)*xmitem;i++)
      {
       if(strcmp(p->student[i].name,name1)==0)
       {
        printf("您要查询的学生的信息情况如下:\n");
        printf("学生姓名  得分成绩  得分名次  得分项目  性别\n");
        printf("%s  %d   %d   %s    %d\n",p->student[i].name,p->student[i].score,p->student[i].range,p->student[i].item,p->student[i].sex);
        break;
       }
      }
     
    }

             
     

    void CorrectInformation(struct School * B)//修改比赛信息
    {
     int xmitem,num,i;
     char name1[20];
     struct School *p;
     p=B;
        printf("请输入你要修改的学生的学校编号:\n");
     cin>>num;
     printf("请输入你要修改的学生的项目编号:\n");
     cin>>xmitem;
     printf("请输入你要修改的学生的姓名:\n");
     cin>>name1;
        while(p->serial!=num)
      { 
       if(p==NULL)
       {
        printf("输入错误,请重新输入\n");
           break;
       }
       p=p->next;
      }
      for(i=(p->count)*(xmitem-1);i<(p->count)*xmitem;i++)
      {
       if(strcmp(p->student[i].name,name1)==0)
       {
        printf("您要修改的学生的信息情况如下:\n");
        printf("学生姓名  得分名次  得分成绩  得分项目  性别\n");
        scanf("%s%d%d%s%d",&p->student[i].name,&p->student[i].range,&p->student[i].score,&p->student[i].item,&p->student[i].sex);
        break;
       }
      }
    }

    void SortSchool(struct School *C)//学校排名查询
    {
     int number[100],i,n,j;
     struct School *p,*q;
     printf("各学校的排名情况如下:\n");
     printf("--------------------------------------------------------------\n");
     p=C;
     q=C;
     i=0;
     while(p!=NULL)
     {
          number[i]=p->jifeng;
       p=p->next;
        i++;
     }
     sort(number,number+i);
     n=i;
     j=1;
         while(n--)
     {
          p=q;
     while(p!=NULL)
     {
      if(number[i-1]==p->jifeng)
      
      {
       printf("第%d名:\n",j);
       printf("学校名称  学校编号  学生个数  男子总分  女子总分 团体总分\n");  
       printf("%-10s%-10d%-10d%-10d%-10d%-10d\n",p->name,p->serial,p->count,p->menscore,p->womenscore,p->jifeng);
       break;
      }
      p=p->next;
     }

     i--;
     j++;
     }
    printf("--------------------------------------------------------------\n");
    }

    void SortStudent(struct School *D)//学生排名查询
    {
     int n,Score[100],i,j,k,m;
     struct School *p,*q;
     printf("请输入你要查询的学生的项目编号:\n");
        cin>>n;
     p=D;
        q=D;
     j=0;
     while(p!=NULL)
     {
      for(i=p->count*(n-1);i<p->count*n;i++)
            {
       Score[j]=p->student[i].score;
       j++;
      }
      p=p->next;
     }
       printf("11111111\n");
       sort(Score,Score+j);
       p=q;
       printf("项目:%s的排名情况如下\n",Xm_item[n-1].name);
       printf("--------------------------------------------------------------\n");
       printf("项目编号   项目名称  项目得分人数量\n");
       printf("%-15d%-15s%-15d\n",Xm_item[n-1].item,Xm_item[n-1].name,Xm_item[n-1].count);
       k=1;
       m=j;
       while(m--)
       {
         p=q;
         while(p!=NULL)
       {
        for(i=p->count*(n-1);i<p->count*n;i++)
      
        {
         if(p->student[i].score==Score[j-1])
         {
          printf("第%d名:\n",k);
          printf("学生姓名  得分成绩   得分名次   得分项目  性别\n");
          printf("%-15s%-15d%-15d%-15s%-15d\n",p->student[i].name,p->student[i].score,p->student[i].range,p->student[i].item,p->student[i].sex);
             break;
         }

        }
          p=p->next;
       j--;
      }
       }
    printf("--------------------------------------------------------------\n");
    }

  • 相关阅读:
    用友U8远程接入客户端提示启动客户端错误
    oracle 10g 错误 ORA-01653 的解决过程
    用友 凭证引入 如何删除引入的外部凭证
    Delphi实现程序只运行一次并激活已打开的程序
    Delphi Raize的日期控件RzDateTimeEdit星期几不能正确显示的问题
    U8 提示“操作员没有查询权限或视图权限”
    数据库图片存储也读取
    Delph最简单i获取外网IP
    cxgrid 单元格合并
    cocos2d 中使用 pickerView 简单的老虎机应用
  • 原文地址:https://www.cnblogs.com/xiohao/p/2921042.html
Copyright © 2020-2023  润新知