本文实例为大家分享了C++实现学校人员管理系统的具体代码,供大家参考,具体内容如下
题目要求
学校人员管理系统
1、建立一个学校类,在其中定义按照姓名增加人员的增加函数,删除人员的删除的函数和查询函数(以姓名为准)。
2、建立一个人员基类,要具有姓名和性别属性,并有输出函数(可定义为虚函数)。
3、建立一个员工类和一个学生类,均由人员类继承而来。要求:可以输出员工类(学生类)对象的属性(如:姓名、性别和工作证号码或学生学号),分别写出它们的输出函数的具体实现。
4、重载“>>”,实现用cin为员工类、学生类和在职学生类对象赋值。(选做)
5、编写main()主函数,测试上述功能,并以菜单方式实现对各种人员的增加、删除和查询(以姓名为线索)。
6、程序应采用多文件结构。
7、vs2019编译
实验源代码
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;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。