程序代码:
#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;
}
}
网上一堆,你参考着自己写个吧。。。