C++实现学校人员管理系统
本文实例为大家分享了C++实现学校人员管理系统的具体代码,供大家参考,具体内容如下
题目要求
【C++实现学校人员管理系统】学校人员管理系统
1、建立一个学校类,在其中定义按照姓名增加人员的增加函数,删除人员的删除的函数和查询函数(以姓名为准)。
2、建立一个人员基类,要具有姓名和性别属性,并有输出函数(可定义为虚函数)。
3、建立一个员工类和一个学生类,均由人员类继承而来。要求:可以输出员工类(学生类)对象的属性(如:姓名、性别和工作证号码或学生学号),分别写出它们的输出函数的具体实现。
4、重载“>>”,实现用cin为员工类、学生类和在职学生类对象赋值。(选做)
5、编写main()主函数,测试上述功能,并以菜单方式实现对各种人员的增加、删除和查询(以姓名为线索)。
6、程序应采用多文件结构。
7、vs2019编译
实验源代码
head.h头文件函数声明
/*头文件Head.h,声名所有需要的函数或者系统头文件*///系统头文件#include#includeusing 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(); //获取Restatic int getRs(); //获取Rsstatic int getP(); //获取pvirtual 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 << "删除成功!"<> 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; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- 如何在|如何在 Java 中实现无向环和有向环的检测
- Python实现简单猜拳游戏
- JavaScript实现鼠标移入随机变换颜色
- 其他|腾讯视频自动签到(Python + 腾讯云函数实现)
- java|教你代码实现抢红包功能
- Nestjs模块机制的概念和实现原理
- SQL|如何实现高性能的数据处理\数据库性能优化
- 使用opencv的仿射变换函数warpAffine实现对图像的任意角度旋转
- 笔记|LeetCode每日一题题解(917. 仅仅反转字母-双指针-python和C++)
- OpenCV|Opencv中使用Surf特征实现图像配准及对透视变换矩阵H的平移修正