版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> C語言設(shè)計報告</b></p><p><b> 題目:工資管理系統(tǒng)</b></p><p> 學(xué)院: 化學(xué)工程學(xué)院</p><p><b> 專業(yè):制藥工程</b></p><p><b> 班級: </b><
2、/p><p><b> 題目:工資管理系統(tǒng)</b></p><p> 一、選題背景:工資管理是一個很實用的系統(tǒng),有一個這樣的系統(tǒng)可以有效的減少不必要的操作,真正的提高工作效率,正因為這樣我才選擇了它。</p><p> 二、設(shè)計思路:我的工資管理系統(tǒng)有17個選項,可以說功能十分強(qiáng)大??梢凿浫胄彰兔總€人的工資,也可以有效的計算每個人的工資,等
3、到真正需要時就可以很方便的將其調(diào)用出來,還可以計算每個人的稅金。</p><p><b> 三、所用知識:</b></p><p> 應(yīng)用二維數(shù)組;調(diào)用函數(shù);應(yīng)用了順序語句,循環(huán)語句for,選擇語句if ... else ,和while語句,break語句以及邏輯運算及函數(shù)調(diào)用。</p><p> 主要解決問題的方法:</p&g
4、t;<p> 職工的工資發(fā)放問題,更加的方便了工資的管理和發(fā)放,不易出現(xiàn)錯誤。</p><p><b> 四、流程圖:</b></p><p><b> Y </b></p><p><b> N</b></p><p><b> Y</
5、b></p><p><b> N</b></p><p><b> 五、程序清單:</b></p><p> #include "stdio.h、、" </p><p> #include "bios.h" </p>&l
6、t;p> #include "dos.h" </p><p> #include "conio.h" </p><p> #include "stdlib.h" </p><p> #include "string.h" </p><p&
7、gt; #include "mem.h" </p><p> #include "ctype.h" </p><p> #include "alloc.h" </p><p> typedef struct z1 </p><p><b> {</
8、b></p><p> char no[11]; </p><p> char name[15]; </p><p> float jbgz; </p><p> float koukuan; </p><p> float yfgz; </p><p>
9、float shuijin; </p><p> float sfgz; </p><p> struct z1 *prior;</p><p> struct z1 *next;</p><p> }SALARY; </p><p> struct z1 *First; </p>
10、;<p> struct z1 *Last; </p><p> void init(); </p><p> void create(); </p><p> void calc(); </p><p> void delete(); </p><p> void searc
11、h(); </p><p> void save(); </p><p> void load(); </p><p> void computer(); </p><p> void insert(); </p><p> void append(); </p><p> v
12、oid copy(); </p><p> void sort(); </p><p> void index(); </p><p> void total(); </p><p> void list(); </p><p> void print(SALARY *p); </p>
13、<p> void display(); </p><p> float fax(float x); </p><p> int menu_select(); </p><p><b> main()</b></p><p><b> {</b></p><
14、;p><b> int i;</b></p><p><b> clrscr();</b></p><p><b> for(;;)</b></p><p><b> {</b></p><p> switch(menu_select())
15、 </p><p><b> {</b></p><p> case 0:init();break; </p><p> case 1:create();break; </p><p> case 2:list();break; </p><p> case 3:displa
16、y();break; </p><p> case 4:calc();break; </p><p> case 5:search();break; </p><p> case 6:delete();break; </p><p> case 7:insert();break; </p><p>
17、 case 8:append();break; </p><p> case 9:save();break; </p><p> case 10:load(); break; </p><p> case 11:copy();break; </p><p> case 12:sort();break; </p>
18、<p> case 13:computer();break;</p><p> case 14:index();break; </p><p> case 15:total();break; </p><p> case 16:exit(0); </p><p><b> }</b></
19、p><p><b> }</b></p><p><b> }</b></p><p> /*菜單函數(shù),函數(shù)返回值為整型,代表所選的菜單項*/</p><p> menu_select()</p><p><b> {</b></p>
20、<p> char *f[]= { /*定義菜單字符串?dāng)?shù)組*/</p><p> "**************MENU*************", /*菜單的標(biāo)題行*/</p><p> " 0. init list", /*初始化雙鏈表*/</p><p> " 1. Enter l
21、ist", /*輸入數(shù)據(jù),創(chuàng)建雙鏈表*/</p><p> " 2. List all \n", /*顯示所有記錄*/</p><p> " 3. Display record by step", /*顯示單條記錄*/</p><p> " 4. Calc the salary", /*計
22、算實發(fā)工資*/</p><p> " 5. Search record on name", /*查找記錄*/</p><p> " 6. Delete a record", /*刪除記錄*/</p><p> " 7. Insert record to list", /*插入記錄*/</p>
23、;<p> " 8. Append record to file", /*追加記錄*/</p><p> " 9. Save data to the file", /*保存文件*/</p><p> " 10. Load data from the file",/*讀取文件*/</p><
24、;p> " 11. Copy the file to new file", /*復(fù)制文件*/</p><p> " 12. Sort on sfgz", /*排序*/</p><p> " 13. Computer ticket number", /*計算所需票面數(shù)*/</p><p> &
25、quot; 14. Index on number", /*索引*/</p><p> " 15. Total on number", /*分類合計*/</p><p> " 16. Quit" }; /*退出*/</p><p> char s[80];</p><p><
26、b> int i;</b></p><p> int key=0; /*記錄所壓鍵值*/</p><p><b> int c=0;</b></p><p> gotoxy(1,25); /*移動光標(biāo)*/</p><p> printf("press any key enter m
27、enu......\n");/*壓任意鍵進(jìn)入主菜單*/</p><p><b> getch();</b></p><p> clrscr(); /*清屏*/</p><p> textcolor(YELLOW); /*設(shè)置文本顏色為黃色*/</p><p> textbackground(BLUE)
28、; /*設(shè)置背景顏色為蘭色*/</p><p> gotoxy(10,2);</p><p> putch(0xda); /*輸出左上角邊框┏*/</p><p> for(i=1;i<44;i++)</p><p> putch(0xc4); /*輸出上邊框水平線*/</p><p> putch(
29、0xbf); /*輸出右上角邊框 ┓*/</p><p> for(i=3;i<22;i++)/*輸出左右兩邊的垂直線*/</p><p><b> {</b></p><p> gotoxy(10,i);putch(0xb3);</p><p> gotoxy(54,i);putch(0xb3);&l
30、t;/p><p><b> }</b></p><p> gotoxy(10,22);putch(0xc0); /*輸出左上角邊框┗*/</p><p> for(i=1;i<44;i++)</p><p> putch(0xc4); /*輸出下邊框水平線*/</p><p> pu
31、tch(0xd9); /*輸出右下角邊框┛*/</p><p> window(11,3,53,21); /* 制作顯示菜單的窗口,大小根據(jù)菜單條數(shù)設(shè)計*/</p><p> clrscr(); /*清屏*/</p><p> for(i=0;i<18;i++)</p><p><b> {</b>&
32、lt;/p><p> gotoxy(10,i+1);</p><p> cprintf("%s",f[i]); /*輸出菜單項數(shù)組*/</p><p><b> }</b></p><p><b> i=1;</b></p><p> gotoxy(
33、10,2); /*設(shè)置默認(rèn)選項在第一項*/</p><p> textbackground(LIGHTGREEN);/*設(shè)置背景顏色為淺綠*/</p><p> cprintf("%s",f[1]); /*輸出菜單項,表示選中*/</p><p> gotoxy(10,2); /*移動光標(biāo)到菜單的第一項*/</p>&l
34、t;p> while(key!=13) /*所壓鍵不是回車鍵時*/</p><p><b> {</b></p><p> while(bioskey(1)==0); /*查詢是否壓下了一個鍵*/</p><p> key=bioskey(0); /*返回下一個在鍵盤壓下的鍵*/</p><p>
35、 key=key&0xff?key&0xff:key>>8; /*對所壓的鍵進(jìn)行判斷*/</p><p> gotoxy(10,i+1);</p><p> textbackground(BLUE);/*設(shè)置背景顏色為藍(lán)色*/</p><p> cprintf("%s",f[i]); /*輸出菜單項*/<
36、;/p><p> if(key==72) i=i==1?17:i-1; </p><p> if(key==80)i=i==17?1:i+1;</p><p> gotoxy(10,i+1); /*光標(biāo)移動i的下一項*/</p><p> textbackground(LIGHTGREEN); /*將背景顏色設(shè)為淺綠*/</p>
37、;<p> cprintf("%s",f[i]); /*輸出菜單項*/</p><p> c=i-1; /*給代表菜單選項的整數(shù)賦值*/</p><p><b> }</b></p><p> textbackground(BLACK); /*設(shè)置背景顏色為黑色*/</p><
38、p> window(1,1,80,25); /*恢復(fù)原窗口大小*/</p><p> return c; /*返回代表菜單選項的整數(shù)值*/</p><p><b> }</b></p><p><b> /*初始化函數(shù)*/</b></p><p> void init()<
39、/p><p><b> {</b></p><p> First=NULL;</p><p> Last=NULL;</p><p><b> }</b></p><p> /*輸入數(shù)據(jù),創(chuàng)建雙鏈表*/</p><p> void create
40、()</p><p><b> {</b></p><p> int x; /*記錄行坐標(biāo)*/</p><p> int i; /*記錄輸入記錄數(shù)*/</p><p> int flag=0; /*做結(jié)束標(biāo)記*/</p><p> float temp; /*定義臨時變量*/<
41、/p><p> SALARY *info,*p; /*定義臨時變量*/</p><p> if(First!=NULL)</p><p> init();/*如果頭指針為空,調(diào)用初始化函數(shù)*/</p><p> p=First; /*從頭指針開始*/</p><p><b> for(;;)</b
42、></p><p><b> {</b></p><p> if(flag==1)</p><p> break; /*如果flag=1,結(jié)束輸入*/</p><p><b> i=0;</b></p><p> x=0; /*確定移動的行坐標(biāo)*/<
43、/p><p> clrscr(); /*清屏*/</p><p> gotoxy(1,3);</p><p> printf("*************gongziguanli*************");/*輸出標(biāo)題*/</p><p> gotoxy(1,4);</p><p> pr
44、intf(" --Enter @ end--");/*提示輸入@結(jié)束*/</p><p> gotoxy(1,5);</p><p> printf("|------------------------------------|");/*輸出表格的起始線*/</p><p> g
45、otoxy(1,6);</p><p> printf("| no | name | jbgz |");/*輸出字段標(biāo)題,注意空格數(shù)*/</p><p><b> for(;;)</b></p><p><b> {</b></p><p&g
46、t; gotoxy(1,7+x);</p><p> printf("|----------|----------------|--------|");/*輸出表格的水平線*/</p><p> info=(SALARY *)malloc(sizeof(SALARY));/*申請一個記錄空間*/</p><p><b> if(
47、!info)</b></p><p><b> {</b></p><p> printf("\nout of memory");/*如沒有得到空間,輸出內(nèi)存溢出信息*/</p><p> exit(0);/*退出程序*/</p><p><b> }</b>
48、</p><p> info->next=NULL;/*新結(jié)點的后繼為空*/</p><p> info->prior=NULL;/*新結(jié)點的前驅(qū)為空*/</p><p> gotoxy(1,8+x);printf("|"); /*輸出數(shù)據(jù)間的分割線*/</p><p> gotoxy(12,8+x);
49、printf("|");</p><p> gotoxy(29,8+x);printf("|");</p><p> gotoxy(38,8+x);printf("|");</p><p> gotoxy(2,8+x);/*光標(biāo)到輸入編號位置*/</p><p> input
50、s(info->no,10);/*輸入編號,并驗證長度不超過10*/</p><p> if(info->no[0]=='@')</p><p><b> {</b></p><p><b> flag=1;</b></p><p><b> break
51、;</b></p><p> } /*編號首字符為@結(jié)束輸入*/</p><p> gotoxy(13,8+x); /*光標(biāo)到輸入姓名位置*/</p><p> inputs(info->name,14); /*輸入姓名,并驗證長度不超過14*/</p><p> gotoxy(30,8+x); /*光標(biāo)到輸入基本
52、工資位置*/</p><p> scanf("%f",&temp); /*輸入基本工資到臨時變量*/</p><p> info->jbgz=temp; /*基本工資賦值*/</p><p> info->koukuan=0; /*初始扣款為0,待計算工資時輸入*/</p><p> info-
53、>sfgz=0; /*初始實發(fā)工資為0,待計算工資時計算*/</p><p> info->shuijin=0; /*初始稅金為0,待計算工資時計算*/</p><p> info->yfgz=0; /*初始應(yīng)發(fā)工資為0,待計算工資時計算*/</p><p> if(p==NULL)/*如果p為空,說明輸入的是第一個結(jié)點*/</p>
54、;<p><b> {</b></p><p> First=Last=info;/*頭指針和尾指針*/</p><p> First->prior=NULL; /*頭指針的前驅(qū)是空*/</p><p> Last->next=NULL; /*尾指針的后繼是空*/</p><p><
55、;b> }</b></p><p> else /*插入的結(jié)點不是第一結(jié)點,則插入在頭結(jié)點之前*/</p><p><b> {</b></p><p> info->next=p;/*新結(jié)點的后繼指向原來的頭結(jié)點*/</p><p> info->prior=p->prio
56、r;/*新結(jié)點的前驅(qū)指向原來的頭結(jié)點的前驅(qū)*/</p><p> p->prior=info;/*原來結(jié)點的前驅(qū)指向新結(jié)點*/</p><p><b> }</b></p><p> p=info; /*新結(jié)點變?yōu)閜結(jié)點,暫時的頭結(jié)點*/</p><p> First=info; /*新結(jié)點變?yōu)轭^結(jié)點*/
57、</p><p> x+=2; /*因為水平線,將光標(biāo)下移兩行*/</p><p> gotoxy(1,8+x);</p><p> i++; /*輸入記錄數(shù)加1*/</p><p> if(i%9==0)</p><p> break; /*輸入9個記錄,換一頁輸入*/</p><
58、;p><b> }</b></p><p> gotoxy(1,8+x);</p><p><b> }</b></p><p> printf("|----------|----------------|--------|");/*輸出結(jié)尾水平線*/</p><p&g
59、t;<b> }</b></p><p> /*字符串輸入和驗證函數(shù)*/</p><p> inputs(char *s, int count)</p><p><b> {</b></p><p> char p[255];</p><p><b>
60、do{</b></p><p> scanf("%s",p);/*輸入字符串*/</p><p> if(strlen(p)>count)printf("\n too long! \n");/*進(jìn)行長度校驗,超過count值重輸入*/</p><p> }while(strlen(p)>count
61、);</p><p> strcpy(s,p); /*將輸入的字符串拷貝到字符串s中*/</p><p><b> }</b></p><p><b> /*顯示鏈表*/</b></p><p> void list()</p><p><b> {<
62、;/b></p><p> int i=0,n; /*記錄輸出行數(shù)*/</p><p> SALARY *p; /*定義移動指針*/</p><p> clrscr(); /*清屏*/</p><p> p=First; /*從頭指針開始*/</p><p> while(i%10==0&
63、&p!=NULL) /*外循環(huán)控制換頁*/</p><p><b> {</b></p><p> i=0; /*記錄一頁的輸出行數(shù)*/</p><p> clrscr(); /*清屏*/</p><p> printf("\n\n\n"); /*換行三次*/<
64、/p><p> printf("*************************************SALARY***********************************\n"); /*輸出大標(biāo)題*/</p><p> printf("|nO | name | jbgz | koukuan | y
65、fgz | shuijin | sfgz |\n"); /*輸出字段標(biāo)題*/</p><p> printf("|----------|---------------|---------|---------|---------|---------|---------|\n"); /*輸出水平線*/</p><p> while(p!=NULL)
66、 /*當(dāng)p不為空時*/</p><p><b> {</b></p><p> printf("|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|\n",</p><p> p->no,p->name,p->jbgz,p->koukuan,p->yfg
67、z,p->shuijin,p->sfgz);</p><p> p=p->next; /*指針后移*/</p><p> i++; /*輸出行數(shù)加1 */</p><p> if(i%10==0)</p><p> break; /*如果滿10行,跳出內(nèi)循環(huán)*/</p><p><
68、;b> }</b></p><p> printf("****************************************end***********************************\n"); /*輸出本頁的結(jié)束行*/</p><p> printf("Press any key congtinue...\
69、n");</p><p> getch(); /*輸出一頁暫停一下,壓任意鍵繼續(xù)*/</p><p> } /*返回到外循環(huán),準(zhǔn)備下一頁的輸出*/</p><p><b> }</b></p><p> /*單條顯示記錄*/</p><p> void display()&l
70、t;/p><p><b> {</b></p><p> int ch; /*菜單選項字符*/</p><p> SALARY *p; /*定義臨時指針*/</p><p> clrscr(); /*清屏*/</p><p> p=First; /*從頭指針開始*/</p&g
71、t;<p> if(p==NULL) /*指針為空,即鏈表為空,返回主函數(shù)*/</p><p><b> {</b></p><p> printf("record is empty!\n");</p><p><b> return;</b></p><p&
72、gt;<b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> print(p); /*調(diào)用輸出函數(shù)顯示頭結(jié)點信息*/</p><p> for(;;) /*循環(huán)開始*/</p>&l
73、t;p><b> {</b></p><p> printf("\n\n0. Quit 1. Prior 2. Next 3. First 4.Last \n\n");</p><p> /*菜單項Quit退出 Prior前驅(qū) Next后繼 First第一條 Last最后一條*/</p>
74、;<p> printf("\nplease select 0~4:"); /*提示輸入菜單選項0~4*/</p><p> scanf("%d",&ch); /*輸入菜單選項0~4*/</p><p> if(ch==0) break; /*如果選項為0,退出*/</p><p> switc
75、h(ch) /*開關(guān)語句根據(jù)選項字符判斷*/</p><p><b> {</b></p><p> case 1:p=p->prior;if(p==NULL)p=First;break; /*指向前驅(qū),沒有前驅(qū)指向第一個*/</p><p> case 2:p=p->next;if(p==NULL) p=Last;br
76、eak; /*指向后繼,沒有后繼指向最后一個*/</p><p> case 3:p=First;break; /*指向第一個結(jié)點*/</p><p> case 4:p=Last;break; /*指向最后一個結(jié)點*/</p><p><b> }</b></p><p> print(p); /*調(diào)用輸出
77、函數(shù)顯示指針?biāo)附Y(jié)點信息*/</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> /*輸出指針?biāo)附Y(jié)點信息*/</p><p> void print(SALARY
78、 *p)</p><p><b> {</b></p><p> if(p) /*如果指針不為空,則顯示信息*/</p><p><b> {</b></p><p> clrscr(); /*清屏*/</p><p> printf("\n\n\n
79、"); /*換行*/</p><p> printf("************************************SALARY************************************\n"); /*輸出標(biāo)題信息*/</p><p> printf("|no | name | j
80、bgz | koukuan| yfgz | shuijin | sfgz |\n"); /*輸出字段標(biāo)題*/</p><p> printf("|----------|---------------|---------|---------|---------|---------|---------|\n"); /*輸出分割線*/</p><p&g
81、t; printf("|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|\n", p->no,p->name,</p><p> p->jbgz,p->koukuan,p->yfgz,p->shuijin,p->sfgz);/*輸出結(jié)點信息*/</p><p> printf("
82、;***************************************end***************************** *******\n"); /*輸出結(jié)束標(biāo)記*/</p><p><b> }</b></p><p><b> }</b></p><p> /*計算實發(fā)工資*
83、/</p><p> void calc()</p><p><b> {</b></p><p> int x; /*行坐標(biāo)*/</p><p> int i=0; /*記錄數(shù)*/</p><p> float temp; /*臨時變量扣款*/</p><p>
84、 SALARY *p; /*移動指針*/</p><p> clrscr(); /*清屏*/</p><p> p=First; /*從頭指針開始*/</p><p> while(p!=NULL) /*當(dāng)p不為空時,也就是有記錄時,外循環(huán)控制換頁*/</p><p><b> {</b></p
85、><p><b> x=0;</b></p><p><b> clrscr();</b></p><p> gotoxy(1,3);</p><p> printf("***************************gongziguanli*******************
86、*****************"); /*輸出標(biāo)題*/</p><p> gotoxy(1,5);</p><p> printf("|--------------------------------------------------------------------------|");</p><p> gotoxy
87、(1,6);/*下面輸出字段標(biāo)題*/</p><p> printf("| no | name | jbgz | koukuan | yfgz |shuijin | sfgz |");</p><p> while(p!=NULL) /*當(dāng)p不為空時,也就是有記錄時,內(nèi)循環(huán)控制處理9條*/</p><
88、p><b> {</b></p><p> gotoxy(1,7+x);</p><p> printf("|----------|----------------|--------|----------|--------|--------|--------|");</p><p> gotoxy(1,8+x)
89、;printf("|");</p><p> gotoxy(12,8+x);printf("|");</p><p> gotoxy(29,8+x);printf("|");</p><p> gotoxy(38,8+x);printf("|");</p><p
90、> gotoxy(49,8+x);printf("|");</p><p> gotoxy(58,8+x);printf("|");</p><p> gotoxy(67,8+x);printf("|");</p><p> gotoxy(76,8+x);printf("|"
91、;);</p><p> gotoxy(2,8+x);</p><p> printf("%-10s",p->no); /*輸出編號*/</p><p> gotoxy(13,8+x);</p><p> printf("%-15s",p->name); /*輸出姓名*/</p
92、><p> gotoxy(30,8+x);</p><p> printf("%.2f",p->jbgz); /*輸出基本工資*/</p><p> gotoxy(39,8+x);</p><p> scanf("%f",&temp); /*輸入扣款*/</p>&l
93、t;p> p->koukuan=temp; /*扣款字段賦值*/</p><p> p->yfgz=p->jbgz-p->koukuan; /*計算應(yīng)發(fā)工資=基本工資-扣款*/</p><p> gotoxy(50,8+x);</p><p> printf("%.2f",p->yfgz); /*輸出
94、應(yīng)發(fā)工資*/</p><p> gotoxy(59,8+x);</p><p> p->shuijin=(p->yfgz-1000)*fax(p->yfgz); /*否則按稅率計算稅金*/</p><p> printf("%.2f",p->shuijin); /*輸出稅金*/</p><p&g
95、t; gotoxy(68,8+x);</p><p> p->sfgz=p->yfgz-p->shuijin; /*計算實發(fā)工資*/</p><p> printf("%-8.2f",p->sfgz); /*輸出實發(fā)工資*/</p><p> x+=2; /*行坐標(biāo)下移兩行*/</p><
96、;p> i++; /*記錄數(shù)加1*/</p><p> if(i%9==0)break; /*記錄數(shù)超過9條,跳出內(nèi)循環(huán)*/</p><p> p=p->next; /*指針后移,處理下一條*/</p><p><b> }</b></p><p> gotoxy(1,7+x);</
97、p><p> printf("|----------|----------------|--------|----------|--------|--------|--------|\n"); /*輸出結(jié)束行*/</p><p> printf("Press any key congtinue...\n");</p><p>
98、<b> getch();</b></p><p><b> }</b></p><p><b> }</b></p><p> /*根據(jù)應(yīng)發(fā)工資,計算稅率*/</p><p> float fax(float x)</p><p><b
99、> {</b></p><p><b> float f1;</b></p><p> if(x<1000)</p><p> return 0; /*小于1000,返回0*/</p><p> switch((int)(x/1000))</p><p>&l
100、t;b> {</b></p><p> case 1:f1=0.05;break; /*1000~1999,返回0.05*/</p><p> case 2:f1=0.1;break; /*2000~2999,返回0.1*/</p><p> case 3:f1=0.15;break; /*3000~3999,返回0.15*/</p&
101、gt;<p> case 4:f1=0.2;break; /*4000~4999,返回0.2*/</p><p> default:f1=0.3;break; /*5000以上,返回0.3*/</p><p><b> }</b></p><p> return f1;</p><p><b&
102、gt; }</b></p><p> /*計算票面張數(shù)*/</p><p> void computer()</p><p><b> {</b></p><p> SALARY *p;</p><p> int i=0,a[7]={0},t100,t50,t20,t10,
103、t5,t2,t1;/*設(shè)置數(shù)組和臨時變量保存票面張數(shù)*/</p><p> float t; /*過渡變量,保存當(dāng)前剩余工資*/</p><p> p=First; /*移動指針從頭指針開始*/</p><p> while(p!=NULL) /*當(dāng)p不為空時*/</p><p><b> {</b>&l
104、t;/p><p> t100=(int)p->sfgz/100; /*計算100元張數(shù)*/</p><p> a[0]=a[0]+t100; /*累加保存*/</p><p> t=p->sfgz-t100*100; /*剩余工資*/</p><p> t50=(int)(t/50); /*計算50元張數(shù)*/</p
105、><p> a[1]=a[1]+t50; /*累加保存*/</p><p> t=t-t50*50; /*剩余工資*/</p><p> t20=(int)(t/20); /*計算20元張數(shù)*/</p><p> a[2]=a[2]+t20; /*累加保存*/</p><p> t=t-t20*20; /*剩
106、余工資*/</p><p> t10=(int)(t/10); /*計算10元張數(shù)*/</p><p> a[3]=a[3]+t10; /*累加保存*/</p><p> t=t-t10*10; /*剩余工資*/</p><p> t5=(int)(t/5); /*計算5元張數(shù)*/</p><p> a[4]
107、=a[4]+t5; /*累加保存*/</p><p> t=t-t5*5; /*剩余工資*/</p><p> t2=(int)(t/2); /*計算2元張數(shù)*/</p><p> a[5]=a[5]+t2; /*累加保存*/</p><p> t=t-t2*2; /*剩余工資*/</p><p> t1=(
108、int)(t); /*計算1元張數(shù)*/</p><p> a[6]=a[6]+t1; /*累加保存*/</p><p> p=p->next; /*指針后移,處理下一條記錄*/</p><p><b> }</b></p><p> clrscr(); /*清屏*/</p><p&g
109、t; printf("\n\n\n***********ticket number***************\n"); /*輸出標(biāo)題*/</p><p> printf("--100-----50------20-----10-----5------2------1------\n");</p><p> /*輸出張數(shù)標(biāo)題*/</p&
110、gt;<p> for(i=0;i<7;i++)</p><p> printf("%5d ",a[i]);/*輸出所需的張數(shù)*/</p><p> printf("\n");/*換行*/</p><p><b> }</b></p><p> /*
111、按編號查找記錄*/</p><p> SALARY *find(char *no)</p><p><b> {</b></p><p> SALARY *p; /*定義移動指針*/</p><p> p=First; /*從頭指針開始*/</p><p> while(p) /*當(dāng)p
112、不為空時*/</p><p><b> {</b></p><p> if(!strcmp(no,p->no))</p><p> return p; /*比較相等,查找成功,返回指針*/</p><p> p=p->next; /*不相等指針后移*/</p><p><
113、b> }</b></p><p> printf("not found\n"); /*沒有找到*/</p><p> return NULL; /*返回為空指針*/</p><p><b> }</b></p><p><b> /*刪除結(jié)點*/</b&g
114、t;</p><p> void delete()</p><p><b> {</b></p><p> SALARY *p; /*定義臨時變量,p指向要刪除的結(jié)點p*/</p><p> char s[11]; /*要刪除結(jié)點的編號*/</p><p> clrscr(); /*清
115、屏*/</p><p> printf("please deleted no\n"); /*提示輸入信息*/</p><p> scanf("%s",s); /*輸入要刪除的職工編號*/</p><p> if((p=find(s))!=NULL) /*調(diào)用查找函數(shù),如果找到做下面的處理*/</p>&
116、lt;p><b> {</b></p><p> if(First==p) /*如果是第一個結(jié)點*/</p><p><b> {</b></p><p> First=p->next; /*將頭指針指向其后繼結(jié)點*/</p><p> if(First) /*如
117、頭指針不為空*/</p><p> First->prior=NULL; /*將頭結(jié)點的前驅(qū)設(shè)為空*/</p><p><b> else</b></p><p> Last=NULL; /*否則頭為空,尾也為空*/</p><p><b> }</b></p>&
118、lt;p> else /*刪除的不是第一個結(jié)點*/</p><p><b> {</b></p><p> p->prior->next=p->next; /*p的前驅(qū)的后繼指向p原來的后繼*/</p><p> if(p!=Last) /*如果p不是最后個結(jié)點*/</p><p&g
119、t; p->next->prior=p->prior; /*p后繼的前驅(qū)指向p原來的前驅(qū)*/</p><p><b> else</b></p><p> Last=p->prior;/*如p是最后一個結(jié)點,修改尾指針為p的前驅(qū)*/</p><p><b> }</b></p>
120、<p> free(p); /*刪除結(jié)點后,不要忘記釋放空間*/</p><p> printf("\n have deleted %s SALARY\n",s);</p><p> printf("Don't forget save\n");</p><p><b> }</b
121、></p><p><b> }</b></p><p> /*按姓名查找結(jié)點*/</p><p> void search()</p><p><b> {</b></p><p> SALARY *p; /*移動指針*/</p><p
122、> char s[15]; /*保存姓名*/</p><p> clrscr(); /*清屏*/</p><p> printf("please enter name for search\n"); /*提示輸入*/</p><p> scanf("%s",s); /*輸入要查找人的姓名*/</p>
123、;<p> p=First; /*移動指針從頭指針開始*/</p><p> while(strcmp(p->name,s)&&p!=NULL) /*做比較判斷*/</p><p> p=p->next; /*沒找到,指針后移繼續(xù)查找*/</p><p> if(p==NULL) /*指針為空,說明沒有找到*
124、/</p><p> printf("\nlist no %s SALARY\n",s); /*顯示沒找到信息*/</p><p><b> else</b></p><p><b> {</b></p><p> printf("\n\n"); /*
125、換行*/</p><p> print(p); /*查找成功,調(diào)用輸出函數(shù)輸出指針p所指記錄*/</p><p><b> }</b></p><p><b> }</b></p><p><b> /*插入結(jié)點*/</b></p><p>
126、 void insert()</p><p><b> {</b></p><p> SALARY *p,*info; /* info為新結(jié)點,p為新結(jié)點的后繼*/</p><p> char s[11]; /*保存查找的姓名*/</p><p> float temp; /*臨時變量*/</p>
127、<p> clrscr(); /*清屏*/</p><p> printf("please enter location before the no\n"); /*提示輸入在哪個結(jié)點之前插入*/</p><p> scanf("%s",s); /*輸入指定結(jié)點的編號*/</p><p> printf(
128、"\nplease new record\n"); /*提示輸入記錄*/</p><p> clrscr();/*清屏*/</p><p> gotoxy(1,3); /*定位光標(biāo),按表格形式輸入新結(jié)點信息*/</p><p> printf("**************gongziguanli************&quo
129、t;);</p><p> gotoxy(1,5);</p><p> printf("|------------------------------------|");</p><p> gotoxy(1,6);</p><p> printf("| no | name
130、| jbgz | ");</p><p> gotoxy(1,7);</p><p> printf("|----------|----------------|--------|");</p><p> info=(SALARY *)malloc(sizeof(SALARY)); /*申請空間*/</p>&l
131、t;p><b> if(!info)</b></p><p><b> {</b></p><p> printf("\nout of memory"); /*如沒有得到空間,內(nèi)存溢出*/</p><p> exit(0); /*退出程序*/</p><p>&l
132、t;b> }</b></p><p> info->next=NULL; /*新結(jié)點的后繼為空*/</p><p> info->prior=NULL; /*新結(jié)點的前驅(qū)為空*/</p><p> gotoxy(1,8);printf("|");</p><p> gotoxy(1
133、2,8);printf("|");</p><p> gotoxy(29,8);printf("|");</p><p> gotoxy(38,8);printf("|");</p><p> gotoxy(2,8);</p><p> inputs(info->no,
134、10); /*輸入新結(jié)點的編號,并校驗*/</p><p> gotoxy(13,8);</p><p> inputs(info->name,14); /*輸入新結(jié)點的姓名,并校驗*/</p><p> gotoxy(30,8);</p><p> scanf("%f",&temp); /*輸
135、入基本工資*/</p><p> info->jbgz=temp; /*給基本工資字段賦值*/</p><p> info->koukuan=0; /*扣款初始為0*/</p><p> info->yfgz=0; /*應(yīng)發(fā)工資初始為0*/</p><p> info->shuijin=0; /*稅金初始為
136、0*/</p><p> info->sfgz=0; /*實發(fā)工資初始為0*/</p><p> printf("|----------|----------------|--------|");</p><p> p=First; /*移動指針從頭指針開始*/</p><p> while(strcmp(
137、p->no,s)&&p!=NULL) /*查找結(jié)點確定插入位置*/</p><p> p=p->next; /*指針后移,繼續(xù)查找*/</p><p> if(p==NULL) /*如p為空*/</p><p> if(p==First) /*如p為頭指針,說明鏈表為空*/</p><p><b&g
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工資管理系統(tǒng)課程設(shè)計
- 課程設(shè)計-工資管理系統(tǒng)
- 工資管理系統(tǒng)課程設(shè)計
- 工資管理系統(tǒng)課程設(shè)計
- 工資管理系統(tǒng)(課程設(shè)計)
- 課程設(shè)計-- 企業(yè)工資管理系統(tǒng)
- 企業(yè)工資管理系統(tǒng)課程設(shè)計
- 工資管理系統(tǒng)-課程設(shè)計報告
- 企業(yè)工資管理系統(tǒng)課程設(shè)計
- 企業(yè)工資管理系統(tǒng)課程設(shè)計
- sql課程設(shè)計---工資管理系統(tǒng)
- java工資管理系統(tǒng)課程設(shè)計
- 課程設(shè)計--企業(yè)工資管理系統(tǒng)設(shè)計
- 課程設(shè)計--教師工資管理系統(tǒng)
- 面向?qū)ο笳n程設(shè)計--- 工資管理系統(tǒng)
- c語言課程設(shè)計--工資管理系統(tǒng)
- 高校工資管理系統(tǒng)課程設(shè)計
- 教師工資管理系統(tǒng)課程設(shè)計
- c語言工資管理系統(tǒng)課程設(shè)計
- c語言課程設(shè)計--工資管理系統(tǒng)
評論
0/150
提交評論