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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++公司人事管理系统

發(fā)布時間:2023/12/29 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++公司人事管理系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

(1)問題描述
一個小公司包含四類人員:經(jīng)理,技術(shù)人員,銷售人員和銷售經(jīng)理,各類 人員的工資計算方法如下:
經(jīng)理:固定月薪(8000);技術(shù)人員:月薪按技 術(shù)等級(1~8)( 1600+等級*300);
銷售人員:按提成(4%*銷售額);
銷售經(jīng)理:底薪+提成(1500+0.2%*總銷售額);
設計一個管理程序,實現(xiàn)對各 類人員的信息輸入,修改和顯示。
2)基本要求
(1)設計一個 Person 類:編號(自動產(chǎn)生),姓名,崗位,工資(可 設為 protected),成員函數(shù)可設一個計算月薪的純虛函數(shù);另外再設計四個針對四類人員的類均繼承 Person; 添加相應的派生類數(shù)據(jù)成員和函數(shù),經(jīng)理和銷售經(jīng)理可以沒有新的數(shù)據(jù)成員,計算月薪即可; 技術(shù)人員添加技術(shù)等級數(shù)據(jù)成員,銷售人員添加數(shù)據(jù)成員:銷售額。還需設計一個 Manage 類來完成各種操作。(提示:人員數(shù)組 vector,數(shù)據(jù)類型為基類指針)
(2)為了設計簡潔,假定經(jīng)理和銷售經(jīng)理都只能有一個;用文本編輯
器編輯一個文本文件(總數(shù) 20 人以上)包含各類人員的信息;并且在程 序中能修改保存。
(3)菜單功能:添加人員(輸入),修改信息,瀏覽信息,按姓名查 找,月薪排序。
(3)基本需求
該程序具體要實現(xiàn)以下功能:
(1)能夠顯示出菜單等引導界面,引導使用者進行具體的操作;
(2)能夠提供一些最基本的數(shù)據(jù)錄入功能,輸入教職工基本信息;
(3)能夠?qū)崿F(xiàn)基本的增加、刪除、查找(按姓名,按編號)、修改功能,實現(xiàn)對數(shù)據(jù)的操 作;
(4)提供基礎的文件操作功能,實現(xiàn)對文件的存取,和加載功能;
(5)提供部分統(tǒng)計的功能,幫助用戶管理信息,處理信息;
(4)流程圖


5)源程序

#include<fstream> #include<iostream #include<string> #include<iomanip> #include<stdlib.h> using namespace std;const int n1=5,n2=1,n3=10,n4=1; /*定義公司各類職工人數(shù)(方便修改) (n1:技術(shù)員人數(shù);n2:經(jīng)理人數(shù);n3:銷售員人數(shù);n4:銷售經(jīng)理人數(shù) )*/ const double m_salary=8000; //經(jīng)理固定月工資 const double hourpay=100; //技術(shù)員小時工資 const double basicpay=1500; //銷售經(jīng)理的底薪 const double s_proportion=4.0/100; //銷售員的工資提成比例 const double sm_proportion=0.2/100; //銷售經(jīng)理的提成比例 //聲明部分: void menu(); //主菜單 void menu2(); //數(shù)據(jù)輸入二級菜單 void menu3(); //數(shù)據(jù)打印二級菜單 void data_input(); //數(shù)據(jù)輸入函數(shù) void data_print(); //數(shù)據(jù)打印 void charthead1(); //制作表頭1函數(shù),統(tǒng)計銷售額 void charthead2(); //制作表頭2函數(shù),數(shù)據(jù)打印 void chartend(); //制作表尾 void statistics(); //數(shù)據(jù)統(tǒng)計 double sm_salary(); //銷售經(jīng)理工資計算 void sm_print(); //銷售經(jīng)理打印數(shù)據(jù) void data_find(); //數(shù)據(jù)查詢 void data_save(); //數(shù)據(jù)備份 ofstream outfile; //打開磁盤文件流對象 string f_name; //全局變量(查詢用) //定義類: class Person//雇員類(基類) { public: void input() //數(shù)據(jù)輸入函數(shù) {cout<<"編號:";cin>>num;cout<<"其姓名:";cin>>name;cout<<"性別(m/w):";cin>>sex;cout<<"年齡:";cin>>age; } void print() //打印數(shù)據(jù)函數(shù) {cout<<"********************************************************************"<<endl;cout<<" "<<setw(6)<<num<<" "<<setw(8)<<name<<" "<<setw(6)<<sex<<" "<<setw(6)<<age<<" "<<setw(7)<<pay<<" "<<endl; } void find() //查詢函數(shù) {if(f_name==name){charthead2();print();chartend();cout<<endl;} } void save() //備份數(shù)據(jù)函數(shù){outfile<<"********************************************************************"<<endl;outfile<<" "<<setw(6)<<num<<" "<<setw(8)<<name<<" "<<setw(6)<<sex<<" "<<setw(6)<<age<<" "<<setw(7)<<pay<<" "<<endl;}protected:int num; //職工號string name; //職工姓名char sex; //職工性別int age; //職工年齡double pay; //職工工資 }; class Technician:public Person//雇員類(基類)//技術(shù)員類(公有繼承) { public:void input() {cout<<"技術(shù)員的";Person::input();cout<<"工作時間:";cin>>worktime; } void print() { pay=worktime*hourpay; Person::print(); } void find() {Person::find(); } void save() {pay=worktime*hourpay; Person::save(); } protected:double worktime; //工作時間(小時) }; class Manager:public Person //經(jīng)理類 { public:void input() {cout<<"經(jīng)理的"; Person::input(); } void print() { pay=m_salary; Person::print(); } void find() { Person::find(); } void save() { pay=m_salary; Person::save(); } }; class Sell_manager:public Person //銷售經(jīng)理類 { public:void input() { cout<<"銷售經(jīng)理的"; Person::input(); } int sm_number() //調(diào)用銷售經(jīng)理職工號 {return num; } string sm_name() //調(diào)用銷售經(jīng)理姓名 {return name; } void print() {cout<<"********************************************************************"<<endl;cout<<" "<<setw(6)<<num<<" "<<setw(8)<<name<<" "<<setw(6)<<sex<<" "<<setw(6)<<age<<" "; } void save() {cout<<"********************************************************************"<<endl;cout<<" "<<setw(6)<<num<<" "<<setw(8)<<name<<" "<<setw(6)<<sex<<" "<<setw(6)<<age<<" "; } }; class Seller:public Person //銷售員類 { public:Seller(){ sold_amount=0; } //構(gòu)造函數(shù),銷售額初始化為0 void input() {cout<<"銷售員的";Person::input();cout<<"銷售額:";cin>>sold_amount;cout<<"所屬銷售經(jīng)理的編號:";cin>>nu; } void grade() //銷售員業(yè)績輸出 {cout<<"**********************\n"<<endl;cout<<" "<<setw(6)<<num<<" "<<setw(8)<<name<<" "<<setw(7)<<sold_amount<<" "<<endl; } void print() { pay=sold_amount*s_proportion;cout<<"********************************************************************\n"<<endl;cout<<" "<<setw(6)<<num<<" "<<setw(8)<<name<<" "<<setw(6)<<sex<<" "<<setw(6)<<age<<" "<<setw(7)<<pay<<" "<<setw(13)<<nu<<" "<<endl; } int s_number() //調(diào)用銷售員所屬銷售經(jīng)理職工號 {return nu; } double amount() //調(diào)用銷售員銷售額 {return sold_amount; } void find() {if(f_name==name){cout<<"*****************************************************************\n"<<endl;cout<<" 職 工 號 姓 名 性 別 年 齡 工 資 所屬部門經(jīng)理編號 \n"<<endl;print();cout<<"*****************************************************************\n";} } void save() {pay=sold_amount*s_proportion;outfile<<"*****************************************************************\n"<<endl;outfile<<" "<<setw(6)<<num<<" "<<setw(8)<<name<<" "<<setw(6)<<sex<<" "<<setw(6)<<age<<" "<<setw(7)<<pay<<" "<<setw(13)<<nu<<" "<<endl; } protected:double sold_amount; //銷售額int nu; //所屬銷售經(jīng)理職工號 }; //定義全局對象數(shù)組Technician t[n1]; //技術(shù)員Manager m[n2]; //經(jīng)理Seller s[n3]; //銷售員Sell_manager sm[n4]; //銷售經(jīng)理(下屬若干銷售員)//主函數(shù)部分: int main() {char n;menu();for(int i=0;i<1000;i++) //設定循環(huán)次數(shù)(便于各項操作的切換及方便查詢){cin>>n;switch(n){case'1': //數(shù)據(jù)輸入cout<<endl<<"您所選操作為數(shù)據(jù)輸入,請繼續(xù)——"<<endl<<endl;data_input();cout<<endl;menu();break;case'2': //數(shù)據(jù)統(tǒng)計cout<<endl<<"您所選操作為數(shù)據(jù)統(tǒng)計,請繼續(xù)——"<<endl<<endl;statistics();cout<<endl<<"銷售經(jīng)理按工資排序為:"<<'\n'<<endl;sm_print();cout<<endl;menu();break;case'3': //數(shù)據(jù)打印cout<<endl<<"您所選操作為數(shù)據(jù)輸出,請繼續(xù)——"<<endl<<endl;cout<<'\a'<<"數(shù)據(jù)輸出中,請等待……"<<'\n'<<'\n'<<endl;cout<<"職工基本情況一覽表如下:"<<'\n'<<endl;;data_print();cout<<endl<<endl;cout<<'\a'<<"——數(shù)據(jù)輸出完畢——"<<'\n'<<'\n'<<endl;menu();break;case'4': //數(shù)據(jù)查詢cout<<endl<<"您所選操作為數(shù)據(jù)查詢,請繼續(xù)——"<<endl<<endl;cout<<"請輸入您要查詢的職工姓名: ";cin>>f_name;cout<<endl<<"——正在查詢,請等待——"<<endl<<endl;cout<<"您查詢的信息如下:"<<endl<<endl;data_find();cout<<endl<<endl;menu();break;case'5': //數(shù)據(jù)備份outfile.open("人員名單.txt",ios::out); //打開磁盤文件流對象cout<<endl<<"您所選操作為數(shù)據(jù)備份,請繼續(xù)——"<<endl<<endl;outfile<<"職工基本情況一覽表如下:"<<'\n'<<endl;data_save();outfile.close();cout<<endl<<endl;cout<<'\a'<<"——數(shù)據(jù)備份完成,請繼續(xù)——"<<endl<<endl;menu();break;case'0': //退出系統(tǒng)cout<<endl<<"您所選操作為退出系統(tǒng),請確認——"<<endl<<endl;cout<<" 是( y )"<<" "<<"否( n ) ";cin>>n;if(n=='y'){ cout<<'\n'<<"——請按任意鍵退出系統(tǒng)——"<<endl; exit(0); cout<<endl;}else menu();break;default:cout<<endl<<"——出錯!請重新選擇操作! "<<'\n'<<endl;menu();break;}}return 0; }//自定義函數(shù)部分: void menu() //菜單函數(shù) {cout<<"Welcome!\n "<<endl;cout<<" ****************** 公司人事管理系統(tǒng)*******************\n\n"<<endl;cout<<"請選擇您所需的操作: "<<endl;cout<<" ******************************************************\n"<<endl;cout<<" ***************** 【1】數(shù)據(jù)輸入 *****************\n"<<endl;cout<<" ***************** 【2】數(shù)據(jù)統(tǒng)計 *****************\n"<<endl;cout<<" ***************** 【3】數(shù)據(jù)輸出 *****************\n"<<endl;cout<<" ***************** 【4】數(shù)據(jù)顯示 *****************\n"<<endl;cout<<" ***************** 【5】數(shù)據(jù)備份 *****************\n"<<endl;cout<<" ***************** 【6】退出系統(tǒng) *****************\n"<<endl;cout<<" ******************************************************\n"<<endl;cout<<"操作提示:輸入編號并按回車鍵選擇你想實現(xiàn)的功能\n"<<endl;cout<<" 請選擇一個操作:"; } void menu2() //數(shù)據(jù)輸入二級菜單函數(shù) {cout<<" ****************** 公司人事管理系統(tǒng)*********************\n\n"<<endl;cout<<"請選擇您所需的操作: "<<endl;cout<<" *********************************************************\n"<<endl;cout<<" ***************** 【1】經(jīng)理數(shù)據(jù)輸入 ********************\n"<<endl;cout<<" ***************** 【2】技術(shù)人員數(shù)據(jù)輸入*****************\n"<<endl;cout<<" ***************** 【3】銷售員數(shù)據(jù)輸入 ******************\n"<<endl;cout<<" ***************** 【4】銷售經(jīng)理數(shù)據(jù)輸入*****************\n"<<endl;cout<<" ***************** 【5】返回上一級 *********************\n"<<endl;cout<<" *********************************************************\n"<<endl;cout<<"操作提示:輸入編號并按回車鍵選擇你想實現(xiàn)的功能\n"<<endl;cout<<" 請選擇一個操作:"; } void menu3() //數(shù)據(jù)打印二級菜單函數(shù) {cout<<" ****************** 公司人事管理系統(tǒng)********************\n\n"<<endl;cout<<"請選擇您所需的操作: "<<endl;cout<<" ********************************************************\n"<<endl;cout<<" ***************** 【1】經(jīng)理數(shù)據(jù)輸出 ********************\n"<<endl;cout<<" ***************** 【2】技術(shù)人員數(shù)據(jù)輸出*****************\n"<<endl;cout<<" ***************** 【3】銷售員數(shù)據(jù)輸出 ******************\n"<<endl;cout<<" ***************** 【4】銷售經(jīng)理數(shù)據(jù)輸出*****************\n"<<endl;cout<<" ***************** 【5】返回上一級 ********************\n"<<endl;cout<<" ********************************************************\n"<<endl;cout<<"操作提示:輸入編號并按回車鍵選擇你想實現(xiàn)的功能\n"<<endl;cout<<" 請選擇一個操作:"; } void data_input() //數(shù)據(jù)輸入函數(shù) {char p;int i;menu2();for(int j=0;j<100;j++){cin>>p;if(p=='5') break;else{switch(p){case'1':for(i=0;i<n2;i++)m[i].input();cout<<endl<<"-----------------------------------------------------"<<endl;menu2();break;case'2':for(i=0;i<n1;i++)t[i].input();cout<<endl<<"-----------------------------------------------------"<<endl;menu2();break;case'3':for(i=0;i<n3;i++)s[i].input();cout<<endl<<"-----------------------------------------------------"<<endl;menu2();break;case'4':for(i=0;i<n4;i++)sm[i].input();cout<<endl<<"--------------------------------------------------"<<endl;menu2();break;}}} } void charthead1() //制表頭1(數(shù)據(jù)統(tǒng)計用) {cout<<" ********************************************************\n"<<endl;cout<<" 職 工 號 姓 名 銷 售 額 "<<endl; } void charthead2() //制表頭2(數(shù)據(jù)打印及銷售經(jīng)理數(shù)據(jù)統(tǒng)計用) {cout<<" ********************************************************\n"<<endl;cout<<" 職 工 號 姓 名 性 別 年 齡 工 資 "<<endl; } void chartend() //制表尾(數(shù)據(jù)打印及銷售經(jīng)理數(shù)據(jù)統(tǒng)計用){cout<<" ********************************************************\n";} void statistics() //數(shù)據(jù)統(tǒng)計函數(shù){ int i,j;for(i=0;i<n4;i++){double sum=0;cout<<endl<<"職工號為 "<<sm[i].sm_number()<<" 銷售經(jīng)理 "<<sm[i].sm_name()<<" 下屬銷售員的業(yè)績?yōu)?"<<endl<<endl;charthead1();for(j=0;j<n3;j++)if(s[j].s_number()==sm[i].sm_number()){sum=sum+s[j].amount();s[j].grade();}cout<<"****************************"<<endl;cout<<" 銷售額總計 "<<setw(12)<<sum<<" "<<endl;cout<<"****************************"<<endl;}} double salary[n4]; double sm_salary() //銷售經(jīng)理工資計算及排序{int i,j;double a ;Sell_manager b;for(int k=0;k<n4;k++)salary[k]=0;for(i=0;i<n4;i++){double sum=0;for(j=0;j<n3;j++)if(s[j].s_number()==sm[i].sm_number()){ sum=sum+s[j].amount();salary[i]=sum*sm_proportion+basicpay;}}for( j=0;j<n4-1;j++)for( i=0;i<n4-1-j;i++)if(salary[i]<salary[i+1]){ a=salary[i+1];salary[i+1]=salary[i];salary[i]=a;b=sm[i+1];sm[i+1]=sm[i];sm[i]=b;}return 0; } void sm_print(){sm_salary();charthead2();for(int i=0;i<n4;i++){ sm[i].print();cout<<setw(7)<<salary[i]<<" "<<endl;}chartend();cout<<endl;} void data_print() //數(shù)據(jù)打印{char p;int i,j;menu2();for(j=0;j<100;j++){cin>>p;if(p=='5') break;else{switch(p){case'1':cout<<endl<<"經(jīng)理"<<endl; //經(jīng)理信息charthead2();for(i=0;i<n2;i++)m[i].print();chartend();cout<<endl<<endl<<"-----------------------------------------------------------------------"<<endl;menu3();break;case'2':cout<<endl<<"技術(shù)人員"<<endl; //技術(shù)員信息charthead2();for(i=0;i<n1;i++)t[i].print();chartend();cout<<endl<<endl<<"-----------------------------------------------------------------------"<<endl;menu3();break;case'3':cout<<endl<<"銷售人員"<<endl; //銷售員信息cout<<"********************************************************\n"<<endl;cout<<" 職 工 號 姓 名 性 別 年 齡 工 資 所屬部門經(jīng)理編號 "<<endl;for(i=0;i<n3;i++)s[i].print();cout<<"********************************************************\n";cout<<endl<<endl<<"------------------------------------------------------------------------"<<'\n'<<endl;menu3();break;case'4':cout<<endl<<"銷售經(jīng)理"<<endl; //銷售經(jīng)理信息sm_salary();sm_print();cout<<endl<<endl<<"-----------------------------------------------------------------------"<<endl<<endl;menu3();break;}}} } void data_find() //數(shù)據(jù)查詢函數(shù){int i;for(i=0;i<n1;i++)t[i].find();for(i=0;i<n2;i++)m[i].find();for(i=0;i<n3;i++)s[i].find();for(i=0;i<n4;i++)if(f_name==sm[i].sm_name()){ charthead2();sm[i].print();cout<<setw(7)<<salary[i]<<" "<<endl;chartend();cout<<endl;break;} } void data_save() //數(shù)據(jù)備份函數(shù){outfile<<endl<<"技術(shù)人員"<<endl; //技術(shù)員信息outfile<<"********************************************************\n"<<endl;outfile<<" 職 工 號 姓 名 性 別 年 齡 工 資 "<<endl;for(int i=0;i<n1;i++)t[i].save();outfile<<"********************************************************\n";outfile<<endl<<endl<<"---------------------------------------------------------------------------"<<endl;outfile<<endl<<"經(jīng)理"<<endl; //經(jīng)理信息outfile<<"********************************************************\n"<<endl;outfile<<" 職 工 號 姓 名 性 別 年 齡 工 資 "<<endl;for(int i=0;i<n2;i++)m[i].save();outfile<<"********************************************************\n";outfile<<endl<<endl<<"----------------------------------------------------------------------------"<<endl;outfile<<endl<<"銷售經(jīng)理"<<endl; //銷售經(jīng)理信息sm_salary();outfile<<"********************************************************\n"<<endl;outfile<<" 職 工 號 姓 名 性 別 年 齡 工 資 "<<endl;for(int i=0;i<n4;i++){ sm[i].save();outfile<<setw(7)<<salary[i]<<" │"<<endl;}outfile<<"********************************************************\n";outfile<<endl<<endl<<"----------------------------------------------------------------------------"<<endl<<endl;outfile<<endl<<"銷售人員"<<endl; //銷售員信息outfile<<"******************************************************************\n"<<endl;outfile<<" 職 工 號 姓 名 性 別 年 齡 工 資 所屬部門經(jīng)理編號 "<<endl;for(int i=0;i<n3;i++)s[i].save();outfile<<"******************************************************************\n";outfile<<endl<<endl<<"-----------------------------------------------------------------------------"<<'\n'<<endl; }

(6)主菜單界面顯示

第一次寫項目,查了好多資料,不足之處還請多多指教

總結(jié)

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

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