标题:学生成绩排名 帮忙写个程序。。。。。
只看楼主
yjj634041926
Rank: 2
等 级:论坛游民
帖 子:36
专家分:76
注 册:2010-4-15
结帖率:100%
已结贴  问题点数:20 回复次数:2 
学生成绩排名 帮忙写个程序。。。。。
            学生成绩排名   
            

目的
Objective        1.复习数组,选择、循环结构程序设计
    2.掌握函数的定义、调用、声明,以及参数的两种传递方式
   
内容(方法、步骤、要求或考核标准)
一实训设备与工具
个人计算机(奔腾486档以上),DOS操作系统,Visual C++6.0编译开发环境
1.    实训步骤、方法与要求
1.    在函数中进行10个学生成绩从高到低排名 sort(int a[10])
2.    改进第一步的函数为sort(int a[],int n),进行n个学生成绩从高到低排名,
3.    改进第二步的函数为sort(int a[],int n, char style), 将n个学生成绩从高到低排名,排名方式根据sort()函数的style参数进行,如style为‘a’按升序排,style为’d’按降序排。
(a:ascending  升,d:descending 降)
4.    在项目报告中画出程序流程图,说明程序设计的算法,附主要程序段。
5.    在项目报告中说明知识点。
6.    在项目报告中说明程序设计过程中的难点、解决办法及编程小结或体会。


要求要达到。。以#include<iostream.h>为头文件名。。。
搜索更多相关主题的帖子: 学生 排名 
2010-05-11 14:08
itma
Rank: 4
等 级:业余侠客
帖 子:105
专家分:266
注 册:2010-2-8
得分:19 
程序代码:
#include<iostream.h>
#include<fstream.h>
#include<string>
struct corse
{

 char course[10];

 int score;
};
class Stu
{
    int Class;
    int id;

 char name[10];
    corse  p[10];
public:

 void getdate(int a,int b,char c[10],char d[10][10],int e[10])

 {  int i; Class=a; id=b; strcpy(name,c);
   for(i=0;i<10;i++)
   { strcpy(p[i].course,d[i]);
   p[i].score=e[i];}

 }

 void sortdate();

 void output_failor(char a[10]);

 void output_first5(char a[10]);

 void output_average(char a[10]);

 void output_gradelist_ofoneclass(char a[10],int c);

 void output()

 {int k;

 cout<<Class<<'\t'<<id<<'\t'<<name<<'\t';
      for(k=0;k<10;k++)
            {   if(p[k].score==0)continue;
    cout<<p[k].course;
   cout<<"-"<<p[k].score<<'\t';
   }
   cout<<endl;

 }
    void  copy(Stu obj)

 {  int i;
  Class=obj.Class;
  id=obj.id;
  strcpy(name,obj.name);
  for(i=0;i<10;i++)
  {strcpy(p[i].course,obj.p[i].course);
            p[i].score=obj.p[i].score;
  }

 

 }
}stu[50];
void Stu::output_failor(char a[10])
{ int j(0) ,i;
  for(i=0;i<50;i++)
     for(j=0;j<10;j++)
  {
   if ((strcmp(stu[i].p[j].course,a)==0)&&(stu[i].p[j].score<60))
          stu[i].output();
  }

 
}
void Stu::output_first5(char a[10])
{

 int i=0, j=0 ,k,l,r(0);
    for(i=0;i<49;i++)
     for(j=0;j<10;j++)
          for(k=i+1;k<50;k++)
          for(l=0;l<10;l++)
    {  if ((strcmp(stu[i].p[j].course,stu[k].p[l].course)==0)&&(strcmp(stu[i].p[j].course,a)==0)&&(stu[i].p[j].score<stu[k].p[l].score))
     {
      Stu m=stu[i];
         stu[i].copy(stu[k]);
         stu[k].copy(m);
       
    }
    }
   for(i=0;i<50;i++)
     {
                  for(j=0;j<10;j++)
    if(strcmp(stu[i].p[j].course,a)==0)
   {
     cout<<stu[i].Class<<'\t'<<stu[i].id<<'\t'<<stu[i].name<<'\t'<<stu[i].p[j].course<<'\t'<<stu[i].p[j].score<<'\n';
   
   }
                   if(r>4) break;

 } 
}
  

void Stu::output_gradelist_ofoneclass(char a[10],int c)
{

 int i=0, j=0 ,k,l;static r(0);

    for(i=0;i<49;i++)
     for(j=0;j<10;j++)
          for(k=i+1;k<50;k++)
           for(l=0;l<10;l++)
     {  if (strcmp(stu[i].p[j].course,stu[k].p[l].course)==0&&strcmp(stu[i].p[j].course,a)==0)
       if((stu[i].Class==stu[k].Class==c)&&(stu[i].id>stu[k].id))
      {
       Stu m=stu[i];
       stu[i].copy(stu[k]);
       stu[k].copy(m);
       }
     
     }
     
    for(i=0;i<50;i++)
     for(j=0;j<10;j++)
   if((strcmp(stu[i].p[j].course,a)==0)&&(stu[i].Class==c))
    stu[i].output();
  
}


void Stu:: output_average(char a[10])
{

 int k,i=0, j=0 , g,b,c[5]={1,2,3,4,5}, r[5]={0,0,0,0,0},sum[5]={0,0,0,0,0};
    double m[5];
    for (k=0;k<5;k++)
      for(i=0;i<50;i++)
     for(j=0;j<10;j++)
         
    {  if ((strcmp(stu[i].p[j].course,a)==0 )&&( stu[i].Class==c[k]))
     { sum[k]+=stu[i].p[j].score;
      r[k]++;
     }
   }


 for(g=0;g<4;g++)
   for(b=g+1;b<5;b++)
   {
    if(sum[g]<sum[b])
          { i=sum[g]; j=c[g];c[g]=c[b];c[b]=j;k=r[g];r[g]=r[b];r[b]=k;
   sum[g]=sum[b];
   sum[b]=i;
    }
    if(sum[g]!=0) m[g]=(double)sum[g]/r[g];
    else m[g]=0;
   }
   if (sum[4]=0) m[4]=0;
   else m[4]=(double)sum[4]/r[4];
  for(g=0;g<4;g++)
   for(b=g+1;b<5;b++)


 { 
       if(m[g]<m[b]){j=m[g];m[g]=m[b];m[b]=j;k=c[g];c[g]=c[b];c[b]=k;}

 }
     for(g=0;g<5;g++)     if(m[g]!=0)

 
     cout<<c[g]<<"班的平均分为:"<<m[g]<<endl;
}
void main()
{   
   char a[10],b[10],c[10],d[10],e[10],mark,h[10][10];
   int j,f,l[10]={0,0,0,0,0,0,0,0,0,0},g,x,z;static int y=0;



 
  cout<<"     教 学 管 理 系  统    "<<endl;

  cout<<" 1.添加学生信息;                "<<endl;
  cout<<" 2.查询某门课程的不及格名单;    "<<endl;
  cout<<" 3.查询某门课程的全年级的前五名;"<<endl;
  cout<<" 4.查询每个班某门课程的平均成绩;"<<endl;
  cout<<" 5.查询某班某门课程的成绩单.    "<<endl;

 
    
loop: cout<<" 请输入您的选择(0-4):";cout<<endl;
    
   cin>>x;

 switch(x)
  {
    case 1:   cout<<"请输入学生信息: (输入-1时结束输入)"<<endl;
  
     cout<<"班级\t学号\t姓名\t选修课1\t成绩1\t选修课2\t成绩2\t..."<<endl;
     
     for(y;y<50;y++)
  {
     cin>>f;
    if(f==-1)goto loop;
     cin>>g;
                   cin>>e;
     for(j=0;j<10;j++)
   { 
  
   cin>>h[j];
   cin>>l[j];
   mark=cin.get();
   if(mark=='\n') break;

   }

 
   stu[y].getdate(f,g,e,h,l);

 
  }goto loop;break;
      case 2:
     cout<<"输入您想要哪门课程的不及格名单:"<<endl;
  cin>>a;
  cout<<"班级\t学号\t姓名\t选修课\t成绩\t"<<endl;
        stu[0].output_failor(a);goto loop;break;

    case 3:
      cout<<"请输入您想要哪门课程的全年级的前五名"<<endl;
   cin>>b;
         stu[0].output_first5(b);
     goto loop;break;
    case 4:cout<<"输入您想要哪门课程的每班平均成绩:"<<endl;
    cin>>c;
          stu[0].output_average(c);
     goto loop;
           break;
    case 5: cout<<"输入您想要哪门课程、哪个班级的成绩单:";
   cin>>d>>z;
         stu[0].output_gradelist_ofoneclass(d,z);
         goto loop;break;
   default:cout<<"输入错误,请重新输入."<<endl;
   goto loop;
     
  }

} 
网上一堆,你参考着自己写个吧。。。
2010-05-12 18:50
赤那
Rank: 3Rank: 3
来 自:广东
等 级:论坛游侠
威 望:1
帖 子:127
专家分:178
注 册:2010-3-1
得分:1 
二楼真够耐性
2010-05-12 23:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-306196-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038123 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved