我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用C++实现教职工信息管理系统

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用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;//编号从1开始 void  Person::show() {    cout<<"-----------------------------------"<<endl;    cout <<right<<setw(3)<<Number<<setw(10)<<Name<<setw(11)<<Department<<setw(8)<<Salary; //setw()控制输出宽度     }class Manager :public Person //经理类,继承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//销售经理类,继承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() //计算经理的工资,基本工资 1500元 {    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//销售人员类,继承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()//计算销售人员工资,4%×销售额  {    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 //技术人员类,继承Person类 {public:    Technician(string, string, int);//技术等级为继承来的参数c     double pay_salary();//计算技术人员的工资     void show();//显示技术人员的所有信息 };Technician::Technician(string name1, string post1, int rank1) :Person(name1, post1, rank1) {    pay_salary();}double Technician::pay_salary() //计算技术人员的工资,技术等级×300+1600 {    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;//vector数组,存放Person类的对象指针     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()//对vector数组进行读取 {    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++实现教职工信息管理系统”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用C++实现教职工信息管理系统

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用C++实现教职工信息管理系统

这篇文章主要介绍如何使用C++实现教职工信息管理系统,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下一.问题描述一个小公司包含四类人员:经理,技术人员,销售人员和销售经理,各类人员的工资计算方法如下:经理:
2023-06-29

C++如何实现教职工管理系统

这篇文章主要介绍“C++如何实现教职工管理系统”,在日常操作中,相信很多人在C++如何实现教职工管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++如何实现教职工管理系统”的疑惑有所帮助!接下来,请跟
2023-06-29

如何使用C++实现信息管理系统

小编给大家分享一下如何使用C++实现信息管理系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下有一个信息管理系统,要求检查每一个登录系统的用户(Use
2023-06-29

C++如何实现职工工资管理系统

本篇内容主要讲解“C++如何实现职工工资管理系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++如何实现职工工资管理系统”吧!题目 职工工资管理系统功能设计要求1. 输入记录:将每一个职工的
2023-06-29

C++怎么实现教工考勤信息管理系统

这篇“C++怎么实现教工考勤信息管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++怎么实现教工考勤信息管理系统”文
2023-06-30

如何使用C++实现图书信息管理系统

小编给大家分享一下如何使用C++实现图书信息管理系统,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下1.题目:类型有:编号:ISBN书名:name价格:price完成如下的功能:①录入:从键盘输入(或从文件读入)
2023-06-29

基于C++如何实现职工管理系统

这篇文章主要介绍了基于C++如何实现职工管理系统的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于C++如何实现职工管理系统文章都会有所收获,下面我们一起来看看吧。1、管理系统需求职工管理系统可以用来管理公司内
2023-06-30

基于C++如何实现信息管理系统

这篇“基于C++如何实现信息管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“基于C++如何实现信息管理系统”文章吧。1
2023-06-29

C++如何实现学生信息管理系统

本篇内容主要讲解“C++如何实现学生信息管理系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++如何实现学生信息管理系统”吧!实现功能上面的功能基本完全实现目前的程序其实还存在两个问题:1、
2023-06-30

如何使用C语言实现车辆信息管理系统

小编给大家分享一下如何使用C语言实现车辆信息管理系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下车辆信息管理系统问题描述:建立车辆信息管理系统,实现
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录