工资管理系统-C++
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                工资管理系统-C++
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                目錄
- 一、系統內容
- 1、錄入職工信息
- 2、顯示職工信息
- 3、職工工資記錄
- 4、顯示工資信息
- 5、清空當月工資
- 0、退出
 
- 二、代碼實現
- 頭文件
- 預處理
- 各項類(基類,子類)
- 函數聲明
- 主函數入口
- 函數實現
- 1、添加職工信息
- 2、顯示職工信息
- 3、職工工資記錄
- 4、顯示職工工資
- 5、清空職工工資
- 0、退出
 
- 三、全部代碼
一、系統內容
1、錄入職工信息
2、顯示職工信息
3、職工工資記錄
4、顯示工資信息
5、清空當月工資
0、退出
二、代碼實現
頭文件
#include<iostream> #include<string> #include<fstream> #include<stdlib.h> #include<vector>using namespace std;預處理
// 人員信息.txt #define SECRETARIAL_FILE "secretarial.txt" #define TECHNICALMANAGER_FILE "technicalManager.txt" #define TECHNICIAN_FILE "technician.txt" #define SALESMAN_FILE "salesman.txt" #define SALESMANAGER_FILE "salesManager.txt"// 人員工資.txt #define WAGE_SECRETARIAL_FILE "wage_secretarial.txt" #define WAGE_TECHNICALMANAGER_FILE "wage_technicalManager.txt" #define WAGE_TECHNICIAN_FILE "wage_technician.txt" #define WAGE_SALESMAN_FILE "wage_salesman.txt" #define WAGE_SALESMANAGER_FILE "wage_salesManager.txt"各項類(基類,子類)
// 父類 class base { public:// 屬性// 職工號int mNumber;// 姓名string mName;// 月工資float mMonthlySalary;// 年齡int mAge;// 性別--男1女2int mSex; };// 子類1,文秘 class secretarial : public base { public:secretarial() {};secretarial(int number, string name, int age, int sex) {this->mNumber = number;this->mAge = age;this->mName = name;this->mSex = sex;}};// 子類2,技術經理 class technicalManager : public base { public:technicalManager() {};technicalManager(int number, string name, int age, int sex) {this->mNumber = number;this->mAge = age;this->mName = name;this->mSex = sex;} };// 子類3,技術員 class technician : public base { public:technician() {};technician(int number, string name, int age, int sex) {this->mNumber = number;this->mAge = age;this->mName = name;this->mSex = sex;} };// 子類4,銷售員 class salesman : public base { public:salesman() {};salesman(int number, string name, int age, int sex) {this->mNumber = number;this->mAge = age;this->mName = name;this->mSex = sex;} };// 子類5,銷售經理 class salesManager : public base { public:salesManager() {};salesManager(int number, string name, int age, int sex) {this->mNumber = number;this->mAge = age;this->mName = name;this->mSex = sex;} };函數聲明
// 添加職工函數 void addPerson();// 顯示職工信息函數 void showPerson();// 記錄職工工資函數 void recordsWages();// 顯示工資函數 void showWage();// 清空當月工資 void clearWage();// 退出函數 void exitSystem();主函數入口
int main() {// 初始化用戶選擇int select = 0;// 開始大循環while (true) {cout << "\t\t-------------------工資管理系統------------------" << endl;cout << "\t\t| |" << endl;cout << "\t\t| 1 錄入職工信息 |" << endl;cout << "\t\t| |" << endl;cout << "\t\t| 2 顯示職工信息 |" << endl;cout << "\t\t| |" << endl;cout << "\t\t| 3 職工工資記錄 |" << endl;cout << "\t\t| |" << endl;cout << "\t\t| 4 顯示工資信息 |" << endl;cout << "\t\t| |" << endl;cout << "\t\t| 5 清空當月工資 |" << endl;cout << "\t\t| |" << endl;cout << "\t\t| 0 退 出 |" << endl;cout << "\t\t-------------------------------------------------" << endl;// 錄入信息cout << "請輸入您的選擇:" << endl;cin >> select;// 根據選項不同進入對應的接口switch (select) {case 1:addPerson();break;case 2:showPerson();break;case 3:recordsWages();break;case 4:showWage();break;case 5:clearWage();break;case 0:exitSystem();break;}}return 0; }函數實現
1、添加職工信息
// 初始化用戶選擇int personNumber = 0;// 初始化容器vector<secretarial> vse; //文秘容器vector<technicalManager> vtm; //技術經理vector<technician> vt; //技術員vector<salesman> vsa; //銷售員vector<salesManager> vsm; //銷售經理cout << "請輸入要添加的人數:" << endl;cin >> personNumber;// 聲明全部變量// 職工號int number;// 姓名string name;// // 月工資 // float monthlySalary;// 年齡int age;// 性別--男1女2int sex;// 初始化循壞int i = 1;while (i <= personNumber) {// 初始化用戶選擇int choice = 0;cout << "===============================================" << endl;cout << "請輸入職工所在崗位:" << endl;cout << "1、文秘" << endl;cout << "2、技術經理" << endl;cout << "3、技術員" << endl;cout << "4、銷售員" << endl;cout << "5、銷售經理" << endl;cin >> choice;if (choice == 1) { //文秘cout << "請輸入文秘姓名:" << endl;cin >> name;cout << "請輸入文秘的職工編號(100x):" << endl;cin >> number;cout << "請輸入文秘的年齡:" << endl;cin >> age;cout << "請輸入文秘的性別(1男,2女)" << endl;cin >> sex;// 調用有參構造函數secretarial se(number, name, age, sex);// 裝到容器之中vse.push_back(se);} else if (choice == 2) { //技術經理cout << "請輸入技術經理姓名:" << endl;cin >> name;cout << "請輸入技術經理的職工編號(200x):" << endl;cin >> number;cout << "請輸入技術經理的年齡:" << endl;cin >> age;cout << "請輸入技術經理的性別(1男,2女)" << endl;cin >> sex;// 調用有參構造函數technicalManager tm(number, name, age, sex);// 裝到容器之中vtm.push_back(tm);} else if (choice == 3) { //技術員cout << "請輸入技術員姓名:" << endl;cin >> name;cout << "請輸入技術員的職工編號(300x):" << endl;cin >> number;cout << "請輸入技術員的年齡:" << endl;cin >> age;cout << "請輸入技術員的性別(1男,2女)" << endl;cin >> sex;// 調用有參構造函數technician tc(number, name, age, sex);// 裝到容器之中vt.push_back(tc);} else if (choice == 4) { //銷售員cout << "請輸入銷售員姓名:" << endl;cin >> name;cout << "請輸入銷售員的職工編號(400x):" << endl;cin >> number;cout << "請輸入銷售員的年齡:" << endl;cin >> age;cout << "請輸入銷售員的性別(1男,2女)" << endl;cin >> sex;// 調用有參構造函數salesman sa(number, name, age, sex);// 裝到容器之中vsa.push_back(sa);} else if (choice == 5) { //銷售經理cout << "請輸入銷售經理姓名:" << endl;cin >> name;cout << "請輸入銷售經理的職工編號(500x):" << endl;cin >> number;cout << "請輸入銷售經理的年齡:" << endl;cin >> age;cout << "請輸入銷售經理的性別(1男,2女)" << endl;cin >> sex;// 調用有參構造函數salesManager sm(number, name, age, sex);// 裝到容器之中vsm.push_back(sm);}// 循環+1i++;}// 存到人員信息文件之中ofstream ofs;ofs.open(SECRETARIAL_FILE, ios::app); // 追加for (vector<secretarial>::iterator it1 = vse.begin(); it1 != vse.end(); it1++) {ofs << it1->mNumber << " "<< it1->mName << " "<< it1->mAge << " "<< it1->mSex << endl;}ofs.close();ofs.open(TECHNICALMANAGER_FILE, ios::app);for (vector<technicalManager>::iterator it2 = vtm.begin(); it2 != vtm.end(); it2++) {ofs << it2->mNumber << " "<< it2->mName << " "<< it2->mAge << " "<< it2->mSex << endl;}ofs.close();ofs.open(TECHNICIAN_FILE, ios::app);for (vector<technician>::iterator it3 = vt.begin(); it3 != vt.end(); it3++) {ofs << it3->mNumber << " "<< it3->mName << " "<< it3->mAge << " "<< it3->mSex << endl;}ofs.close();ofs.open(SALESMAN_FILE, ios::app);for (vector<salesman>::iterator it4 = vsa.begin(); it4 != vsa.end(); it4++) {ofs << it4->mNumber << " "<< it4->mName << " "<< it4->mAge << " "<< it4->mSex << endl;}ofs.close();ofs.open(SALESMANAGER_FILE, ios::app);for (vector<salesManager>::iterator it5 = vsm.begin(); it5 != vsm.end(); it5++) {ofs << it5->mNumber << " "<< it5->mName << " "<< it5->mAge << " "<< it5->mSex << endl;}ofs.close();// 人員信息存入完成cout << "人員信息存入完成!" << endl;return;}2、顯示職工信息
// 打開文件// 讀文件// 初始化容器vector<secretarial> vse; //文秘容器vector<technicalManager> vtm; //技術經理vector<technician> vt; //技術員vector<salesman> vsa; //銷售員vector<salesManager> vsm; //銷售經理// 聲明全部變量// 職工號int number;// 姓名string name;// // 月工資 // float monthlySalary;// 年齡int age;// 性別--男1女2int sex;ifstream ifs;ifs.open(SECRETARIAL_FILE, ios::in);if (ifs.is_open()) {cout << "-----------------------------------------------" << endl;cout << "文秘信息如下:" << endl;while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 三目運算符判斷男女string sexName;sex == 1 ? sexName = "男" : sexName = "女";cout << "編號:" << number << " "<< "姓名:" << name << " "<< "年齡:" << age << " "<< "性別:" << sexName << endl;ifs.close();}} else {cout << "文秘文件打開失敗" << endl;}ifs.open(TECHNICALMANAGER_FILE, ios::in);if (ifs.is_open()) {cout << "-----------------------------------------------" << endl;cout << "技術經理信息如下:" << endl;while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 三目運算符判斷男女string sexName;sex == 1 ? sexName = "男" : sexName = "女";cout << "編號:" << number << " "<< "姓名:" << name << " "<< "年齡:" << age << " "<< "性別:" << sexName << endl;}ifs.close();} else {cout << "技術經理文件打開失敗" << endl;}ifs.open(TECHNICIAN_FILE, ios::in);if (ifs.is_open()) {cout << "-----------------------------------------------" << endl;cout << "技術員信息如下:" << endl;while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 三目運算符判斷男女string sexName;sex == 1 ? sexName = "男" : sexName = "女";cout << "編號:" << number << " "<< "姓名:" << name << " "<< "年齡:" << age << " "<< "性別:" << sexName << endl;}ifs.close();} else {cout << "技術員文件打開失敗" << endl;}ifs.open(SALESMAN_FILE, ios::in);if (ifs.is_open()) {cout << "-----------------------------------------------" << endl;cout << "銷售員信息如下:" << endl;while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 三目運算符判斷男女string sexName;sex == 1 ? sexName = "男" : sexName = "女";cout << "編號:" << number << " "<< "姓名:" << name << " "<< "年齡:" << age << " "<< "性別:" << sexName << endl;}ifs.close();} else {cout << "銷售員文件打開失敗" << endl;}ifs.open(SALESMANAGER_FILE, ios::in);if (ifs.is_open()) {cout << "-----------------------------------------------" << endl;cout << "銷售經理信息如下:" << endl;while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 三目運算符判斷男女string sexName;sex == 1 ? sexName = "男" : sexName = "女";cout << "編號:" << number << " "<< "姓名:" << name << " "<< "年齡:" << age << " "<< "性別:" << sexName << endl;}ifs.close();} else {cout << "銷售經理文件打開失敗" << endl;}// 文件展示完畢system("pause");3、職工工資記錄
void recordsWages() {// 打開文件// 讀文件// 初始化容器vector<secretarial> vse; //文秘容器vector<technicalManager> vtm; //技術經理vector<technician> vt; //技術員vector<salesman> vsa; //銷售員vector<salesManager> vsm; //銷售經理// 聲明全部變量// 職工號int number;// 姓名string name;// // 月工資 // float monthlySalary;// 年齡int age;// 性別--男1女2int sex;ifstream ifs;ifs.open(SECRETARIAL_FILE, ios::in);if (ifs.is_open()) {while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 類secretarial se(number, name, age, sex);// 裝到容器之中vse.push_back(se);}ifs.close();} else {cout << "文秘文件打開失敗" << endl;}ifs.open(TECHNICALMANAGER_FILE, ios::in);if (ifs.is_open()) {while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 類technicalManager tm(number, name, age, sex);// 裝到容器之中vtm.push_back(tm);}ifs.close();} else {cout << "技術經理文件打開失敗" << endl;}ifs.open(TECHNICIAN_FILE, ios::in);if (ifs.is_open()) {while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 類technician tc(number, name, age, sex);// 裝到容器之中vt.push_back(tc);}ifs.close();} else {cout << "技術員文件打開失敗" << endl;}ifs.open(SALESMAN_FILE, ios::in);if (ifs.is_open()) {while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 類salesman sa(number, name, age, sex);// 裝到容器之中vsa.push_back(sa);}ifs.close();} else {cout << "銷售員文件打開失敗" << endl;}ifs.open(SALESMANAGER_FILE, ios::in);if (ifs.is_open()) {while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 類salesManager sm(number, name, age, sex);// 裝到容器之中vsm.push_back(sm);}ifs.close();} else {cout << "銷售經理文件打開失敗" << endl;}// vector<secretarial> vse; //文秘容器 // vector<technicalManager> vtm; //技術經理 // vector<technician> vt; //技術員 // vector<salesman> vsa; //銷售員 // vector<salesManager> vsm; //銷售經理//#define WAGE_SECRETARIAL_FILE "wage_Secretarial.txt" //#define WAGE_TECHNICALMANAGER_FILE "wage_technicalManager.txt" //#define WAGE_TECHNICIAN_FILE "wage_technician.txt" //#define WAGE_SALESMAN_FILE "wage_salesman.txt" //#define WAGE_SALESMANAGER_FILE "wage_salesManager.txt"ofstream ofs;ofs.open(WAGE_SECRETARIAL_FILE, ios::app);for (vector<secretarial>::iterator it = vse.begin(); it != vse.end(); it++) {double bonus, wage;cout << "請輸入編號為" << it->mNumber << ",姓名為" << it->mName << "文秘的當月獎金:" << endl;cin >> bonus;wage = (bonus + 4000);// 裝到文件之中ofs << it->mName << " "<< it->mNumber << " "<< bonus << " "<< wage << endl;}ofs.close();ofs.open(WAGE_TECHNICALMANAGER_FILE, ios::app);for (vector<technicalManager>::iterator it = vtm.begin(); it != vtm.end(); it++) {double wage;int level;cout << "請輸入編號為" << it->mNumber << ",姓名為" << it->mName << "技術經理的業績等級(1~10):" << endl;cin >> level;float levels = level * 1000;wage = levels + 5000;// 裝到文件之中ofs << it->mName << " "<< it->mNumber << " "<< level << " "<< wage << endl;}ofs.close();ofs.open(WAGE_TECHNICIAN_FILE, ios::app);for (vector<technician>::iterator it = vt.begin(); it != vt.end(); it++) {double time, wage;cout << "請輸入編號為" << it->mNumber << ",姓名為" << it->mName << "技術員的工作時長(小時):" << endl;cin >> time;wage = time * 40;// 裝到文件之中ofs << it->mName << " "<< it->mNumber << " "<< time << " "<< wage << endl;}ofs.close();ofs.open(WAGE_SALESMAN_FILE, ios::app);for (vector<salesman>::iterator it = vsa.begin(); it != vsa.end(); it++) {double wage, sales;cout << "請輸入編號為" << it->mNumber << ",姓名為" << it->mName << "銷售員的銷售額:" << endl;cin >> sales;wage = sales * 0.05;// 裝到文件之中ofs << it->mName << " "<< it->mNumber << " "<< sales << " "<< wage << endl;}ofs.close();ofs.open(WAGE_SALESMANAGER_FILE, ios::app);for (vector<salesManager>::iterator it = vsm.begin(); it != vsm.end(); it++) {long wage, salesNum;cout << "請輸入編號為" << it->mNumber << ",姓名為" << it->mName << "銷售經理的總銷售金額:" << endl;cin >> salesNum;wage = salesNum * 0.003;ofs << it->mName << " "<< it->mNumber << " "<< salesNum << " "<< wage << endl;}ofs.close();// 記錄完畢cout << "工資情況記錄完畢" << endl;system("pause");}4、顯示職工工資
void showWage() {vector<secretarial> vse; //文秘容器vector<technicalManager> vtm; //技術經理vector<technician> vt; //技術員vector<salesman> vsa; //銷售員vector<salesManager> vsm; //銷售經理// 聲明全部變量// 職工號int number;// 姓名string name;ifstream ifs;ifs.open(WAGE_SECRETARIAL_FILE, ios::in);if (ifs.is_open()) {float bonus, wage;cout << "---------------------------------------------------------------------------" << endl;cout << "文秘工資如下:" << endl;while (ifs >> name && ifs >> number && ifs >> bonus && ifs >> wage) {cout << "\t" << "編號:" << number << " "<< "姓名:" << name << " "<< "獎金:" << bonus << " "<< "工資:" << wage << endl;}} else {cout << "文秘工資文件打開失敗" << endl;}ifs.close();ifs.open(WAGE_TECHNICALMANAGER_FILE, ios::in);if (ifs.is_open()) {cout << "---------------------------------------------------------------------------" << endl;cout << "技術經理工資如下:" << endl;double wage;int level;while (ifs >> name && ifs >> number && ifs >> level && ifs >> wage) {cout << "\t" << "編號:" << number << " "<< "姓名:" << name << " "<< "技術等級:" << level << " "<< "工資:" << wage << endl;}} else {cout << "技術經理文件打開失敗" << endl;}ifs.close();ifs.open(WAGE_TECHNICIAN_FILE, ios::in);if (ifs.is_open()) {double time, wage;cout << "---------------------------------------------------------------------------" << endl;cout << "技術員工資如下:" << endl;while (ifs >> name && ifs >> number && ifs >> time && ifs >> wage) {cout << "\t" << "編號:" << number << " "<< "姓名:" << name << " "<< "工作小時:" << time << " "<< "工資:" << wage << endl;}} else {cout << "技術員工資文件打開失敗" << endl;}ifs.close();ifs.open(WAGE_SALESMAN_FILE, ios::in);if (ifs.is_open()) {double wage, sales;cout << "---------------------------------------------------------------------------" << endl;cout << "銷售員工資如下:" << endl;while (ifs >> name && ifs >> number && ifs >> sales && ifs >> wage) {cout << "\t" << "編號:" << number << " "<< "姓名:" << name << " "<< "銷售額:" << sales << " "<< "工資:" << wage << endl;}} else {cout << "銷售員工資文件打開失敗" << endl;}ifs.close();ifs.open(WAGE_SALESMANAGER_FILE, ios::in);if (ifs.is_open()) {long wage, salesNum;cout << "---------------------------------------------------------------------------" << endl;cout << "銷售經理工資如下:" << endl;while (ifs >> name && ifs >> number && ifs >> salesNum && ifs >> wage) {cout << "\t" << "編號:" << number << " "<< "姓名:" << name << " "<< "銷售總額:" << salesNum << " "<< "工資:" << wage << endl;}} else {cout << "銷售經理工資文件打開失敗" << endl;}ifs.close();// 記錄完畢cout << "工資顯示完畢" <<endl;system("pause");}5、清空職工工資
void clearWage(){cout << "確認是否清空當月工資?(y/n)" << endl;// 初始化用戶選擇char choice;while (true) {// 錄入用戶選擇cin >> choice;if (choice == 'y' || choice == 'Y') {//#define WAGE_SECRETARIAL_FILE "wage_Secretarial.txt"//#define WAGE_TECHNICALMANAGER_FILE "wage_technicalManager.txt"//#define WAGE_TECHNICIAN_FILE "wage_technician.txt"//#define WAGE_SALESMAN_FILE "wage_salesman.txt"//#define WAGE_SALESMANAGER_FILE "wage_salesManager.txt"//清空ofstream ofs1(WAGE_SECRETARIAL_FILE, ios_base::out);ofstream ofs2(WAGE_TECHNICALMANAGER_FILE, ios_base::out);ofstream ofs3(WAGE_TECHNICIAN_FILE, ios_base::out);ofstream ofs4(WAGE_SALESMAN_FILE, ios_base::out);ofstream ofs5(WAGE_SALESMANAGER_FILE, ios_base::out);cout<<"文件已全部清空!"<<endl;system("pause");return;} else if (choice == 'n' || choice == 'N') {return;} else {cout << "輸入有誤,請重新輸入!" << endl;}} }0、退出
void exitSystem() {cout << "是否退出程序?(y/n)" << endl;// 初始化用戶選擇char choice;while (true) {// 錄入用戶選擇cin >> choice;if (choice == 'y' || choice == 'Y') {cout << "歡迎您的使用!再見" << endl;exit(0);} else if (choice == 'n' || choice == 'N') {return;} else {cout << "輸入有誤,請重新輸入!" << endl;}}}三、全部代碼
#include<iostream> #include<string> #include<fstream> #include<stdlib.h> #include<vector>using namespace std;// 人員信息.txt #define SECRETARIAL_FILE "secretarial.txt" #define TECHNICALMANAGER_FILE "technicalManager.txt" #define TECHNICIAN_FILE "technician.txt" #define SALESMAN_FILE "salesman.txt" #define SALESMANAGER_FILE "salesManager.txt"// 人員工資.txt #define WAGE_SECRETARIAL_FILE "wage_secretarial.txt" #define WAGE_TECHNICALMANAGER_FILE "wage_technicalManager.txt" #define WAGE_TECHNICIAN_FILE "wage_technician.txt" #define WAGE_SALESMAN_FILE "wage_salesman.txt" #define WAGE_SALESMANAGER_FILE "wage_salesManager.txt"// 父類 class base { public:// 屬性// 職工號int mNumber;// 姓名string mName;// 月工資float mMonthlySalary;// 年齡int mAge;// 性別--男1女2int mSex; };// 子類1,文秘 class secretarial : public base { public:secretarial() {};secretarial(int number, string name, int age, int sex) {this->mNumber = number;this->mAge = age;this->mName = name;this->mSex = sex;}};// 子類2,技術經理 class technicalManager : public base { public:technicalManager() {};technicalManager(int number, string name, int age, int sex) {this->mNumber = number;this->mAge = age;this->mName = name;this->mSex = sex;} };// 子類3,技術員 class technician : public base { public:technician() {};technician(int number, string name, int age, int sex) {this->mNumber = number;this->mAge = age;this->mName = name;this->mSex = sex;} };// 子類4,銷售員 class salesman : public base { public:salesman() {};salesman(int number, string name, int age, int sex) {this->mNumber = number;this->mAge = age;this->mName = name;this->mSex = sex;} };// 子類5,銷售經理 class salesManager : public base { public:salesManager() {};salesManager(int number, string name, int age, int sex) {this->mNumber = number;this->mAge = age;this->mName = name;this->mSex = sex;} };// 添加職工函數 void addPerson();// 顯示職工信息函數 void showPerson();// 記錄職工工資函數 void recordsWages();// 顯示工資函數 void showWage();// 清空當月工資 void clearWage();// 退出函數 void exitSystem();int main() {// 初始化用戶選擇int select = 0;// 開始大循環while (true) {cout << "\t\t-------------------工資管理系統------------------" << endl;cout << "\t\t| |" << endl;cout << "\t\t| 1 錄入職工信息 |" << endl;cout << "\t\t| |" << endl;cout << "\t\t| 2 顯示職工信息 |" << endl;cout << "\t\t| |" << endl;cout << "\t\t| 3 職工工資記錄 |" << endl;cout << "\t\t| |" << endl;cout << "\t\t| 4 顯示工資信息 |" << endl;cout << "\t\t| |" << endl;cout << "\t\t| 5 清空當月工資 |" << endl;cout << "\t\t| |" << endl;cout << "\t\t| 0 退 出 |" << endl;cout << "\t\t-------------------------------------------------" << endl;// 錄入信息cout << "請輸入您的選擇:" << endl;cin >> select;// 根據選項不同進入對應的接口switch (select) {case 1:addPerson();break;case 2:showPerson();break;case 3:recordsWages();break;case 4:showWage();break;case 5:clearWage();break;case 0:exitSystem();break;}}return 0; }// 添加職工函數 void addPerson() {// 初始化用戶選擇int personNumber = 0;// 初始化容器vector<secretarial> vse; //文秘容器vector<technicalManager> vtm; //技術經理vector<technician> vt; //技術員vector<salesman> vsa; //銷售員vector<salesManager> vsm; //銷售經理cout << "請輸入要添加的人數:" << endl;cin >> personNumber;// 聲明全部變量// 職工號int number;// 姓名string name;// // 月工資 // float monthlySalary;// 年齡int age;// 性別--男1女2int sex;// 初始化循壞int i = 1;while (i <= personNumber) {// 初始化用戶選擇int choice = 0;cout << "===============================================" << endl;cout << "請輸入職工所在崗位:" << endl;cout << "1、文秘" << endl;cout << "2、技術經理" << endl;cout << "3、技術員" << endl;cout << "4、銷售員" << endl;cout << "5、銷售經理" << endl;cin >> choice;if (choice == 1) { //文秘cout << "請輸入文秘姓名:" << endl;cin >> name;cout << "請輸入文秘的職工編號(100x):" << endl;cin >> number;cout << "請輸入文秘的年齡:" << endl;cin >> age;cout << "請輸入文秘的性別(1男,2女)" << endl;cin >> sex;// 調用有參構造函數secretarial se(number, name, age, sex);// 裝到容器之中vse.push_back(se);} else if (choice == 2) { //技術經理cout << "請輸入技術經理姓名:" << endl;cin >> name;cout << "請輸入技術經理的職工編號(200x):" << endl;cin >> number;cout << "請輸入技術經理的年齡:" << endl;cin >> age;cout << "請輸入技術經理的性別(1男,2女)" << endl;cin >> sex;// 調用有參構造函數technicalManager tm(number, name, age, sex);// 裝到容器之中vtm.push_back(tm);} else if (choice == 3) { //技術員cout << "請輸入技術員姓名:" << endl;cin >> name;cout << "請輸入技術員的職工編號(300x):" << endl;cin >> number;cout << "請輸入技術員的年齡:" << endl;cin >> age;cout << "請輸入技術員的性別(1男,2女)" << endl;cin >> sex;// 調用有參構造函數technician tc(number, name, age, sex);// 裝到容器之中vt.push_back(tc);} else if (choice == 4) { //銷售員cout << "請輸入銷售員姓名:" << endl;cin >> name;cout << "請輸入銷售員的職工編號(400x):" << endl;cin >> number;cout << "請輸入銷售員的年齡:" << endl;cin >> age;cout << "請輸入銷售員的性別(1男,2女)" << endl;cin >> sex;// 調用有參構造函數salesman sa(number, name, age, sex);// 裝到容器之中vsa.push_back(sa);} else if (choice == 5) { //銷售經理cout << "請輸入銷售經理姓名:" << endl;cin >> name;cout << "請輸入銷售經理的職工編號(500x):" << endl;cin >> number;cout << "請輸入銷售經理的年齡:" << endl;cin >> age;cout << "請輸入銷售經理的性別(1男,2女)" << endl;cin >> sex;// 調用有參構造函數salesManager sm(number, name, age, sex);// 裝到容器之中vsm.push_back(sm);}// 循環+1i++;}// 存到人員信息文件之中ofstream ofs;ofs.open(SECRETARIAL_FILE, ios::app); // 追加for (vector<secretarial>::iterator it1 = vse.begin(); it1 != vse.end(); it1++) {ofs << it1->mNumber << " "<< it1->mName << " "<< it1->mAge << " "<< it1->mSex << endl;}ofs.close();ofs.open(TECHNICALMANAGER_FILE, ios::app);for (vector<technicalManager>::iterator it2 = vtm.begin(); it2 != vtm.end(); it2++) {ofs << it2->mNumber << " "<< it2->mName << " "<< it2->mAge << " "<< it2->mSex << endl;}ofs.close();ofs.open(TECHNICIAN_FILE, ios::app);for (vector<technician>::iterator it3 = vt.begin(); it3 != vt.end(); it3++) {ofs << it3->mNumber << " "<< it3->mName << " "<< it3->mAge << " "<< it3->mSex << endl;}ofs.close();ofs.open(SALESMAN_FILE, ios::app);for (vector<salesman>::iterator it4 = vsa.begin(); it4 != vsa.end(); it4++) {ofs << it4->mNumber << " "<< it4->mName << " "<< it4->mAge << " "<< it4->mSex << endl;}ofs.close();ofs.open(SALESMANAGER_FILE, ios::app);for (vector<salesManager>::iterator it5 = vsm.begin(); it5 != vsm.end(); it5++) {ofs << it5->mNumber << " "<< it5->mName << " "<< it5->mAge << " "<< it5->mSex << endl;}ofs.close();// 人員信息存入完成cout << "人員信息存入完成!" << endl;return;}// 顯示職工信息函數 void showPerson() {// 打開文件// 讀文件// 初始化容器vector<secretarial> vse; //文秘容器vector<technicalManager> vtm; //技術經理vector<technician> vt; //技術員vector<salesman> vsa; //銷售員vector<salesManager> vsm; //銷售經理// 聲明全部變量// 職工號int number;// 姓名string name;// // 月工資 // float monthlySalary;// 年齡int age;// 性別--男1女2int sex;ifstream ifs;ifs.open(SECRETARIAL_FILE, ios::in);if (ifs.is_open()) {cout << "-----------------------------------------------" << endl;cout << "文秘信息如下:" << endl;while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 三目運算符判斷男女string sexName;sex == 1 ? sexName = "男" : sexName = "女";cout << "編號:" << number << " "<< "姓名:" << name << " "<< "年齡:" << age << " "<< "性別:" << sexName << endl;ifs.close();}} else {cout << "文秘文件打開失敗" << endl;}ifs.open(TECHNICALMANAGER_FILE, ios::in);if (ifs.is_open()) {cout << "-----------------------------------------------" << endl;cout << "技術經理信息如下:" << endl;while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 三目運算符判斷男女string sexName;sex == 1 ? sexName = "男" : sexName = "女";cout << "編號:" << number << " "<< "姓名:" << name << " "<< "年齡:" << age << " "<< "性別:" << sexName << endl;}ifs.close();} else {cout << "技術經理文件打開失敗" << endl;}ifs.open(TECHNICIAN_FILE, ios::in);if (ifs.is_open()) {cout << "-----------------------------------------------" << endl;cout << "技術員信息如下:" << endl;while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 三目運算符判斷男女string sexName;sex == 1 ? sexName = "男" : sexName = "女";cout << "編號:" << number << " "<< "姓名:" << name << " "<< "年齡:" << age << " "<< "性別:" << sexName << endl;}ifs.close();} else {cout << "技術員文件打開失敗" << endl;}ifs.open(SALESMAN_FILE, ios::in);if (ifs.is_open()) {cout << "-----------------------------------------------" << endl;cout << "銷售員信息如下:" << endl;while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 三目運算符判斷男女string sexName;sex == 1 ? sexName = "男" : sexName = "女";cout << "編號:" << number << " "<< "姓名:" << name << " "<< "年齡:" << age << " "<< "性別:" << sexName << endl;}ifs.close();} else {cout << "銷售員文件打開失敗" << endl;}ifs.open(SALESMANAGER_FILE, ios::in);if (ifs.is_open()) {cout << "-----------------------------------------------" << endl;cout << "銷售經理信息如下:" << endl;while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 三目運算符判斷男女string sexName;sex == 1 ? sexName = "男" : sexName = "女";cout << "編號:" << number << " "<< "姓名:" << name << " "<< "年齡:" << age << " "<< "性別:" << sexName << endl;}ifs.close();} else {cout << "銷售經理文件打開失敗" << endl;}// 文件展示完畢system("pause");}// 記錄職工工資函數 void recordsWages() {// 打開文件// 讀文件// 初始化容器vector<secretarial> vse; //文秘容器vector<technicalManager> vtm; //技術經理vector<technician> vt; //技術員vector<salesman> vsa; //銷售員vector<salesManager> vsm; //銷售經理// 聲明全部變量// 職工號int number;// 姓名string name;// // 月工資 // float monthlySalary;// 年齡int age;// 性別--男1女2int sex;ifstream ifs;ifs.open(SECRETARIAL_FILE, ios::in);if (ifs.is_open()) {while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 類secretarial se(number, name, age, sex);// 裝到容器之中vse.push_back(se);}ifs.close();} else {cout << "文秘文件打開失敗" << endl;}ifs.open(TECHNICALMANAGER_FILE, ios::in);if (ifs.is_open()) {while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 類technicalManager tm(number, name, age, sex);// 裝到容器之中vtm.push_back(tm);}ifs.close();} else {cout << "技術經理文件打開失敗" << endl;}ifs.open(TECHNICIAN_FILE, ios::in);if (ifs.is_open()) {while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 類technician tc(number, name, age, sex);// 裝到容器之中vt.push_back(tc);}ifs.close();} else {cout << "技術員文件打開失敗" << endl;}ifs.open(SALESMAN_FILE, ios::in);if (ifs.is_open()) {while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 類salesman sa(number, name, age, sex);// 裝到容器之中vsa.push_back(sa);}ifs.close();} else {cout << "銷售員文件打開失敗" << endl;}ifs.open(SALESMANAGER_FILE, ios::in);if (ifs.is_open()) {while (ifs >> number && ifs >> name && ifs >> age && ifs >> sex) {// 類salesManager sm(number, name, age, sex);// 裝到容器之中vsm.push_back(sm);}ifs.close();} else {cout << "銷售經理文件打開失敗" << endl;}// vector<secretarial> vse; //文秘容器 // vector<technicalManager> vtm; //技術經理 // vector<technician> vt; //技術員 // vector<salesman> vsa; //銷售員 // vector<salesManager> vsm; //銷售經理//#define WAGE_SECRETARIAL_FILE "wage_Secretarial.txt" //#define WAGE_TECHNICALMANAGER_FILE "wage_technicalManager.txt" //#define WAGE_TECHNICIAN_FILE "wage_technician.txt" //#define WAGE_SALESMAN_FILE "wage_salesman.txt" //#define WAGE_SALESMANAGER_FILE "wage_salesManager.txt"ofstream ofs;ofs.open(WAGE_SECRETARIAL_FILE, ios::app);for (vector<secretarial>::iterator it = vse.begin(); it != vse.end(); it++) {double bonus, wage;cout << "請輸入編號為" << it->mNumber << ",姓名為" << it->mName << "文秘的當月獎金:" << endl;cin >> bonus;wage = (bonus + 4000);// 裝到文件之中ofs << it->mName << " "<< it->mNumber << " "<< bonus << " "<< wage << endl;}ofs.close();ofs.open(WAGE_TECHNICALMANAGER_FILE, ios::app);for (vector<technicalManager>::iterator it = vtm.begin(); it != vtm.end(); it++) {double wage;int level;cout << "請輸入編號為" << it->mNumber << ",姓名為" << it->mName << "技術經理的業績等級(1~10):" << endl;cin >> level;float levels = level * 1000;wage = levels + 5000;// 裝到文件之中ofs << it->mName << " "<< it->mNumber << " "<< level << " "<< wage << endl;}ofs.close();ofs.open(WAGE_TECHNICIAN_FILE, ios::app);for (vector<technician>::iterator it = vt.begin(); it != vt.end(); it++) {double time, wage;cout << "請輸入編號為" << it->mNumber << ",姓名為" << it->mName << "技術員的工作時長(小時):" << endl;cin >> time;wage = time * 40;// 裝到文件之中ofs << it->mName << " "<< it->mNumber << " "<< time << " "<< wage << endl;}ofs.close();ofs.open(WAGE_SALESMAN_FILE, ios::app);for (vector<salesman>::iterator it = vsa.begin(); it != vsa.end(); it++) {double wage, sales;cout << "請輸入編號為" << it->mNumber << ",姓名為" << it->mName << "銷售員的銷售額:" << endl;cin >> sales;wage = sales * 0.05;// 裝到文件之中ofs << it->mName << " "<< it->mNumber << " "<< sales << " "<< wage << endl;}ofs.close();ofs.open(WAGE_SALESMANAGER_FILE, ios::app);for (vector<salesManager>::iterator it = vsm.begin(); it != vsm.end(); it++) {long wage, salesNum;cout << "請輸入編號為" << it->mNumber << ",姓名為" << it->mName << "銷售經理的總銷售金額:" << endl;cin >> salesNum;wage = salesNum * 0.003;ofs << it->mName << " "<< it->mNumber << " "<< salesNum << " "<< wage << endl;}ofs.close();// 記錄完畢cout << "工資情況記錄完畢" << endl;system("pause");}// 顯示工資函數 void showWage() {vector<secretarial> vse; //文秘容器vector<technicalManager> vtm; //技術經理vector<technician> vt; //技術員vector<salesman> vsa; //銷售員vector<salesManager> vsm; //銷售經理// 聲明全部變量// 職工號int number;// 姓名string name;ifstream ifs;ifs.open(WAGE_SECRETARIAL_FILE, ios::in);if (ifs.is_open()) {float bonus, wage;cout << "---------------------------------------------------------------------------" << endl;cout << "文秘工資如下:" << endl;while (ifs >> name && ifs >> number && ifs >> bonus && ifs >> wage) {cout << "\t" << "編號:" << number << " "<< "姓名:" << name << " "<< "獎金:" << bonus << " "<< "工資:" << wage << endl;}} else {cout << "文秘工資文件打開失敗" << endl;}ifs.close();ifs.open(WAGE_TECHNICALMANAGER_FILE, ios::in);if (ifs.is_open()) {cout << "---------------------------------------------------------------------------" << endl;cout << "技術經理工資如下:" << endl;double wage;int level;while (ifs >> name && ifs >> number && ifs >> level && ifs >> wage) {cout << "\t" << "編號:" << number << " "<< "姓名:" << name << " "<< "技術等級:" << level << " "<< "工資:" << wage << endl;}} else {cout << "技術經理文件打開失敗" << endl;}ifs.close();ifs.open(WAGE_TECHNICIAN_FILE, ios::in);if (ifs.is_open()) {double time, wage;cout << "---------------------------------------------------------------------------" << endl;cout << "技術員工資如下:" << endl;while (ifs >> name && ifs >> number && ifs >> time && ifs >> wage) {cout << "\t" << "編號:" << number << " "<< "姓名:" << name << " "<< "工作小時:" << time << " "<< "工資:" << wage << endl;}} else {cout << "技術員工資文件打開失敗" << endl;}ifs.close();ifs.open(WAGE_SALESMAN_FILE, ios::in);if (ifs.is_open()) {double wage, sales;cout << "---------------------------------------------------------------------------" << endl;cout << "銷售員工資如下:" << endl;while (ifs >> name && ifs >> number && ifs >> sales && ifs >> wage) {cout << "\t" << "編號:" << number << " "<< "姓名:" << name << " "<< "銷售額:" << sales << " "<< "工資:" << wage << endl;}} else {cout << "銷售員工資文件打開失敗" << endl;}ifs.close();ifs.open(WAGE_SALESMANAGER_FILE, ios::in);if (ifs.is_open()) {long wage, salesNum;cout << "---------------------------------------------------------------------------" << endl;cout << "銷售經理工資如下:" << endl;while (ifs >> name && ifs >> number && ifs >> salesNum && ifs >> wage) {cout << "\t" << "編號:" << number << " "<< "姓名:" << name << " "<< "銷售總額:" << salesNum << " "<< "工資:" << wage << endl;}} else {cout << "銷售經理工資文件打開失敗" << endl;}ifs.close();// 記錄完畢cout << "工資顯示完畢" <<endl;system("pause");}// 清空當月工資 void clearWage(){cout << "確認是否清空當月工資?(y/n)" << endl;// 初始化用戶選擇char choice;while (true) {// 錄入用戶選擇cin >> choice;if (choice == 'y' || choice == 'Y') {//#define WAGE_SECRETARIAL_FILE "wage_Secretarial.txt"//#define WAGE_TECHNICALMANAGER_FILE "wage_technicalManager.txt"//#define WAGE_TECHNICIAN_FILE "wage_technician.txt"//#define WAGE_SALESMAN_FILE "wage_salesman.txt"//#define WAGE_SALESMANAGER_FILE "wage_salesManager.txt"//清空ofstream ofs1(WAGE_SECRETARIAL_FILE, ios_base::out);ofstream ofs2(WAGE_TECHNICALMANAGER_FILE, ios_base::out);ofstream ofs3(WAGE_TECHNICIAN_FILE, ios_base::out);ofstream ofs4(WAGE_SALESMAN_FILE, ios_base::out);ofstream ofs5(WAGE_SALESMANAGER_FILE, ios_base::out);cout<<"文件已全部清空!"<<endl;system("pause");return;} else if (choice == 'n' || choice == 'N') {return;} else {cout << "輸入有誤,請重新輸入!" << endl;}} }// 退出函數 void exitSystem() {cout << "是否退出程序?(y/n)" << endl;// 初始化用戶選擇char choice;while (true) {// 錄入用戶選擇cin >> choice;if (choice == 'y' || choice == 'Y') {cout << "歡迎您的使用!再見" << endl;exit(0);} else if (choice == 'n' || choice == 'N') {return;} else {cout << "輸入有誤,請重新輸入!" << endl;}}}總結
以上是生活随笔為你收集整理的工资管理系统-C++的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 淘宝牛P工程师
- 下一篇: 小米电视2测评:蓝图远大,力不从心
