返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++实现职工信息管理系统
  • 800
分享到

C++实现职工信息管理系统

2024-04-02 19:04:59 800人浏览 薄情痞子
摘要

本文实例为大家分享了c++实现职工信息管理系统的具体代码,供大家参考,具体内容如下 1、项目需求 2、功能实现的具体思路为: (1) 经行职工信息的读入,用while循环进行读入,

本文实例为大家分享了c++实现职工信息管理系统的具体代码,供大家参考,具体内容如下

1、项目需求

2、功能实现的具体思路为:

(1) 经行职工信息的读入,用while循环进行读入,对于职工信息类型的设定方便起见除年龄和薪资用int类型其他信息都用string类型,职工信息用ostream 流写入txt并将信息保存在txt文件中,打印职工信息由于c++读文件方式不方便所以用C语言方式读文件,文件读取以后将文件中读取的信息加载到vector容器中后打印在终端窗口,其他功能的实现也是将文件中的信息读取到vector容器中,后用vector容器中的重载函数进行功能的实现; 

3、头文件的编写的具体实现

#pragma once
#include<string>
#include<vector>
 
using namespace std;
 
class Worker {
public:
    Worker(string workNumber, string name, string gender,
        string education, string addr, string phoneNumber,
        int age, int salary);
    Worker();
    ~Worker();
    //职工信息描述
    string description();
 
    //录入职工信息
    static void addWorkerInfORMation(vector<Worker>&worker);
    void addWorkerInformations();
 
    //职工信息浏览
    void putWorkerInformation();
 
    //查询 按籍贯或学历查询职工信息
    void lookWorkerInformation();
 
    //按工资高低排序
    void sortWorkerInformation();
 
    //删除职工信息 按姓名删除
    void deleteWorkerInformation();
 
    //修改职工信息 把研究生薪资增加 500
    void addWorkerSalary();
 
    friend ostream& operator<<(ostream& os, const Worker& worker);   //友元函数直接输出对象的信息
    Worker& operator=(const Worker& worker);    //赋值构造函数
private:
    string workNumber;    //职工号
    string name;    //名字
    string gender;    //性别
    string education; //学历
    string addr;    //籍贯
    string phoneNumber; //电话号码
    int age;        //年龄
    int salary;  //薪资
 
    void loadWorkerInformation();
    void printWorkerInformation();
 
    vector<Worker>worker;
};

ostream& operator<<(ostream& os, const Worker& worker); //使用重载函数直接输出对象的信息进行输出

4、对头文件中函数的具体实现

#include<string>
#include<sstream>
#include<iOStream>
#include<fstream>
#include<vector>
#include"worker.h"
 
#define NAME "workerInformation.txt"
#define ZERO "0"
#define MONEY 500
#define STUDENT "研究生"
 
Worker::Worker(string workNumber, string name, string gender,
    string education, string addr, string phoneNumber, 
    int age, int salary){
    this->addr = addr;
    this->age = age;
    this->gender = gender;
    this->name = name;
    this->phoneNumber = phoneNumber;
    this->education = education;
    this->salary = salary;
    this->workNumber = workNumber;
}
 
Worker::Worker(){
 
}
 
Worker::~Worker(){
 
}
 
//职工信息描述
string Worker::description(){
    stringstream ret;
    ret << "职工号:" << workNumber << "  性别:" << gender << "  名字:" << name
        << "  年龄:" << age << "  学历:" << education << "  籍贯:" << addr
        << "  薪资:" << salary << "  电话号码:" << phoneNumber;
    return ret.str();
}
 
void Worker::addWorkerInformation(vector<Worker>& worker){
    string workNumber;    //职工号
    string name;    //名字
    string gender;    //性别
    string education; //学历
    string addr;    //籍贯
    string phoneNumber; //电话号码
    int age;        //年龄
    int salary;  //年龄
 
    while (1) {
        cout << "输入职工号[输入 0 结束输入];";
        cin >> workNumber;
        if (workNumber == ZERO) {
            break;
        }
        cout << "输入名字:";
        cin >> name;
        cout << "输入性别:";
        cin >> gender;
        cout << "输入学历:";
        cin >> education;
        cout << "输入籍贯:";
        cin >> addr;
        cout << "输入电话号码:";
        cin >> phoneNumber;
        cout << "输入年龄:";
        cin >> age;
        cout << "输入薪资:";
        cin >> salary;
        worker.push_back(Worker(workNumber, name, gender,
            education, addr, phoneNumber,
            age, salary));
    }
    return;
}
 
void Worker::addWorkerInformations(){
    ofstream outFile;
    outFile.open(NAME,ios::app);
    Worker::addWorkerInformation(this->worker);
 
    for (int i = 0;i < worker.size();i++) {
        outFile << worker[i].description()<<endl;
    }
    worker.clear();
    outFile.close();
}
 
//职工信息浏览
void Worker::putWorkerInformation(){
    loadWorkerInformation();
    printWorkerInformation();
}
 
//查询 按籍贯或学历查询职工信息
void Worker::lookWorkerInformation(){
    string  addr;
    string education;
    cout << "输入要查询的职工籍贯:";
    cin >> addr;
    cout << "请输入要查询的职工学历:";
    cin >> education;
 
    loadWorkerInformation();
    for (int i = 0;i < worker.size();i++) {
        if ((worker[i].addr == addr)&&(worker[i].education == education)){
            cout << worker[i] << endl;
        }
    }
}
 
//按工资高低排序
void Worker::sortWorkerInformation(){
    loadWorkerInformation();
    Worker workers;
    for (int j = 0;j < worker.size() ;j++) {
        for (int i = j + 1;i < worker.size();i++) {
            if (worker[j].salary > worker[i].salary) {
                workers = worker[i];
                worker[i] = worker[j];
                worker[j] = workers;
            }
        }
    }
    printWorkerInformation();
}
 
//删除职工信息 按姓名删除
void Worker::deleteWorkerInformation(){
    ofstream outFile;
    string name;
    cout << "请输入你要删除人的姓名:";
    cin >> name;
 
    loadWorkerInformation();
    outFile.open(NAME);
    for (int i = 0;i < worker.size();) {
        if (worker[i].name == name) {
            worker.erase(worker.begin() + i);
        }
        else {
            outFile << worker[i] << endl;
            i++;
        }
    }
 
}
 
//修改职工信息 把研究生薪资增加 500
void Worker::addWorkerSalary(){
    loadWorkerInformation();
    int salary;
 
    ofstream outFile;
    outFile.open(NAME);
 
    for (int i = 0;i < worker.size();) {
        if (worker[i].education == STUDENT) {
            salary = worker[i].salary + MONEY;
            outFile<<Worker(worker[i].workNumber,worker[i].name,worker[i].gender,
                worker[i].education, worker[i].addr, worker[i].phoneNumber,
                worker[i].age, salary)<<endl;
 
            worker.erase(worker.begin()+i);
        }
        else {
            outFile << worker[i] << endl;
            i++;
        }
    }
    worker.clear();
}
 
Worker& Worker::operator=(const Worker& worker) {
    addr = worker.addr;
    age = worker.age;
    gender = worker.gender;
    education = worker.education;
    name = worker.name;
    phoneNumber = worker.phoneNumber;
    salary = worker.salary;
    workNumber = worker.workNumber;
 
    return *this;
}
 
void Worker::loadWorkerInformation(){
    char workNumber[32];    //职工号
    char name[32];    //名字
    char gender[32];    //性别
    char education[32]; //学历
    char addr[32];    //籍贯
    char phoneNumber[32]; //电话号码
    int age;        //年龄
    int salary;  //年龄
 
    string line;
    ifstream inFile;
    inFile.open(NAME);
 
    if (!inFile.is_open()) {
        cout << "----职工数据库打开失败----";
        inFile.close();
        exit(1);
    }
    while (1) {
        getline(inFile, line);
        if (inFile.eof()) {
            break;
        }
        if (line == "")continue;
 
        sscanf_s(line.c_str(), "职工号:%s 性别:%s 名字:%s 年龄:%d 学历:%s 籍贯:%s 薪资:%d 电话号码:%s",
            workNumber, sizeof(workNumber), gender, sizeof(gender), name, sizeof(name),
            &age, education, sizeof(education), addr, sizeof(addr), &salary, 
            phoneNumber, sizeof(phoneNumber));
 
        worker.push_back(Worker(string(workNumber), string(name), string(gender),
            string(education), string(addr), string(phoneNumber),
            age, salary));
    }
}
 
void Worker::printWorkerInformation(){
    for (int i = 0;i < worker.size();i++) {
        cout << worker[i] << endl<<endl;
    }
    worker.clear();
}
 
ostream& operator<<(ostream& os, const Worker& worker){
    os<<  "职工号:" <<worker.workNumber << "  性别:" << worker.gender << "  名字:" << worker.name
        << "  年龄:" << worker.age << "  学历:" << worker.education << "  籍贯:" << worker.addr
        << "  薪资:" << worker.salary << "  电话号码:" << worker.phoneNumber;
    return os;
}

5、main函数的具体实现

#include<stdlib.h>
#include<iostream>
#include<coNIO.h>
#include"worker.h"
 
#define ONE '1'
#define TWO '2'
#define THREE '3'
#define FOUR '4'
#define FIVE '5'
#define SIX '6'
#define SEVEN '7'
 
int main(void) {
    Worker work;
    cout << "输入【1】根据籍贯和学历对职工信息进行查询" << endl;
    cout << "输入【2】按薪水对职工信息进行排序" << endl;
    cout << "输入【3】打印职工信息" << endl;
    cout << "输入【4】增加职工信息" << endl;
    cout << "输入【5】增加研究生薪水" << endl;
    cout << "输入【6】删除信息" << endl;
    cout << "输入【7】退出功能" << endl << endl;
 
    bool quit = false;
    do {
        
        if (_kbhit()) {
            char ch = _getch();
            switch(ch){
            case  ONE:
                work.lookWorkerInformation();//根据籍贯和学历对职工信息进行查询
                cout << "---已完成该功能---" << endl << endl;
                break;
            case  TWO:
                work.sortWorkerInformation();//按薪水对职工信息进行排序
                cout << "---已完成该功能---" << endl << endl;
                break;
            case THREE: 
                work.putWorkerInformation();//打印职工信息;
                cout << "---已完成该功能---" << endl << endl;
                break;
            case  FOUR:
                work.addWorkerInformations();//增加职工信息
                cout << "---已完成该功能---" << endl << endl;
                break;
            case  FIVE:
                work.addWorkerSalary();//增加研究生薪水
                cout << "---已完成该功能---" << endl << endl;
                break;
            case  SIX:
                work.deleteWorkerInformation();//删除信息
                cout << "---已完成该功能---" << endl << endl;
                break;
            case  SEVEN:
                quit = true;//退出循环
                break;
            default:
                cout << "----无其他功能选项----";
                break;
            }
        }
    } while (quit == false);
    
    system("pause");
    return 0;
}

6、功能3,4,5,6,的实现都是将文件中的信息加载到vector中,并且使用的都是保存了worker这个类对象的同一个容器(假如先实现工能3,将信息加载到vector中后功能3结束以后,功能3使用到的职工信息依然在vector这个容器中,所以使用完一个函数后要将vector中的信息清理完全,不然会影响下一个函数的使用)。

7、在实现功能5的时候会使用到vector容器的重载函数( worker.erase(worker.begin()+i);)使用完以后返回的是下一个迭代器指向下一个对象,所以在使用使用for循环遍历容器的时候因注意for (int i = 0;i < worker.size();i++)  中i++具体放在哪个位置比较合适。

8、这是本人在编写程序的时候发现的坑如果有什么错误请批评指正。

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

--结束END--

本文标题: C++实现职工信息管理系统

本文链接: https://lsjlt.com/news/163127.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++实现职工信息管理系统
    本文实例为大家分享了c++实现职工信息管理系统的具体代码,供大家参考,具体内容如下 1、项目需求 2、功能实现的具体思路为: (1) 经行职工信息的读入,用while循环进行读入,...
    99+
    2024-04-02
  • C++实现教职工信息管理系统
    本文实例为大家分享了C++实现教职工信息管理系统的具体代码,供大家参考,具体内容如下 一.问题描述 一个小公司包含四类人员:经理,技术人员,销售人员和销售经理,各类人员的工资计算方法...
    99+
    2024-04-02
  • C语言实现简单职工信息管理系统
    本文实例为大家分享了C语言实现职工信息管理系统的具体代码,供大家参考,具体内容如下 代码实现如下: #include <stdio.h>//输入、输出指令 #includ...
    99+
    2024-04-02
  • C++实现教职工信息管理系统课程设计
    本文实例为大家分享了C++实现教职工信息管理系统的具体代码,供大家参考,具体内容如下 #include<iostream> #include<cstring&g...
    99+
    2024-04-02
  • 如何使用C++实现教职工信息管理系统
    这篇文章主要介绍如何使用C++实现教职工信息管理系统,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下一.问题描述一个小公司包含四类人员:经理,技术人员,销售人员和销售经理,各类人员的工资计算方法如下:经理:...
    99+
    2023-06-29
  • C++实现职工管理系统
    本文实例为大家分享了C++实现职工管理系统的具体代码,供大家参考,具体内容如下 workermanager.h #pragma once//防止头文件重复包含 #include...
    99+
    2024-04-02
  • C++实现职工工资管理系统
    本文实例为大家分享了C++实现职工工资管理系统的具体代码,供大家参考,具体内容如下 main.cpp #include <iostream> #include <v...
    99+
    2024-04-02
  • 基于C++实现职工管理系统
    本文实例为大家分享了C++实现职工管理系统的具体代码,供大家参考,具体内容如下 1、管理系统需求 职工管理系统可以用来管理公司内所有员工的信息 利用C++来实现一个基于多态的职工管理...
    99+
    2024-04-02
  • C语言实现职工工资管理系统
    本文实例为大家分享了C语言实现职工工资管理系统的具体代码,供大家参考,具体内容如下 设计要求: 模拟并设计一个企业的职工工资管理系统,职工信息包括工号、姓名、基本工资、津贴,设职工人...
    99+
    2024-04-02
  • C++如何实现职工工资管理系统
    本篇内容主要讲解“C++如何实现职工工资管理系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++如何实现职工工资管理系统”吧!题目 职工工资管理系统功能设计要求 输入记录:将每一个职工的姓名...
    99+
    2023-06-29
  • C++如何实现教职工管理系统
    这篇文章主要介绍“C++如何实现教职工管理系统”,在日常操作中,相信很多人在C++如何实现教职工管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++如何实现教职工管理系统”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-29
  • C++实现教工考勤信息管理系统
    本文实例为大家分享了C++实现教工考勤信息管理系统的具体代码,供大家参考,具体内容如下 需求分析 传统意义上的考勤管理都是采用原始的手工操作来完成的。人事部的管理人员或办公室人员要进...
    99+
    2024-04-02
  • C++实现信息管理系统
    本文实例为大家分享了C++实现信息管理系统的具体代码,供大家参考,具体内容如下 有一个信息管理系统,要求检查每一个登录系统的用户(User)的用户名和口令,系统检查合格以后方可登录系...
    99+
    2024-04-02
  • C++分步实现职工管理系统详解
    目录1.职工管理系统的需求2.功能实现2.1创建管理类2.2退出功能2.3增加联系人信息2.4显示职工信息2.5删除离职职工2.6修改职工信息2.7查找职工信息2.8按照编号排序2....
    99+
    2022-11-13
    C++职工管理系统 C++职工管理 C++管理系统
  • 基于C++如何实现职工管理系统
    这篇文章主要介绍了基于C++如何实现职工管理系统的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于C++如何实现职工管理系统文章都会有所收获,下面我们一起来看看吧。1、管理系统需求职工管理系统可以用来管理公司内...
    99+
    2023-06-30
  • C++实现职工工资管理系统课程设计
    本文实例为大家分享了C++实现职工工资管理系统的具体代码,供大家参考,具体内容如下 现在的大学里经常有一些课程设计 ,这不,我就遇到了 。 我们的c++老师 ,给了我们许 多的题目要...
    99+
    2024-04-02
  • Java实现员工信息管理系统
    在Java SE中,对IO流与集合的操作在应用中比较重要。接下来,我以一个小型项目的形式,演示IO流、集合等知识点在实践中的运用。 该项目名称为“员工信息管理系统&rdq...
    99+
    2024-04-02
  • Python实现员工信息管理系统
    本文实例为大家分享了Python实现员工信息管理系统的具体代码,供大家参考,具体内容如下 1.职员信息管理系统 要求: 1、依次从键盘录入每位员工的信息,包括姓名、员工id、身份证号...
    99+
    2024-04-02
  • C++实现教职工管理系统课程设计
    本文实例为大家分享了C++实现教职工管理系统的具体代码,供大家参考,具体内容如下 要求:设计一个程序来管理职工较全面数据信息,具备数据的输入、查找、删除等功能。具体功能细节可以根据自...
    99+
    2024-04-02
  • C++怎么实现教工考勤信息管理系统
    这篇“C++怎么实现教工考勤信息管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++怎么实现教工考勤信息管理系统”文...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作