C++实现学校人员管理系统

本文实例为大家分享了C++实现学校人员管理系统的具体代码,供大家参考,具体内容如下

题目要求

学校人员管理系统

1、建立一个学校类,在其中定义按照姓名增加人员的增加函数,删除人员的删除的函数和查询函数(以姓名为准)。
2、建立一个人员基类,要具有姓名和性别属性,并有输出函数(可定义为虚函数)。
3、建立一个员工类和一个学生类,均由人员类继承而来。要求:可以输出员工类(学生类)对象的属性(如:姓名、性别和工作证号码或学生学号),分别写出它们的输出函数的具体实现。
4、重载“>>”,实现用cin为员工类、学生类和在职学生类对象赋值。(选做)
5、编写main()主函数,测试上述功能,并以菜单方式实现对各种人员的增加、删除和查询(以姓名为线索)。
6、程序应采用多文件结构。
7、vs2019编译

实验源代码

head.h头文件函数声明

/*头文件Head.h,声名所有需要的函数或者系统头文件*/

//系统头文件
#include<iostream>
#include<string>
using namespace std;

//全局变量
extern int p ;//保存人类个数
extern int Re;//保存当前学生所在位数
extern int Rs;//保存当前员工所在位数
extern int s ;//保存学生个数
extern int e ;//保存员工个数

//全局类数组的声明
extern int maxEmployee;
extern int maxStudent;
extern Employee* employee;
extern Student* student;

//人类声明
class Person {
private:
    string name;//姓名
    string sex;//性别
    int age;//年龄
    string status;//身份
    void init();//初始化函数
public:
    void setPerson();//调用初始化函数
    void setStatus(string);//设置身份
    string getName();//获取人的名字
    string getStatus();//获取人的身份
    static void setP(int);//当前添加第几个人
    static void setRs(int);//当前添加第几个学生
    static void setRe(int);//当前添加第几个员工
    static int getRe();//获取Re
    static int getRs();//获取Rs
    static int getP();//获取p
    virtual void show();//虚函数
};

//学校类
class school {
private:
    //增加人员
    static bool addPerson();
    //删除人员
    static bool deletePerson();
    //查询人员
    static Person queryPerson();
public:
    static bool getAdd();
    static bool getDel();
    static Person getQue();
};

//学生类
class Student :public Person {
private:
    string StudentNumber;
    string StudentDormitory;
public:
    //构造函数
    Student();
    // >>重载
    friend istream& operator >> (istream& i, Student& p);
    static int getTotal();
    static void setTotal(int);
    string getStuId();
    void show();
};

//员工类
class Employee : public Person {
private:
    string EmployeeNumber;
    string EmployeeDormitory;
public:
    Employee();
    friend istream& operator >> (istream& i, Employee& p);
    static int getTotal();
    static void setTotal(int);
    string getEpyId();
    void show();
};

//main 函数里的函数声明
void view();
bool doSwitch(char n);
extern char n;
char Cin();

Remain.cpp文件实现头文件

#include"Head.h"
//引用全局变量
int p = 0;
int s = 0;
int e = 0;
int Re = 0;
int Rs = 0;

int maxEmployee = 1000;
int maxStudent = 1000;
Employee* employee = new Employee[maxEmployee];
Student* student = new Student[maxStudent];
char n;

/*人类*/

//人初始化函数
void Person::init() {
    cout << "姓名:" << endl;
    cin >> name;

cout << "性别:" << endl;
    cin >> sex;

    cout << "年龄:" << endl;
    cin >> age;
}

//
void Person::setPerson() {
    init();
}

//
string Person::getName() {
    return name;
}

void Person::setP(int i) {
    p = p + i;
}
int Person::getP() {
    return p;
}

void Person::setStatus(string s) {
    status = s;
}

string Person::getStatus() {
    return status;
}

void Person::setRs(int j) {
    Rs = j;
}
void Person::setRe(int j) {
    Re = j;
}
int Person::getRs() {
    return Rs;
}
int Person::getRe() {
    return Re;
}

//人类show函数
void Person::show() {
    cout << "姓名:" << name << "\t"
        << "性别:" << sex << "\t"
        << "年龄:" << age << "\t"
        << "工作:" << status << "\t";
}

//员工

//空参构造
Employee::Employee(){}

void Employee::show() {
    cout << "工号:" << EmployeeNumber << "\t"
        << "宿舍:" << EmployeeDormitory << endl;
}

int Employee::getTotal() {
    return e;
}
void Employee::setTotal(int i) {
    e = e + i;
}
string Employee::getEpyId() {
    return EmployeeNumber;
}
//员工>>重载
istream& operator >> (istream& i, Employee& p) {
    p.setPerson();
    cout << "工号:" << endl;
    i >> p.EmployeeNumber;
    cout << "宿舍:" << endl;
    i >> p.EmployeeDormitory;
    return i;
}

//学生
Student::Student(){}

void Student::show() {

    cout << "学号:" << this->StudentNumber << "\t"
        << "宿舍:" << this->StudentDormitory << endl;
}

int Student::getTotal() {
    return s;
}
void Student::setTotal(int i) {
    s = s + i;
}
string Student::getStuId() {
    return StudentNumber;
}
//学生>>重载
istream& operator >> (istream& i, Student& p) {
    p.setPerson();
    cout << "学号:" << endl;
    i >> p.StudentNumber;
    cout << "宿舍:" << endl;
    i >> p.StudentDormitory;
    return i;
}

/*添加
*/
bool school::addPerson() {
    int n;
    cin >> n;
    if (n != 1 && n != 2) return false;
    if (n == 2) {
        Student t;
        cin >> t;
        t.setStatus("学生");
        student[Student::getTotal()] = t;
        Student::setTotal(1);
        Person::setP(1);
        return true;
    }
    if (n == 1) {
        Employee e;
        cin >> e;
        e.setStatus("员工");
        employee[Employee::getTotal()] = e;        
        Employee::setTotal(1);
        Person::setP(1);
        return true;
    }
    return false;
}
bool school::getAdd() {
    return addPerson();
}

/*删除员工和学生,删除对象*/

bool delS() {
    cout << "请输入你要删除的学生学号!" << endl;
    string s;
    cin >> s;
    int Sl = Student::getTotal();
    for (int i = 0; i < Sl; i++) {
        if (s == student[i].getStuId()) {
            //所有数组元素前移
            for (int j = i; j < Sl; j++) {
                student[j] = student[j + 1];
            }
            Student::setTotal(-1);
            return true;
        }
    }
    return false;
}

bool delE() {
    cout << "请输入你要删除的员工工号!" << endl;
    string s;
    cin >> s;
    int El = Employee::getTotal();
    for (int i = 0; i < El; i++) {
        if (s == employee[i].getEpyId()) {
            //所有数组元素前移
            for (int j = i; j < El; j++) {
                employee[j] = employee[j + 1];
            }
            Employee::setTotal(-1);
            return true;
        }
    }
    return false;
}

bool school::deletePerson() {
    int n;
    cin >> n;
    if (n != 1 && n != 2) return false;
    if (n == 1) {
        return delS();
    }
    else return delE();
    return false;
}

bool school::getDel() {
    return deletePerson();
}

//查询

Person school::queryPerson() {
    string s;
    cin >> s;
    Person p;
    for (int j = 0; j < Student::getTotal(); j++) {
        if (s == student[j].getName()) {
            student[j].setRs(j);
            p = (Person)student[j];
            break;
        }
    }
    for (int j = 0; j < Employee::getTotal(); j++) {
        if (s == employee[j].getName()) {
            employee[j].setRe(j);
            p=(Person)employee[j];
            break;
        }
    }
    return p;
}

Person school::getQue(){
    return queryPerson();
}

//菜单
bool doSwitch(char n) {
    if (n == '#')return false;
    switch (n)
    {
    case '1':
        cout << "----请说明你要添加的人员种类1.员工,2.学生------" << endl;
        if (school::getAdd()) cout << "添加成功!" << endl;
        else cout << "添加失败!" << endl;
        break;
    case '2':
        cout << "----请说明你要删除的人员种类1.学生,2.员工------" << endl;
        if (school::getDel())cout << "删除成功!"<<endl;
        else cout << "删除失败" << endl;
        break;
    case '3':
        cout << "请输入你要查询人的名字:" << endl;
        Person p = school::getQue();
        string s = p.getStatus();
        if (s == "学生") {
            int j = p.getRs();
            Student s = student[j];
            Person p = (Person)s;
            p.show();
            s.show();
        }
        else if (s == "员工") {
            int j = p.getRe();
            Employee s = employee[j];
            Person p = (Person)s;
            p.show();
            s.show();
        }
        else cout << "找不到该人!" << endl;
        break;
    }
    return true;    
}

char Cin() {
    cin >> n;
    return n;
}
void view() {
    cout << "------------欢迎来到学校人员管理系统------------" << "\n"
        << "----------------请选择以下选项-------------------" << "\n"
        << "----------------1.添加人员-----------------------" << "\n"
        << "----------------2.删除人员-----------------------" << "\n"
        << "----------------3.查询人员-----------------------" << "\n"
        << "-------------------#退出!--------------------" << endl;
}

Main.cpp撰写main函数

#include"Head.h"
int main() {
    while (true) {
        view(); 
        if (!doSwitch(Cin())) {
            delete[] student;
            delete[] employee;
            break;
        }        
    }
    return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++实现高校人员信息管理系统

    高校人员信息管理系统设计,供大家参考,具体内容如下 一.问题描述及功能要求 1.问题描述 某高校有四类员工:教师.实验员.行政人员,教师兼行政人员:共有的信息包括:编号.姓名.性别.年龄等.其中,教师还包含的信息有:所在系部.专业.职称:实验员还包含的信息由:所在实验室.职务:行政人员还包含的信息有:政治面貌.职称等. 2.功能要求 (1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复

  • C++实现学校人员管理系统

    本文实例为大家分享了C++实现学校人员管理系统的具体代码,供大家参考,具体内容如下 题目要求 学校人员管理系统 1.建立一个学校类,在其中定义按照姓名增加人员的增加函数,删除人员的删除的函数和查询函数(以姓名为准).2.建立一个人员基类,要具有姓名和性别属性,并有输出函数(可定义为虚函数).3.建立一个员工类和一个学生类,均由人员类继承而来.要求:可以输出员工类(学生类)对象的属性(如:姓名.性别和工作证号码或学生学号),分别写出它们的输出函数的具体实现.4.重载“>>”,实现用cin为员工类

  • C++实现学校运动会管理系统

    本文实例为大家分享了C++实现学校运动会管理系统的具体代码,供大家参考,具体内容如下 #include<iostream> #include<fstream> #include<string> using namespace std; void fun1() { cout<<"******************************"<<endl; cout<<endl; cout<<"*

  • C++学校运动会管理系统的实现

    本文实例为大家分享了C++实现运动会管理系统的具体代码,供大家参考,具体内容如下 #include <iostream> #include <cstdio> #include <string> #include <windows.h> #include <set> #include <map> using namespace std; const int MAXN = 100005; typedef long long LL; map

  • python实现大学人员管理系统

    python作为一个面对对象的程序设计语言,实现一个人员管理系统有自己关于类的方法. 首先,通过定义一个人员的类对象,实现对于人员公共特性的支持,公共的特性包括:姓名,性别,出生日期等,用一个Person类来表示.大学里总的来说分为两种身份的人:学生(Student)和职工(Staff),这两种有自己的特性,比如学生信息就有学号,课程,成绩等:职工有职工号,职位,薪水等. 利用python类对象的继承机制我们就可以很方便的表示这两种身份的人. 我们首先定义一个Person类,这个类用于保存共有的

  • python基于Tkinter实现人员管理系统

    前言 Tkinter是python内置的标准GUI库,基于Tkinter实现了简易人员管理系统,所用数据库为Mongodb 代码 时间宝贵!直接上代码! from tkinter import * from tkinter.messagebox import * from tkinter import ttk import pymongo import tkinter as tk import re import time import datetime import pandas as pd

  • python3+django2开发一个简单的人员管理系统过程详解

    一.基础环境准备 windows环境: Pycharm python3.6 Django2.0.1 Mysql5.7 安装django 在pycharm terminal 控制台执行: python3 -m pip install django #因为本地安装了python2.7 和python3.6 2个版本,所以python3.6环境变量对应python3 二.创建工程和应用 django-admin.py startproject qiakrcmdb #工程名称 cd qiakrcmdb

  • Java 实战项目之疫情人员流动管理系统详解

    一.项目简述 本系统主要实现的功能有: 社区疫情流动人员管理系统,住户管理,出入管理,访客管理,体温录入,高风险警示等等. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持) 项目技术: Springboot+ SpringMVC + MyBatis + Jsp + Html+ JavaScript + JQuery + Ajax + maven等等 系统用户后台管理代

  • 基于java Springboot实现教务管理系统详解

    目录 视频演示 研究背景 我国教务现状与反思 主要技术和环境: 功能截图: 总结: 视频演示 研究背景 在当今信息社会发展中中,计算机科学的飞速发展,大多数学校开始注意办公效率的发展是很关键,对学校的管理起到举足轻重的作用.基于 Internet 网络的信息服务,快速成长为现代学校中一项不可或缺的内容措施.很多校园都已经不满意商务办公管理的缓慢成长方式.学院的需求是一个功能强大的,能提供完善管理,管理信息系统的速度.社会持续向前发展,尤其是大多地方普及计算机,计算机应用已经开始向大容量的数据存储

  • java Springboot实现教务管理系统

    目录 1.研究背景 2.现状与反思 3.功能截图 4.代码 4.1用户登录 4.2yml配置 4.3视图跳转 4.4拦截放行 5.总结 1.研究背景              在当今信息社会发展中中,计算机科学的飞速发展,大多数学校开始注意办公效率的发展是很关键,对学校的管理起到举足轻重的作用.基于 Internet 网络的信息服务,快速成长为现代学校中一项不可或缺的内容措施.很多校园都已经不满意商务办公管理的缓慢成长方式.学院的需求是一个功能强大的,能提供完善管理,管理信息系统的速度.社会持续

随机推荐