【山东科技大学OJ】Problem C: 简单教务系统中的用户

该文描述了一个C++编程问题,要求定义三个类Person、Teacher和Student,这些类具有特定的构造函数和析构函数。Person类为基础类,Teacher和Student分别继承自Person,拥有额外的属性。输入包括姓名、职称和成绩,程序会根据输入创建并销毁对象,同时在创建和销毁时输出相应的信息。
摘要由CSDN通过智能技术生成

 

Time Limit: 1 Sec Memory Limit: 128 MB

Submit: 805 Solved: 289

[Submit][Status]

Description

一个简单的教务系统中的用户至少包含学生、老师两类用户。两类用户都有共同的属性姓名,教师有特有的属性职称,学生有特有的属性成绩。根据给出的主函数、输入和输出,定义三个类Person、Teacher和Student,实现基本的构造和析构功能。

 

Input

只有一行。第1个和第2个是字符串,表示姓名、职称,第3个是一个实数,表示成绩。

 

Output

见样例。

 

Sample Input

Tom Prof 234

Sample Output

A person without name is created.

Person Tom is created.

Teacher Tom Prof is created.

Teacher Tom is erased.

Person Tom is erased.

Person Tom is created.

Student Tom 234 is created.

Student Tom is erased.

Person Tom is erased.

A person without name is erased.

HINT

Append Code

append.cc,

[Submit][Status]


#include <iostream>

#include <string>

using namespace std;

class Person

{

    static int n;

protected:

    string name_;

public:

    Person(){n++;cout<<"A person without name is created."<<endl;}

    Person(string name):name_(name){n++;cout<<"Person "<<name_<<" is created."<<endl;}

    virtual ~Person(){n--;

if(n!=0)cout<<"Person "<<name_<<" is erased."<<endl;

 if(n==0)cout<<"A person without name is erased."<<endl;

        }

};

int Person:: n=0;

class Teacher:virtual public Person

{

protected:

    string pos_;

public:

    Teacher(string name,string pos):Person(name),pos_(pos){cout<<"Teacher "<<name_<<" "<<pos_<<" is created."<<endl;}

    ~Teacher(){cout<<"Teacher "<<name_<<" is erased."<<endl;}

};

class Student:virtual public Person

{

protected:

    double sco_;

public:

    Student(string name,double sco):Person(name),sco_(sco){cout<<"Student "<<name_<<" "<<sco_<<" is created."<<endl;}

    ~Student(){cout<<"Student "<<name_<<" is erased."<<endl;}

};

 

int main(){

    string name,pos;

    double sco;

    cin>>name>>pos>>sco;

    Person person;

    Person *p;

    p=new Teacher(name,pos);

    delete p;

    Person *q;

    q=new Student(name,sco);

    delete q;

    return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值