题目:教学管理系统

 目的:简单模拟学校的教学管理系统,为了简单期间,系统只模拟最简单的功能。

 简单分析:
	人员:
		1、学生	2、教师	3、管理人员(以上三种人员都继承自CPerson基类)
	功能:
		1、设置、修改、显示个人信息	
		2、发布消息
 说明:
	以命令行程序形式运行
	所有数据保存在变量和对象中,不进行数据的数据库和文件操作。

 具体要求: 

	每个类必须实现的函数:
		1、构造函数 
		2、析构函数
		3、公告函数:该成员函数负责发布当前对象要公布的信息,在“CPerson”中设置为虚函数,在学生中转换为提问,教师中转换为答疑,管理人员中转换为发布公告。 

	建立main函数,在main函数中模拟系统的一次运行,询问用户的身份,根据用户身份要求用户设置个人信息、修改个人信息、显示个人信息;再根据用户的身份不同,分别将学生提问、老师答疑、管理人员发布公告进行演示
代码如下:
#include<iostream>
#include<string>
using namespace std;
class CPerson
{
public:
    CPerson(string nam,int a):name(nam),age(a){}
    virtual void bulletin()=0;
    virtual void set_date();
    virtual void modify_date();
    virtual void show_date();
    virtual ~CPerson(){cout<<"executing CPerson destructor"<<endl;}
private:
    string name;
    int age;

};
void CPerson::set_date()
{
    cout<<"请依次输出您的信息:名字,年龄。"<<endl;
    cin>>name>>age;
}
void CPerson::modify_date()
{
    cout<<"请输入您修改后的信息:名字,年龄。"<<endl;
    cin>>name>>age;
}
void CPerson::show_date()
{
    cout<<"name:"<<name<<endl<<"age:"<<age<<endl;
}
class Student:public CPerson
{
public:
    Student(string nam,int a,int num,float score):CPerson(nam,a),num(n),score(s){}
    void bulletin()
    {

        cout<<"请输入您要提问的问题:"<<endl;
        cin>>buf;
        cout<<buf<<endl;
    }
    void set_data()
    {
        cout<<"请依次输入您的信息:名字,年龄,学号,成绩."
        CPerson::set_date();
        cin>>num>>score;
    }
    void modify_data()
    {
        cout<<"请输入您修改后的信息:名字,年龄,学号,成绩。"<<endl;
        CPerson::modify_date();
        cin>>num>>score;
    }
    void show_date()
    {
        CPerson::show_date();
        cout<<"num:"<<num<<endl<<"score:"<<score<<endl;
    }
     ~Student(){cout<<"executing Student destructor"<<endl;}
private:
    int num;
    float score;
};
class Teacher:public CPerson
{
public:
    Student(string nam,int a,string t):CPerson(nam,a),title(t){}
    void set_data()
    {
        cout<<"请依次输入您的信息:名字,年龄,职位."
        CPerson::set_date();
        cin>>title;
    }
    void modify_data()
    {
        cout<<"请输入您修改后的信息:名字,年龄,职位。"<<endl;
        CPerson::modify_date();
        cin>>title;
    }
    void show_date()
    {
        CPerson::show_date();
        cout<<"title:"<<title<<endl;
    }
    void bulletin()
     {
        string a
        cout<<"请输入您解答此问题的答案:"<<endl;
        cin>>buf;
        cout<<buf<<endl;
    }
     ~Teacher(){cout<<"executing Teacher destructor"<<endl;}
private:
    string title;
};
class Admistra:public CPerson
{
public:
    Student(string nam,int a,int num,float score):CPerson(nam,a),code_name(c_n){}
    void set_data()
    {
        cout<<"请依次输入您的信息:名字,年龄,代号."
        CPerson::set_date();
        cin>>code_name;
    }
    void modify_data()
    {
        cout<<"请输入您修改后的信息:名字,年龄,代号"<<endl;
        CPerson::modify_date();
        cin>>code_name;
    }
    void show_date()
    {
        CPerson::show_date();
        cout<<"code_name:"<<code_name<<endl;
    }
     void bulletin()
    {
        string a
        cout<<"请输入您发布的公告:"<<endl;
        cin>>buf;
        cout<<buf<<endl;
    }
  ~Admistra(){cout<<"executing Admistra destructor"<<endl;}
private:
    int code_name;

};
int main()
{
    CPerson person1;
    Student stud1;
    Teacher tea1;
    Admistra admis1;
    CPerson *pt=&stud1;
    int x,z;
    cout<<"请问您的身份是:学生请输入1,老师请输入2,管理人员请输入3"<<endl;
    cin>>x;
    if(x=1)
    {
        pt=&stud1;
        cout<<"请你选择你对个人信息操作:设置请输入1,修改请输入2,显示请输入3"<<endl;
        cin>>z;
        if(z=1)
        {
            pt->set_date();

        }
        else if(z=2)
        {
            pt->modify_date();
        }
        else{pt->show_date;}
        pt->bulletin();
    }
    else if(x=2)
    {
         pt=&tea1;
        cout<<"请你选择你对个人信息操作:设置请输入1,修改请输入2,显示请输入3"<<endl;
        cin>>z;
        if(z=1)
        {
            pt->set_date();

        }
        else if(z=2)
        {
            pt->modify_date();
        }
        else{pt->show_date;}
        pt->bulletin();
    }
    else
    {
        pt=&admis;
        cout<<"请你选择你对个人信息操作:设置请输入1,修改请输入2,显示请输入3"<<endl;
        cin>>z;
        if(z=1)
        {
            pt->set_date();

        }
        else if(z=2)
        {
            pt->modify_date();
        }
        else{pt->show_date;}
        pt->bulletin();
    }
return 0;