【C++】C++公司人事管理系统(源码)【独一无二】

简介: 【C++】C++公司人事管理系统(源码)【独一无二】

一、设计要求

该代码设计了一个员工管理系统,包含以下主要功能点:


1.员工基本信息管理:


  • 定义了一个 Date 类,用于表示员工的出生日期,包括年、月、日三个属性。
  • Employee 抽象基类包含员工的基本信息:编号、姓名、性别、出生日期、职位和薪水。

2.经理类:


  • 定义了一个 Manager 类,继承自 Employee 基类,表示经理角色。
  • 实现了 pay() 方法,返回经理的薪水。
  • 重写了 display() 方法,显示经理的详细信息。


3.技术员类:


  • 定义了一个 Technician 类,继承自 Employee 基类,表示技术员角色。
  • 技术员的薪水按工作小时数计算,每小时25元。
  • 实现了 pay() 方法,根据工作小时数计算技术员的薪水。
  • 重写了 display() 方法,显示技术员的详细信息,包括工作小时数。


4.销售员类:


  • 定义了一个 Salesman 类,继承自 Employee 基类,表示销售员角色。
  • 销售员的薪水按销售额的4%计算。
  • 实现了 pay() 方法,根据销售额计算销售员的薪水。
  • 重写了 display() 方法,显示销售员的详细信息,包括销售额。


5.销售经理类:


  • 定义了一个 Salesmanager 类,继承自 Manager 和 Salesman 类,表示销售经理角色。
  • 销售经理的基本薪水为5000元,外加销售额的0.5%。
  • 实现了 pay() 方法,根据基本薪水和销售额计算销售经理的薪水。
  • 重写了 display() 方法,显示销售经理的详细信息,包括销售额。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 人事 ” 获取。👈👈👈


6.多态性和虚函数:


  • Employee 基类中的 pay() 方法是一个纯虚函数,使得 Employee 成为抽象类。
  • 各派生类(Manager、Technician、Salesman、Salesmanager)都实现了 pay() 方法,用于计算各自的薪水。
  • 使用虚函数机制,通过基类指针调用派生类的 display() 和 pay() 方法,实现多态性。


7.主函数:


  • 创建 Date 对象,用于表示员工的出生日期。
  • 创建不同类型的员工对象,包括 Manager 对象 m、Technician 对象 t、Salesman 对象 s 和 Salesmanager 对象 sm。
  • 使用指向 Employee 基类的指针数组,存储各员工对象的地址。
  • 遍历指针数组,调用每个员工对象的 display() 方法显示其详细信息,并调用 pay() 方法计算和显示其薪水。


通过这些功能点,代码实现了一个灵活且高效的员工管理系统,能够根据不同类型的员工显示特定的信息和计算薪水,同时具备良好的扩展性和可维护性。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 人事 ” 获取。👈👈👈


二、设计思路

该代码设计了一个员工管理系统,包括不同类型的员工:经理、技术员、销售员和销售经理。每种员工类型都有自己的属性和计算工资的方法。使用了继承和多态的概念,使得代码结构清晰、扩展性强。

类的设计
  1. Date类:用于表示员工的出生日期,包含年、月、日三个属性。
class Date {
public:
    int year;
    int month;
    int day;
    Date(int y = 0, int m = 0, int d = 0) : year(y), month(m), day(d) {}
};


2.Employee类:这是一个抽象基类,包含员工的基本信息和一个纯虚函数pay(),表示计算工资的方法。

class Employee {
protected:
    int id;
    std::string name;
    std::string gender;
    Date birthdate;
    std::string position;
    double salary;
public:
    Employee(int i, std::string n, std::string g, Date b, std::string p, double s)
        : id(i), name(n), gender(g), birthdate(b), position(p), salary(s) {}

  // 略        
  
  //👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 人事 ” 获取。👈👈👈

  // 略

    virtual double pay() const = 0; // 纯虚函数
};


3.Manager类:继承自Employee类,表示经理,固定工资为8000。

class Manager : virtual public Employee {
public:
    Manager(int i, std::string n, std::string g, Date b, std::string p)
        : Employee(i, n, g, b, p, 8000) {}

  // 略        
  
  //👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 人事 ” 获取。👈👈👈

  // 略
};

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 汽车租赁 ” 获取。👈👈👈


  1. Technician类:继承自Employee类,表示技术员,工资按工作小时数计算(每小时25元)。
class Technician : public Employee {
protected:
    int workHours;
public:
    Technician(int i, std::string n, std::string g, Date b, std::string p, int h)
        : Employee(i, n, g, b, p, h * 25), workHours(h) {}

  // 略        
  
  //👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 人事 ” 获取。👈👈👈

  // 略

    void display() const override {
        Employee::display();
        std::cout << "工作时间: " << workHours << " 小时" << std::endl;
    }
};


5.Salesman类:继承自Employee类,表示销售员,工资按销售额的4%计算。

class Salesman : virtual public Employee {
protected:
    double salesAmount;
public:
    Salesman(int i, std::string n, std::string g, Date b, std::string p, double s)
        : Employee(i, n, g, b, p, s * 0.04), salesAmount(s) {}

  // 略        
  
  //👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 人事 ” 获取。👈👈👈

  // 略    // 略        
  
  //👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 人事 ” 获取。👈👈👈

  // 略
};


6.Salesmanager类:继承自Manager和Salesman类,表示销售经理,基本工资为5000,外加销售额的0.5%。

class Salesmanager : public Manager, public Salesman {
public:
    Salesmanager(int i, std::string n, std::string g, Date b, std::string p, double s)
        : Employee(i, n, g, b, p, 5000 + s * 0.005), Manager(i, n, g, b, p), Salesman(i, n, g, b, p, s) {}

        // 略        
  
  //👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 人事 ” 获取。👈👈👈

  // 略
};

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 人事 ” 获取。👈👈👈


main函数

在主函数中,创建不同类型的员工对象,并通过指向Employee基类的指针数组来遍历和展示每个员工的信息及其工资。

int main() {
    Date birthdate(1985, 5, 15);
        // 略        
    
    //👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 人事 ” 获取。👈👈👈

    // 略
    // 略
        // 略
            // 略
                // 略
                
    Employee* employees[] = { &m, &t, &s, &sm };

    for (Employee* e : employees) {
        e->display();
        std::cout << "月薪: " << e->pay() << " 元\n" << std::endl;
    }

    return 0;
}


这个设计思路通过面向对象编程的方式,使用继承和多态来管理不同类型的员工。各个类的职责分明,使得代码具有良好的可读性和可维护性。通过基类指针数组来调用派生类的display和pay方法,实现了多态性。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 人事 ” 获取。👈👈👈


三、运行结果



👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 人事 ” 获取。👈👈👈

目录
打赏
0
0
2
0
65
分享
相关文章
【c++丨STL】基于红黑树模拟实现set和map(附源码)
本文基于红黑树的实现,模拟了STL中的`set`和`map`容器。通过封装同一棵红黑树并进行适配修改,实现了两种容器的功能。主要步骤包括:1) 修改红黑树节点结构以支持不同数据类型;2) 使用仿函数适配键值比较逻辑;3) 实现双向迭代器支持遍历操作;4) 封装`insert`、`find`等接口,并为`map`实现`operator[]`。最终,通过测试代码验证了功能的正确性。此实现减少了代码冗余,展示了模板与仿函数的强大灵活性。
63 2
员工屏幕监控系统之 C++ 图像差分算法
在现代企业管理中,员工屏幕监控系统至关重要。本文探讨了其中常用的图像差分算法,该算法通过比较相邻两帧图像的像素差异,检测屏幕内容变化,如应用程序切换等。文中提供了C++实现代码,并介绍了其在实时监控、异常行为检测和数据压缩等方面的应用,展示了其实现简单、效率高的特点。
72 15
【c++丨STL】list模拟实现(附源码)
本文介绍了如何模拟实现C++中的`list`容器。`list`底层采用双向带头循环链表结构,相较于`vector`和`string`更为复杂。文章首先回顾了`list`的基本结构和常用接口,然后详细讲解了节点、迭代器及容器的实现过程。 最终,通过这些步骤,我们成功模拟实现了`list`容器的功能。文章最后提供了完整的代码实现,并简要总结了实现过程中的关键点。 如果你对双向链表或`list`的底层实现感兴趣,建议先掌握相关基础知识后再阅读本文,以便更好地理解内容。
85 1
【c++丨STL】string模拟实现(附源码)
本文详细介绍了如何模拟实现C++ STL中的`string`类,包括其构造函数、拷贝构造、赋值重载、析构函数等基本功能,以及字符串的插入、删除、查找、比较等操作。文章还展示了如何实现输入输出流操作符,使自定义的`string`类能够方便地与`cin`和`cout`配合使用。通过这些实现,读者不仅能加深对`string`类的理解,还能提升对C++编程技巧的掌握。
259 5
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
133 2
|
7月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
120 3
【C++】C++-学生考试题库管理系统(源码)
本系统设计了一个选题管理流程,包括读取题目信息、随机抽取题目、保存及查询选题结果等功能。使用 `readProjects` 从文件读取题目信息,`drawProject` 随机抽取未选中的题目,`saveSelection` 保存选题结果至文件,`querySelection` 查询并显示所有选题结果。主函数提供菜单界面,支持学生信息输入、抽题及结果查询。关注【测试开发自动化】公众号,回复“题库”获取源码。
80 0
|
8月前
|
系统编程的未来之战:Rust能否撼动C++的王座?
【8月更文挑战第31天】Rust与C++:现代系统编程的新选择。C++长期主导系统编程,但内存安全问题频发。Rust以安全性为核心,通过所有权和生命周期概念避免内存泄漏和野指针等问题。Rust在编译时确保内存安全,简化并发编程,其生态系统虽不及C++成熟,但发展迅速,为现代系统编程提供了新选择。未来有望看到更多Rust驱动的系统级应用。
141 1
|
8月前
|
C++
使用 QML 类型系统注册 C++ 类型
使用 QML 类型系统注册 C++ 类型
226 0
C++语言学习指南:从新手到高手,一文带你领略系统编程的巅峰技艺!
【8月更文挑战第22天】C++由Bjarne Stroustrup于1985年创立,凭借卓越性能与灵活性,在系统编程、游戏开发等领域占据重要地位。它继承了C语言的高效性,并引入面向对象编程,使代码更模块化易管理。C++支持基本语法如变量声明与控制结构;通过`iostream`库实现输入输出;利用类与对象实现面向对象编程;提供模板增强代码复用性;具备异常处理机制确保程序健壮性;C++11引入现代化特性简化编程;标准模板库(STL)支持高效编程;多线程支持利用多核优势。虽然学习曲线陡峭,但掌握后可开启高性能编程大门。随着新标准如C++20的发展,C++持续演进,提供更多开发可能性。
128 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等