加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶(hù)
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入

C語(yǔ)言程序設(shè)計(jì)-職工工資管理系統(tǒng)

08/22 13:28
1167
服務(wù)支持:
技術(shù)交流群

完成交易后在“購(gòu)買(mǎi)成功”頁(yè)面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長(zhǎng)和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購(gòu)買(mǎi)后不支持退換且無(wú)法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

題??? 目: 職工工資管理

一.程序設(shè)計(jì)思路

1、設(shè)計(jì)思路

(1)根據(jù)題目要求,應(yīng)該把職工工資信息用結(jié)構(gòu)體形式輸入,在定義一個(gè)全局變量和文件指針進(jìn)行整個(gè)程序的運(yùn)行,然后把職工工資信息送到文件中,所以應(yīng)該提供一個(gè)結(jié)構(gòu)體和文件的輸入輸出等操作;

(2)在程序中需實(shí)現(xiàn)職工工資瀏覽、查詢(xún)、統(tǒng)計(jì)等功能的操作,所以需要建立相應(yīng)的功能模塊來(lái)實(shí)現(xiàn);

(3)另外還需要提供鍵盤(pán)式選擇菜單實(shí)現(xiàn)功能,在運(yùn)行時(shí)達(dá)到所要的目的。

2、總體設(shè)計(jì)

整個(gè)系統(tǒng)可以分為信息輸入、信息新增、信息瀏覽、信息排序和信息查詢(xún)五個(gè)主要模塊。

3、部分程序設(shè)計(jì)

1)信息輸入

printf("請(qǐng)您輸入姓名:");

scanf("%s",p->data.name);

getchar();

printf("請(qǐng)您輸入性別(m/f):");

scanf("%s",p->data.sex);

getchar();

printf("請(qǐng)您輸入上旬完成(百分比):");

scanf("%f",&p->data.spercent);

getchar();

printf("請(qǐng)您輸入中旬完成(百分比):");

scanf("%f",&p->data.zpercent);

getchar();

printf("請(qǐng)您輸入下旬完成(百分比):");

scanf("%f",&p->data.xpercent);

getchar();

p->data.totle=p->data.spercent+p->data.zpercent+p->data.xpercent;

p->data.ave=p->data.totle / 3;

if(p->data.totle<100)

{p->data.jiangjin=(p->data.totle-100)*10;}

else p->data.jiangjin=(p->data.totle-100)*10;

//信息輸入已經(jīng)完成

2)瀏覽模塊

調(diào)用排序模塊的排序功能,可以瀏覽排序后的所有職工信息。

3)排序模塊

排序模塊提供菜單選擇,實(shí)現(xiàn)按照工資卡號(hào)升序、實(shí)發(fā)工資升序排序。排序方法可以選擇冒泡排序、插入排序、選擇排序等,本系統(tǒng)用的是冒泡排序。

4)查詢(xún)模塊

實(shí)現(xiàn)按照編號(hào)和姓名的查詢(xún),采用基本的查找方法即可。

二.功能模塊圖

.數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

系統(tǒng)用將職工各項(xiàng)信息以結(jié)構(gòu)體類(lèi)型char dir來(lái)定義,它包括num,name[15]等不同類(lèi)型的數(shù)據(jù)項(xiàng),同時(shí)定義了結(jié)構(gòu)體數(shù)組,包括N個(gè)數(shù)組元素,對(duì)應(yīng)N個(gè)職工,每一個(gè)元素用來(lái)存放一個(gè)職工的數(shù)據(jù);每個(gè)職工的信息以結(jié)構(gòu)體方式從內(nèi)存和磁盤(pán)文件中進(jìn)行存儲(chǔ)和導(dǎo)出。以結(jié)構(gòu)體方式來(lái)整合職工的不同信息,將不同的數(shù)據(jù)組合成一個(gè)有機(jī)整體,非常方便程序的調(diào)用。

四.算法設(shè)計(jì)

1、主函數(shù)

主函數(shù)一般設(shè)計(jì)比較簡(jiǎn)單,只提供輸入、處理和輸出部分的函數(shù)調(diào)用。各功能模塊用菜單方式選擇。

[流程圖]

"

#include "stdlib.h"

#include "string.h"

int shoudsave=0;

char dir[15];

struct member

{

char num[5];//編號(hào)

char name[15];

char sex[1];

float spercent;

float zpercent;

float xpercent;

float jiangjin;

float totle;

float ave;

}; //一個(gè)結(jié)構(gòu)體

typedef struct node

{

struct member data;//指向結(jié)構(gòu)體的結(jié)構(gòu)體

struct node *next;

}Node,*Link;

void explain()

{printf("=============================關(guān)于此程序的操作說(shuō)明==============================n");

printf("===1>:員工每旬應(yīng)該完成量為33.3個(gè)百分點(diǎn),輸入只輸數(shù)字部分。n");

printf("===2>:員工每月應(yīng)該完成量完成量為100個(gè)百分點(diǎn)。n");

printf("===3>:員工獎(jiǎng)金按其超額總應(yīng)該完成量(即百分之百)的多少計(jì)算。n");

printf("===4>:獎(jiǎng)金=(總完成比-1)*1000。n");

printf("===5>:員工底金為1000元。n");

printf("===6>:邏輯刪除資料必須在已經(jīng)保存了先前記錄的基礎(chǔ)上方可進(jìn)行。n");

printf("===7>:進(jìn)行邏輯刪除資料后如果保存即變?yōu)槲锢韯h除。n");

printf("===8>:本程序在c++環(huán)境中完成,程序文件擴(kuò)展名為.c。n");

}

void menu() //菜單

{

printf("********************************************************************************");

printf("t1獲取說(shuō)明信息ttttt 2輸入員工資料n");

printf("t3刪除員工資料ttttt 4查詢(xún)員工資料n");

printf("t5修改員工資料ttttt 6顯示員工資料n");

printf("t7統(tǒng)計(jì)員工業(yè)績(jī)ttttt 8排序員工實(shí)發(fā)工資n");

printf("t9保存員工資料ttttt10邏輯刪除員工資料n");

printf("t0退出系統(tǒng)n");

printf("********************************************************************************n");

}? 2、各功能模塊設(shè)計(jì)

1 輸入模塊

struct member

{

char num[5];//編號(hào)

char name[15];

char sex[1];

float spercent;

float zpercent;

float xpercent;

float jiangjin;

float totle;

float ave;

}; //一個(gè)結(jié)構(gòu)體 [流程圖]

}2 瀏覽模塊

[需求分析]

該模塊的功能是顯示所有職工記錄工資信息.

/***************瀏覽(全部)模塊***************/

void browse()?? /*瀏覽模塊*/

{

void printf_one(int i);

void printf_face();

int load();

void menu();

int i,n;

n=load();?? /*加載記錄*/

printf_face();????? /*調(diào)用顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目函數(shù)*/

for(i=0;i<n;i++)

{

if((i!=0)&&(i%10==0))?? /*目的是分屏顯示*/

{printf("nnpress any key to contiune...");

getch();

puts("nn");}

printf_one(i);??? /*調(diào)用顯示一個(gè)記錄的函數(shù)*/

printf("n");

}

printf("t there are %d record.n",n);

printf("n pass any key to back...");

getch();?? /*按任意鍵*/

menu();

}

⑷ 查找模塊

該模塊的功能是根據(jù)輸入的職工姓名和卡號(hào)查找對(duì)應(yīng)的記錄.

[程序]

/***************查找函數(shù)***************/

void search()??? /*查找模塊*/

{

int n,w1;

do

{

puts("ttt1.search by name");

puts("ttt2.search by num");

scanf("%d",&n);

if(n<1||n>2)??? /*對(duì)選擇數(shù)字作判斷*/

{

w1=1;

getchar();

}

else w1=0;

}

while(w1==1);

switch(n)

{

void search_1();

void search_2();

case 1:search_1();break;

case 2:search_2();break;

}

}

void? search_1()?? /*按姓名查找*/

{

int load();

void printf_face();

void menu();

void printf_one(int i);

int i,n,k,w1=1,w2,w3,w4;

struct list s;

n=load();

do

{

do

{

k=-1;

printf("nnenter name that you want to search!??? name:");

scanf("%s",s.name);

printf_face();??? /*調(diào)用顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目函數(shù)*/

for(i=0;i<n;i++)???? /*查找所需數(shù)據(jù)*/

if(strcmp(s.name,list[i].name)==0)

{

k=i;????? /*找到數(shù)據(jù)*/

printf_one(k);break;??? /*調(diào)用顯示一個(gè)記錄的函數(shù)*/

}

if(k==-1)

{

printf("nn NO.exit!please");

printf("nnare you again?nt1).again?? 2).NO and back? [ ]bb");

scanf("%d",&w1);

if(w1==2)break;

}

}

while(k==-1&&w1==1);???? /*如果w1不等于1這直接返回*/

w4=0;w3=0;

if(k!=-1)??? /*k不等于-1表示已找到,如果找到則選擇操作*/

{

printf("successful");

printf("nn what do you want to do?nt1).search another? 2).back? [ ]bb");

scanf("%d",&w2);

}

}

while(w2==1);

menu();

}

五、部分程序代碼

每個(gè)函數(shù)都要有功能說(shuō)明)

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

int shoudsave=0;

char dir[15];

struct member

{

char num[5];//編號(hào)

char name[15];

char sex[1];

float spercent;

float zpercent;

float xpercent;

float jiangjin;

float totle;

float ave;

}; //一個(gè)結(jié)構(gòu)體

typedef struct node

{

struct member data;//指向結(jié)構(gòu)體的結(jié)構(gòu)體

struct node *next;

}Node,*Link;

void explain()

{printf("=============================關(guān)于此程序的操作說(shuō)明==============================n");

printf("===1>:員工每旬應(yīng)該完成量為33.3個(gè)百分點(diǎn),輸入只輸數(shù)字部分。n");

printf("===2>:員工每月應(yīng)該完成量完成量為100個(gè)百分點(diǎn)。n");

printf("===3>:員工獎(jiǎng)金按其超額總應(yīng)該完成量(即百分之百)的多少計(jì)算。n");

printf("===4>:獎(jiǎng)金=(總完成比-1)*1000。n");

printf("===5>:員工底金為1000元。n");

printf("===6>:邏輯刪除資料必須在已經(jīng)保存了先前記錄的基礎(chǔ)上方可進(jìn)行。n");

printf("===7>:進(jìn)行邏輯刪除資料后如果保存即變?yōu)槲锢韯h除。n");

printf("===8>:本程序在c++環(huán)境中完成,程序文件擴(kuò)展名為.c。n");

}

void menu() //菜單

{

printf("********************************************************************************");

printf("t1獲取說(shuō)明信息ttttt 2輸入員工資料n");

printf("t3刪除員工資料ttttt 4查詢(xún)員工資料n");

printf("t5修改員工資料ttttt 6顯示員工資料n");

printf("t7統(tǒng)計(jì)員工業(yè)績(jī)ttttt 8排序員工實(shí)發(fā)工資n");

printf("t9保存員工資料ttttt10邏輯刪除員工資料n");

printf("t0退出系統(tǒng)n");

printf("********************************************************************************n");

}

void printc() // 本函數(shù)用于輸出中文

{

printf("編號(hào) 姓名??? 性別 總完成比 旬平均 基本工資 獎(jiǎng)金 工資總額 n");

}

void printe(Node *p)//本函數(shù)用于輸出英文

{

printf("%-5s%-10s%-4s%6.1f %6.1f? %6.1f %6.1f %6.1fn",p->data.num,p->data.name,p->data.sex,p->data.totle,p->data.ave,1000.0,p->data.jiangjin,1000+p->data.jiangjin);

}

void printstart()

{

printf("-----------------------------------------------------------------------n");

}

void Wrong() //如果錯(cuò)誤

{

printf("n=====>提示:輸入錯(cuò)誤!n");

}

void Nofind() //如果沒(méi)找到

{

printf("n=====>提示:沒(méi)有找到該員工!n");

}

Node* Locate(Link l,char findmess[],char nameornum[]) //該函數(shù)用于定位連表中符合要求的接點(diǎn),并返回該指針

{

Node *r;

if(strcmp(nameornum,"num")==0) //按編號(hào)查詢(xún)

{

r=l->next;

while(r!=NULL)

{

if(strcmp(r->data.num,findmess)==0)

return r;

r=r->next;

}

}

else if(strcmp(nameornum,"name")==0) //按姓名查詢(xún)

{

r=l->next;

while(r!=NULL)

{

if(strcmp(r->data.name,findmess)==0)

return r;

r=r->next;

}

}

return 0;

}

.程序運(yùn)行結(jié)果

1、主函數(shù)運(yùn)行,顯示主菜單函數(shù)menu()

2、輸入數(shù)字2,添入兩組數(shù)據(jù)

3、如果再輸入數(shù)字2,新增一組數(shù)據(jù)并瀏覽

4、輸入數(shù)字6,瀏覽所有職工信息

5、輸入4,進(jìn)行查詢(xún)程序,再輸入2 ,按姓名查詢(xún),輸入1 ,按編號(hào)查詢(xún)

6、輸入數(shù)字5,按實(shí)發(fā)工資排序。

  • 有需要資料的可了解一下.docx

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
AT25256B-SSHL-B 1 Microchip Technology Inc IC EEPROM 256KBIT 20MHZ 8SOIC

ECAD模型

下載ECAD模型
$1.25 查看
KSZ8863MLLI 1 Microchip Technology Inc DATACOM, LAN SWITCHING CIRCUIT, PQFP48
$5.09 查看
HCPL-0601-500E 1 Broadcom Limited Logic IC Output Optocoupler, 1-Element, 3750V Isolation, 10MBps, ROHS COMPLIANT, SOIC-8
$3.05 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜