版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
TOC\o"1-5"\h\z\o"CurrentDocument"一、 需求分析 2\o"CurrentDocument"二、 概要設(shè)計(jì) 2\o"CurrentDocument"三、 詳細(xì)設(shè)計(jì) 5\o"CurrentDocument"四、 調(diào)試分析 18\o"CurrentDocument"五、 用戶(hù)手冊(cè) 19\o"CurrentDocument"六、 測(cè)試數(shù)據(jù) 19\o"CurrentDocument"七、 附錄 23一、需求分析職工工資管理系統(tǒng)功能設(shè)計(jì)要求(1) 輸入記錄:將每一個(gè)職工的姓名、ID號(hào)以及基本工資、職務(wù)工資、崗位津貼、醫(yī)療保險(xiǎn)、公積金的數(shù)據(jù)作為一個(gè)記錄。-該軟件能建立一個(gè)新的數(shù)據(jù)文件或給已建立好的數(shù)據(jù)文件增加記錄。(2) 顯示記錄:根據(jù)用戶(hù)提供的記錄或者根據(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ì)符合指定條件(如職工工資前三項(xiàng)之和在3000元以上、3000~2000元、2000~1000元)以?xún)?nèi)的工資職工人數(shù)及占總職工人數(shù)的百分比。(C)按字符表格形式打印全部職工工資信息表及平均工資(?包括各項(xiàng)總的平均工資)。(7) 保存數(shù)據(jù)文件功能。例如:職工工資信息表ID號(hào)姓名基本工資職務(wù)工資津貼醫(yī)療保險(xiǎn)-公積金-總工資01張望1286794198109135203402李明118562813594114174003王小民895438986473129404張效章1350868210116150 216205彭山7453988461681098各項(xiàng)平均工資1092.2625.214588.8108(要求:1.源文件采用多文件的工程結(jié)構(gòu)2.數(shù)據(jù)存儲(chǔ)采用文件形式3.標(biāo)準(zhǔn)的C輸入輸出4.功能完善,適當(dāng)?shù)淖⑨專(zhuān)?.關(guān)于文件的內(nèi)容需要自學(xué))二、概要設(shè)計(jì)1、程序總體功能框架:
2、一些數(shù)據(jù)結(jié)構(gòu)的介紹:structworker定義職工的結(jié)構(gòu)體(intnum; 職工工號(hào)charname[20]; 職工姓名int jibengongzi; 職工的基本工資int zhiwugongzi; 職工的職務(wù)工資int jintie; 職工的津貼int yiliaobaoxian; 職工的醫(yī)療保險(xiǎn)int gongjijin; 職工的公積金intqiansan;職工前三項(xiàng)工資(基本工資、職務(wù)工資、津貼)之和intsum; 職工的總工資}worker[100]; 建立最多為100,、名為worker的結(jié)構(gòu)體3、定義主要的函數(shù):voidmenu();voidInput();voidModify();voidSearch();voidAdd();voidDelete();voidShow();voidExit();4、幾個(gè)主要函數(shù)介紹:①清屏函數(shù):system(〃cls〃); 將前面操作的屏幕清楚,但不會(huì)清除數(shù)據(jù)①菜單函數(shù):menu();①輸入函數(shù):Input。;①修改函數(shù):Modify();①查找函數(shù):Search();①添加函數(shù):Add();①刪除函數(shù):Delete();①顯示函數(shù):Show();①退出函數(shù):Exit();①選擇函數(shù):select();顯示主菜單,便于選擇用于輸入數(shù)據(jù)用于修改數(shù)據(jù)用于查找信息用于增加信息用于刪除信息用于顯示信息用于退出該系統(tǒng)用于選擇顯示信息或返回到菜單Q保存信息的函數(shù):save(): 用于保存信息①保存人數(shù)的函數(shù):P();用于保存已保存數(shù)據(jù)的人數(shù)5、本程序模塊結(jié)構(gòu)⑴主函數(shù)模塊intmain(){system("clsn);menu();}執(zhí)行主函數(shù)后,執(zhí)行菜單函數(shù)。⑵菜單函數(shù)模塊voidmenu(){intn;system("cls");printf("\n\n\n");printf("\t\t****\n");printf("\t\t**Ifyouwerethefirsttoenterthesystem**\n");printf("\t\t**printf("\t\t**printf("\t\t**printf("\t\t**pleaseselectInput! **\n");**\n"); Input **\n"); Modify **\n");printf("\t\t**3—---Search**\n");printf("\t\t**4-------Add**\n");printf("\t\t**5——---Delete**\n");printf("\t\t**6------Show**\n");printf("\t\t**7------Exit**\n");printf("\t\t****\n");j X11\j\j \ 11A<■-I-J 1 1■?-,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>,J>1 ''|?printf("\t\t\n");printf("\n\n");printf("\t\tInputyourchoose(1-7):");scanf("%d",&n);if(n>=1&&nv=7){switch(n){case1:Input();break;case2:Modify();break;case3:Search();break;case4:Add();break;case5:Delete();break;case6:Show();break;case7:Exit();break;}}elsemenu();}菜單函數(shù)中包括輸入函數(shù)、修改函數(shù)、查找函數(shù)、添加函數(shù)、刪除函數(shù)、顯示函數(shù)、退出函數(shù)。根據(jù)菜單中各個(gè)函數(shù)代表的數(shù)字選擇相應(yīng)的數(shù)字進(jìn)行操作。三、詳細(xì)設(shè)計(jì)#include"stdio.h"#include"string.h"structworker 〃定義結(jié)構(gòu)體{intnum;charname[20];intjibengongzi;intzhiwugongzi;intjintie;intyiliaobaoxian;intgongjijin;intqiansan;intsum;}worker[100];voidmenu(); 〃定義幾個(gè)主要的函數(shù)voidInput();voidModify();voidSearch();voidAdd();voidDelete();voidShow();voidExit();intmain() 〃主函數(shù){system("cls");menu();}voidmenu() 〃菜單函數(shù){intn;system("cls"); 〃清屏printf("\n\n\n"); 〃菜單界面printf("\t\t****\n");printf("\t\t**Ifyouwerethefirsttoenterthesystem**\n");printf("\t\t**pleaseselectInput!**\n");printf("\t\t****\n");printf("\t\t**1 Input**\n");printf("\t\t**2 Modify**\n");printf("\t\t**3 Search**\n");printf("\t\t**4 Add**\n");printf("\t\t**5 Delete**\n");
Show Exitprintf("\t\t**6 Show**\n");printf("\t\t**7 Show Exitprintf("\t\t\n");printf("\n\n");printf("\t\tInputyourchoose(1-7):");〃選擇需要進(jìn)行的功能,選擇1-7之間的數(shù)scanf("%d",&n);if(n>=1&&nv=7){switch(n) 〃根據(jù)選擇不同的數(shù),實(shí)現(xiàn)不同的功能{case1:Input();break;case2:Modify();break;case3:Search();break;case4:Add();break;case5:Delete();break;case6:Show();break;case7:Exit();break;}}elsemenu(); 〃如果選擇的數(shù)不在1至7之間,返回菜單重新輸入}voidInput() 〃輸入函數(shù){inti,p;clrscr();printf("\n\nHowmanypeople?(0-100):");〃輸入需要輸入信息的職工人數(shù)scanf("%d",&p);if(p>=0&&pv=100) 〃輸入職工的信息{printf("\n\n");printf("Pleaseinputdata:\n");printf("\n");f1();for(i=0;ivp;i++){input(i);worker[i].sum=worker[i].jibengongzi+worker[i].zhiwugongzi+worker[i].jintie-worker[i].yiliaobaoxian-worker[i].gongjijin;〃計(jì)算職工的總工資
〃職worker[i].qiansan=worker[i].jibengongzi+worker[i].zhiwugongzi+worker[i].jintie;〃職工前三項(xiàng)工資(基本工資、職務(wù)工資、津貼)之和}}〃如果輸入的職工人數(shù)超過(guò)100〃如果輸入的職工人數(shù)超過(guò)100,返回輸入函數(shù)重新輸入〃保存輸入的職工信息〃選擇顯示信息或返回到菜單Input。;save(p);select。;}voidModify。 〃修改函數(shù){inti,j=-1,d,k,t,n;charm[20];FILE*fp; 〃定義一個(gè)文件指針system("cls"); 〃清屏n=P();printf("\n\n");printf("Choosethewayyouwanttomodify:\n");〃選擇通過(guò)何種方式修改信息printf("\n\n"); 〃選擇方式的界面printf("\t\t****************************************\n");printf("\t\t*printf("\t\t*printf("\t\t*printf("\t\t*printf("\t\t*1.Bynametomodify2.Bynumbertomodify*\n");*\n");*\n");*\n");*\n");printf("\t\t****************************************\n");printf("\ninputyourselection:");scanf("%d",&d);if(d!=1&&d!=2)printf("\ninputerror!Pressanykeytocontinue.");getchar();Modify();〃選擇的數(shù)字錯(cuò)誤,返回修改函數(shù)重新選擇}elseif(d=1){do{printf("\nPleaseinputthename:");〃輸入需要修改職工的姓名scanf("%s",m);for(i=0;ivn;i++)if(strcmp(m,worker[i].name)==0)j=i;if(j==-1)printf("\nNotfind!Pleaseinputagain!\n");〃沒(méi)有找到該職工,重新輸入}while(j==-1);}else{do{printf("\nPleaseinputthenum:");〃輸入需要修改職工的工號(hào)scanf("%d”,&k);for(i=0;ivn;i++)if(k=worker[i].num)j=i;if(j==-1)printf("\nNotfind!Pleaseagain!\n");〃沒(méi)有找到該職工,重新輸入}while(j==-1);}printf("\nWhatdoyouwanttomodify?\n\n");〃需要修改信息的界面piintf("\t\t**************************************\n");printf("\t\t**\n");printf("\t\t*1.name2.number*\n");printf("\t\t**\n");printf("\t\t*3.jibengongzi4.zhiwugongzi*\n");printf("\t\t**\n");printf("\t\t*5.jintie6.yiliaobaoxian*\n");printf("\t\t**\n");printf("\t\t*7.gongjijin*\n");printf("\t\t**\n");printf("\t\t**************************************\n");printf("\nPleaseinputyourselection:");〃選擇需要修改的信息scanf("%d",&t);switch(t) 〃通過(guò)選擇的數(shù)字,實(shí)現(xiàn)修改該信息{case1:printf("\nbeforemodify:%s",worker[j].name);printf("\nchangeto:");scanf("%s",worker[j].name);printf("\naftermodify:%s",worker[j].name);break;case2:printf("\nbeforemodify:%d",worker[j].num);printf("\nchangeto:");scanf("%d",&worker[j].num);printf("\naftermodify:%d",worker[j].num);break;case3:printf("\nbeforemodify:%d",worker[j].jibengongzi);printf("\nchangeto:");scanf("%d",&worker[j].jibengongzi);printf("\naftermodify:%d",worker[j].jibengongzi);break;case4:printf("\nbeforemodify:%d”,worker[j].zhiwugongzi);printf("\nchangeto:");scanf("%d”,&worker[j].zhiwugongzi);printf("\naftermodify:%d",worker[j].zhiwugongzi);break;case5:printf("\nbeforemodify:%d",worker[j].jintie);printf("\nchangeto:");scanf("%d",&worker[j].jintie);printf("\naftermodify:%d",worker[j].jintie);break;case6:printf("\nbeforemodify:%d",worker[j].yiliaobaoxian);printf("\nchangeto:");scanf("%d",&worker[j].yiliaobaoxian);printf("\naftermodify:%d",worker[j].yiliaobaoxian);break;case7:printf("\nbeforemodify:%d",worker[j].gongjijin);printf("\nchangeto:");scanf("%d",&worker[j].gongjijin);printf("\naftermodify:%d",worker[j].gongjijin);break;default:printf("Error!choiceagain!!\n");break;}getchar();printf("\n");f2();worker[j].sum=worker[j].jibengongzi+worker[j].zhiwugongzi+worker[j].jintie-worker[j].yiliaobaoxian-worker[j].gongjijin;〃職工的總工資output(j);printf("\nSaveit?\n\nl.Yes2.No\n");〃詢(xún)問(wèn)是否保存修改后的信息scanf("%d",&i);if(i==1)save(n); 〃保存修改后的信息printf("\nPressanykeytoback!");〃返回到菜單getchar();menu();}voidSearch() 〃查找函數(shù){inti,j=-l,k,d,n;charm[20];n=P();system("cls");〃清屏printf("Choosethewayyouwanttosearch:\n");〃選擇通過(guò)何種方式查找信息
printf("\n\n"); 〃選擇方式的界面printf("\t\t****************************************\n");printf("\t\t*printf("\t\t*printf("\t\t*printf("\t\t*printf("\t\t*1.Bynametosearchprintf("\n\n"); 〃選擇方式的界面printf("\t\t****************************************\n");printf("\t\t*printf("\t\t*printf("\t\t*printf("\t\t*printf("\t\t*1.Bynametosearch2.Bynumbertosearch*\n");*\n");*\n");*\n");*\n");printf("\t\t****************************************\n");printf("\n\n");printf("Pleaseinputyourselection:");〃選擇查找的方式scanf("%d”,&d);if(d==2){do{printf("\nPleaseinputthenumber:");〃輸入需要查找的職工工號(hào)scanf("%d”,&k);for(i=0;ivn;i++){if(k==worker[i].num)j=i;}if(j==-1)printf("Notfind!Pleaseinputagain!\n");〃沒(méi)有找到該職工,重新輸入}while(j==-1);printf("\n");f2();output(j); 〃輸出信息}elseif(d==1){do{printf("\nPleaseinputthename:"); 〃輸入需要查找的職工姓名scanf("%s",m);for(i=0;ivn;i++)if(strcmp(m,worker[i].name)==0)j=i;if(j==-1)printf("Notfind!Pleaseinputagain!\n");〃沒(méi)有找到該職工,重新輸入}while(j==-1);printf("\n");f2();output(j); 〃輸出信息}if(d!=1&&d!=2){printf("\nInputerror!Pressanykeytocontinue.");〃輸入錯(cuò)誤,按enter鍵繼續(xù)getchar();Search(); 〃返回到查找函數(shù)}select(); 〃選擇顯示信息或返回到菜單}voidAdd() 〃添加函數(shù){inti,k,m,n;FILE*fp; 〃定義一個(gè)文件指針system("cls");〃清屏n=P();printf("\n\nHowmanypeopledoyouwanttoadd:"); 〃輸入需要添加的職工人數(shù)scanf("%d”,&m);k=m+n;if(k<=100){printf("\n\nPleaseinputtheirinformation:\n\n");〃輸入添加的職工信息f1();for(i=n;ivk;i++){input(i);worker[i].sum=worker[i].jibengongzi+worker[i].zhiwugongzi+worker[i].jintie-worker[i].yiliaobaoxian-worker[i].gongjijin;〃職工的總工資}if((fp=fopen("D:\\zggz.txt”,"ab"))==NULL)〃如果文件為空,則不能打開(kāi)文件{printf("\nCannotopenfile.\n"); 〃不能打開(kāi)文件getchar();menu(); 〃返回到菜單}for(i=n;ivk;i++)if(fwrite(&worker[i],sizeof(structworker),1,fp)!=1)〃判斷是否寫(xiě)入了數(shù)printf("filewriteerror.\n"); 〃文件寫(xiě)入錯(cuò)誤fclose(fp); 〃關(guān)閉文件select(); 〃選擇顯示信息或返回到菜單
elseAdd(); 〃返回到添加函數(shù)voidDelete() 〃刪除函數(shù){inti,j=-1,d,k,t,n;charm[20];FILE*fp; 〃定義一個(gè)文件指針system("cls"); 〃清屏n=P();fp=fopen("D:\\zggz.txt”,"rb”);〃打開(kāi)只讀文件printf("\n\n");printf("Choosethewayyouwanttodelete:\n"); 〃選擇通過(guò)何種方式刪除信息printf("\n\n"); 〃刪除函數(shù)的界面printf("\t\t****************************************\n");*\n");*\n");*\n");*\n");*\n");1.Bynametodelete*\n");*\n");*\n");*\n");*\n");1.Bynametodeleteprintf("\t\t*2.Bynumbertodeleteprintf("\t\t*2.Bynumbertodeleteprintf("\t\t*printf("\t\t*printf("\t\t****************************************\n");printf("\ninputyourselection:");〃選擇刪除的方式scanf("%d",&d);if(d!=1&&d!=2){printf("\ninputerror!Pressanykeytocontinue.");〃輸入錯(cuò)誤,按enter鍵繼續(xù)getchar();Delete(); 〃返回到刪除函數(shù)}elseif(d=1){do{printf("\nPleaseinputthename:");〃輸入需要?jiǎng)h除的職工姓名scanf("%s”,m);for(i=0;ivn;i++)if(strcmp(m,worker[i].name)==0)j=i;if(j==-1)printf("\nNotfind!Pleaseagain!\n");〃沒(méi)有找到該職工,重新輸入}while(j==-1);}elsedo{printf("\nPleaseinputthenum:"); 〃輸入需要?jiǎng)h除的職工工號(hào)scanf("%d",&k);for(i=0;ivn;i++)if(k==worker[i].num)j=i;if(j==-l)printf("\nNotfind!Pleaseagain!\n");〃沒(méi)有找到該職工,重新輸入}while(j==-1);}printf("\n");f2();for(i=j;ivn-1;i++)worker[i]=worker[i+1]; 〃刪除信息后,將后面的職工信息按原來(lái)的順序補(bǔ)充for(i=0;ivn-1;i++)output(i);printf("Saveit?\n\n1.Yes2.No\n");〃詢(xún)問(wèn)是否保存刪除后的職工信息scanf("%d",&i);if(i==1)save(n-1);〃保存刪除后的職工信息printf("\nPressanykeytoback!");〃按enter鍵繼續(xù)getchar();menu(); 〃返回到菜單}voidShow() 〃顯示函數(shù){inti,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;ivp;i++)output(i);printf("\nnaveragesalary:\n");for(i=0;ivp;i++) 〃各項(xiàng)工資的總和{j+=worker[i].jibengongzi;k+=worker[i].zhiwugongzi;l+=worker[i].jintie;m+=worker[i].yiliaobaoxian;n+=worker[i].gongjijin;}printf("%13d%11d%12d%7d%15d”,j/p,k/p,l/p,m/p,n/p);printf("\n(qiansanxiang)renshubaifenbi\n");for(i=0;i<p;i++)〃統(tǒng)計(jì)前三項(xiàng)工資在各個(gè)范圍內(nèi)的人數(shù){if(worker[i].qiansan>3000)a++;elseif(worker[i].qiansan>=2000&&worker[i].qiansan<=3000)b++;elseif(worker[i].qiansan>=1000&&worker[i].qiansan<=2000)c++;}〃顯示前三項(xiàng)工資在各個(gè)范圍內(nèi)的人數(shù)及所占人數(shù)的百分比printf("over3000:%-7d%6d%%\n”,a,(a*100/p));printf(" 2000?3000:%-7d%6d%%\n”,b,(b*100/p));printf(" 1000?2000:%-7d%6d%%\n”,c,(c*100/p));printf("\n");printf("Pressanykeytoback.");getchar();menu(); 〃返回到菜單}voidExit() 〃退出函數(shù){inti,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;i<p;i++)output(i);printf("\nnaveragesalary:\n");for(i=0;i<p;i++) 〃各項(xiàng)工資的總和{j+=worker[i].jibengongzi;k+=worker[i].zhiwugongzi;l+=worker[i].jintie;m+=worker[i].yiliaobaoxian;n+=worker[i].gongjijin;}printf("%13d%11d%12d%7d%15d",j/p,k/p,l/p,m/p,n/p);printf("\n(qiansanxiang)renshubaifenbi\n"); for(i=0;i<p;i++) 〃統(tǒng)計(jì)前三項(xiàng)工資在各個(gè)范圍內(nèi)的人數(shù){if(worker[i].qiansan>3000)
a++;elseif(worker[i].qiansan>=2000&&worker[i].qiansan<=3000)b++;elseif(worker[i].qiansan>=1000&&worker[i].qiansan<=2000)c++;printf(printf(printf(!!!!!!〃顯示前三項(xiàng)工資在各個(gè)范圍內(nèi)的人數(shù)及所占人數(shù)的百分比over3000:%-7d%6d%%\n”,a,(a*100/p));2000?3000:%-7d%6d%%\n”,b,(b*100/p));1000?printf(printf(printf(!!!!!!〃顯示前三項(xiàng)工資在各個(gè)范圍內(nèi)的人數(shù)及所占人數(shù)的百分比over3000:%-7d%6d%%\n”,a,(a*100/p));2000?3000:%-7d%6d%%\n”,b,(b*100/p));1000?2000:%-7d%6d%%\n”,c,(c*100/p));printf("\n");getchar();system("cls"); 〃清屏printf("\n\n\n\n\n\n\n\n"); 〃退出系統(tǒng)的界面printf("\tprintf("\tprintf("\tprintf("\tprintf("\tprintf("\t****Thankyoufortheuseofstaffwagemanagementsystem!********Good-bye!**\n");**\n");**\n");**\n");**\n");**\n");f1(){f1(){printf("\t\t\n\n");getchar();printf("numnamejibengongzizhiwugongzijintieyiliaobaoxiangongjijin\n\n");f2(){printf("numnamejibengongzizhiwugongzijintieyiliaobaoxiangongjijinsum\n\n");input(inti) 〃將輸入的信息保存到結(jié)構(gòu)體中{scanf("%d%s%d%d%d%d%d”,&worker[i].num,worker[i].name,&worker[i].jibengongzi,&worker[i].zhiwugongzi,&worker[i].jintie,&worker[i].yiliaobaoxian,&worker[i].gongjijin);}output(inti) 〃輸出信息{printf("%-3d%-5s%-12d%-12d%-8d%-14d%-10d%-7d\n\n",worker[i].num,worker[i].name,worker[i].jibengongzi,worker[i].zhiwugongzi,worker[i].jintie,worker[i].yiliaobaoxian,worker[i].gongjijin,worker[i].sum);}select() 〃選擇函數(shù){inti;printf("\n\n");printf("\t\t\t*Successful!*\n");printf("\n\n");printf("Whatdoyouwanttodonow?\n\n1.Showalldata2.Back\n");〃選擇顯示信息或返回scanf("%d",&i);if(i==1)Show(); 〃返回到顯示函數(shù)elseif(i==2)menu(); 〃返回到菜單}save(intn) 〃向文件中輸入數(shù)據(jù){FILE*fp;〃定義一個(gè)文件指針inti;if((fp=fopen(”D:\\zggz.txt”,”wb”))==NULL)〃判斷打開(kāi)的寫(xiě)入文件是否為空{(diào)printf("\nCannotopenfile.\n");returnNULL;}for(i=0;i<n;i++)if(worker[i].num!=0)if(fwrite(&worker[i],sizeof(structworker),1,fp)!=1) 〃判斷是否寫(xiě)入了數(shù)printf("filewriteerror!\n"); 〃寫(xiě)入文件錯(cuò)誤fclose(fp);〃關(guān)閉文件}P(){FILE*fp; 〃定義一個(gè)文件指針inti;if((fp=fopen("D:\\zggz.txt","rb"))==NULL)〃判斷打開(kāi)的只讀文件是否為空{(diào)printf("\nCannotopenfile.\n");returnNULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(structworker),l,fp); 〃讀取文件fclose(fp); 〃關(guān)閉文件return(i-1);}四、調(diào)試分析1、 使用getchar()可以使字符一個(gè)個(gè)地存入緩沖區(qū)。2、 在刪除、修改、添加函數(shù)中save(保存)函數(shù),可以有針對(duì)性地保存需要保存的文件。3、 使用input(輸入)和output(輸出)的子函數(shù),可以避免多次寫(xiě)入信息的麻煩。4、 P()函數(shù)在保存刪除、修改后的人數(shù)中有很大的作用,在以后的調(diào)用保存的人數(shù)中起到了很大的作用5、 用數(shù)字代替需要選擇的選項(xiàng),避免了輸入字符的麻煩。 6、 該程序使用的是結(jié)構(gòu)體,沒(méi)有用到鏈表,所以在刪除數(shù)據(jù)后需要將后面的數(shù)據(jù)放到前面,故將第n+1個(gè)職工的信息賦給第n個(gè)職工。
五、用戶(hù)手冊(cè)1、 在進(jìn)入系統(tǒng)后顯示菜單。有輸入函數(shù)、修改函數(shù)、查找函數(shù)、添加函數(shù)、刪除函數(shù)、顯示函數(shù)、退出函數(shù)可供選擇。用戶(hù)可以依次用1至7,七個(gè)數(shù)字選擇需要進(jìn)行的操作(說(shuō)明:如果用戶(hù)第一次進(jìn)入該系統(tǒng),或以前進(jìn)入系統(tǒng)沒(méi)有保存數(shù)據(jù),需要選擇1即選擇輸入函數(shù)輸入數(shù)據(jù))。2、 在刪除、修改、添加信息完成后會(huì)詢(xún)問(wèn)用戶(hù)是否保存當(dāng)前的信息,用戶(hù)可根據(jù)自己的需要選擇是否保存信息。3、 在幾個(gè)函數(shù)最后會(huì)詢(xún)問(wèn)用戶(hù)顯示當(dāng)前的信息或是返回到菜單,用戶(hù)可以自己的需要選擇。 4、 用戶(hù)在選擇時(shí)需注意各個(gè)數(shù)字代表的字符。5、 用戶(hù)在輸入職工的人數(shù)后點(diǎn)擊enter鍵,如果依然停在當(dāng)前頁(yè)面,需注意所輸入的總職工人數(shù)是否超過(guò)了總?cè)藬?shù)N(該程序中N定義為100)。6、 注:職工工號(hào)為整型,不是字符型。六、測(cè)試數(shù)據(jù)菜單界面:If:.euwerethefirsttuenterpleaseselectInput!ern*-*If:.euwerethefirsttuenterpleaseselectInput!ern*-*Input?-9tModifySearchAddDelateShauExit?-9tInputyourchovseC1-7):
選擇1(輸入):outanupeople?2nmnctmejihengong呂:lsh^viuqDnqsLjmCxey^lxaabaoxxangongjxjinshctnKli128611858593904shctnKli1286118585939041954311Lwhatdoyou.返回菜單,選擇2(修改):choosethe udnttomudif;i:TOC\o"1-5"\h\zJOCJCJCXKNXJtJCJCJCJCJCKN雑JCJCJCJCJCJCKXJtJCJCJCJCJCJClCXJtJOCJCJCX素 *I.Eyn-ametonodifjj *2.旳numbertorwdify *JOCJtXNlOCXJtJCJCKXJCKNXJCJCXKJtJCKXJtMZKXJCJ(直ICXJtJOCJtXN:nput!?ourselection:1le-aseinputthename:zhangUhatdo■/ouw-anttoModify?JtJCJCJCJCJCJCKN雑JCJCJCJCJCJCKXJtJCJCJCJCJCJClCXJtJOCJCJCXlClCXJtJC暮**1.ndme 2.number斐簣3Jjibengongzi ^.zhiwugengzi**■se*5jjintie 6.jiiliaubaoxian**7.gongjijin**■sePleaseinputyourse1eelinn:3beforemodifjf:12Stchangeto:13B6Inuntnamejibengangzizhiwu^on^zijintieyi]iaabdDKiangonyjijinsumszhang13S6 了外 1?8 1B? 135 2134^dveit?I.Ves2.No1返回菜單,選擇3(查找):^boosetheu-a;,^auuanttosearch:JOCJCJCJCJCICXJtJCJCJCJCJCJCKHXJCJCJCJCJCJCICNJtJCJCJCJCJCICXNJtJCJCJCJCTOC\o"1-5"\h\z1_EjlndEnetosearch *8■旳numbertosearch ■*ee ■?JCKKJtKJtItiOtJCKJtJtJCJtJtXKICJtKKJtKKWJCJtJCJtJtKWXJtJCKJtK?le-aseinputsiourselection:1Pleaseinputthenunberzlnumnanejibengangzizhiuu^^ngzijintie}jiliaobauKianqungjijin sun1zhang13S£ 79。 19S109 13& 2134裝Successful!*Uhatdnyouuanttodonow?JShuvjalldata2.Bdck2返回菜單,選擇4(添加):ISowmanypeoplet!oyoxwanttoadd:1Pleaseinputtheirinforndti^n;fiUMnanejibengangzizhiuugongzijintieliaobaoKiangnngjijin3 岫ng S95 43? 99 64 73*Successful!■*四hatdo/quw^nttod?now?1.Showallddta2.Rack2返回菜單,選擇5(刪除):Choosethejjouuanitodelete.XJtJOCJtXNlOCXJCXXJ(直ICKNXJCJtXKJtKXJtJCXKXJCJtJOtXJCXKJt*■** nameladelete■?*** 2-Bvnumbertodelete■at*■*XJtJCXJIJCJIJOCXJCXXJIJIKKXXJCJIJCXJIlCXJtJCXJIXJCJIJOCXJCJCXJIinputj/ourselection:2Pleaseinputthenun:3nunnamejibengongzizhiwugongzijintieyilLaobdOMiangongjijinsun1zh^ng13S&歡198 1091翡2134Wli 110G伽135 9k11117M1Saveit?I.Ves2_No1返回菜單,選擇6(顯示):nunnanejibengongzizhiuugongzijintiegnnyjijinsum1zhang13S6 了地 19810J13521342li 1185 G髒 135時(shí)1U17網(wǎng)^averagesal^r^:1285 711 偵(qianmnxi-ang)renshubaifenbjover3。關(guān):& 0^2Di;r3nno:i 聽(tīng)関1聊葉的的” 5聯(lián)Ml124;■ressanjf toback.返回菜單,選擇7(退出):顯示保存的數(shù)據(jù):nunnamejibengongzizhiuugcngzijintie^ilidnitaoxiangangjijinsun1zh^ng13M了奴19810913521342li1185135941141TMJnaveragesalar^Z128571116610113Cqiansankiang)renshubaifenbiouet-訓(xùn)龍德㈱209dw3DflD:15D器葡叩囉由囑15網(wǎng)退出系統(tǒng)的界面:**Thankonfortheuseofstaffuagemanagenentsvsten!*■*■貝 NX** Good-bye! **七、附錄源程序#include"stdio.h"#defineN100#include"string.h"structworker{intnum;charname[20];intjibengongzi;intzhiwugongzi;intjintie;intyiliaobaoxian;intgongjijin;intqiansan;intsum;}worker[N];voidmenu。;voidInput。;voidModify。;voidSearch。;voidAdd();voidDelete();voidShow();voidExit();intmain(){system("cls");menu();}voidmenu(){intn;system("cls");printf("\n\n\n");printf("\t\t****\n");printf("\t\t**Ifyouwerethefirsttoenterthesystem**\n");printf("\t\t**pleaseselectInput!**\n");printf("\t\t****\n");printf("\t\t**1- Input**\n");printf("\t\t**2- Modify**\n");printf("\t\t**3- Search**\n");printf("\t\t**4- Add**\n");printf("\t\t**5- Delete**\n");printf("\t\t**6- Show**\n");printf("\t\t**7- Exit**\n");printf("\t\t****\n");printf("\t\t\n,printf("\n\n");printf("\t\tInputyourchoose(l-7):");scanf("%d",&n);if(n>=l&&nv=7){switch(n){case1:Input();break;case2:Modify();break;case3:Search();break;case4:Add();break;case5:Delete();break;case6:Show();break;case7:Exit();break;}}elsemenu。;}voidInput(){inti,p;clrscr();printf("\n\nHowmanypeople?(0-100):");scanf("%d",&p);if(p>=0&&pv=N){printf("\n\n");printf("Pleaseinputdata:\n");printf("\n");printf("numnamejibengongzizhiwugongzijintieyiliaobaoxiangongjijin\n\n");for(i=0;ivp;i++){input(i);worker[i].sum=worker[i].jibengongzi+worker[i].zhiwugongzi+worker[i].jintie-worker[i].yiliaobaoxian-worker[i].gongjijin;worker[i].qiansan=worker[i].jibengongzi+worker[i].zhiwugongzi+worker[i].jintie;}}elseInput();save(p);select();}voidModify(){inti,j=-l,d,k,t,n;charm[20];FILE*fp;system("cls");n=P();printf("\n\n");}}printf("Choosethewayyouwanttomodify:\n");printf("\n\nn);printf("\t\t****************************************\n");printf("\t\t**\n");printf("\t\t*1.Bynametomodify*\n");printf("\t\t**\n");printf("\t\t*2.Bynumbertomodify*\n");printf("\t\t**\n");printf("\t\t****************************************\n");printf("\ninputyourselection:");scanf("%d",&d);if(d!=l&&d!=2){printf("\ninputerror!Pressanykeytocontinue.");getchar();Modify();}elseif(d==1){do{printf("\nPleaseinputthename:");scanf("%s",m);for(i=0;ivn;i++)if(strcmp(m,worker[i].name)==O)j=i;if(J==-1)printf("\nNotfind!Pleaseinputagain!\n");}while(j==-1);}else{do{printf("\nPleaseinputthenum:");scanf("%d",&k);for(i=0;ivn;i++)if(k==worker[i].num)j=i;if(j==-1)printf("\nNotfind!Pleaseagain!\n");printf("\naftermodify:%d",worker[j].yiliaobaoxian);break;case7:printf("\nbeforemodify:%d”,worker[j].gongjijin);printf("\nchangeto:");scanf("%d”,&worker[j].gongjijin);printf("\naftermodify:%d",worker[j].gongjijin);break;default:printf("Error!choiceagain!!\n");break;}getchar();printf("\n");printf(numnamejibengongzizhiwugongzijintieyiliaobaoxiangongjijinsum\n\n");worker[j].sum=worker[j].jibengongzi+worker[j].zhiwugongzi+worker[j].jintie-worker[j].yiliaobaoxian-worker[j].gongjijin;output(j);printf("\nSaveit?\n\nl.Yes2.No\n");scanf("%d",&i);if(i==1)save(n);printf("\nPressanykeytoback!");getchar();menu();}voidSearch(){inti,j=-l,k,d,n;charm[20];n=P();system("cls");printf("Choosethewayyouwanttosearch:\n");printf("\n\n");printf("\t\t****************************************\n");*\n");*\n");*\n");*\n");*\n");printf("\t\t*printf("\t\t*printf("\t\t*printf("\t\t*printf("\t\t*printf("\t\t****************************************\n");*\n");*\n");*\n");*\n");*\n");printf("\t\t*printf("\t\t*printf("\t\t*printf("\t\t*printf("\t\t*1.Bynametosearch2.Bynumbertosearchprintf("\t\t****************************************\n");printf("\n\n");printf("Pleaseinputyourselection:");scanf("%d",&d);if(d==2)do}}printf("\nPleaseinputthenumber:");scanf("%dn,&k);for(i=0;ivn;i++){if(k==worker[i].num)j=i;}if(j==-1)printf("Notfind!Pleaseinputagain!\n");}while(j==-1);printf("\n");printf(numnamejibengongzizhiwugongzijintieyiliaobaoxiangongjijinsum\n\n");output(j);}elseif(d==1){do{printf("\nPleaseinputthename:");scanf("%s",m);for(i=0;ivn;i++)if(strcmp(m,worker[i].name)==0)j=i;if(j==-1)printf("Notfind!Pleaseinputagain!\n");}while(j==-1);printf("\n");printf("numnamejibengongzizhiwugongzijintieyiliaobaoxiangongjijinsum\n\n");output(j);}if(d!=1&&d!=2){printf("\nInputerror!Pressanykeytocontinue.");getchar();Search();}select();voidAdd(){inti,k,m,n;FILE*fp;system("clsn);n=P();printf("\n\nHowmanypeopledoyouwanttoadd:");scanf("%d",&m);k=m+n;if(k<=N){printf("\n\nPleaseinputtheirinformation:\n\n");printf("numnamejibengongzizhiwugongzijintieyiliaobaoxiangongjijin\n\n");for(i=n;ivk;i++){input(i);worker[i].sum=worker[i].jibengongzi+worker[i].zhiwugongzi+worker[i].jintie-worker[i].yiliaobaoxian-worker[i].gongjijin;}if((fp=fopen("D:\\zggz.txt”,"ab"))==NULL){printf("\nCannotopenfile.\n");getchar();menu();}for(i=n;ivk;i++)if(fwrite(&worker[i],sizeof(structworker),1,fp)!=1)printf("filewriteerror.\n");fclose(fp);select();}elseAdd();}voidDelete(){inti,j=-1,d,k,t,n;charm[20];FILE*fp;system("cls");n=P();fp=fopen("D:\\zggz.txt","rb");printf("\n\n");printf("Choosethewayyouwanttodelete:\n");printf("\n\n");printf("\t\t****************************************\n");printf("\t\t*printf("\t\t*printf("\t\t*printf("\t\t*printf("\t\t*1.Bynametodelete2.Bynumbertodelete*\n,*\n");*\n");*\n,*\n,printf("\t\t****************************************\n");printf("\ninputyourselection:");scanf("%d",&d);if(d!=1&&d!=2){printf("\ninputerror!Pressanykeytocontinue.");getchar();Delete();}elseif(d==1){do{printf("\nPleaseinputthename:");scanf("%s",m);for(i=0;ivn;i++)if(strcmp(m,worker[i].name)==O)j=i;if(j==-1)printf("\nNotfind!Pleaseagain!\n");}while(j==-1);}else{do{printf("\nPleaseinputthenum:");scanf("%d”,&k);for(i=0;ivn;i++)if(k==worker[i].num)j=i;if(j==-1)printf("\nNotfind!Pleaseagain!\n");gongjijingongjijingongjijingongjijinwhile(j==-1);}printf("\nn);printf("numnamejibengongzizhiwugongzijintieyiliaobaoxiansum\n\n");for(i=j;ivn-1;i++)worker[i]=worker[i+1];for(i=0;ivn-1;i++)output(i);printf("Saveit?\n\n1.Yes2.No\n");scanf("%d”,&i);if(i=1)save(n-1);printf("\nPressanykeytoback!");getchar();menu();}voidShow(){inti,p,a=0,b=0,c=0,j=0,k=0,l=0,m=0,n=0;p=P();system("cls");printf("numnamejibengongzizhiwugongzijintieyiliaobaoxiansum\n\n");for(i=0;ivp;i++)output(i);printf("\nnaveragesalary:\n");for(i=0;ivp;i++){j+=worker[i].jibengongzi;k+=worker[i].zhiwugongzi;l+=worker[i].jintie;m+=worker[i].yiliaobaoxian;n+=worker[i].gongjijin;}printf("%13d%11d%12d%7d%15d",j/p,k/p,l/p,m/p,n/p);printf("\n(qiansanxiang)renshubaifenbi\n");for(i=0;ivp;i++){if(worker[i].qiansan>3000)a++;elseif(worker[i].qiansan>=2000&&worker[i].qiansanv=3000)b++;elseif(worker[i].qiansan>=1000&&worker[i].qiansan<=2000)c++;}printf(" over3000:%-7d%6d%%\n",a,(a*100/p));printf(” 2000?3000:%-7d%6d%%\n”,b,(b*100/p));printf(" 1000~2000:%-7d%6d%%\n",c,(c*100/p));printf("\n");printf("Pressanykeytoback.");getchar();menu();}voidExit(){inti,p,a=0,b=0,c=0,j=0,k=0,l=0,m=0,n=0;p=P();system("cls");printf(numnamejibengongzizhiwugongzijintieyiliaobaoxiangongjijinsum\n\n");for(i=0;i<p;i++)output(i);printf("\nnaveragesalary:\n");for(i=0;i<p;i++){j+=worker[i].jibengongzi;k+=worker[i].zhiwugongzi;l+=worker[i].jintie;m+=worker[i].yiliaobaoxian;n+=worker[i].gongjijin;}printf("%13d%11d%12d%7d%15d",j/p,k/p,l/p,m/p,n/p);printf("\n(qiansanxiang)renshubaifenbi\n");for(i=0;i<p;i++){if(worker[i].qiansan>3000)a++;elseif(worker[i].qiansan>=2000&&worker[i].qiansan<=3000)b++;elseif(worker[i].qiansan>=1000&&worker[i].qiansan<=2000)c++;}printf(" over3000:%-7d%6d%%\n",a,(a*100/p));printf(" 2000?3000:%-7d%6d%%\n”,b,(b*100/p));printf(" 1000?2000:%-7d%6d%%\n",c,(c*100/p));printf("\nn);getchar();system("clsn);printf("\n\n\n\n\n\n\n\nn);printf("\t ** **\n");printf("\t **Thankyoufortheuseofstaffwagemanagementsystem! **\n");printf("\t ** **\n");printf("\t ** **\n");printf("\t** Good-bye! **\n");printf("\t ** **\n");printf("\t\t\n\n,getchar();input(inti){scanf("%d%s%d%d%d%d%d”,&worker[i].num,worker[i].name,&worker[i].jibengongzi,&worker[i].zhiwugongzi,&worker[i].jintie,&worker[i].yiliaobaoxian,&worker[i].gongjijin);}output(inti){printf("%-3d%-5s%-12d%-12d%-8d%-14d%-10d%-7d\n\n”,worker[i].num,worker[i].name,worker[i].jibengongzi,worker[i].zhiwugongzi,worker[i].jintie,worker[i].yiliaobaoxian,worker[i].gongjijin,worker[i].sum);}select(){inti;printf("\n\n");printf("\t\t\t*Successful!*\n");printf("\n\n");printf("Whatdoyouwanttodonow?\n\nl.Showalldata2.Back\n");scanf("%d",&i);if(i==1)Show();elseif(i==2)menu();save(intn){FILE*fp;inti;if((fp=fopen("D:\\zggz.txt”,"wb"))==NULL){printf("\nCannotopenfile.\n");returnNULL;}for(i=0;ivn;i++)if(worker[i].num!=O)if(fwrite(&worker[i],sizeof(structworker),1,fp)!=1)printf("filewriteerror!\n");fclose(fp);}P(){FILE*fp;inti;if((fp=fopen("D:\\zggz.txt”,"rb"))==NULL){printf("\nCannotopenfile.'n");returnNULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(structworker),1,fp);fclose(fp);return(i-1);
職工工資制度 (試行方案)一、 總則1.1為規(guī)范職員工資的確定及調(diào)整辦法等有關(guān)事項(xiàng),特制定本制度。1.2本制度適用于公司全體職員(即惠州本部膠駐外工作的職員)。本制度所指工資,是指每月定期發(fā)放的工資,不含獎(jiǎng)金和津貼事項(xiàng)(技術(shù)系列的項(xiàng)目津貼除外)。二、 工資結(jié)構(gòu) 2.1職員工資由固定工資、浮動(dòng)工資兩部門(mén)組成。2.2固定工資包括:基本工資、技能工資、住房補(bǔ)貼、醫(yī)療補(bǔ)貼。固定工資是根據(jù)職員的 職務(wù)、資歷、學(xué)歷、技能等因素確定的、相對(duì)固定的工作報(bào)酬。 2.3浮動(dòng)工資包括:考勤工資、績(jī)效工資、效益工資,項(xiàng)目開(kāi)發(fā)人員還有項(xiàng)目津貼。浮動(dòng)工資是根據(jù)員工考勤表現(xiàn)、工作績(jī)效及公司經(jīng)營(yíng)業(yè)績(jī)確定的、不固定的工資報(bào)酬,每月調(diào)整一次。 2.4項(xiàng)目津貼自研發(fā)項(xiàng)目經(jīng)總
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度國(guó)際進(jìn)口面條品質(zhì)認(rèn)證與采購(gòu)合同4篇
- 二零二五年度共有產(chǎn)權(quán)住房購(gòu)房合同范本(政府補(bǔ)貼)4篇
- 2025年度城市社區(qū)公共洗浴設(shè)施承包服務(wù)合同4篇
- 2025年度個(gè)人住宅租賃合同(含家具家電配套服務(wù))2篇
- 公寓租賃合同范本
- 甲乙雙方買(mǎi)賣(mài)合同范本
- 2024離婚合同模板:夫妻平等自愿解除婚姻關(guān)系版B版
- 2025年智能倉(cāng)儲(chǔ)廠(chǎng)房修建合同書(shū)(自動(dòng)化物流系統(tǒng))3篇
- 二零二五年度水塔供水設(shè)備研發(fā)與制造合同3篇
- 單立柱廣告牌出租合同
- 第十七章-阿法芙·I·梅勒斯的轉(zhuǎn)變理論
- 焊接機(jī)器人在汽車(chē)制造中應(yīng)用案例分析報(bào)告
- 合成生物學(xué)在生物技術(shù)中的應(yīng)用
- 中醫(yī)門(mén)診病歷
- 廣西華銀鋁業(yè)財(cái)務(wù)分析報(bào)告
- 無(wú)違法犯罪記錄證明申請(qǐng)表(個(gè)人)
- 大學(xué)生勞動(dòng)教育PPT完整全套教學(xué)課件
- 繼電保護(hù)原理應(yīng)用及配置課件
- 《殺死一只知更鳥(niǎo)》讀書(shū)分享PPT
- 蓋洛普Q12解讀和實(shí)施完整版
- 2023年Web前端技術(shù)試題
評(píng)論
0/150
提交評(píng)論