課程設(shè)計(jì)報(bào)告范文_第1頁(yè)
課程設(shè)計(jì)報(bào)告范文_第2頁(yè)
課程設(shè)計(jì)報(bào)告范文_第3頁(yè)
課程設(shè)計(jì)報(bào)告范文_第4頁(yè)
課程設(shè)計(jì)報(bào)告范文_第5頁(yè)
已閱讀5頁(yè),還剩32頁(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、183;··································2三、詳細(xì)設(shè)計(jì)··············&

3、#183;··························5四、調(diào)試分析······················

4、···················18五、用戶手冊(cè)·····························

5、3;···········19六、測(cè)試數(shù)據(jù)·····································&#

6、183;···19七、附錄·············································23

7、一、 需求分析職工工資管理系統(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)刪除記錄:可刪除數(shù)據(jù)文件中的任一記錄。 (6) 統(tǒng)計(jì): (A)計(jì)算各項(xiàng)工資平均工資及總工資, (B)統(tǒng)計(jì)符合指定

8、條件(如職工工資前三項(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 73 1294 04 張效章 1350 868 210 116 150 2162 05 彭山 745 39

9、8 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 w

10、orker 定義職工的結(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 Sear

11、ch();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(); 用于

12、選擇顯示信息或返回到菜單 保存信息的函數(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 fir

13、st to enter the system *n"); printf("tt* please select Input! *n"); printf("tt* *n"); 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(&

14、quot;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<=7) switch(n) case 1:Input();brea

15、k; case 2:Modify();break; case 3:Search();break; case 4:Add();break; case 5:Delete();break; case 6:Show();break; case 7:Exit();break; else menu();菜單函數(shù)中包括輸入函數(shù)、修改函數(shù)、查找函數(shù)、添加函數(shù)、刪除函數(shù)、顯示函數(shù)、退出函數(shù)。根據(jù)菜單中各個(gè)函數(shù)代表的數(shù)字選擇相應(yīng)的數(shù)字進(jìn)行操作。 3、 詳細(xì)設(shè)計(jì)#include "stdio.h"#include "string.h"struct worker /定義結(jié)構(gòu)體

16、int num; char name20; int jibengongzi; int zhiwugongzi; int jintie; int yiliaobaoxian; int gongjijin; int qiansan; int sum; worker100;void menu(); /定義幾個(gè)主要的函數(shù)void Input();void Modify();void Search();void Add();void Delete();void Show();void Exit();int main() /主函數(shù) system("cls"); menu();void

17、menu() /菜單函數(shù) 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"); printf("tt* 1-

18、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("t

19、tn"); printf("nn"); printf("ttInput your choose(1-7):"); /選擇需要進(jìn)行的功能,選擇1-7之間的數(shù) scanf("%d",&n); if(n>=1&&n<=7) switch(n) /根據(jù)選擇不同的數(shù),實(shí)現(xiàn)不同的功能 case 1:Input();break; case 2:Modify();break; case 3:Search();break; case 4:Add();break; case 5:Delete();break;

20、 case 6:Show();break; case 7:Exit();break; else menu(); /如果選擇的數(shù)不在1至7之間,返回菜單重新輸入void Input() /輸入函數(shù) int i,p; clrscr(); printf("nnHow many people?(0-100):"); /輸入需要輸入信息的職工人數(shù) scanf("%d",&p); if(p>=0&&p<=100) /輸入職工的信息 printf("nn"); printf("Please input

21、data:n"); printf("n"); f1(); for(i=0;i<p;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ù)工資、津貼)之和 else Input(

22、); /如果輸入的職工人數(shù)超過(guò)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"); /選擇通過(guò)何種方式修改信息 printf("nn"); /選擇

23、方式的界面 printf("tt*n"); printf("tt* *n"); 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&q

24、uot;,&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("nPlease input the name:"); /輸入需要修改職工的姓名 scanf("%s",m); for(i=0;i<n;i+) if(strcmp(m,)=0) j=i; if(j=-1)

25、 printf("nNot find!Please input again!n"); /沒(méi)有找到該職工,重新輸入 while(j=-1); else do printf("nPlease input the num:"); /輸入需要修改職工的工號(hào) scanf("%d",&k); for(i=0;i<n;i+) if(k=workeri.num) j=i; if(j=-1) printf("nNot find!Please again!n"); /沒(méi)有找到該職工,重新輸入 while(j=-1); p

26、rintf("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.

27、yiliaobaoxian *n"); printf("tt* *n"); printf("tt* 7.gongjijin *n"); printf("tt* *n"); printf("tt*n"); printf("nPlease input your selection:"); /選擇需要修改的信息 scanf("%d",&t); switch(t) /通過(guò)選擇的數(shù)字,實(shí)現(xiàn)修改該信息 case 1:printf("nbefore modify

28、:%s",); printf("nchange to:"); scanf("%s",); printf("nafter modify:%s",);break; case 2:printf("nbefore modify:%d",workerj.num); printf("nchange to:"); scanf("%d",&workerj.num); printf("nafte

29、r 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 modify:%d",workerj

30、.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); pri

31、ntf("nafter modify:%d",workerj.jintie);break; case 6:printf("nbefore modify:%d",workerj.yiliaobaoxian); printf("nchange to:"); scanf("%d",&workerj.yiliaobaoxian); printf("nafter modify:%d",workerj.yiliaobaoxian);break; case 7:printf("nbefore

32、 modify:%d",workerj.gongjijin); printf("nchange to:"); scanf("%d",&workerj.gongjijin); printf("nafter modify:%d",workerj.gongjijin);break; default:printf("Error!choice again!n");break; getchar(); printf("n"); f2(); workerj.sum=workerj.jibeng

33、ongzi+workerj.zhiwugongzi+workerj.jintie -workerj.yiliaobaoxian-workerj.gongjijin; /職工的總工資 output(j); printf("nSave it?nn1.Yes 2.Non"); /詢問(wèn)是否保存修改后的信息 scanf("%d",&i); if(i=1) save(n); /保存修改后的信息 printf("nPress any key to back!"); /返回到菜單 getchar(); menu();void Search()

34、 /查找函數(shù) int i,j=-1,k,d,n;char m20; n=P(); system("cls"); /清屏 printf("Choose the way you want to search:n"); /選擇通過(guò)何種方式查找信息 printf("nn"); /選擇方式的界面 printf("tt*n"); printf("tt* *n"); printf("tt* 1.By name to search *n"); printf("tt* *n"

35、;); printf("tt* 2.By number to search *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(&q

36、uot;%d",&k); for(i=0;i<n;i+) if(k=workeri.num) j=i; if(j=-1) printf("Not find!Please input again!n"); /沒(méi)有找到該職工,重新輸入 while(j=-1); printf("n"); f2(); output(j); /輸出信息 else if(d=1) do printf("nPlease input the name:"); /輸入需要查找的職工姓名 scanf("%s",m); for(

37、i=0;i<n;i+) if(strcmp(m,)=0) j=i; if(j=-1) printf("Not find!Please input again!n"); /沒(méi)有找到該職工,重新輸入 while(j=-1); printf("n"); f2(); output(j); /輸出信息 if(d!=1&&d!=2) printf("nInput error! Press any key to continue."); /輸入錯(cuò)誤,按enter鍵繼續(xù) getchar(); Search

38、(); /返回到查找函數(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 information:nn")

39、; /輸入添加的職工信息 f1(); for(i=n;i<k;i+) input(i); workeri.sum=workeri.jibengongzi+workeri.zhiwugongzi+workeri.jintie -workeri.yiliaobaoxian-workeri.gongjijin; /職工的總工資 if(fp=fopen("D:zggz.txt","ab")=NULL) /如果文件為空,則不能打開(kāi)文件 printf("nCan not open file.n"); /不能打開(kāi)文件 getchar(); m

40、enu(); /返回到菜單 for(i=n;i<k;i+) if(fwrite(&workeri,sizeof(struct worker),1,fp)!=1) /判斷是否寫入了數(shù) printf(" 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(

41、); fp=fopen("D:zggz.txt","rb"); /打開(kāi)只讀文件 printf("nn"); printf("Choose the way you want to delete:n"); /選擇通過(guò)何種方式刪除信息 printf("nn"); /刪除函數(shù)的界面 printf("tt*n"); printf("tt* *n"); printf("tt* 1.By name to delete *n"); printf(&qu

42、ot;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("ninput error! Press any key to continue."); /輸入錯(cuò)誤,按ent

43、er鍵繼續(xù) getchar(); Delete(); /返回到刪除函數(shù) else if(d=1) do printf("nPlease input the name:"); /輸入需要?jiǎng)h除的職工姓名 scanf("%s",m); for(i=0;i<n;i+) if(strcmp(m,)=0) j=i; if(j=-1) printf("nNot find!Please again!n"); /沒(méi)有找到該職工,重新輸入 while(j=-1); else do printf("nPlease i

44、nput the num:"); /輸入需要?jiǎng)h除的職工工號(hào) scanf("%d",&k); for(i=0;i<n;i+) if(k=workeri.num) j=i; if(j=-1) printf("nNot find!Please again!n"); /沒(méi)有找到該職工,重新輸入 while(j=-1); printf("n"); f2(); for(i=j;i<n-1;i+) workeri=workeri+1; /刪除信息后,將后面的職工信息按原來(lái)的順序補(bǔ)充 for(i=0;i<n-1;i

45、+) output(i); printf("Save it?nn1.Yes 2.Non"); /詢問(wèn)是否保存刪除后的職工信息 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&qu

46、ot;); /清屏 f2(); for(i=0;i<p;i+) output(i); printf("nnaverage salary:n"); for(i=0;i<p;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

47、("n(qian san xiang)renshu baifenbin"); for(i=0;i<p;i+) /統(tǒng)計(jì)前三項(xiàng)工資在各個(gè)范圍內(nèi)的人數(shù) if(workeri.qiansan>3000) a+; else if(workeri.qiansan>=2000 && workeri.qiansan<=3000) b+; else if(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*10

溫馨提示

  • 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)論