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\t";
    std::cin >> title;
    return 0;
}

#endif // TEACHER_H_INCLUDED

1、问题描述 某高校有四类员工教师、实验员、行政人员教师兼行政人员共有的信息包括编号、姓名、性别、年龄等。其中教师还包含的信息有所在系部、专业、职称实验员还包含的信息由所在实验室、职务行政人员还包含的信息有政治面貌、职称等。 2、功能要求 (1)添加功能程序能够任意添加上述四类人员的记录可提供选择界面供用户选择所要添加的人员类别要求员工的编号要唯一如果添加了重复编号的记录时则提示数据添加重复并取消添加。 (2)查询功能可根据编号、姓名等信息对已添加的记录进行查询如果未找到给出相应的提示信息如果找到则显示相应的记录信息。 (3)显示功能可显示当前系统中所有记录每条记录占据一行。 (4)编辑功能可根据查询结果对相应的记录进行修改修改时注意编号的唯一性。 (5)删除功能主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录则提示“记录为空”并返回操作否则输入要删除的人员的编号或姓名根据所输入的信息删除该人员记录如果没有找到该人员信息则提示相应的记录不存。 (6)统计功能能根据多种参数进行人员的统计。能统计四类人员数量以及总数,统计男、女员工的数量。 (7)保存功能可将当前系统中各类人员记录存入文件中存入方式任意。 (8)读取功能可将保存在文件中的人员信息读入到当前系统中供用户进行使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值