当前位置:文档之家› Person类C++

Person类C++

#include
#include
#include
#include
#include
#include
#include
using namespace std;
class CBirthday
{
private:
int year;
int month;
int day;
public:
CBirthday(int y=2000,int m=01,int d=01)
{
year=y;
month=m;
day=d;
}
CBirthday(CBirthday &d)
{
year=d.year;
month=d.month;
day=d.day;
}
int getyear()
{
return year;
}
int getmonth()
{
return month;
}

int getday()
{
return day;
}
void display()
{
cout<}

};
class Person
{
private:
string ID;
string name;
string sex;
CBirthday birthday;
public:
Person()
{
ID="00000000";
sex="man";
name=" ";
}
void input(string id, string se,string na, CBirthday &d)
{
ID=id;
sex=se;
name=na;
birthday=d;
}
void display()
{
cout<<"身份证号:"<cout<<"姓名:"<cout<<"性别:"<cout<<"出生日期:"<<<"年"<<<"月"<}
};
class CStudent:public Person
{
private:
string studentnumber;
string classname;
string coursename;
double score;
public:
CStudent()
{
studentnumber="00000000";
classname=" ";
coursename=" ";
score=-1;
}
void input(string stunum, string classna) //输入学生信息
{
studentnumber=stunum;
classname=classna;
}
void inputcourse(string coursena,double grade) //输入学生每门课程名和成绩
{
coursename=coursena;
score=grade;
}
void displaystudent() //输出学生信息
{
cout<<"学号:"<cout<<"班级名:"<}
void displaycourse() //输出学生的每门课程名和成绩
{
cout<<"课程名 :"<cout<<"分数:"<}

};
class CTeacher :public Person
{
private:
string profession;
string jobnumber;
string branch;
string coursename;
string coursenumber;
vector studentname;
vector score;
vector studentnumber;
public:
CTeacher() //CTeacher类的构造函数,实现数据初始化
{
profession=" ";
jobnumber="00000000";
branch=" ";
coursename=" ";
coursenumber="000000";
}
~CTeacher(){}
void input(string prof,string jobnum,string bran,string coursena,string coursenum ) //输入老师信息
{
profession=prof;
jobnumber=jobnum;
branch=bran;
coursename=coursena;
coursenumber=coursenum;
}
void dispt() //输出老师信息
{
cout<<"职称:"<cout<<"工作号:"<cout<<"部门 :"<cout<<"课程名:"<

cout<<"课程号:"<}


void setscore(string studentna,string studentnum,double grade) // 录入学生成绩信息
{
studentnumber.push_back(studentnum);
studentname.push_back(studentna);
score.push_back(grade);
}
void dispallscore() //输出所有学生成绩信息
{
int i;
for(i=0;i{
cout<<"学生姓名:"<cout<<"学号:"<cout<<"成绩:"<}
}
void disponescore(string a) //单个输出学生成绩信息
{
int i;
int k=0;
for(i=0;i{

if(a==studentname[i])
{
cout<<"学生姓名:"<cout<<"学号:"<cout<<"成绩 :"<k++;
}
else if(a==studentnumber[i])
{
cout<<"学生姓名:"<cout<<"学号:"<cout<<"成绩:"<k++;
}
}
if(k==0)
throw"此学生姓名或学号不在范围内,请重新输入姓名或学号:";
}
void sortscore() //按成绩排序
{
int i,j;
double temp;
string chang1,chang2;
for(j=0;jfor(i=0;i{
if(score[i]>score[i+1])
{
temp=score[i];score[i]=score[i+1];score[i+1]=temp; //成绩排序时,姓名,学号同时排序
chang1=studentname[i];studentname[i]=studentname[i+1];studentname[i+1]=chang1;//这样保证排序前和排序后,成绩,学号,
chang2=studentnumber[i];studentnumber[i]=studentnumber[i+1];studentnumber[i+1]=chang2;//姓名都一一 对应
}
}
}

void stetedscore(string a,double b) //修改 学生成绩
{
int i;
for(i=0;i{
if(a==studentname[i])
score[i]=b;
if(a==studentnumber[i])
score[i]=b;
}

}

};
int main()
{
int a=1;
while(a)
{
cout<<"******************按钮A,测试学生信息******************"<cout<<"******************按钮B,试老师信息********************"<cout<<"******************按钮C,关闭测试********************** "<cout<<"请选择:";
char b;
cin>>b;
if(b=='A')
{
cout<<"学生 信息:"<cout<<"请输入学生出生日期按(2000‘年’ 01‘月’ 01‘日’)输入:"<ofstream out("E:\\学生信息.txt");
if(!out){cout<<"不能打开文件:\n"; return -1;}
out<<"生日"<int a,b,c;
cin>>a>>b>>c;
out<

CBirthday day1(a,b,c);
cin.clear();//重置错误输入
cin.sync();//
CStudent stu1;
string d;
string e;
string f;
cout<<"请输入(身份证号 ,性别(男/女),姓名 ):"<cin>>d>>f>>e;
out<stu1.Person::input(d,f,e,day1);
cin.clear();//重置错误输入
cin.sync();//
cout<<"请输入(学号,班级:)"<string g;
string h;
cin>>g>>h;
out<stu1.CStudent::input(g,h);
cout<<"请输入(课程名,成绩);按Ctrl+Z结束:"<string x;
double y;
out<<"课程名"<while(cin>>x>>y)
{
out<stu1.inputcourse(x,y);
}
cout<<"保存完毕!"<out.close();
stu1.display();
stu1.displaystudent();
stu1.displaycourse();
cout<cin.clear();//重置错误输入
cin.sync();//*/
}
//****************************
if(b=='B')
{
cout<<"老师 信息:"<cout<<"请输入老师出生日期按(2000‘年’ 01‘月’ 01‘日’)输入:"<ofstream out("E:\\老师信息.txt");
if(!out){cout<<"不能打开文件:\n"; return -1;}
out<<"生日"<<int a,b,c;
cin>>a>>b>>c;
out<CBirthday day1(a,b,c);
cin.clear();//重置错误输入
cin.sync();//
CTeacher t1;
string d;
string e;
string f;
cout<<"请输入(身份证号 ,性别(男/女),姓名 ):"<cin>>d>>f>>e;
out<t1.Person::input(d,f,e,day1);
cin.clear();//重置错误输入
cin.sync();//*/
string h,j,k,l,m;
cout<<"请输入老师(职称,职工号,部门,课程名,课程号):"<cin>>h>>j>>k>>l>>m;
out<t1.CTeacher::input(h,j,k,l,m);
cin.clear();//重置错误输入
cin.sync();//*/
t1.display();
t1.dispt();
string q,p;
double n;
cout<<"请输入该老师所教学生(姓名,学号 ,成绩):按Ctrl+Z结束:"<out<out<<"该老师所教学生的该课程成绩信息:"<out<<"姓名"<

"学号"<while(cin>>p>>q>>n)
{
out<t1.setscore(p,q,n);
}
cout<<"保存完毕!"<out.close();
cout<<"请输出所有学生的信息:"<t1.dispallscore();
cout<<"对学生成绩 排序并输出:"<t1.sortscore();
t1.dispallscore();
string t;
double v;
cout<cout<<"修改学生成绩"<cout<<"请输入姓名或学号:";
cin.clear();//重置错误输入
cin.sync();
while(cin>>t)
{
cout<<"学生的原成绩是:"<char *a="true";
try
{
t1.disponescore(t);
}
catch( char* message)
{
cout<a=message;
}
if(a=="true")
break;

}
cout<<"请输入修改后的成绩:";
cin>>v;
t1. stetedscore(t,v);
t1.disponescore(t);
}
if(b=='C') a--;
}
return 0;

}

相关主题
文本预览
相关文档 最新文档