




已閱讀5頁,還剩28頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
重慶科技學院本科生課程設計 設計內容與要求11.1 設計內容在計算機中建立相應的數據結構,利用程序實現工資的輸入、查詢、增、刪、改、統計、輸出等操作。1.2 設計要求1、 設計一個能夠記錄公司員工工資的數據結構(包括:員工號、姓名、基本工資、補貼金額、獎勵金額、扣除金額、實發工資等)、文件(文件作為工資數據的保存介質)。注:,其中實發工資=基本工資補貼金額獎勵金額-扣除金額2、 應用文件保存工資管理數據。3、 新增:能將所有輸入的員工工資數據保存到文件中,并可選擇繼續輸入或退出。4、 查找:輸入員工的員工號,并在文件中查找5、 若找到,則顯示該員工的工資詳情否則提示未找到。無論查找成功否,應還可選擇繼續查找或退出。6、 刪除:輸入員工的員工號,并在文件中查找若找到,提示是否確定刪除若選擇是,則刪除文件中該員工信息若選擇否,則取消,否則提示無此員工信息無論查找成功否,應還可選擇繼續查找或退出。7、 修改:輸入員工的員工號,并在文件中查找若找到,顯示該員工的所有信息,并可進行輸入。完成后將現輸入的內容覆蓋原內容保存到文件中。否則提示無此員工信息無論查找成功否,應還可選擇繼續查找或退出。統計:分類匯總并輸出所有員工的基本工資、補貼金額、獎勵金額、扣除金額、實發工資的總金額和平均金額。如:基本工資、補貼金額、獎勵金額、扣除金額、實發工資 總和 12000 1300 1400 1500 13200 平均 1200 130 140 150 1320 人數: 108、 退出:退出程序2概要設計22.1 信息的存儲運行編寫好的程序,通過提示,輸入人員的員工號、姓名、基本工資、補貼金額、獎勵金額、扣除金額等等信息,再根據提示反復輸入,并以文本文件形式保存。 2.2職工工資信息的設計需定義一個結構體類型,用來表示職工的各種信息,如下:struct worker int gonghao;char name20;double jiben;double butie;double jiangli;double kouchu;double jieyu; /職工數據信息結構體2.3主函數設計其功能實現從屏幕輸出6個選擇: 1新增職工信息 2. 查詢職工信息 3.刪除職工信息 4.修改職工信息 5.瀏覽職工信息 0.退出程序,從中選擇任一一個來進行職工工資信息的管理。2.4信息新增的設計此模塊通過void xinzeng( );函數實現。從鍵盤輸入職工工資信息,以文本文件將這些信息寫入文本。先建立一個文件指針(FILE *fp),打開文件,輸入信息,寫入文件,關閉文件。2.5信息查詢的設計此模塊通過void chaxun()。程序將從文件中讀出先前出入的個人通訊信息,從鍵盤輸入要查詢的職工工號,再從屏幕上輸出您要查找的信息。提示繼續與否。2.6信息刪除的設計此模塊通過void shanchu( )函數實現。程序將從文件中讀出先前出入的個人通訊信息,從鍵盤輸入要查詢的職工工號,從屏幕上輸出所要刪除的職工工號,根據操作提示,然后刪除信息,返回保存。2.7信息修改的設計此模塊通過void xiugai( )函數實現。程序將從文件中讀出先前出入的個人通訊信息,從屏幕上輸出:請輸入您要修改的人職工工號,然后顯示要修改的職工工資信息,并根據提示繼續輸入需修改后的信息,這些信息將以文本形式寫入文本。再將修改后的所有職工工資信息一起寫入文件并保存。2.8信息統計的設計此模塊通過void tongji( )函數實現。分類匯總并輸出所有員工的基本工資、補貼金額、獎勵金額、扣除金額、實發工資的總金額和平均金額。2.9信息瀏覽的設計此模塊通過void liulan( )函數實現,只需選擇顯示信息菜單即可顯示全部職工工資信息。3 詳細設計3.1 主函數(1)函數說明先從屏幕上顯示7個選項,以供選擇。第一個選項調用了xinzeng()函數、第二個調用了chaxun( )函數,第三個選項調用了shanchu( )函數,第四個調用了xiugai( )函數,第五個選項調用tonji( )函數,第六個選項調用liulan( )函數從而實現學生信息的添加、查詢、刪除、修改、統計、瀏覽等功能;最后一個選項實現退出的功能。 (2)函數接口函數入口:從主函數main()開始。函數出口:從主函數main()的switch()開關結構進入,即n幾個的值通過break跳出for循環進入主界面,然后退出主函數main(),即退出主函數。函數調用關系:主函數main()不能被其他函數調用,但可以調用其他任意函數。(3)流程圖 主函數胡流程圖(4)函數代碼見附錄3.2主菜單函數(1)函數說明此函數用于功能選擇。1.若文件不存在 用于創建文件并只能執行新增功能和存入文件,進入功能選擇。 2.若文件存在 用于打開文件讀入數據,進入功能選擇。(2)流程圖(3)函數代碼:見附錄3.3新增信息(1)函數說明 此函數用于輸入職工工資信息并存入文件。先定義一個文件指針FILE(*fp),然后用fopen()函數打開文件,從鍵盤輸入數據,用fwrite函數將信息寫入到文件中,最后用fclose()函數關閉文件。屏幕上會顯示“請輸入y繼續其他功能”您可以根據您的需要進行選擇然后進行下面的操作。(2)流程圖(3)函數代碼見附錄3.4查詢信息(1)函數說明此函數用于查找職工工資信息,屏幕上會顯示“1.請輸入您要查找的人員姓名,2.返回”,從鍵盤輸入,屏幕上會顯示您要查找的學生信息,最后用fclose()函數關閉文件。(2)流程圖(3)函數代碼見附錄3.5刪除信息(1) 函數說明此函數用于刪除職工工資信息,從屏幕上輸出提示“1.請輸入要刪除的職工工號 0.返回保存”,輸入后顯示該職工工資信息,提示操作。用finput()函數將現在的信息寫入到磁盤中,最后用fclose()函數關閉文件。(2)流程圖(3)函數代碼見附錄3.6修改信息(1)函數說明此函數用于修改信息。屏幕上會顯示1.請輸入您要修改的職工工號0.返回保存:,從鍵盤輸入工號,屏幕上將會顯示要修改的職工工資信息 用finput()函數將現在的信息寫入到磁盤中,最后用fclose()函數關閉文件。提示操作。(1) 流程圖(3)函數代碼見附錄3.7統計信息(1)函數說明分類匯總并輸出所有員工的基本工資、補貼金額、獎勵金額、扣除金額、實發工資的總金額和平均金額。(2)流程圖(3)函數代碼見附錄3.8瀏覽信息(1)函數說明顯示全部職工工資信息。(2)流程圖(3)函數代碼見附錄4 調試分析4.1 問題解決事實上單個模塊的調試與測試是與整體的調試與測試分不開的,下面對這這個過程的調試方法與測試方法做簡單的介紹。1調試方法 打開Microsoft Visual C+ 6.0,先將個功能函數的內容清空,只保留主函數main(),然后編譯main()是否有錯,如果無錯,在連接、運行。確認main()無誤,然后加入menu()與xinzeng()一起調試,xinzeng()中注意讀取文件與寫入文件,都是以文本形式進行操作。若menu()與xinzeng()編譯連接無誤后,再加入chaxun(),這樣依次檢查其他函數。當所有的功能函數都加上調試正確無誤后在進入程序的測試階段。首先,由于所要將輸入通訊信息要以文本文件的形式進行存儲,所以在添加信息和查詢信息就遇到了麻煩,讀取信息的時候顯示的全部是亂碼,是因為在輸入和讀取“姓名”等信息的時候是以%s的形式。在同學和老師的幫助下對程序進行了反復的修改,最終達到了以文本存儲和讀取的目的。其次,就是在對存儲的信息進行刪除的時候是以對工號付0值實現的,而在全部顯示存儲的信息時用if()語句判斷進行信息存儲和屏幕顯示,最后是在仔細查詢及反復實踐的基礎上完成了對程序的修改。最后就是在全部顯示文件中存儲的信息時,而以免對最后一個信息進行讀取兩次,而采用if(fscanf(fp,%c,c)!=EOF)以達到全部顯示的目的。測試結果.1新增信息文件輸入1.輸入職工工資信息,運行結果如下:1.無文件存在時的界面:2.選1按回車鍵即:3. 選1按回車鍵即:4. 按提示操作,選0按回車鍵即:可見主菜單改變。5.選6瀏覽看是否存入數據:可見數據已存入文件。5.2查詢職工信息1.主菜單選2進入查詢功能:按提示操作。可見查找功能得以實現。.3刪除職工信息1. 主菜單選3進入刪除功能:按提示操作:可見操作是將工號為1的刪除,而未對2刪除。為驗證之則返回進行瀏覽功能操作:可見該功能操作是成功的。.4修改職工信息1. 主菜單選3進入修改功能:按提示操作:改操作對2作修改未對3修改,為驗證之則返回進行瀏覽功能操作:可見該功能操作是成功的。.5統計職工信息1. 主菜單選3進入修改功能:按提示操作:可見該功能操作是成功的。.5瀏覽職工信息在以上步驟中可知是成功的。總結本次課程設計的要求是建立職工管理系統,輸入員工號、姓名、基本工資、補貼金額、獎勵金額、扣除金額、實發工資等基本信息,然后對職工工資信息進行顯示、查找、添加、統計、修改及刪除。雖然我對該實驗的內容及要求都有所了解,在對程序的大體規劃上還很清楚,但是在編寫程序時思維卻很混亂,由于在對職工工資信息的輸入、查詢、修改和刪除中要求邏輯思維嚴密謹慎,所以在本次程序的編寫中不能獨立完成,而是在老師的幫助下,對每一個步驟的深入思考才得出了結果。通過這次的專題實驗讓我意識到,自己在該門學科中還有很多不懂的地方,其主要原因是上機操作太少,對一些細節考慮還不夠全面,今后我會努力學習本課程,要求自己能熟練掌握程序的編寫。附錄職工管理系統C語言源代碼:#include#include#includestruct worker int gonghao;char name20;double jiben;double butie;double jiangli;double kouchu;double jieyu; /職工數據信息結構體int input(struct worker *p,int j);/職工數據信息錄入int output_0(struct worker *p);/職工數據信息屏幕輸出int foutput(FILE *fp,struct worker *p);/職工數據信息存入文件int finput(FILE *fp,struct worker *p);/職工數據信息讀出文件void menu();/主菜單void xinzeng();/新增功能函數void chaxun();/查詢功能函數void shanchu();/刪除功能函數void xiugai();/修改功能函數void tongji();/統計功能函數int liulan();/瀏覽功能函數struct worker w10000;int i,n,j,m,k=0;char c5;FILE *fp;int main()/主函數for(;)menu();/主菜單switch(n)case 1:xinzeng();break;/新增功能case 2:chaxun();break;/查詢功能case 3:shanchu();break;/刪除功能case 4:xiugai();break;/修改功能case 5:tongji();break;/統計功能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做為工號形參輸入p-gonghao=m;printf(n姓名: );scanf(%s,p-name);printf(基本工資: );scanf(%lf,&p-jiben);printf(補貼金額: );scanf(%lf,&p-butie);printf(獎勵金額: );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(工號 姓名 基本工資 補貼金額 獎勵金額 扣除金額 工資結算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(/職工工資管理系統/n);printf(/tt1.新增員工信息ttt/n);fp=fopen(worker.txt,a);/在無文件時創建文件fclose(fp);fp=fopen(worker.txt,r);if(fscanf(fp,%c,c)!=EOF)/判斷文件是否存有數據fclose(fp);printf(/tt2.查找員工信息ttt/n);printf(/tt3.刪除員工信息ttt/n);printf(/tt4.修改員工信息ttt/n);printf(/tt5.統計 ttt/n);printf(/tt6.瀏覽 ttt/n);printf(/tt0.退出 ttt/n);printf(/*注:員工號為110000./n);printf(請輸入選項(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(請輸入選項1: n);while(1)scanf(%d,&n);if(n=1)break;elseprintf(請輸入選項1: n);continue;void xinzeng()for(;)printf(tt1.請輸入所新增員工工號n);printf(tt0.返回保存n請輸入選項n);scanf(%d,&n);if(n=1)j=1;for(i=k;i10000;i+)printf(請輸入新增員工工號: n);scanf(%d,&n);for(m=0;mi;m+)if(n=wm.gonghao)printf(該工號已存在n);j=0;if(j)input(&wi,n);printf(按1繼續*按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.請輸入所查詢員工工號n);printf(tt0.返回n請輸入選項n);scanf(%d,&n);if(n=1)for(i=0;ik;i+)for(;)printf(請輸入所查詢員工工號: );scanf(%d,&n);for(i=0,m=0;ik;i+)if(n=wi.gonghao)output_0(&wi);break;m+;if(m=k)printf(該工號不存在n);printf(tt1.繼續ntt0.返回n);scanf(%d,&j);if(j)continue;break;break;else break;void shanchu()for(;)printf(nt1.請輸入所刪除員工工號n);printf(t0.返回保存n請輸入選項: );scanf(%d,&n);if(n=1)for(;)for(i=0;ik;i+)j=1;for(i=0;ik;i+)printf(請輸入所刪除員工工號: );scanf(%d,&n);for(i=0,j=0;ik;i+)if(n=wi.gonghao)output_0(&wi);break;j+;if(j=k)printf(該工號不存在n);break;elseprintf(t1.確實刪除該員工n);printf(t0.返回n請輸入選項: );scanf(%d,&j);if(j)wi.gonghao=0;break;elsebreak;break;printf(t1.繼續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.請輸入所修改員工工號n);printf(t0.返回n請輸入選項n);scanf(%d,&n);if(n=1)for(;)for(i=0;ik;i+)j=1;for(i=0;ik;i+)printf(請輸入所修改員工工號: );scanf(%d,&n);for(i=0,j=0;ik;i+)if(n=wi.gonghao)output_0(&wi);break;j+;if(j=k)printf(該工號不存在n);break;elseprintf(nt1.確實修改該員工n);printf(nt0.返回n請輸入選項: );scanf(%d,&j);if(j)input(&wi,n);break;elsebreak;break;printf(nt1.繼續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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 炸雞店的社會責任活動
- 高光修容 打造立體面部效果
- 2025年工業互聯網平臺網絡切片技術在照明電器行業的應用案例報告
- 環境災害應急響應預案培訓實施效果評估重點基礎知識點歸納
- 元旦快樂輕松講故事
- 小型土木工程項目的BIM應用揭秘
- 護理中的研究概述
- 護理中的產房護理
- 房地產項目中的環境因素考慮
- 房地產項目的融資風險管理
- 法在我心中-主題班會課件
- 健康、健康公平和健康決定因素定義和內容
- 痛風診治進展p
- 貴州省遵義市各縣區鄉鎮行政村村莊村名明細及行政區劃劃分代碼居民村民委員會
- 應彩云幼兒園優質公開課:大班語言《天生一對》
- 機械原理課程設計-自動打印機設計說明書
- 卸料平臺(落地搭設)驗收記錄表
- 2022更新國家開放大學電大《西方行政學說》機考4套真題題庫及答案1
- 城市防洪排澇規劃編制大綱解讀
- 山大社會體育學案例分析
- 2022年浙江省溫州市七年級下學期期末語文試卷
評論
0/150
提交評論