用C++写高校员工信息管理系统,人员包括教师,实验员,行政人员,教师兼行政人员,功能包括添加,查询,显示,编辑,删除,统计,保存,读取

时间: 2023-08-04 07:07:02 浏览: 60
好的,这个高校员工信息管理系统可以分为以下几个模块: 1. 员工类(Teacher、LabStaff、Admin、TeacherAdmin):这些类都是继承于基类Employee,每个员工类都包含一些特定属性(如教师类包含授课科目等),以及一些公共属性(如姓名、性别、年龄等)和方法(如获取员工信息、修改员工信息等)。 2. 员工管理类(EmployeeManager):这个类用于实现对员工信息的添加、查询、显示、编辑、删除、统计、保存、读取等功能。其中,添加和编辑功能需要根据用户选择的员工类型创建相应的对象,并向对象中添加员工信息。查询和删除功能需要根据用户输入的员工ID进行查找。统计功能用于计算各类员工的数量和平均年龄等信息。保存和读取功能用于将员工信息存储到文件中或从文件中读取员工信息。 3. 界面类(Interface):这个类用于实现与用户交互的界面,包括菜单、输入输出等。 下面是一个简单的示例代码: ```cpp #include <iostream> #include <vector> #include <fstream> using namespace std; // 员工基类 class Employee { public: Employee() {} Employee(int id, string name, char sex, int age) : m_id(id), m_name(name), m_sex(sex), m_age(age) {} virtual void display() = 0; // 显示员工信息 int getId() { return m_id; } string getName() { return m_name; } char getSex() { return m_sex; } int getAge() { return m_age; } void setName(string name) { m_name = name; } void setSex(char sex) { m_sex = sex; } void setAge(int age) { m_age = age; } protected: int m_id; // 员工ID string m_name; // 姓名 char m_sex; // 性别 int m_age; // 年龄 }; // 教师类 class Teacher : public Employee { public: Teacher() {} Teacher(int id, string name, char sex, int age, string course) : Employee(id, name, sex, age), m_course(course) {} void display() { cout << "ID: " << m_id << endl; cout << "Name: " << m_name << endl; cout << "Sex: " << m_sex << endl; cout << "Age: " << m_age << endl; cout << "Course: " << m_course << endl; } string getCourse() { return m_course; } void setCourse(string course) { m_course = course; } private: string m_course; // 授课科目 }; // 实验员类 class LabStaff : public Employee { public: LabStaff() {} LabStaff(int id, string name, char sex, int age, string lab) : Employee(id, name, sex, age), m_lab(lab) {} void display() { cout << "ID: " << m_id << endl; cout << "Name: " << m_name << endl; cout << "Sex: " << m_sex << endl; cout << "Age: " << m_age << endl; cout << "Lab: " << m_lab << endl; } string getLab() { return m_lab; } void setLab(string lab) { m_lab = lab; } private: string m_lab; // 实验室名称 }; // 行政人员类 class Admin : public Employee { public: Admin() {} Admin(int id, string name, char sex, int age, string department) : Employee(id, name, sex, age), m_department(department) {} void display() { cout << "ID: " << m_id << endl; cout << "Name: " << m_name << endl; cout << "Sex: " << m_sex << endl; cout << "Age: " << m_age << endl; cout << "Department: " << m_department << endl; } string getDepartment() { return m_department; } void setDepartment(string department) { m_department = department; } private: string m_department; // 部门名称 }; // 教师兼行政人员类 class TeacherAdmin : public Teacher, public Admin { public: TeacherAdmin() {} TeacherAdmin(int id, string name, char sex, int age, string course, string department) : Employee(id, name, sex, age), Teacher(id, name, sex, age, course), Admin(id, name, sex, age, department) {} void display() { cout << "ID: " << m_id << endl; cout << "Name: " << m_name << endl; cout << "Sex: " << m_sex << endl; cout << "Age: " << m_age << endl; cout << "Course: " << Teacher::getCourse() << endl; cout << "Department: " << Admin::getDepartment() << endl; } }; // 员工管理类 class EmployeeManager { public: EmployeeManager() {} // 添加员工 void addEmployee() { int id, age; string name; char sex, type; cout << "Please input ID: "; cin >> id; cout << "Please input Name: "; cin >> name; cout << "Please input Sex(M/F): "; cin >> sex; cout << "Please input Age: "; cin >> age; cout << "Please select employee type(T/L/A/TA): "; cin >> type; Employee *employee = NULL; switch (type) { case 'T': string course; cout << "Please input Course: "; cin >> course; employee = new Teacher(id, name, sex, age, course); break; case 'L': string lab; cout << "Please input Lab: "; cin >> lab; employee = new LabStaff(id, name, sex, age, lab); break; case 'A': string department; cout << "Please input Department: "; cin >> department; employee = new Admin(id, name, sex, age, department); break; case 'TA': string course_ta, department_ta; cout << "Please input Course: "; cin >> course_ta; cout << "Please input Department: "; cin >> department_ta; employee = new TeacherAdmin(id, name, sex, age, course_ta, department_ta); break; default: cout << "Invalid type!" << endl; return; } m_employeeList.push_back(employee); cout << "Add employee successfully!" << endl; } // 查询员工 void queryEmployee() { int id; cout << "Please input ID: "; cin >> id; for (int i = 0; i < m_employeeList.size(); i++) { if (m_employeeList[i]->getId() == id) { m_employeeList[i]->display(); return; } } cout << "Employee not found!" << endl; } // 显示所有员工 void displayAllEmployee() { for (int i = 0; i < m_employeeList.size(); i++) { m_employeeList[i]->display(); cout << endl; } } // 编辑员工信息 void editEmployee() { int id; cout << "Please input ID: "; cin >> id; for (int i = 0; i < m_employeeList.size(); i++) { if (m_employeeList[i]->getId() == id) { cout << "Please input new Name: "; string name; cin >> name; cout << "Please input new Sex(M/F): "; char sex; cin >> sex; cout << "Please input new Age: "; int age; cin >> age; m_employeeList[i]->setName(name); m_employeeList[i]->setSex(sex); m_employeeList[i]->setAge(age); cout << "Edit employee successfully!" << endl; return; } } cout << "Employee not found!" << endl; } // 删除员工 void deleteEmployee() { int id; cout << "Please input ID: "; cin >> id; for (vector<Employee*>::iterator it = m_employeeList.begin(); it != m_employeeList.end(); it++) { if ((*it)->getId() == id) { m_employeeList.erase(it); cout << "Delete employee successfully!" << endl; return; } } cout << "Employee not found!" << endl; } // 统计员工信息 void statEmployee() { int teacherCount = 0, labStaffCount = 0, adminCount = 0, teacherAdminCount = 0; int totalAge = 0; for (int i = 0; i < m_employeeList.size(); i++) { if (dynamic_cast<Teacher*>(m_employeeList[i])) { teacherCount++; } else if (dynamic_cast<LabStaff*>(m_employeeList[i])) { labStaffCount++; } else if (dynamic_cast<Admin*>(m_employeeList[i])) { adminCount++; } else if (dynamic_cast<TeacherAdmin*>(m_employeeList[i])) { teacherAdminCount++; } totalAge += m_employeeList[i]->getAge(); } cout << "Teacher count: " << teacherCount << endl; cout << "Lab staff count: " << labStaffCount << endl; cout << "Admin count: " << adminCount << endl; cout << "Teacher admin count: " << teacherAdminCount << endl; cout << "Average age: " << totalAge / m_employeeList.size() << endl; } // 保存员工信息到文件 void saveToFile() { ofstream ofs("employee.txt"); for (int i = 0; i < m_employeeList.size(); i++) { ofs << m_employeeList[i]->getId() << " " << m_employeeList[i]->getName() << " " << m_employeeList[i]->getSex() << " " << m_employeeList[i]->getAge() << " "; if (dynamic_cast<Teacher*>(m_employeeList[i])) { ofs << "T " << dynamic_cast<Teacher*>(m_employeeList[i])->getCourse() << endl; } else if (dynamic_cast<LabStaff*>(m_employeeList[i])) { ofs << "L " << dynamic_cast<LabStaff*>(m_employeeList[i])->getLab() << endl; } else if (dynamic_cast<Admin*>(m_employeeList[i])) { ofs << "A " << dynamic_cast<Admin*>(m_employeeList[i])->getDepartment() << endl; } else if (dynamic_cast<TeacherAdmin*>(m_employeeList[i])) { ofs << "TA " << dynamic_cast<TeacherAdmin*>(m_employeeList[i])->getCourse() << " " << dynamic_cast<TeacherAdmin*>(m_employeeList[i])->getDepartment() << endl; } } ofs.close(); cout << "Save to file successfully!" << endl; } // 从文件中读取员工信息 void readFromFile() { ifstream ifs("employee.txt"); if (!ifs.is_open()) { cout << "Open file failed!" << endl; return; } while (!ifs.eof()) { int id, age; string name, course, lab, department; char sex, type; ifs >> id >> name >> sex >> age >> type; switch (type) { case 'T': ifs >> course; m_employeeList.push_back(new Teacher(id, name, sex, age, course)); break; case 'L': ifs >> lab; m_employeeList.push_back(new LabStaff(id, name, sex, age, lab)); break; case 'A': ifs >> department; m_employeeList.push_back(new Admin(id, name, sex, age, department)); break; case 'TA': ifs >> course >> department; m_employeeList.push_back(new TeacherAdmin(id, name, sex, age, course, department)); break; default: break; } } ifs.close(); cout << "Read from file successfully!" << endl; } private: vector<Employee*> m_employeeList; // 员工列表 }; // 界面类 class Interface { public: Interface() {} void showMenu() { cout << "================ Employee Management System ================" << endl; cout << "1. Add employee" << endl; cout << "2. Query employee" << endl; cout << "3. Display all employee" << endl; cout << "4. Edit employee" << endl; cout << "5. Delete employee" << endl; cout << "6. Stat employee" << endl; cout << "7. Save to file" << endl; cout << "8. Read from file" << endl; cout << "0. Exit" << endl; cout << "============================================================" << endl; } void run() { EmployeeManager em; int choice; while (true) { showMenu(); cout << "Please input your choice: "; cin >> choice; switch (choice) { case 1: em.addEmployee(); break; case 2: em.queryEmployee(); break; case 3: em.displayAllEmployee(); break; case 4: em.editEmployee(); break; case 5: em.deleteEmployee(); break; case 6: em.statEmployee(); break; case 7: em.saveToFile(); break; case 8: em.readFromFile(); break; case 0: cout << "Thanks for using!" << endl; return; default: cout << "Invalid choice!" << endl; break; } } } }; int main() { Interface ui; ui.run(); return 0; } ```

相关推荐

最新推荐

recommend-type

C++学校人员信息管理系统课程设计.doc

一个用C++写的学校人员管理系统,适合大一大二的课程设计,里面运用到了链表、文件读写等一些C++基本语法操作
recommend-type

C++实验报告——个人银行账户管理系统.docx

北科C++课程实现个人银行账户管理系统的实验报告。北科C++课程实现个人银行账户管理系统的实验报告。北科C++课程实现个人银行账户管理系统的实验报告。北科C++课程实现个人银行账户管理系统的实验报告
recommend-type

linux系统中c++写日志文件功能分享

主要介绍了linux系统中c++写日志文件功能,简化了glog,只保留了写日志文件的功能,只是改写了linux版本,需要的朋友可以参考下
recommend-type

汽车租赁信息管理系统源代码 c++.docx

一、为了方便公司管理各种型号的车辆,并实现以下功能: (1)对车辆进行租赁:先输入车牌号,然后输入车辆类别、品牌型号,并在库存中查找该车辆的相关信息,并进行租车。 (2)添加新的车辆信息:主要完成车辆信息...
recommend-type

C++ 学生成绩管理系统设计报告书

(3)学生基本信息的读取和保存输入数据等功能 (4)学生基本信息的查询与修改。可以对已有的学生信息进行修改。 (5)学生基本信息的删除。 (6)对该班各科成绩进行分析;对学生成绩进行统计(包括最高分,最低分,排序,...
recommend-type

RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz

REALTEK 8188FTV 8188eus 8188etv linux驱动程序稳定版本, 支持AP,STA 以及AP+STA 共存模式。 稳定支持linux4.0以上内核。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

:YOLOv1目标检测算法:实时目标检测的先驱,开启计算机视觉新篇章

![:YOLOv1目标检测算法:实时目标检测的先驱,开启计算机视觉新篇章](https://img-blog.csdnimg.cn/img_convert/69b98e1a619b1bb3c59cf98f4e397cd2.png) # 1. 目标检测算法概述 目标检测算法是一种计算机视觉技术,用于识别和定位图像或视频中的对象。它在各种应用中至关重要,例如自动驾驶、视频监控和医疗诊断。 目标检测算法通常分为两类:两阶段算法和单阶段算法。两阶段算法,如 R-CNN 和 Fast R-CNN,首先生成候选区域,然后对每个区域进行分类和边界框回归。单阶段算法,如 YOLO 和 SSD,一次性执行检
recommend-type

ActionContext.getContext().get()代码含义

ActionContext.getContext().get() 是从当前请求的上下文对象中获取指定的属性值的代码。在ActionContext.getContext()方法的返回值上,调用get()方法可以获取当前请求中指定属性的值。 具体来说,ActionContext是Struts2框架中的一个类,它封装了当前请求的上下文信息。在这个上下文对象中,可以存储一些请求相关的属性值,比如请求参数、会话信息、请求头、应用程序上下文等等。调用ActionContext.getContext()方法可以获取当前请求的上下文对象,而调用get()方法可以获取指定属性的值。 例如,可以使用 Acti
recommend-type

c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf

校园超市商品信息管理系统课程设计旨在帮助学生深入理解程序设计的基础知识,同时锻炼他们的实际操作能力。通过设计和实现一个校园超市商品信息管理系统,学生掌握了如何利用计算机科学与技术知识解决实际问题的能力。在课程设计过程中,学生需要对超市商品和销售员的关系进行有效管理,使系统功能更全面、实用,从而提高用户体验和便利性。 学生在课程设计过程中展现了积极的学习态度和纪律,没有缺勤情况,演示过程流畅且作品具有很强的使用价值。设计报告完整详细,展现了对问题的深入思考和解决能力。在答辩环节中,学生能够自信地回答问题,展示出扎实的专业知识和逻辑思维能力。教师对学生的表现予以肯定,认为学生在课程设计中表现出色,值得称赞。 整个课程设计过程包括平时成绩、报告成绩和演示与答辩成绩三个部分,其中平时表现占比20%,报告成绩占比40%,演示与答辩成绩占比40%。通过这三个部分的综合评定,最终为学生总成绩提供参考。总评分以百分制计算,全面评估学生在课程设计中的各项表现,最终为学生提供综合评价和反馈意见。 通过校园超市商品信息管理系统课程设计,学生不仅提升了对程序设计基础知识的理解与应用能力,同时也增强了团队协作和沟通能力。这一过程旨在培养学生综合运用技术解决问题的能力,为其未来的专业发展打下坚实基础。学生在进行校园超市商品信息管理系统课程设计过程中,不仅获得了理论知识的提升,同时也锻炼了实践能力和创新思维,为其未来的职业发展奠定了坚实基础。 校园超市商品信息管理系统课程设计的目的在于促进学生对程序设计基础知识的深入理解与掌握,同时培养学生解决实际问题的能力。通过对系统功能和用户需求的全面考量,学生设计了一个实用、高效的校园超市商品信息管理系统,为用户提供了更便捷、更高效的管理和使用体验。 综上所述,校园超市商品信息管理系统课程设计是一项旨在提升学生综合能力和实践技能的重要教学活动。通过此次设计,学生不仅深化了对程序设计基础知识的理解,还培养了解决实际问题的能力和团队合作精神。这一过程将为学生未来的专业发展提供坚实基础,使其在实际工作中能够胜任更多挑战。