職工管理系統(tǒng)2009630.doc_第1頁
職工管理系統(tǒng)2009630.doc_第2頁
職工管理系統(tǒng)2009630.doc_第3頁
職工管理系統(tǒng)2009630.doc_第4頁
職工管理系統(tǒng)2009630.doc_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

重慶科技學(xué)院本科生課程設(shè)計(jì) 設(shè)計(jì)內(nèi)容與要求11.1 設(shè)計(jì)內(nèi)容在計(jì)算機(jī)中建立相應(yīng)的數(shù)據(jù)結(jié)構(gòu),利用程序?qū)崿F(xiàn)工資的輸入、查詢、增、刪、改、統(tǒng)計(jì)、輸出等操作。1.2 設(shè)計(jì)要求1、 設(shè)計(jì)一個(gè)能夠記錄公司員工工資的數(shù)據(jù)結(jié)構(gòu)(包括:員工號(hào)、姓名、基本工資、補(bǔ)貼金額、獎(jiǎng)勵(lì)金額、扣除金額、實(shí)發(fā)工資等)、文件(文件作為工資數(shù)據(jù)的保存介質(zhì))。注:,其中實(shí)發(fā)工資=基本工資補(bǔ)貼金額獎(jiǎng)勵(lì)金額-扣除金額2、 應(yīng)用文件保存工資管理數(shù)據(jù)。3、 新增:能將所有輸入的員工工資數(shù)據(jù)保存到文件中,并可選擇繼續(xù)輸入或退出。4、 查找:輸入員工的員工號(hào),并在文件中查找5、 若找到,則顯示該員工的工資詳情否則提示未找到。無論查找成功否,應(yīng)還可選擇繼續(xù)查找或退出。6、 刪除:輸入員工的員工號(hào),并在文件中查找若找到,提示是否確定刪除若選擇是,則刪除文件中該員工信息若選擇否,則取消,否則提示無此員工信息無論查找成功否,應(yīng)還可選擇繼續(xù)查找或退出。7、 修改:輸入員工的員工號(hào),并在文件中查找若找到,顯示該員工的所有信息,并可進(jìn)行輸入。完成后將現(xiàn)輸入的內(nèi)容覆蓋原內(nèi)容保存到文件中。否則提示無此員工信息無論查找成功否,應(yīng)還可選擇繼續(xù)查找或退出。統(tǒng)計(jì):分類匯總并輸出所有員工的基本工資、補(bǔ)貼金額、獎(jiǎng)勵(lì)金額、扣除金額、實(shí)發(fā)工資的總金額和平均金額。如:基本工資、補(bǔ)貼金額、獎(jiǎng)勵(lì)金額、扣除金額、實(shí)發(fā)工資 總和 12000 1300 1400 1500 13200 平均 1200 130 140 150 1320 人數(shù): 108、 退出:退出程序2概要設(shè)計(jì)22.1 信息的存儲(chǔ)運(yùn)行編寫好的程序,通過提示,輸入人員的員工號(hào)、姓名、基本工資、補(bǔ)貼金額、獎(jiǎng)勵(lì)金額、扣除金額等等信息,再根據(jù)提示反復(fù)輸入,并以文本文件形式保存。 2.2職工工資信息的設(shè)計(jì)需定義一個(gè)結(jié)構(gòu)體類型,用來表示職工的各種信息,如下:struct worker int gonghao;char name20;double jiben;double butie;double jiangli;double kouchu;double jieyu; /職工數(shù)據(jù)信息結(jié)構(gòu)體2.3主函數(shù)設(shè)計(jì)其功能實(shí)現(xiàn)從屏幕輸出6個(gè)選擇: 1新增職工信息 2. 查詢職工信息 3.刪除職工信息 4.修改職工信息 5.瀏覽職工信息 0.退出程序,從中選擇任一一個(gè)來進(jìn)行職工工資信息的管理。2.4信息新增的設(shè)計(jì)此模塊通過void xinzeng( );函數(shù)實(shí)現(xiàn)。從鍵盤輸入職工工資信息,以文本文件將這些信息寫入文本。先建立一個(gè)文件指針(FILE *fp),打開文件,輸入信息,寫入文件,關(guān)閉文件。2.5信息查詢的設(shè)計(jì)此模塊通過void chaxun()。程序?qū)奈募凶x出先前出入的個(gè)人通訊信息,從鍵盤輸入要查詢的職工工號(hào),再從屏幕上輸出您要查找的信息。提示繼續(xù)與否。2.6信息刪除的設(shè)計(jì)此模塊通過void shanchu( )函數(shù)實(shí)現(xiàn)。程序?qū)奈募凶x出先前出入的個(gè)人通訊信息,從鍵盤輸入要查詢的職工工號(hào),從屏幕上輸出所要?jiǎng)h除的職工工號(hào),根據(jù)操作提示,然后刪除信息,返回保存。2.7信息修改的設(shè)計(jì)此模塊通過void xiugai( )函數(shù)實(shí)現(xiàn)。程序?qū)奈募凶x出先前出入的個(gè)人通訊信息,從屏幕上輸出:請(qǐng)輸入您要修改的人職工工號(hào),然后顯示要修改的職工工資信息,并根據(jù)提示繼續(xù)輸入需修改后的信息,這些信息將以文本形式寫入文本。再將修改后的所有職工工資信息一起寫入文件并保存。2.8信息統(tǒng)計(jì)的設(shè)計(jì)此模塊通過void tongji( )函數(shù)實(shí)現(xiàn)。分類匯總并輸出所有員工的基本工資、補(bǔ)貼金額、獎(jiǎng)勵(lì)金額、扣除金額、實(shí)發(fā)工資的總金額和平均金額。2.9信息瀏覽的設(shè)計(jì)此模塊通過void liulan( )函數(shù)實(shí)現(xiàn),只需選擇顯示信息菜單即可顯示全部職工工資信息。3 詳細(xì)設(shè)計(jì)3.1 主函數(shù)(1)函數(shù)說明先從屏幕上顯示7個(gè)選項(xiàng),以供選擇。第一個(gè)選項(xiàng)調(diào)用了xinzeng()函數(shù)、第二個(gè)調(diào)用了chaxun( )函數(shù),第三個(gè)選項(xiàng)調(diào)用了shanchu( )函數(shù),第四個(gè)調(diào)用了xiugai( )函數(shù),第五個(gè)選項(xiàng)調(diào)用tonji( )函數(shù),第六個(gè)選項(xiàng)調(diào)用liulan( )函數(shù)從而實(shí)現(xiàn)學(xué)生信息的添加、查詢、刪除、修改、統(tǒng)計(jì)、瀏覽等功能;最后一個(gè)選項(xiàng)實(shí)現(xiàn)退出的功能。 (2)函數(shù)接口函數(shù)入口:從主函數(shù)main()開始。函數(shù)出口:從主函數(shù)main()的switch()開關(guān)結(jié)構(gòu)進(jìn)入,即n幾個(gè)的值通過break跳出for循環(huán)進(jìn)入主界面,然后退出主函數(shù)main(),即退出主函數(shù)。函數(shù)調(diào)用關(guān)系:主函數(shù)main()不能被其他函數(shù)調(diào)用,但可以調(diào)用其他任意函數(shù)。(3)流程圖 主函數(shù)胡流程圖(4)函數(shù)代碼見附錄3.2主菜單函數(shù)(1)函數(shù)說明此函數(shù)用于功能選擇。1.若文件不存在 用于創(chuàng)建文件并只能執(zhí)行新增功能和存入文件,進(jìn)入功能選擇。 2.若文件存在 用于打開文件讀入數(shù)據(jù),進(jìn)入功能選擇。(2)流程圖(3)函數(shù)代碼:見附錄3.3新增信息(1)函數(shù)說明 此函數(shù)用于輸入職工工資信息并存入文件。先定義一個(gè)文件指針FILE(*fp),然后用fopen()函數(shù)打開文件,從鍵盤輸入數(shù)據(jù),用fwrite函數(shù)將信息寫入到文件中,最后用fclose()函數(shù)關(guān)閉文件。屏幕上會(huì)顯示“請(qǐng)輸入y繼續(xù)其他功能”您可以根據(jù)您的需要進(jìn)行選擇然后進(jìn)行下面的操作。(2)流程圖(3)函數(shù)代碼見附錄3.4查詢信息(1)函數(shù)說明此函數(shù)用于查找職工工資信息,屏幕上會(huì)顯示“1.請(qǐng)輸入您要查找的人員姓名,2.返回”,從鍵盤輸入,屏幕上會(huì)顯示您要查找的學(xué)生信息,最后用fclose()函數(shù)關(guān)閉文件。(2)流程圖(3)函數(shù)代碼見附錄3.5刪除信息(1) 函數(shù)說明此函數(shù)用于刪除職工工資信息,從屏幕上輸出提示“1.請(qǐng)輸入要?jiǎng)h除的職工工號(hào) 0.返回保存”,輸入后顯示該職工工資信息,提示操作。用finput()函數(shù)將現(xiàn)在的信息寫入到磁盤中,最后用fclose()函數(shù)關(guān)閉文件。(2)流程圖(3)函數(shù)代碼見附錄3.6修改信息(1)函數(shù)說明此函數(shù)用于修改信息。屏幕上會(huì)顯示1.請(qǐng)輸入您要修改的職工工號(hào)0.返回保存:,從鍵盤輸入工號(hào),屏幕上將會(huì)顯示要修改的職工工資信息 用finput()函數(shù)將現(xiàn)在的信息寫入到磁盤中,最后用fclose()函數(shù)關(guān)閉文件。提示操作。(1) 流程圖(3)函數(shù)代碼見附錄3.7統(tǒng)計(jì)信息(1)函數(shù)說明分類匯總并輸出所有員工的基本工資、補(bǔ)貼金額、獎(jiǎng)勵(lì)金額、扣除金額、實(shí)發(fā)工資的總金額和平均金額。(2)流程圖(3)函數(shù)代碼見附錄3.8瀏覽信息(1)函數(shù)說明顯示全部職工工資信息。(2)流程圖(3)函數(shù)代碼見附錄4 調(diào)試分析4.1 問題解決事實(shí)上單個(gè)模塊的調(diào)試與測(cè)試是與整體的調(diào)試與測(cè)試分不開的,下面對(duì)這這個(gè)過程的調(diào)試方法與測(cè)試方法做簡單的介紹。1調(diào)試方法 打開Microsoft Visual C+ 6.0,先將個(gè)功能函數(shù)的內(nèi)容清空,只保留主函數(shù)main(),然后編譯main()是否有錯(cuò),如果無錯(cuò),在連接、運(yùn)行。確認(rèn)main()無誤,然后加入menu()與xinzeng()一起調(diào)試,xinzeng()中注意讀取文件與寫入文件,都是以文本形式進(jìn)行操作。若menu()與xinzeng()編譯連接無誤后,再加入chaxun(),這樣依次檢查其他函數(shù)。當(dāng)所有的功能函數(shù)都加上調(diào)試正確無誤后在進(jìn)入程序的測(cè)試階段。首先,由于所要將輸入通訊信息要以文本文件的形式進(jìn)行存儲(chǔ),所以在添加信息和查詢信息就遇到了麻煩,讀取信息的時(shí)候顯示的全部是亂碼,是因?yàn)樵谳斎牒妥x取“姓名”等信息的時(shí)候是以%s的形式。在同學(xué)和老師的幫助下對(duì)程序進(jìn)行了反復(fù)的修改,最終達(dá)到了以文本存儲(chǔ)和讀取的目的。其次,就是在對(duì)存儲(chǔ)的信息進(jìn)行刪除的時(shí)候是以對(duì)工號(hào)付0值實(shí)現(xiàn)的,而在全部顯示存儲(chǔ)的信息時(shí)用if()語句判斷進(jìn)行信息存儲(chǔ)和屏幕顯示,最后是在仔細(xì)查詢及反復(fù)實(shí)踐的基礎(chǔ)上完成了對(duì)程序的修改。最后就是在全部顯示文件中存儲(chǔ)的信息時(shí),而以免對(duì)最后一個(gè)信息進(jìn)行讀取兩次,而采用if(fscanf(fp,%c,c)!=EOF)以達(dá)到全部顯示的目的。測(cè)試結(jié)果.1新增信息文件輸入1.輸入職工工資信息,運(yùn)行結(jié)果如下:1.無文件存在時(shí)的界面:2.選1按回車鍵即:3. 選1按回車鍵即:4. 按提示操作,選0按回車鍵即:可見主菜單改變。5.選6瀏覽看是否存入數(shù)據(jù):可見數(shù)據(jù)已存入文件。5.2查詢職工信息1.主菜單選2進(jìn)入查詢功能:按提示操作??梢姴檎夜δ艿靡詫?shí)現(xiàn)。.3刪除職工信息1. 主菜單選3進(jìn)入刪除功能:按提示操作:可見操作是將工號(hào)為1的刪除,而未對(duì)2刪除。為驗(yàn)證之則返回進(jìn)行瀏覽功能操作:可見該功能操作是成功的。.4修改職工信息1. 主菜單選3進(jìn)入修改功能:按提示操作:改操作對(duì)2作修改未對(duì)3修改,為驗(yàn)證之則返回進(jìn)行瀏覽功能操作:可見該功能操作是成功的。.5統(tǒng)計(jì)職工信息1. 主菜單選3進(jìn)入修改功能:按提示操作:可見該功能操作是成功的。.5瀏覽職工信息在以上步驟中可知是成功的。總結(jié)本次課程設(shè)計(jì)的要求是建立職工管理系統(tǒng),輸入員工號(hào)、姓名、基本工資、補(bǔ)貼金額、獎(jiǎng)勵(lì)金額、扣除金額、實(shí)發(fā)工資等基本信息,然后對(duì)職工工資信息進(jìn)行顯示、查找、添加、統(tǒng)計(jì)、修改及刪除。雖然我對(duì)該實(shí)驗(yàn)的內(nèi)容及要求都有所了解,在對(duì)程序的大體規(guī)劃上還很清楚,但是在編寫程序時(shí)思維卻很混亂,由于在對(duì)職工工資信息的輸入、查詢、修改和刪除中要求邏輯思維嚴(yán)密謹(jǐn)慎,所以在本次程序的編寫中不能獨(dú)立完成,而是在老師的幫助下,對(duì)每一個(gè)步驟的深入思考才得出了結(jié)果。通過這次的專題實(shí)驗(yàn)讓我意識(shí)到,自己在該門學(xué)科中還有很多不懂的地方,其主要原因是上機(jī)操作太少,對(duì)一些細(xì)節(jié)考慮還不夠全面,今后我會(huì)努力學(xué)習(xí)本課程,要求自己能熟練掌握程序的編寫。附錄職工管理系統(tǒng)C語言源代碼:#include#include#includestruct worker int gonghao;char name20;double jiben;double butie;double jiangli;double kouchu;double jieyu; /職工數(shù)據(jù)信息結(jié)構(gòu)體int input(struct worker *p,int j);/職工數(shù)據(jù)信息錄入int output_0(struct worker *p);/職工數(shù)據(jù)信息屏幕輸出int foutput(FILE *fp,struct worker *p);/職工數(shù)據(jù)信息存入文件int finput(FILE *fp,struct worker *p);/職工數(shù)據(jù)信息讀出文件void menu();/主菜單void xinzeng();/新增功能函數(shù)void chaxun();/查詢功能函數(shù)void shanchu();/刪除功能函數(shù)void xiugai();/修改功能函數(shù)void tongji();/統(tǒng)計(jì)功能函數(shù)int liulan();/瀏覽功能函數(shù)struct worker w10000;int i,n,j,m,k=0;char c5;FILE *fp;int main()/主函數(shù)for(;)menu();/主菜單switch(n)case 1:xinzeng();break;/新增功能case 2:chaxun();break;/查詢功能case 3:shanchu();break;/刪除功能case 4:xiugai();break;/修改功能case 5:tongji();break;/統(tǒng)計(jì)功能case 6:liulan();break;/瀏覽功能case 0:return 0;default:/退出printf(t輸入有誤?);printf(*按0返回 );scanf(%d,&j);if(!j)break;break;return 0;int input(struct worker *p,int m)/判斷輸入m做為工號(hào)形參輸入p-gonghao=m;printf(n姓名: );scanf(%s,p-name);printf(基本工資: );scanf(%lf,&p-jiben);printf(補(bǔ)貼金額: );scanf(%lf,&p-butie);printf(獎(jiǎng)勵(lì)金額: );scanf(%lf,&p-jiangli);printf(扣除金額: );scanf(%lf,&p-kouchu);p-jieyu=p-jiben+p-butie+p-jiangli-p-kouchu;printf(-);return 0;int output_0(struct worker *p)printf(工號(hào) 姓名 基本工資 補(bǔ)貼金額 獎(jiǎng)勵(lì)金額 扣除金額 工資結(jié)算n);printf(%3d,p-gonghao);printf(%8s,p-name);printf(%12.2lf,p-jiben);printf(%12.2lf,p-butie);printf(%12.2lf,p-jiangli);printf(%12.2lf,p-kouchu);printf(%12.2lfn,p-jieyu);return 0;int finput(FILE *fp,struct worker *p)fscanf(fp,%dn,&p-gonghao);fscanf(fp,%sn,p-name);fscanf(fp,%lfn,&p-jiben);fscanf(fp,%lfn,&p-butie);fscanf(fp,%lfn,&p-jiangli);fscanf(fp,%lfn,&p-kouchu);fscanf(fp,%lfn,&p-jieyu);return 0;int foutput(FILE *fp,struct worker *p)fprintf(fp,%dn,p-gonghao);fprintf(fp,%sn,p-name);fprintf(fp,%lfn,p-jiben);fprintf(fp,%lfn,p-butie);fprintf(fp,%lfn,p-jiangli);fprintf(fp,%lfn,p-kouchu);fprintf(fp,%lfn,p-jieyu);return 0;void menu()system(cls);printf(lijiachunn);printf(/職工工資管理系統(tǒng)/n);printf(/tt1.新增員工信息ttt/n);fp=fopen(worker.txt,a);/在無文件時(shí)創(chuàng)建文件fclose(fp);fp=fopen(worker.txt,r);if(fscanf(fp,%c,c)!=EOF)/判斷文件是否存有數(shù)據(jù)fclose(fp);printf(/tt2.查找員工信息ttt/n);printf(/tt3.刪除員工信息ttt/n);printf(/tt4.修改員工信息ttt/n);printf(/tt5.統(tǒng)計(jì) ttt/n);printf(/tt6.瀏覽 ttt/n);printf(/tt0.退出 ttt/n);printf(/*注:員工號(hào)為110000./n);printf(請(qǐng)輸入選項(xiàng)(06): n);fp=fopen(worker.txt,r);/將職工信息讀出文件for(i=0;i+)if(feof(fp)break;finput(fp,&wi); k=i;fclose(fp);scanf(%d,&n);system(cls);else/文件無信息是只有選1有效printf(請(qǐng)輸入選項(xiàng)1: n);while(1)scanf(%d,&n);if(n=1)break;elseprintf(請(qǐng)輸入選項(xiàng)1: n);continue;void xinzeng()for(;)printf(tt1.請(qǐng)輸入所新增員工工號(hào)n);printf(tt0.返回保存n請(qǐng)輸入選項(xiàng)n);scanf(%d,&n);if(n=1)j=1;for(i=k;i10000;i+)printf(請(qǐng)輸入新增員工工號(hào): n);scanf(%d,&n);for(m=0;mi;m+)if(n=wm.gonghao)printf(該工號(hào)已存在n);j=0;if(j)input(&wi,n);printf(按1繼續(xù)*按0返回n);scanf(%d,&j);if(j)continue;break;j=i+1;else fp=fopen(worker.txt,w);for(i=0;ij;i+)if(wi.gonghao!=0)foutput(fp,&wi);fclose(fp);break;void chaxun()for(;)printf(nntt1.請(qǐng)輸入所查詢員工工號(hào)n);printf(tt0.返回n請(qǐng)輸入選項(xiàng)n);scanf(%d,&n);if(n=1)for(i=0;ik;i+)for(;)printf(請(qǐng)輸入所查詢員工工號(hào): );scanf(%d,&n);for(i=0,m=0;ik;i+)if(n=wi.gonghao)output_0(&wi);break;m+;if(m=k)printf(該工號(hào)不存在n);printf(tt1.繼續(xù)ntt0.返回n);scanf(%d,&j);if(j)continue;break;break;else break;void shanchu()for(;)printf(nt1.請(qǐng)輸入所刪除員工工號(hào)n);printf(t0.返回保存n請(qǐng)輸入選項(xiàng): );scanf(%d,&n);if(n=1)for(;)for(i=0;ik;i+)j=1;for(i=0;ik;i+)printf(請(qǐng)輸入所刪除員工工號(hào): );scanf(%d,&n);for(i=0,j=0;ik;i+)if(n=wi.gonghao)output_0(&wi);break;j+;if(j=k)printf(該工號(hào)不存在n);break;elseprintf(t1.確實(shí)刪除該員工n);printf(t0.返回n請(qǐng)輸入選項(xiàng): );scanf(%d,&j);if(j)wi.gonghao=0;break;elsebreak;break;printf(t1.繼續(xù)nt0.返回n);scanf(%d,&n);if(n)continue;elsebreak;else fp=fopen(worker.txt,w);for(i=0;ik;i+)if(wi.gonghao!=0)foutput(fp,&wi);fclose(fp);break;void xiugai()for(;)printf(t1.請(qǐng)輸入所修改員工工號(hào)n);printf(t0.返回n請(qǐng)輸入選項(xiàng)n);scanf(%d,&n);if(n=1)for(;)for(i=0;ik;i+)j=1;for(i=0;ik;i+)printf(請(qǐng)輸入所修改員工工號(hào): );scanf(%d,&n);for(i=0,j=0;ik;i+)if(n=wi.gonghao)output_0(&wi);break;j+;if(j=k)printf(該工號(hào)不存在n);break;elseprintf(nt1.確實(shí)修改該員工n);printf(nt0.返回n請(qǐng)輸入選項(xiàng): );scanf(%d,&j);if(j)input(&wi,n);break;elsebreak;break;printf(nt1.繼續(xù)nt0.返回保存n);scanf(%d,&n);if(n)continue;elsefp=fopen(worker.txt,w);for(i=0;ik;i+)if(wi.gonghao!=0)foutput(fp,&wi);fclose(fp);break;else break;void tongji()double sjiben=0;double sbutie=0;double sjiangli=0;double skouchu=0;doub

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論