最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實(shí)現(xiàn)職工信息管理系統(tǒng)

 更新時(shí)間:2022年01月20日 12:20:32   作者:小生_無情  
這篇文章主要為大家詳細(xì)介紹了c++實(shí)現(xiàn)職工信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了c++實(shí)現(xiàn)職工信息管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

1、項(xiàng)目需求

2、功能實(shí)現(xiàn)的具體思路為:

(1) 經(jīng)行職工信息的讀入,用while循環(huán)進(jìn)行讀入,對于職工信息類型的設(shè)定方便起見除年齡薪資int類型其他信息都用string類型,職工信息用ostream 流寫入txt并將信息保存在txt文件中,打印職工信息由于c++讀文件方式不方便所以用c語言方式讀文件,文件讀取以后將文件中讀取的信息加載到vector容器中后打印在終端窗口,其他功能的實(shí)現(xiàn)也是將文件中的信息讀取到vector容器中,后用vector容器中的重載函數(shù)進(jìn)行功能的實(shí)現(xiàn); 

3、頭文件的編寫的具體實(shí)現(xiàn)

#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();
?
? ? //查詢 按籍貫或?qū)W歷查詢職工信息
? ? void lookWorkerInformation();
?
? ? //按工資高低排序
? ? void sortWorkerInformation();
?
? ? //刪除職工信息 按姓名刪除
? ? void deleteWorkerInformation();
?
? ? //修改職工信息 把研究生薪資增加 500
? ? void addWorkerSalary();
?
? ? friend ostream& operator<<(ostream& os, const Worker& worker); ? //友元函數(shù)直接輸出對象的信息
? ? Worker& operator=(const Worker& worker); ? ?//賦值構(gòu)造函數(shù)
private:
? ? string workNumber; ? ?//職工號
? ? string name; ? ?//名字
? ? string gender; ? ?//性別
? ? string education; //學(xué)歷
? ? string addr; ? ?//籍貫
? ? string phoneNumber; //電話號碼
? ? int age; ? ? ? ?//年齡
? ? int salary; ?//薪資
?
? ? void loadWorkerInformation();
? ? void printWorkerInformation();
?
? ? vector<Worker>worker;
};

ostream& operator<<(ostream& os, const Worker& worker); //使用重載函數(shù)直接輸出對象的信息進(jìn)行輸出

4、對頭文件中函數(shù)的具體實(shí)現(xiàn)

#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 << " ?學(xué)歷:" << education << " ?籍貫:" << addr
? ? ? ? << " ?薪資:" << salary << " ?電話號碼:" << phoneNumber;
? ? return ret.str();
}
?
void Worker::addWorkerInformation(vector<Worker>& worker){
? ? string workNumber; ? ?//職工號
? ? string name; ? ?//名字
? ? string gender; ? ?//性別
? ? string education; //學(xué)歷
? ? string addr; ? ?//籍貫
? ? string phoneNumber; //電話號碼
? ? int age; ? ? ? ?//年齡
? ? int salary; ?//年齡
?
? ? while (1) {
? ? ? ? cout << "輸入職工號[輸入 0 結(jié)束輸入];";
? ? ? ? cin >> workNumber;
? ? ? ? if (workNumber == ZERO) {
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? cout << "輸入名字:";
? ? ? ? cin >> name;
? ? ? ? cout << "輸入性別:";
? ? ? ? cin >> gender;
? ? ? ? cout << "輸入學(xué)歷:";
? ? ? ? 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();
}
?
//查詢 按籍貫或?qū)W歷查詢職工信息
void Worker::lookWorkerInformation(){
? ? string ?addr;
? ? string education;
? ? cout << "輸入要查詢的職工籍貫:";
? ? cin >> addr;
? ? cout << "請輸入要查詢的職工學(xué)歷:";
? ? 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 << "請輸入你要?jiǎng)h除人的姓名:";
? ? 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]; //學(xué)歷
? ? char addr[32]; ? ?//籍貫
? ? char phoneNumber[32]; //電話號碼
? ? int age; ? ? ? ?//年齡
? ? int salary; ?//年齡
?
? ? string line;
? ? ifstream inFile;
? ? inFile.open(NAME);
?
? ? if (!inFile.is_open()) {
? ? ? ? cout << "----職工數(shù)據(jù)庫打開失敗----";
? ? ? ? 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 學(xué)歷:%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 << " ?學(xué)歷:" << worker.education << " ?籍貫:" << worker.addr
? ? ? ? << " ?薪資:" << worker.salary << " ?電話號碼:" << worker.phoneNumber;
? ? return os;
}

5、main函數(shù)的具體實(shí)現(xiàn)

#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】根據(jù)籍貫和學(xué)歷對職工信息進(jìn)行查詢" << endl;
? ? cout << "輸入【2】按薪水對職工信息進(jìn)行排序" << 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();//根據(jù)籍貫和學(xué)歷對職工信息進(jìn)行查詢
? ? ? ? ? ? ? ? cout << "---已完成該功能---" << endl << endl;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case ?TWO:
? ? ? ? ? ? ? ? work.sortWorkerInformation();//按薪水對職工信息進(jìn)行排序
? ? ? ? ? ? ? ? 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;//退出循環(huán)
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? default:
? ? ? ? ? ? ? ? cout << "----無其他功能選項(xiàng)----";
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? } while (quit == false);
? ??
? ? system("pause");
? ? return 0;
}

6、功能3,4,5,6,的實(shí)現(xiàn)都是將文件中的信息加載到vector中,并且使用的都是保存了worker這個(gè)類對象的同一個(gè)容器(假如先實(shí)現(xiàn)工能3,將信息加載到vector中后功能3結(jié)束以后,功能3使用到的職工信息依然在vector這個(gè)容器中,所以使用完一個(gè)函數(shù)后要將vector中的信息清理完全,不然會影響下一個(gè)函數(shù)的使用)。

7、在實(shí)現(xiàn)功能5的時(shí)候會使用到vector容器的重載函數(shù)( worker.erase(worker.begin()+i);)使用完以后返回的是下一個(gè)迭代器指向下一個(gè)對象,所以在使用使用for循環(huán)遍歷容器的時(shí)候因注意for (int i = 0;i < worker.size();i++)  中i++具體放在哪個(gè)位置比較合適。

8、這是本人在編寫程序的時(shí)候發(fā)現(xiàn)的坑如果有什么錯(cuò)誤請批評指正。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言實(shí)現(xiàn)JSON解析器的方法步驟

    C語言實(shí)現(xiàn)JSON解析器的方法步驟

    JSON是一種非常流行的數(shù)據(jù)格式,本文主要介紹了C語言實(shí)現(xiàn)JSON解析器的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • VS2010+Opencv+MFC讀取圖像和視頻顯示在Picture控件

    VS2010+Opencv+MFC讀取圖像和視頻顯示在Picture控件

    這篇文章主要為大家詳細(xì)介紹了VS2010+Opencv+MFC讀取圖像和視頻顯示在Picture控件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 詳解C語言和Python中的線程混用

    詳解C語言和Python中的線程混用

    這篇文章主要介紹了C和Python中的線程混用的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C調(diào)用C++代碼的方法步驟

    C調(diào)用C++代碼的方法步驟

    本文主要介紹了C調(diào)用C++代碼的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 淺析C語言編程中的數(shù)組越界問題

    淺析C語言編程中的數(shù)組越界問題

    這篇文章主要介紹了淺析C語言編程中的數(shù)組越界問題,通過內(nèi)存空間來討論其導(dǎo)致的程序崩潰問題,需要的朋友可以參考下
    2015-11-11
  • 詳解C++作用域與生命周期

    詳解C++作用域與生命周期

    這篇文章主要介紹了C++作用域與生命周期的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • C語言程序設(shè)計(jì)第五版譚浩強(qiáng)課后答案(第二章答案)

    C語言程序設(shè)計(jì)第五版譚浩強(qiáng)課后答案(第二章答案)

    這篇文章主要介紹了C語言程序設(shè)計(jì)第五版譚浩強(qiáng)課后答案(第二章答案),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-04-04
  • c語言常見圖片格式判斷實(shí)例

    c語言常見圖片格式判斷實(shí)例

    這篇文章介紹了c語言常見圖片格式判斷實(shí)例,有需要的朋友可以參考一下
    2013-09-09
  • C++野指針和懸空指針的實(shí)現(xiàn)方法

    C++野指針和懸空指針的實(shí)現(xiàn)方法

    野指針和懸空指針是指針中常見的兩個(gè)概念,本文詳細(xì)的介紹了這兩種的使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C語言實(shí)現(xiàn)圖的遍歷之深度優(yōu)先搜索實(shí)例

    C語言實(shí)現(xiàn)圖的遍歷之深度優(yōu)先搜索實(shí)例

    這篇文章主要介紹了C語言實(shí)現(xiàn)圖的遍歷之深度優(yōu)先搜索實(shí)例,采用不同的方法實(shí)現(xiàn)了深度優(yōu)先搜索算法,有不錯(cuò)的借鑒價(jià)值,需要的朋友可以參考下
    2014-09-09

最新評論

苏尼特右旗| 正安县| 桐梓县| 新巴尔虎右旗| 镇安县| 敦化市| 武汉市| 通州区| 西峡县| 巴楚县| 阳高县| 滨州市| 贵溪市| 泰兴市| 和田县| 新巴尔虎右旗| 瓦房店市| 宣汉县| 宝兴县| 丰原市| 汨罗市| 钟山县| 加查县| 白银市| 四子王旗| 老河口市| 随州市| 郸城县| 侯马市| 玉屏| 攀枝花市| 长武县| 泽普县| 双流县| 饶平县| 彰武县| 黔江区| 德钦县| 阿坝| 调兵山市| 连平县|