日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

职工管理系统

發(fā)布時間:2024/9/30 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 职工管理系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

抽象類:
頭文件tou.h

#pragma once #include<iostream> #include"chouxiang.h" using namespace std; #include<fstream>class workmanager//創(chuàng)建管理類 { public:workmanager(){empnum = 0;emarray = NULL;//初始化人數(shù)和數(shù)組指針}~workmanager(){cout << "destruct "<< endl;}void show_menu();//展示菜單void addemp();int empnum;worker** emarray;//如果想將不同種類的員工放到同一個數(shù)組中//可以將所有員工的指針維護到一個數(shù)組里 //如果想在程序中維護這個不定長度的數(shù)組可以將數(shù)組放在堆區(qū),并用worker**的指針維護void save();//用來保存文件int getnum();//統(tǒng)計人數(shù)void chushihua();//初始化員工void showfunction();//顯示員工功能int isexist(int id);//按照職工編號判斷員工是否存在如果存在則返回員工在數(shù)組中的位置//不存在返回-1void del();//刪除功能 }; //三種職工抽象到一個類中利用多態(tài)管理不同職工類

管理類頭文件chouxiang.h

#pragma once #include<iostream> using namespace std; #include"chouxiang.h" class manager :public worker { public:void showin();manager(string na, int iid, int nn);string getdepname(); };

員工類,經(jīng)理類,老板類頭文件 采用繼承方式(全是一樣的,改名字即可)
employee.h

#pragma once #include<iostream> using namespace std; #include"chouxiang.h" class employee :public worker { public:void showin() ;employee(string na,int iid,int nn );string getdepname(); };

tou.h中的功能實現(xiàn):包括增刪員工,保存到文件中(代碼最多)。

#include"tou.h" #include"chouxiang.h" #include"employee.h" #include"boss.h" #include"manager.h" workmanager::workmanager() {//文件一共三種情況//文件不存在的情況下的初始化ifstream ifs;ifs.open("eme.txt", ios::in);//讀文件if (!ifs.is_open()){cout << "文件不存在!" << endl;empnum = 0;emarray = NULL;//初始化人數(shù)和數(shù)組指針isempty = true;//初始化文件為空標(biāo)志ifs.close();return;}//文件存在且數(shù)據(jù)為空 判斷一個文件存在且沒有內(nèi)容char ch;//文件為空時相當(dāng)于這個文件只有一個文件尾標(biāo)志ifs >> ch;//相當(dāng)于用ch讀走文件結(jié)尾標(biāo)if (ifs.eof())//當(dāng)文件為空eof()函數(shù)返回為真{cout << "文件為空!\n";empnum = 0;emarray = NULL;//初始化人數(shù)和數(shù)組指針isempty = true;//初始化文件為空標(biāo)志 當(dāng)文件為空則trueifs.close();return;}//當(dāng)文件存在且已經(jīng)有數(shù)據(jù)int num = getnum();cout << "人數(shù)為:" << num << endl;empnum = num;//更改職工人數(shù)emarray = new worker*[num];//開辟空間chushihua();//將文件中的數(shù)據(jù)存到數(shù)組中for (int i = 0; i < num; i++){cout << "員工編號" << emarray[i]->id << endl;cout << "name" << emarray[i]->nname << endl;} } void workmanager::show_menu() {cout << "退出" << endl;cout << "顯示" << endl;cout << "刪除" << endl;cout << "修改" << endl;cout << "查找" << endl;} void workmanager::choice(int n) {switch (n){case 1:break;case 2:addemp(); break;case 3:{del();break;}default:break;} } void workmanager::addemp() {cout << "input 新增職工數(shù)量" << endl;int addm;cin >> addm;if (addm > 0){int newsize = empnum + addm;//計算新空間大小worker** newspace = new worker * [newsize];//開辟新空間if(emarray != NULL)//如果原來數(shù)據(jù)不為空for (int i = 0; i < empnum; i++){newspace[i] = emarray[i];}//將原空間下內(nèi)容存放到新空間下//輸入新數(shù)據(jù)for (int i = 0; i < addm; i++){int id1;string name1;int bumen;cout << "1普通職工\n2經(jīng)理\n3老板\n";cout << "請輸入第"<<i+1<<"個員工編號:" << endl;cin >> id1;cout << "請輸入第"<<i+1<<"個姓名:" << endl;cin >> name1;cout << "部門:" << endl;cin >> bumen;worker* wworker = NULL;switch (bumen){case 1:wworker = new employee(name1, id1, 1); break;case 2:wworker = new manager(name1, id1, 2); break;case 3:wworker = new boss(name1, id1, 1); break;default:cout << "無效!\n";break;}newspace[empnum + i] = wworker;}delete[]emarray;//釋放原有空間emarray = newspace;//更改新空間的指向empnum = newsize;//更新新的員工個數(shù)isempty = false;//更新職工情況為不為空cout << "成功添加!" << endl;}elsecout << "輸入錯誤!\n";system("pause");system("cls"); } void workmanager::save() {ofstream ofs;ofs.open("eme.txt", ios::out);for (int i = 0; i < empnum; i++){ofs << emarray[i]->id<<" ";ofs << emarray[i]->nname<<" ";ofs << emarray[i]->bumenbianhao<<" "<<endl;}ofs.close(); } int workmanager::getnum() {ifstream ifs;ifs.open("eme.txt", ios::in);//以讀的方式打開文件int id;string name;int did;//部門編號int number = 0;while (ifs >> id && ifs >>name && ifs >> did)//將一行的數(shù)據(jù)全都讀,讀完一行數(shù)量加一number++;return number;} void workmanager::chushihua() {ifstream ifs;ifs.open("eme.txt", ios::in);int index = 0;int id;string name;int did;worker* wworker = NULL;while (ifs >> id && ifs >> name && ifs >> did){if (did == 1)//普通員工wworker = new employee(name, id, did);if (did == 2)wworker = new manager(name, id, did);if(did == 3)//did為3時說明是老板類wworker = new boss(name, id, did);emarray[index] = wworker;index++;}ifs.close(); } void workmanager::showfunction()//利用多態(tài)調(diào)用程序接口 顯示職工功能 {ifstream ifs;if (isempty)cout << "文件不存在或記錄為空" << endl;else{for (int i = 0; i < empnum; i++)emarray[i]->showin();} } int workmanager::isexist(int id) {int index = -1;for (int i = 0; i < empnum; i++){if (emarray[i]->id == id){index = i;break;}}return index; } void workmanager::del()//刪除功能的實現(xiàn) {if (isempty)cout << "無數(shù)據(jù)或無文件!\n";else {cout << "你要刪除的職工編號:\n";int nn;cin >> nn;int ret = isexist(nn);if (ret == -1)cout << "no exist\n";else{cout << "the number:" << ret << endl;for (int i = ret; i < empnum - 1; i++)//說明ret位置上的元素需要刪除,元素依次移動{emarray[i] = emarray[i + 1];}empnum--;save();//刪除后數(shù)據(jù)同步到文件中cout << "刪除成功!\n";}} }

employee.cpp 功能實現(xiàn)函數(shù)

#include"employee.h" employee::employee(string nn1,int iid, int nn) {nname = nn1;id = iid;bumenbianhao = nn; } void employee::showin() {getdepname();cout <<"id number:"<< id <<"姓名:"<<nname<< "部門:" << bumenbianhao<<" " <<endl; }string employee::getdepname() {return "員工"; }

總結(jié)

以上是生活随笔為你收集整理的职工管理系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。