📄 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 + -