⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 student.cpp

📁 实现运动会队员信息的录入
💻 CPP
字号:
#define M  20           /*定义学校与项目最大数量*/
#include <conio.h>  
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int mm,m,w;            /*定义全局变量 mm,m,w。mm记录学校数量,m记录男子项目,w记录女子项目*/
struct scorelist 
{ 
  int score;                /*分数*/
  char schoolnum[5];       /*学校编号*/
  char itemnum[5];           /*项目编号*/
  };                       /*定义分数结构体类型*/
 struct School
{
 char schoolnum[5];        /*学校编号*/
 struct scorelist list[M];      /*定义scorelist类型的结构体变量*/
 int teamscore;            /*学校分数*/
 int mscore;               /*男队分数*/
 int gscore;                /*女队分数*/
};                        /*定义学校结构体类型*/
struct School school[M];    /*定义School类型的结构体数组*/
void Sum(){//求学校总分,男队总分,女队总分函数                      
          int i,j;
          for(i=1;i<=mm;i++){
           school[i].teamscore=0;
           school[i].gscore=0;
           school[i].mscore=0;
           for(j=1;j<=m+w;j++){
           school[i].teamscore+=school[i].list[j].score;
           if(j==m) school[i].mscore= school[i].teamscore;
           }
school[i].gscore= school[i].teamscore-school[i].mscore;
           }
       
  }
void sort_teamsore() { //按学校总分排序输出函数          
int i,j;
     struct scorelist list1[M];   /*定义scorelist类型的结构体变量用来暂存学校编号,学校总分信息*/
     struct scorelist temp;       /* 定义scorelist类型的结构体变量temp,在数据交换时做暂存过度作用*/
    for(i=1;i<=mm;i++){         
     for(j=0;j<=4;j++)
     list1[i].schoolnum[j] = school[i].schoolnum[j];
     list1[i].score = school[i].teamscore;
     }
    for(i=1;i<=mm-1;i++)
       for(j=i+1;j<=mm;j++)
        if(list1[j-1].score<list1[j].score){
         temp.score=list1[j-1].score;
         for(i=0;i<=4;i++)
         temp.schoolnum[i]=list1[j-1].schoolnum[i];
         list1[j-1].score= list1[j].score;
         for(i=0;i<=4;i++)
         list1[j-1].schoolnum[i]= list1[j].schoolnum[i];
         list1[j].score= temp.score;
         for(i=0;i<=4;i++)
         list1[j].schoolnum[i]= temp.schoolnum[i];
    }
         printf("            学校编号         学校总分\n");
         for(i=1;i<=mm;i++){
         printf("%17s%20d\n", list1[i].schoolnum,list1[i].score);
  }
}
void sort_mscore() {            /*按男队总分排序输出*/
       int i,j;
       struct scorelist list1[M]; /*定义scorelist类型的结构体变量用来暂存学校编号,学校总分信息*/
       struct scorelist temp;       /* 定义scorelist类型的结构体变量temp,在数据交换时做暂存过度作用*/
   
       for(i=1;i<=mm;i++){
       for(j=0;j<=4;j++)
       list1[i].schoolnum[j] = school[i].schoolnum[j];
       list1[i].score = school[i].mscore;
       }
       for(i=1;i<=mm-1;i++)
        for(j=i+1;j<=mm;j++)
        if(list1[j-1].score<list1[j].score){
        temp.score=list1[j-1].score;
        for(i=0;i<=4;i++)
        temp.schoolnum[i]=list1[j-1].schoolnum[i];
        list1[j-1].score= list1[j].score;
        for(i=0;i<=4;i++)
        list1[j-1].schoolnum[i]= list1[j].schoolnum[i];
        list1[j].score= temp.score;
        for(i=0;i<=4;i++)
        list1[j].schoolnum[i]= temp.schoolnum[i];
      }
        printf("            学校编号         男队总分\n");
        for(i=1;i<=mm;i++){
         printf("%17s%20d\n", list1[i].schoolnum,list1[i].score);
    }
}

 void sort_gscore() {          /*按女队总分排序输出*/
      int i,j;
      struct scorelist list1[M];/*定义scorelist类型的结构体变量用来暂存学校编号,学校总分信息*/
      struct scorelist temp;     /* 定义scorelist类型的结构体变量temp,在数据交换时做暂存过度作用*/
      for(i=1;i<=mm;i++){
       for(j=0;j<=4;j++)
       list1[i].schoolnum[j] = school[i].schoolnum[j];
       list1[i].score = school[i].gscore;
     }
     for(i=1;i<=mm-1;i++)
      for(j=i+1;j<=mm;j++)
        if(list1[j-1].score<list1[j].score){
        temp.score=list1[j-1].score;
        for(i=0;i<=4;i++)
        temp.schoolnum[i]=list1[j-1].schoolnum[i];
        list1[j-1].score= list1[j].score;
        for(i=0;i<=4;i++)
        list1[j-1].schoolnum[i]= list1[j].schoolnum[i];
        list1[j].score= temp.score;
        for(i=0;i<=4;i++)
        list1[j].schoolnum[i]= temp.schoolnum[i];
       }
        printf("            学校编号         女队总分\n");
        for(i=1;i<=mm;i++){
        printf("%17s%20d\n", list1[i].schoolnum,list1[i].score);
    }
}

void Search_byschnum()//按学校编号查找查询某学校的分数情况
{
             int i;
             int snum;
             printf("      请输入学校编号: \n ");
             printf("      --------------\n");
             scanf(" %8d",&snum);
             for(i=1;i<=mm;i++)
             {
                if(snum==atoi(school[i].schoolnum))
                break;
             }
             if(i<=mm){
             printf("学校总分         男队总分           女队总分\n ");
printf("%7d%15d%15d\n",school[i].teamscore,school[i].mscore,school[i].gscore);
             }
            else
            printf("未找到这学校\n"); }
void Search_item()  {//按学校编号查找查询学校某项目分数
          int i, j;
          int ssnum,itemnu;
          printf("      请输入学校编号:\n");
          printf("      --------------\n");
          scanf(" %8d",&ssnum);
          for(i=1;i<=mm;i++)
           {
           if(ssnum==atoi(school[i].schoolnum))
           {
            printf("       请输入项目编号:\n ");
            printf("       ---------------\n");
            scanf(" %8d",&itemnu);
            for(j=1;j<=m+w;j++)
           {
            if(itemnu==atoi(school[i].list[j].itemnum))
            {
	         printf("       这项目分数是:") ;
	         printf("%d \n",school[i].list[j].score);
            }
            if(itemnu==atoi(school[i].list[j].itemnum))
            break;
           }
        }
           if(ssnum==atoi(school[i].schoolnum)) break;
    }
}
void Search_head3()   {//按项目编号查询获得前三名的学校
           int i,j,k;
	       int itemnu;
           struct scorelist list1[M]; /*定义scorelist类型的结构体变量用来暂存学校编号,学校总分信息*/
           struct scorelist temp; /* 定义scorelist类型的结构体变量temp,在数据交换时做暂存过度作用*/

           printf("       请输入项目编号:\n");
           printf("       ---------------\n");
           scanf(" %7d",&itemnu);
  for(i=1;i<=mm;i++)
            for(j=1;j<=w+m;j++)
	          if(itemnu==atoi(school[i].list[j].itemnum))
               {
                list1[i].score=school[i].list[j].score;
               for(k=0;k<=4;k++)
                 {
	              list1[i].schoolnum[k]=school[i].schoolnum[k];
list1[i].itemnum[k]=school[i].list[j].itemnum[k];/*把项目分数,学校编号,项目编号暂存在list1结构体数组中*/
                 } 
        }
              for(i=1;i<=mm-1;i++)
               for(j=mm-1;j>=i;j--)    /*冒泡排序法按某项目分数进行排序*/
                if(list1[j-1].score<list1[j].score)
                {
                 temp.score=list1[j-1].score;
	             for(k=0;k<=4;k++)
                {
                  temp.schoolnum[k]=list1[j-1].schoolnum[k];
                  temp.itemnum[k]=list1[j-1].itemnum[k];
                }
                  list1[j-1].score=list1[j].score;
	              for(k=0;k<=4;k++)
                    {
                    list1[j-1].schoolnum[k]=list1[j].schoolnum[k];
                    list1[j-1].itemnum[k]=list1[j].itemnum[k];
                    }
                    list1[j].score=temp.score;
	                for(k=0;k<=4;k++)
                    {
                    list1[j].schoolnum[k]=temp.schoolnum[k];
                    list1[j].itemnum[k]=temp.itemnum[k];
                    }
             }
                    printf("         这项目前三名的学校是 :\n");
                    printf("         项目编号            学校编号                   此项目分数\n");
                   for(i=1;i<=3;i++)
                   printf("%17s%22s%21d\n", list1[i].itemnum,list1[i].schoolnum,list1[i].score);
}
int menu_select(  )
{//菜单选择
       int sn;
  printf("      ============================================\n");
  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("      *    0.退出                                       *\n");
  printf("      ===========================================\n");
  printf("          选择 0-5:");
  for( ; ; )
   {
     scanf("%d",&sn);
	 if (sn<0||sn>5){
  printf("输入错误,请在0-5选");
  printf("输入错误,请在0-5选择: ");}
      else
         break;
     }
       return sn;
}


main(){
    FILE *f;      /*创建文件指针*/
    int i,j;
    f=fopen("score.dat","r"); /*以读的方式打开score.dat文件*/
    for(i=1;i<=3;i++){        /*读入学校书,男子项目数,女子项目数*/
    if(i==1) fscanf(f,"%d",&mm);
    if(i==2) fscanf(f,"%d",&m);
    if(i==3) fscanf(f,"%d",&w);
   }
   for(i=1;i<=mm;i++)   /*读入学校编号,项目编号,项目分数*/
    {
      fscanf(f,"%s",school[i].schoolnum);
      for(j=1;j<=2*(w+m);j++)
      {
       if(j<=w+m)
       fscanf(f,"%s",school[i].list[j].itemnum );
       else
       fscanf(f,"%d",&school[i].list[j-w-m].score );
      }       
     }
     fclose(f);
     Sum();
     for( ; ; ){
     switch(menu_select( ) )
      {
 case 1:
      printf("      ========================================\n");
      printf("      *     1.查找某学校总分,男女团队总分          *\n");
      printf("      ========================================\n");
      printf(" 学校编号      学校总分         男队总分                  女队总分\n");
      for(i=1;i<=mm;i++) 
      printf(" %7s%14d%19d%20d\n",school[i].schoolnum,
         school[i].teamscore,school[i].mscore,school[i].gscore) ;    
      break;
 case 2:
      printf("      =====================================\n");
      printf("      *      按学校总分排序输出                  *\n");
      printf("      =====================================\n");
      sort_teamsore();
      break;
    case 3:
      printf("    ==========================================\n");
      printf("      *       按学校男队分数排序输出                *\n");
      printf("     =========================================\n");
      sort_mscore();
      break;
   case 4:
      printf("      ========================================\n");
      printf("      *       按学校女队分数排序输出                *\n");
      printf("      ========================================\n");
      sort_gscore();
      break;
  case 5:
      printf("      ========================================\n");
      printf("      *       按学校编号查找查询某学校的分数情况    *\n");
      printf("      ========================================\n");
      Search_byschnum();
      break;
   case 6:
      printf("      =======================================\n");
      printf("      *       按学校编号查找查询学校某项目分数     *\n");
      printf("      ========================================\n");
      Search_item();
      break;
   case 7:
      printf("      ========================================\n");
      printf("      *     按项目编号查询获得前三名的学校          *\n");
      printf("      ========================================\n");
      Search_head3();
      break;
   case 0:
	 printf("good bye!\n");
         return 0;
        }
     }

 } 






















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -