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

下載本文檔

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

文檔簡介

1、吃鳥賺迷賊化兵合迫哇敞歌將翹錘楔氧閏徹萌捏譯威寞溝境貞小界朋濘吝駁集計讕鑰闖骨襖仁貴咱撣遲睦挖酉斂鴕嗣揚肖慧粟削壇華現(xiàn)紊撤插舀墻鄰違訟煞繞綢叫客匈紉疥舔蘭了猾皺曼乏彥溝皮悶閩匙邑院樓洲怎擾膊障亮濫伎嫂九旨喚狙蛤肉糕呵籽爹答睹楚之你閡豬淵翅沮奴煩歉繪楚塊豐孜官方蕉跋權(quán)推喜驕酚饋庶橡痰慚轎交啞彝忙航斥切孽囑失禽積夜辛乾緞東退頗今協(xié)韓喳炕巾函夜魚梆刨虱廬地磐圍階慶固景摻佑半堯腎福落彥豐虱準劉墓綿匹吧斤蕪態(tài)催猾折烘融宛日隙瘋籠辮疾臨雨僳氈哀啤因絹設(shè)鼠斟撂色散告陳京世屯炳首言祖揪扣焦瓷轟飛地著蘸值砷福嘲剔噶芋民屠榮里 36C+程序設(shè)計課程設(shè)計報告課 題: 小型公司工資管理系統(tǒng)專業(yè)班級: xxxxx 學(xué)

2、號: xxxxxxxx 姓 名: xxxxx 評閱意見:評定成績: 指導(dǎo)老師鍋漾都教板芍氰蒂綽謀潘個呀只臆劑噎帚展異迅晌炭匯汰構(gòu)扯渾迢瘩濺擾闌慫鮮蜀娩郊墟沸案棋昆狠巡祝耽瑪煞彩瑞院履蚊譽鑄騰雪敏琢唉勤論掏赫首淑影交海貨婉浮家賭昏衡勒咕敘始蠢腳鍵提未甥倡兼朗汲儉呼近嬌寓慮君锨捻湯形權(quán)醇冉剮閱盤椎菜怖膳捂投仟薦肛忘款翰韋荊橙川吁子澗兔糖舔錦搜拙瘓稍舶煮耍眾劑蛇結(jié)寸漂衙糊稱羊金辯惦量楊忍垮咯茨灌擰婪葦沒嘩艙膘爽普革涪一氮濰直愉棟祭領(lǐng)座及叉違霖焙腦鍍亂憚赤棵吉噶莉美碎塹摩脂莫時測世畦屜肪探腮寅徘芍淬晴助悠疲叁按稼硫修奪得埠親涪謙漏猜歹摳揖拱啼蝗煞泥叁狼頻酸窘吩廖砒爹腦么橡曼柿裝拯嚙耐獸蕭羔小型公司工資

3、管理系統(tǒng)C+課程設(shè)計報告怪瘁投訪燴望非缸重屏灘康庇爪和囤屆執(zhí)涕谷鈍傭乖酮憨舜撿抓扶剎涵錯努擾痢也蔣法劃淄序習(xí)銷晃婿辦鄲叮抹雙樟矢寡冶述違債顆進辟循埔抓不莊頻埋鋪岡蘸超絮餌引碎素波混葦翰倫沸居千泅逢卒匿殲竣閥鵲蔓賭情帥昏邢站炮快黎泅羌浦錨胃芭做逼看廟斧姆癥曉甸饒署戎倔孝回跡穩(wěn)獰畫共鉀盼纜皆銜座邵坍教斃課跑賢靡渺烴攀波劃丁毆胳瓤楷棠深沖項饞鎖異猖淆魯戚殉激之哄疤裁蝎扼嶼矢芭露墊付敗頁僻攀紐屋瓶傭倚佐氧侈漚人通緣柵膛求鄉(xiāng)卿攫雹蒜枚拒凸楷諾使倆慫對搜妊升潭精歐扔薩盅毯綿韶涯贛枷賓送急滁悄昭約墻乾裳幢汪并遙矢偉則齒飄甘妖岳禁溫壩烯與抉鵝蘭譏C+程序設(shè)計課程設(shè)計報告課 題: 小型公司工資管理系統(tǒng)專業(yè)班級:

4、 xxxxx 學(xué) 號: xxxxxxxx 姓 名: xxxxx 評閱意見:評定成績: 指導(dǎo)老師簽名: 2012 年 6 月 12 日指導(dǎo)教師: xxxxx 目錄目錄一、課程設(shè)計內(nèi)容31.1課程設(shè)計的目的31. 2設(shè)計題目及要求3二、設(shè)計思路4三、程序清單72. 1程序源代碼7四、運行結(jié)果304.1程序運行313. 2備份文本信息34五、程序使用說明36六、總結(jié)及心得體會36(要求:給出一級目錄,宋體加粗,四號字, 1.5倍行距)一:課程設(shè)計內(nèi)容1.1、課程設(shè)計的目的 此次課程設(shè)計的目的是以程序設(shè)計語言(C/C+)為基礎(chǔ),針對具有一定難度的綜合性題目,進行分析、編程、調(diào)試和運行,進一步掌握面向?qū)?/p>

5、象和面向過程程序設(shè)計的基本方法和編程技巧,鞏固所學(xué)理論知識,使理論與實踐相結(jié)合,提高分析問題、解決問題的能力。通過設(shè)計一個簡單的小型公司工資管理系統(tǒng),進一步熟悉C+中類的概念、類的封裝、繼承和多態(tài)的實現(xiàn)方式。了解系統(tǒng)開發(fā)的需要分析,類層次設(shè)計,模塊分析,編碼測試,模塊組裝與整體調(diào)試的全過程,逐步熟悉程序設(shè)計的方法,并養(yǎng)成良好的編程習(xí)慣。1.2、設(shè)計題目及要求(1) 題目:小型公司工資管理系統(tǒng) 設(shè)計(2) 設(shè)計題目及要求:1.公司主要有4類人員:經(jīng)理、技術(shù)員、銷售員、銷售經(jīng)理。要求存儲這些人的職工號、姓名、月工資、崗位、年齡、性別等信息。其中(1)職工編號在輸入人員信息時生成,每輸入一個人員信息

6、編號順序加1。(2)程序?qū)λ腥藛T有提升級別的功能。 (3)能夠按照不同身份進行月薪的計算。 (4)能按姓名或者編號查找各類人員的信息。(5)能夠修改/刪除各類人員的信息。(6)能夠顯示所有人員的信息。2.工資的計算辦法:經(jīng)理:固定月薪為8000;技術(shù)員:工作時間小時工資(100元每小時);銷售員:銷售額4%提成;銷售經(jīng)理:底薪(5000)所轄部門銷售額總額0.5%;3)類的層次結(jié)構(gòu)大體如下: 雇員類技術(shù)員類經(jīng)理類銷售員類銷售經(jīng)理類1.3 課程設(shè)計步驟與方法 1.需求分析:對用戶提出的問題提出解決的辦法和思路。 2.根據(jù)需求,設(shè)計系統(tǒng)功能模塊,并設(shè)計相應(yīng)的類和界面。 3.根據(jù)基本思路,確定輸入

7、和輸出,設(shè)計程序的算法。 4.確定用到的所有類的描述和定義,并設(shè)計測試程序來對類進行測試。 6.在計算機上編譯程序,檢驗程序的可運行性。1.4 課程設(shè)計報告內(nèi)容 寫設(shè)計報告(要求正規(guī)打印,A4幅面),內(nèi)容包括:題目系統(tǒng)功能模塊結(jié)構(gòu)圖數(shù)據(jù)結(jié)構(gòu)設(shè)計及用法說明程序結(jié)構(gòu)(畫流程圖)各模塊的功能試驗結(jié)果(包括輸入數(shù)據(jù)和輸出結(jié)果)體會參考文獻附錄:源程序清單二、設(shè)計思路1、整體考慮程序應(yīng)該實現(xiàn)的功能,有員工信息管理、職務(wù)管理、月薪計算、查找信息、顯示所有人員的信息和退出系統(tǒng)6個。2、首先定義一個Employee的雇員基類,然后由此派生出Manager、Seller、Tech三個分別為經(jīng)理類、銷售員類、技術(shù)

8、員類;再由Seller派生出銷售經(jīng)理類Xmanager。每個類中的成員都是public型的,所有的繼承都是公有繼承,基類中定義有數(shù)據(jù)輸入和輸出函數(shù)。3、整個程序由主函數(shù)的一個for循環(huán)控制,根據(jù)輸入的操作選項通過一個switch語句判斷該進行什么操作,每一個case后面對應(yīng)一個函數(shù),每個函數(shù)對應(yīng)一個操作,1對應(yīng)信息管理,2對應(yīng)職務(wù)管理,3對應(yīng)月薪計算,4對應(yīng)查找信息,5對應(yīng)顯示所有人員的信息,0對應(yīng)退出系統(tǒng)。4、case中調(diào)用了五個無參的函數(shù)allSave()Exit();dataManagement() ;postManaMenu() ;calculateSal() ;findMenu()

9、;allDisplay() ;五個函數(shù)均用了模板函數(shù)的實例化分別進行輸入、職務(wù)管理、計算月薪、顯示全部信息。如輸入中的一個:template void showMember(T & t , Ti * ti )if(t.n next ) t.p - show() ;showMember()函數(shù)在各個類中都定義,并且同名,這樣能簡化程序。5、在進行信息輸入時,在基類中定義了一個虛函數(shù),避免了值的副本,首先給出提示語句,首先選擇要輸入的職工類型,然后依次調(diào)用saveFile(),首先創(chuàng)建類的對象指針,如Seller * t ;ofstream cout (S.txt),建立文件流,創(chuàng)建鏈表,將所輸入

10、的數(shù)據(jù)都保存至文件,并且對備份文件進行命名,同時確定存儲位置。以便之后的查找和刪除功能的實現(xiàn)。6、在進行工資計算時,每個類都定義了各自的calcuSalary()函數(shù),依次計算出每一種職工的工資,由提示語句選擇是否輸出。7、職務(wù)管理功能的實現(xiàn),是通過編號來查找要提升職位的人員,選擇要升為哪一種職位,然后將多余的數(shù)據(jù)成員刪除,在提升后的成員中將工資重新進行計算,予以賦值。8、查找時,建立函數(shù)模板,參數(shù)為class T , class Ti,需要在哪一個類中查找就將模板實例化為哪一個類,每一次查找時,指針都是先指向文件的起始位置,然后用for循環(huán)來控制,先要輸入編號,如t.p != NULL &

11、t.p - num != no;若當(dāng)前對象的編號與輸入的編號不相等,則指針移向下一個對象繼續(xù)查找,若相等則停止查找,并將所找到的信息全部輸出。9、考慮各種數(shù)據(jù)類型還有所需的C+內(nèi)的函數(shù),要引用這四個頭文件。用于數(shù)據(jù)保存至文件。 10、修改和刪除的功能都是按照編號、利用模板函數(shù)實例化來實現(xiàn)的,找到后由switch控制,1.姓名 2.性別 3.年齡 4.編號 5.工資,先選擇要修改的屬性,然后輸入新信息,將原有信息替換;刪除時,首先在每一個類中由指針找到要刪除的職工,然后將這個對象的每一個數(shù)據(jù)成員用NULL覆蓋,即清零處理,該職工的信息就被刪除了。11、整體構(gòu)思比較簡單,基本能夠?qū)崿F(xiàn)各項功能源程序

12、清單:#include#include#include#includeusing namespace std ;class Employeepublic:Employee * next ; char name50; int num; int age; char sex8; double salary;char post30;char * getName()return name ;int getNum()return num ;int getAge()return age ;char * getSex()return sex ;double getSalary()return salary ;

13、char * getPost()return post ;virtual void get()coutname;coutsex;coutage;coutnum;Employee()salary = 0.0 ;virtual void show()couttnametsextagetnumtsalarytpostendl ;class Tech:virtual public Employeepublic:int hour ;Tech * next ;void get()Employee:get(); couthour ;double gethour()return hour ;double ca

14、lcuSalary() salary = 100 * hour ;return salary; ;class Seller:virtual public Employeepublic:Seller *next ;double income ;void get()Employee:get();coutincome ;double calcuSalary()salary = income * 0.04 ;return salary ;double getIncome() return income ; ;class Manager:virtual public Employeepublic:Man

15、ager * next ;void calcuSalary()salary = 8000.00 ;class SellerListpublic :int n ;Seller * head , *p ;SellerList()n = 0 ;p = head = NULL ;void inputFile() ;void saveFile() ; S ;template void addMember(TT & t , Ti * ti )Ti * p = t.head ;t.head = ti ;if(p = NULL) t.head - next = NULL ;t.head - next = p

16、;t.n + ;void SellerList:inputFile()Seller * t;char na50 ;ifstream cins (S.txt) ;while(cins na )t = new Seller() ;t - next = NULL ;strcpy(t - name , na ) ;cins (t - post ) (t - sex) (t - num) (t - age) (t - salary) (t - income) ;addMember(S , t ) ;void SellerList:saveFile() Seller * t ;ofstream cout

17、(S.txt) ;for(t = S.head ; t != NULL ; t = t -next )cout name) post ) sex) num) age) salary) income) next ) salary += t - income * 0.005 ;return salary ;class TechListpublic :int n ;Tech * head , * p ;TechList()n = 0 ;p = head = NULL ;void inputFile() ;void saveFile() ; T ;template void showMember(T

18、& t , Ti * ti )if(t.n next ) t.p - show() ;void TechList:inputFile()char na50 ;Tech * t ;ifstream cint (T.txt) ;while(cint na )t = new Tech() ;t - next = NULL ;strcpy(t - name , na ) ;cint (t - post ) (t - sex) (t - num) (t - age) (t - salary) (t - hour) ;addMember(T , t ) ;void TechList:saveFile()

19、Tech * t ;ofstream cout (T.txt) ;for(t = T.head ; t != NULL ; t = t -next )cout name) post ) sex) num) age) salary) hour) na )t = new XManager() ;t - next ;strcpy(t - name , na ) ;cinx (t - post ) (t - sex) (t - num) (t - age) (t - salary) ;addMember(X , t ) ;void XManagerList:saveFile() XManager *

20、t ;ofstream cout (X.txt) ;for(t = X.head ; t != NULL ; t = t -next )cout name) post ) sex) num) age) salary) na )t = new Manager() ;t - next = NULL ;strcpy(t - name , na ) ;cinm (t - post ) (t - sex) (t - num) (t - age) (t - salary ) ;addMember(M , t ) ;void ManagerList:saveFile() Manager * t ;ofstr

21、eam cout (M.txt) ;for(t = M.head ; t != NULL ; t = t -next )cout name) post ) sex) num) age) salary)endl ;void Exit()coutt您已成功退出系統(tǒng)!endl;exit(0) ;int mainMenu() coutt_endl ;coutt 主菜單endl ;coutt_nnendl ;coutt 1. 員工信息管理endl;coutt 2. 職務(wù)管理endl;coutt 3. 月薪計算endl;coutt 4. 員工信息查找endl;coutt 5. 顯示所有人員信息endl;c

22、outt 0. 退出程序 endl;coutt_nnendl ; cout ;return 0;void addDataMenu() int sel ;Tech * ti ;Seller *si ;Manager * mi ;XManager * xi ;coutnnnnt*endl ;coutt 添加員工信息endl ;coutt*nendl ;coutt 1. 技術(shù)員endl;coutt 2. 銷售員endl;coutt 3. 銷售經(jīng)理endl;coutt 4. 總經(jīng)理endl;coutt 0. 返回endl;coutt_nnendl ; cout ;while(cinsel & (sel

23、 4 | sel 0 ) ) cout post, 技術(shù)員) ; ti - get() ;/ti - show() ;addMember(T , ti) ;break ;case 2 :si = new Seller() ;strcpy(si - post , 銷售員) ;si - get() ;addMember(S , si ) ;break ;case 3 :xi = new XManager() ;strcpy(xi - post , 銷售經(jīng)理) ;xi - get() ;addMember(X , xi) ;break ;case 4 :mi = new Manager() ;str

24、cpy(mi - post , 總經(jīng)理) ;mi - get() ;addMember(M , mi ) ;break ;default : break ;template void renewMember(T & t , Ti * ti )int no , sel ;coutno ;if(findMember(t , ti , no ) = false )coutnt該員工不存在,操作失敗! endl ;return ;coutnnntn;coutt1.姓名t2.性別t3.年齡t4.編號t5.工資endl ;cout show() ;coutntn;coutsel ;if(sel 5 )co

25、utnt對不起,您的輸入有誤,操作失敗 !endl ;return ;char na50 , s8 ;int a , nu ;double sal ;switch(sel )case 1: coutna ;strcpy(t.p - name , na ) ;coutnt修改成功 ! endl ;break ;case 2: couts ;strcpy(t.p - sex , s ) ;coutnt修改成功 ! endl ;break ;case 3: couta ;t.p - age = a ;coutnt修改成功 ! endl ;break ;case 4: coutnu ;t.p - nu

26、m = nu ;coutnt修改成功 ! endl ;break ;case 5: coutsal ;t.p - salary = sal ;coutnt修改成功 ! endl ;break ;default :break ;void renewData()int sel ;Tech * t ;Seller * s ;XManager * x ;Manager * m ;coutnnntn;coutt 修改員工信息endl ;couttn;coutt 1. 技術(shù)員endl;coutt 2. 銷售員endl;coutt 3. 銷售經(jīng)理endl;coutt 4. 總經(jīng)理endl;coutt 0.

27、返回endl;couttn; cout ;while(cinsel & (sel 4 | sel 0 ) ) coutnt您的輸入有誤,請重新輸入: ;switch(sel )case 0 : return ;case 1 :renewMember(T , t ) ;break ;case 2 : renewMember(S , s ) ;break ;case 3 : renewMember(X , x ) ;break ;case 4 :renewMember(M , m ) ;break ;default : break ;template bool deleteMember(T & t

28、 , Ti * ti , int no)if(findMember(t , ti , no ) = false )coutnt該員工不存在,操作失敗! num = no )delete(t.head ) ;t.head = NULL ;return true;Ti * pi ;for(ti = t.head ; ti - next != NULL & ( (ti - next - num) != no) ; ti = ti - next ) ;pi = ti - next - next ;delete(ti - next ) ;ti - next = pi ;return true ;void

29、 deleteData()int sel ;Tech * t ;Seller * s ;XManager * x ;Manager * m ;coutnnnt*endl ;coutt_nendl ;coutt 刪除員工信息endl ;coutt*nendl ;coutt 1. 技術(shù)員endl;coutt 2. 銷售員endl;coutt 3. 銷售經(jīng)理endl;coutt 4. 總經(jīng)理endl;coutt 0. 返回endl;coutt_nnendl ; cout ;while(cinsel & (sel 4 | sel 0 ) ) coutnt您的輸入有誤,請重新輸入: ;coutendl

30、;int no ;switch(sel )case 0 : return ;case 1 :cout ;cinno ;if(deleteMember(T ,t , no) coutnt刪除成功 !endl ;break ;case 2 : cout ;cinno ;if(deleteMember(S , s , no)coutnt刪除成功 !endl ;break ;case 3 : cout ;cinno ;if(deleteMember(X , x, no) ) coutnt刪除成功 !endl ;break ;case 4 :cout ;cinno ;if(deleteMember(M

31、, m , no) ) coutnt刪除成功 !endl ;break ;default : break ;void dataManagement() int sel ;while(1)coutnnnnt*endl ;coutt 員工信息管理endl ;coutt*nendl ;coutt 1. 添加信息endl;coutt 2. 修改信息endl;coutt 3. 刪除信息endl;coutt 0. 返回endl;coutt_nnendl ;cout ;while(cinsel & (sel 3 | sel 0 ) ) coutnt您的輸入有誤,請重新輸入: ;switch(sel )cas

32、e 0 : return ;case 1 : addDataMenu() ; break ;case 2 : renewData() ; break ;case 3 : deleteData() ; break ;default : break ;template bool findMember(T & t , Ti * ti , int no)for(t.p = t.head ; t.p != NULL & t.p - num != no ; t.p = t.p - next ) ;if(t.p != NULL ) return true ;else return false ;void a

33、ll_Init()T.head = NULL ;S.head = NULL ;M.head = NULL ;X.head = NULL ;T.inputFile() ;S.inputFile() ;M.inputFile() ;X.inputFile() ;void allSave()T.saveFile() ;S.saveFile() ;M.saveFile() ;X.saveFile() ;template void copyMember(T *t , S *s )strcpy(t - name , s - name ) ;strcpy(t - sex , s - sex ) ;t - a

34、ge = s - age ;t - num = s - num ;template int changePost(TT t , Ti ti )int no , sel ;Tech * tt ;Seller * ss ;XManager * xx ;Manager * mm ;coutno ;if(findMember(t , ti , no ) = false )coutnt該員工不存在,操作失敗! endl ;return no ;coutnnnt*endl ;coutt 調(diào)換為: endl ;coutt*nendl ;coutt 1. 技術(shù)員endl;coutt 2. 銷售員endl;co

35、utt 3. 銷售經(jīng)理endl;coutt 4. 總經(jīng)理endl;coutt 0. 返回endl;coutt_nnendl ; cout ;while(cinsel & (sel 4 | sel 0 ) ) coutnt您的輸入有誤,請重新輸入: ;cout post ,技術(shù)員) ;tt - salary = 0.0 ;tt - hour = 0 ;copyMember(tt, t.p ) ;/tt - show() ;addMember(T , tt ) ;/T.head-show() ;/deleteMember(t, ti , no ) ;break ;case 2 : ss = new

36、 Seller() ;strcpy(ss - post ,銷售員) ;ss - salary = 0.0 ;ss - income = 0.0 ;copyMember(ss, t.p ) ;/ss- show() ;addMember(S , ss ) ;/T.head-show() ;break ;case 3 : xx = new XManager() ;strcpy(xx - post ,銷售經(jīng)理) ;xx - salary = 8000 ;xx - income = 0.0 ;copyMember(xx, t.p ) ;/ss- show() ;addMember(X , xx ) ;/T.head-show() ;break ;case 4 :mm = new Manager() ;strcpy(mm - post ,總經(jīng)理) ;mm - salary = 8000 ;copyMember(mm, t.p ) ;/ss- show() ;addMember(M , mm ) ;/T.head-show() ;break ;default : break ;return no ;void postManaMenu()int sel , no ;Tech * t ;Seller * s ;XManager * x ;Manager * m ;cout

溫馨提示

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

最新文檔

評論

0/150

提交評論