编程高手们,救救我啊..能否帮我写出这个程序的代码吗?C++的
题目学生成绩管理:为某高校设计一个学生成绩管理总体需求:1,能按学期,按班级完成对学生成绩的输入,修改2,能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均...
题目 学生成绩管理:为某高校设计一个学生成绩管理
总体需求:1,能按学期,按班级完成对学生成绩的输入,修改
2,能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均分进行排序
3,能查询学生成绩,不及格科目及学生名单
4,能按班级输出学生的成绩单
输入需求:程序正常运行后,屏幕上显示一个文字菜单(根据序号选定相应的操作项目),当用户选定操作项目所对应的序号时,根据应用程序的提示信息,从键盘上输入相应的数据
输出需求:1,应用程序正常运行后,要在屏幕上显示一个文字菜单
2,要求用户输入数据是,要给出清晰,明确的提示信息,包括输入的数据内容,格式及结束方式等
设计需求:1,按照分析,设计,编码,调式和测试的软件开发过程完成这个应用程序
2,为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单选择希望进行的操作项目
能给代码就行了,,不要管什么C++了.. 菜鸟在这谢谢各位了~!! 展开
总体需求:1,能按学期,按班级完成对学生成绩的输入,修改
2,能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均分进行排序
3,能查询学生成绩,不及格科目及学生名单
4,能按班级输出学生的成绩单
输入需求:程序正常运行后,屏幕上显示一个文字菜单(根据序号选定相应的操作项目),当用户选定操作项目所对应的序号时,根据应用程序的提示信息,从键盘上输入相应的数据
输出需求:1,应用程序正常运行后,要在屏幕上显示一个文字菜单
2,要求用户输入数据是,要给出清晰,明确的提示信息,包括输入的数据内容,格式及结束方式等
设计需求:1,按照分析,设计,编码,调式和测试的软件开发过程完成这个应用程序
2,为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单选择希望进行的操作项目
能给代码就行了,,不要管什么C++了.. 菜鸟在这谢谢各位了~!! 展开
4个回答
展开全部
那去应付应付吧。本来还想再添加点模块来完善这个程序,但时间与精力毕竟有限,这些也基本上能满足要求了。
#include<iostream.h>
#include<iomanip.h>
#include<string.h>
int N;
class student{
private:
char *name;
int number,Class;
int chinese,math,english,computer;
public:
student(){};
void putin(int cl,int nu,char n[10],int ch,int en,int ma,int co)
{
name=new char[strlen(n)+1];
strcpy(name,n);
number=nu;
math=ma;
english=en;
chinese=ch;
computer=co;
Class=cl;
};
void putna(char *x)
{
name=new char[strlen(x)+1];
strcpy(name,x);
};
void putfour(int x,int y,int z,int h)//传四个成绩
{chinese=x;english=y;math=z;computer=h;};
void putcl(int x){Class=x;};// 赋一个值,下面同样
void putnu(int x){number=x;};
void putch(int x){chinese=x;};
void puten(int x){english=x;};
void putma(int x){math=x;};
void putco(int x){computer=x;};
int getcl(){return Class;};//返回一个值,下面同样
int getnu(){return number;};
int getch(){return chinese;};
int geten(){return english;};
int getma(){return math;};
int getco(){return computer;};
char *getna(){return(name);};
void putout(){//返回全部资料
cout<<Class<<setw(8)<<number<<setw(10)<<name<<
setw(8)<<chinese<<setw(11)<<english<<setw(9)<<math<<setw(8)<<
computer;
};
};
//*******************************************************
// 汇总
//*******************************************************
double average(student *p,char *na,int Cl)//每一个科目的平均分
{
float av=0,j1=1;int j=0;
for(int i=0;i<N;i++)
{if(strcmp(na,"语文")==0&&p[i].getcl()==Cl)
{av=av+p[i].getch();++j;j1=float(j);}
if(strcmp(na,"英语")==0&&p[i].getcl()==Cl)
{av=av+p[i].geten();++j;j1=float(j);}
if(strcmp(na,"电脑")==0&&p[i].getcl()==Cl)
{av=av+p[i].getco();++j;j1=float(j);}
if(strcmp(na,"数学")==0&&p[i].getcl()==Cl)
{av=av+p[i].getma();++j;j1=float(j);}
}
if(av==0) return 0;
else return av/j1;
}
int sum(student p)//每人的总分
{
int s=0;
s=p.getch()+p.geten()+p.getco()+p.getma();
return s;
}
//***************************************************************
int find(student *p,int Cl,int Nu)//通过班级和学号,对要修改的对象返回它的对象里的值
{
int i=0,a=N+1;
for(;i<N;i++)
{
if(p[i].getcl()==Cl&&p[i].getnu()==Nu)
{
a=i;break;
}
else continue;
}
if(a!=N+1)return a;
else return N;
}
int find(student *p,int Cl,char *Na)//通过班级和名字,对要修改的对象返回它的对象里的值
{
int i=0,a=N+1;
for(;i<N;i++)
if(p[i].getcl()==Cl&&strcmp(p[i].getna(),Na)==0)
{
a=i;break;
}
if(a!=N+1)return a;
else return N;
}
int find(student *p,char *Na,int Nu)//通过名字和学号,对要修改的对象返回它的对象里的值
{
int i=0,a=N+1;
for(;i<N;i++)
if(strcmp(p[i].getna(),Na)==0&&p[i].getnu()==Nu)
{
a=i;break;
}
if(a!=N+1)return a;
else return N;
}
int find(student *p,int Cl)//通过班,对要修改的对象返回它的对象里的值
{
int i=0,a=N+1;
for(;i<N;i++)
if(p[i].getcl()==Cl)
{
a=i;break;
}
if(a!=N+1)return a;
else return N;
}
//*******************************************************************
// 查询成绩
//*******************************************************************
void search(student *p,int Cl,char *Na)//通过班级和名字,来查询成绩
{
int j=find(p,Cl,Na);
if(j==N) cout<<endl<<"此人不存在!"<<endl;
else
{
cout<<endl<<"班级"<<setw(6)<<"学号"<<setw(8)<<"姓名"<<setw(11)
<<"语文"<<setw(10)<<"英语"<<setw(8)<<"数学"<<setw(8)
<<"电脑"<<setw(8)<<"总分"<<setw(8)<<"平均分"<<endl;
p[j].putout();
cout<<setw(7);
int a4=sum(p[j]);float a5=float(a4)/4;
cout<<a4<<setw(8)<<a5<<endl;
}
}
void search(student *p,char *Na,int Nu)//通过名字和学号,来查询成绩
{
int j=find(p,Na,Nu),a4;float a5;
if(j==N) cout<<endl<<"没有这个人:"<<endl;
else
{
cout<<"班级"<<setw(6)<<"学号"<<setw(8)<<"姓名"<<setw(11)
<<"语文"<<setw(10)<<"英语"<<setw(8)<<"数学"<<setw(8)
<<"电脑"<<setw(8)<<"总分"<<setw(8)<<"平均分"<<endl;
p[j].putout();
cout<<setw(7);
a4=sum(p[j]);a5=float(a4)/4;
cout<<a4<<setw(8)<<a5<<endl;
}
}
void search(student *p,int Cl,int Nu)//通过班和号,来查询成绩
{
int j=find(p,Cl,Nu);
if(j==N) cout<<endl<<"没有这个人:"<<endl;
else
{
cout<<"班级"<<setw(6)<<"学号"<<setw(8)<<"姓名"<<setw(11)
<<"语文"<<setw(10)<<"英语"<<setw(8)<<"数学"<<setw(8)
<<"电脑"<<setw(8)<<"总分"<<setw(8)<<"平均分"<<endl;
p[j].putout();
cout<<setw(7);
int a4=sum(p[j]);float a5=float(a4)/4;
cout<<a4<<setw(8)<<a5<<endl;
}}
//8888888888888888888888888888888888888888888888888888888
void lank(student *p,int Cl)//按学号顺序排
{
int k1,k2,k3,k4,k5,k6;char *k7;
for(int i=0;i<N;i++)
{
for(int j=i+1;j<N;j++)
if(p[i].getcl()==Cl&&p[j].getcl()==Cl&&p[i].getnu()>p[j].getnu())//实现用学号来排序
{
k1=p[i].getcl();p[i].putcl(p[i+1].getcl());p[j].putcl(k1);
k7=new char[strlen(p[i].getna())+1];
strcpy(k7,p[i].getna());p[i].putna(p[i+1].getna());p[i+1].putna(k7);
k2=p[i].getnu();p[i].putnu(p[j].getnu());p[j].putnu(k2);
k3=p[i].getch();p[i].putch(p[j].getch());p[j].putch(k3);
k4=p[i].geten();p[i].puten(p[j].geten());p[j].puten(k4);
k5=p[i].getma();p[i].putma(p[j].getma());p[j].putma(k5);
k6=p[i].getco();p[i].putco(p[j].getco());p[j].putco(k6);
}
else continue;
}
}
//***********************************************
void search(student *p,int Cl)//查某班级的成绩,是按学号顺序排
{
int k8=find(p,Cl);
lank(p,Cl);
if(k8==N) cout<<endl<<"没有这个班:"<<endl;
else
{cout<<"班级"<<setw(6)<<"学号"<<setw(8)<<"姓名"<<setw(10)
<<"语文"<<setw(11)<<"英语"<<setw(8)<<"数学"<<setw(9)
<<"电脑"<<setw(8)<<"总分"<<setw(9)<<"平均分"<<endl; }
for(int i=0;i<N;i++)//返回排序后的班的学生成绩
if(p[i].getcl()==Cl)
{
int A1;float A2;
A1=sum(p[i]);A2=float(A1)/4;
p[i].putout();cout<<setw(8)<<A1<<setw(9)<<A2<<endl;
}
}
//******************************************************************
void change(student *p,int Cl,int Nu,char *Na)//修改成绩
{
int a=find(p,Cl,Nu);
int C,B1,B2,B3,B4;
if(a==N) cout<<endl<<"没有这个人的资料:"<<endl;
else
{
cout<<endl<<"改语文请输入1,改英语请输入2,改数学请输入3,改电脑请输入4,大于一科请输入5:"
<<endl;
cin>>C;
switch(C)
{
case 1:cout<<endl<<endl<<"原来的值为:"<<p[a].getch()<<endl;
cout<<"请输入它的新值:";
cin>>B1;p[a].putch(B1);
cout<<endl<<"结果是:"<<endl;
cout<<"班级"<<setw(6)<<"学号"<<setw(8)<<"姓名"<<setw(10)
<<"语文"<<setw(10)<<"英语"<<setw(10)<<"数学"<<setw(8)
<<"电脑"<<endl;
p[a].putout();cout<<endl<<endl;
break;
case 2:cout<<endl<<endl<<"原来的值为:"<<p[a].geten()<<endl;
cout<<"请输入它的值:";
cin>>B1;p[a].puten(B1);
cout<<endl<<"结果是:"<<endl;
cout<<"班级"<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(10)
<<"语文"<<setw(10)<<"英语"<<setw(10)<<"数学"<<setw(8)
<<"电脑"<<endl;
p[a].putout();cout<<endl<<endl;
break;
case 3:cout<<endl<<endl<<"原来的值为:"<<p[a].getma()<<endl;
cout<<"请输入它的值:";
cin>>B1;p[a].putma(B1);
cout<<endl<<"结果是:"<<endl;
cout<<"班级"<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(10)
<<"语文"<<setw(10)<<"英语"<<setw(10)<<"数学"<<setw(8)
<<"电脑"<<endl;
p[a].putout();cout<<endl<<endl;
break;
case 4:cout<<endl<<endl<<"原来的值为:"<<p[a].getco()<<endl;
cout<<"请输入它的值:";
cin>>B1;p[a].putco(B1);
cout<<endl<<"结果是:"<<endl;
cout<<"班级"<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(10)
<<"语文"<<setw(10)<<"英语"<<setw(10)<<"数学"<<setw(8)
<<"电脑"<<endl;
p[a].putout();cout<<endl<<endl;
break;
case 5:cout<<endl<<endl<<"原来的值分别为:"<<endl
<<"语文:"<<p[a].getch()<<endl
<<"英语:"<<p[a].geten()<<endl
<<"数学:"<<p[a].getma()<<endl
<<"电脑:"<<p[a].getco()<<endl;
cout<<endl;
cout<<"请输入语文的值:";cin>>B1;
cout<<"请输入英语的值:";cin>>B2;
cout<<"请输入数学的值:";cin>>B3;
cout<<"请输入电脑的值:";cin>>B4;
p[a].putfour(B1,B2,B3,B4);
cout<<endl<<"结果是:"<<endl;
cout<<"班级"<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(10)
<<"语文"<<setw(10)<<"英语"<<setw(10)<<"数学"<<setw(8)
<<"电脑"<<endl;
p[a].putout();cout<<endl;
break;
}
}
}
//*******************************************************
void rank(student *p,int Cl)//通过比较来排名,查看某班的成绩
{
int k1,k2,k3,k4,k5,k6,k8;char *k7;
lank(p,Cl);
for(int i=0;i<N;i++)
{
for(int j=i+1;j<N;j++)
{
if(p[i].getcl()==Cl&&p[j].getcl()==Cl&&sum(p[i])<=sum(p[j]))//用学号来排序后,通过总分来比较排名
{
k1=p[i].getcl();p[i].putcl(p[j].getcl());p[j].putcl(k1);
k7=new char[strlen(p[i].getna())+1];
strcpy(k7,p[i].getna());p[i].putna(p[j].getna());p[j].putna(k7);
k2=p[i].getnu();p[i].putnu(p[j].getnu());p[j].putnu(k2);
k3=p[i].getch();p[i].putch(p[j].getch());p[j].putch(k3);
k4=p[i].geten();p[i].puten(p[j].geten());p[j].puten(k4);
k5=p[i].getma();p[i].putma(p[j].getma());p[j].putma(k5);
k6=p[i].getco();p[i].putco(p[j].getco());p[j].putco(k6);
}
else continue;
}
}
k8=find(p,Cl);
if(k8==N) cout<<endl<<"没有这个班:"<<endl;
else
{
cout<<"名次"<<setw(6)<<"班级"<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(10)
<<"语文"<<setw(9)<<"英语"<<setw(10)<<"数学"<<setw(8)
<<"电脑"<<setw(8)<<"总分"<<setw(9)<<"平均分"<<endl;
int j1=0;
for(i=0;i<N;i++)//返回通过总分排序后的学生成绩
if(p[i].getcl()==Cl)
{
int A1;
float A2;
j1++;
A1=sum(p[i]);A2=float(A1)/4;cout<<j1<<setw(8);
p[i].putout();cout<<setw(7)<<A1<<setw(9)<<A2<<endl;
}
}}
//888888888888888888888888888888888888888888888888888888888888
void fun(student *pupil)
{
for(int j=0;;j++)//对系统的操作
{
cout<<endl<<"查询成绩请输入“2”;修改成绩请输入“3”;退出请按其它键;"<<endl;
int p3,p4;
char p2[10],a0[3];
cin>>a0;
cout<<"*****************************************************************************"<<endl;
if(strcmp(a0,"3")==0)//修改成绩
{
for(int i=0;;i++)
{
cout<<endl<<endl<<"请输入你的班级:";cin>>p3;
cout<<"请输入你的学号:";cin>>p4;
cout<<"请输入你的名字:";cin>>p2;
change(pupil,p3,p4,p2);
cout<<endl<<"还需要修改吗,需要请输入“Y”;否则按其它键:";
char b0[3];
cin>>b0;
if(strcmp(b0,"Y")==0||strcmp(b0,"y")==0) continue;
else break;
}
cout<<"*****************************************************************************";
}
else if(strcmp(a0,"2")==0)//查询成绩
{
for(int i=0;;i++)
{
cout<<endl<<"按班级和姓名查请按1,按班级和学号查按2, 按姓名和学号查按3"<<endl
<<"查某一班的成绩请按4, 查某科的平均分请按5, 查排名按6:"<<endl;
int E2,E3,E4;
char E5[10];
cin>>E2;
switch(E2)
{
case 1:for(i=0;;i++)
{
cout<<endl<<"请输入班级:";cin>>E4;
cout<<"请输入姓名:";cin>>E5;
search(pupil,E4,E5);
cout<<endl<<"你还要查询吗?要按‘Y’,否则按其它键:";
char t3[3];cin>>t3;
if(strcmp(t3,"Y")==0||strcmp(t3,"y")==0) continue;
else break;
}
break;
case 2:for(i=0;;i++)
{
cout<<endl<<"请输入班级:";cin>>E4;
cout<<"请输入学号:";cin>>E3;
search(pupil,E4,E3);
cout<<endl<<"你还要查询吗?要按‘Y’,否则按其它键:";
char t2[3];cin>>t2;
if(strcmp(t2,"Y")==0||strcmp(t2,"y")==0) continue;
else break;
}
break;
case 3:for(i=0;;i++)
{
cout<<endl<<"请输入学号:";cin>>E3;
cout<<"请输入姓名:";cin>>E5;
search(pupil,E5,E3);
cout<<endl<<"你还要查询吗?要按‘Y’,否则按其它键:";
char t1[3];cin>>t1;
if(strcmp(t1,"Y")==0||strcmp(t1,"y")==0) continue;
else break;
}
break;
case 4:for(i=0;;i++)
{
cout<<endl<<"请输入班级:";cin>>E3;
search(pupil,E3);
cout<<endl<<"你还要查询班级成绩吗?要请按‘Y’,否则按其它键:";
char m1[3];
cin>>m1;
if(strcmp(m1,"Y")==0||strcmp(m1,"y")==0) continue;
else break;
}
break;
case 5: for(i=0;;i++)
{
cout<<endl<<"请输入你要查找的班和科目:"<<endl<<endl;
char h1[10];int h2;
cout<<"请输入科目:";cin>>h1;
cout<<"请输入班级:";cin>>h2;
double a3=average(pupil,h1,h2);
if(a3==0) cout<<endl<<"没有你要查找的内容!"<<endl;
else
{cout<<h1<<"的平均分为:"<<a3<<endl;}
cout<<endl<<"还要查科目平均分吗?,如果还要请输'Y'否则按其他键:"<<endl;
char h3[3];
cin>>h3;
if(strcmp(h3,"Y")==0||strcmp(h3,"y")==0)continue;
else break;
}
break;
case 6:for(i=0;;i++)
{
cout<<endl<<"请输入要查的班级:";
int u0;
cin>>u0;
rank(pupil,u0);
cout<<endl<<"你要继续查看排名吗?要按‘Y’,否则按其它键:";
char u1[3];
cin>>u1;
if(strcmp(u1,"Y")==0||strcmp(u1,"y")==0) continue;
else break;
}
break;
}
cout<<endl<<"你还要用其他方式查询吗?,要请输入“Y”,否则按其它键:";
char b2[3];
cin>>b2;
if(strcmp(b2,"Y")==0||strcmp(b2,"y")==0)
{cout<<"*****************************************************************************";
continue;}
else break;
}
}
else break;
cout<<endl<<endl<<"你还要继续操作吗,要请输入'Y',否则请输其它键:";
char b1[3];
cin>>b1;
if(strcmp(b1,"Y")==0||strcmp(b1,"y")==0) {
cout<<"*****************************************************************************"<<endl;
continue;}
else break;
}}
//***************************************************
void main()
{ cout<<endl<<endl<<"请输入你需要的人数空间:";
cin>>N;
student *pupil=new student[N+10];//用动态数组自己设空间
char (*Name)[10]=new char[N+10][10];//用动态数组自己设空间
int *CL=new int[N+10],*NU=new int[N+10],*CH=new int[N+10],*EN=new int[N+10],*MA=new int[N+10],*CO=new int[N+10];
for(int i=0;i<N;i++)//成绩录入
{
cout<<endl<<endl<<"第"<<i+1<<"位学生:"<<endl;
cout<<"请输入班级:";cin>>CL[i];
cout<<"请输入学号:";cin>>NU[i];
cout<<"请输入姓名:";cin>>Name[i];
cout<<endl<<"请输入语文成绩:";cin>>CH[i];
cout<<"请输入英语成绩:";cin>>EN[i];
cout<<"请输入数学成绩:";cin>>MA[i];
cout<<"请输入电脑成绩:";cin>>CO[i];
pupil[i].putin(CL[i],NU[i],Name[i],CH[i],EN[i],MA[i],CO[i]);}
cout<<endl<<endl;
cout<<"****************************************************************************";
cout<<endl;
cout<<"添加和删除请输入“Y”;否则按其他键:";
char u[3];
cin>>u;
//888888888888888888888888888888888888888888888888888888888888888
for(i=0;;i++)
{
if(strcmp(u,"Y")==0||strcmp(u,"y")==0)//添加和删除
{
char u0[3];
cout<<"添加“1”;删除“2”:";
cin>>u0;
if(strcmp(u0,"1")==0)
{
int u1;
cout<<"请输入你要添加的人数:";
cin>>u1;
N=N+u1;
for(i=u1;i>0;i--)
{
cout<<endl<<endl<<"第"<<N-i+1<<"位学生:"<<endl;
cout<<"请输入班级:";cin>>CL[N-i];
cout<<"请输入学号:";cin>>NU[N-i];
cout<<"请输入姓名:";cin>>Name[N-i];
cout<<endl<<"请输入语文成绩:";cin>>CH[N-i];
cout<<"请输入英语成绩:";cin>>EN[N-i];
cout<<"请输入数学成绩:";cin>>MA[N-i];
cout<<"请输入电脑成绩:";cin>>CO[N-i];
pupil[N-i].putin(CL[N-i],NU[N-i],Name[N-i],CH[N-i],EN[N-i],MA[N-i],CO[N-i]);}
cout<<endl<<endl;
}
else if(strcmp(u0,"2")==0)
{
cout<<"请输入删除人数:";
int u2,u3,u4,u5;
int k1,k2,k3,k4,k5,k6;char *k7;
cin>>u2;
for(i=0;i<u2;i++)
{
cout<<"请输入第"<<i+1<<"个删除的人的班级:";
cin>>u3;
cout<<"请输入第"<<i+1<<"个删除的人的学号:";
cin>>u4; //查某班级的成绩,是按学号顺序排
u5=find(pupil,u3,u4);
lank(pupil,u3);
k1=pupil[u5].getcl();pupil[u5].putcl(pupil[N-1].getcl());pupil[N-1].putcl(k1);
k7=new char[strlen(pupil[u5].getna())+1];
strcpy(k7,pupil[u5].getna());pupil[u5].putna(pupil[N-1].getna());pupil[N-1].putna(k7);
k2=pupil[u5].getnu();pupil[u5].putnu(pupil[N-1].getnu());pupil[N-1].putnu(k2);
k3=pupil[u5].getch();pupil[u5].putch(pupil[N-1].getch());pupil[N-1].putch(k3);
k4=pupil[u5].geten();pupil[u5].puten(pupil[N-1].geten());pupil[N-1].puten(k4);
k5=pupil[u5].getma();pupil[u5].putma(pupil[N-1].getma());pupil[N-1].putma(k5);
k6=pupil[u5].getco();pupil[u5].putco(pupil[N-1].getco());pupil[N-1].putco(k6);
N=N-1;}}}
cout<<"如果还要添跟删请输入“Y”;";
char u7[2];
cin>>u7;
if(strcmp(u7,"Y")==0||strcmp(u7,"y")==0)continue;
else fun(pupil);break;
}
fun(pupil);
delete[] Name;
delete[] CL;
delete[] NU;
delete[] CH;
delete[] EN;
delete[] MA;
delete[] CO;
}
#include<iostream.h>
#include<iomanip.h>
#include<string.h>
int N;
class student{
private:
char *name;
int number,Class;
int chinese,math,english,computer;
public:
student(){};
void putin(int cl,int nu,char n[10],int ch,int en,int ma,int co)
{
name=new char[strlen(n)+1];
strcpy(name,n);
number=nu;
math=ma;
english=en;
chinese=ch;
computer=co;
Class=cl;
};
void putna(char *x)
{
name=new char[strlen(x)+1];
strcpy(name,x);
};
void putfour(int x,int y,int z,int h)//传四个成绩
{chinese=x;english=y;math=z;computer=h;};
void putcl(int x){Class=x;};// 赋一个值,下面同样
void putnu(int x){number=x;};
void putch(int x){chinese=x;};
void puten(int x){english=x;};
void putma(int x){math=x;};
void putco(int x){computer=x;};
int getcl(){return Class;};//返回一个值,下面同样
int getnu(){return number;};
int getch(){return chinese;};
int geten(){return english;};
int getma(){return math;};
int getco(){return computer;};
char *getna(){return(name);};
void putout(){//返回全部资料
cout<<Class<<setw(8)<<number<<setw(10)<<name<<
setw(8)<<chinese<<setw(11)<<english<<setw(9)<<math<<setw(8)<<
computer;
};
};
//*******************************************************
// 汇总
//*******************************************************
double average(student *p,char *na,int Cl)//每一个科目的平均分
{
float av=0,j1=1;int j=0;
for(int i=0;i<N;i++)
{if(strcmp(na,"语文")==0&&p[i].getcl()==Cl)
{av=av+p[i].getch();++j;j1=float(j);}
if(strcmp(na,"英语")==0&&p[i].getcl()==Cl)
{av=av+p[i].geten();++j;j1=float(j);}
if(strcmp(na,"电脑")==0&&p[i].getcl()==Cl)
{av=av+p[i].getco();++j;j1=float(j);}
if(strcmp(na,"数学")==0&&p[i].getcl()==Cl)
{av=av+p[i].getma();++j;j1=float(j);}
}
if(av==0) return 0;
else return av/j1;
}
int sum(student p)//每人的总分
{
int s=0;
s=p.getch()+p.geten()+p.getco()+p.getma();
return s;
}
//***************************************************************
int find(student *p,int Cl,int Nu)//通过班级和学号,对要修改的对象返回它的对象里的值
{
int i=0,a=N+1;
for(;i<N;i++)
{
if(p[i].getcl()==Cl&&p[i].getnu()==Nu)
{
a=i;break;
}
else continue;
}
if(a!=N+1)return a;
else return N;
}
int find(student *p,int Cl,char *Na)//通过班级和名字,对要修改的对象返回它的对象里的值
{
int i=0,a=N+1;
for(;i<N;i++)
if(p[i].getcl()==Cl&&strcmp(p[i].getna(),Na)==0)
{
a=i;break;
}
if(a!=N+1)return a;
else return N;
}
int find(student *p,char *Na,int Nu)//通过名字和学号,对要修改的对象返回它的对象里的值
{
int i=0,a=N+1;
for(;i<N;i++)
if(strcmp(p[i].getna(),Na)==0&&p[i].getnu()==Nu)
{
a=i;break;
}
if(a!=N+1)return a;
else return N;
}
int find(student *p,int Cl)//通过班,对要修改的对象返回它的对象里的值
{
int i=0,a=N+1;
for(;i<N;i++)
if(p[i].getcl()==Cl)
{
a=i;break;
}
if(a!=N+1)return a;
else return N;
}
//*******************************************************************
// 查询成绩
//*******************************************************************
void search(student *p,int Cl,char *Na)//通过班级和名字,来查询成绩
{
int j=find(p,Cl,Na);
if(j==N) cout<<endl<<"此人不存在!"<<endl;
else
{
cout<<endl<<"班级"<<setw(6)<<"学号"<<setw(8)<<"姓名"<<setw(11)
<<"语文"<<setw(10)<<"英语"<<setw(8)<<"数学"<<setw(8)
<<"电脑"<<setw(8)<<"总分"<<setw(8)<<"平均分"<<endl;
p[j].putout();
cout<<setw(7);
int a4=sum(p[j]);float a5=float(a4)/4;
cout<<a4<<setw(8)<<a5<<endl;
}
}
void search(student *p,char *Na,int Nu)//通过名字和学号,来查询成绩
{
int j=find(p,Na,Nu),a4;float a5;
if(j==N) cout<<endl<<"没有这个人:"<<endl;
else
{
cout<<"班级"<<setw(6)<<"学号"<<setw(8)<<"姓名"<<setw(11)
<<"语文"<<setw(10)<<"英语"<<setw(8)<<"数学"<<setw(8)
<<"电脑"<<setw(8)<<"总分"<<setw(8)<<"平均分"<<endl;
p[j].putout();
cout<<setw(7);
a4=sum(p[j]);a5=float(a4)/4;
cout<<a4<<setw(8)<<a5<<endl;
}
}
void search(student *p,int Cl,int Nu)//通过班和号,来查询成绩
{
int j=find(p,Cl,Nu);
if(j==N) cout<<endl<<"没有这个人:"<<endl;
else
{
cout<<"班级"<<setw(6)<<"学号"<<setw(8)<<"姓名"<<setw(11)
<<"语文"<<setw(10)<<"英语"<<setw(8)<<"数学"<<setw(8)
<<"电脑"<<setw(8)<<"总分"<<setw(8)<<"平均分"<<endl;
p[j].putout();
cout<<setw(7);
int a4=sum(p[j]);float a5=float(a4)/4;
cout<<a4<<setw(8)<<a5<<endl;
}}
//8888888888888888888888888888888888888888888888888888888
void lank(student *p,int Cl)//按学号顺序排
{
int k1,k2,k3,k4,k5,k6;char *k7;
for(int i=0;i<N;i++)
{
for(int j=i+1;j<N;j++)
if(p[i].getcl()==Cl&&p[j].getcl()==Cl&&p[i].getnu()>p[j].getnu())//实现用学号来排序
{
k1=p[i].getcl();p[i].putcl(p[i+1].getcl());p[j].putcl(k1);
k7=new char[strlen(p[i].getna())+1];
strcpy(k7,p[i].getna());p[i].putna(p[i+1].getna());p[i+1].putna(k7);
k2=p[i].getnu();p[i].putnu(p[j].getnu());p[j].putnu(k2);
k3=p[i].getch();p[i].putch(p[j].getch());p[j].putch(k3);
k4=p[i].geten();p[i].puten(p[j].geten());p[j].puten(k4);
k5=p[i].getma();p[i].putma(p[j].getma());p[j].putma(k5);
k6=p[i].getco();p[i].putco(p[j].getco());p[j].putco(k6);
}
else continue;
}
}
//***********************************************
void search(student *p,int Cl)//查某班级的成绩,是按学号顺序排
{
int k8=find(p,Cl);
lank(p,Cl);
if(k8==N) cout<<endl<<"没有这个班:"<<endl;
else
{cout<<"班级"<<setw(6)<<"学号"<<setw(8)<<"姓名"<<setw(10)
<<"语文"<<setw(11)<<"英语"<<setw(8)<<"数学"<<setw(9)
<<"电脑"<<setw(8)<<"总分"<<setw(9)<<"平均分"<<endl; }
for(int i=0;i<N;i++)//返回排序后的班的学生成绩
if(p[i].getcl()==Cl)
{
int A1;float A2;
A1=sum(p[i]);A2=float(A1)/4;
p[i].putout();cout<<setw(8)<<A1<<setw(9)<<A2<<endl;
}
}
//******************************************************************
void change(student *p,int Cl,int Nu,char *Na)//修改成绩
{
int a=find(p,Cl,Nu);
int C,B1,B2,B3,B4;
if(a==N) cout<<endl<<"没有这个人的资料:"<<endl;
else
{
cout<<endl<<"改语文请输入1,改英语请输入2,改数学请输入3,改电脑请输入4,大于一科请输入5:"
<<endl;
cin>>C;
switch(C)
{
case 1:cout<<endl<<endl<<"原来的值为:"<<p[a].getch()<<endl;
cout<<"请输入它的新值:";
cin>>B1;p[a].putch(B1);
cout<<endl<<"结果是:"<<endl;
cout<<"班级"<<setw(6)<<"学号"<<setw(8)<<"姓名"<<setw(10)
<<"语文"<<setw(10)<<"英语"<<setw(10)<<"数学"<<setw(8)
<<"电脑"<<endl;
p[a].putout();cout<<endl<<endl;
break;
case 2:cout<<endl<<endl<<"原来的值为:"<<p[a].geten()<<endl;
cout<<"请输入它的值:";
cin>>B1;p[a].puten(B1);
cout<<endl<<"结果是:"<<endl;
cout<<"班级"<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(10)
<<"语文"<<setw(10)<<"英语"<<setw(10)<<"数学"<<setw(8)
<<"电脑"<<endl;
p[a].putout();cout<<endl<<endl;
break;
case 3:cout<<endl<<endl<<"原来的值为:"<<p[a].getma()<<endl;
cout<<"请输入它的值:";
cin>>B1;p[a].putma(B1);
cout<<endl<<"结果是:"<<endl;
cout<<"班级"<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(10)
<<"语文"<<setw(10)<<"英语"<<setw(10)<<"数学"<<setw(8)
<<"电脑"<<endl;
p[a].putout();cout<<endl<<endl;
break;
case 4:cout<<endl<<endl<<"原来的值为:"<<p[a].getco()<<endl;
cout<<"请输入它的值:";
cin>>B1;p[a].putco(B1);
cout<<endl<<"结果是:"<<endl;
cout<<"班级"<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(10)
<<"语文"<<setw(10)<<"英语"<<setw(10)<<"数学"<<setw(8)
<<"电脑"<<endl;
p[a].putout();cout<<endl<<endl;
break;
case 5:cout<<endl<<endl<<"原来的值分别为:"<<endl
<<"语文:"<<p[a].getch()<<endl
<<"英语:"<<p[a].geten()<<endl
<<"数学:"<<p[a].getma()<<endl
<<"电脑:"<<p[a].getco()<<endl;
cout<<endl;
cout<<"请输入语文的值:";cin>>B1;
cout<<"请输入英语的值:";cin>>B2;
cout<<"请输入数学的值:";cin>>B3;
cout<<"请输入电脑的值:";cin>>B4;
p[a].putfour(B1,B2,B3,B4);
cout<<endl<<"结果是:"<<endl;
cout<<"班级"<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(10)
<<"语文"<<setw(10)<<"英语"<<setw(10)<<"数学"<<setw(8)
<<"电脑"<<endl;
p[a].putout();cout<<endl;
break;
}
}
}
//*******************************************************
void rank(student *p,int Cl)//通过比较来排名,查看某班的成绩
{
int k1,k2,k3,k4,k5,k6,k8;char *k7;
lank(p,Cl);
for(int i=0;i<N;i++)
{
for(int j=i+1;j<N;j++)
{
if(p[i].getcl()==Cl&&p[j].getcl()==Cl&&sum(p[i])<=sum(p[j]))//用学号来排序后,通过总分来比较排名
{
k1=p[i].getcl();p[i].putcl(p[j].getcl());p[j].putcl(k1);
k7=new char[strlen(p[i].getna())+1];
strcpy(k7,p[i].getna());p[i].putna(p[j].getna());p[j].putna(k7);
k2=p[i].getnu();p[i].putnu(p[j].getnu());p[j].putnu(k2);
k3=p[i].getch();p[i].putch(p[j].getch());p[j].putch(k3);
k4=p[i].geten();p[i].puten(p[j].geten());p[j].puten(k4);
k5=p[i].getma();p[i].putma(p[j].getma());p[j].putma(k5);
k6=p[i].getco();p[i].putco(p[j].getco());p[j].putco(k6);
}
else continue;
}
}
k8=find(p,Cl);
if(k8==N) cout<<endl<<"没有这个班:"<<endl;
else
{
cout<<"名次"<<setw(6)<<"班级"<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(10)
<<"语文"<<setw(9)<<"英语"<<setw(10)<<"数学"<<setw(8)
<<"电脑"<<setw(8)<<"总分"<<setw(9)<<"平均分"<<endl;
int j1=0;
for(i=0;i<N;i++)//返回通过总分排序后的学生成绩
if(p[i].getcl()==Cl)
{
int A1;
float A2;
j1++;
A1=sum(p[i]);A2=float(A1)/4;cout<<j1<<setw(8);
p[i].putout();cout<<setw(7)<<A1<<setw(9)<<A2<<endl;
}
}}
//888888888888888888888888888888888888888888888888888888888888
void fun(student *pupil)
{
for(int j=0;;j++)//对系统的操作
{
cout<<endl<<"查询成绩请输入“2”;修改成绩请输入“3”;退出请按其它键;"<<endl;
int p3,p4;
char p2[10],a0[3];
cin>>a0;
cout<<"*****************************************************************************"<<endl;
if(strcmp(a0,"3")==0)//修改成绩
{
for(int i=0;;i++)
{
cout<<endl<<endl<<"请输入你的班级:";cin>>p3;
cout<<"请输入你的学号:";cin>>p4;
cout<<"请输入你的名字:";cin>>p2;
change(pupil,p3,p4,p2);
cout<<endl<<"还需要修改吗,需要请输入“Y”;否则按其它键:";
char b0[3];
cin>>b0;
if(strcmp(b0,"Y")==0||strcmp(b0,"y")==0) continue;
else break;
}
cout<<"*****************************************************************************";
}
else if(strcmp(a0,"2")==0)//查询成绩
{
for(int i=0;;i++)
{
cout<<endl<<"按班级和姓名查请按1,按班级和学号查按2, 按姓名和学号查按3"<<endl
<<"查某一班的成绩请按4, 查某科的平均分请按5, 查排名按6:"<<endl;
int E2,E3,E4;
char E5[10];
cin>>E2;
switch(E2)
{
case 1:for(i=0;;i++)
{
cout<<endl<<"请输入班级:";cin>>E4;
cout<<"请输入姓名:";cin>>E5;
search(pupil,E4,E5);
cout<<endl<<"你还要查询吗?要按‘Y’,否则按其它键:";
char t3[3];cin>>t3;
if(strcmp(t3,"Y")==0||strcmp(t3,"y")==0) continue;
else break;
}
break;
case 2:for(i=0;;i++)
{
cout<<endl<<"请输入班级:";cin>>E4;
cout<<"请输入学号:";cin>>E3;
search(pupil,E4,E3);
cout<<endl<<"你还要查询吗?要按‘Y’,否则按其它键:";
char t2[3];cin>>t2;
if(strcmp(t2,"Y")==0||strcmp(t2,"y")==0) continue;
else break;
}
break;
case 3:for(i=0;;i++)
{
cout<<endl<<"请输入学号:";cin>>E3;
cout<<"请输入姓名:";cin>>E5;
search(pupil,E5,E3);
cout<<endl<<"你还要查询吗?要按‘Y’,否则按其它键:";
char t1[3];cin>>t1;
if(strcmp(t1,"Y")==0||strcmp(t1,"y")==0) continue;
else break;
}
break;
case 4:for(i=0;;i++)
{
cout<<endl<<"请输入班级:";cin>>E3;
search(pupil,E3);
cout<<endl<<"你还要查询班级成绩吗?要请按‘Y’,否则按其它键:";
char m1[3];
cin>>m1;
if(strcmp(m1,"Y")==0||strcmp(m1,"y")==0) continue;
else break;
}
break;
case 5: for(i=0;;i++)
{
cout<<endl<<"请输入你要查找的班和科目:"<<endl<<endl;
char h1[10];int h2;
cout<<"请输入科目:";cin>>h1;
cout<<"请输入班级:";cin>>h2;
double a3=average(pupil,h1,h2);
if(a3==0) cout<<endl<<"没有你要查找的内容!"<<endl;
else
{cout<<h1<<"的平均分为:"<<a3<<endl;}
cout<<endl<<"还要查科目平均分吗?,如果还要请输'Y'否则按其他键:"<<endl;
char h3[3];
cin>>h3;
if(strcmp(h3,"Y")==0||strcmp(h3,"y")==0)continue;
else break;
}
break;
case 6:for(i=0;;i++)
{
cout<<endl<<"请输入要查的班级:";
int u0;
cin>>u0;
rank(pupil,u0);
cout<<endl<<"你要继续查看排名吗?要按‘Y’,否则按其它键:";
char u1[3];
cin>>u1;
if(strcmp(u1,"Y")==0||strcmp(u1,"y")==0) continue;
else break;
}
break;
}
cout<<endl<<"你还要用其他方式查询吗?,要请输入“Y”,否则按其它键:";
char b2[3];
cin>>b2;
if(strcmp(b2,"Y")==0||strcmp(b2,"y")==0)
{cout<<"*****************************************************************************";
continue;}
else break;
}
}
else break;
cout<<endl<<endl<<"你还要继续操作吗,要请输入'Y',否则请输其它键:";
char b1[3];
cin>>b1;
if(strcmp(b1,"Y")==0||strcmp(b1,"y")==0) {
cout<<"*****************************************************************************"<<endl;
continue;}
else break;
}}
//***************************************************
void main()
{ cout<<endl<<endl<<"请输入你需要的人数空间:";
cin>>N;
student *pupil=new student[N+10];//用动态数组自己设空间
char (*Name)[10]=new char[N+10][10];//用动态数组自己设空间
int *CL=new int[N+10],*NU=new int[N+10],*CH=new int[N+10],*EN=new int[N+10],*MA=new int[N+10],*CO=new int[N+10];
for(int i=0;i<N;i++)//成绩录入
{
cout<<endl<<endl<<"第"<<i+1<<"位学生:"<<endl;
cout<<"请输入班级:";cin>>CL[i];
cout<<"请输入学号:";cin>>NU[i];
cout<<"请输入姓名:";cin>>Name[i];
cout<<endl<<"请输入语文成绩:";cin>>CH[i];
cout<<"请输入英语成绩:";cin>>EN[i];
cout<<"请输入数学成绩:";cin>>MA[i];
cout<<"请输入电脑成绩:";cin>>CO[i];
pupil[i].putin(CL[i],NU[i],Name[i],CH[i],EN[i],MA[i],CO[i]);}
cout<<endl<<endl;
cout<<"****************************************************************************";
cout<<endl;
cout<<"添加和删除请输入“Y”;否则按其他键:";
char u[3];
cin>>u;
//888888888888888888888888888888888888888888888888888888888888888
for(i=0;;i++)
{
if(strcmp(u,"Y")==0||strcmp(u,"y")==0)//添加和删除
{
char u0[3];
cout<<"添加“1”;删除“2”:";
cin>>u0;
if(strcmp(u0,"1")==0)
{
int u1;
cout<<"请输入你要添加的人数:";
cin>>u1;
N=N+u1;
for(i=u1;i>0;i--)
{
cout<<endl<<endl<<"第"<<N-i+1<<"位学生:"<<endl;
cout<<"请输入班级:";cin>>CL[N-i];
cout<<"请输入学号:";cin>>NU[N-i];
cout<<"请输入姓名:";cin>>Name[N-i];
cout<<endl<<"请输入语文成绩:";cin>>CH[N-i];
cout<<"请输入英语成绩:";cin>>EN[N-i];
cout<<"请输入数学成绩:";cin>>MA[N-i];
cout<<"请输入电脑成绩:";cin>>CO[N-i];
pupil[N-i].putin(CL[N-i],NU[N-i],Name[N-i],CH[N-i],EN[N-i],MA[N-i],CO[N-i]);}
cout<<endl<<endl;
}
else if(strcmp(u0,"2")==0)
{
cout<<"请输入删除人数:";
int u2,u3,u4,u5;
int k1,k2,k3,k4,k5,k6;char *k7;
cin>>u2;
for(i=0;i<u2;i++)
{
cout<<"请输入第"<<i+1<<"个删除的人的班级:";
cin>>u3;
cout<<"请输入第"<<i+1<<"个删除的人的学号:";
cin>>u4; //查某班级的成绩,是按学号顺序排
u5=find(pupil,u3,u4);
lank(pupil,u3);
k1=pupil[u5].getcl();pupil[u5].putcl(pupil[N-1].getcl());pupil[N-1].putcl(k1);
k7=new char[strlen(pupil[u5].getna())+1];
strcpy(k7,pupil[u5].getna());pupil[u5].putna(pupil[N-1].getna());pupil[N-1].putna(k7);
k2=pupil[u5].getnu();pupil[u5].putnu(pupil[N-1].getnu());pupil[N-1].putnu(k2);
k3=pupil[u5].getch();pupil[u5].putch(pupil[N-1].getch());pupil[N-1].putch(k3);
k4=pupil[u5].geten();pupil[u5].puten(pupil[N-1].geten());pupil[N-1].puten(k4);
k5=pupil[u5].getma();pupil[u5].putma(pupil[N-1].getma());pupil[N-1].putma(k5);
k6=pupil[u5].getco();pupil[u5].putco(pupil[N-1].getco());pupil[N-1].putco(k6);
N=N-1;}}}
cout<<"如果还要添跟删请输入“Y”;";
char u7[2];
cin>>u7;
if(strcmp(u7,"Y")==0||strcmp(u7,"y")==0)continue;
else fun(pupil);break;
}
fun(pupil);
delete[] Name;
delete[] CL;
delete[] NU;
delete[] CH;
delete[] EN;
delete[] MA;
delete[] CO;
}
展开全部
^^^^^^^^^^^^^^^^^
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
..........................
好多啊
我的是VB的
好多啊
我的是VB的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不好意思,如果是c语言还能帮上点忙
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询