C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)工資系統(tǒng)報(bào)告全新精選_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)工資系統(tǒng)報(bào)告全新精選_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)工資系統(tǒng)報(bào)告全新精選_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)工資系統(tǒng)報(bào)告全新精選_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)工資系統(tǒng)報(bào)告全新精選_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目錄一、需求分析2二、概要設(shè)計(jì)2三、詳細(xì)設(shè)計(jì)4四、調(diào)試分析4五、用戶手冊(cè)5六、測(cè)試數(shù)據(jù)6七、程序代碼14A'需求分析1 .第一步,依據(jù)身份進(jìn)行登錄,管理員和職工所能進(jìn)行的操作不同,具備較高安全性,同時(shí)用戶可根據(jù)需要修改自己的密碼,管理員還可添加和刪除用戶,首次使用時(shí)不存在用戶,管理員可進(jìn)行注冊(cè),注冊(cè)成功后再進(jìn)入使用。2 .多職工信息進(jìn)行操作時(shí),建立動(dòng)態(tài)鏈表,每個(gè)節(jié)點(diǎn)包含一個(gè)職員的工號(hào)、姓名、工資等全部信息,通過(guò)鏈表構(gòu)建一個(gè)完整的職工信息庫(kù),鏈表具備錄入、刪除、修改、查詢及統(tǒng)計(jì)功能,各功能顯示在菜單中,由主函數(shù)分別調(diào)用。3 .為了避免一個(gè)函數(shù)體過(guò)長(zhǎng),進(jìn)行細(xì)化子函數(shù),小型子函數(shù)在各個(gè)主調(diào)函

2、數(shù)里多次調(diào)用,便于使用。4 .以可讀可寫可追加方式新建一個(gè)文本文件,用于存儲(chǔ)鏈表里所有節(jié)點(diǎn)上包含的信息,將節(jié)點(diǎn)信息導(dǎo)入文件時(shí),從頭指針開(kāi)始,依次寫入。5 .查詢、修改、刪除、職工信息時(shí),調(diào)用子函數(shù)以只讀方式打開(kāi)系統(tǒng)庫(kù)文件,并將文件從頭至尾讀取一遍,每次讀取一個(gè)節(jié)點(diǎn)的長(zhǎng)度,將每次讀取到的信息依次導(dǎo)入到鏈表的節(jié)點(diǎn)中去,再對(duì)鏈表進(jìn)行所需功能的操作。修改和刪除完成后,將整個(gè)鏈表包含的信息重新寫入文件,寫入之前打開(kāi)系統(tǒng)庫(kù)文件同時(shí)進(jìn)行格式化。6 .統(tǒng)計(jì)職工最高、最低工資及工資均方差時(shí),以同時(shí)方式將職工工資等信息導(dǎo)入到鏈表中,然后以子菜單的形式輸出統(tǒng)計(jì)的項(xiàng)目,包括各部門和全公司以及最高、最低工資和工資均方差

3、。統(tǒng)計(jì)各部門最高、最低工資和工資均方差時(shí)需再調(diào)用子函數(shù)分別進(jìn)行操作。統(tǒng)計(jì)全公司最高、最低工資和工資均方差時(shí)采用多分支結(jié)構(gòu)進(jìn)行。7 .通過(guò)屏幕操作等函數(shù)對(duì)界面進(jìn)行處理,相對(duì)美觀。菜單及所有操作提示信息均采用中文輸出,每一步操作后會(huì)有相應(yīng)的提示。如文件不存在或?yàn)榭諘r(shí),會(huì)提示“文件打開(kāi)失??!”或“文件是空的!”或輸入有誤時(shí)提示重新輸入。二、概要設(shè)計(jì)1 .函數(shù)設(shè)計(jì)main();主函數(shù)控制整個(gè)程序流程,先登錄再進(jìn)行子函數(shù)調(diào)用menu1();管理員菜單函數(shù)menu2();職工菜單函數(shù),可操作范圍比管理員小createlianbiao();創(chuàng)建鏈表函數(shù),用鏈表構(gòu)建整個(gè)信息庫(kù)input();錄入函數(shù),將鏈表存

4、進(jìn)文件readwenjian(structemployee_gz*head);讀取文件內(nèi)容至U指定鏈表search(structemployee_gz*head,charxinxi);查詢員工工資信息shuchuxinxi(structemployee_gz*head,charxinxi);輸出查詢至U的員工信息xiugai(structemployee_gz*head,charinfor);修改鏈表信息送至U主修改里去modify(structemployee_gz*head);修改文件里員工工資信息Delete(structemployee_gz*head);刪除文件里某員工信息shanc

5、hujd(structemployee_gz*head,charinfo);刪除節(jié)點(diǎn)信息zhuceyh();注冊(cè)賬號(hào)tianjiayh();添加賬戶信息deleteyh();刪除用戶信息choose(structemployee_gz*head,charbumen);選擇統(tǒng)計(jì)的項(xiàng)目count_zdgz(structemployee_gz*head,charbumen);用于某部門計(jì)算最低工資count_zggz(structemployee_gz*head,charbumen);用于某部門計(jì)算最高工資count_pjgz(structemployee_gz*head,charbumen);用于

6、某部門計(jì)算平均工資count_gzfc(structemployee_gz*head,charbumen);用于某部門計(jì)算工資方差count_gz(structemployee_gz*head,charbumen);瀏覽統(tǒng)計(jì)的各項(xiàng)工資指標(biāo)tianjiayh();管理員可進(jìn)行添加職工賬戶信息,用于職工登錄系統(tǒng)查詢信息2 .流程控制(1)主函數(shù)模塊intmain()讀取賬戶文件;do管理員登錄;函數(shù)分支:1)錄入記錄:調(diào)用讀取職工工資信息文件函數(shù)和創(chuàng)建鏈表函數(shù)后寫入文件;2)刪除記錄:調(diào)用讀取職工工資信息文件函數(shù)和修改鏈表函數(shù)后重新寫入文件;3)查詢記錄:調(diào)用讀取職工工資信息文件函數(shù)和輸出所查節(jié)點(diǎn)

7、信息函數(shù);4)修改記錄:調(diào)用讀取職工工資信息文件函數(shù)和修改節(jié)點(diǎn)信息函數(shù)后重新寫入文件;5)統(tǒng)計(jì)記錄:采用兩層多分支結(jié)構(gòu),第一層分支結(jié)構(gòu)進(jìn)行部門選擇,調(diào)用讀取職工工資信息文件函數(shù)和統(tǒng)計(jì)最低、最高、平均工資和工資方差函數(shù),統(tǒng)計(jì)全公司工資時(shí)直接查找和計(jì)算;6)重新登錄:返回主函數(shù);7)添加登錄賬戶:調(diào)用添加賬戶函數(shù);8)修改賬戶密碼:調(diào)用修改密碼函數(shù);9)刪除登錄賬戶:調(diào)用刪除賬戶函數(shù);0)退出系統(tǒng):exit(0);職工登錄;函數(shù)分支:1)查詢個(gè)人記錄:調(diào)用輸出符合搜索條件的節(jié)點(diǎn)信息函數(shù);2)瀏覽公司記錄:調(diào)用統(tǒng)計(jì)工資函數(shù);3)重新登錄:返回主函數(shù);4)修改登錄密碼:調(diào)用修改密碼函數(shù);0)退出系統(tǒng):

8、exit(0);while(退出系統(tǒng):exit(0)三、詳細(xì)設(shè)計(jì)1 .基本數(shù)據(jù)類型字符串型;(2)長(zhǎng)整數(shù)型;2 .程序設(shè)計(jì)步驟說(shuō)明及注釋(1)函數(shù)介紹及調(diào)用關(guān)系見(jiàn)概要設(shè)計(jì)。(2)注釋見(jiàn)附錄(源代碼中以標(biāo)出注釋)。四、調(diào)試分析1 .開(kāi)始創(chuàng)建了鏈表之后,將整個(gè)鏈表中的信息寫入文件時(shí),寫入方式不對(duì),向文件里寫入數(shù)據(jù)塊內(nèi)容時(shí),數(shù)據(jù)以二進(jìn)制方式存儲(chǔ),新建文件和打開(kāi)文件的方式必須加上b,并用循環(huán)控制,從頭結(jié)點(diǎn)開(kāi)始,每次寫入一個(gè)節(jié)點(diǎn),數(shù)據(jù)長(zhǎng)度為1,而不是其他的數(shù)字。2 .修改和刪除后文件里的數(shù)據(jù)出現(xiàn)錯(cuò)亂,再次查詢時(shí)出現(xiàn)亂碼,原因還是操作后的寫入方式不對(duì),需要以“wb”方式將原文件清空再將整個(gè)鏈表中的信息寫入

9、。3 .進(jìn)行工資信息統(tǒng)計(jì)時(shí),輸出結(jié)果有錯(cuò)誤,加入員工數(shù)的輸出后發(fā)現(xiàn)輸出的員工數(shù)比錄入的多,且其工資為0的情況,進(jìn)行查詢函數(shù)檢驗(yàn)時(shí)發(fā)現(xiàn)會(huì)輸出多余的空信息(無(wú)職工名、無(wú)工號(hào)、工資為零等)或者重復(fù)輸出,原因應(yīng)該是存入文件時(shí)存在問(wèn)題,因此在輸出查詢信息及統(tǒng)計(jì)時(shí)加入了限制條件將空節(jié)點(diǎn)或者多余的信息篩選掉。4 .統(tǒng)計(jì)分為各部門和全公司,如果只用一個(gè)子函數(shù)實(shí)現(xiàn)所有統(tǒng)計(jì)功能則比較繁瑣、函數(shù)體太大,因此需再使用子函數(shù)分別對(duì)各項(xiàng)目進(jìn)行統(tǒng)計(jì),那么進(jìn)行不同部門的統(tǒng)計(jì)時(shí)調(diào)用子函數(shù)就比較困難。因此在這些統(tǒng)計(jì)最低工資、最高工資、平均工資、工資方差的函數(shù)中,需要定義一個(gè)部門變量,在條件語(yǔ)句里把部門信息通過(guò)參數(shù)傳遞在子函數(shù)中使

10、用,從而通過(guò)條件語(yǔ)句找到該部門信息并統(tǒng)計(jì)。5 .在刪除和修改函數(shù)中,為了避免繁瑣,同樣調(diào)用子函數(shù)對(duì)鏈表進(jìn)行操作,在進(jìn)行修改方式和刪除方式選擇時(shí),需要重新定義一個(gè)共同變量并傳遞給子函數(shù),在判斷語(yǔ)句里采用“或”語(yǔ)句對(duì)姓名和工號(hào)同時(shí)搜索。6 .在進(jìn)行職工信息添加時(shí),開(kāi)始沒(méi)有避免重復(fù)信息的輸入,輸入已有的職工工號(hào)時(shí),應(yīng)提示“已有該職工信息!”,因此要對(duì)原文件的內(nèi)容進(jìn)行便利檢索,同時(shí)要對(duì)正在建立的鏈表進(jìn)行檢索,因?yàn)闊o(wú)法將原文件內(nèi)容與正在建立的鏈表連接起來(lái),只能通過(guò)對(duì)兩個(gè)鏈表進(jìn)行兩次檢索,將正在建立的鏈表以追加的方式寫到已經(jīng)建立好的文件中(添加到元數(shù)據(jù)后面)。7 .進(jìn)行菜單內(nèi)的操作提示輸入有誤時(shí),再按任意

11、鍵會(huì)直接退到主菜單,再要進(jìn)行該操作需重新選擇菜單,耗費(fèi)時(shí)間,使用循環(huán)語(yǔ)句控制,提示“輸入有誤時(shí)!”再次提示輸入,將新輸入的數(shù)據(jù)重新賦給變量,知道輸入信息正確時(shí),包括部門及職務(wù)的合法性檢驗(yàn)。8 .將職工的基金、稅金、應(yīng)發(fā)工資等信息修改后,輸出查詢的各項(xiàng)結(jié)果除以修改的其他的不變,那么就不符合要求,因?yàn)閼?yīng)發(fā)工資等于基本工資與崗位工資、獎(jiǎng)金之和,實(shí)發(fā)工資等于應(yīng)發(fā)工資減去基金和稅金,因此修改這些信息時(shí),需要重新計(jì)算,保證各項(xiàng)信息正確。9 .上一界面或者上一語(yǔ)句操作完成后需跳轉(zhuǎn)下一語(yǔ)句,有時(shí)會(huì)出現(xiàn)兩層信息重疊在一起,甚至錯(cuò)誤,原因是沒(méi)有消除上一層內(nèi)容,因此需要在很多地方加入清屏操作或是刪除上一行的操作,進(jìn)

12、行刪除上面多行時(shí),要從所需刪的最下面一行開(kāi)始刪除,依次向上。10 .職工登錄后,把其工號(hào)(用戶名)作為參數(shù)傳遞給子函數(shù),查詢其個(gè)人信息時(shí),按此工號(hào)對(duì)文件里的內(nèi)容(先將文件內(nèi)容讀到鏈表里)進(jìn)行檢索后輸出。11 .開(kāi)始沒(méi)有修改登錄密碼的操作,不便于用戶使用,增加修改密碼函數(shù)后,管理員和職工可以各自修改自己的密碼,保證用戶安全。后來(lái)還同時(shí)添加了刪除登錄賬戶函數(shù),便于管理員管理。12 .考慮到首次使用時(shí),沒(méi)有任何賬戶信息,也沒(méi)有存儲(chǔ)用戶的文件,而導(dǎo)致運(yùn)行故障。因此首次運(yùn)行時(shí),增加語(yǔ)句完成管理員用戶的注冊(cè),注冊(cè)成功后管理員再進(jìn)行相關(guān)操作。五、用戶手冊(cè)1 .本程序的運(yùn)行環(huán)境為windowsxp或windo

13、ws7(32位)的操作系統(tǒng),執(zhí)行文件為GONGZI-1.EXE。2 .打開(kāi)運(yùn)行程序后,按照提示進(jìn)行登錄操作身份分為管理員和職工,依據(jù)自己的身份對(duì)應(yīng)用戶名及密碼登錄,身份不符將不能登錄,需重新輸入。管理員首次運(yùn)行應(yīng)先錄入信息,并添加對(duì)應(yīng)的職工登錄賬戶信息。3 .職工登錄后菜單與管理員不同,職工只能查詢自己信息和瀏覽公司及各部門最高、最低工資以及平均工資和工資方差信息,并可選擇重新登錄。4 .管理員進(jìn)行管理時(shí),可添加、刪除登錄賬戶,管理員和職工用戶可根據(jù)喜好修改自己的登錄密碼。5 .完成所需操作后可選擇重新登錄或退出程序。六、測(cè)試數(shù)據(jù)1.文件中包含的所有數(shù)據(jù)互c“d改itieFrpiit*小臬而t

14、zmHQUl”,ESS?J,M:1301工號(hào):1392工號(hào):1押3工號(hào):1那4工號(hào):13打4:1306工號(hào):1307工g:13M工百;138T工號(hào):131:1311_-5:1312二號(hào):向a工號(hào):13i4I§=1315T4:13U工事UT4iiaie工號(hào):1319T-:132fi姓名;U£hifj名:renting件名Trnnglvta姓名:*«njning姓名JzMnwei洋名:lianqqi姓名:vonlians程官:llinachengf沖3"niectian*含:jhnutan姓名:sunlu(i姓名改口國(guó)h娘dng姓名:Mt¥nng姓

15、名:fAnsftong姓>gisonsfyu姓苫:rudong旌名工川J0姓名:i娃名皿u姓名:chunir>4虹基本丁資信息嗎?>T李擇細(xì)交直一1部門,ruftJlanxue押an部n:ruanjjanxueyuan:FiiAvtjTAnivirpyvjiin=ruanj:ruanjianxueyvanzxuegiengchu:Ku.egi«ncliiU;xuegiengchu:xuegongchu廿xu史Vnf/aliii工不2b,工gmi*£pw«h«icbuiew3b-«ich4i:£ieb«lch

16、<i:renshichci-ipflriEhichtiJ:re«ii>hlcmf-renshichAi一:手和力殳hichu53外埼咨賀費(fèi)有資工工工工工工工工工工工工工工工工工工工工甘管tt1片g.廿環(huán)磐杳.-4C發(fā)發(fā)一女¥安雪安安X賓室安天天軍X實(shí)實(shí)實(shí)實(shí)安昊:3399;3iei:3836:4523川4213336:3117r5#22;4?78:35«2ilSflfl6399:4S12頁(yè)2 .注冊(cè)賬戶亙C:EWCiriE'HZPIUserS®iiODeEi'l.I* a十冊(cè)冊(cè)ivin動(dòng)空nlHn4s成a a 3 眇 IJfrH

17、 U : 2fitt 件面而名-1注 夕下霓耨已 些隹工工工含謂情3 .管理員和職工菜單亙C:DOCUMEl桌面,匕口工噂工1.exh*二二二二一*M*二二二二二一一錄錄統(tǒng)制統(tǒng)一一一系一)錄01一一系一一理XS土二二X二二二二二二二一一家善心息戶一一一一說(shuō)曾信耳一一戶筑一-一一工,L工賬系一律一一人國(guó)加除一一選靈育線添刪二二二M二二二二二一入一“輸MC:POCTTMElUPBUrer;&IUIBOUL,4.錄入職工信息工一個(gè)公簧職一一詢善氫工三生司錄出Tf息息統(tǒng) 統(tǒng)“值%.?¥* 資#H工工工-二 二 二 二 二 C< CrDCCTTIE*J IPirisprimuon

18、* 1. 杵可刈“錄入職工工演信息產(chǎn)4名門馬貪本金,金寶位工今生部職篡基重崗工工工工工工工工IJF工入入入入入入入入入入入;1321誣號(hào);5729»6«9218338?7ijuuajk:4«3工憒:SS"5 .查詢信息RM向二 1 a & 2102 4 B i n n 1 0 2 5 查 zhil=7nj回ji:3:6:4!3 ileiz觸號(hào)Unwei資831Xi 11 正rqkr 5yLn DDL af名小痂m缶即心知sJ燈燈籍基基意H南應(yīng)實(shí) 想工工工工工工工工工二二二工 ???quot;X口Tlnz 口八口八口八口人 口隊(duì) 口h口;口4 ET

19、NEK 士 * *艮1耳耳&HR耳耳耳耳耳B,CiDDUlEblIPnJsfliUDIHDUL.exe6 .修改信息,:C;DOCU1E為XZPIUjerI窠面ZU1HQ1.eie7.刪除信息8.統(tǒng)計(jì)單位及項(xiàng)目選擇oCiVDOCITIE"lXIPIlJscrXjRBjVZniHOn'Rcit9.輸出統(tǒng)計(jì)信息仆j二-I由一工工工方M 1”低高均費(fèi) 六一 I您想.統(tǒng)計(jì)哪一項(xiàng)上聯(lián) c;tDoanE"ispiUH”余,,-eH,*«!*請(qǐng)?zhí)匀肽倪x擇;4全主工公司的公立的Epq統(tǒng)計(jì)部門:xuugurigcihu舞神差工工工萬(wàn)很商筠憒最帛工1234部部部個(gè)個(gè)

20、個(gè)這這這計(jì)哪一項(xiàng)4口的職工數(shù)為E1的惠工之和是2岫孤1的隼均工費(fèi)是41*.10.查詢個(gè)人信息第12頁(yè)11.信息合法性校驗(yàn)口;C:MXKUIElIPlUjorS.MZUII10iri.czc一號(hào) 資 資 !«-H H 門拉貫本金金魚做 修沖斗部即幫其復(fù)稅上同 想 8 1 您*l$*3H*bK*7*fi"9*l川 4C:kDOCUKE'lEFKirser:lftjlUIBOU''l.exe應(yīng)飛電M-54RT*9肛*1修完12.提示信息第1413.修改密碼第15頁(yè)七、附錄1 .源程序文件清單:數(shù)據(jù):C:KESHE(員工工資信息文件)C:XITONGJIAM

21、I(賬戶登錄名及密碼文件)2 .源程序#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<conio.h>#include<bios.h>structemployee_gz*createlianbiao();/*聲明創(chuàng)建鏈表函數(shù)*/structemployee_gz*input();/*聲明錄入函數(shù)*/structemployee_gz*count_gz(structemployee_gz*head,charbumen)

22、;/*聲明統(tǒng)計(jì)函數(shù)*/structemployee_gz*search(structemployee_gz*head,charxinxi);/*聲明查詢函數(shù)*/structemployee_gz*modify(structemployee_gz*head);/*聲明修改文件函數(shù)*/structemployee_gz*xiugai(structemployee_gz*head,cha門nfor);/*聲明修改鏈表函數(shù)*/*聲明刪除函數(shù)*/structemployee_gz*Delete(structemployee_gz*head);structemployee_gz*shanchujd(str

23、uctemployee_gz*head,charinfo);/*聲明刪除節(jié)點(diǎn)函數(shù)*/void zhuceyh();/*聲明注冊(cè)賬號(hào)函數(shù)*/void menu1();/*聲明管理員菜單函數(shù)*/void menu2();/*聲明職工菜單函數(shù)*/void tianjiayh(); /*聲明添加賬戶信息函數(shù)*/void deleteyh(); /*聲明刪除用戶函數(shù)*/*聲明修改賬戶密碼函數(shù)*/voidxiugaimm(charyhm,charshenfen);voidchoose(structemployee_gz*head,charbumen);/*聲明統(tǒng)計(jì)中白選擇函數(shù)*/structemploye

24、e_gz*readwenjian(structemployee_gz*head);/*聲明讀取文件函數(shù)*/structemployee_gz*shuchuxinxi(structemployee_gz*head,charxinxi);/*聲明輸出彳t息函數(shù)*/void count_zdgz(struct employee_gz *head,char bumen);/*聲明計(jì)算最低工資函數(shù)*/void count_zggz(struct employee_gz *head,char bumen);/*聲明計(jì)算最高工資函數(shù)*/void count_pjgz(struct employee_gz *

25、head,char bumen);/*聲明計(jì)算平均工資函數(shù)*/void count_gzfc(struct employee_gz *head,char bumen);/*聲明計(jì)算工資方差函數(shù)*/structemployee_gzchar gonghao20;/*職工工號(hào)*/char sfzh20;/*身份證號(hào)*/char name20;/*姓名*/char bumen20;/*部門*/char zhiwu20;/*職位*/char jiguan20;/*籍貫*/long int jbgz;/*基本工資*/long int jijin;/*基金*/long int yfgz;/*應(yīng)發(fā)工資*/l

26、ong int shuijin;/*稅金*/long int jiangjin;/*獎(jiǎng)金*/long int sfgz;/*實(shí)發(fā)工資*/long int gwgz;/*崗位工資*/structemployee_gz*next;/*指向下節(jié)點(diǎn)的指針*/;structpasschar shenfen20;/*用戶身份*/char yhm20;/*用戶名*/charmima20;/*密碼*/structpass*next;/*指向下一節(jié)點(diǎn)的指針*/;intmain()FILE*pfp;structemployee_gz*head;structpass*ptr,*dl,*mhead,*tail;cha

27、rbumen20;charxinxi20;charyhm20;charshenfen20;charmima20;intchoice,a,b=0;system("graftabl936");textmode(C80);textcolor(25);textbackground;clrscr();head=NULL;mhead=NULL;tail=NULL;if(pfp=fopen("C:xitongjiami.txt","rb")=NULL)gotoxy(20,6);cprintf("賬戶信息文件打開(kāi)失敗!");get

28、ch();clrscr();gotoxy(20,2);cprintf("請(qǐng)建立文件并注冊(cè)用戶!");gotoxy(20,3);cprintf("請(qǐng)完成下面的注冊(cè)!");zhuceyh();clrscr();pfp=fopen("C:xitongjiami.txt","rb");while(!feof(pfp)/*將文件中的數(shù)據(jù)導(dǎo)入鏈表中*/ptr=(structpass*)malloc(sizeof(structpass);fread(ptr,sizeof(structpass),1,pfp);if(mhead=N

29、ULL)mhead=ptr;elsetail->next=ptr;tail=ptr;ptr->next=NULL;fclose(pfp);dl=mhead;gotoxy(22,5);cprintf("您的身份是:1(管理員)2(職工)");/*登錄選擇*/scanf("%d",&a);gotoxy(22,5);delline();/*刪除光標(biāo)所在行*/if(a=1)/*管理員登錄*/strcpy(shenfen,"guanliyuan");gotoxy(24,5);cprintf("用戶名:")

30、;gotoxy(24,6);cprintf("密碼:");gotoxy(32,5);scanf("%s",&yhm);gotoxy(32,6);scanf("%s",&mima);while(dl!=NULL)if(strcmp(dl->shenfen,shenfen)=0&&strcmp(dl->yhm,yhm)=0&&strcmp(dl->mima,mima尸=0)b=1;do/*菜單循環(huán)控制*/clrscr();menu1();gotoxy(16,11);cpri

31、ntf("輸入您的選擇:");scanf("%d",&choice);clrscr();/*清屏*/switch(choice)/*函數(shù)調(diào)用*/case1:input();break;case2:Delete(head);break;case3:search(head,xinxi);break;case4:modify(head);break;case5:count_gz(head,bumen);break;case6:main();case7:tianjiayh();break;case8:xiugaimm(yhm,shenfen);main(

32、);break;case9:deleteyh();break;case0:exit(0);default:gotoxy(32,3);cprintf("輸入有誤!");getch();break;while(choice!=0);dl=dl->next;if(b=0)clrscr();gotoxy(20,6);cprintf("用戶名或密碼錯(cuò)誤!請(qǐng)重新登錄!");getch();main();elseif(a=2)/*職工登錄*/strcpy(shenfen,"zhigong");gotoxy(22,5);cprintf(&quo

33、t;工號(hào):");gotoxy(22,6);cprintf("密碼:");gotoxy(30,5);scanf("%s",&yhm);gotoxy(30,6);scanf("%s",&mima);while(dl!=NULL)if(strcmp(dl->shenfen,shenfen)=0&&strcmp(dl->yhm,yhm)=0&&strcmp(dl->mima,mima尸=0)b=1;do/*菜單循環(huán)控制*/clrscr();menu2();gotoxy

34、(24,11);cprintf("輸入您的選擇:");scanf("%d",&choice);clrscr();switch(choice)/*函數(shù)調(diào)用*/case1:strcpy(xinxi,yhm);/*以工號(hào)查詢*/head=readwenjian(head);shuchuxinxi(head,xinxi);getch();break;case2:count_gz(head,bumen);break;case3:main();case4:xiugaimm(yhm,shenfen);break;case0:exit(0);default:go

35、toxy(32,3);cprintf("輸入有誤!");getch();break;while(choice!=0);dl=dl->next;if(b=0)clrscr();gotoxy(20,6);cprintf("用戶名或密碼錯(cuò)誤!請(qǐng)重新登錄!");getch();main();elsegotoxy(20,6);cprintf("輸入有誤!請(qǐng)重新輸入!");getch();main();voidmenu1()/*管理員菜單*/gotoxy(12,3);cprintf("職工工資管理系統(tǒng)");gotoxy(

36、12,4);gotoxy(12,5);cprintf("*1錄入工資記錄2刪除工資記錄*gotoxy(12,6);cprintf("*3查詢工資記錄4修改工資記錄*gotoxy(12,7);cprintf("*5統(tǒng)計(jì)工資信息6重物登錄系統(tǒng)*gotoxy(12,8);cprintf("*7添加賬戶信息8修改登錄密碼*gotoxy(12,9);cprintf("*9刪除系統(tǒng)用戶0安全退出系統(tǒng)*gotoxy(12,10);cprintf("*");cprintf(”*菜單*");*");*");*&q

37、uot;);*");*");voidmenu2()/*職工菜單*/gotoxy(22,3);cprintf("職工工資系統(tǒng)");cprintf("*菜單*",gotoxy(22,5);cprintf("*1查詢個(gè)人工資信息*"gotoxy(22,6);cprintf("*2瀏覽公司工資信息*"gotoxy(22,7);cprintf("*3重新登錄工資系統(tǒng)*"gotoxy(22,8);cprintf("*4修改賬戶登錄密碼*"gotoxy(22,9);cp

38、rintf("*gotoxy(22,10);*0安全退出工資系統(tǒng)*"cprintf("*");gotoxy(22,4);structemployee_gz*readwenjian(structemployee_gz*head)/*讀取文件函數(shù)*/FILE*fp;structemployee_gz*ptr,*tail;intsize=sizeof(structemployee_gz);head=NULL;tail=NULL;*/ptr=NULL;if(fp=fopen("C:keshe.txt","rb")=NULL

39、)/*以只讀方式打開(kāi)文件clrscr();gotoxy(20,6);cprintf("文件打開(kāi)失??!請(qǐng)重新登錄!");getch();main();while(!feof(fp)/*將文件中的數(shù)據(jù)導(dǎo)入鏈表中*/if(ptr=(structemployee_gz*)malloc(size)尸NULL)clrscr();gotoxy(20,6);cprintf("內(nèi)存分配失??!請(qǐng)重新登錄!");getch();main();fread(ptr,size,1,fp);if(head=NULL)head=ptr;elsetail->next=ptr;tai

40、l=ptr;fclose(fp);returnhead;structemployee_gz*input()/*錄入職工工資信息函數(shù)*/FILE*fp;structemployee_gz*head,*p,*q;chargonghao20;charsfzh20;charname20;charbumen20;charzhiwu20;charjiguan20;longintjbgz;longintjijin;longintyfgz;longintshuijin;longintjiangjin;longintsfgz;longintgwgz;inti;intsize=sizeof(structemplo

41、yee_gz);clrscr();gotoxy(20,1);cprintf("1:新建職工工資信息");gotoxy(20,2);cprintf("2:添加職工工資信息”);gotoxy(20,3);cprintf("您的選擇:");scanf("%d",&i);if(i=1)*/head=createlianbiao();/*調(diào)用函數(shù)將文件內(nèi)容讀到鏈表中*/fp=fopen("C:keshe.txt","wb+");/*新建文件*/for(q=head;q!=NULL;q=q

42、->next)/*將鏈表中節(jié)點(diǎn)的信息寫入文件fwrite(q,size,1,fp);fclose(fp);clrscr();gotoxy(20,7);cprintf("新建職工賬戶信息成功!");if(i=2)/*如果添加則進(jìn)行追加寫入*/head=createlianbiao();/*調(diào)用函數(shù)將文件內(nèi)容讀到鏈表中*/fp=fopen("C:keshe.txt","ab+");/*以追加方式打開(kāi)文件*/for(p=head;p!=NULL;p=p->next)/*添加的信息寫入文件*/fwrite(p,size,1,fp)

43、;fclose(fp);clrscr();gotoxy(20,7);cprintf("添加職工賬戶信息成功!");getch();structemployee_gz*createlianbiao()/*創(chuàng)建鏈表函數(shù)*/charsfzh20;charname20;chargonghao20;charbumen20;charzhiwu20;charjiguan20;longintjbgz;longintjijin;longintyfgz;longintshuijin;longintjiangjin;longintsfgz;longintgwgz;charc='y'

44、;intsize=sizeof(structemployee_gz);structemployee_gz*p,*pn,*p1=NULL,*head=NULL;while(c='y'|c='Y')/*循環(huán)條件*/clrscr();gotoxy(20,2);cprintf("*錄入職工工資信息*");gotoxy(20,4);cprintf("輸入職工工號(hào):");scanf("%s",gonghao);if(fopen("C:keshe.txt","rb")!=NUL

45、L)/*以只讀方式打開(kāi)文件*/for(pn=readwenjian(head);pn!=NULL;pn=pn->next)if(strcmp(pn->gonghao,gonghao)=0)/*判斷是否已有原職工信息*/gotoxy(20,5);cprintf("已存在此職工信息!請(qǐng)重新車QJ");getch();clrscr();createlianbiao();/*采用遞歸法*/for(pn=head;pn!=NULL;pn=pn->next)if(strcmp(pn->gonghao,gonghao)=0)/*判斷是否已有原職工信息*/gotox

46、y(20,5);cprintf("已存在此職工信息!請(qǐng)重新輸入!");getch();clrscr();createlianbiao();/*采用遞歸法*/gotoxy(20,5);cprintf("輸入職工身份證號(hào):");scanf("%s",sfzh);gotoxy(20,6);cprintf("輸入職工姓名:");scanf("%s",name);gotoxy(20,7);cprintf("輸入職工部門:");scanf("%s",bumen);wh

47、ile(strcmp(bumen,"shebeichu")!=0&&strcmp(bumen,"renshichu")!=0&&strcmp(bumen,"xuegongchu")!=0&&strcmp(bumen,"ruanjianxueyuan")!=0)/*部門合法性校驗(yàn)*/gotoxy(20,8);cprintf("無(wú)此部門!請(qǐng)重新輸入!");getch();gotoxy(20,8);dellineO;gotoxy(20,7);dellin

48、e();gotoxy(20,7);cprintf("輸入職工部門:");scanf("%s",bumen);gotoxy(20,8);cprintf("輸入職工職務(wù):");scanf("%s",zhiwu);while(strcmp(zhiwu,"guyuan")!=0&&strcmp(zhiwu,"jingli")!=0&&strcmp(zhiwu,"jinglizhuli")!=0)/*職務(wù)合法性校驗(yàn)*/gotoxy(2

49、0,9);cprintf("無(wú)此職務(wù)!請(qǐng)重新輸入!");getch();gotoxy(20,9);dellineO;gotoxy(20,8);delline();gotoxy(20,8);cprintf("輸入職工職務(wù):”);scanf("%s",zhiwu);gotoxy(20,9);cprintf("輸入職工籍貫:");scanf("%s",jiguan);gotoxy(20,10);cprintf("輸入職工基本工資:”);scanf("%ld",&jbgz);

50、gotoxy(20,11);cprintf("輸入職工基金:");scanf("%ld",&jijin);gotoxy(20,12);cprintf("輸入職工稅金:");scanf("%ld",&shuijin);if(shuijin>=jbgz*0.05)gotoxy(20,13);cprintf("輸入有誤!請(qǐng)重新輸入!");getch();gotoxy(20,13);dellineO;gotoxy(20,12);delline();gotoxy(20,12);cpr

51、intf("輸入職工稅金:");scanf("%s",shuijin);gotoxy(20,13);cprintf("輸入職工獎(jiǎng)金:”);scanf("%ld",&jiangjin);gotoxy(20,14);cprintf("輸入職工崗位工資:");scanf("%ld",&gwgz);yfgz=jbgz+gwgz+jiangjin;sfgz=yfgz-jijin-shuijin;p=(structemployee_gz*)malloc(size);p->jb

52、gz=jbgz;p->jijin=jijin;p->shuijin=shuijin;p->jiangjin=jiangjin;p->gwgz=gwgz;p->yfgz=yfgz;p->sfgz=sfgz;strcpy(p->gonghao,gonghao);strcpy(p->sfzh,sfzh);strcpy(p->jiguan,jiguan);strcpy(p->name,name);strcpy(p->zhiwu,zhiwu);strcpy(p->bumen,bumen);p->next=NULL;if(hea

53、d=NULL)head=p;elsep1->next=p;p1=p;clrscr();gotoxy(20,7);cprintf("Y:繼續(xù)N:返回)gotoxy(20,8);printf("您的選擇:");getchar();c=getchar();returnhead;structemployee_gz*search(structemployee_gz*head,charxinxi)/*查詢函數(shù)*/FILE*fp;inti,j,k=3;structemployee_gz*ptr1;textcolor(25);textbackground;clrscr();

54、head=readwenjian(head);/*調(diào)用函數(shù)讀取文件內(nèi)容到鏈表中*/clrscr();gotoxy(20,1);cprintf("您是想輸出全部職工基本工資信息嗎?");gotoxy(20,2);cprintf("*1是(輸出所有)*2否(詳細(xì)查詢):");scanf("%d",&j);if(j=1)/*輸出全部基本信息*/if(head=NULL)gotoxy(2,3);cprintf("無(wú)職工工資記錄!");getch();elsegotoxy(2,k);cprintf("工號(hào):

55、%s",head->gonghao);gotoxy(18,k);cprintf("姓名:s",head->name);gotoxy(40,k);cprintf("部門:s",head->bumen);gotoxy(62,k);cprintf("實(shí)發(fā)工資:%ld",head->sfgz);k+;ptr1=head->next;while(ptr1!=NULL)/*遍歷鏈表*/if(ptr1->sfgz!=0&&ptr1->gonghao!=NULL)gotoxy(2,k

56、);cprintf("工號(hào):s",ptr1->gonghao);gotoxy(18,k);cprintf("姓名:%s",ptr1->name);gotoxy(40,k);cprintf("部門:s",ptn>bumen);gotoxy(62,k);cprintf("實(shí)發(fā)工資:%ld",ptr1->sfgz);k+;ptr1=ptr1->next;getch();elseif(j=2)/*詳細(xì)查詢*/clrscr();gotoxy(20,1);cprintf("您想通過(guò)什么查詢信息");gotoxy(20,2);cprintf("*1姓名*2工號(hào):");scanf("%d",&i);switch(i)case1:gotoxy(20,3);cprintf("職工女生名:");scanf("%s",xinxi);shuchuxinxi(head,xinxi);break;case2:gotoxy(20,3);cprintf("職工工號(hào):");scanf("%s&

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論