C++实现公司人事管理系统

192.168.1.1
192.168.1.1
192.168.1.1
6566
文章
0
评论
2022年11月7日12:00:57 投稿阅读 3,423
这篇文章主要为大家详细介绍了C++实现公司人事管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

C++实现公司人事管理系统

本文实例为大家分享了C++实现公司人事管理系统的具体代码,供大家参考,具体内容如下

一.问题描述

一个小公司包含四类人员:经理,技术人员,销售人员和销售经理,各类人员的工资计算方法如下:经理:固定月薪(8000);技术人员:月薪按技术等级(1~8)(1600+等级*300);销售人员:按提成(4%*销售额);销售经理:底薪+提成(1500+0.2%*总销售额);设计一个管理程序,实现对各类人员的信息输入,修改和显示。

二 .基本要求

(1)使用面向对象编程思想编写开发过程中需要用到的类,比如:设计Person类:编号,姓名,岗位,工资,成员函数可设一个计算月薪的纯虚函数;另外再设计四个针对四类人员的类均继承 Person;添加相应的派生类数据成员和函数,经理和销售经理可以没有新的数据成员,计算月薪即可; 技术人员添加技术等级数据成员,销售人员添加数据成员:销售额。还需设计一个Manage 类来完成各种操作。人员数组 vector,数据类型为基类指针。

(2)需要使用菜单功能显示添加人员(输入),修改信息,浏览信息,按姓名查找,月薪排序。

(3)为了设计简洁,假定经理和销售经理都只能有一个;用文本编辑器编辑一个文本文件(总数 20 人以上)包含各类人员的信息;并且在程序中能修改保存。

基本流程图

C++实现公司人事管理系统

#include<iostream>#include<vector>#include<string>#include<cstdlib>#include<windows.h>#include<iomanip>#include<fstream>#include <algorithm>#define filename "student.txt"using namespace std; class Person{public:    Person(string, string, int = 0);    double virtual pay_salary() = 0;    void  virtual show();             bool operator<(const Person*&) const;        static int num;    int Number;      double Salary;    string Name;    string Department;    int c;};bool Person::operator<(const Person*& obj) const{    return this->Salary > obj->Salary;}Person::Person(string name1, string work1, int c1){    c = c1;    Number = num++;    Name = name1;    Department = work1;}int Person::num = 1;void  Person::show() {    cout<<"-----------------------------------"<<endl;    cout <<right<<setw(3)<<Number<<setw(10)<<Name<<setw(11)<<Department<<setw(8)<<Salary;    }class Manager :public Person{public:    Manager(string, string, int);    double pay_salary();    void show();};Manager::Manager(string name1, string post1, int c1) :Person(name1, post1, c1){    pay_salary();}double Manager::pay_salary() {    Salary = 8000;    return Salary;}void Manager::show(){    cout<<"-----------------------------------"<<endl;    cout <<right<<setw(3)<<Number<<setw(10)<<Name<<setw(9)<<Department<<setw(10)<<Salary; }class SaleManager :public Person {public:    SaleManager(string, string, int);    double pay_salary();    void show();};SaleManager::SaleManager(string name1, string post1, int c1) :Person(name1, post1, c1) {    pay_salary();}double SaleManager::pay_salary(){    Salary = 1500;    return Salary;}void SaleManager::show(){    cout<<"-----------------------------------"<<endl;    cout <<right<<setw(3)<<Number<<setw(10)<<Name<<setw(11)<<Department<<setw(8)<<Salary; }class Salesman :public Person {public:    Salesman(string, string, int);    int salevolume;    double pay_salary();    void show();};Salesman::Salesman(string name1, string post1, int sv) :Person(name1, post1, sv){    salevolume = sv;    pay_salary();}double Salesman::pay_salary() {    Salary = 0.04 * salevolume;    return Salary;}void Salesman::show(){    cout<<"-----------------------------------"<<endl;    cout <<right<<setw(3)<<Number<<setw(10)<<Name<<setw(11)<<Department<<setw(8)<<Salary; }class Technician :public Person{public:    Technician(string, string, int);    double pay_salary();    void show();};Technician::Technician(string name1, string post1, int rank1) :Person(name1, post1, rank1) {    pay_salary();}double Technician::pay_salary(){    Salary = 1600 + 300 * c;    return Salary;}void Technician::show() {     cout<<"-----------------------------------"<<endl;    cout <<right<<setw(3)<<Number<<setw(10)<<Name<<setw(11)<<Department<<setw(8)<<Salary; }class Manage{public:    void Menu() { salevolume = 0; }    int salevolume;    vector<Person*> Ma;    void add(Person*);    void alter(string);    void addtofile();    void show();    void show1();    Person* find(string&);};Person* Manage::find(string& name1) {    for (vector<Person*>::iterator iter = Ma.begin(); iter != Ma.end(); iter++) {        if ((*iter)->Name == name1) {            return *iter;        }    }    return NULL;}void Manage::alter(string name1) {    for (vector<Person*>::iterator iter = Ma.begin(); iter != Ma.end(); iter++) {        if ((*iter)->Name == name1) {            Ma.erase(iter);            return;        }    }    cout << "查无此人" << endl;}void Manage::add(Person* people){    if (people->Department == "销售人员") {        salevolume += ((Salesman*)people)->salevolume;    }    Ma.push_back(people);}void Manage::addtofile() {    ofstream outfile(filename);    for (vector<Person*>::iterator iter = Ma.begin(); iter != Ma.end(); iter++) {        outfile << (*iter)->Department << " " << (*iter)->Name << " ";        if ((*iter)->c == 0) outfile << endl;        else outfile << (*iter)->c << endl;    }    outfile.close();}bool cmp(Person* x, Person* y) {    return x->Salary > y->Salary;}void Manage::show() {    for (vector<Person*>::iterator iter = Ma.begin(); iter != Ma.end(); iter++) {        if ((*iter)->Department == "销售经理") {            (*iter)->Salary = salevolume * 0.002 +1500;            break;        }    }    sort(Ma.begin(), Ma.end(), cmp);    for (vector<Person*>::iterator iter = Ma.begin(); iter != Ma.end(); iter++) {        (*iter)->show();        cout << endl;    }}void readfile(Manage& obj) {    FILE* fp;    fp = fopen(filename, "r");    if (fp == NULL) {        cout << "未找到人员名单" << endl;        return;    }    while (!feof(fp)) {        char post[20];        char Name[20];        int c;          fscanf(fp, "%s%s%d", post, Name,&c);        if (!strcmp(post, "经理")) {            Person* peo = new Manager(Name, post, 0);            obj.add(peo);        }        else if (!strcmp(post, "技术人员")) {            Person* peo = new Technician(Name, post, c);            obj.add(peo);        }        else if (!strcmp(post, "销售人员")) {            Person* peo = new Salesman(Name, post, c);            obj.add(peo);        }        else if (!strcmp(post, "销售经理")) {            Person* peo = new SaleManager(Name, post, 0);            obj.add(peo);        }    }    fclose(fp);}void Manage::show1(){    for (vector<Person*>::iterator iter = Ma.begin(); iter != Ma.end(); iter++) {        (*iter)->show();        cout << endl;    }}int main(){    int x;    Manage T;    readfile(T);    while(1){        cout<< "    ———————————————————————————————" << endl            << "    |       公司人事管理系统        |" << endl            << "    ———————————————————————————————" << endl            << "    |         1.添加员工           |" << endl            << "    |         2.修改信息           |" << endl            << "    |         3.按姓名查找         |" << endl            << "    |         4.显示所有信息       |" << endl            << "    |         5.按月薪降序排序     |" << endl            << "    |         0.保存并退出程序     |" << endl            << "    ———————————————————————————————" << endl;                cout<< "请选择->";        cin >> x;        switch (x) {        case 1: {            while (1) {                int n;                string Name;                cout << "请输入姓名:" ;                cin >> Name;                cout << "请输入人员岗位(1.经理 2.技术人员 3. 销售人员 4.销售经理):" ;                 cin >> n;                if (n == 1) {                    Person* peo = new Manager(Name, "经理", 0);                    T.add(peo);                    cout << "添加成功" << endl << endl << endl;                    break;                }                else if (n == 2) {                    while (1) {                        int rank = 0;                        cout << "请输入技术等级(1~8):" ;                        cin >> rank;                        if (rank > 8 || rank < 1) {                            cout << "输入错误,请在1~8之间输入:" ;                        }                        else {                            Person* peo = new Technician(Name, "技术人员", rank);                            T.add(peo);                            break;                        }                    }                    cout << "添加成功" << endl << endl << endl;                    break;                }                else if (n == 3) {                    int sales = 0;                    cout << "请输入销售额:" << endl;                    cin >> sales;                    Person* peo = new Salesman(Name, "销售人员", sales);                    T.add(peo);                    cout << "添加成功" << endl << endl << endl;                    break;                }                else if (n == 4) {                    Person* peo = new SaleManager(Name, "销售经理", 0);                    T.add(peo);                    cout << "添加成功" << endl << endl << endl;                    break;                }                else {                    cout << "输入错误,请重新输入:" << endl;                }            }         system("pause");}                break;        case 2: {            string Name;            int n = 0;            cout << "请输入姓名:" ;            cin >> Name;            Person* peo = T.find(Name);            if (peo == NULL) {                cout << "        查无此人" << endl << endl << endl;                break;            }            peo->show();            if (peo->Department == "经理") {                cout << "    经理无法修改" << endl;            }            else if (peo->Department == "技术人员") {                int rank = 0;                while (1) {                    cout <<endl<< "请输入技术等级(1~8):" << endl;                    cin >> rank;                    if (rank > 8 || rank < 1) {                        cout << "等级输入错误,请重新输入" << endl;                    }                    else break;                }                T.alter(Name);                peo = new Technician(Name, "技术人员", rank);                T.add(peo);                cout << "修改成功!" << endl;                            }            else if (peo->Department == "销售人员") {                int sales = 0;                cout <<endl<< "请输入销售额:" << endl;                cin >> sales;                T.alter(Name);                peo = new Salesman(Name, "销售人员", sales);                T.add(peo);                cout << "    修改成功!" << endl;                            }            else if (peo->Department == "销售经理") {                cout << "   销售经理无法修改" << endl;            }            else {                cout << "输入错误" << endl;            }        }system("pause");                break;        case 3: {            string Name;            int n = 0;            cout << "请输入所查找人的姓名:";            cin >> Name;            Person* peo = T.find(Name);            if (peo == NULL) {                cout << "查无此人" << endl;                system("cls");                break;            }            cout<<"-----------------------------------"<<endl;            cout <<left<<setw(8)<<"序 号"<<setw(9)<<"姓 名"<<setw(10)<<"岗 位"<<setw(10)<<"工 资"<< endl;             peo->show();            cout<<endl<<"-----------------------------------"<<endl;            cout << endl;            system("pause");                    }                break;        case 4: {             cout<<"-----------------------------------"<<endl;            cout <<left<<setw(8)<<"序 号"<<setw(9)<<"姓 名"<<setw(10)<<"岗 位"<<setw(10)<<"工 资"<< endl;             T.show1();            cout<<"-----------------------------------"<<endl;            system("pause");            system("cls");        }                break;        case 5: {             cout<<"-----------------------------------"<<endl;            cout <<left<<setw(8)<<"序 号"<<setw(9)<<"姓 名"<<setw(10)<<"岗 位"<<setw(10)<<"工 资"<< endl;                 T.show();        }            system("pause");                break;        case 0:            T.addtofile();            exit(0);        default:            cout << "输入错误请重新输入" << endl;            break;        }    }    return 0;}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关推荐

c人事管理系统

随着企业的不断发展,人力资源管理变得越来越复杂。管理人力资源需要大量的时间和精力,而且往往存在人为错误和漏洞。为了实现高效的人力资源管理,c人事管理系统应运而生。它是一种可以自动化...

c人事管理系统

C人事管理系统是一种基于计算机网络技术的人力资源管理工具,旨在帮助企业高效地管理员工信息、招聘、培训、薪酬、绩效评估等方面的工作。该系统可以集中管理企业的人力资源信息和操作,实现人...

c语言人事管理系统,c语言人事管理系统

现在网上有好多c语言程序都不能运行,今天就给大家分享自己写的一个c语言人事管理程序吧! 一、内容(标题:宋体,粗体,四号字) 本程序主要实现了对高校人事的管理。其不仅可以对人员的新...

人事管理系统

盒子人力资源管理系统 一、系统简介 人事管理系统是基于当前流行技术组合的前后端分离:SpringBoot2+MybatisPlus+SpringSecurity+jwt+redis...

c语言人事管理系统,c语言人事管理系统

现在网上有好多c语言程序都不能运行,今天就给大家分享自己写的一个c语言人事管理程序吧! 一、内容(标题:宋体,粗体,四号字) 本程序主要实现了对高校人事的管理。其不仅可以对人员的新...

人事管理系统

盒子人力资源管理系统 一、系统简介 人事管理系统是基于当前流行技术组合的前后端分离:SpringBoot2+MybatisPlus+SpringSecurity+jwt+redis...