課程設(shè)計報告職工工資管理系統(tǒng)設(shè)計_第1頁
課程設(shè)計報告職工工資管理系統(tǒng)設(shè)計_第2頁
課程設(shè)計報告職工工資管理系統(tǒng)設(shè)計_第3頁
課程設(shè)計報告職工工資管理系統(tǒng)設(shè)計_第4頁
課程設(shè)計報告職工工資管理系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、課 程 設(shè)計 設(shè)計題目設(shè)計題目 職工工資管理系統(tǒng)設(shè)計職工工資管理系統(tǒng)設(shè)計 課程名稱面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計課程代碼 b704210 設(shè)計題目職工工資管理系統(tǒng)的設(shè)計題目序號 設(shè)計時間2010 年 1 月 11 日 2010 年 1 月 14 日 系(院) 計算機科學與信息工 程系 專業(yè)計算機科學與技術(shù)班級 081041a2 一、課程設(shè)計任務(條件)一、課程設(shè)計任務(條件) 、具體技術(shù)參數(shù)(指標)、具體技術(shù)參數(shù)(指標) 本課程設(shè)計是面向?qū)ο蟪绦蛟O(shè)計課程的后繼教學環(huán)節(jié),學好 c+語言就必須堅 持用面向?qū)ο蟮乃季S方式分析問題、解決問題,最好的方法是仿照教材編寫 c+實際應 用程序。 根據(jù)教材中人事管理

2、應用程序框架,在此基礎(chǔ)上按要求完成以下實際應用程序。 職工工資管理系統(tǒng)課程設(shè)計題目: 實現(xiàn)一個簡單的工資管理系統(tǒng)。系統(tǒng)的主要功能是計算職工當月工資并存檔。公司 內(nèi)有 5 種不同類型的職工:技術(shù)人員、銷售人員、文秘、技術(shù)經(jīng)理和銷售經(jīng)理,他們的 工資計算方式各不相同。 技術(shù)人員的工資根據(jù)他當月工作的小時數(shù)來定,時薪 35 元;銷售人員的工資則是 根據(jù)本人當月銷售額來確定,工資為銷售額的 5%;文秘有 4000 元的基本工資,獎金視 為當月工作情況而定;技術(shù)經(jīng)理和銷售經(jīng)理都有 6000 元的固定工資,技術(shù)經(jīng)理的工作 業(yè)績可分為 3 個等級,每級可獲得 1000 元獎金,銷售經(jīng)理的獎金由他所管理的銷售

3、員 的銷售業(yè)績而定,總銷售額的 2% 職工工資管理系統(tǒng)的設(shè)計: 對于整個系統(tǒng)的設(shè)計思路是,首先,由員工輸入用戶信息,包括編號、姓名和職務; 然后,在計算某職工的當月工資時,系統(tǒng)先從已輸入的職工信息文件中獲取職工的工作 類型,接著調(diào)用不同的處理程序進行計算;最后將結(jié)果存檔。 從用戶需求中,可以發(fā)現(xiàn) 5 種類型的職員都可以分別設(shè)計為一個類。首先,他們都 屬于雇員,因此可以設(shè)計一個基類 employee(雇員) ,然后從中派生出 technician(技術(shù) 人員)類,salesman(銷售人員)類、secretary(文秘)類。對于技術(shù)經(jīng)理和銷售經(jīng)理 來說,他們都屬于經(jīng)理,所以設(shè)計時可以從 empl

4、oyee 類中派生出一個 manager(經(jīng)理) 類作為 techmanager(技術(shù)經(jīng)理)和 salesman(銷售經(jīng)理)類的父類。而經(jīng)理類本身并 不對應實際的員工類型,由于技術(shù)經(jīng)理有技術(shù)人員和經(jīng)理的雙重特點,因此 techmanager 類同時繼承 technician 類和 manger 類;銷售經(jīng)理有銷售人員和經(jīng)理的雙重 特點,因此 salesmanager 類同時繼承 salesman 類和 manager 類。 根據(jù)用戶需要 employee 類應該擁有的屬性有:編號、姓名、職務、月份和工資。 employee 類的服務可以包括 info() 、 search() 、countsa

5、lary() 、recordinfo()和 recordsalary() 。其中,info()函數(shù)用于接收用戶輸入的職工信息;search()函數(shù)用來根據(jù) 職工名查找職工信息;countsalary()函數(shù)為工資計算函數(shù),但在基類中為空,原因是各 類人員的工資計算方法不同,無法在基類中統(tǒng)一定義,必須在派生類中分別定義。 recordinfo()函數(shù)和 recordsalary()函數(shù)分別是職工信息和職工工資的記錄函數(shù),分別將信 息存入文件 info.txt 和 salary.txt。 具體的基類和派生類的定義如下圖: 二、對課程設(shè)計成果的要求(包括課程設(shè)計說明書、圖紙、圖表、實物等軟硬件要求)

6、二、對課程設(shè)計成果的要求(包括課程設(shè)計說明書、圖紙、圖表、實物等軟硬件要求) (1)分析職工工資管理系統(tǒng)程序結(jié)構(gòu): 畫出程序粗略的流程圖和各個模塊的 詳細流程圖,每個功能模塊用文字說明他們的功能(與對應流程圖放在 一起) ; (2)對你已經(jīng)實現(xiàn)的功能(修改的、新編寫的)做詳細的說明, 并附上流程 圖及程序清單。 (3)自己對該職工工資管理系統(tǒng)的進一步設(shè)想; (4)對于有設(shè)想但最終未實現(xiàn)的功能的大致編程思路的闡述; (5)論述在設(shè)計過程中遇到的并且對你具有啟發(fā)性的問題。 (6)嚴禁抄襲,發(fā)現(xiàn)雷同,雙方扣分嚴禁抄襲,發(fā)現(xiàn)雷同,雙方扣分。 三、課程設(shè)計工作進度計劃:三、課程設(shè)計工作進度計劃: 周一:

7、教師布置任務,講解本課設(shè)模塊。 周二:畫出主程序粗略的流程圖和各個模塊的詳細流程圖。 周三:設(shè)計程序及調(diào)試程序。同時著手寫報告。 周四:完成設(shè)計,提交報告,接受教師考評。 四、主要參考資料四、主要參考資料 (1) 面向?qū)ο蟪绦蛟O(shè)計 ,鄭莉,清華大學出版社, (2) 面向?qū)ο蟪绦蛟O(shè)計 c+語言,朱戰(zhàn)立等編 西安電子科技大學出版社 (3) 面向?qū)ο蟪绦蛟O(shè)計-visual c+,劉斌等編, 清華大學出版社 (4) 面向?qū)ο蟪绦蛟O(shè)計-c+語言描述, richard johnsonbaugh(美)等著,蔡宇輝 等譯,機械工業(yè)出版社, 2003 目錄目錄 1概述:概述:.6 1.1基本功能.6 2課題分析

8、課題分析.6 2.1類的設(shè)計.6 2.2類的實現(xiàn).6 3詳細設(shè)計說明詳細設(shè)計說明.8 3.1程序主界面.8 3.2方案.8 3.3程序描述(輸入input) .8 4課程設(shè)計總結(jié)課程設(shè)計總結(jié).9 5軟件使用說明軟件使用說明.10 6附錄(參考文獻,原代碼:)附錄(參考文獻,原代碼:).10 參考文獻:.10 原代碼.10 1 1概述概述 1.1 基本功能 輸入職工的姓名編號以 及相關(guān)信息,系統(tǒng)計算個職 工工資。職工分別有秘書、 技術(shù)經(jīng)理、技術(shù)人員、銷售 經(jīng)理、銷售人員。技術(shù)人員 的工資根據(jù)他當月工作的小 時數(shù)來定,時薪 35 元;銷售 人員的工資則是根據(jù)本人當 月銷售額來確定,工資為銷 售額的

9、 5%;文秘有 4000 元 的基本工資,獎金視為當月 工作情況而定;技術(shù)經(jīng)理和 銷售經(jīng)理都有 6000 元的固定工資,技術(shù)經(jīng)理的工作業(yè)績可分為 3 個等級,每級 可獲得 1000 元獎金,銷售經(jīng)理的獎金由他所管理的銷售員的銷售業(yè)績而定,總 銷售額的 2%。 功能一目了然,方便用戶使用 2.2.課題分析課題分析 類的設(shè)計及實現(xiàn) 本課程設(shè)計有 7 個類,分別是 employee1,secretary,technician,salesman,manager,technicianmanager,salesmanager7 個類。其中 technician、salesman 以及 manager 類在

10、繼承 employee1 的時候用了 virtual,如果不用這在調(diào)試的時候不通過。 技術(shù)人員類技術(shù)人員類 先寫公有成員函數(shù): 有讀入信息的構(gòu)造函數(shù)以及計算薪資的函數(shù)。 再寫私有型成員變量:要有工作的小時數(shù)以及單位小時工作的薪水。 具體寫法: class technician:virtual public employee1 private: float hourlyrate; int workhours; public: technician(); void setworkhours(int wh); void pay(); void promote(int); ; 銷售人員類銷售人員類 先

11、寫公有成員函數(shù): 有讀入信息的構(gòu)造函數(shù)以及計算薪資的函數(shù)。 再寫保護型成員變量:要有銷售額以及銷售額的百分比。 具體寫法: class salesman:virtual public employee1 protected: float commrate; float sales; public: salesman(); void setsales(float s1); void pay(); void promote(int); ; 文秘類 先寫公有成員函數(shù): 有讀入信息的構(gòu)造函數(shù)以及計算薪資的函數(shù)。 再寫保護型成員變量:要有固定工資以及獎金 具體寫法: class secretary:vi

12、rtual public employee1 protected: float monthlypay; float workpay; public: secretary(); void setworkpay(int wp); void pay(); void promote(int); ; 經(jīng)理類 先寫公有成員函數(shù):有讀入信息的構(gòu)造函數(shù)以及計算薪資的函數(shù)。 再寫保護型成員變量:要有固定工資 具體寫法: class manager:virtual public employee1 protected: float monthlypay; public: manager(); void pay()

13、; void promote(int); ; 技術(shù)經(jīng)理類 先寫公有成員函數(shù):有讀入信息的構(gòu)造函數(shù)以及計算薪資的函數(shù)。 再寫保護型成員變量:要有級別以及此級別的獎金。 具體寫法: class techmanager:virtual public manager,public technician /技術(shù)經(jīng)理類 public:techmanager(float x=1000); /技術(shù)經(jīng)理類的 構(gòu)造函數(shù) void countsalary(); /計算薪資的函 數(shù) protected:float gradebonus; /此級別的獎 金 int grade; /級別 ; 銷售經(jīng)理類 先寫公有成員函數(shù)

14、:有讀入信息的構(gòu)造函數(shù)以及計算薪資的函數(shù)。 再寫保護型成員變量:要有級別以及此級別的獎金。 具體寫法: class salesmanager:public manager,public salesman public: salesmanager(); void pay(); void promote(int); ; 3.3.詳細設(shè)計說明詳細設(shè)計說明 3.1 程序主界面 一個單文檔的界面(如右邊 兩張圖所示) ,以及附屬一個對 話框(用于用戶輸入信息) 。 3.2 方案 利用 vc 中 mfc(exe)來編 譯此程序。劃分功能,根據(jù)功能 分別設(shè)計出相應的類來實現(xiàn)程序。 設(shè)計出需要的類,即其功能,

15、再 組合在一起,并經(jīng)行改進達到理 想中的程序。 用 mfc 的臨一個好處則是方 便編譯員實現(xiàn)程序,并且界面比 較美觀,所以選用 mfc 來編寫此 程序 3.3 程序描述 由用戶輸入職工的姓名、編號、以及相應信息。程序源代碼清晰,一看就 能明白每條代碼的用處。程序的對話框簡潔明了,功能清晰。對于用戶的使用 很方便。對于編譯員日后對程序的改進升級也很方便。 設(shè)計流程圖設(shè)計流程圖 開始 顯示選項 提示輸入提示輸出 銷 售 人 員 信 息 秘 書 信 息 技 術(shù) 經(jīng) 理 信 息 銷 售 經(jīng) 理 信 息 技 術(shù) 人 員 信 息 顯示輸入的相關(guān) 信息 4 4 課程設(shè)計總結(jié)課程設(shè)計總結(jié) 在編譯此程序時總體還

16、是比較順利的,但難免會遇到個別問題。 比如一開始 technician 與 salesman 類在繼承 employee1 類的時候并未用 virtual 來繼承,編譯不通過,于是改用 virtual 來公共繼承 employee1 類。 剛開始的時候有用戶輸入的編號無法顯示,問題出在對話框中 edit 的控件弄錯 而倒是一系列的問題。之后又發(fā)現(xiàn)在銷售經(jīng)理與銷售人員的工資上發(fā)生錯亂。 開始并未發(fā)現(xiàn)是兩者工資錯亂,只是一味的以為是銷售經(jīng)理的工資計算出了問 題,進行多次改編以后依然毫無進展。于是與老師進行討論發(fā)現(xiàn)了兩個問題, 一個是兩者工資互換并且 commrate 無法提取數(shù)據(jù) salesman

17、ager:salesmanager() monthlypay=6000; commrate=2/100; void salesmanager:pay() accumpay=(sales*commrate)+monthlypay; void salesmanager:promote(int) employee1:promote(2); salesman:salesman() commrate=5/100; void salesman:setsales(float s1) sales=s1; void salesman:pay() accumpay=(sales*commrate); 并且經(jīng)行多次

18、改編依然無效,于是將 commrate 全部改成數(shù)據(jù)編譯通過。 而兩者的工資問題則在 emp 中 ddx_text(pdx, idc_edit13, m_ss1); ddx_text(pdx, idc_edit14, m_ss2); 將 ss1 與 ss2 互換問題得以解決。 至此程序完成。 5 5 軟件使用說明軟件使用說明 在對話框選擇 test-input data(如圖一) ,出現(xiàn)職員信息的對話框(如 圖二) ,將相應信息輸入按確定,再選擇 test-output data 就能讀取用戶所 輸入的信息了(如圖三) 。 6 6 附錄(參考文獻,源代碼:)附錄(參考文獻,源代碼:) 參考文獻

19、:c+語言程序設(shè)計(第三版) 源代碼:(部分) /employee1.cpp #includestdafx.h #include #include #include 圖一 圖二 #include #includewenjian.h #includeemployee1.h using namespace std; employee1:employee1() grade=1; accumpay=0.0; employee1:employee1() void employee1:promote(int increment) grade+=increment; void employee1:setna

20、me(char * names) strcpy(name,names); char* employee1:getname() return name; void employee1:setindividualempno(char * individualempnos) strcpy(individualempno,individualempnos); char* employee1:getindividualempno() return individualempno; int employee1:getgrade() return grade; float employee1:getaccu

21、mpay() return accumpay; technician:technician() hourlyrate=35; void technician:setworkhours(int wh) workhours=wh; void technician:pay() accumpay=hourlyrate*workhours; 圖三 void technician:promote(int) employee1:promote(2); manager:manager() monthlypay=6000; void manager:pay() accumpay=monthlypay; void

22、 manager:promote(int) employee1:promote(3); salesmanager:salesmanager() monthlypay=6000; commrate=2/100; void salesmanager:pay() accumpay=(sales*0.02)+6000; void salesmanager:promote(int) employee1:promote(2); salesman:salesman() commrate=5/100; void salesman:setsales(float s1) sales=s1; void salesm

23、an:pay() accumpay=(sales*0.05); void salesman:promote(int) employee1:promote(0); technicianmanager:technicianmanager() monthlypay=6000; void technicianmanager:setlevel(int dj) dengji=dj; void technicianmanager:pay() accumpay=monthlypay+(1000*dengji); void technicianmanager:promote(int) employee1:pro

24、mote(2); secretary:secretary() monthlypay=4000; void secretary:setworkpay(int wp) workpay=wp; void secretary:pay() accumpay=workpay+monthlypay; void secretary:promote(int) employee1:promote(0); class fileexception public: fileexception() :message(file is not created !) const char *what() constreturn

25、 message; private: const char *message; ; int main() technician t1; secretary st1; salesmanager sm1; technicianmanager tm1; salesman s1; char namestr20; char individualempnostr1000; vector vchar; vchar.push_back( vchar.push_back( vchar.push_back( vchar.push_back( vchar.push_back( int i; for(i=0;i5;i

26、+) coutnamestr; vchari-setname(namestr); coutindividualempnostr; vchari-setindividualempno(individualempnostr); vchari-promote(i); cout請輸入兼職技術(shù)人員t1.getname()wh; t1.setworkhours(wh); cout請輸入秘書姓名st1.getname()wp; st1.setworkpay(wp); cout請輸入銷售經(jīng)理sm1.getname()sl; sm1.setsales(sl); cout請輸入推銷人員s1.getname()sl

27、; s1.setsales(sl); cout請輸入技術(shù)經(jīng)理tm1.getname()l; tm1.setlevel(l); ofstream ofile(employee.txt,ios_base:out); for(i=0;ipay(); ofile職工 getname() 編號 getindividualempno() 級別為 getgrade() 級,本月工 資 getaccumpay()endl; ofile.close(); cout職員信息已存入文件endl; ifstream infile(employee.txt,ios:in); try if(! infile) throw

28、 fileexception(); catch (fileexception fe) coutfe.what()endl; exit(0); cout從文件中讀取信息并顯示如下:endl; char line101; for(i=0;i5;i+) infile.getline(line,100); coutlineendl; infile.close(); return 0; /employee1.h class employee1 protected: char name20; char individualempno1000; int grade; float accumpay; publ

29、ic: employee1(); employee1(); virtual void pay()=0; virtual void promote(int increment = 0); void setname(char *); char * getname(); void setindividualempno(char *); char * getindividualempno(); int getgrade(); float getaccumpay(); ; class secretary:virtual public employee1 protected: float monthlyp

30、ay; float workpay; public: secretary(); void setworkpay(int wp); void pay(); void promote(int); ; class technician:virtual public employee1 private: float hourlyrate; int workhours; public: technician(); void setworkhours(int wh); void pay(); void promote(int); ; class salesman:virtual public employ

31、ee1 protected: float commrate; float sales; public: salesman(); void setsales(float s1); void pay(); void promote(int); ; class manager:virtual public employee1 protected: float monthlypay; public: manager(); void pay(); void promote(int); ; class salesmanager:public manager,public salesman public:

32、salesmanager(); void pay(); void promote(int); ; class technicianmanager:public manager,public technician private: int dengji; public: technicianmanager(); void setlevel(int dj); void pay(); void promote(int); ; /employeeview.cpp(部分代碼) void cemployeeview:oninputdata() / todo: add your command handle

33、r code here technicianmanager tm1; technician t1; salesman s1; salesmanager sm1; secretary st1; vector vchar; vchar.push_back( vchar.push_back( vchar.push_back( vchar.push_back( vchar.push_back( emp ed; ed.domodal(); vector vread; vread.push_back(ed.m_str1); vread.push_back(ed.m_str2); vread.push_back(ed.m_str3); vread.push_back(ed.m_str4); vread.push_back(ed.m_str5); vread.p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論