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

administrator.h 行政人员:

#ifndef ADMINISTRATOR_H_INCLUDED
#define ADMINISTRATOR_H_INCLUDED

#include"common.h"

class ADMINISTRATOR: virtual public COMMON
{
protected:
    std::string politics;
    std::string position;
    static int administrator_sum;
public:
    ADMINISTRATOR(std::string a = "huhu", bool b = 1, int c = 39, std::string d = "176",
                  std::string e = "群众", std:: string f = "社会主义新青年");
    ~ADMINISTRATOR();

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

    std::string get_politics(){return politics;}
    std::string get_position(){return position;}
};

int ADMINISTRATOR::administrator_sum = 0;

int ADMINISTRATOR::get_administrator_sum()
{
    return administrator_sum;
}

ADMINISTRATOR::ADMINISTRATOR(std::string a, bool b, int c, std::string d, std::string e, std::string f):
COMMON(a,b,c,d), politics(e), position(f)
{
    administrator_sum++;
}

ADMINISTRATOR::~ADMINISTRATOR()
{
    administrator_sum--;
}

void ADMINISTRATOR::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" << politics << std::endl;
    std::cout << "职称:\t\t" << position << std::endl;
}

void ADMINISTRATOR::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) << politics;
    std::cout << std::left << std::setw(16) << position;
    std::cout << std::endl;
}

bool ADMINISTRATOR::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 >> politics;

    std::cout << "职称:\t\t";
    std::cin >> position;
    return 0;
}

#endif // ADMINISTRATOR_H_INCLUDED

tea&admi.h 教师及行政人员:

#ifndef TEAADMI_H_INCLUDED
#define TEAADMI_H_INCLUDED

#include"teacher.h"
#include"administrator.h"

class TEAADMI: public TEACHER, public ADMINISTRATOR
{
private:
    static int teaadmi_sum;
public:
    TEAADMI(std::string a = "maomao", bool b = 1, int c = 59, std::string d = "0",
            std::string e = "计算机与信息工程学院", std::string f = "计算机科学与技术", std::string g = "教师",
            std::string h = "群众", std:: string i = "社会主义新青年");
    ~TEAADMI();
    static int get_teaadmi_sum();
    virtual void show();
    virtual void show_row();
    virtual bool change();
};

int TEAADMI::teaadmi_sum = 0;

int TEAADMI::get_teaadmi_sum()
{
    return teaadmi_sum;
}

TEAADMI::TEAADMI(std::string a, bool b, int c, std::string d, std::string e, std::string f, std::string g, std::string h, std::string i):
COMMON(a,b,c,d), TEACHER(a,b,c,d,e,f,g), ADMINISTRATOR(a,b,c,d,h,i)
{
    teaadmi_sum++;
}

TEAADMI::~TEAADMI()
{
    teaadmi_sum--;
}

void TEAADMI::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;
    std::cout << "政治面貌:\t" << politics << std::endl;
    std::cout << "职称:\t\t" << position << std::endl;
}

void TEAADMI::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::left << std::setw(16) << politics;
    std::cout << std::left << std::setw(16) << position;
    std::cout << std::endl;
}

bool TEAADMI::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;

    std::cout << "政治面貌:\t";
    std::cin >> politics;

    std::cout << "职称:\t\t";
    std::cin >> position;
    return 0;
}

#endif // TEA&ADMI_H_INCLUDED

interface.h 界面:

#ifndef INTERFACE_H_INCLUDED
#define INTERFACE_H_INCLUDED

#include"teacher.h"
#include"tester.h"
#include"administrator.h"
#include"tea&admi.h"

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

/*----------------函数声明-------------------*/

void interface_login();          //初始界面
void interface_Manager();        //管理者界面
void staff_list();               //管理者清单

#include"myfun.h"

/*----------------函数定义-------------------*/

void interface_Manager() //管理界面
{
    int n=1;
    while(n)
    {
        system("cls");
        std::cout << "------------欢迎来到只有神知道的领域 o(*≧▽≦)ツ----------\n";
        std::cout << "-----------------------------------------------------------\n";
        std::cout << "-----------------------------------------------------------\n";
        std::cout << "-------------     输入1 添加信息              -------------\n";
        std::cout << "-------------     输入2 查询信息              -------------\n";
        std::cout << "-------------     输入3 浏览信息              -------------\n";
        std::cout << "-------------     输入4 修改信息              -------------\n";
        std::cout << "-------------     输入5 删除信息              -------------\n";
        std::cout << "-------------     输入6 统计信息              -------------\n";
        std::cout << "-------------     输入0 返回上一级            -------------\n";
        std::cout << "-----------------------------------------------------------\n";
        std::cout << "-----------------------------------------------------------\n";
        std::cin >> n;
        switch(n)
        {
            case 1:Add_information();break;
            case 2:
            {
                int a = 1;
                if(!Query_information()) break;
                while(a)
                {
                    std::cout << "输入1 修改信息\n";
                    std::cout << "输入2 删除信息\n";
                    std::cout << "输入0 返回上一级\n";
                    std::cin >> a;
                    switch(a)
                    {
                        case 1:Edit_information(); a = 0; break;
                        case 2:Delete_information(); a= 0; break;
                    }
                }
                break;
            }
            case 3:
            {
                int a=1;
                while(a)
                {
                    Browse_information();
                    std::cout << "输入1 修改信息\n";
                    std::cout << "输入2 删除信息\n";
                    std::cout << "输入0 返回上一级\n";
                    std::cin >> a;
                    switch(a)
                    {
                        case 1:Edit_information(); break;
                        case 2:Delete_information(); break;
                    }
                }
                break;
            }
            case 4:Edit_information(); break;
            case 5:Delete_information(); break;
            case 6:count_information(); break;
        }
    }
}

void interface_login() //登入界面
{
    int n=1;
    while(n)
    {
        system("cls");
        std::cout << "----------欢迎进入高校人员信息管理系统 o(*≧▽≦)ツ--------\n";
        std::cout << "-----------------------------------------------------------\n";
        std::cout << "-----------------------------------------------------------\n";
        std::cout << "-------------     输入1 管理员账号登入        -------------\n";
        std::cout << "-------------     输入2 查询信息              -------------\n";
        std::cout << "-------------     输入3 浏览信息              -------------\n";
        std::cout << "-------------     输入4 统计信息              -------------\n";
        std::cout << "-------------     输入5 观看制作信息          -------------\n";
        std::cout << "-------------     输入0 关闭系统              -------------\n";
        std::cout << "-----------------------------------------------------------\n";
        std::cout << "-----------------------------------------------------------\n";
        std::cin >> n;
        switch(n)
        {
            case 1:login(); break;
            case 2:if(Query_information()) std::cout << "输入任意键,返回上一级\n", getch(); break;
            case 3:Browse_information(); std::cout << "输入任意键,返回上一级\n"; getch(); break;
            case 4:count_information(); break;
            case 5:staff_list(); break;
        }
    }
}

void staff_list() //制作人员名单
{
    system("cls");
    std::cout << "-----------------------------------------------------------\n";
    std::cout << "-----------------------------------------------------------\n";
    std::cout << "--------------Include the following members----------------\n";
    std::cout << "--------------           wzy               ----------------\n";
    std::cout << "--------------           ToRe              ----------------\n";
    std::cout << "-----------------------------------------------------------\n";
    std::cout << "-----------------------------------------------------------\n\n\n";
    std::cout << "\n输入任意键返回主菜单…\n";
    getch();
}

#endif // INTERFACE_H_INCLUDED

myfun.h 主要功能实现:

#ifndef MYFUN_H_INCLUDED
#define MYFUN_H_INCLUDED

#include<vector>
#include<map>
#include<fstream>

/*----------------成员声明-------------------*/

std::multimap<std::string, COMMON *> sear;

std::vector<TESTER*> tester;
std::vector<TEACHER*> teacher;
std::vector<ADMINISTRATOR*> administrator;
std::vector<TEAADMI*> teaadmi;

/*----------------函数声明-------------------*/

void Information_load();        //信息加载
void room_delete();             //释放空间
void login();                   //登入函数
void Add_information();         //添加信息
bool Query_information();       //显示查询信息
void Browse_information();      //浏览信息
void Edit_information();        //修改信息
void Delete_information();      //删除信息
void count_information();       //统计信息

/*----------------函数定义-------------------*/

void Information_load() //信息加载
{
    std::ifstream in;
    in.open("实验员.txt", std::ios::in);
    std::string name, id;
    int age;
    bool sex;
    while(in >> name)
    {
        std::string laboratory, title;
        in >> sex >> age >> id >> laboratory >> title;
        TESTER *t = new TESTER(name,sex,age,id,laboratory,title);
        tester.push_back(t);
        sear.insert(make_pair(name, t));
        sear.insert(make_pair(id, t));
    }
    in.close();

    in.open("教师.txt", std::ios::in);
    while(in >> name)
    {
        std::string department, profession, title;
        in >> sex >> age >> id >> department >> profession >> title;
        TEACHER *t = new TEACHER(name,sex,age,id,department,profession,title);
        teacher.push_back(t);
        sear.insert(make_pair(name, t));
        sear.insert(make_pair(id, t));
    }
    in.close();

    in.open("行政人员.txt", std::ios::in);
    while(in >> name)
    {
        std::string politics, position;
        in >> sex >> age >> id >> politics >> position;
        ADMINISTRATOR *t = new ADMINISTRATOR(name,sex,age,id,politics,position);
        administrator.push_back(t);
        sear.insert(make_pair(name, t));
        sear.insert(make_pair(id, t));
    }
    in.close();

    in.open("教师&行政人员.txt", std::ios::in);
    while(in >> name)
    {
        std::string department, profession, title, politics, position;
        in >> sex >> age >> id >> department >> profession >> title >> politics >> position;
        TEAADMI *t = new TEAADMI(name,sex,age,id,department,profession,title,politics,position);
        teaadmi.push_back(t);
        sear.insert(make_pair(name, t));
        sear.insert(make_pair(id, t));
    }
}

void room_delete() //释放空间
{
    for(auto iter:tester) delete iter;
    for(auto iter:teacher) delete iter;
    for(auto iter:administrator) delete iter;
    for(auto iter:teaadmi) delete iter;
}

void login() //登入函数
{
    std::string com;
    system("cls");
    std::cout << "请输入密码\n";
    getchar();
    std::getline(std::cin,com);
    if(com == "bokuwasinnsekainokamitonaru") interface_Manager();
    else
    {
        std::cout << "密码错误,输入任意键返回上一级\n";
        getch();
    }
}

void Add_information()//添加信息
{
    system("cls");
    std::cout << "请输入添加类型\n1:实验员\t2:教师\t\t3:行政人员\t4:教师及行政人员\n";
    int flag; std::cin >> flag;
    std::string name, se, id;
    int age;
    bool sex = 0;
    std::cout << "ID:\t\t"; std::cin >> id;
    for(unsigned int i = 0; i < id.length(); i++)
    {
        if(id[i] < '0' || id[i] > '9')
        {
            std::cout << "输入非法,输入任意键返回\n";
            getch();
            return;
        }
    }

    std::multimap<std::string, COMMON *>::iterator beg, en;
    beg = sear.lower_bound(id);
    en = sear.upper_bound(id);
    if(beg != en)
    {
        std::cout << "此ID已存在,输入任意键返回\n";
        getch();
        return;
    }

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

    std::cout << "性别:\t\t"; std::cin >> se; if(se == "男") sex = 1;
    std::cout << "年龄:\t\t"; std::cin >> age;
    if(flag == 1)
    {
        std::string laboratory, title;
        std::cout << "实验室名称:\t"; std::cin >> laboratory;
        std::cout << "职务:\t\t"; std::cin >> title;
        TESTER *t = new TESTER(name,sex,age,id,laboratory,title);
        tester.push_back(t);
        sear.insert(make_pair(name, t));
        sear.insert(make_pair(id, t));
        std::ofstream out;
        out.open("实验员.txt", std::ios::app);
        out << name << " " << sex << " " << age << " " << id << " ";
        out << laboratory << " " << title << std::endl;
        out.close();
    }
    if(flag == 2)
    {
        std::string department, profession, title;
        std::cout << "院系:\t\t"; std::cin >> department;
        std::cout << "专业:\t\t"; std::cin >> profession;
        std::cout << "职务:\t\t"; std::cin >> title;
        TEACHER *t = new TEACHER(name,sex,age,id,department,profession,title);
        teacher.push_back(t);
        sear.insert(make_pair(name, t));
        sear.insert(make_pair(id, t));
        std::ofstream out;
        out.open("教师.txt", std::ios::app);
        out << name << " " << sex << " " << age << " " << id << " ";
        out << department << " " << profession << " " << title << std::endl;
        out.close();
    }
    if(flag == 3)
    {
        std::string politics, position;
        std::cout << "政治面貌:\t"; std::cin >> politics;
        std::cout << "职称:\t\t"; std::cin >> position;
        ADMINISTRATOR *t = new ADMINISTRATOR(name,sex,age,id,politics,position);
        administrator.push_back(t);
        sear.insert(make_pair(name, t));
        sear.insert(make_pair(id, t));
        std::ofstream out;
        out.open("行政人员.txt", std::ios::app);
        out << name << " " << sex << " " << age << " " << id << " ";
        out << politics << " " << position << std::endl;
        out.close();
    }
    if(flag == 4)
    {
        std::string department, profession, title, politics, position;
        std::cout << "院系:\t\t"; std::cin >> department;
        std::cout << "专业:\t\t"; std::cin >> profession;
        std::cout << "职务:\t\t"; std::cin >> title;
        std::cout << "政治面貌:\t"; std::cin >> politics;
        std::cout << "职称:\t\t"; std::cin >> position;
        TEAADMI *t = new TEAADMI(name,sex,age,id,department,profession,title,politics,position);
        teaadmi.push_back(t);
        sear.insert(make_pair(name, t));
        sear.insert(make_pair(id, t));
        std::ofstream out;
        out.open("教师&行政人员.txt", std::ios::app);
        out << name << " " << sex << " " << age << " " << id << " ";
        out << department << " " << profession << " " << title << " ";
        out << politics << " " << position << std::endl;
        out.close();
    }
    std::cout << "注册成功,输入任意键返回\n";
    getch();
}

void Delete_information() //删除信息
{
    std::cout << "输入目标ID以确认\n";
    std::string aid;
    std::cin >> aid;

    for(unsigned int i = 0; i < aid.length(); i++)
    {
        if(aid[i] < '0' || aid[i] > '9')
        {
            std::cout << "输入非法,输入任意键返回\n";
            getch();
            return;
        }
    }

    std::multimap<std::string, COMMON *>::iterator beg, en, iter;
    beg = sear.lower_bound(aid);
    en = sear.upper_bound(aid);
    if(beg == en)
    {
        std::cout << "目标不存在,输入任意键返回\n";
        getch();
        return;
    }
    std::string aid_name = beg -> second -> get_name();
    sear.erase(beg);
    beg = sear.lower_bound(aid_name);
    en = sear.upper_bound(aid_name);
    for(iter = beg; iter != en; ++iter) if(iter -> second -> get_id() == aid) {sear.erase(iter); break;}

    bool flag = 0;
    std::ofstream out;
    out.open("实验员.txt", std::ios::out);
    for(std::vector<TESTER*>::iterator it = tester.begin(); it != tester.end();)
    {
        if((*it) -> get_id() == aid){flag = 1; delete (*it); it = tester.erase(it); continue;}
        out << (*it) -> get_name() << " " << (*it) -> get_sex() << " ";
        out << (*it) -> get_age() << " " << (*it) -> get_id() << " ";
        out << (*it) -> get_laboratory() << " " << (*it) -> get_title() << std::endl;
        ++it;
    }
    out.close();
    if(flag) {std::cout << "删除成功,输入任意键返回\n"; getch(); return;}
    out.open("教师.txt", std::ios::out);
    for(std::vector<TEACHER*>::iterator it = teacher.begin(); it != teacher.end();)
    {
        if((*it) -> get_id() == aid){flag = 1; delete (*it); it = teacher.erase(it); continue;}
        out << (*it) -> get_name() << " " << (*it) -> get_sex() << " ";
        out << (*it) -> get_age() << " " << (*it) -> get_id() << " ";
        out << (*it) -> get_department() << " " << (*it) -> get_profession() << " " << (*it) -> get_title() << std::endl;
        it++;
    }
    out.close();
    if(flag) {std::cout << "删除成功,输入任意键返回\n"; getch(); return;}
    out.open("行政人员.txt", std::ios::out);
    for(std::vector<ADMINISTRATOR*>::iterator it = administrator.begin(); it != administrator.end();)
    {
        if((*it) -> get_id() == aid){flag = 1; delete (*it); it = administrator.erase(it); continue;}
        out << (*it) -> get_name() << " " << (*it) -> get_sex() << " ";
        out << (*it) -> get_age() << " " << (*it) -> get_id() << " ";
        out << (*it) -> get_politics() << " " << (*it) -> get_position() << std::endl;
        it++;
    }
    out.close();
    if(flag) {std::cout << "删除成功,输入任意键返回\n"; getch(); return;}
    out.open("教师&行政人员.txt", std::ios::out);
    for(std::vector<TEAADMI*>::iterator it = teaadmi.begin(); it != teaadmi.end();)
    {
        if((*it) -> get_id() == aid){flag = 1; delete (*it); it = teaadmi.erase(it); continue;}
        out << (*it) -> get_name() << " " << (*it) -> get_sex() << " ";
        out << (*it) -> get_age() << " " << (*it) -> get_id() << " ";
        out << (*it) -> get_department() << " " << (*it) -> get_profession() << " " << (*it) -> get_title() << " ";
        out << (*it) -> get_politics() << " " << (*it) -> get_position() << std::endl;
        ++it;
    }
    out.close();
    std::cout << "删除成功,输入任意键返回\n";
    getch();
}

void Edit_information() //修改信息
{
    std::cout << "输入目标ID以确认\n";
    std::string aid;
    std::cin >> aid;
    for(unsigned int i = 0; i < aid.length(); i++)
    {
        if(aid[i] < '0' || aid[i] > '9')
        {
            std::cout << "输入非法,输入任意键返回\n";
            getch();
            return;
        }
    }

    std::multimap<std::string, COMMON *>::iterator beg, en, iter;
    beg = sear.lower_bound(aid);
    en = sear.upper_bound(aid);

    if(beg == en)
    {
        std::cout << "目标不存在,输入任意键返回\n";
        getch();
        return;
    }
    system("cls");
    bool flag = 0;
    std::ofstream out;
    out.open("实验员.txt", std::ios::out);
    for(auto iter:tester)
    {
        if(iter -> get_id() == aid)
        {
            iter -> show(), std::cout << "\n\n根据提示输入修改信息\n\n";
            while(iter -> change())
            {
                system("cls");
                iter -> show();
                std::cout << "输入非法,请重新输入\n";
            }
            flag = 1;
        }
        out << iter -> get_name() << " " << iter -> get_sex() << " ";
        out << iter -> get_age() << " " << iter -> get_id() << " ";
        out << iter -> get_laboratory() << " " << iter -> get_title() << std::endl;
    }
    out.close();
    if(flag) {std::cout << "修改成功,输入任意键返回\n"; getch(); return;}
    out.open("教师.txt", std::ios::out);
    for(auto iter:teacher)
    {
        if(iter -> get_id() == aid)
        {
            iter -> show(), std::cout << "\n\n根据提示输入修改信息\n\n";
            while(iter -> change())
            {
                system("cls");
                iter -> show();
                std::cout << "输入非法,请重新输入\n";
            }
            flag = 1;
        }
        out << iter -> get_name() << " " << iter -> get_sex() << " ";
        out << iter -> get_age() << " " << iter -> get_id() << " ";
        out << iter -> get_department() << " " << iter -> get_profession() << " " << iter -> get_title() << std::endl;
    }
    out.close();
    if(flag) {std::cout << "修改成功,输入任意键返回\n"; getch(); return;}
    out.open("行政人员.txt", std::ios::out);
    for(auto iter:administrator)
    {
        if(iter -> get_id() == aid)
        {
            iter -> show(), std::cout << "\n\n根据提示输入修改信息\n\n";
            while(iter -> change())
            {
                system("cls");
                iter -> show();
                std::cout << "输入非法,请重新输入\n";
            }
            flag = 1;
        }
        out << iter -> get_name() << " " << iter -> get_sex() << " ";
        out << iter -> get_age() << " " << iter -> get_id() << " ";
        out << iter -> get_politics() << " " << iter -> get_position() << std::endl;
    }
    out.close();
    if(flag) {std::cout << "修改成功,输入任意键返回\n"; getch(); return;}
    out.open("教师&行政人员.txt", std::ios::out);
    for(auto iter:teaadmi)
    {
        if(iter -> get_id() == aid)
        {
            iter -> show(), std::cout << "\n\n根据提示输入修改信息\n\n";
            while(iter -> change())
            {
                system("cls");
                iter -> show();
                std::cout << "输入非法,请重新输入\n";
            }
            flag = 1;
        }
        out << iter -> get_name() << " " << iter -> get_sex() << " ";
        out << iter -> get_age() << " " << iter -> get_id() << " ";
        out << iter -> get_department() << " " << iter -> get_profession() << " " << iter -> get_title() << " ";
        out << iter -> get_politics() << " " << iter -> get_position() << std::endl;
    }
    out.close();
    std::cout << "修改成功,输入任意键返回\n";
    getch();
}

bool Query_information() //查询函数
{
    system("cls");
    std::cout << "输入目标姓名或ID以查询\n";
    std::string aid;
    std::cin >> aid;
    std::multimap<std::string, COMMON *>::iterator beg, en, iter;
    beg = sear.lower_bound(aid);
    en = sear.upper_bound(aid);

    if(beg == en)
    {
        std::cout << "查询结果为空,输入任意键返回\n";
        getch();
        return 0;
    }
    for(iter = beg; iter != en; ++iter)
    {
        iter -> second -> show();
        std::cout << std::endl;
    }
    return 1;
}

void Browse_information() //浏览函数
{
    system("cls");
    std::cout << "-------------------实验员-------------------\n";
    std::cout << "姓名\t" << "性别\t" << "年龄\t" << "ID\t\t" << "实验室名称\t" << "职务\n";
    for(auto iter:tester) iter -> show_row();


    std::cout << "\n------------------行政人员------------------\n";
    std::cout << "姓名\t" << "性别\t" << "年龄\t" << "ID\t\t" << "政治面貌\t" << "职称\n";
    for(auto iter:administrator) iter -> show_row();


    std::cout << "\n--------------------教师--------------------\n";
    std::cout << "姓名\t" << "性别\t" << "年龄\t" << "ID\t\t" << "院系\t\t" << "专业\t\t" << "职务\n";
    for(auto iter:teacher) iter -> show_row();


    std::cout << "\n-----------------行政人员&教师--------------\n";
    std::cout << "姓名\t" << "性别\t" << "年龄\t" << "ID\t\t" << "政治面貌\t" << "职称\t\t" << "院系\t\t" << "专业\t\t" << "职务\n";
    for(auto iter:teaadmi) iter -> show_row();
}

void count_information() //统计信息
{
    system("cls");
    std::cout << "员工总人数:\t\t" << COMMON::get_person_sum() << std::endl;
    std::cout << "男性人数:\t\t" << COMMON::get_man_sum() << std::endl;
    std::cout << "女性人数:\t\t" << COMMON::get_woman_sum() << std::endl;
    std::cout << "教师人数:\t\t" << TEACHER::get_teacher_sum() << std::endl;
    std::cout << "实验员人数:\t\t" << TESTER::get_tester_sum() << std::endl;
    std::cout << "行政管理人员人数:\t" << ADMINISTRATOR::get_administrator_sum() << std::endl;
    std::cout << "行政管理人员&教师人数:\t" << TEAADMI::get_teaadmi_sum() << std::endl;
    std::cout << "\n\n输入任意键返回上一级\n";
    getch();
}

#endif // MYFUN_H_INCLUDED

main.cpp 主函数:

#include"interface.h"

int main()
{
    Information_load(); //加载信息
    interface_login(); //首界面
    room_delete(); //释放空间
//    count_information();
    return 0;
}

猜你喜欢

转载自blog.csdn.net/j2_o2/article/details/80633396
今日推荐