C++语言课程设计——职工工资表
生活随笔
收集整理的這篇文章主要介紹了
C++语言课程设计——职工工资表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、設計題目
職工工資表
二、設計目的
設計一個職工工資表,能夠通過菜單實現簡單的信息錄入與顯示操作。注意對象數組的使用,利用賦值兼容規則實現不同類型的員工的信息存儲,并使用虛函數完成對于不同類型員工的工資計算任務。
三、設計要求
使用繼承的方法,設計5個類,代表四類員工,利用多態性實現信息的輸入與輸出。
四、設計思想
1、類的結構圖
| employee |
| name:string empNo:string accumPay:float |
| SetName(string names):void GetName():string SetEmpNo(string no):void GetEmpNo():string GetaccumPay():float virtual pay():void |
| technician |
| workHours:int hourlyRate:float |
| SetRate(int r):void SetworkHours(int wh):void pay():void |
| salesman |
| CommRate:float sales:float |
| setCommRate(float c):void setSales(float s):void pay():void |
| manager |
| monthlyPay:float |
| setMonthPay(float m):void pay():void |
| salesmanager |
| pay():void? |
?話不多說,直接上代碼
#include<iostream> #include<string> using namespace std; class employee{ protected:string name;string id;double accumpay; public:void setname(string n){name=n;}//string getname(){return name;}void setid(string i){id=i;}//string getid(){return id;}virtual void pay(){}double getpay(){return accumpay;}void print(){cout<<"姓名為"<<name<<"工號為"<<id<<"工資為"<<getpay()<<endl;} }; class technician:virtual public employee{ protected:int rate;int hours; public:void setrate(int r){rate=r;}void sethours(int h){hours=h;}float getpay(){return accumpay=rate*hours;} }; class saleman:virtual public employee{ protected:float commrate;float sales; public:void setcommrate(float c){commrate=c;}void setsales(float s){sales=s;}float getpay(){return accumpay=commrate*sales;} }; class manager:virtual public employee{ protected:float monthlypay; public:void setmonthlypay(float mp){monthlypay=mp;}float getpay(){return accumpay=monthlypay;} }; class salemanager:virtual public saleman,public manager{ public:float getpay(){return accumpay=monthlypay+commrate*sales;} }; void menu(){cout<<"請輸入1-3"<<endl<<"1.添加信息"<<endl<<"2.瀏覽信息"<<endl<<"3.退出程序"<<endl; } int main(){employee *e[50];technician t[50];saleman s[50];manager m[50];salemanager sm[50];int a=0;string i,n;int x,y;int wh;float hr,c,sa,mp;int j;for( ; ; ){menu();cin>>x;if(x<1||x>3){cout<<"輸入錯誤,請從新輸入,請輸入1-3:"<<endl;}else{switch(x){case 1:cout<<"請輸入員工的類型:1.技術人員;<2.銷售人員;<3.經理;<4.銷售經理>"<<endl;cin>>y;if(y<1||y>4){cout<<"輸入錯誤,請重新輸入,請輸入1-4:"<<endl;}else{switch(y){case 1:cout<<"技術人員信息初始化..."<<endl<<"請輸入員工編號:";cin>>i;t[a].setid(i);cout<<"請輸入員工姓名:";cin>>n;t[a].setname(n);cout<<"請輸入技術人員工作時間:";cin>>wh;t[a].sethours(wh);cout<<"請輸入技術人員時薪:";cin>>hr;t[a].setrate(hr);t[a].getpay();e[a]=&t[a];a++;break;case 2:cout<<"銷售人員信息初始化..."<<endl<<"請輸入員工編號:";cin>>i;s[a].setid(i);cout<<"請輸入員工姓名:";cin>>n;s[a].setname(n);cout<<"請輸入銷售人員銷售額:";cin>>sa;s[a].setsales(sa);cout<<"請輸入銷售人員工作效率:";cin>>c;s[a].setcommrate(c);s[a].getpay();e[a]=&s[a];a++;break;case 3:cout<<"經理信息初始化..."<<endl<<"請輸入員工編號:";cin>>i;m[a].setid(i);cout<<"請輸入員工姓名:";cin>>n;m[a].setname(n);cout<<"請輸入經理固定工資:";cin>>mp;m[a].setmonthlypay(mp);m[a].getpay();e[a]=&m[a];a++;break;case 4:cout<<"銷售經理信息初始化..."<<endl<<"請輸入員工編號:";cin>>i;sm[a].setid(i);cout<<"請輸入員工姓名:";cin>>n;sm[a].setname(n);cout<<"請輸入銷售經理固定工資:";cin>>mp;sm[a].setmonthlypay(mp);cout<<"請輸入銷售經理下屬部門銷售額:";cin>>sa;sm[a].setsales(sa);cout<<"請輸入銷售經理提成:";cin>>c;sm[a].setcommrate(c);sm[a].getpay();e[a]=&sm[a];a++;} break;case 2:{for(j=0;j<a;j++){e[j]->print();}break;}}}}if(x==3){ cout<<"程序已退出,感謝您的觀看!"<<endl;break;}} return 0; }總結
以上是生活随笔為你收集整理的C++语言课程设计——职工工资表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 获取取本月一号、本月月末 日期
- 下一篇: s3c2440移植MQTT