?? studentmanage.cpp
字號:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
/*類成績的定義*/
class chengji
{
public:
chengji(){}
chengji(double chi,double mat,double eng);
chengji(chengji &p);
~chengji(){}
void changecj(double a,double b,double c);
double getchi();
double getmat();
double geteng();
double getzchengji();
private:
double chinese;
double mathd;
double english;
double zchengji;
};
chengji::chengji(double chi,double mat,double eng)
{
chinese=chi;
mathd=mat;
english=eng;
zchengji=chinese+mathd+english;
}
chengji::chengji(chengji &p)
{
chinese=p.chinese;
mathd=p.mathd;
english=p.english;
zchengji=p.zchengji;
}
double chengji::getchi()
{
return chinese;
}
double chengji::getmat()
{
return mathd;
}
double chengji::geteng()
{
return english;
}
double chengji::getzchengji()
{
return zchengji;
}
void chengji::changecj(double a,double b,double c)
{
chinese=a;
mathd=b;
english=c;
zchengji=chinese+mathd+english;
}
/*類學生的定義*/
class student:public chengji
{
public:
student(){}
student(string a,string b,double chi,double mat,double eng):chengji(chi,mat,eng)
{
numb=a;
name=b;
}
student(student &ps):chengji(ps)
{
numb=ps.numb;
name=ps.name;
}
~student(){};
string getnumb();
string getname();
void changest(string a,string b,double chi,double mat,double eng);
void showst();
private:
string numb;
string name;
};
string student::getnumb()
{
return numb;
}
string student::getname()
{
return name;
}
void student::changest(string a,string b,double chi,double mat,double eng)
{
changecj(chi,mat,eng);
numb=a;
name=b;
}
void creatstudent(student *pst,int num)
{
string name;
string numb;
double chinese;
double mathd;
double english;
for(int i=0;i<num;i++)
{
cout<<"輸入第"<<i+1<<"個學生的學號:";
cin>>numb;
cout<<"輸入第"<<i+1<<"個學生的姓名:";
cin>>name;
cout<<"輸入第"<<i+1<<"個學生的語文成績:";
cin>>chinese;
cout<<"輸入第"<<i+1<<"個學生的數學成績:";
cin>>mathd;
cout<<"輸入第"<<i+1<<"個學生的英語成績:";
cin>>english;
if(i>0)
{
for(int j=0;j<i;j++)
{
if(numb==pst[j].getnumb())
{
cout<<"重新輸入學號,此學號已經存在!"<<endl;
cin>>numb;
}
}
}
pst[i].changest(numb,name,chinese,mathd,english);
}
}
void outputstudent()
{
int i;
int studvalue;
string name;
string numb;
double chinese;
double mathd;
double english;
fstream iofile("student.txt");
string temp;
iofile>>temp;
if(temp=="Num_stud")
{
iofile>>studvalue;
}
student *ps=new student[studvalue];
for(i=0;iofile>>numb;i++)
{
iofile>>name>>chinese>>mathd>>english;
ps[i].changest(numb,name,chinese,mathd,english);
}
for(i=0;i<studvalue;i++)
{
cout<<ps[i].getnumb()<<" "
<<ps[i].getname()<<" "
<<ps[i].getchi()<<" "
<<ps[i].getmat()<<" "
<<ps[i].geteng()<<endl;
}
iofile.close();
}
void changestudent()
{
int studvalue;
int i;
string name;
string numb;
double chinese;
double mathd;
double english;
ifstream readfile("student.txt");
string temp;
readfile>>temp;
if(temp=="Num_stud")
{
readfile>>studvalue;
}
student *ps=new student[studvalue];
for(i=0;readfile>>numb;i++)
{
readfile>>name>>chinese>>mathd>>english;
ps[i].changest(numb,name,chinese,mathd,english);
}
readfile.close();
cout<<"輸入要修改的學生的學號:"<<endl;
cin>>numb;
for(i=0;i<studvalue;i++)
{
if(numb==ps[i].getnumb())
break;
}
if(i>=studvalue)
{
cout<<"要修改的學生的學號不存在!"<<endl;
}
else
{
cout<<"輸入修改的學生的姓名:"<<endl;
cin>>name;
cout<<"輸入修改的語文成績:"<<endl;
cin>>chinese;
cout<<"輸入修改的數學成績:"<<endl;
cin>>mathd;
cout<<"輸入修改的英語成績:"<<endl;
cin>>english;
ps[i].changest(numb,name,chinese,mathd,english);
ofstream writefile("student.txt");
writefile<<"Num_stud"<<" "<<studvalue<<endl;
for(i=0;i<studvalue;i++)
{
writefile<<ps[i].getnumb()<<" "
<<ps[i].getname()<<" "
<<ps[i].getchi()<<" "
<<ps[i].getmat()<<" "
<<ps[i].geteng()<<endl;
}
writefile.close();
}
delete []ps;
}
void increasestudent()
{
int studvalue;
int num;
int i;
string name;
string numb;
double chinese;
double mathd;
double english;
ifstream readfile("student.txt");
string temp;
readfile>>temp;
if(temp=="Num_stud")
{
readfile>>studvalue;
}
student *ps=new student[studvalue];
for(i=0;readfile>>numb;i++)
{
readfile>>name>>chinese>>mathd>>english;
ps[i].changest(numb,name,chinese,mathd,english);
}
readfile.close();
cout<<"輸入增加學生個數:"<<endl;
cin>>num;
student *pss=new student[num+studvalue];
for(i=0;i<studvalue;i++)
{
pss[i]=ps[i];
}
delete []ps;
for(i=studvalue;i<num+studvalue;i++)
{
cout<<"輸入第"<<i+1<<"個學生的學號:";
cin>>numb;
if(i>0)
{
for(int j=0;j<i;j++)
{
if(numb==pss[j].getnumb())
{
cout<<"此學號已經存在!重新輸入學號:";
cin>>numb;
}
}
}
cout<<"輸入第"<<i+1<<"個學生的姓名:";
cin>>name;
cout<<"輸入第"<<i+1<<"個學生的語文成績:";
cin>>chinese;
cout<<"輸入第"<<i+1<<"個學生的數學成績:";
cin>>mathd;
cout<<"輸入第"<<i+1<<"個學生的英語成績:";
cin>>english;
pss[i].changest(numb,name,chinese,mathd,english);
}
ofstream writefile("student.txt");
writefile<<"Num_stud"<<" "<<studvalue+num<<endl;
for(i=0;i<studvalue+num;i++)
{
writefile<<pss[i].getnumb()<<" "
<<pss[i].getname()<<" "
<<pss[i].getchi()<<" "
<<pss[i].getmat()<<" "
<<pss[i].geteng()<<endl;
}
writefile.close();
delete []pss;
}
/*主程序*/
void main()
{
int studvalue;
int k;
int drs=0;
string name;
string numb;
double chinese;
double mathd;
double english;
double max;
fstream iofile("student.txt");
if(!iofile) //打開文件student.txt失敗,新建文件
{
cout<<"新建一個只寫文件!"<<endl;
ofstream writefile("student.txt");
if(!writefile)
{
cout<<"新建文件失??!"<<endl;
return;
}
cout<<"輸入學生個數:";
cin>>studvalue;
student *ps=new student[studvalue];
writefile<<"Num_stud"<<" "<<studvalue<<endl;
creatstudent(ps,studvalue);
for(k=0;k<studvalue;k++)
{
writefile<<ps[k].getnumb()<<" "
<<ps[k].getname()<<" "
<<ps[k].getchi()<<" "
<<ps[k].getmat()<<" "
<<ps[k].geteng()<<endl;
}
writefile.close();
char op='y';
while(op=='y'||op=='Y')
{
cout<<"如需輸出全部學生的成績,按't'或'T':"<<endl;
cout<<"如需輸出全部學生的總分,按'z'或'Z':"<<endl;
cout<<"如需輸出總分最高的學生,按'm'或'M':"<<endl;
cout<<"如需修改學生記錄,按'c'或'C':"<<endl;
cout<<"如需增加學生記錄,按'i'或'I':"<<endl;
cin>>op;
switch(op)
{
case 't':
case 'T':
outputstudent();
break;
case 'z':
case 'Z':
for(k=0;k<studvalue;k++)
{
cout<<ps[k].getnumb()<<" "
<<ps[k].getname()<<" "
<<ps[k].getzchengji()<<endl;
}
break;
case 'm':
case 'M':
max=ps[0].getzchengji();
for(k=0;k<studvalue;k++)
{
if(max<ps[k].getzchengji())
{
max=ps[k].getzchengji();
drs=k;
}
}
cout<<"總分最高的學生的學號是:"<<ps[drs].getnumb()<<" "
<<"姓名是:"<<ps[drs].getname()<<" "
<<"總分是:"<<ps[drs].getzchengji()<<endl;
break;
case 'c':
case 'C':
changestudent();
break;
case 'i':
case 'I':
increasestudent();
break;
}
cout<<"輸入是否繼續,按'y'或'n':"<<endl;
cin>>op;
}
delete []ps;
}
else //打開文件student.txt成功
{
string temp;
iofile>>temp;
if(temp=="Num_stud")
{
iofile>>studvalue;
}
student *ps=new student[studvalue];
for(k=0;iofile>>numb;k++)
{
iofile>>name>>chinese>>mathd>>english;
ps[k].changest(numb,name,chinese,mathd,english);
}
iofile.close();
char op='y';
while(op=='y'||op=='Y')
{
cout<<"如需輸出全部學生的成績,按't'或'T':"<<endl;
cout<<"如需輸出全部學生的總分,按'z'或'Z':"<<endl;
cout<<"如需輸出總分最高的學生,按'm'或'M':"<<endl;
cout<<"如需修改學生記錄,按'c'或'C':"<<endl;
cout<<"如需增加學生記錄,按'i'或'I':"<<endl;
cin>>op;
switch(op)
{
case 't':
case 'T':
outputstudent();
break;
case 'z':
case 'Z':
for(k=0;k<studvalue;k++)
{
cout<<ps[k].getnumb()<<" "
<<ps[k].getname()<<" "
<<ps[k].getzchengji()<<endl;
}
break;
case 'm':
case 'M':
max=ps[0].getzchengji();
for(k=0;k<studvalue;k++)
{
if(max<ps[k].getzchengji())
{
max=ps[k].getzchengji();
drs=k;
}
}
cout<<"總分最高的學生的學號是:"<<ps[drs].getnumb()<<" "
<<"姓名是:"<<ps[drs].getname()<<" "
<<"總分是:"<<ps[drs].getzchengji()<<endl;
break;
case 'c':
case 'C':
changestudent();
break;
case 'i':
case 'I':
increasestudent();
break;
}
cout<<"輸入是否繼續,按'y'或'n':"<<endl;
cin>>op;
}
delete []ps;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -