C++课程设计——高校人员信息管理系统

代码又臭又长,如有BUG,欢迎指出,不一定改ಥ_ಥ

common.h 共有类:

#ifndef COMMON_H_INCLUDED
#define COMMON_H_INCLUDED

#include<string>
#include<iostream>
#include<iomanip>

class COMMON
{
protected:
    std::string name;
    bool sex;
    int age;
    std::string id;
    static int person_sum;
    static int man_sum;
    static int woman_sum;
public:
    COMMON(std::string a, bool b, int c, std::string d);
    virtual ~COMMON();
    static int get_person_sum();
    static int get_man_sum();
    static int get_woman_sum();
    virtual void show(){}
    virtual void show_row(){}
    virtual bool change(){}

    std::string get_name(){return name;}
    bool get_sex(){return sex;}
    int get_age(){return age;}
    std::string get_id(){return id;}
};

int COMMON::person_sum = 0;
int COMMON::man_sum = 0;
int COMMON::woman_sum = 0;

int COMMON::get_person_sum()
{
    return person_sum;
}

int COMMON::get_man_sum()
{
    return man_sum;
}

int COMMON::get_woman_sum()
{
    return woman_sum;
}

COMMON::COMMON(std::string a, bool b, int c, std::string d): name(a), sex(b), age(c), id(d)
{
    person_sum++;
    if(b) man_sum++;
    else woman_sum++;
}

COMMON::~COMMON()
{
    person_sum--;
    if(sex) man_sum--;
    else woman_sum--;
}

#endif // COMMON_H_INCLUDED

tester.h 实验员:

#ifndef TESTER_H_INCLUDED
#define TESTER_H_INCLUDED

#include"common.h"

class TESTER: public COMMON
{
private:
    std::string laboratory;
    std::string title;
    static int tester_sum;
public:
    TESTER(std::string a = "haha", bool b = 1, int c = 19, std::string d = "1",
           std::string e = "tt", std::string f = "学生");
    ~TESTER();

    static int get_tester_sum();
    virtual void show();
    virtual void show_row();
    virtual bool change();

    std::string get_laboratory(){return laboratory;}
    std::string get_title(){return title;}
};

int TESTER::tester_sum = 0;

int TESTER::get_tester_sum()
{
    return tester_sum;
}

TESTER::TESTER(std::string a, bool b, int c, std::string d, std::string e, std::string f):
COMMON(a,b,c,d), laboratory(e), title(f)
{
    tester_sum++;
}

TESTER::~TESTER()
{
    tester_sum--;
}

void TESTER::show()
{
    std::cout << "实验员:\n";
    std::cout << "姓名:\t\t" << name << std::endl;
    std::cout << "姓别:\t\t";
    if(sex) std::cout << "男\n";
    else std::cout << "女\n";
    std::cout << "年龄:\t\t" << age << std::endl;
    std::cout << "ID:\t\t" << id << std::endl;
    std::cout << "所属实验室:\t" << laboratory << std::endl;
    std::cout << "职务:\t\t" << title << std::endl;
}

void TESTER::show_row()
{
    std::cout << std::left << std::setw(8) << name;
    if(sex) std::cout << std::left << std::setw(8) << "男";
    else std::cout << std::left << std::setw(8) << "女";
    std::cout << std::left << std::setw(8) << age;
    std::cout << std::left << std::setw(16) << id;
    std::cout << std::left << std::setw(16) << laboratory;
    std::cout << std::left << std::setw(16) << title;
    std::cout << std::endl;
}

bool TESTER::change()
{
    std::cout << "姓名:\t\t" ;
    std::string new_name;
    std::cin >> new_name;
    for(unsigned int i = 0; i < new_name.length(); i++)
    {
        if(new_name[i] >= '0' && new_name[i] <= '9')
        {
            std::cout << "输入非法,输入任意键返回\n";
            return 1;
        }
    }
    name = new_name;

    std::cout << "姓别:\t\t";
    std::string a;
    std::cin >> a;
    if(sex) man_sum--;
    else woman_sum--;
    if(a == "男") sex = 1, man_sum++;
    else sex = 0, woman_sum++;

    std::cout << "年龄:\t\t";
    std::cin >> age;

    std::cout << "所属实验室:\t";
    std::cin >> laboratory;

    std::cout << "职务:\t\t";
    std::cin >> title;
    return 0;
}

#endif // TESTER_H_INCLUDED

teacher.h 教师:

#ifndef TEACHER_H_INCLUDED
#define TEACHER_H_INCLUDED

#include"common.h"

class TEACHER: virtual public COMMON
{
protected:
    std::string department;
    std::string profession;
    std::string title;
    static int teacher_sum;
public:
    TEACHER(std::string a = "xixi", bool b = 1, int c = 30, std::string d = "213",
            std::string e = "计算机与信息工程学院", std::string f = "计算机科学与技术", std::string g = "教师");
    ~TEACHER();

    static int get_teacher_sum();
    virtual void show();
    virtual void show_row();
    virtual bool change();

    std::string get_department(){return department;}
    std::string get_profession(){return profession;}
    std::string get_title(){return title;}
};

int TEACHER::teacher_sum = 0;

int TEACHER::get_teacher_sum()
{
    return teacher_sum;
}

TEACHER::TEACHER(std::string a, bool b, int c, std::string d, std::string e, std::string f, std::string g):
COMMON(a,b,c,d), department(e), profession(f), title(g)
{
    teacher_sum++;
}

TEACHER::~TEACHER()
{
    teacher_sum--;
}

void TEACHER::show()
{
    std::cout << "教师:\n";
    std::cout << "姓名:\t\t" << name << std::endl;
    std::cout << "姓别:\t\t";
    if(sex) std::cout << "男\n";
    else std::cout << "女\n";
    std::cout << "年龄:\t\t" << age << std::endl;
    std::cout << "ID:\t\t" << id << std::endl;
    std::cout << "院系:\t\t" << department << std::endl;
    std::cout << "专业:\t\t" << profession << std::endl;
    std::cout << "职务:\t\t" << title << std::endl;
}

void TEACHER::show_row()
{
    std::cout << std::left << std::setw(8) << name;
    if(sex) std::cout << std::left << std::setw(8) << "男";
    else std::cout << std::left << std::setw(8) << "女";
    std::cout << std::left << std::setw(8) << age;
    std::cout << std::left << std::setw(16) << id;
    std::cout << std::left << std::setw(16) << department;
    std::cout << std::left << std::setw(16) << profession;
    std::cout << std::left << std::setw(16) << title;
    std::cout << std::endl;
}

bool TEACHER::change()
{
    std::cout << "姓名:\t\t" ;
    std::string new_name;
    std::cin >> new_name;
    for(unsigned int i = 0; i < new_name.length(); i++)
    {
        if(new_name[i] >= '0' && new_name[i] <= '9')
        {
            std::cout << "输入非法,输入任意键返回\n";
            return 1;
        }
    }
    name = new_name;

    std::cout << "姓别:\t\t";
    std::string a;
    std::cin >> a;
    if(sex) man_sum--;
    else woman_sum--;
    if(a == "男") sex = 1, man_sum++;
    else sex = 0, woman_sum++;

    std::cout << "年龄:\t\t";
    std::cin >> age;

    std::cout << "院系:\t\t";
    std::cin >> department;

    std::cout << "专业:\t\t";
    std::cin >> profession;

    std::cout << "职务:\t
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值