




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)軟件技術(shù)基礎(chǔ)實(shí)驗(yàn)報(bào)告班號(hào): 學(xué)號(hào): : 設(shè)計(jì)說明員工具有一個(gè)成員函數(shù)來計(jì)算薪水Ø ComputerPay()員工具有數(shù)據(jù)成員Ø 雇員號(hào)ØØ 銀行賬號(hào)從員工類派生三個(gè)類,經(jīng)理,底薪職員,銷售職員;分別實(shí)現(xiàn)派生類的構(gòu)造函數(shù)、析構(gòu)函數(shù)和其他方法Ø 經(jīng)理的薪水是按月固定發(fā)放;Ø 底薪職員薪水是按工作小時(shí)數(shù)*每小時(shí)工資標(biāo)準(zhǔn);Ø 銷售職員的薪水是底薪+銷售額提成30%;Ø 具體標(biāo)準(zhǔn)可自行定義;創(chuàng)建員工的指針數(shù)組,并初始化這些指針指向不同的派生對(duì)象,并通過對(duì)指針數(shù)組的循環(huán)遍歷,來實(shí)現(xiàn)對(duì)各種對(duì)象的基本信息以及薪水的輸出使用介
2、紹打開程序后,選擇運(yùn)行文件,根據(jù)彈出屏幕的選擇進(jìn)行操作。有5個(gè)選擇可供使用者選擇。選擇1,即計(jì)算原有員工工資選項(xiàng)后,需要再根據(jù)屏幕提示輸入工作總時(shí)間,每小時(shí)工資和銷售總金額,從而得到原有員工的工資。選擇2,即從屏幕中讀取員工信息并計(jì)算工資,需要根據(jù)屏幕選項(xiàng)選擇員工類型。1為經(jīng)理,2為底薪人員,3為銷售人員,4為退出,當(dāng)輸入其他數(shù)字時(shí)則要求重新選擇一次。選擇經(jīng)理填入信息中有是否設(shè)定工資的選項(xiàng),選擇是則自行輸入工資,否則按默認(rèn)工資8000處理。選4退出后回到主選擇頁面。選擇3,即從文件中讀取信息并計(jì)算工資。當(dāng)三個(gè)操作都進(jìn)行完時(shí)(或者進(jìn)行其中的某一項(xiàng)或者兩項(xiàng)后),可選擇4將信息輸出,信息輸出按原有員
3、工、輸入員工、文件讀入員工三部分來輸出。選擇5后退出整個(gè)程序。源代碼一、主函數(shù)1、main.cpp/要加入頭文件#include <iostream>#include <fstream>#include <string>using namespace std;/指定命名空間/自己定義的類,使用時(shí)要加入頭文件#include "Employee.h"#include "Manager.h"#include "Wage.h"#include "Csale.h"int main()/定
4、義變量int i,c1,c2,x,c3;int j=0,h=0,k=0,a=1,b=1,y=0,m=0,n=0;float hrs,wg,sale;int nm=0, nw=0, ns=0;char name30;long no;char bankno30;CManager manager20;CWage wage20;CSale Sale20;CManager fmanager20; /文件輸入部分變量CWage fwage20;CSale fSale20;char ch20;long no0;int l=0,s,t=0,l1=0,l2=0,l3=0,xf;float sa0,hrs0,wg
5、0;CEmployee * pfEmployee60;CEmployee * pEmployeexin60; /定義新加入人員的指針數(shù)組/原有人員信息CManager aManager("三",100001,"A123456789");CWage aWage("四",100002,"B123456789");CSale aCSale("王五",100003,"C123456789");while(a=1)/選擇執(zhí)行項(xiàng)目cout<<"選擇執(zhí)行項(xiàng)目:&quo
6、t;<<endl;cout<<"1、計(jì)算原有員工的工資"<<endl;cout<<"2、計(jì)算從屏幕中新輸入員工的工資"<<endl;cout<<"3、文件中讀取員工信息并計(jì)算工資"<<endl;cout<<"4、信息以文件形式輸出"<<endl;cout<<"5、退出"<<endl;cin>>c1;if(c1=1)/計(jì)算原有員工薪水/從屏幕讀取數(shù)據(jù)cou
7、t<<"請(qǐng)輸入數(shù)據(jù),各個(gè)數(shù)據(jù)以回車為界"<<endl;cout<<"工作總時(shí)間:"cin>>hrs;cout<<"每小時(shí)工資: "cin>>wg;cout<<"銷售總金額:"cin>>sale;aWage.setHours(hrs);aWage.setWage(wg);aCSale.setHours(hrs);aCSale.setWage(wg);aCSale.setSale(sale);m=1;if(c1=2)/輸入新
8、員工信息并計(jì)算工資n=1;while(j<20&&h<20&&k<20&&b=1)cout<<"選擇員工類型"<<endl;/選擇員工類型cout<<"1、經(jīng)理 2、底薪人員 3、銷售人員 4、退出"<<endl;cin>>c2;switch(c2)case 1:cout<<"請(qǐng)輸入數(shù)據(jù),各個(gè)數(shù)據(jù)以回車為界"<<endl;cout<<""cin>&g
9、t;name;cout<<"編號(hào)"cin>>no;cout<<"銀行賬號(hào)"cin>>bankno; /讀入經(jīng)理信息/存儲(chǔ)經(jīng)理信息managerj.setName(name);managerj.setbankNo(bankno);managerj.setNo(no);/選擇是否設(shè)定工資cout<<"是否設(shè)定工資?(默認(rèn)為基本工資8000)"<<endl;cout<<"1、是 2、否"<<endl;cin>>c3
10、;if(c3=1)/設(shè)定經(jīng)理工資float salary;cout<<"設(shè)定工資"cin>>salary;managerj.setSalary(salary);if(c3=2)managerj.setSalary(8000);cout<<"工資:"cout<<managerj.ComputerPay(); /計(jì)算并輸出經(jīng)理工資pEmployeexiny=&managerj;j+;break;case 2:cout<<"請(qǐng)輸入數(shù)據(jù),各個(gè)數(shù)據(jù)以回車為界"<<e
11、ndl;cout<<""cin>>name;cout<<"編號(hào)"cin>>no;cout<<"銀行賬號(hào)"cin>>bankno;cout<<"工作總時(shí)間"cin>>hrs;cout<<"每小時(shí)工資"cin>>wg; /讀入底薪人員信息wageh.setName(name);wageh.setbankNo(bankno);wageh.setNo(no);wageh.setHour
12、s(hrs);wageh.setWage(wg); /存儲(chǔ)底薪人員信息cout<<"工資:"cout<<wageh.ComputerPay();pEmployeexiny=&wageh;h+;break;case 3:cout<<"請(qǐng)輸入數(shù)據(jù),各個(gè)數(shù)據(jù)以回車為界"<<endl;cout<<""cin>>name;cout<<"編號(hào)"cin>>no;cout<<"銀行賬號(hào)"cin&g
13、t;>bankno;cout<<"工作總時(shí)間"cin>>hrs;cout<<"每小時(shí)工資"cin>>wg;cout<<"銷售總金額"cin>>sale; /讀入銷售人員信息Salek.setName(name);Salek.setbankNo(bankno);Salek.setNo(no);Salek.setHours(hrs);Salek.setWage(wg);Salek.setSale(sale); /存儲(chǔ)銷售人員信息cout<<"
14、;工資:"<<endl;cout<<Salek.ComputerPay();pEmployeexiny=&Salek;k+;break;case 4:b=0;break;default:cout<<"輸入錯(cuò)誤"<<endl;y+;if(c1=3) /從文件中讀取員工信息ifstream infile("CEmployee information.txt");if(!infile)cout<<"沒有該文件"return 0;elset=1;while(!inf
15、ile.eof() /在文件信息被全部讀完前讀取文件中的信息infile>>s; switch (s) /判斷員工所屬職位,填入相應(yīng)的數(shù)組case 1: /從文件中讀入經(jīng)理信息infile>>no0;fmanagerl1.setNo(no0);infile>>ch;fmanagerl1.setName(ch);infile>>ch;fmanagerl1.setbankNo(ch);infile>>sa0;fmanagerl1.setSalary(sa0);pfEmployeel=&fmanagerl1;l1+;break;ca
16、se 2: /從文件中讀入底薪人員信息infile>>no0;fwagel2.setNo(no0);infile>>ch;fwagel2.setName(ch);infile>>ch;fwagel2.setbankNo(ch);infile>>hrs0;fwagel2.setHours(hrs0);infile>>wg0;fwagel2.setWage(wg0);pfEmployeel=&fwagel2;l2+;break;case 3: /從文件中讀入銷售人員信息infile>>no0;fSalel3.setNo
17、(no0);infile>>ch;fSalel3.setName(ch);infile>>ch;fSalel3.setbankNo(ch);infile>>hrs0;fSalel3.setHours(hrs0);infile>>wg0;fSalel3.setWage(wg0);infile>>sa0;fSalel3.setSale(sa0);pfEmployeel=&fSalel3;l3+;break;default:break;l+;infile.close();if(c1=4) /以文件形式輸出信息/建立指向原有員工信息的
18、指針CEmployee * pEmployee = &aManager, &aWage, &aCSale; ofstream file("CEmployeepay.txt");if(!file) /判斷是否能打開文件cerr<<"open error!"<<endl;return 0;elsefile<<"&&&員工信息及其工資&&&"<<endl;/輸出原有的員工信息與工資file<<"原紀(jì)錄
19、員工部分"<<endl;switch(m) /判斷是否進(jìn)行原有員工工資的計(jì)算,有則輸出信息case 1:for(i=0;i<3;i+)file<<"編 號(hào):"<<pEmployeei->getNo()<<endl;file<<"姓 名:"<<pEmployeei->getName()<<endl;file<<"銀行賬號(hào):"<<pEmployeei->getBankNo()<<endl
20、;file<<"工 資: "<<pEmployeei->ComputerPay()<<endl;file<<"*"<<endl;file<<endl;break;default:file<<"沒有進(jìn)行原記錄員工工資的計(jì)算"<<endl;file<<endl;file<<endl;file<<"新輸入員工部分"<<endl; /輸出新員工的信息與工資y=y-1;swit
21、ch(n) /判斷是否輸入新員工信息,有則輸出信息case 1:for(x=0;x<y;x+)file<<"編 號(hào): "<<pEmployeexinx->getNo()<<endl;file<<"姓 名:"<<pEmployeexinx->getName()<<endl;file<<"銀行賬號(hào):"<<pEmployeexinx->getBankNo()<<endl;file<<"工
22、資:<<pEmployeexinx->ComputerPay()<<endl;file<<"*"<<endl;file<<endl;break;default:file<<"沒有新輸入的員工信息"<<endl;file<<endl;file<<endl;file<<"文件輸入員工部分:"<<endl;switch(t) /判斷是否輸入新員工信息,有則輸出信息l=l-1;case 1:for(xf=0
23、;xf<l;xf+)file<<"編 號(hào):"<<pfEmployeexf->getNo()<<endl;file<<"姓 名:"<<pfEmployeexf->getName()<<endl;file<<"銀行賬號(hào):"<<pfEmployeexf->getBankNo()<<endl;file<<"工 資:"<<pfEmployeexf->Computer
24、Pay()<<endl;file<<"*"<<endl;file<<endl;break;default:file<<"沒有新輸入的員工信息"<<endl;file<<endl;file.close(); /關(guān)閉文件if(c1=5)a=0;二、員工類1、Employee.h#pragma onceclass CEmployeepublic: CEmployee(void);/構(gòu)造函數(shù) virtual CEmployee(void);/析構(gòu)函數(shù)private: char m
25、_name30;/一般的類變量 long m_no; char m_bankNo20;public: /帶參數(shù)的構(gòu)造函數(shù),為了防止更改,可加const CEmployee(const char * nm, const long no, const char * bankNo); long getNo(void); char * getName(void); char * getBankNo(void); /需要被重載的函數(shù)virtual float ComputerPay(void);void setName(char * name);void setNo(long no);void setb
26、ankNo(char * bankno);2、Employee.cpp#include "Employee.h"#include <string> /處理字符串的頭文件CEmployee:CEmployee(void)CEmployee:CEmployee(void)/.h文件中的聲明應(yīng)該與.cpp源文件中的聲明函數(shù)類型一致CEmployee:CEmployee(const char * nm, const long no, const char * bankNo) /要進(jìn)行參數(shù)的賦值工作,也就是把參數(shù)帶進(jìn)來 /初始化 memset(m_name,0,30);
27、memset(m_bankNo,0,20); /賦值操作 strcpy(m_name,nm); m_no=no; strncpy(m_bankNo,bankNo,19);long CEmployee:getNo(void) /get函數(shù),得到編號(hào)信息 return m_no;char * CEmployee:getName(void) /get函數(shù),得到名字信息 return m_name;char * CEmployee:getBankNo(void) /get函數(shù),得到銀行賬號(hào)信息 return m_bankNo;float CEmployee:ComputerPay(void) retu
28、rn 0;void CEmployee:setName(char * name) /set函數(shù),將name中的名字信息賦值到m_name中strcpy(m_name,name);void CEmployee:setNo(long no)m_no=no;void CEmployee:setbankNo(char * bankno)strncpy(m_bankNo,bankno,19);三、經(jīng)理類1、Manager.h#pragma once#include "Employee.h"/添加類的時(shí)候,應(yīng)添加繼承關(guān)系,否則帶參數(shù)的繼承函數(shù)無法實(shí)現(xiàn)class CManager : p
29、ublic CEmployeepublic: CManager(void); virtual CManager(void);CManager(const char *nm, const long no, const char * bankNo);private:float m_salary;/經(jīng)理的工資public:void setSalary(float salary);float ComputerPay(void);2、Manager.cpp#include "Manager.h"#include "Employee.h"CManager:CMana
30、ger(void): m_salary(0)CManager:CManager(void)/帶參數(shù)的構(gòu)造函數(shù),要繼承CEmployee的帶參數(shù)的構(gòu)造函數(shù)/直接完成賦初值,并設(shè)定經(jīng)理的薪水CManager:CManager(const char *nm, const long no, const char * bankNo):CEmployee(nm,no,bankNo)m_salary = 8000;/為了從外部可以進(jìn)行員工設(shè)定,跟get函數(shù)類似void CManager:setSalary(float salary)m_salary = salary;float CManager:Compu
31、terPay(void)return m_salary;四、底薪人員類1、Wage.h#pragma once#include "employee.h"/繼承CEmployeeclass CWage :public CEmployeepublic:CWage(void);virtual CWage(void);private:float m_hours;float m_wage;public:void setHours(float hrs);void setWage(float wg);float ComputerPay(void);CWage(const char * nm, const long no, const char * bankNo);CWage(float hrs, float wg);2、Wage.cpp#include "Wage.h"CWage:CWage(void)CWage:CWage(void)void CWage:setHours(float hrs)m_hours = hrs; /設(shè)置工作時(shí)間void C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技創(chuàng)新園區(qū)場(chǎng)地租賃與科技成果轉(zhuǎn)化服務(wù)協(xié)議
- 房地產(chǎn)評(píng)估與咨詢服務(wù)合同參考文本
- 教育與環(huán)保的共生之路
- 公司文宣活動(dòng)策劃方案
- 提升企業(yè)產(chǎn)品競(jìng)爭(zhēng)力的內(nèi)部市場(chǎng)開發(fā)策略
- 智能機(jī)器人設(shè)計(jì)參選作品委托創(chuàng)作合同
- 商務(wù)樓宇場(chǎng)地安全使用管理協(xié)議
- 公司洗腦促銷活動(dòng)方案
- 新媒體環(huán)境下高校思想政治教育發(fā)展的維度分析
- 提升學(xué)生注意力的游戲化學(xué)習(xí)技巧
- 國(guó)際教育機(jī)構(gòu)外教派遣服務(wù)協(xié)議
- 中國(guó)狼瘡腎炎診治和管理指南(2025版)解讀
- 安徽省合肥四十五中學(xué)2025屆數(shù)學(xué)七下期末達(dá)標(biāo)檢測(cè)試題含解析
- 變電站二次系統(tǒng)介紹(大唐)
- 數(shù)智賦能教育新生態(tài):高校教育數(shù)字化創(chuàng)新發(fā)展路徑
- 2024年山西焦煤集團(tuán)招聘考試真題
- 對(duì)公賬戶提額合同協(xié)議
- 鍍鋁技能考試試題及答案
- 塑鋼門窗生產(chǎn)制作工藝定稿
- 車間工藝報(bào)警管理制度
- 中建二測(cè)2025題庫(kù)
評(píng)論
0/150
提交評(píng)論