易码技术论坛

 找回密码
 加入易码
搜索
查看: 201048|回复: 1

大家来帮忙

[复制链接]
发表于 2007-6-27 10:21:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007-6-26 10:31:30 | 显示全部楼层 |阅读模式
大家看看我写的程序哪错了的?我不会改了,谢谢大家
  1. #include<iostream.h>
  2. #include<iomanip.h>
  3. #include<stdlib.h>
  4. #include<string.h>
  5. #define  N   5
  6. struct student
  7. {
  8.   char name[9];
  9.   int id,jxj,shs;
  10.   float math,eng,c,ave,jd;
  11. };
  12. void message(int a)
  13. {
  14.   switch(a)
  15.     {
  16.       case 0:cout<<"不合法的操作数(1--8之间)!重新输入:";break;
  17.       case 1:cout<<"数据已录入,无须重新录入!重新输入:";break;
  18.       case 2:cout<<"不合法的姓名(最多8个字符)!重新输入:";break;
  19.       case 3:cout<<"无效的成绩(0--100之间)!重新输入:";break;
  20.       case 4:cout<<cout<<setw(10)<<"特等奖";break;
  21.       case 5:cout<<setw(10)<<"一等奖";break;
  22.       case 6:cout<<setw(10)<<"二等奖";break;
  23.       case 7:cout<<setw(10)<<"三等奖";break;
  24.     }
  25. }
  26. float test(float a)
  27. {
  28.   while(a<0||a>100) {message(3);cin>>a;}
  29.   return a;
  30. }
  31. void input(student a[N])
  32. {
  33.     char test[100];
  34.     for(int i=0;i<N;i++)
  35.      {  
  36.         system("cls");
  37.         cout<<"已录入"<<i<<"条记录,剩余"<<N-i<<"条记录!\n";
  38.         cout<<"请输入第&#39;<<i+1<<"位学生的姓名:";cin>>test;
  39.         while(sizeof(test)>8)  {message(2);cin>>test;}
  40.         strcpy(a[i].name,test);
  41.         cout<<"请输入"<<a[i].name<<"同学的学号:" ;cin>>a[i].id;
  42.         cout<<"请输入"<<a[i].name<<"同学的高数成绩:" ;cin>>a[i].math;
  43.         a[i].math=test(a[i].math);
  44.         cout<<"请输入"<<a[i].name<<"同学的英语成绩:" ;cin>>a[i].eng;
  45.         a[i].eng=test(a[i].eng);
  46.         cout<<"请输入"<<a[i].name<<"同学的C++成绩:" ;cin>>a[i].c;
  47.         a[i].c=test(a[i].c);
  48.     }
  49. }
  50. void output(student a[N],float &a)
  51. {
  52.   cout<<setw(10)<<"姓名"<<setw(10)<<"学号"<<setw(10)<<"高等数学"<<setw(10)<<"英语"<<setw(10)<<"C++"<<setw(10)<<"平均分"<<setw(10)<<"学分积点"<<&#39;\n&#39;;
  53.   for(int i=0;i<N;i++)
  54.     cout<<setw(10)<<a[i].name<<setw(10)<<a[i].id<<setw(10)<<a[i].math<<setw(10)<<a[i].eng<<setw(10)<<a[i].c<<setw(10)<<a[i].ave<<setw(10)<<a[i].jd<<&#39;\n&#39;;
  55.   cout<<"班级平均分为:<<a<<&#39;\n&#39;;
  56. }
  57. void average(student a[N],float &a)
  58. {
  59.    for(int i=0;i<N;i++)
  60.      {
  61.         a[i].ave=(a[i].math+a[i].eng+a[i].c)/3;
  62.         a=a+a[i].ave;
  63.      }
  64.    a=a/N;
  65. }
  66. void xfjd(student a[N])
  67. {
  68.     float a,b,c;
  69.     for(int i=0;i<N;i++)
  70.      {
  71.          if(a[i].math<60)  a=0;
  72.          else    a=1+(a[i].math-60)/10;
  73.          if(a[i].eng<60)  b=0;
  74.          else    b=1+(a[i].eng-60)/10;
  75.          if(a[i].c<60)  c=0;
  76.          else    c=1+(a[i].c-60)/10;
  77.          a[i].jd=(5.5*a+6*b+4*c)/15.5;
  78.      }
  79. }
  80. void award(student a[N])
  81. {
  82.     for(int i=0;i<N;i++)
  83.       {
  84.           if(a[i].math>=60&&a[i].eng>=60&&a[i].c>=60)
  85.             {
  86.                 if(a[i].jd>=4.0)  a[i].jxj=3;
  87.                 else  if(a[i].jd>=3.6) a[i].jxj=2;
  88.                      else if(a[i].jd>=3.2)  a[i].jxj=1;
  89.                          else if(a[i].jd>=2.8)  a[i].jxj=0;
  90.            }
  91.          else  a[i].jd=4;
  92.          if(a[i].math>=80&&a[i].eng>=80&&a[i].c>=80)
  93.               a[i].shs=1;
  94.         else  a[i].shs=0;
  95. }
  96. void sortprint(student a[N],int b,int &a,float &c)
  97. {
  98.    char c[15];student t;int i,j,k=0;
  99.    switch(b)
  100.    {
  101.       case 1:strcpy(c,"高等数学成绩");break;
  102.       case 2:strcpy(c,"英语成绩");break;
  103.       case 3:strcpy(c,"C++成绩");break;
  104.       case 4:strcpy(c,"平均成绩");break;
  105.       case 5:strcpy(c,"学分积点");break;
  106.    }
  107.    if(a!=b)
  108.      {
  109.           for(i=0;i<N-1;i++)
  110.             {  
  111.                 for(j=i+1;j<N;j++)
  112.                         switch(b)
  113.                          {
  114.                             case 1:if(a[i].math<a[j].math) {t=a[i];a[i]=a[j];a[j]=t;};break;
  115.                             case 2:if(a[i].eng<a[j].eng) {t=a[i];a[i]=a[j];a[j]=t;};break;      
  116.                             case 3:if(a[i].c<a[j].c) {t=a[i];a[i]=a[j];a[j]=t;};break;      
  117.                             case 4:if(a[i].ave<a[j].ave) {t=a[i];a[i]=a[j];a[j]=t;};break;      
  118.                             case 5:if(a[i].jd<a[j].jd) {t=a[i];a[i]=a[j];a[j]=t;};break;      
  119.                         }
  120.                 k++;
  121.                 if(k==N-1) a=b;   
  122.              }
  123.      }
  124.    cout<<"按"<<c<<"降序输出为:\n";
  125.    output(a[n],c);
  126. }
  127. void awardprint(student a[N],int a)
  128. {
  129.    int i,j,k;
  130.    if(a==1)
  131.       {
  132.          cout<<setw(10)<<"奖项"<<setw(10)<<"姓名"<<setw(10)<<"学号"<<setw(10)<<"高等数学"<<setw(10)<<"英语"<<setw(10)<<"C++"<<setw(10)<<"平均分"<<setw(10)<<"学分积点"<<&#39;\n&#39;;
  133.          for(i=0;i<4;i++)
  134.             for(j=0,k=0;j<N;j++)
  135.               if(a[j].jxj==i)
  136.                 {
  137.                   message(i+4);
  138.                   cout<<setw(10)<<a[i].name<<setw(10)<<a[i].id<<setw(10)<<a[i].math<<setw(10)<<a[i].eng<<setw(10)<<a[i].c<<setw(10)<<a[i].ave<<setw(10)<<a[i].jd<<&#39;\n&#39;;   
  139.                 }   
  140.               else {k++;if(k==N-1) cout<<"\t无学生获得该奖励!\n";}
  141.        }
  142.    else
  143.        {
  144.          cout<<"三好学生名单:\n";
  145.          for(i=0,j=0,k=0;i<N;i++,j++)
  146.                 if(a[i].shs==1)  
  147.                       {
  148.                          cout<<setw(20)<<a[i].name;
  149.                          if(j&&j%3==0)  cout<<&#39;\n&#39;;
  150.                       }
  151.                 else  {k++;if(k==N-1) cout<<"很遗憾,本班没有学生符合三好生的要求.\n";}
  152.          
  153.        }
  154. }
  155. void main()
  156. {
  157.    int option=0,data=0,sort=0;
  158.   float ave=0;
  159.   student s[N];
  160.   while(option!=9)
  161.   {
  162.      cout<<"欢迎使用学生成绩管理系统\n";
  163.      cout<<"1.录入并处理数据\n2.按高等数学成绩排序输出\n3.按英语成绩排序输出\n4.按C++成绩排序输出\n5.按平均成绩排序输出\n6.按学分排序输出\n7.查看获奖学金情况\n8.查看获三好生情况\n9.退出管理系统\n请选择相应的操作:";
  164.      cin>>option;
  165.      while(option<1||option>9)  {message(0);cin>>option;}
  166.      switch(option)
  167.      {
  168.         case 1:if(data==0) {input(s);system("cls");cout<<数据成功录入!\n";average(s,ave);xfjd(s);award(s);cout<<"数据处理完毕!";}
  169.               else {system("cls");message(1)}
  170.               break;
  171.         case 2:system("cls");sortprint(s,1,ave,sort);break;
  172.         case 3:system("cls");sortprint(s,2,ave,sort);break;
  173.         case 4:system("cls");sortprint(s,3,ave,sort);break;
  174.         case 5:system("cls");sortprint(s,4,ave,sort);break;
  175.         case 6:system("cls");sortprint(s,5,ave,sort);break;
  176.         case 7:system("cls");awardprint(s,1);break;
  177.         case 8:system("cls");awardprint(s,2);break;
  178.         case 9:system("cls");cout<<"欢迎下次使用!\n";
  179.       }
  180.   }
  181. }
复制代码
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-28 20:07 , Processed in 0.010172 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表