C++学校人员管理系统
梵高的猪v 人气:0题目要求
学校人员管理系统
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; }
加载全部内容