工资信息管理系统C语言Word文件下载.docx
- 文档编号:21994123
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:16
- 大小:124.02KB
工资信息管理系统C语言Word文件下载.docx
《工资信息管理系统C语言Word文件下载.docx》由会员分享,可在线阅读,更多相关《工资信息管理系统C语言Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
\t\t\t\t5.order"
\t\t\t\t6.exit"
\n\n\t\t**********************************\n"
printf("
Choiceyournumber(1-6):
[]\b\b"
scanf("
%d"
&
n);
if(n<
1||n>
6)
{
w1=1;
getchar();
}
elsew1=0;
}
while(w1==1);
switch(n)
case1:
enter();
break;
case2:
add();
case3:
browse();
case4:
search();
case5:
order();
case6:
exit(0);
return1;
}
3.各功能模块设计
1)录入模块
数据结构
structemployer
intmonth;
charnum[11];
charname[20];
floatyfgz;
floatsf;
floatdf;
floatsj;
floatsfgz;
}emp[N];
N为职工人数,在此宏定义为100,
#defineN100
那么此阶段的流程图如下
[程序]
enter()
{inti,n;
printf("
Howmanyemployers(0-%d)?
:
"
N-1);
scanf("
\nEnterdatanow\n\n"
for(i=0;
i<
n;
i++)
{printf("
\ninput%dthemployerrecord.\n"
i+1);
input(i);
if(i!
=0)save(n);
printf_back();
2)追加模块
先确定要追加信息的条数,调用n=load()函数,再调用输入函数input(),最后保存追加的记录。
整个过的的流程图如下:
add()
{inti,n,m,k;
FILE*fp;
n=load();
Howmanyemployersareyouwanttoadd(0-%d)?
N-1-n);
m);
k=m+n;
for(i=n;
k;
{printf("
\nInput%dthemployerrecord.\n"
i-n+1);
if((fp=fopen("
record.txt"
"
ab"
))==NULL)
cannotopenfile\n"
for(i=n;
if(fwrite(&
emp[i],sizeof(structemployer),1,fp)!
=1)
printf("
error\n"
fclose(fp);
3)查询模块
下面是流程图:
search()
{inti,n,k,w1=1,w2,w3,w4;
structemployere;
do
{k=1;
\n\nEnternamethatyouwanttosearch!
name:
scanf("
%s"
e.name);
printf_face();
for(i=0;
if(strcmp(e.name,emp[i].name)==0)
{k=i;
printf_one(k);
if(k==-1)
{printf("
\n\nNOexist!
please"
\n\nAreyouagain?
\n\t1).again2).NOandback[]\b\b"
w1);
if(w1==2)break;
while(k==-1&
&
w1==1);
w4=0;
w3=0;
if(k!
=-1)
{printf("
\n\nWhatdoyouwanttodo?
\n\t1).Searchanother2).Backmenu[]\b\b"
w2);
if(w3==1||w4==1)
{save(n);
\n\nSuccessful.^_^."
\n\t1).Searchanother2).Back[]\b\b"
while(w2==1);
menu();
4)浏览模块
流程图
browse()
{inti,n;
printf_face();
{if((i!
=0)&
i%10==0)
\n\nPsaaanykeytocontinue..."
getch();
puts("
\n\n"
printf_one(i);
\tThereare%drecord.\n"
n);
\nPassanykeytoback..."
5)排序模块
此阶段按工人工资卡号升序排列
程序如下:
order()
{inti,j,n;
chart[11];
n-1;
for(j=i+1;
j<
j++)
if(strcmp(emp[i].num,emp[j].num)>
0)
{
strcpy(t,emp[i].num);
strcpy(emp[i].num,emp[j].num);
strcpy(emp[j].num,t);
}
save(n);
printf_back();
4.公共函数
1)保存函数
save(intn)
{FILE*fp;
inti;
wb"
\nCannotopenfile\n"
returnNULL;
if(emp[i].yfgz!
=0)
=1)
2)加载函数
load()
rb"
!
feof(fp);
fread(&
emp[i],sizeof(structemployer),1,fp);
return(i-1);
3)工资信息输入函数
record_input(inti)
intj;
month:
emp[i].month);
no_input(i,i);
name:
emp[i].name);
yfgz:
%f"
emp[i].yfgz);
sf:
emp[i].sf);
df:
emp[i].df);
4)输入工资卡号的函数
no_input(inti,intn)
{intj,k,w1;
{w1=0;
NO.:
emp[i].num);
for(j=0;
emp[i].num[j]!
='
\0'
;
if(emp[i].num[j]<
'
0'
||emp[i].num[j]>
9'
)
{puts("
Inputerror!
Onlybemadeupof(0-9).Pleasereinput!
\n"
w1=1;
if(w1!
for(k=0;
k<
k++)
if(k!
=i&
strcmp(emp[k].num,emp[i].num)==0)
Thisrecordisexist.pleasereinput!
while(w1==1);
5)计算税金的函数
sj(inti)
{if(emp[i].yfgz<
800)
emp[i].sj=0;
if(emp[i].yfgz>
800&
emp[i].yfgz<
1400)
emp[i].sj=(emp[i].yfgz-800)*0.05;
emp[i].sj=(emp[i].yfgz-1400)*0.1;
6)计算实发工资的函数
sfgz(inti)
{emp[i].sfgz=emp[i].yfgz-emp[i].sf-emp[i].df-emp[i].sj;
7)显示数据结构项目函数
voidprintf_face()
\n\tNO.namemonthyfgzsfdfsjsfgz\n"
8)显示一个记录的函数
voidprintf_one(inti)
%s%s%d%f%f%f%f%f\n"
emp[i].num,emp[i].name,emp[i].month,emp[i].yfgz,emp[i].sf,emp[i].df,emp[i].sj,emp[i].sfgz);
9)一个任务结束时的选择浏览还是返回的函数
printf_back()
{intk,w;
\n\n\tSuccessful.^_^\n\n"
Whatdoyouwanttodo?
\n\n\t1)Browseallnow\t2).Back:
[]\b\b"
w);
if(w==1)browse();
elsemenu();
5上机操作
(1)主菜单
(2)录入模块
输入1后提示输入记录的条数,输入3后界面如下
再逐条输入信息后界面如下
(3)追加模块
输入2后,回到主菜单,在输入2选在追加信息,提示输入追加信息条数,输入1后界面如下
再将追加的信息录入后界面如下
(4)查询模块
输入2后回到主菜单,输入4进入查询,输入职工名字ccc后可获得其工资信息,界面如下
(5)浏览模块
输入2后回到主菜单,输入3浏览工资信息,界面如下
(6)排序模块
点任意键返回主菜单后输入5,可按工人工资卡号升序将信息排列后显示出来,界面如下
点任意键返回主菜单后输入6退出。
上机演示完毕。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工资 信息管理 系统 语言
![提示](https://static.bdocx.com/images/bang_tan.gif)