版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
年4月19日績效工資的管理與設(shè)計報告文檔僅供參考學(xué)號:6計算機(jī)基礎(chǔ)強(qiáng)化訓(xùn)練題目績效工資的管理與設(shè)計學(xué)院計算機(jī)科學(xué)與技術(shù)學(xué)院專業(yè)計算機(jī)科學(xué)與技術(shù)專業(yè)班級計科0904姓名趙苗指導(dǎo)教師郭羽成年 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輸出記錄123.7退出系統(tǒng)134心得體會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ù)文件用文本文件,用戶界面用字符界面。至少實現(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è)計的特點、不足、收獲和體會。時間安排:1、第20周(7月4日至7月8日)完成。2、7月8日8:00到計算機(jī)學(xué)院實驗中心(三樓)檢查程序、交課程設(shè)計報告、源程序(CD盤)。指導(dǎo)教師簽名:7月3日系主任(或責(zé)任教師)簽名:7月3日績效工資的管理與設(shè)計實現(xiàn)1.系統(tǒng)需求分析1.1問題說明績效工資又稱績效加薪、獎勵工資(Meritpay)或與評估掛鉤的工資(Appraisalrelatedpay),是以職工被聘上崗的工作崗位為主,根據(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ù)據(jù)分析表:編號數(shù)據(jù)項數(shù)據(jù)類型數(shù)據(jù)長度描述1namechar20職工姓名,此標(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職工的績效工資,此標(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ù)項查詢職工信息,若查詢信息匹配,則輸出改職工信息;否則,查詢失敗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)體如下:structworkerloyee{ charname[20];//員工的姓名 intnumber;//員工的編號intage;//員工的年齡 charposition[20];//員工的職位 doublebasesalary;//員工的基本工資 doublepositionsalary;//員工的崗位工資 doubleagesalary;//員工的年齡工資 doublerewardsalary;//員工的獎勵工資 Gendergender;//員工的性別doubletruesalary;//員工的績效工資charmobilephone[12];};2.2內(nèi)存數(shù)據(jù)結(jié)構(gòu)設(shè)計structnode//職工結(jié)點{ workerloyeeworker;//數(shù)據(jù)成員 node*next;//鏈域};2.3數(shù)據(jù)文件設(shè)計2.3.1文件中存有兩條員工信息,而且文件的存放路徑為當(dāng)前路徑張文100122總監(jiān)1000500500男4000田甜100235總裁300050001000女110002.3.2文件的創(chuàng)立打開與關(guān)閉ifstreamworkerdata(filename);//用名字為filename的文件實例化對象workerdata,打開文件if(!workerdata)returnNULL;while(!workerdata.eof())//將文件中的信息依次讀出,放在鏈表中{ if(p=newnode) {//完成一個記錄的各數(shù)據(jù)項workerdata>>p->;workerdata>>p->worker.number; workerdata>>gender;p->worker.age; workerdata>>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=phead;;//將新結(jié)點加入鏈表 p=phead ;}}workerdata.close();//關(guān)閉文件2.3.3文件的保存,寫入ofstreamworkerdata(filename);//將記錄寫入文件 if(!workerdata)return; for(p=phead;p;p=p->next) { workerdata<<""<<p->;………}workerdata.close();//關(guān)閉文件2.4實現(xiàn)的基本功能FuncTypeShowMenu(MenuTypewhich);//顯示菜單node*CreateWorkerList(charfilename[]);//根據(jù)文件內(nèi)容創(chuàng)立職工信息鏈表voidSave(charfilename[]);//將鏈表中的信息存入文件filename中voidShow(node*pnode);//依次顯示鏈表中的各個記錄node*Add(WorkerInfo&workerinfo);//添加一條職工記錄WorkerInfo&GetWorkerInfo(WorkerInfo&workerinfo);//獲得職工記錄信息voidModify();//修改職工信息boolDelete(node*&node);//刪除職工信息2.5輸入輸出設(shè)計2.5.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)會輸出提示”請輸入員工的編號”的提示,輸入要修改的員工的編號num,如果該職工記錄存在,系統(tǒng)則會刪除該職工的所有信息,并輸出”即將執(zhí)行刪除操作,刪除記錄成功”,表示刪除操作成功。如果該職工記錄不存在,則系統(tǒng)會輸出”沒有執(zhí)行刪除操作,刪除記錄失敗”,表示刪除操作失敗。2.5.4輸入4,選擇查詢職工信息功能。則系統(tǒng)輸出查詢的子菜單。選擇將要進(jìn)行的查詢方式,如果存在該菜單選項,則進(jìn)行查詢。如果沒有該菜單選項,則輸出提示”輸入信息不正確,顯示沒有該項”例如選擇按gender查詢的方式,則系統(tǒng)輸出”請輸入員工的姓名”,輸出職工姓名之后,若存在匹配的職工,則輸出所有符合條件的職工信息,否則輸出查詢失敗,不存在符合條件的記錄。2.5.5輸入5,選擇將緩存中的職工記錄保存到文件中,系統(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添加一個職工記錄,該職工的信息為黃靜100325文秘10001000500500女3.2修改num為1001的記錄,將姓名改為周禾,并顯示結(jié)果3.3刪除編號為1002的記錄,并顯示刪除后的結(jié)果,顯示刪除成功3.4按基本工資查詢,查詢基本工資為11000的記錄,顯示所有基本工資為11000的職工的所有信息。查詢phonenumber為的記錄,顯示查找成功。3.5把修改保存到文件3.6輸出記錄中所有信息3.7退出系統(tǒng)4心得體會4.1設(shè)計的特點在網(wǎng)上經(jīng)過查找,發(fā)現(xiàn)績效工資是一種新的工資制度,它主要包括4個部分,基本工資,崗位工資,年齡工資,獎勵工資四部分,因此要確定一個職工的績效工資為多少,則首先必須知道她的職位,年齡,以及她的獎勵工資和基本工資,另外根據(jù)公司的日常管理,在公司登記的一個員工的信息一般包括她的姓名,性別,編號,年齡,聯(lián)系方式等等,根據(jù)這些能夠建立一個員工結(jié)構(gòu)體,另外由于在在公司管理過程中,經(jīng)常會發(fā)生員工需要更新信息,或者有新員工加入,或者需要查找某一員工的信息等事件,因此該管理系統(tǒng)就需要具備一些功能,如添加一條員工信息,對某一員工信息進(jìn)行更新,查找某一員工(能夠根據(jù)姓名,性別,編號,聯(lián)系方式,職位,基本工資等等進(jìn)行查找),或者刪除一名已經(jīng)離開的員工,為了不占用多余的空間,員工信息的存儲能夠用鏈表來存儲,不浪費空間。將已經(jīng)輸入的信息保存到文件中,進(jìn)行管理。這樣就行成了一個績效工資的管理系統(tǒng),能夠方便公司的人事部對員工進(jìn)行管理。4.2設(shè)計的不足首先就是界面的設(shè)計不夠好,雖然也能與使用者進(jìn)行對話,可是有些細(xì)節(jié)處理不好,你如要更新一條員工信息時,要將這個員工的整個信息全部進(jìn)行重新輸入,年齡,性別,崗位等等,其實一些信息能夠不必進(jìn)行錄入,另外就是雖然用的是鏈表的存儲結(jié)構(gòu),可是在進(jìn)行刪除時,只是在鏈表中刪除了,其實它依然占據(jù)著空間,而且沒有指針指向它,造成了空間的浪費。4.3設(shè)計過程中的收獲績效工資的管理與設(shè)計,看似是一個挺簡單的系統(tǒng),只要設(shè)計了員工的結(jié)構(gòu)體,再加上一些函數(shù)進(jìn)行處理就行了,可是這個設(shè)計過程中,最容易忽略的就是考慮全面,比如一開始設(shè)計員工的信息結(jié)構(gòu)體時,沒有想全面,只有一些簡單的信息,姓名編號職位等等,沒有想到還有員工的聯(lián)系方式也要記錄,因為根據(jù)聯(lián)系方式能夠唯一確定一名員工,還有就是設(shè)計其功能時,也有一些地方忘記了,比如只想到了刪除信息,可忘記了,刪除信息要更改其頭指針,還有就是更新員工信息時,一開始只想到要更新員工的職位,以及崗位工資,績效工資等,沒有想到也可能全部的信息都要進(jìn)行更換。還有就是一些函數(shù)的設(shè)計,比如用姓名或者是電話號碼進(jìn)行查詢時,定義的名字還有電話號碼是字符數(shù)組,我寫了一個這樣的函數(shù),for(inti=0;i<20;i++){if(name[i]==n[i])i++;elsebreak;}if(p!=NULL&&i>=20)則找到了具有相同姓名的員工,可是不知道什么原因發(fā)現(xiàn)程序走到這一步總是出錯,進(jìn)行調(diào)試更新程序,發(fā)現(xiàn)也找不到原因。后來,就想到了在字符串中有一函數(shù)是專門進(jìn)行比較兩個字符數(shù)組是否相等的,strcmp(chara[],charb[])只要在文件的開頭加上<string.h>就能夠直接用這個函數(shù)。有些東西并不是表面上想的那么簡單,或許你認(rèn)為能夠?qū)崿F(xiàn)的卻發(fā)現(xiàn)在電腦上實現(xiàn)不了,這時只有靠不斷的修改才能使程序正確運行。最后,謝謝老師,給了我們一個鍛煉的機(jī)會,把所學(xué)的一些東西綜合起來,加強(qiáng)了我們的動手能力!源程序清單:#include<iostream>//輸入流#include<iomanip>#include<fstream>//輸入輸出流#include<string>usingnamespacestd;enumGender{MALE,FEMALE};//枚舉類型,標(biāo)志性別(0代表男,1代表女)enumMenuType{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)志功能類型structemployee{ charname[20];//員工的姓名 intnumber;//員工的編號intage;//員工的年齡 charposition[20];//員工的職位 doublebasesalary;//員工的基本工資 doublepositionsalary;//員工的崗位工資 doubleagesalary;//員工的年齡工資 doublerewardsalary;//員工的獎勵工資 Gendergender;//員工的性別doubletruesalary;//員工的績效工資charmobilephone[12];};structnode//職工結(jié)點{ employeeworker;//數(shù)據(jù)成員 node*next;//鏈域};structQueryRes//查詢結(jié)果結(jié)點{ node*pnode;//數(shù)據(jù)成員 QueryRes*pnext;//鏈域};node*phead=NULL;//職工記錄鏈表頭結(jié)點QueryRes*pqueryres=NULL;//查詢結(jié)果鏈表頭結(jié)點FuncTypeShowMenu(MenuTypewhich);//顯示菜單node*CreateWorkerList(charfilename[]);//根據(jù)文件內(nèi)容創(chuàng)立職工信息鏈表voidRemoveWorkerList();//刪除鏈表voidRemoveQueryRes();//刪除查詢結(jié)果鏈表voidSave(charfilename[]);//將鏈表中的信息存入文件filename中voidShow(node*pnode);//依次顯示鏈表中的各個記錄voidShow(QueryRes*pnode);//依次顯示鏈表中的各個記錄QueryRes*Query(FuncTypefunc);//確定查詢方式,返回符合查詢的結(jié)點的鏈表node*Add(employee&employee);//添加一條職工記錄employee&Getemployee(employee&employee);//獲得職工記錄信息voidModify();//修改職工信息boolDelete(node*&phead);//刪除職工信息intmain(){ employeeemployee; intcont=1;//顯示出菜單的條件 intcont1=1;//顯示子菜單的條件 phead=CreateWorkerList("employee.txt");//讀入存在文件里的記錄 while(cont) { switch(ShowMenu(MAINMENU)) { caseADD://添加一條記錄 Getemployee(employee);//獲取職工信息 phead=Add(employee);//將獲得的職工信息插入到鏈表中 break; caseUPDATE://更新記錄,即修改記錄信息 Modify(); break; caseDELETE: if(Delete(phead))cout<<"即將執(zhí)行刪除操作,刪除記錄成功"<<endl;//即將執(zhí)行刪除操作,刪除記錄成功 elsecout<<"沒有執(zhí)行刪除操作,刪除記錄失敗"<<endl;//沒有執(zhí)行刪除操作,刪除記錄失敗 break; caseQUERY://查詢一條記錄 cont1=1; while(cont1) { FuncTypefunc; func=ShowMenu(SUBMENU);//確定查詢方式 switch(func) { caseQB_NAME://按姓名查詢 caseQB_NUMBER://按編號查詢 caseQB_BASESALARY://按基本工資查詢caseQB_GENDER://按性別查詢 caseQB_TRUESALARY://按績效工資查詢 caseQB_MOBILEPHONE://按電話號碼查詢 Show(Query(func));//輸出查詢結(jié)果 RemoveQueryRes();//查詢完畢后刪除查詢鏈表 break; caseEXIT: cont1=0;//返回上一級菜單 break; default://輸入信息不正確,顯示沒有該選項 cout<<"輸入信息不正確,顯示沒有該項"<<endl; break; } } break; caseSAVE://將修改或添加的信息保存到文件中 cout<<"將修改或添加的信息保存到文件中"<<endl; Save("employee.txt"); break; caseSHOW: cout<<"顯示文件中的所有記錄"<<endl; Show(phead); break; caseEXIT://退出績效工資管理系統(tǒng) cout<<"你已經(jīng)退出程序,歡迎您下次使用"<<endl; RemoveWorkerList(); cont=0; break; default://輸入信息不正確,顯示沒有該選項 cout<<"輸入信息不正確,顯示沒有該項"<<endl; break; } } system("PAUSE"); return0;}FuncTypeShowMenu(MenuTypewhich)//顯示菜單{ FuncTypefunc=NONE; intchoice=0; switch(which) { caseMAINMENU://顯示主菜單 cout<<"*****************************************************"<<endl; cout<<"*Worker'sPerformancePayManagement*"<<endl; cout<<"**"<<endl; cout<<"*Chooseafunctionfromthefollowlinglist:*"<<endl; cout<<"*(1)Addaworkerrecord*"<<endl; cout<<"*(2)Updateaworkerrecord*"<<endl; cout<<"*(3)Deleteaworkerrecord*"<<endl; cout<<"*(4)Queryaworkerrecord*"<<endl; cout<<"*(5)Savetofile*"<<endl; cout<<"*(6)Showalltheworkerrecord*"<<endl; cout<<"*(7)Exit*"<<endl; cout<<"*****************************************************"<<endl; cout<<"*YourChoice(1-7):"; cin>>choice; cout<<"*****************************************************"<<endl; switch(choice)//根據(jù)主菜單選項,確定用戶所選擇的服務(wù) { case1:func=ADD;break; case2:func=UPDATE;break; case3:func=DELETE;break; case4:func=QUERY;break; case5:func=SAVE;break; case6:func=SHOW;break; case7:func=EXIT;break; default:func=NONE;break; } break; caseSUBMENU://顯示子菜單 cout<<"*****************************************************"<<endl; cout<<"*Worker'sPerformancePayManagement*"<<endl; cout<<"**"<<endl; cout<<"*Chooseaqueryfromthefollowlinglist:*"<<endl; cout<<"*(1)Querybyname*"<<endl; cout<<"*(2)Querybynumber*"<<endl; cout<<"*(3)Querybygender*"<<endl; cout<<"*(4)Querybybasesalary*"<<endl; cout<<"*(5)Querybytruesalary*"<<endl; cout<<"*(6)Querybyphonenumber*"<<endl; cout<<"*(7)Exit*"<<endl; cout<<"*****************************************************"<<endl; cout<<"*YourChoice(1-7):"; cin>>choice; cout<<"*****************************************************"<<endl; switch(choice)//根據(jù)用戶的選擇確定所要進(jìn)行的查詢方式 { case1:func=QB_NAME;break;//按姓名查詢 case2:func=QB_NUMBER;break;//按編號查詢 case3:func=QB_GENDER;break;//按性別查詢 case4:func=QB_BASESALARY;break;//按基本工資查詢 case5:func=QB_TRUESALARY;break;//按績效工資查詢 case6:func=QB_MOBILEPHONE;break;//按電話號碼查詢 case7:func=EXIT;break;//返回上一級菜單 default:func=NONE;break;//輸入不正確 } break; default:// cout<<"NOSUCHAMENU!"<<endl;//該菜單不存在 break; } returnfunc;}node*CreateWorkerList(charfilename[])//根據(jù)文件內(nèi)容創(chuàng)立職工信息鏈表{ node*p; intgender; ifstreamworkerdata(filename);//用名字為filename的文件實例化對象workerdata,打開文件 if(!workerdata)returnNULL; while(!workerdata.eof())//將文件中的信息依次讀出,放在鏈表中 { if(p=newnode())//完成一個記錄的各數(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->worker.positionsalary; workerdata>>p->worker.agesalary; workerdata>>p->worker.rewardsalary; workerdata>>p->worker.truesalary; workerdata>>p->worker.mobilephone; p->next=phead;//將新結(jié)點加入鏈表 phead=p ; } } workerdata.close();//關(guān)閉文件 returnphead;//返回鏈表的頭指針}voidRemoveWorkerList()//刪除鏈表{ for(node*p2,*p1=phead;p1;p1=p2)//依次刪除第一個結(jié)點 { p2=p1->next; deletep1; } phead=NULL;}voidRemoveQueryRes()//刪除查詢結(jié)果鏈表{ for(QueryRes*p2,*p1=pqueryres;p1;p1=p2) { p2=p1->pnext; deletep1; } pqueryres=NULL;}voidSave(charfilename[])//將鏈表中的信息存入文件filename中{ node*p; intgender; ofstreamworkerdata(filename);//將記錄寫入文件 if(!workerdata)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<<""<<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; } workerdata.close();//關(guān)閉文件}voidShow(node*pnode){ for(node*p=pnode;p;p=p->next)//依次顯示鏈表中的各個記錄 { cout<<p-><<";"; cout<<p->worker.number<<";"; cout<<p->worker.gender<<";"; cout<<p->worker.age<<";"; cout<<p->worker.basesalary<<";"; cout<<p->worker.positionsalary<<";"; cout<<p->worker.agesalary<<";"; cout<<p->worker.rewardsalary<<";"; cout<<p->worker.truesalary<<";"; cout<<p->worker.mobilephone<<endl; }}voidShow(QueryRes*pnode){ for(QueryRes*p=pnode;p;p=p->pnext) { cout<<p->pnode-><<";"; cout<<p->pnode->worker.number<<";";cout<<p->pnode->worker.age<<";"; cout<<p->pnode->worker.gender<<";"; cout<<p->pnode->worker.basesalary<<";";cout<<p->pnode->worker.positionsalary<<";";cout<<p->pnode->worker.agesalary<<";";cout<<p->pnode->worker.rewardsalary<<";"; cout<<p->pnode->worker.truesalary<<";"; cout<<p->pnode->worker.mobilephone<<endl; }}QueryRes*Query(FuncTypefunc)//確定查詢方式{ employeeemployee; inthasRes=0;//hasRes記錄查詢方式 inttag=1;//標(biāo)記是否輸入查詢的匹配值 QueryRes*pquery=NULL; intgender; for(node*p=phead;p;p=p->next) { switch(func)//如果某個記錄中的數(shù)據(jù)項符合查詢信息,則hasRes=1記錄下來 { caseQB_NAME: if(tag) { cout<<"請輸入職工的名字"; cin>>; tag=0; } if(!strcmp(p->,)) hasRes=1; break; caseQB_NUMBER: if(tag) { cout<<"請輸入職工的編號"; cin>>employee.number; tag=0; } if(p->worker.number==employee.number)hasRes=1; break; caseQB_GENDER: if(tag) { cout<<"請輸入職工的性別"; cin>>gender;employee.gender=(Gender)gender; tag=0; } if(p->worker.gender==employee.gender)hasRes=1; break; caseQB_BASESALARY: if(tag) { cout<<"請輸入職工的基本工資"; cin>>employee.basesalary; tag=0; } if(p->worker.basesalary==employee.basesalary)hasRes=1; break; caseQB_TRUESALARY: if(tag) { cout<<"請輸入職工的績效工資"; cin>>employee.truesalary; tag=0; } if(p->worker.truesalary==employee.truesalary)hasRes=1; break; caseQB_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é)點存在pqueryres中 { if(pquery=newQueryRes()) { pquery->pnode=p; pquery->pnext=pqueryres; pqueryres=pquery; } hasRes=0; } } if(pqueryres==NULL)cout<<"查詢失敗,不存在符合條件的記錄"<<endl;//如果查詢結(jié)果為NULL,則查詢失敗 returnpqueryres;}node*Add(employee&employee)//添加一條職工記錄{ node*p; if(p=newnode())//新建結(jié)點成功則添加各數(shù)據(jù)項 { strcpy(p->,); p->worker.number=employee.number; p->worker.gender=employee.gender;p->worker.age=employee.age; strcpy(p->worker.position,employee.position); p->worker.basesalary=employee.basesalary;p->worker.positionsalary=employee.positionsalary;p->worker.agesalary=employee.agesalary; p->worker.rewardsalary=employee.rewardsalary;p->worker.truesalary=employee.truesalary; strcpy(p->worker.mobilephone,employee.mobilephone); p->next=phead; phead=p; } returnphead;//返回頭結(jié)點}employee&Getemployee(employee&employee)//獲得職工記錄信息{ intgender; cout<<"請輸入職工的姓名"; cin>>; cout<<"請輸入職工的編號"; cin>>employee.number; cout<<"請輸入職工的性別"; cin>>gender;employee.gender=(Gender)gender; cout<<"請輸入職工的年齡"; cin>>employee.age; cout<<"請輸入職工的崗位"<<endl; cin>>employee.position; cout<<"請輸入職工的基本工資"; cin>>employee.basesalary; cout<<"請輸入職工的崗位工資"; cin>>employee.positionsalary;cout<<"請輸入職工的年齡工資"; cin>>employee.agesalary;cout<<"請輸入職工的獎勵工資"; cin>>employee.rewardsalary;employee.truesalary=employee.rewardsalary+employee.agesalary+employee.positionsalary+employee.basesalary; cout<<"請輸入員工的電話號碼"; cin>>employee.mob
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 印花配色打樣工安全意識測試考核試卷含答案
- 2026江西南昌安義縣社會福利院招聘失能照護(hù)護(hù)理員1人備考題庫及參考答案詳解一套
- 禮儀主持人操作規(guī)范評優(yōu)考核試卷含答案
- 酶制劑微生物菌種工崗前創(chuàng)新應(yīng)用考核試卷含答案
- 輸油工崗前流程考核試卷含答案
- 企業(yè)財務(wù)管理規(guī)范制度
- 移動應(yīng)用設(shè)計規(guī)范實踐探討
- 小學(xué)三年級上冊數(shù)學(xué)期末練習(xí)題及答案
- 2026年及未來5年市場數(shù)據(jù)中國味精食品行業(yè)市場深度研究及發(fā)展趨勢預(yù)測報告
- 2026年及未來5年市場數(shù)據(jù)中國核電站行業(yè)發(fā)展監(jiān)測及投資策略研究報告
- 鋼管支架貝雷梁拆除施工方案
- JJG 365-2008電化學(xué)氧測定儀
- 2024年新安全生產(chǎn)法培訓(xùn)課件
- 卷閘門合同書
- 煤礦運輸知識課件
- (全冊完整版)人教版五年級數(shù)學(xué)上冊100道口算題
- 人口信息查詢申請表(表格)
- 一年級上冊數(shù)學(xué)期末質(zhì)量分析報告
- 公共視頻監(jiān)控系統(tǒng)運營維護(hù)要求
- 教育科學(xué)規(guī)劃課題中期報告 (雙減背景下家校共育策略研究)
- 河南省職工養(yǎng)老保險參保人員關(guān)鍵信息變更核準(zhǔn)表
評論
0/150
提交評論