中南大學(xué)C語言程序設(shè)計實(shí)驗(yàn)——職工工資管理系統(tǒng)_第1頁
中南大學(xué)C語言程序設(shè)計實(shí)驗(yàn)——職工工資管理系統(tǒng)_第2頁
中南大學(xué)C語言程序設(shè)計實(shí)驗(yàn)——職工工資管理系統(tǒng)_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余19頁可下載查看

下載本文檔

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

文檔簡介

1、/* Note:Your choice is C IDE */#in elude "stdio.h"#i nclude "str in g.h"#include "conio.h"#in clude "stdlib.h"struct Message/*此結(jié)構(gòu)體用于存放職工信息以及創(chuàng)建鏈表*/char n ame30;int ID;int JBG Z;int ZWG Z;int JT;int YLBX;int GJJ;long int Total;float Sum_3;struct Message *n extPr

2、t; static *head,*Rec_ 仁NULL,*Rec_2=NULL, *Rec_3=NULL; /*此處創(chuàng)建一個表頭,以及三個用于恢復(fù)函數(shù)的靜態(tài)變量*/static float Sum_JBGZ=O,Sum_ZWGZ=O,Sum_JT=O,Sum_YLBX=O,Sum_GJJ=O;static float Average_JBG Z,Average_ZWG Z,Average_JT,Average_YLBX,Average_GJJ;void Input();/*此處聲明各一級函數(shù)*/void Output。;void Delete();void Add();void Recover

3、();void Modify。;void Search();void Statistic();struct Message *creat(struct Message *h);/* 此處聲明各二級函數(shù)*/void prin t_Message(struct Message *h);struct Message *del_Message(struct Message *h,char *str);struct Message *add_Message(struct Message *h,struct Message *a,char*strafter);struct Message *Recover

4、_Message(struct Message *h);struct Message *Modify_Message(struct Message *h,char *str);void Search_Message(struct Message *h);void Statistic_Message(struct Message *h);main()/*主函數(shù)為菜單頁*/char i;/*功能:調(diào)用各一級函數(shù)一級退出程序*/clrscr();gotoxy(27,9);prin tf("16 中南大學(xué)");gotoxy(27,11);prin tf("16職工工資管理

5、系統(tǒng)");gotoxy(27,13);printf("16設(shè)計者:劉 路");gotoxy(27,15);prin tf("16輸入任意鍵繼續(xù)n");getch();for(;)clrscr(); gotoxy(25,9);pri ntf("* * * * * * * gotoxy(25,10); prin tf("*a.gotoxy(25,11); printf(”*b.gotoxy(25,12); prin tf("*c.gotoxy(25,13); prin tf("*d.gotoxy(25,14)

6、; prin tf("*e.gotoxy(25,15); printf(”*f.gotoxy(25,16); prin tf("*g.gotoxy(25,17); printf(”*h.gotoxy(25,18); printf(”*i.gotoxy(25,19); prin tf("* gotoxy(25,20);菜單輸入記錄顯示記錄修改記錄查找記錄添加記錄刪除記錄恢復(fù)記錄統(tǒng)計數(shù)據(jù)退出程序請選擇a i *");pri ntf(' '* * * * * * * * * * * * * *" i=getch();if(i='

7、;i')break;else switch(i)case'a': In put();break; case'b':Output();break; case'c':Modify();break;/*調(diào)用記錄輸入函數(shù)*/*調(diào)用記錄顯示函數(shù)*/*調(diào)用記錄修改函數(shù)*/case'd':Search();break;/*調(diào)用記錄查找函數(shù)*/case'e':Add();break;/*調(diào)用記錄添加函數(shù)*/case'f':Delete();break;/*調(diào)用記錄刪除函數(shù)*/case'g':

8、Recover();break;/*調(diào)用記錄恢復(fù)函數(shù)*/case'h':Statistic();break;/* 調(diào)用記錄統(tǒng)計函數(shù) */void Input()/*定義輸入函數(shù)(一級)*/表*/head=NULL; head=creat(head);void Output。一定格式輸出所有職工工資信息*/clrscr();prin t_Message(head);void Delete()除任意職工工資信息并輸出刪除后的工資信息char n ame50,*del_Mes=n ame; clrscr();gotoxy(1,1);printf("請輸入姓名:n"

9、);scan f("%s", name);head=del_Message(head,del_Mes); clrscr();printf("刪除數(shù)據(jù)后:n");printf(prin t_Message(head);void Add()任意位置添加一條或多條職工工資信息*/char after_ name30,i;struct Message* p;clrscr();gotoxy(1,1);prin tf("n請輸入需要添加的信息n");/*主要功能:調(diào)用二級子函數(shù)創(chuàng)建鏈/*定義顯示函數(shù)(一級)*/*主要功能:調(diào)用二級子函數(shù)實(shí)現(xiàn)按/*

10、定義刪除函數(shù)(一級)*/*主要功能:調(diào)用二級子函數(shù)實(shí)現(xiàn)刪*/n");/*定義添加函數(shù)(一級)*/*主要功能:調(diào)用二級函數(shù)以實(shí)現(xiàn)在printf(”n");p=(struct Message*)malloc(sizeof (struct Message); if(p!=NULL)printf("請輸入姓名:n");scan f("%s",&p->n ame);printf("請輸入 ID:n");scan f("%d",&p->ID);printf("請輸入基本

11、工資:n");scan f("%d",&p->JBGZ);printf("請輸入職位工資:n");scan f("%d",&p->ZWGZ);printf("請輸入津貼:n");scan f("%d",&p->JT);printf("請輸入醫(yī)療保險:n");scan f("%d",&p->YLBX);printf("請輸入公積金:n");scan f("%d&q

12、uot;,&p->GJJ);p->Total=p->JBGZ+p->ZWGZ+p->JT-p->YLBX-p->GJJ; printf("總工資為:%dn",p->Total);prin tf("n輸入在哪個職工信息下方添加新信息:n");scan f("%s",after_ name);head=add_Message(head,p,after_ name);prin tf("n是否繼續(xù)添加? Y/N");i=getch();while (i!=N)prin

13、 tf("n請輸入你想要添加的信息n");printf("n");p=(struct Message*)malloc(sizeof (struct Message); if(p!=NULL)prin tf(" 請輸入姓名:n");scan f("%s",&p->n ame);printf("請輸入 ID:n");scan f("%d",&p->ID);printf("請輸入基本工資:n");scan f("%d&quo

14、t;,&p->JBGZ);printf("請輸入職位工資:n");scan f("%d",&p->ZWGZ);printf("請輸入津貼:n");scan f("%d",&p->JT);printf("請輸入醫(yī)療保險:n");scan f("%d",&p->YLBX);printf("請輸入公積金:n");/*定義記錄恢復(fù)/*主要功能:/*定義記錄修改/*主要功能:調(diào)/*定義記錄查找scan f(&q

15、uot;%d",&p->GJJ); p->Total=p->JBGZ+p->ZWGZ+p->JT-p->YLBX-p->GJJ; printf("總工資為:%ldn",p->Total);prin tf("n輸入在哪個職工信息下方添加新信息:n");scan f("%s",after_ name);head=add_Message(head,p,after_ name);prin tf("n是否繼續(xù)添加? Y/N");i=getch();clrscr

16、();gotoxy(1,1);printf("n添加后的信息為:n");printf("n");prin t_Message(head);void Recover()函數(shù)(一級)*/調(diào)用二級函數(shù)以實(shí)現(xiàn)恢復(fù)已刪除的信息*/clrscr();head=Recover_Message(head);gotoxy(1,4);printf(" 恢復(fù)成功!A_An");printf("n輸入任意鍵退出");getch();void Modify()函數(shù)(一級)*/用二級函數(shù)以實(shí)現(xiàn)修改任意職工的任意信息*/char n ame50

17、,*Mod_Message=n ame; clrscr();printf("請輸入需要修改信息的員工:n");scan f("%s", name); head=Modify_Message(head,Mod_Message); clrscr();printf("修改后的信息為:n");printf("n");prin t_Message(head);void Search()函數(shù)(一級)*/*主要功能:調(diào)用二級函數(shù)實(shí)現(xiàn)按照姓名或 ID通過關(guān)鍵字查找或精確查找的方式搜索職工信息*/clrscr();Search_Me

18、ssage(head);void Statistic。/*定義記錄統(tǒng)計函數(shù)(一級)*/*調(diào)用二級函數(shù)以實(shí)現(xiàn)以表格的形式輸出職工工資信息并統(tǒng)計前三項(xiàng)工資總額在一定范圍內(nèi)的人數(shù)及比例*/clrscr();Statistic_Message(head);printf("n輸入任意鍵退出");getch();struct Message *creat(struct Message *h)/* 定義創(chuàng)建鏈表函數(shù)(二級)*/char i;struct Message *p1,*p2;clrscr();p1=p2=(struct Message*)malloc(sizeof (struc

19、t Message);if(p2!=NULL)gotoxy(1,1);printf("請輸入姓名:n");scan f("%s",&p2-> name);printf("請輸入 ID:n");scan f("%d",&p2->ID);printf("請輸入基本工資:n");scan f("%d",&p2->JBGZ);printf("請輸入職位工資:n");scan f("%d",&p2

20、->ZWGZ);printf("請輸入津貼:n");scan f("%d",&p2->JT);printf("請輸入醫(yī)療保險:n");scan f("%d",&p2->YLBX);printf("請輸入公積金:n");scan f("%d",&p2->GJJ); p2->Total=p2->JBGZ+p2->ZWGZ+p2->JT-p2->YLBX-p2->GJJ;printf("總

21、工資為:%ldn",p2->Total);h=p2;p2->n extPrt=NULL;printf(”輸入s退出,輸入其他鍵繼續(xù) n");i=getch();while(i!='s')p2=(struct Message*)malloc(sizeof (struct Message); if(p2!=NULL) printf("請輸入姓名:n");scan f("%s",&p2-> name); printf("請輸入 ID:n");scan f("%d&quo

22、t;,&p2->ID);printf("請輸入基本工資:n");scan f("%d",&p2->JBGZ);printf("請輸入職位工資:n");scan f("%d",&p2->ZWGZ);printf("請輸入津貼:n");scan f("%d",&p2->JT);printf(”請輸入醫(yī)療保險:n");scan f("%d",&p2->YLBX);printf(”請輸

23、入公積金:n");scan f("%d",&p2->GJJ);p2->Total=p2->JBGZ+p2->ZWGZ+p2->JT-p2->YLBX-p2->GJJ;printf("總工資為:%ldn",p2->Total);p2-> nextPrt=NULL;p1-> nextPrt=p2;p1=p2;printf(”輸入s退出,輸入其他鍵繼續(xù).n");i=getch(); return h;/*定義記錄輸出津貼tb 醫(yī)void prin t_Message(str

24、uct Message *h)函數(shù)(二級)*/struct Message *temp;int i=0;temp=h;gotoxy(1,4);printf("IDtbb姓名 tbb 基本工資 t 職位工資 tbbbbbb療保險t公積金tb 總工資n");if (temp=NULL) pri ntf("沒有找到信息!n");while(temp!=NULL)i+;prin tf("%dtbb%stbb%dt%dt %dt%dt%dt%dn",temp->ID,temp->n ame,temp->JBG Z,temp-&

25、gt;ZWG Z,temp->JT,temp->YLBX,temp->GJJ,temp->Total); (Sum_JBGZ+=temp->JBG Z, Sum_ZWGZ+=temp->ZWG Z,Sum_JT+=temp- >JT,Sum_YLBX+=temp->YLBX,Sum_GJJ+=temp->GJJ);temp=temp->n extPrt; (Average_JBGZ=Sum_JBGZ/i,Average_ZWGZ=Sum_ZWGZ/i,Average_JT=Sum_JT/i,Av erage_YLBX=Sum_YLBX

26、/i,Average_GJJ=Sum_GJJ/i);prin tf(" 各項(xiàng)平均工資:tbb%.1ft%.1ft %.1ft%.1ft%.1fn",Average_JBG Z,Average_ZWG Z,Averag e_JT,Average_YLBX,Average_GJJ);printf(" 輸入任意鍵退出.");getch();struct Message *del_Message(struct Message *h,char *str)/* 定義記錄刪除函數(shù)(二級)*/struct Message *p1,*p2;p仁h;if(p1=NULL)p

27、rintf(" 沒有找到信息!n");return h;p2=p1-> nextPrt;if(!strcmp(p1-> name,str)Rec_2=p1;Rec_3=p2;h=p2;return h;while(p2!=NULL)if(!strcmp(p2->n ame,str)Rec_ 1=p1;Rec_2=p2;Rec_3=p2-> nextPrt;p1-> nextPrt=p2-> nextPrt;return h;elsep1=p2;p2=p2-> nextPrt;printf("刪除成功!A_A");

28、getch();return h;struct Message *add_Message(struct Message *h,struct Message *a,char*strafter)/*定義記錄添加函數(shù)(二級)*/struct Message *p1,*p2;p仁h;while(p1!=NULL)if(!strcmp(p1-> name,strafter)a-> nextPrt=p1-> nextPrt;p1- >n extPrt=a;return h;elsep1= p1-> nextPrt;return h;struct Message* Recove

29、r_Message(struct Message *h)/*定義記錄恢復(fù)函數(shù)(二級)*/if(Rec_ 1=NULL)h=Rec_2;Rec_2-> nextPrt=Rec_3;elseRec_1-> nextPrt=Rec_2;Rec_2-> nextPrt=Rec_3;return h;struct Message* Modify_Message(struct Message *h,char *str)/*定義記錄修改函數(shù)(二級)*/struct Message *p1;int i;p仁h;if(p1=NULL)prin tf("沒有找到信息!");r

30、eturn h;while(strcmp(p1-> name,str)p1= p1-> nextPrt;prin tf("請輸入需要修改的信息(序號):n");printf("1. 姓名2.ID 3.基本工資4.職務(wù)工資5.津貼6.醫(yī)療保險7.公積金8. 總工資n");scan f("%d",&i);switch(i)case 1:pri ntf("請輸入修改后的姓名:n");scan f("%s",&p1-> name);break;case 2:printf

31、("請輸入修改后的 ID : n");scan f("%d",&p1->ID);break;case 3:pri ntf("請輸入修改后的基本工資:n");scan f("%d",&p1->JBGZ);break;case 4:pri ntf(”請輸入修改后的職務(wù)工資:n");sca nf("%d",&p1->ZWGZ);break;case 5:pri ntf("請輸入修改后的津貼:n");scan f("%d&

32、quot;,&p1->JT);break;case 6:pri ntf(”請輸入修改后的醫(yī)療保險:n");scan f("%d",&p1->YLBX);break;case 7:pri ntf("請輸入修改后的公積金:n");scan f("%d",&p1->GJJ);break;case 8: pri ntf("請輸入總工資:n");scan f("%d",&p1->Total);break;printf("n修改成功

33、!A_An輸入任意鍵查看結(jié)果.");getch();return h;void Search_Message(struct Message *h)/*定義記錄搜索函數(shù)(二級)*/struct Message* p1;int a,b,i,u, n=0,x 1= 0,x2,x3=0,x4=0,x5,x6,w1=1,w2=1,w3=0;char n ame50;p仁h;if (p 1=NULL) printf(”沒有找到信息!");printf("請選擇查找方式:1.按姓名查找2.按ID查找n");scan f("%d",&a);p

34、rintf("請選擇搜索方式:1.按關(guān)鍵字搜索2.精確搜索n");scan f("%d",&b);if(a=1 &&b=1)printf("請輸入姓名:n");scan f("%s", name);while(p1!=NULL)for(i=0; namei!='O'i+)for(u=0;p1-> nameu!='O'u+)if (n amei=p1- >n ameu) n+;if (2* n>=strle n(n ame)printf(&qu

35、ot;IDtbb 姓名 tbb 基本工資 t 職位工資 tbbbbbb tb 醫(yī)療保險t公積金tb 總工資n");prin tf("%dtbb%stbb%dt%dt %dt%dt%dt%dn",p1->ID,p1->n ame,p1->JBG Z, p1->ZWG Z, p1->JT,p1->YLBX,p1->GJJ,p1->Total);p1= p1-> nextPrt;p仁h;printf("n輸入任意鍵退出");getch();if(a=1 &&b=2)printf(&

36、quot;請輸入姓名:n");scan f("%s", name);while(p1!=NULL)if(!strcmp(p1- >n ame ,n ame)printf("IDtbb 姓名 tbb 基本工資 t 職位工資 tbbbbbb tb 醫(yī)療保險t公積金tb 總工資n");prin tf("%dtbb%stbb%dt%dt %dt%dt%dt%dn",p1->ID,p1->n ame,p1->JBG Z, p1->ZWG Z, p1->JT,p1->YLBX,p1->GJ

37、J,p1->Total);津貼津貼p1= p1-> nextPrt; p仁h; prin tf("n getch(); if(a=2&&b=1)printf(" 請輸入 ID: n");scan f("%d", &x1);x2=x1;while(x2!=0)x2=x2/10;if(x2!=0)w1+;/*記錄輸入數(shù)據(jù)的位數(shù) w1*/while(p1!=NULL)x6=x1; /*用x6暫時存儲輸入的數(shù)據(jù)*/for(i=1;iv=w1;i+)x3=x6%10;x5=p1->ID;while(x5!=0)

38、x5=x5/10;if(x5!=0) w2+;x5=1;x4=p1->ID;/*/*x3/*x4for(u=1;u<=w2;u+) /*if(x4%10)=x3) /*執(zhí)行w1次循環(huán)*/為x6的末位數(shù)*/*記錄鏈表中某一節(jié)點(diǎn)位數(shù)*/暫時存儲鏈表中某一節(jié)點(diǎn)的ID*/ 執(zhí)行w2次循環(huán)*/判斷x4的末位是否等于x3,若相等,則跳出循 環(huán),繼續(xù)循環(huán)以判斷該節(jié)點(diǎn)中是否還有輸入數(shù)據(jù)中的其他數(shù)字*/w3+;/*某節(jié)點(diǎn)的ID中,只要存在輸入數(shù)據(jù)中的某一位數(shù)字,則w3增加1*/break;x4=x4/10;/* 判斷x4的末位是否等于x3,若不相等,則去掉 x4的末位數(shù)*/x6=x6/10;/*去掉

39、x6的末位數(shù),繼續(xù)循環(huán)判斷該節(jié)點(diǎn)中是否還有輸入數(shù)據(jù)中的其他數(shù)據(jù)*/w2=1;/*恢復(fù)w2的初值,否則位數(shù)將繼續(xù)累加 */if(w3=w1)/*如果w3與w1相等則表示該節(jié)點(diǎn)的ID中包含有輸入數(shù)據(jù)中的所有數(shù)字,貝慚出該節(jié)點(diǎn)的數(shù)據(jù)*/printf("IDtbb姓名 tbb基本工資 t 職位工資 tbbbbbb 津貼tb 醫(yī)療保險t公積金tb 總工資n");prin tf("%dtbb%stbb%dt%dt %dt%dt%dt%dn",p1->ID,p1->n ame,p1->JBG Z, p1->ZWG Z, p1->JT,p1

40、->YLBX,p1->GJJ,p1->Total);p1=p1-> nextPrt; /*節(jié)點(diǎn)位置向后移動一位,繼續(xù)循環(huán)以判斷是否符合輸出要求*/;p仁h;printf("n輸入任意鍵退出");getch();if(a=2&&b=2)printf("請輸入 ID:n");scan f("%d", &x1);while(p1!=NULL)if(p1->ID=x1)printf("IDtbb姓名 tbb基本工資 t 職位工資 tbbbbbb 津貼tb 醫(yī)療保險t公積金tb 總

41、工資n");prin tf("%dtbb%stbb%dt%dt %dt%dt%dt%dn",p1->ID,p1->n ame,p1->JBG Z, p1->ZWG Z, p1->JT,p1->YLBX,p1->GJJ,p1->Total);p1= p1-> nextPrt;p1=h;printf("n輸入任意鍵退出 ”);getch();/*定義記錄統(tǒng)計函void Statistic_Message(struct Message *h) 數(shù)*/struct Message *p1;int i=0,a1

42、=0,b1=0,c1=0;float a2,b2,c2;p仁h;printf(”i111rn號111printf(" | ID號丨 姓名 基本工資職務(wù)工資丨津貼醫(yī)療保險公積金I總 工資n");printf(" |111HI11while(p1!=NULL)i+;printf("|%dt I %st bbbbbbbb|%dtbbbb I %dt |%dt I %dtI %dtbbbbbb %ld|n",p1->ID,p1-> name,p1->JBG Z, p1->ZWG Z,p1->JT,p1->YLBX,p

43、1->GJJ,p1->Total);printf(" |111HnI11(Sum_JBGZ+=p1->JBG Z, Sum_ZWGZ+=p1->ZWG Z, Sum_JT+=p1->JT,Sum_YLBX+=p1- >YLBX,Sum_GJJ+=p1->GJJ);p1= p1-> nextPrt;(Average_JBGZ=Sum_JBGZ/i,Average_ZWGZ=Sum_ZWGZ/i,Average_JT=Sum_JT/i,Av erage_YLBX=Sum_YLBX/i,Average_GJJ=Sum_GJJ/i);printf("|n");printf(" |111HnI11prin tf(" | 各項(xiàng)平均工資|%.1ftbbbb| %.1ft%.1ftb%.1ftbbbb%.1ftbbbbbb| tbbn",Average_JBG Z,Average_ZWG Z,Average_JT,Average_YLBX,Average_GJJ);prin tf("b 111l11Lp仁h;while(p1!=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論