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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目 錄1 前言12 需求分析12.1 任務和要求12.2 運行環(huán)境12.3 開發(fā)工具13 分析和設計23.1 系統(tǒng)分析及設計思路23.2 主要類圖23.3 函數(shù)流程圖34 具體代碼實現(xiàn)45 課程設計總結105.1 程序運行結果或預期運行結果105.2 設計結論12參考文獻13致謝141 前言某公司內有5種不同類型的職工: 技術人員(technician)、銷售人員(salesman)、文秘(secretary)、技術經(jīng)理(tech-manager)、銷售經(jīng)理(sales-manager)。他們的工資計算方式各不相同:1) 技術人員的工資根據(jù)他當月工作的小時數(shù)來定,時薪為35元;2) 銷售人員的

2、工資則是根據(jù)本人當月銷售額來確定,工資為銷售額的5%;3) 文秘有4000元的基本工資,獎金視當月工作情況而定;4) 技術經(jīng)理和銷售經(jīng)理都有6000元的固定工資,技術經(jīng)理的工作業(yè)績可分為3個等級,每級可以獲得1000元獎金,5) 銷售經(jīng)理除有6000元的固定工資外,銷售經(jīng)理的獎金由他所管理的銷售員的銷售業(yè)績而定,為總銷售額的0.2%。為此設計一個工資管理系統(tǒng)管理職工的信息。2 需求分析2.1 任務和要求使用C+面向對象程序設計一個簡易的工資管理系統(tǒng)。,系統(tǒng)的主要功能是:根據(jù)不同的職工,計算職工當月工資。確定程序至少應該具備如下功能:.輸入職工, 添加職工,刪除職工,結算工資,等基本模塊。1)輸

3、入職工: 用class person *creat(void) 函數(shù)創(chuàng)建鏈表。2)添加職工: 用class person *insert(class person *head,class person *pe)函數(shù)添加。3)刪除職工:用class person *del(class person *head,double num) 函數(shù)刪除。4)結算工資:用void selary(class person *head) 函數(shù)計算。2.2 運行環(huán)境(1)WINDOWS2000/XP系統(tǒng)(2)Visual C+ 6.0編譯環(huán)境或DEV C+ 5.0編譯環(huán)境2.3 開發(fā)工具C+語言3 分析和設計3.

4、1 系統(tǒng)分析及設計思路首先公司有五類人,各類之間又有相同的部分例如:姓名、職工號等,所以定義一個基類Person,四類人相同部分為基類數(shù)據(jù)成員。由基類Person再派生出各類:技工類Technician類、售貨員類Salesman、文秘類Secretary、技術經(jīng)理類Tech-manager、銷售經(jīng)理類Sales-manager。(1) Person類:包含: num,wage,year, name10,post10,sex等數(shù)據(jù)成員等。要完成結算工資操作,需要設計virtual void pay()作為成員函數(shù)。(2)Technician類:繼承Person類,增加hours數(shù)據(jù)。(3)Sa

5、lesman類:繼承Person類,增加sales數(shù)據(jù)。(4) Secretary類:繼承Person類,增加bonus數(shù)據(jù)。(5)Tech-manager類:繼承Person類,增加bonus數(shù)據(jù)(6)Sales-manager類:繼承Person類,增加sumsales數(shù)據(jù)。然后分析系統(tǒng)管理需要有幾個功能,分別是輸入職工,添加職工,刪除職工以及結算工資。我們?yōu)檫@幾個功能分別建立對應的函數(shù)來實現(xiàn):class person *creat(void) 、class person *insert(class person *head,class person *pe)、class person *

6、del(class person *head,double num) 、void selary(class person *head) 。并且還有輸出函數(shù)print()以及保存信息函數(shù)save()最后主函數(shù)的實現(xiàn)。由于是有選擇的菜單,首先想到了switch選擇語句。當輸入不同值時,進入不同的case部分以實現(xiàn)不同的功能。case1的功能是實現(xiàn)數(shù)據(jù)的輸入。用creat()函數(shù)創(chuàng)建職工信息,按照提示分別輸入職工的信息:編號、姓名、性別、出生年份,并用save()函數(shù)保存信息。case2的功能是實現(xiàn)數(shù)據(jù)的添加。用malloc動態(tài)分配內存空間,然后輸入要添加的職工信息。用insert()函數(shù)添加進去。

7、用print()函數(shù)輸出并保存。case3的功能是實現(xiàn)數(shù)據(jù)的刪除。根據(jù)提示輸入你要刪除的職工編號。按照你輸入的編號,用del()函數(shù)輸出該職工的所有信息。case4的功能是計算職工的工資。根據(jù)不同的職工類別計算工資。3.2 主要類圖圖3.1 主要類圖3.3 函數(shù)流程圖(1)主函數(shù)流程圖3.2 主函數(shù)流程圖 4 具體代碼實現(xiàn)#include#include#include#include#include#define NULL 0#define LEN sizeof(class person)class personpublic:virtual void pay()double num,wage

8、,year;char name10,post10,sex;class person *next;int n;class Technician:public personpublic:void pay()couthours;wage=35*hours;cout工資:wageendl;protected:double hours;class Salesman:public personpublic: void pay()coutsales; wage=0.05*sales;cout工資:wageendl;double sales;class Secretary:public personpubli

9、c:Void pay()coutbonus;wage=4000+bonus;cout工資:wageendl;protected:double bonus;class Techmanager:public personpublic:void pay()coutbonus;wage=6000+bonus;cout工資:wageendl;protected:double bonus;class Salesmanager:public personpublic:void pay()cout總銷售額:sumsalesendl;wage=6000+sumsales*0.002; cout工資:wagep1

10、-postp1-nump1-namep1-sexp1-year; head=NULL;while(p1-num!=0)n=n+1;if(n=1)head=p1;else p2-next=p1;p2=p1;p1=(class person *)malloc(LEN);cinp1-postp1-nump1-namep1-sexp1-year;p2-next=NULL;return(head);void print(class person *head) / 輸出職工class person *p;coutn個職工信息:endl;cout職務 編號 姓名 性別 出生年份 endl;p=head;if

11、(head!=NULL)docoutpost num name sex yearnext;while(p!=NULL);class person *del(class person *head,double num) / 刪除職工class person *p1,*p2;if(head=NULL)coutlist null!num&p1-next!=NULL)p2=p1;p1=p1-next;if(num=p1-num)if(p1=head)head=p1-next;else p2-next=p1-next;coutdelete:numendl; n=n-1;else cout num not

12、 been found!next=NULL;elsewhile(p0-nump1-num)&(p1-next!=NULL)p2=p1;p1=p1-next;if(p0-numnum)if(head=p1)head=p0;else p2-next=p0; p0-next=p1; elsep1-next=p0; p0-next=NULL; n=n+1;return(head);void save(class person *head) / 保存文件class person *p;ofstream outfile(職工.txt,ios:out);if(!outfile)cerropen error!

13、endl;exit(1);p=head;if(head!=NULL)dooutfilepost num name sex yearnext;while(p!=NULL);outfile.close();void selary(class person *head) / 計算工資class person *p;Technician te;Salesman sa;Secretary se; Techmanager tm; Salesmanager sm;sm.sumsales=0;ifstream infile(職工.txt,ios:in);if(!infile)cerropen error!p-

14、postp-nump-namep-sexp-year;coutpost num name sex year numnumnum200)sa.pay();sm.sumsales=sa.sales+sm.sumsales;if(p-numnum300)se.pay();if(p-numnum400)tm.pay();if(p-numnum500)sm.pay();p=p-next;while(p!=NULL);infile.close();int main() class person *head,*pe; double delnum;int menu; while(1) cout*endl; c

15、out*=菜單選頂=*endl; cout*=*endl; cout* 1.輸入職工 2.添加職工 3.刪除職工 4.結算工資 *endl; cout*endl; cout編號:技工(101-199) 售貨員(201-299) 文秘(301-399) endl 技術經(jīng)理(401-499)銷售經(jīng)理(501-599)endl; coutendlmenu; switch(menu) case 1:coutendl輸入職工:endl; cout職務 編號 姓名 性別 出生年份 endl; head=creat();print(head);save(head); break; case 2:couten

16、dl添加職工:endl; cout職務 編號 姓名 性別 出生年份 pe-postpe-numpe-namepe-sexpe-year;while(pe-num!=0)head=insert(head,pe);print(head);save(head);pe=(class person *)malloc(LEN);cinpe-postpe-numpe-namepe-sexpe-year;break;case 3:coutendldelnum;while(delnum!=0)head=del(head,delnum);print(head);save(head);coutendldelnum;

17、break;case 4:selary(head);break; return 0;5 課程設計總結5.1 程序運行結果或預期運行結果圖5.1實驗結果圖圖5.2實驗結果圖圖5.3實驗結果圖圖5.2實驗結果圖5.2 設計結論本次設計我們組的題目是職工工資管理系統(tǒng),因為事先老師的細心指導,我們才得以的完成這次課程設計。在系統(tǒng)分析和設計的部分仍然花了比較多的時間,特別是源代碼的編寫和調試,經(jīng)過反復的改寫、調試、再改寫、調試,我們最終完成了任務。經(jīng)過對職工信息管理系統(tǒng)的分析與編寫,我們得到了很大的收獲。自主學習的必要性更是解決問題的基礎,我們二個人一組,在設計的過程中,我們相互討論,相互學習,發(fā)揮出各

18、自的優(yōu)勢,發(fā)現(xiàn)自己的不足,取長補短,增強了團隊意識。更重要的是這次設計讓我們對C面向對象設計編程有了更深刻的認識和更全面的掌握,也提升了我們分析問題的能力和思考問題的邏輯能力,更明白實際調研的重要性。對面向對象編程有了深刻的理解,對軟件工程有了了解。在以后的學習中我們會更加的努力,深刻的鉆研,增強團隊意識。通過這次課程設計,我們加深了對類與派生的理解。類與派生類之間的關系,通過上機實踐得到了進一步的深化。從數(shù)據(jù)成員的繼承到派生類對象對基類成員函數(shù)的調用。整個實習過程讓我的C+知識得到了應用,體驗了程序員編程時的喜怒哀樂,知識、心智,得到全方位提升,收獲頗豐。參考文獻1 龔曉慶,付麗娜,朱心懿.C+面向對象程序設計.北京:清華大學出版社,2012 揣錦華等編.C+程序設計語言.西安:西安電子科技大學出版社,20033 呂鳳翥著.C+語言基礎教程.北京:清華大學出版社,20014張國峰編著.C+語言及其程序設計教程.北京:電子工業(yè)出版社,1996.6 鄭莉,董淵,張瑞豐.C+語言課程設計(第

溫馨提示

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

評論

0/150

提交評論