C課設(shè)公司員工管理系統(tǒng)_第1頁
C課設(shè)公司員工管理系統(tǒng)_第2頁
C課設(shè)公司員工管理系統(tǒng)_第3頁
C課設(shè)公司員工管理系統(tǒng)_第4頁
C課設(shè)公司員工管理系統(tǒng)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、數(shù)學(xué)與計(jì)算機(jī)學(xué)院課程設(shè)計(jì)說明書課 程 名 稱: 面向?qū)ο蟪绦蛟O(shè)計(jì)-課程設(shè)計(jì)課 程 代 碼: 8404101 題 目: 公司員工管理系統(tǒng) 年級/專業(yè)/班: 2009級軟件工程四班 學(xué) 生 姓 名: 學(xué) 號: 開 始 時(shí) 間: 2011 年 6 月 13 日完 成 時(shí) 間: 2011 年 6 月 26 日課程設(shè)計(jì)成績:學(xué)習(xí)態(tài)度及平時(shí)成績(30)技術(shù)水平與實(shí)際能力(20)創(chuàng)新(5)說明書撰寫質(zhì)量(45)總 分(100)指導(dǎo)教師簽名: 年 月 日面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)任務(wù)書學(xué)院名稱: 數(shù)學(xué)與計(jì)算機(jī)學(xué)院 專業(yè): 軟件工程 年級: 2009級 一、設(shè)計(jì)題目 公司員工管理系統(tǒng)二、主要內(nèi)容設(shè)計(jì)公司員工管理系

2、統(tǒng),具有插入、刪除、顯示、修改和查詢員工信息的功能。三、具體要求(1) 采用雙鏈表結(jié)構(gòu),用類和對象完成系統(tǒng)設(shè)計(jì),設(shè)計(jì)一個(gè)employee類,包含職工號、姓名、性別、部門、職務(wù)、工資明細(xì),具有員工信息的插入、刪除、顯示、修改和查詢功能;(2)可通過員工姓名和所在部門進(jìn)行查詢;(3)顯示功能中:對鏈表提供逐屏顯示選擇而且可以由用戶確定每屏顯示的數(shù)目。 課程設(shè)計(jì)說明采用運(yùn)算符重載的方式進(jìn)行文件存取,這樣保存、查詢、修改都很方便。四、主要技術(shù)路線提示首先根據(jù)要解決的問題分析設(shè)計(jì)類圖,抽象出各個(gè)類的數(shù)據(jù)成員和函數(shù)成員,然后進(jìn)行詳細(xì)編碼,在主函數(shù)中創(chuàng)建類的對象,調(diào)用適當(dāng)?shù)某蓡T函數(shù)或全局函數(shù)實(shí)現(xiàn)相應(yīng)的功能。

3、最后要對軟件進(jìn)行測試。五、進(jìn)度安排共計(jì)兩周時(shí)間,20個(gè)機(jī)時(shí),建議進(jìn)度安排如下:1. 選題和需求分析1學(xué)時(shí)2. 查閱資料(圖書、期刊資料或上網(wǎng)查閱相關(guān)資料)2學(xué)時(shí)3. 構(gòu)造框架(系統(tǒng)總體設(shè)計(jì)、類層次關(guān)系圖)3學(xué)時(shí)4. 編程上機(jī),調(diào)試10學(xué)時(shí)5. 現(xiàn)場驗(yàn)收合格(根據(jù)程序提問)1學(xué)時(shí)6. 書寫課程設(shè)計(jì)報(bào)告3學(xué)時(shí)當(dāng)然,僅靠課內(nèi)時(shí)間是不夠的,希望同學(xué)們課外多花時(shí)間編程學(xué)習(xí)。六、完成后應(yīng)上交的材料設(shè)計(jì)結(jié)束后,每位同學(xué)必須上交如下材料:1. 課程設(shè)計(jì)報(bào)告打印稿一份;2. 課程設(shè)計(jì)報(bào)告電子文檔及課程設(shè)計(jì)的程序源代碼 刻盤3. 答辯時(shí)的提問及答案記錄一份。七、推薦參考資料1鄭莉等 編著. c+程序設(shè)計(jì)語言(第三

4、版).清華大學(xué)出版社,2005.06北京2. 陳清華 朱紅主編. visual c+課程設(shè)計(jì)案例精選與編程指導(dǎo).東南大學(xué)出版社,2003.06,南京3. 劉振安等編著. c+程序設(shè)計(jì)課程設(shè)計(jì).機(jī)械工業(yè)出版社,2004.08,北京4. 朱立華等編著. 面向?qū)ο蟪淘O(shè)計(jì)及c+.人民郵電出版社,2008.02,北京指導(dǎo)教師 簽名日期 年 月 日系 主 任 審核日期 年 月 日目 錄1 引 言11.1 問題的體出11.2 國內(nèi)外研究的現(xiàn)狀11.3 任務(wù)與分析22 需求分析22.1 功能分析22.1.1 插入功能22.1.2 刪除功能22.1.3 顯示功能22.1.4 修改功能22.1.5 查詢功能32.

5、2 需求分析規(guī)格說明書33 程序運(yùn)行平臺34 總體設(shè)計(jì)34.1 結(jié)構(gòu)框圖34.2 程序中類的說明44.3 抽象數(shù)據(jù)定義44.4 功能模塊劃分45 詳細(xì)設(shè)計(jì)55.1 數(shù)據(jù)類型定義55.2 主要模塊設(shè)計(jì)65.2.1 模塊1 插入模塊設(shè)計(jì)65.2.2 模塊2 刪除模塊設(shè)計(jì)65.2.3 模塊3 顯示模塊設(shè)計(jì)75.2.4 模塊4 修改模塊設(shè)計(jì)85.2.5 模塊5 查詢模塊設(shè)計(jì)96 系統(tǒng)測試106.1 測試用例106.2 測試結(jié)果117 總 結(jié)15參 考 文 獻(xiàn)16摘 要 在當(dāng)今社會,互聯(lián)網(wǎng)空間的發(fā)展,給人們的工作和生活帶來了極大的便利和高效,信息化,電子化已經(jīng)成為節(jié)約運(yùn)營成本,提高工作效率的首選。當(dāng)前大

6、量企業(yè)的員工管理尚處于手工作業(yè)階段,不但效率低下,還常常因?yàn)楣芾淼牟簧鞫霈F(xiàn)紕漏。因此部分企業(yè)需求,設(shè)計(jì)員工信息管理系統(tǒng),以幫助企業(yè)達(dá)到員工管理辦公自動化、節(jié)約管理成本、提高企業(yè)工作效率的目的。員工信息管理系統(tǒng)主要對員工的信息以及跟人事相關(guān)的工作流程進(jìn)行集中管理。使用c+編寫操作程序,完成數(shù)據(jù)輸入、修改、存儲、調(diào)用查詢等功能。 員工信息管理系統(tǒng)是事業(yè)單位科學(xué)、全面、高效進(jìn)行人事管理的系統(tǒng),參考大量中國人力資源管理理論,根植于國內(nèi)管理的實(shí)際情況,實(shí)用而科學(xué)。內(nèi)容包括機(jī)構(gòu)的建立和維護(hù),人員信息的錄入和輸出,工資的調(diào)整和輸出等功能。在操作上集輸入、維護(hù)、查詢、統(tǒng)計(jì)、輸出等處理為一體,簡便靈活,自動化

7、功能強(qiáng)大。分析了當(dāng)前的形勢,利用c+面向?qū)ο蟪绦蛟O(shè)計(jì)語言采用雙鏈的數(shù)據(jù)結(jié)構(gòu)編程實(shí)現(xiàn)了該公司員工管理系統(tǒng),該系統(tǒng)具有人員信息的添加、刪除、查找、修改和顯示等功能。關(guān)鍵詞:公司員工管理系統(tǒng);計(jì)算機(jī); 輸入;修改;查詢;管理 ;雙鏈1 引 言1.1 問題的體出在現(xiàn)代化的企業(yè)管理中,人事管理系統(tǒng)有著十分重要的作用,然而,用大型軟件系統(tǒng)來于小型的企事業(yè)單位,不啻于“殺雞用牛刀”,因此小型的的軟件對于這種單位自然有十分重要作用。某小型企業(yè)出于這種目的制作了這個(gè)員工管理系統(tǒng)。1.2 國內(nèi)外研究的現(xiàn)狀目前,在國內(nèi),人事信息管理系統(tǒng)從科學(xué)的人事信息管理角度出發(fā),從企業(yè)的人事信息的規(guī)劃開始,一般包括了員工基礎(chǔ)信息

8、,培訓(xùn)信息,技能信息,績效評定,調(diào)動信息,往往經(jīng)歷,工資管理等,并以一種共享的、兼容的、相通的、便于訪問和查詢的方式存儲到共通的數(shù)據(jù)庫中,從而形成一個(gè)統(tǒng)一管理企業(yè)的人事信息的平臺,及時(shí)且全面的收集員工的調(diào)動信息可加強(qiáng)信息分析系統(tǒng)的靈活性,減少人事信息的管理系統(tǒng)的復(fù)雜性和重復(fù)性,是人事管理人員的工作負(fù)擔(dān)大大減輕,將更多的精力投入到企業(yè)人事的規(guī)劃,統(tǒng)籌,及一些更具戰(zhàn)略意義的工作中,提高了整個(gè)人事管理及企業(yè)運(yùn)營的效率。從全局來看,人事信息管理系統(tǒng)會將每個(gè)企業(yè)員工從招聘到離職期間的所有歷史信息全部記錄下來,其中包括了員工在職期間的調(diào)動信息,績效評定和工資信息等等。當(dāng)今計(jì)算機(jī)的高速發(fā)展,使人事信息管理模

9、式在軟硬件的先進(jìn)技術(shù)下不斷發(fā)展,促使了人事信息管理系統(tǒng)的誕生,將其與企業(yè)自身管理模式相結(jié)合,通過共享的數(shù)據(jù)庫共享,員工可自主的處理數(shù)據(jù),達(dá)到共享服務(wù)的目的,有效降低企業(yè)的管理成本,提高其運(yùn)營效率,簡化操作管理工序。整個(gè)人事信息管理系統(tǒng)著重于組織結(jié)構(gòu)和企業(yè)員工信息兩大部分,能夠讓企業(yè)管理的部門快速了解及操作信息,便于及時(shí)規(guī)劃及運(yùn)作,形成一個(gè)有效管理的運(yùn)作體系,其中包括了企業(yè)組織到員工,再到勞動和薪酬等等各個(gè)部分,能迅速且只管的反映人事信息的情況,為企業(yè)的人事管理的決策層提供有效及時(shí)的技術(shù)支持。1.3 任務(wù)與分析采用雙鏈的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)公司員工管理系統(tǒng),該系統(tǒng)實(shí)現(xiàn)對公司人員按姓名或者編號顯示、查找、

10、增加、刪除和保存各類人員信息的操作。使用高效的,快捷的,方便的職工信息管理。能按姓名或者編號顯示、查找、增加、刪除和保存各類人員的信息。2 需求分析2.1 功能分析 插入功能:dlink insertnode(dlink head) 顯示功能:void print( ) 刪除功能:void delete() 修改功能:void amend( ) 查詢功能:void query( )2.1.1 插入功能函數(shù)原型:dlink insertnode(dlink head)說 明:添加一個(gè)職員的基本信息,包括職工號,姓名,性別,所在部門,職務(wù),薪水。2.1.2 刪除功能函數(shù)原型:void delete

11、()說 明:能夠?qū)σ粋€(gè)職員的信息進(jìn)行刪除,按職工號+姓名進(jìn)行刪除。2.1.3 顯示功能函數(shù)原型:void print( )說 明:輸出顯示滿足條件的或者全部的職工信息,包括職工號,姓名,性別,所在部門,職務(wù),工資明細(xì)等。2.1.4 修改功能函數(shù)原型:void amend( )說 明:對滿足條件的職員的信息進(jìn)行修改,可以修改職工所在部門、職務(wù)、工資。2.1.5 查詢功能函數(shù)原型:void query( )說 明:根據(jù)你鍵入的職員姓名,顯示其詳細(xì)信息!2.2 需求分析規(guī)格說明書這是一個(gè)簡單的、小型的公司員工信息管理系統(tǒng),它可以實(shí)現(xiàn)職工信息的錄入,刪除,查詢,以及對已有信息的修改等功能;該系統(tǒng)使用了

12、文件操作來保存數(shù)據(jù),可以將數(shù)據(jù)永久性的保存在計(jì)算機(jī)上。3 程序運(yùn)行平臺程序運(yùn)行的平臺是基于windows操作系統(tǒng)的vc+6.0,該程序在此平臺上測試通過,能正常運(yùn)行。4 總體設(shè)計(jì)4.1 結(jié)構(gòu)框圖圖 1 cems結(jié)構(gòu)框圖4.2 程序中類的說明職工類說明:class employeeprivate:node data; / 結(jié)構(gòu)體類型的數(shù)據(jù)成員public:friend ostream & operator(istream & stream,dlink p); /友元重載輸入流運(yùn)算符employee(); / 構(gòu)造函數(shù)dlink createlink(); / 創(chuàng)建鏈表dlink insertno

13、de(dlink head); / 插入一個(gè)結(jié)點(diǎn);4.3 抽象數(shù)據(jù)定義adt cems數(shù)據(jù)對象:職工信息;基本操作:dlink insertnode(dlink head);-插入職工信息void print()-顯示職工信息void delete()-刪除職工信息void amend()-修改職工信息void query()-查詢職工信息void setwage(dlink p)-設(shè)置明細(xì)工資adt;4.4 功能模塊劃分圖 2 cems功能模塊劃分圖5 詳細(xì)設(shè)計(jì)5.1 數(shù)據(jù)類型定義/ 工資明細(xì)結(jié)構(gòu)體typedef struct wagefloat base_wage; / 基本工資 floa

14、t merit_wage; / 績效工資float sum_wage; / 總工資wage; / 包括職工姓名、職工號的工資記錄typedef struct emplo_wagechar id10; / 職工編號char name10; / 職工姓名wage data; / 工資emplo_wage; typedef struct nodechar e_id10; /職工號char e_name10; /姓名char e_sex3;/性別char e_dep20;/部門char e_job20;/職務(wù)float e_wage;/工資struct node *prior; /前驅(qū)指針struct

15、 node *next; /后繼指針node,*dlink;/ 工資大于1000的員工,超過部門需要按稅率交稅float tax_rate1=0.05f; / 3000 以下float tax_rate2=0.1f; / 3000-8000float tax_rate3=0.15f; / 8000 以上void setwage(dlink p);/ 職工類class employeenode data; / 結(jié)構(gòu)體類型的數(shù)據(jù)成員public:friend ostream & operator(istream & stream,dlink p); /友元重載輸入流運(yùn)算符employee(); /

16、 構(gòu)造函數(shù)dlink createlink(); / 創(chuàng)建鏈表dlink insertnode(dlink head); / 插入一個(gè)結(jié)點(diǎn);5.2 主要模塊設(shè)計(jì)5.2.1 模塊1 插入模塊設(shè)計(jì)模塊算法:通過前插法插入結(jié)點(diǎn)/插入結(jié)點(diǎn)dlink employee:insertnode(dlink head)dlink p;ofstream file(employeeinfo.txt,ios:app); / 打開文件if(!file) coutcannot open the file!n; return 0; p=new node;cout請輸入員工信息:n;coutp-e_id;while(str

17、cmp(p-e_id,00) /循環(huán)輸入,以“00”結(jié)束輸入cinp;p-prior=head;p-next=head-next;if(head-next!=null) /如果不是空鏈head-next-prior=p;head-next=p;file.write(char *)p,num);p=new node;coutplease input employees information:n;coutp-e_id;file.close(); /關(guān)閉文件printf(錄入完畢.n);return head;5.2.2 模塊2 刪除模塊設(shè)計(jì)模塊算法:/刪除函數(shù)void delete()char

18、id10; /存放輸入的職工號char name10; /存放輸入的職工姓名int count1=0,count2=0; /count1-總的記錄數(shù),count2-刪除記錄以后的總記錄數(shù)dlink p;p=new node;ifstream file(employeeinfo.txt);if(!file) coutcannot open the file!n; return; ofstream newfile(newemployeeinfo.txt);if(!newfile) coutcannot open the file!n; return; coutid;coutname;while(!

19、file.eof()file.read(char *)p,num);count1+;if(file.fail()break;if(strcmp(p-e_name,name)|strcmp(p-e_id,id)newfile.write(char *)p,num);count2+;file.close(); /關(guān)閉文件newfile.close(); /關(guān)閉文件remove(employeeinfo.txt); / 刪除原來的employeeinfo.txtrename(newemployeeinfo.txt,employeeinfo.txt); / 重命名if(count1=count2)pr

20、intf(沒有這個(gè)記錄!n);elseprintf(刪除成功!n);5.2.3 模塊3 顯示模塊設(shè)計(jì)模塊算法:/輸出void print()int n,count=0; /n輸入的每屏顯示的記錄數(shù),count計(jì)數(shù)dlink p;ifstream file(employeeinfo.txt); / 打開文件if(!file) coutcannot open the file!n; return; p=new node;coutn;system(cls); /清屏print_format(); /輸出字段名while(!file.eof()file.read(char *)p,num);if(fi

21、le.fail()break;if(n=count) /控制每一屏顯示的記錄條數(shù)system(pause); /暫停system(cls); /清屏count=0; /計(jì)數(shù)器清零print_format(); coutp;count+;5.2.4 模塊4 修改模塊設(shè)計(jì)模塊算法:/修改函數(shù)void amend()int n; /用于選擇修改選項(xiàng)char id10; /存放輸入的需要修改信息的職工號dlink p;p=new node;fstream file;file.open(employeeinfo.txt,ios:in|ios:out); / 以讀寫方式打開if(!file) coutca

22、nnot open the file!n; return; coutid;while(!file.eof()file.read(char *)p,num);if(file.fail()break;if(!strcmp(p-e_id,id)break;if(file.eof() printf(沒有這個(gè)職工號!n);return; cout可以修改的項(xiàng)目有:1-部門 2-職務(wù) 3-工資n;coutn;if(n=0) / 修改所在部門、職務(wù)、工資coutp-e_dep;coutp-e_job;setwage(p);else if(n=1) / 修改所在部門coutp-e_dep;else if(n=

23、2) / 修改職務(wù)coutp-e_job;else if(n=3) / 修改工資setwage(p);else printf(輸入錯(cuò)誤!n);file.seekp(-1*num,ios:cur); /寫指針回跳一條記錄,以更新記錄file.write(char *)p,num); /寫入更新后的記錄if(n=0|n=1|n=2|n=3)printf(修改成功!n); /操作提示file.close(); /關(guān)閉文件5.2.5 模塊5 查詢模塊設(shè)計(jì)模塊算法:/查詢函數(shù)void query()char query_value20; /存放輸入的需要查詢的姓名或部門名稱int flag=0,n; /

24、是否查詢到的標(biāo)志dlink p;p=new node;ifstream file(employeeinfo.txt); /打開文件if(!file) coutcannot open the file!n; return; cout通過哪種方式查詢:endl;coutt1-姓名 2-所在部門endl;coutn;if(n=1)coutquery_value;else if(n=2)coutquery_value;else cout輸入錯(cuò)誤!e_name,query_value) print_format(); coute_dep,query_value) print_format(); cout

25、p; flag=1; if(flag=0)printf(查詢失敗,沒有相應(yīng)記錄!n);file.close(); /關(guān)閉文件6 系統(tǒng)測試6.1 測試用例職工號姓名性別所在部門職務(wù)基本工資績效工資總工資001aaf部門1職務(wù)120005002425002bbm部門2職務(wù)230005003450003ccf部門3職務(wù)340005004350004ddm部門4職務(wù)450005005250005eef部門5職務(wù)580005008425表1 測試用例表 6.2 測試結(jié)果圖3 系統(tǒng)歡迎界面截圖圖4 主菜單界面截圖圖5 插入職工信息截圖圖6 顯示職工信息截圖圖7 刪除職工信息截圖圖8 刪除后的職工信息截圖圖

26、9 修改職工信息截圖圖10 修改后的職工信息截圖圖11 按姓名查詢截圖圖12 按職工所在部門查詢截圖圖 13 職工工資明細(xì)7 總 結(jié)這次課程設(shè)計(jì)所設(shè)計(jì)的公司員工管理系統(tǒng)(cems)是一個(gè)小型的人事信息管理系統(tǒng),該系統(tǒng)實(shí)現(xiàn)了職工信息的添加、刪除、修改、顯示、查詢等功能,并且運(yùn)用了文件操作技術(shù),可以實(shí)現(xiàn)數(shù)據(jù)的永久性保存。通過這次課程設(shè)計(jì),我拓寬了知識面,鍛煉了能力,綜合素質(zhì)得到較大提高。安排課程設(shè)計(jì)的基本目的,在于通過理論與實(shí)際的結(jié)合、人與人的溝通,進(jìn)一步提高思想覺悟。尤其是觀察、分析和解決問題的實(shí)際工作能力,以便培養(yǎng)成為能夠主動適應(yīng)社會主義現(xiàn)代化建設(shè)需要的高素質(zhì)的復(fù)合型人才。作為整個(gè)學(xué)習(xí)體系的有

27、機(jī)組成部分,課程設(shè)計(jì)雖然安排在兩周進(jìn)行,但并不具有絕對獨(dú)立的意義。它的一個(gè)重要功能,在于運(yùn)用學(xué)習(xí)成果,檢驗(yàn)學(xué)習(xí)成果。運(yùn)用學(xué)習(xí)成果,把課堂上學(xué)到的系統(tǒng)化的理論知識,嘗試性地應(yīng)用于實(shí)際設(shè)計(jì)工作,并從理論的高度對設(shè)計(jì)工作的現(xiàn)代化提出一些有針對性的建議和設(shè)想。檢驗(yàn)學(xué)習(xí)成果,看一看課堂學(xué)習(xí)與實(shí)際工作到底有多大距離,并通過綜合分析,找出學(xué)習(xí)中存在的不足,以便為完善學(xué)習(xí)計(jì)劃,改變學(xué)習(xí)內(nèi)容與方法提供實(shí)踐依據(jù)。對我們計(jì)算機(jī)專業(yè)的本科生來說,實(shí)際能力的培養(yǎng)至關(guān)重要,而這種實(shí)際能力的培養(yǎng)單靠課堂教學(xué)是遠(yuǎn)遠(yuǎn)不夠的,必須從課堂走向?qū)嵺`。這也是一次預(yù)演和準(zhǔn)備畢業(yè)設(shè)計(jì)工作。通過課程設(shè)計(jì),讓我們找出自身狀況與實(shí)際需要的差距,

28、并在以后的學(xué)習(xí)期間及時(shí)補(bǔ)充相關(guān)知識,為求職與正式工作做好充分的知識、能力準(zhǔn)備,從而縮短從校園走向社會的心理轉(zhuǎn)型期。課程設(shè)計(jì)促進(jìn)了我系人才培養(yǎng)計(jì)劃的完善和課程設(shè)置的調(diào)整。近年來,我系為適應(yīng)學(xué)生的實(shí)踐需要陸續(xù)增設(shè)與調(diào)整了一系列課程,受到同學(xué)的歡迎,其中這次的設(shè)計(jì)很受同學(xué)們的喜歡。課程設(shè)計(jì)達(dá)到了專業(yè)學(xué)習(xí)的預(yù)期目的。在一個(gè)星期的課程設(shè)計(jì)之后,我們普遍感到不僅實(shí)際動手能力有所提高,更重要的是通過對軟件開發(fā)流程的了解,進(jìn)一步激發(fā)了我們對專業(yè)知識的興趣,并能夠結(jié)合實(shí)際存在的問題在專業(yè)領(lǐng)域內(nèi)進(jìn)行更深入的學(xué)習(xí)參 考 文 獻(xiàn)1 李強(qiáng),賈云霞編著. visual c+項(xiàng)目開發(fā)實(shí)踐. 北京:中國鐵道出版社,2003

29、2 islamabad. software tools for forgery detectionj. business line.2001. (5).3 鄭莉等編著. c+程序設(shè)計(jì)語言(第三版). 北京:清華大學(xué)出版社,20054 陳清華 朱紅主編. visual c+課程設(shè)計(jì)案例精選與編程指導(dǎo). 南京:東南大學(xué)出版社,20035 劉振安等編著. c+程序設(shè)計(jì)課程設(shè)計(jì). 北京:機(jī)械工業(yè)出版社,2004 6 朱立華等編著. 面向?qū)ο蟪淘O(shè)計(jì)及c+.北京:人民郵電出版社,2008附錄:源代碼:/公司員工管理系統(tǒng)cems#include /文件操作頭文件#include /包含system()等函數(shù)

30、的頭文件#include /字符串處理頭文件#include /輸入輸出流重載需要的頭文件#include / 工資明細(xì)結(jié)構(gòu)體typedef struct wagefloat base_wage; / 基本工資 float merit_wage; / 績效工資float sum_wage; / 總工資wage; / 包括職工姓名、職工號的工資記錄typedef struct emplo_wagechar id10; / 職工編號char name10; / 職工姓名wage data; / 工資emplo_wage; typedef struct nodechar e_id10; /職工號ch

31、ar e_name10; /姓名char e_sex3;/性別char e_dep20;/部門char e_job20;/職務(wù)float e_wage;/工資struct node *prior; /前驅(qū)指針struct node *next; /后繼指針node,*dlink;/ 工資大于1000的員工,超過部門需要按稅率交稅float tax_rate1=0.05f; / 3000 以下float tax_rate2=0.1f; / 3000-8000float tax_rate3=0.15f; / 8000 以上void setwage(dlink p);/ 職工類class emplo

32、yeeprivate:node data; / 結(jié)構(gòu)體類型的數(shù)據(jù)成員public:friend ostream & operator(istream & stream,dlink p); /友元重載輸入流運(yùn)算符employee(); / 構(gòu)造函數(shù)dlink createlink(); / 創(chuàng)建鏈表dlink insertnode(dlink head); / 插入一個(gè)結(jié)點(diǎn);/ 全局常量,一個(gè)結(jié)點(diǎn)的大小const int num=sizeof(node);/ 重載輸出流運(yùn)算符ostream & operator(ostream & stream,const dlink p)streamsetio

33、sflags(ios:left)setw(10)e_idsetiosflags(ios:left)setw(10)e_namesetiosflags(ios:left)setw(7)e_sexsetiosflags(ios:left)setw(15)e_depsetiosflags(ios:left)setw(15)e_jobsetiosflags(ios:left)setw(8)e_wage(istream & stream,dlink p)coutp-e_name;coutp-e_sex;coutp-e_dep;coutp-e_job;setwage(p); /輸入工資coutprior=

34、null;head-next=null;return head;/插入結(jié)點(diǎn)dlink employee:insertnode(dlink head)dlink p;ofstream file(employeeinfo.txt,ios:app); / 打開文件if(!file) coutcannot open the file!n; return 0; p=new node;cout請輸入員工信息:n;coutp-e_id;while(strcmp(p-e_id,00) /循環(huán)輸入,以“00”結(jié)束輸入cinp;p-prior=head;p-next=head-next;if(head-next!

35、=null) /如果不是空鏈head-next-prior=p;head-next=p;file.write(char *)p,num);p=new node;cout請輸入員工信息:n;coutp-e_id;file.close(); /關(guān)閉文件printf(錄入完畢.n);return head;/輸出格式void print_format()coutsetiosflags(ios:left)setw(10)職工號setiosflags(ios:left)setw(10)姓名setiosflags(ios:left)setw(7)性別setiosflags(ios:left)setw(15

36、)所在部門setiosflags(ios:left)setw(15)職務(wù)setiosflags(ios:left)setw(8)工資endl;/設(shè)置工資稅率void settrate()docout請輸入稅率:;cintax_rate1;while(tax_rate11|tax_rate10);docout請輸入稅率:;cintax_rate2;while(tax_rate21|tax_rate20);docout請輸入稅率:;cintax_rate3;while(tax_rate31|tax_rate30);/設(shè)置一個(gè)員工的明細(xì)工資void setwage(dlink p)/int flag

37、=0;float sum;emplo_wage *s;s = new emplo_wage;/q = new emplo_wage;fstream file;file.open(employee_wage_info.txt,ios:app);if(!file) cout打開工資文件失?。ndl; return; couts-data.base_wage; / 設(shè)置基本工資couts-data.merit_wage; / 設(shè)置績效工資sum=s-data.base_wage + s-data.merit_wage;if(sumdata.sum_wage=sum;else if(sumdata.

38、sum_wage=(sum-1000) * (1-tax_rate1)+1000;else if(sumdata.sum_wage=(sum-3000) * (1-tax_rate2)+3000;elses-data.sum_wage=(sum-8000) * (1-tax_rate3)+8000;p-e_wage=s-data.sum_wage; / 總工資strcpy(s-id , p-e_id);strcpy(s-name , p-e_name);file.write(char *)s,sizeof(emplo_wage); / 寫入文件file.close();/輸出void print()int n,count=0; /n輸入的每屏顯示的記錄數(shù),count計(jì)數(shù)dlink p;ifstream file(employeeinfo.txt); / 打開文件if(!file) coutcannot open the file!n; return; p=new nod

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論