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

Vicki ·
更新时间:2024-09-20
· 1486 次阅读

本文实例为大家分享了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; }



C++ 系统 学校 人员管理 c+

需要 登录 后方可回复, 如果你还没有账号请 注册新账号