職工工資管理系統(tǒng)課程設(shè)計(jì)報(bào)告
《職工工資管理系統(tǒng)課程設(shè)計(jì)報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《職工工資管理系統(tǒng)課程設(shè)計(jì)報(bào)告(37頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、目 錄一、需求分析2二、概要設(shè)計(jì)2三、詳細(xì)設(shè)計(jì)5四、調(diào)試分析18五、用戶手冊(cè)19六、測(cè)試數(shù)據(jù)19七、附錄23一、 需求分析職工工資管理系統(tǒng) 功能設(shè)計(jì)要求 (1)輸入記錄:將每一個(gè)職工的姓名、ID號(hào)以及基本工資、職務(wù)工資、崗位津貼、醫(yī)療保險(xiǎn)、公積金的數(shù)據(jù)作為一個(gè)記錄。該軟件能建立一個(gè)新的數(shù)據(jù)文件或給已建立好的數(shù)據(jù)文件增加記錄。(2)顯示記錄:根據(jù)用戶提供的記錄或者根據(jù)職工姓名顯示一個(gè)或幾個(gè)職工的各項(xiàng)工資和平均工資。(3)修改記錄:可以對(duì)數(shù)據(jù)文件的任意記錄的數(shù)據(jù)進(jìn)行修改并在修改前后對(duì)記錄內(nèi)容進(jìn)行顯示。(4)查找記錄:可以對(duì)數(shù)據(jù)文件的任意記錄的數(shù)據(jù)進(jìn)行查找并在查找前后對(duì)記錄內(nèi)容進(jìn)行顯示。 (5)刪除
2、記錄:可刪除數(shù)據(jù)文件中的任一記錄。 (6) 統(tǒng)計(jì): (A)計(jì)算各項(xiàng)工資平均工資及總工資, (B)統(tǒng)計(jì)符合指定條件(如職工工資前三項(xiàng)之和在3000元以上、30002000元、20001000元) 以內(nèi)的工資職工人數(shù)及占總職工人數(shù)的百分比。(C)按字符表格形式打印全部職工工資信息表及平均工資(包括各項(xiàng)總的平均工資)。 (7)保存數(shù)據(jù)文件功能。 例如:職工工資信息表 ID號(hào) 姓名 基本工資 職務(wù)工資 津貼 醫(yī)療保險(xiǎn)- 公積金- 總工資 01 張望 1286 794 198 109 135 2034 02 李明 1185 628 135 94 114 1740 03 王小民 895 438 98 64
3、 73 1294 04 張效章 1350 868 210 116 150 2162 05 彭山 745 398 84 61 68 1098 各項(xiàng)平均工資 1092.2 625.2 145 88.8 108(要求:1.源文件采用多文件的工程結(jié)構(gòu)2.數(shù)據(jù)存儲(chǔ)采用文件形式3.標(biāo)準(zhǔn)的C輸入輸出4.功能完善,適當(dāng)?shù)淖⑨專?.關(guān)于文件的內(nèi)容需要自學(xué))二、概要設(shè)計(jì)1、程序總體功能框架: 總量顯示主菜單查找功能顯示功能刪除功能輸入功能退出程序添加功能修改功能按姓名刪除按工號(hào)查找修改工號(hào)修改姓名修改職務(wù)工資修改基本工資修改醫(yī)療保險(xiǎn)修改津貼修改公積金按姓名查找按工號(hào)刪除2、一些數(shù)據(jù)結(jié)構(gòu)的介紹:struct wor
4、ker 定義職工的結(jié)構(gòu)體int num; 職工工號(hào)char name20; 職工姓名int jibengongzi; 職工的基本工資int zhiwugongzi; 職工的職務(wù)工資int jintie; 職工的津貼int yiliaobaoxian; 職工的醫(yī)療保險(xiǎn)int gongjijin; 職工的公積金int qiansan; 職工前三項(xiàng)工資(基本工資、職務(wù)工資、津貼)之和 int sum; 職工的總工資worker100; 建立最多為100,、名為worker的結(jié)構(gòu)體3、定義主要的函數(shù): void menu();void Input();void Modify();void Search
5、();void Add();void Delete();void Show();void Exit();4、幾個(gè)主要函數(shù)介紹:清屏函數(shù):system(cls); 將前面操作的屏幕清楚,但不會(huì)清除數(shù)據(jù)菜單函數(shù):menu(); 顯示主菜單,便于選擇輸入函數(shù):Input(); 用于輸入數(shù)據(jù) 修改函數(shù):Modify(); 用于修改數(shù)據(jù) 查找函數(shù):Search(); 用于查找信息 添加函數(shù):Add(); 用于增加信息 刪除函數(shù):Delete(); 用于刪除信息 顯示函數(shù):Show(); 用于顯示信息 退出函數(shù):Exit(); 用于退出該系統(tǒng) 選擇函數(shù):select(); 用于選擇顯示信息或返回到菜單 保
6、存信息的函數(shù):save(): 用于保存信息 保存人數(shù)的函數(shù):P(); 用于保存已保存數(shù)據(jù)的人數(shù)5、本程序模塊結(jié)構(gòu) 主函數(shù)模塊 int main() system(cls); menu();執(zhí)行主函數(shù)后,執(zhí)行菜單函數(shù)。 菜單函數(shù)模塊void menu() int n; system(cls); printf(nnn); printf(tt*n); printf(tt* *n); printf(tt* If you were the first to enter the system *n); printf(tt* please select Input! *n); printf(tt* *n);
7、 printf(tt* 1-Input *n); printf(tt* 2-Modify *n); printf(tt* 3-Search *n); printf(tt* 4-Add *n); printf(tt* 5-Delete *n); printf(tt* 6-Show *n); printf(tt* 7-Exit *n); printf(tt* *n); printf(tt*n); printf(ttn); printf(nn); printf(ttInput your choose(1-7):); scanf(%d,&n); if(n=1&n=1&n=0&p=100) /輸入職工的
8、信息 printf(nn); printf(Please input data:n); printf(n); f1(); for(i=0;ip;i+) input(i); workeri.sum=workeri.jibengongzi+workeri.zhiwugongzi +workeri.jintie-workeri.yiliaobaoxian-workeri.gongjijin; /計(jì)算職工的總工資 workeri.qiansan=workeri.jibengongzi+workeri.zhiwugongzi+workeri.jintie; /職工前三項(xiàng)工資(基本工資、職務(wù)工資、津貼)之
9、和 else Input(); /如果輸入的職工人數(shù)超過100,返回輸入函數(shù)重新輸入 save(p); /保存輸入的職工信息 select(); /選擇顯示信息或返回到菜單void Modify() /修改函數(shù) int i,j=-1,d,k,t,n;char m20; FILE *fp; /定義一個(gè)文件指針 system(cls); /清屏 n=P(); printf(nn); printf(Choose the way you want to modify:n); /選擇通過何種方式修改信息 printf(nn); /選擇方式的界面 printf(tt*n); printf(tt* *n);
10、 printf(tt* 1.By name to modify *n); printf(tt* *n); printf(tt* 2.By number to modify *n); printf(tt* *n); printf(tt*n); printf(ninput your selection:); scanf(%d,&d); if(d!=1&d!=2) printf(ninput error! Press any key to continue.); getchar(); Modify(); /選擇的數(shù)字錯(cuò)誤,返回修改函數(shù)重新選擇 else if(d=1) do printf(nPlea
11、se input the name:); /輸入需要修改職工的姓名 scanf(%s,m); for(i=0;in;i+) if(strcmp(m,workeri.name)=0) j=i; if(j=-1) printf(nNot find!Please input again!n); /沒有找到該職工,重新輸入 while(j=-1); else do printf(nPlease input the num:); /輸入需要修改職工的工號(hào) scanf(%d,&k); for(i=0;in;i+) if(k=workeri.num) j=i; if(j=-1) printf(nNot fi
12、nd!Please again!n); /沒有找到該職工,重新輸入 while(j=-1); printf(nWhat do you want to modify?nn); /需要修改信息的界面 printf(tt*n); printf(tt* *n); printf(tt* 1.name 2.number *n); printf(tt* *n); printf(tt* 3.jibengongzi 4.zhiwugongzi *n); printf(tt* *n); printf(tt* 5.jintie 6.yiliaobaoxian *n); printf(tt* *n); printf(
13、tt* 7.gongjijin *n); printf(tt* *n); printf(tt*n); printf(nPlease input your selection:); /選擇需要修改的信息 scanf(%d,&t); switch(t) /通過選擇的數(shù)字,實(shí)現(xiàn)修改該信息 case 1:printf(nbefore modify:%s,workerj.name); printf(nchange to:); scanf(%s,workerj.name); printf(nafter modify:%s,workerj.name);break; case 2:printf(nbefore
14、 modify:%d,workerj.num); printf(nchange to:); scanf(%d,&workerj.num); printf(nafter modify:%d,workerj.num);break; case 3:printf(nbefore modify:%d,workerj.jibengongzi); printf(nchange to:); scanf(%d,&workerj.jibengongzi); printf(nafter modify:%d,workerj.jibengongzi);break; case 4:printf(nbefore modif
15、y:%d,workerj.zhiwugongzi); printf(nchange to:); scanf(%d,&workerj.zhiwugongzi); printf(nafter modify:%d,workerj.zhiwugongzi);break; case 5:printf(nbefore modify:%d,workerj.jintie); printf(nchange to:); scanf(%d,&workerj.jintie); printf(nafter modify:%d,workerj.jintie);break; case 6:printf(nbefore mo
16、dify:%d,workerj.yiliaobaoxian); printf(nchange to:); scanf(%d,&workerj.yiliaobaoxian); printf(nafter modify:%d,workerj.yiliaobaoxian);break; case 7:printf(nbefore modify:%d,workerj.gongjijin); printf(nchange to:); scanf(%d,&workerj.gongjijin); printf(nafter modify:%d,workerj.gongjijin);break; defaul
17、t:printf(Error!choice again!n);break; getchar(); printf(n); f2(); workerj.sum=workerj.jibengongzi+workerj.zhiwugongzi+workerj.jintie -workerj.yiliaobaoxian-workerj.gongjijin; /職工的總工資 output(j); printf(nSave it?nn1.Yes 2.Non); /詢問是否保存修改后的信息 scanf(%d,&i); if(i=1) save(n); /保存修改后的信息 printf(nPress any k
18、ey to back!); /返回到菜單 getchar(); menu();void Search() /查找函數(shù) int i,j=-1,k,d,n;char m20; n=P(); system(cls); /清屏 printf(Choose the way you want to search:n); /選擇通過何種方式查找信息 printf(nn); /選擇方式的界面 printf(tt*n); printf(tt* *n); printf(tt* 1.By name to search *n); printf(tt* *n); printf(tt* 2.By number to se
19、arch *n); printf(tt* *n); printf(tt*n); printf(nn); printf(Please input your selection:); /選擇查找的方式 scanf(%d,&d); if(d=2) do printf(nPlease input the number:); /輸入需要查找的職工工號(hào) scanf(%d,&k); for(i=0;in;i+) if(k=workeri.num) j=i; if(j=-1) printf(Not find!Please input again!n); /沒有找到該職工,重新輸入 while(j=-1); p
20、rintf(n); f2(); output(j); /輸出信息 else if(d=1) do printf(nPlease input the name:); /輸入需要查找的職工姓名 scanf(%s,m); for(i=0;in;i+) if(strcmp(m,workeri.name)=0) j=i; if(j=-1) printf(Not find!Please input again!n); /沒有找到該職工,重新輸入 while(j=-1); printf(n); f2(); output(j); /輸出信息 if(d!=1&d!=2) printf(nInput error!
21、 Press any key to continue.); /輸入錯(cuò)誤,按enter鍵繼續(xù) getchar(); Search(); /返回到查找函數(shù) select(); /選擇顯示信息或返回到菜單void Add() /添加函數(shù) int i,k,m,n; FILE *fp; /定義一個(gè)文件指針 system(cls); /清屏 n=P(); printf(nnHow many people do you want to add:); /輸入需要添加的職工人數(shù) scanf(%d,&m); k=m+n; if(k=100) printf(nnPlease input their informat
22、ion:nn); /輸入添加的職工信息 f1(); for(i=n;ik;i+) input(i); workeri.sum=workeri.jibengongzi+workeri.zhiwugongzi+workeri.jintie -workeri.yiliaobaoxian-workeri.gongjijin; /職工的總工資 if(fp=fopen(D:zggz.txt,ab)=NULL) /如果文件為空,則不能打開文件 printf(nCan not open file.n); /不能打開文件 getchar(); menu(); /返回到菜單 for(i=n;ik;i+) if(f
23、write(&workeri,sizeof(struct worker),1,fp)!=1) /判斷是否寫入了數(shù) printf(file write error.n); /文件寫入錯(cuò)誤 fclose(fp); /關(guān)閉文件 select(); /選擇顯示信息或返回到菜單 else Add(); /返回到添加函數(shù)void Delete() /刪除函數(shù) int i,j=-1,d,k,t,n;char m20; FILE *fp; /定義一個(gè)文件指針 system(cls); /清屏 n=P(); fp=fopen(D:zggz.txt,rb); /打開只讀文件 printf(nn); printf(
24、Choose the way you want to delete:n); /選擇通過何種方式刪除信息 printf(nn); /刪除函數(shù)的界面 printf(tt*n); printf(tt* *n); printf(tt* 1.By name to delete *n); printf(tt* *n); printf(tt* 2.By number to delete *n); printf(tt* *n); printf(tt*n); printf(ninput your selection:); /選擇刪除的方式 scanf(%d,&d); if(d!=1&d!=2) printf(n
25、input error! Press any key to continue.); /輸入錯(cuò)誤,按enter鍵繼續(xù) getchar(); Delete(); /返回到刪除函數(shù) else if(d=1) do printf(nPlease input the name:); /輸入需要?jiǎng)h除的職工姓名 scanf(%s,m); for(i=0;in;i+) if(strcmp(m,workeri.name)=0) j=i; if(j=-1) printf(nNot find!Please again!n); /沒有找到該職工,重新輸入 while(j=-1); else do printf(nPl
26、ease input the num:); /輸入需要?jiǎng)h除的職工工號(hào) scanf(%d,&k); for(i=0;in;i+) if(k=workeri.num) j=i; if(j=-1) printf(nNot find!Please again!n); /沒有找到該職工,重新輸入 while(j=-1); printf(n); f2(); for(i=j;in-1;i+) workeri=workeri+1; /刪除信息后,將后面的職工信息按原來的順序補(bǔ)充 for(i=0;in-1;i+) output(i); printf(Save it?nn1.Yes 2.Non); /詢問是否保存
27、刪除后的職工信息 scanf(%d,&i); if(i=1) save(n-1); /保存刪除后的職工信息 printf(nPress any key to back!); /按enter鍵繼續(xù) getchar(); menu(); /返回到菜單void Show() /顯示函數(shù) int i,p,a=0,b=0,c=0,j=0,k=0,l=0,m=0,n=0; p=P(); system(cls); /清屏 f2(); for(i=0;ip;i+) output(i); printf(nnaverage salary:n); for(i=0;ip;i+) /各項(xiàng)工資的總和 j+=workeri
28、.jibengongzi; k+=workeri.zhiwugongzi; l+=workeri.jintie; m+=workeri.yiliaobaoxian; n+=workeri.gongjijin; printf(%13d %11d %12d %7d %15d,j/p,k/p,l/p,m/p,n/p); printf(n(qian san xiang)renshu baifenbin); for(i=0;i3000) a+; else if(workeri.qiansan=2000 & workeri.qiansan=1000 & workeri.qiansan=2000) c+;
29、/顯示前三項(xiàng)工資在各個(gè)范圍內(nèi)的人數(shù)及所占人數(shù)的百分比printf( over 3000:%-7d%6d%n,a,(a*100/p); printf( 20003000:%-7d%6d%n,b,(b*100/p); printf( 10002000:%-7d%6d%n,c,(c*100/p); printf(n); printf(Press any key to back.); getchar(); menu(); /返回到菜單void Exit() /退出函數(shù) int i,p,a=0,b=0,c=0,j=0,k=0,l=0,m=0,n=0; p=P(); system(cls); /清屏 f2
30、(); for(i=0;ip;i+) output(i); printf(nnaverage salary:n); for(i=0;ip;i+) /各項(xiàng)工資的總和 j+=workeri.jibengongzi; k+=workeri.zhiwugongzi; l+=workeri.jintie; m+=workeri.yiliaobaoxian; n+=workeri.gongjijin; printf(%13d %11d %12d %7d %15d,j/p,k/p,l/p,m/p,n/p); printf(n(qian san xiang)renshu baifenbin); for(i=0
31、;i3000) a+; else if(workeri.qiansan=2000 & workeri.qiansan=1000 & workeri.qiansan=2000) c+; /顯示前三項(xiàng)工資在各個(gè)范圍內(nèi)的人數(shù)及所占人數(shù)的百分比 printf( over 3000:%-7d%6d%n,a,(a*100/p); printf( 20003000:%-7d%6d%n,b,(b*100/p); printf( 10002000:%-7d%6d%n,c,(c*100/p); printf(n); getchar(); system(cls); /清屏 printf(nnnnnnnn); /退出
32、系統(tǒng)的界面 printf(t*n); printf(t * *n); printf(t * Thank you for the use of staff wage management system! *n); printf(t * *n); printf(t * *n); printf(t * Good-bye! *n); printf(t * *n); printf(t*n); printf(ttnn); getchar();f1() printf(num name jibengongzi zhiwugongzi jintie yiliaobaoxian gongjijinnn);f2() printf(num name jibengongzi zhiwugongzi jintie yiliaobaoxi
- 溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教部編版教材三年級(jí)上冊(cè)道德與法治第四單元家是最溫暖的地方教學(xué)ppt課件 (全套)
- 蘇教版小學(xué)科學(xué)三年級(jí)下冊(cè)《雨下得有多大》課件1
- 花的形態(tài)與結(jié)構(gòu)課件匯總
- 一年級(jí)-數(shù)學(xué)下冊(cè)十幾減九人教版課件
- 電影膠片動(dòng)態(tài)課件
- 高電壓技術(shù)課件第六章
- 項(xiàng)目采購管理(6)
- 四川省攀枝花市XX小學(xué)一年級(jí)數(shù)學(xué)下冊(cè)六100以內(nèi)的加法和減法二練習(xí)十三2課件蘇教版
- 山東省青島市黃島區(qū)海青鎮(zhèn)中心中學(xué)七年級(jí)歷史下冊(cè) 15 明朝君權(quán)的加強(qiáng)課件 新人教版
- 把握人物的性格特征
- 剪小紙人PPT課件
- 八年級(jí)物理探究凸透鏡成像規(guī)律8
- 1[1]22配方法2
- 近代機(jī)械行業(yè)唯物主義管理分析自然觀
- 全國科技創(chuàng)新大賽“科學(xué)幻想畫”獲獎(jiǎng)作品ppt課件