?? 成績管理.txt
字號:
#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,"數(shù)學")==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)<<"數(shù)學"<<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)<<"數(shù)學"<<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)<<"數(shù)學"<<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())//實現(xiàn)用學號來排序
{
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)<<"數(shù)學"<<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,改數(shù)學請輸入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)<<"數(shù)學"<<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)<<"數(shù)學"<<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)<<"數(shù)學"<<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)<<"數(shù)學"<<setw(8)
<<"電腦"<<endl;
p[a].putout();cout<<endl<<endl;
break;
case 5:cout<<endl<<endl<<"原來的值分別為:"<<endl
<<"語文:"<<p[a].getch()<<endl
<<"英語:"<<p[a].geten()<<endl
<<"數(shù)學:"<<p[a].getma()<<endl
<<"電腦:"<<p[a].getco()<<endl;
cout<<endl;
cout<<"請輸入語文的值:";cin>>B1;
cout<<"請輸入英語的值:";cin>>B2;
cout<<"請輸入數(shù)學的值:";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)<<"數(shù)學"<<setw(8)
<<"電腦"<<endl;
p[a].putout();cout<<endl;
break;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -