员工管理系统c语言源代码Word下载.docx
《员工管理系统c语言源代码Word下载.docx》由会员分享,可在线阅读,更多相关《员工管理系统c语言源代码Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
2----中级工程师
3----初级工程师
*/
charID_Wage[10];
/*员工的工资卡号*/
chardepart[10];
/*员工的部门*/
intage;
/*员工的年龄*/
charsex;
/*员工的性别*/
charm_phone[10];
/*员工的手机*/
charH_phone[10];
/*员工的住宅电话*/
WAGEsalary;
}WORK;
WORKwo[N];
intn;
/*员工的总数*/
voidmenu();
/*员工管理操作主菜单函数声明*/
voidmenu1();
/*员工管理操作子菜单函数声明*/
/********************************************************
Author
:
GT
CopyRight
tgao@
functionname
save
Comments
保存文件函数
input
无
output
无
CreatedDate
2007/06/01
*********************************************************/
save()
/*保存函数,保存n个记录*/
{
intw=1;
FILE*fp;
inti;
system("
cls"
);
if((fp=fopen("
work.txt"
"
wb"
))==NULL)
/*以输出打开方式,在此前的记录被覆盖*/
printf("
\nCannotopenfile\n"
);
returnNULL;
}
for(i=0;
i<
n;
i++)
if(fwrite(&
wo[i],sizeof(structworker),1,fp)!
=1)
filewriteerror\n"
w=0;
if(w==1)
filesaveok!
\n"
fclose(fp);
getch();
menu();
load
载入文件函数
load()
/*加载记录或可以计算记录个数的函数*/
inti,w;
w=1;
rb"
n=0;
for(i=0;
!
feof(fp);
fread(&
wo[i],sizeof(structworker),1,fp);
n++;
n=n-1;
Loadfileok!
"
return(i-1);
/*返回记录个数*/
no_input
输入不能重复的员工编号
i:
表示第i个的员工编号信息
n:
表示比较到第n个员工编号信息
voidno_input(inti,intn)
/*i表示第i个的员工编号信息,n表示比较到第n个员工编号*/
intj,k,w1;
do
w1=0;
NO.:
scanf("
%s"
wo[i].ID);
for(j=0;
wo[i].ID[j]!
='
\0'
;
j++)
/*员工编号输入函数,作了严格规定*/
if(wo[i].ID[j]<
'
0'
||wo[i].ID[j]>
9'
)
/*判断员工编号是否为数字*/
{
puts("
Inputerror!
Onlybemadeupof(0-9).Pleasereinput!
w1=1;
break;
}
if(w1!
for(k=0;
k<
k++)
/*比较到第n个员工编号*/
/*排除第i个员工编号即你要修改的*/
if(k!
=i&
&
strcmp(wo[k].ID[j],wo[i].ID[j])==0)
/*判断员工编号是否有雷同*/
Thisrecordisexist.pleasereinput!
}while(w1==1);
tax
工资税金
s:
表示员工工资信息
员工的税金
floattax(floats)
if(s<
=800)
tax=0;
elseif(s>
800&
s<
=1400)
tax=(s-800)*0.05;
elseif(s>
1400)
tax=(s-1400)*0.1+600*0.05;
returntax;
input
输入一条员工记录
表示第i个的员工信息
voidinput(inti)
/*输入一个记录函数*/
intj,sum;
no_input(i,i);
/*调用员工编号输入函数*/
name:
fflush(stdin);
gets(wo[i].name);
printf("
BankID:
gets(wo[i].ID_Wage);
grade"
scanf("
%d"
&
wo[i].ID_P);
Department:
gets(wo[i].depart);
age:
wo[i].age);
sex:
%c"
wo[i].sex);
mobilephone"
gets(wo[i].m_phone);
homephone"
gets(wo[i].H_phone);
basicsalary"
%f"
wo[i].salary.wage1);
wo[i].salary.tax=tax(wo[i].salary.wage1);
Bonus:
wo[i].salary.Bonus);
waterfee:
wo[i].salary.S_fee);
dianfee:
wo[i].salary.D_fee);
QingJiefee:
wo[i].salary.Q_fee);
TVfee:
wo[i].salary.T_fee);
wo[i].salary.S_wage=wo[i].salary.wage1+wo[i].salary.Bonus-wo[i].salary.tax-wo[i].salary.D_fee-wo[i].salary.Q_fee-wo[i].salary.S_fee-wo[i].salary.T_fee;
enter
输入员工管理系统信息记录
voidenter()
/*输入模块*/
Howmanyrecord(0-%d)?
:
N);
n);
/*要输入的记录个数*/
\nEnterdatanow\n\n"
\nInput%dthrecord.\n"
i+1);
input(i);
/*调用输入函数*/
printf_one
输出一条员工信息记录
表示第i个的员工信息
voidprintf_one(inti)
/*显示一个记录的函数*/
intj;
%11s
%-6s
%d
%c
%6.2f
%s
%s"
wo[i].ID,wo[i].name,wo[i].ID_Wage,wo[i].ID_P,wo[i].age,wo[i].sex,wo[i].salary.S_wage,wo[i].m_phone,wo[i].H_phone);
printf_one_s
输出一条员工工资记录
表示第i个的工资信息
voidprintf_one_s(inti)
%8.2f
%8.2f"
wo[i].salary.wage1,wo[i].salary.S_wage,wo[i].salary.Bonus,wo[i].salary.D_fee,wo[i].salary.Q_fee,wo[i].salary.S_fee,wo[i].salary.T_fee,wo[i].salary.tax);
browse
输出员工管理系统信息记录
voidbrowse()
/*浏览(全部)模块*/
inti,j;
puts("
\n--------------------------------------------------------------------"
\n\t工号姓名银行卡号
职称年龄
性别
实发工资手机住宅电话\n"
if((i!
=0)&
(i%10==0))
/*目的是分屏显示*/
\n\nPassanykeytocontiune
..."
getch();
\n\n"
printf_one(i);
/*调用显示一个记录的函数*/
\tThereare
%drecord.\n"
n);
/*按任意健*/
search_by_ID
按工号查找所有员工信息记录
输出查找员工编号
intsearch_by_ID()
/*查找模块*/
inti,k;
structworkers;
k=-1;
\n\nEntertheID:
s.ID);
/*输入要到达的地方*/
i++)
/*查找要修改的数据*/
if(strcmp(s.ID,wo[i].ID)==0)
k=i;
/*找到要修改的记录*/
printf_one(k);
工资信息:
\n\t基本工资
实发工资
奖金
电费
清洁费
水费
电视费
税金\n"
printf_one_s(k);
if(k==-1)
\n\nNOexist!
menu1();
return-1;
else
returnk;
search_by_age
按年龄查找所有员工信息记录
intsearch_by_age()
/*查找模