首页 > 代码库 > 山西省高考成绩的排次系统【可查询成绩改正和将作弊成绩去除】

山西省高考成绩的排次系统【可查询成绩改正和将作弊成绩去除】

山西省高考成绩的排次系统【可查询成绩改正和将作弊成绩去除】

图片

图片

 

图片

#include<iostream>
using namespace std;
int main()
{
 int i,j,k,o,a[100][100][10],max[100],x[100],n,m,p,cen[100],hang[100],lie[100],g,y=0,q=0,l=0;
 int u,d,t,zuo[100],bi[100],kao[100];
 int fen[100],r,w;
 int j1[100];
 cout<<"分别输入山西省所有学校的个数,每个学校的班级个数,每个班级考生的个数:"<<endl;
 cin>>n>>m>>p;
 cout<<"请输入所在*学校*班级*考号的山西考生的高考成绩:"<<endl;
 for(i=1;i<=n;i++)
 {
  for(j=1;j<=m;j++)
  {
   for(k=1;k<=p;k++)
   {
    cout<<"输入第"<<i<<"学校"<<"   "<<j<<"班级"<<"   "<<"考号为"<<i<<" "<<j<<" "<<k<<"的考生的高考成绩:";
    cin>>a[i][j][k];
   }
  }
 }
 for(o=1;o<=n*m*p;o++)
 {
  g=0;
  max[o]=-1;
  for(i=1;i<=n;i++)
  {
   for(j=1;j<=m;j++)
   {
    for(k=1;k<=p;k++)
    {
     max[o]=(a[i][j][k]>max[o])?a[i][j][k]:max[o];
    }
   }
  }
  x[o]=max[o];
  for(i=1;i<=n;i++)
  {
   for(j=1;j<=m;j++)
   {
    for(k=1;k<=p;k++)
    {
     if(x[o]==a[i][j][k])
     {
      g++;
      if(g==1)
      {
       a[i][j][k]=0;
          cen[o]=i;
          hang[o]=j;
          lie[o]=k;
      }
     }
    }
   }
  }
 }
 cout<<"在山西省的所有学校中:"<<endl;
 for(o=1;o<=n*m*p;o++)
 {
  if(x[o]==x[o-1])
  {
   l++;
   cout<<"第"<<o-l<<"名是第"<<cen[o]<<"学校"<<"  "<<hang[o]<<"班级"<<"  "<<"考号为"<<cen[o]<<" "<<hang[o]<<" "<<lie[o]<<"的考生,他的高考成绩为"<<x[o]<<"分"<<endl;
  }
  else
   cout<<"第"<<o<<"名是第"<<cen[o]<<"学校"<<"  "<<hang[o]<<"班级"<<"  "<<"考号为"<<cen[o]<<" "<<hang[o]<<" "<<lie[o]<<"的考生,他的高考成绩为"<<x[o]<<"分"<<endl;
      l=0;
 }
 do
 {
  cout<<"1:有考生因作弊需踢出     2:有考生因被误判需重新排次     3:无错误,将排次计入档案袋"<<endl<<endl;
     cin>>d;
  if(d==1)
  {
   cout<<"输入作弊考生的人数:"<<endl;
   cin>>t;
   y=t;
   for(u=1;u<=t;u++)
   {
    cout<<"输入作弊考生"<<u<<"的考号:"<<endl;
    cin>>zuo[u]>>bi[u]>>kao[u];
   }
   for(u=1;u<=t;u++)
   {
    for(o=1;o<=n*m*p-q;o++)
    {
     if(zuo[u]==cen[o]&&bi[u]==hang[o]&&kao[u]==lie[o])
     {
      do
      {
       x[o]=x[o+1];
             cen[o]=cen[o+1];
             hang[o]=hang[o+1];
             lie[o]=lie[o+1];
          o++;
      }
      while(o!=n*m*p);
     }
    }
   }
   cout<<"将作弊考生踢出后的重新排次为:"<<endl<<endl;
   l=0;
   for(o=1;o<=n*m*p-t-q;o++)
   {
    if(x[o]==x[o-1])
    {
     l++;
     cout<<"第"<<o-l<<"名是第"<<cen[o]<<"学校"<<"  "<<hang[o]<<"班级"<<"  "<<"考号为"<<cen[o]<<" "<<hang[o]<<" "<<lie[o]<<"的考生,他的高考成绩为"<<x[o]<<"分"<<endl;
    }
    else
     cout<<"第"<<o<<"名是第"<<cen[o]<<"学校"<<"  "<<hang[o]<<"班级"<<"  "<<"考号为"<<cen[o]<<" "<<hang[o]<<" "<<lie[o]<<"的考生,他的高考成绩为"<<x[o]<<"分"<<endl;
        l=0;
   }
  }
  if(d==2)
  {
   cout<<"输入被误判考生的个数:"<<endl;
   cin>>t;
   for(u=1;u<=t;u++)
   {
    cout<<"输入误判考生"<<u<<"的考号以及改正后的分数:"<<endl;
    cin>>zuo[u]>>bi[u]>>kao[u]>>fen[u];
   }
   for(u=1;u<=t;u++)
   {
    for(o=1;o<=n*m*p-y;o++)
    {
     if(zuo[u]==cen[o]&&bi[u]==hang[o]&&kao[u]==lie[o])
     {
      x[o]=fen[u];
      for(w=1;w<=n*m*p-y;w++)
      {
       if(o>1)
       {
        if(x[o]>x[o-1])
        {
         r=x[o];
               x[o]=x[o-1];
               x[o-1]=r;
               r=cen[o];
               cen[o]=cen[o-1];
               cen[o-1]=r;
               r=hang[o];
               hang[o]=hang[o-1];
               hang[o-1]=r;
               r=lie[o];
               lie[o]=lie[o-1];
               lie[o-1]=r;
            o--;
        }
           else
         break;
       }
      }
      for(w=1;w<=n*m*p-y;w++)
      {
       if(x[o]<x[o+1])
       {
        r=x[o];
           x[o]=x[o+1];
           x[o+1]=r;
           r=cen[o];
           cen[o]=cen[o+1];
           cen[o+1]=r;
           r=hang[o];
           hang[o]=hang[o+1];
           hang[o+1]=r;
           r=lie[o];
           lie[o]=lie[o+1];
           lie[o+1]=r;
        o++;
       }
       else 
        break;
      }
     }
    }
   }
   l=0;
   for(o=1;o<=n*m*p-y;o++)
   {
    if(x[o]==x[o-1])
    {
     l++;
     cout<<"第"<<o-l<<"名是第"<<cen[o]<<"学校"<<"  "<<hang[o]<<"班级"<<"  "<<"考号为"<<cen[o]<<" "<<hang[o]<<" "<<lie[o]<<"的考生,他的高考成绩为"<<x[o]<<"分"<<endl;
    }
    else
     cout<<"第"<<o<<"名是第"<<cen[o]<<"学校"<<"  "<<hang[o]<<"班级"<<"  "<<"考号为"<<cen[o]<<" "<<hang[o]<<" "<<lie[o]<<"的考生,他的高考成绩为"<<x[o]<<"分"<<endl;
        l=0;
   }
   q=y;
  }
 }
 while(d!=3);
 return 0;
}