績效工資的管理與設(shè)計報告_第1頁
績效工資的管理與設(shè)計報告_第2頁
績效工資的管理與設(shè)計報告_第3頁
績效工資的管理與設(shè)計報告_第4頁
績效工資的管理與設(shè)計報告_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、武漢理工大學(xué)計算機(jī)基礎(chǔ)強(qiáng)化訓(xùn)練學(xué) 號: 0120910340436計算機(jī)基礎(chǔ)強(qiáng)化訓(xùn)練題 目績效工資的管理與設(shè)計學(xué) 院計算機(jī)科學(xué)與技術(shù)學(xué)院專 業(yè)計算機(jī)科學(xué)與技術(shù)專業(yè)班 級計科0904姓 名趙苗指導(dǎo)教師郭羽成2011年07月06日目錄任務(wù)書.31系統(tǒng)需求分析.41.1問題說明.41.2數(shù)據(jù)需求.41.3功能需求.52系統(tǒng)設(shè)計.62.1員工數(shù)據(jù)信息結(jié)構(gòu)設(shè)計.62.2內(nèi)存數(shù)據(jù)結(jié)構(gòu)設(shè)計.62.3數(shù)據(jù)文件設(shè)計.62.4實現(xiàn)的基本功能.82.5輸入輸出設(shè)計.82.6用戶界面設(shè)計.93系統(tǒng)測試.103.1添加記錄.103.2修改記錄.103.3刪除記錄.113.4查詢記錄.123.5保存到文件.123.6輸出

2、記錄.123.7退出系統(tǒng).一三4心得體會.14計算機(jī)基礎(chǔ)強(qiáng)化訓(xùn)練任務(wù)書學(xué)生姓名: 趙苗 專業(yè)班級:計算機(jī)科學(xué)與技術(shù)學(xué)院0904指導(dǎo)教師: 郭羽成 工作單位: 計算機(jī)科學(xué)與技術(shù)學(xué)院 題 目: 績效工資的管理與設(shè)計 初始條件:理論:學(xué)完計算機(jī)基礎(chǔ)知識,掌握C+語言編程基礎(chǔ)和VC開發(fā)平臺的使用。實踐:計算機(jī)科學(xué)系實驗中心提供計算機(jī)及軟件開發(fā)環(huán)境。要求完成的主要任務(wù): (1)系統(tǒng)需求分析,得到系統(tǒng)的數(shù)據(jù)需求和功能需求,分析結(jié)果用表格記錄。 (2)系統(tǒng)設(shè)計,包括內(nèi)存數(shù)據(jù)結(jié)構(gòu)設(shè)計、數(shù)據(jù)文件設(shè)計、代碼設(shè)計、輸入/輸出設(shè)計、用戶界面設(shè)計、處理過程設(shè)計。要求內(nèi)存數(shù)據(jù)用鏈表組織,數(shù)據(jù)文件用文本文件,用戶界面用字符

3、界面。至少實現(xiàn)數(shù)據(jù)記錄的增加、修改、刪除、查詢(查詢應(yīng)能按不同數(shù)據(jù)項進(jìn)行)。(2)編制好程序后,設(shè)計若干測試用例,上機(jī)測試所設(shè)計的程序。(4)設(shè)計報告按格式要求書寫。設(shè)計報告正文的內(nèi)容應(yīng)包括:1)系統(tǒng)描述 包括問題說明、數(shù)據(jù)需求和功能需求。2)系統(tǒng)設(shè)計 包括內(nèi)存數(shù)據(jù)結(jié)構(gòu)設(shè)計、數(shù)據(jù)文件設(shè)計、代碼設(shè)計、輸入/輸出設(shè)計、用戶界面設(shè)計、處理過程設(shè)計。3)系統(tǒng)測試 包括測試用例的描述、測試方法和測試結(jié)果。4)設(shè)計的特點(diǎn)、不足、收獲和體會。時間安排:1、第20周(7月4日至7月8日)完成。2、7月8日8:00到計算機(jī)學(xué)院實驗中心(三樓)檢查程序、交課程設(shè)計報告、源程序(CD盤)。指導(dǎo)教師簽名: 2011年

4、7月 3 日系主任(或責(zé)任教師)簽名: 2011年7月 3 日績效工資的管理與設(shè)計實現(xiàn)1.系統(tǒng)需求分析1.1問題說明 績效工資又稱績效加薪、獎勵工資(Merit pay)或與評估掛鉤的工資(Appraisal related pay),是以職工被聘上崗的工作崗位為主,根據(jù)崗位技術(shù)含量、責(zé)任大小、勞動強(qiáng)度和環(huán)境優(yōu)劣確定崗級,以企業(yè)經(jīng)濟(jì)效益和勞動力價位確定工資總量,以職工的勞動成果為依據(jù)支付勞動報酬,是勞動制度、人事制度與工資制度密切結(jié)合的工資制度??冃ЧべY由四部分組成:基本工資,年齡工資,崗位工資,獎勵工資。1.2 系統(tǒng)描述1.2.1數(shù)據(jù)需求一個員工的具體信息應(yīng)該包含以下幾個方面:績效工資管理數(shù)

5、據(jù)分析表:編號數(shù)據(jù)項數(shù)據(jù)類型數(shù)據(jù)長度描述1namechar 20職工姓名,此標(biāo)志并不唯一2numberint1職工標(biāo)號,職工的唯一標(biāo)志3ageint1職工性別,此標(biāo)志并不唯一4positionchar20職工職位,此標(biāo)志并不唯一5basicsalarydouble1職工基本工資,此標(biāo)志并不唯一6positionsalarydouble1職工崗位工資,此標(biāo)志并不唯一7agesalarydouble1職工的年齡工資,此標(biāo)志不唯一8rewardsalarydouble1職工的獎勵工資,此標(biāo)志不唯一9genderGender(枚舉類型)1職工的性別,此標(biāo)志不唯一10truesalarydouble1職

6、工的績效工資,此標(biāo)志不唯一11mobilephonechar12職工的聯(lián)系方式,此標(biāo)志唯一1.2.2功能需求 每個公司都有具體的人事信息管理系統(tǒng),要對這個系統(tǒng)進(jìn)行維護(hù),這個系統(tǒng)要有一定的功能,根據(jù)管理規(guī)則,其功能應(yīng)該包含以下幾個方面:績效工資管理功能分析表:標(biāo)號功能描述1增加員工信息 新建一個員工記錄到緩存中2刪除職工信息若標(biāo)號為num的職工在緩存中,則刪除該記錄,否則,刪除操作失敗3修改職工信息若標(biāo)號為num的職工在緩存中,則修改該記錄信息,否則,修改操作失敗4保存職工信息將緩存中的職工信息保存到文件中5查詢職工信息按照職工的數(shù)據(jù)項查詢職工信息,若查詢信息匹配,則輸出改職工信息;否則,查詢失

7、敗6顯示職工信息顯示所有緩存中的職工信息2.系統(tǒng)設(shè)計2.1員工信息數(shù)據(jù)結(jié)構(gòu)設(shè)計 首先根據(jù)數(shù)據(jù)需求:應(yīng)該定義一個員工的數(shù)據(jù)結(jié)構(gòu)體,結(jié)構(gòu)體應(yīng)包含員工的姓名,年齡,編號,崗位,基本工資,崗位工資,年齡工資,獎勵工資,績效工資等,結(jié)構(gòu)體如下:struct workerloyeechar name20;/員工的姓名int number;/員工的編號 int age;/員工的年齡char position20;/員工的職位double basesalary;/員工的基本工資double positionsalary;/員工的崗位工資double agesalary;/員工的年齡工資double rewar

8、dsalary;/員工的獎勵工資Gender gender;/員工的性別 double truesalary ;/員工的績效工資 char mobilephone12;2.2內(nèi)存數(shù)據(jù)結(jié)構(gòu)設(shè)計struct node /職工結(jié)點(diǎn)workerloyee worker;/數(shù)據(jù)成員node*next;/鏈域;2.3數(shù)據(jù)文件設(shè)計2.3.1文件中存有兩條員工信息,并且文件的存放路徑為當(dāng)前路徑張文 1001 22 總監(jiān) 1000 2000 500 500 男 4000 一三419502589田甜 1002 35 總裁 3000 5000 1000 2000 女 11000 一三5783489882.3.2文件

9、的創(chuàng)建打開與關(guān)閉ifstream workerdata(filename); /用名字為filename的文件實例化對象workerdata,打開文件if(!workerdata) return NULL;while(!workerdata.eof()/將文件中的信息依次讀出,放在鏈表中if(p=new node) /完成一個記錄的各數(shù)據(jù)項 workerdata>>p->; workerdata>>p->worker.number;workerdata>>gender;p->worker.age;workerdata&

10、gt;>p->worker.position;workerdata>>p->worker.basesalary;workerdata>>p->worker.positionsalary;workerdata>>p->worker.agesalary; workerdata>>p->worker.rewardsalary; workerdata>>p->worker.truesalary; workerdata>>p->worker.mobilephone;p->next

11、=phead;/將新結(jié)點(diǎn)加入鏈表p=phead; workerdata.close();/關(guān)閉文件2.3.3文件的保存,寫入ofstream workerdata(filename);/ 將記錄寫入文件if(!workerdata) return ;for(p=phead;p;p=p->next)workerdata<<" "<<p->; workerdata.close();/關(guān)閉文件2.4實現(xiàn)的基本功能FuncType ShowMenu(MenuType which);/顯示菜單node *CreateWorke

12、rList(char filename);/根據(jù)文件內(nèi)容創(chuàng)建職工信息鏈表void Save(char filename);/將鏈表中的信息存入文件filename中void Show(node *pnode);/依次顯示鏈表中的各個記錄node *Add(WorkerInfo& workerinfo);/添加一條職工記錄WorkerInfo& GetWorkerInfo(WorkerInfo& workerinfo);/獲得職工記錄信息void Modify();/修改職工信息bool Delete(node*&node);/刪除職工信息2.5輸入輸出設(shè)計2.5

13、.1 輸入1,選擇添加職工信息功能,則系統(tǒng)會輸出提示“請輸入職工的姓名”等信息,依次輸入各條信息項,即可完成職工信息的添加。2.5.2 輸入2,選擇更新職工信息功能,如果緩存中的職工記錄為空,則系統(tǒng)會輸出“職工記錄為空”,否則系統(tǒng)會輸出提示“請輸入職工的編號”的提示,輸入要修改的員工的編號num,如果該職工記錄存在,系統(tǒng)則會依次提示輸入該職工的所有信息,以供修改。如果該職工記錄不存在,則系統(tǒng)會輸出“編號為num的職工不存在,修改信息失敗”。2.5.3 輸入3,選擇刪除一條職工信息的功能。如果緩存中的職工記錄為空,則系統(tǒng)會輸出“員工記錄為空”,否則系統(tǒng)會輸出提示“請輸入員工的編號”的提示,輸入要

14、修改的員工的編號num,如果該職工記錄存在,系統(tǒng)則會刪除該職工的所有信息,并輸出“即將執(zhí)行刪除操作,刪除記錄成功”,表示刪除操作成功。如果該職工記錄不存在,則系統(tǒng)會輸出“沒有執(zhí)行刪除操作,刪除記錄失敗”,表示刪除操作失敗。2.5.4 輸入4,選擇查詢職工信息功能。則系統(tǒng)輸出查詢的子菜單。選擇將要進(jìn)行的查詢方式,如果存在該菜單選項,則進(jìn)行查詢。如果沒有該菜單選項,則輸出提示“輸入信息不正確,顯示沒有該項”例如選擇按gender查詢的方式,則系統(tǒng)輸出“請輸入員工的姓名”,輸出職工姓名之后,若存在匹配的職工,則輸出所有符合條件的職工信息,否則輸出查詢失敗,不存在符合條件的記錄。2.5.5 輸入5,選

15、擇將緩存中的職工記錄保存到文件中,系統(tǒng)提示輸出“已經(jīng)保存到文件中”。2.5.6 輸入6,選擇顯示所有職工信息功能。系統(tǒng)輸出“顯示所有的記錄”,輸出所有職工記錄。2.5.7 輸入7,選擇退出績效工資查詢系統(tǒng)。系統(tǒng)輸“你已經(jīng)退出程序,歡迎下次使用”。2.5.8 輸入其他數(shù)組選項,輸出“輸入信息不正確,顯示沒有該項”2.6用戶界面設(shè)計:2.6.1 主菜單2.6.2 子菜單3 系統(tǒng)測試3.1 添加一個職工記錄,該職工的信息為 黃靜 1003 25 文秘 1000 1000 500 500 女 一三434一五25893.2 修改num為 1001的記錄,將姓名改為周禾,并顯示結(jié)果3.3 刪除編號為100

16、2的記錄,并顯示刪除后的結(jié)果,顯示刪除成功3.4 按基本工資查詢,查詢基本工資為11000的記錄,顯示所有基本工資為11000的職工的所有信息。查詢phone number為一三434一五2589的記錄,顯示查找成功。3.5把修改保存到文件3. 6輸出記錄中所有信息3.7 退出系統(tǒng)4心得體會4.1 設(shè)計的特點(diǎn) 在網(wǎng)上經(jīng)過查找,發(fā)現(xiàn)績效工資是一種新的工資制度,它主要包括4個部分,基本工資,崗位工資,年齡工資,獎勵工資四部分,因此要確定一個職工的績效工資為多少,則首先必須知道他的職位,年齡,以及他的獎勵工資和基本工資,另外根據(jù)公司的日常管理,在公司登記的一個員工的信息通常包括他的姓名,性別,編號,

17、年齡,聯(lián)系方式等等,根據(jù)這些可以建立一個員工結(jié)構(gòu)體,另外由于在在公司管理過程中,經(jīng)常會發(fā)生員工需要更新信息,或者有新員工加入,或者需要查找某一員工的信息等事件,因此該管理系統(tǒng)就需要具備一些功能,如添加一條員工信息,對某一員工信息進(jìn)行更新,查找某一員工(可以根據(jù)姓名,性別,編號,聯(lián)系方式,職位,基本工資等等進(jìn)行查找),或者刪除一名已經(jīng)離開的員工,為了不占用多余的空間,員工信息的存儲可以用鏈表來存儲,不浪費(fèi)空間。將已經(jīng)輸入的信息保存到文件中,進(jìn)行管理。 這樣就行成了一個績效工資的管理系統(tǒng),可以方便公司的人事部對員工進(jìn)行管理。4.2設(shè)計的不足 首先就是界面的設(shè)計不夠好,雖然也能與使用者進(jìn)行對話,但是

18、有些細(xì)節(jié)處理不好,你如要更新一條員工信息時,要將這個員工的整個信息全部進(jìn)行重新輸入,年齡,性別,崗位等等,其實一些信息可以不必進(jìn)行錄入,另外就是雖然用的是鏈表的存儲結(jié)構(gòu),但是在進(jìn)行刪除時,只是在鏈表中刪除了,其實它仍然占據(jù)著空間,而且沒有指針指向它,造成了空間的浪費(fèi)。4.3設(shè)計過程中的收獲 績效工資的管理與設(shè)計,看似是一個挺簡單的系統(tǒng),只要設(shè)計了員工的結(jié)構(gòu)體,再加上一些函數(shù)進(jìn)行處理就行了,但是這個設(shè)計過程中,最容易忽略的就是考慮全面,比如一開始設(shè)計員工的信息結(jié)構(gòu)體時,沒有想全面,只有一些簡單的信息,姓名編號職位等等,沒有想到還有員工的聯(lián)系方式也要記錄,因為根據(jù)聯(lián)系方式可以唯一確定一名員工,還有

19、就是設(shè)計其功能時,也有一些地方忘記了,比如只想到了刪除信息,可忘記了,刪除信息要更改其頭指針,還有就是更新員工信息時,一開始只想到要更新員工的職位,以及崗位工資,績效工資等,沒有想到也可能全部的信息都要進(jìn)行更換。還有就是一些函數(shù)的設(shè)計,比如用姓名或者是電話號碼進(jìn)行查詢時,定義的名字還有電話號碼是字符數(shù)組,我寫了一個這樣的函數(shù),for(int i=0;i<20;i+)if(namei=ni) i+;else break;if(p!=NULL&&i>=20) 則找到了具有相同姓名的員工,可是不知道什么原因發(fā)現(xiàn)程序走到這一步總是出錯,進(jìn)行調(diào)試更新程序,發(fā)現(xiàn)也找不到原因。后

20、來,就想到了在字符串中有一函數(shù)是專門進(jìn)行比較兩個字符數(shù)組是否相等的,strcmp(char a,charb)只要在文件的開頭加上<string.h>就可以直接用這個函數(shù)。 有些東西并不是表面上想的那么簡單,或許你認(rèn)為可以實現(xiàn)的卻發(fā)現(xiàn)在電腦上實現(xiàn)不了,這時只有靠不斷的修改才能使程序正確運(yùn)行。最后,謝謝老師,給了我們一個鍛煉的機(jī)會,把所學(xué)的一些東西綜合起來,加強(qiáng)了我們的動手能力!源程序清單:#include<iostream>/輸入流#include<iomanip>#include<fstream>/輸入輸出流#include<string&

21、gt;using namespace std;enum Gender MALE,FEMALE; /枚舉類型,標(biāo)志性別(0代表男,1代表女)enum MenuType MAINMENU,SUBMENU;/枚舉類型,標(biāo)志菜單enumFuncType NONE,ADD,UPDATE,DELETE,QUERY,SHOW,QB_NAME,QB_NUMBER,QB_GENDER,QB_PERFORMAMCE,QB_BASESALARY,QB_TRUESALARY,QB_MOBILEPHONE,SAVE,EXIT;/枚舉類型,標(biāo)志功能類型struct employeechar name20;/員工的姓名in

22、t number;/員工的編號 int age;/員工的年齡char position20;/員工的職位double basesalary;/員工的基本工資double positionsalary;/員工的崗位工資double agesalary;/員工的年齡工資double rewardsalary;/員工的獎勵工資Gender gender;/員工的性別 double truesalary ;/員工的績效工資 char mobilephone12;struct node /職工結(jié)點(diǎn)employee worker;/數(shù)據(jù)成員node*next;/鏈域;struct QueryRes/查詢結(jié)

23、果結(jié)點(diǎn)node*pnode;/數(shù)據(jù)成員QueryRes *pnext;/鏈域;node*phead=NULL; /職工記錄鏈表頭結(jié)點(diǎn)QueryRes *pqueryres=NULL;/查詢結(jié)果鏈表頭結(jié)點(diǎn)FuncType ShowMenu(MenuType which);/顯示菜單node*CreateWorkerList(char filename);/根據(jù)文件內(nèi)容創(chuàng)建職工信息鏈表void RemoveWorkerList();/刪除鏈表void RemoveQueryRes();/刪除查詢結(jié)果鏈表void Save(char filename);/將鏈表中的信息存入文件filename中vo

24、id Show(node*pnode);/依次顯示鏈表中的各個記錄void Show(QueryRes *pnode);/依次顯示鏈表中的各個記錄QueryRes *Query(FuncType func);/確定查詢方式,返回符合查詢的結(jié)點(diǎn)的鏈表node*Add(employee& employee);/添加一條職工記錄employee& Getemployee(employee& employee);/獲得職工記錄信息void Modify();/修改職工信息bool Delete(node*&phead);/刪除職工信息int main()employee

25、 employee;int cont=1;/顯示出菜單的條件int cont1=1;/顯示子菜單的條件phead=CreateWorkerList("employee.txt");/讀入存在文件里的記錄while(cont)switch(ShowMenu(MAINMENU)case ADD:/添加一條記錄Getemployee(employee);/獲取職工信息phead=Add(employee);/將獲得的職工信息插入到鏈表中break;case UPDATE: /更新記錄,即修改記錄信息Modify();break;case DELETE:if(Delete(phea

26、d) cout<<"即將執(zhí)行刪除操作,刪除記錄成功"<<endl;/即將執(zhí)行刪除操作,刪除記錄成功else cout<<"沒有執(zhí)行刪除操作,刪除記錄失敗"<<endl;/沒有執(zhí)行刪除操作,刪除記錄失敗break;case QUERY:/查詢一條記錄cont1=1;while(cont1)FuncType func;func=ShowMenu(SUBMENU);/確定查詢方式switch(func)case QB_NAME:/按姓名查詢case QB_NUMBER:/按編號查詢case QB_BASESALA

27、RY:/按基本工資查詢 case QB_GENDER:/按性別查詢case QB_TRUESALARY:/按績效工資查詢case QB_MOBILEPHONE:/按電話號碼查詢Show(Query(func);/輸出查詢結(jié)果RemoveQueryRes();/查詢完畢后刪除查詢鏈表break;case EXIT:cont1=0; /返回上一級菜單break;default: /輸入信息不正確,顯示沒有該選項cout<<"輸入信息不正確,顯示沒有該項"<<endl;break;break;case SAVE: /將修改或添加的信息保存到文件中cout&

28、lt;<"將修改或添加的信息保存到文件中"<<endl;Save("employee.txt");break;case SHOW:cout<<"顯示文件中的所有記錄"<<endl;Show(phead);break;case EXIT: /退出績效工資管理系統(tǒng)cout<<"你已經(jīng)退出程序,歡迎您下次使用"<<endl;RemoveWorkerList();cont=0;break;default: /輸入信息不正確,顯示沒有該選項cout<&l

29、t;"輸入信息不正確,顯示沒有該項"<<endl;break;system("PAUSE");return 0;FuncType ShowMenu(MenuType which)/顯示菜單FuncType func=NONE;int choice=0;switch(which)case MAINMENU:/顯示主菜單cout<<"*"<<endl;cout<<"*Worker's Performance Pay Management *"<<end

30、l;cout<<"* *"<<endl;cout<<"* Choose a function from the followling list: *"<<endl;cout<<"* (1) Add a worker record *"<<endl;cout<<"* (2) Update a worker record *"<<endl;cout<<"* (3) Delete a worker rec

31、ord *"<<endl;cout<<"* (4) Query a worker record *"<<endl;cout<<"* (5) Save to file *"<<endl;cout<<"* (6) Show all the worker record *"<<endl;cout<<"* (7) Exit *"<<endl;cout<<"*"<<

32、endl;cout<<"* Your Choice (1-7):"cin>>choice;cout<<"*"<<endl;switch(choice)/根據(jù)主菜單選項,確定用戶所選擇的服務(wù)case 1: func=ADD; break;case 2: func=UPDATE;break;case 3: func=DELETE; break;case 4: func=QUERY; break;case 5: func=SAVE; break;case 6: func=SHOW; break;case 7: f

33、unc=EXIT; break;default: func=NONE; break;break;case SUBMENU:/顯示子菜單cout<<"*"<<endl;cout<<"* Worker's Performance Pay Management *"<<endl;cout<<"* *"<<endl;cout<<"* Choose a query from the followling list: *"<<

34、;endl;cout<<"* (1) Query by name *"<<endl;cout<<"* (2) Query by number *"<<endl;cout<<"* (3) Query by gender *"<<endl;cout<<"* (4) Query by basesalary *"<<endl;cout<<"* (5) Query by truesalary *"&

35、lt;<endl;cout<<"* (6) Query by phone number *"<<endl;cout<<"* (7) Exit *"<<endl;cout<<"*"<<endl;cout<<"* Your Choice (1-7):"cin>>choice;cout<<"*"<<endl;switch(choice)/根據(jù)用戶的選擇確定所要進(jìn)行的查詢方式ca

36、se 1: func=QB_NAME; break; /按姓名查詢case 2: func=QB_NUMBER; break; /按編號查詢case 3: func=QB_GENDER; break; /按性別查詢case 4: func=QB_BASESALARY;break;/按基本工資查詢case 5: func=QB_TRUESALARY;break;/按績效工資查詢case 6: func=QB_MOBILEPHONE;break;/按電話號碼查詢case 7: func=EXIT;break;/返回上一級菜單default: func=NONE;break;/輸入不正確break;

37、default:/cout<<"NO SUCH A MENU !"<<endl;/該菜單不存在break;return func;node *CreateWorkerList(char filename)/根據(jù)文件內(nèi)容創(chuàng)建職工信息鏈表node *p;int gender;ifstream workerdata(filename);/用名字為filename的文件實例化對象workerdata,打開文件if(!workerdata) return NULL;while(!workerdata.eof()/將文件中的信息依次讀出,放在鏈表中if(p=ne

38、w node()/完成一個記錄的各數(shù)據(jù)項workerdata>>p->;workerdata>>p->worker.number;workerdata>>gender;p->worker.gender=(Gender)gender;workerdata>>p->worker.age;workerdata>>p->worker.position;workerdata>>p->worker.basesalary;workerdata>>p->worke

39、r.positionsalary;workerdata>>p->worker.agesalary;workerdata>>p->worker.rewardsalary;workerdata>>p->worker.truesalary;workerdata>>p->worker.mobilephone;p->next=phead;/將新結(jié)點(diǎn)加入鏈表phead=p;workerdata.close();/關(guān)閉文件return phead;/返回鏈表的頭指針void RemoveWorkerList()/刪除鏈表for(n

40、ode *p2,*p1=phead;p1;p1=p2)/依次刪除第一個結(jié)點(diǎn)p2=p1->next;delete p1;phead=NULL;void RemoveQueryRes()/刪除查詢結(jié)果鏈表for(QueryRes *p2,*p1=pqueryres;p1;p1=p2)p2=p1->pnext ;delete p1;pqueryres=NULL;void Save(char filename)/將鏈表中的信息存入文件filename中node *p;int gender;ofstream workerdata(filename);/ 將記錄寫入文件if(!workerda

41、ta) return ;for(p=phead;p;p=p->next)workerdata<<" "<<p->;workerdata<<" "<<p->worker.number;workerdata<<" "<<p->worker.age;gender=p->worker.gender;workerdata<<" "<<gender;workerdata<&l

42、t;" "<<p->worker.position;workerdata<<" "<<p->worker.basesalary;workerdata<<" "<<p->worker.positionsalary;workerdata<<" "<<p->worker.agesalary;workerdata<<" "<<p->worker.rewardsalar

43、y;workerdata<<" "<<p->worker.truesalary;workerdata<<" "<<p->worker.mobilephone;workerdata.close();/關(guān)閉文件void Show(node*pnode)for(node *p=pnode;p;p=p->next)/依次顯示鏈表中的各個記錄cout<<p-><<" "cout<<p->worker.numbe

44、r<<" "cout<<p->worker.gender<<" "cout<<p->worker.age<<" "cout<<p->worker.basesalary<<" "cout<<p->worker.positionsalary<<" "cout<<p->worker.agesalary<<" "cout&l

45、t;<p->worker.rewardsalary<<" "cout<<p->worker.truesalary<<" "cout<<p->worker.mobilephone<<endl;void Show(QueryRes *pnode)for(QueryRes *p=pnode;p;p=p->pnext)cout<<p->pnode-><<" "cout<<p->p

46、node->worker.number<<" " cout<<p->pnode->worker.age<<" "cout<<p->pnode->worker.gender<<" "cout<<p->pnode->worker.basesalary<<" " cout<<p->pnode->worker.positionsalary<<" &quo

47、t; cout<<p->pnode->worker.agesalary<<" " cout<<p->pnode->worker.rewardsalary<<" "cout<<p->pnode->worker.truesalary<<" "cout<<p->pnode->worker.mobilephone<<endl;QueryRes *Query(FuncType func)/確定查詢方式e

48、mployee employee;int hasRes=0;/hasRes記錄查詢方式int tag=1;/標(biāo)記是否輸入查詢的匹配值QueryRes *pquery=NULL;int gender;for(node *p=phead;p;p=p->next)switch(func)/如果某個記錄中的數(shù)據(jù)項符合查詢信息,則hasRes=1記錄下來case QB_NAME:if (tag)cout<<" 請輸入職工的名字 " cin>>;tag=0;if(!strcmp(p->,employee

49、.name)hasRes=1;break;case QB_NUMBER:if(tag)cout<<" 請輸入職工的編號 " cin>>employee.number;tag=0;if(p->worker.number=employee.number) hasRes=1;break;case QB_GENDER:if(tag) cout<< "請輸入職工的性別 " cin>>gender; employee.gender=(Gender)gender;tag=0;if(p->worker.gend

50、er=employee.gender) hasRes=1;break; case QB_BASESALARY:if(tag) cout<<" 請輸入職工的基本工資 " cin>>employee.basesalary;tag=0;if(p->worker.basesalary=employee.basesalary) hasRes=1;break;case QB_TRUESALARY:if(tag) cout<<" 請輸入職工的績效工資" cin>>employee.truesalary;tag=0;

51、if(p->worker.truesalary=employee.truesalary) hasRes=1;break;case QB_MOBILEPHONE:if(tag) cout<<"請輸入職工的電話號碼 " cin>>employee.mobilephone;tag=0;if(!strcmp(p->worker.mobilephone,employee.mobilephone) hasRes=1;break;default:break;if(hasRes)/把查詢結(jié)果的結(jié)點(diǎn)存在pqueryres中if(pquery=new Que

52、ryRes()pquery->pnode=p;pquery->pnext=pqueryres;pqueryres=pquery;hasRes=0;if(pqueryres=NULL) cout<<"查詢失敗,不存在符合條件的記錄"<<endl;/如果查詢結(jié)果為NULL,則查詢失敗return pqueryres;node *Add(employee &employee)/添加一條職工記錄node *p;if(p=new node()/新建結(jié)點(diǎn)成功則添加各數(shù)據(jù)項strcpy(p->,);p->worker.number=employee.number;p->worker.gender=employee.gender; p->worker.age=employee.age;strcp

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論