c语言课程设计职工工资管理系统源代码.docx
《c语言课程设计职工工资管理系统源代码.docx》由会员分享,可在线阅读,更多相关《c语言课程设计职工工资管理系统源代码.docx(23页珍藏版)》请在冰豆网上搜索。
![c语言课程设计职工工资管理系统源代码.docx](https://file1.bdocx.com/fileroot1/2023-1/23/40a542f4-5eee-42fa-8db6-388fc777da0c/40a542f4-5eee-42fa-8db6-388fc777da0c1.gif)
c语言课程设计职工工资管理系统源代码
绝对可以完美运行,下面有运行图片
#includeII
#includeII#includeII#includeII#defineN2II
调用库函数
字符串处理
控制台输入输出
定义杂项函数及内存分配函数
宏定义以3代替N
I**
****************************************************************************
函数声明
*****************************************************************************
**I
voidenter();
intmenu();
voidinput();
voidoutput。
;
voidsearch();
voidsearch_employeeid();
voidsearch_name();
voidedit();
voidarray();
voidarray_basesalary();
voidarray_postwage();
voidarray_totalwage();
voidstatistics();
voidsave();
voidload();
I******************************************************************************职工类型定义
*******************************************************************************
structemployee
{
charemployeeid[10];
charname[10];
charsex[10];
intage;
floatbasesalary;
floatpostwage;
floattotalwage;
};
I******************************************************************************职工变量定义
******************************************************************************Istructemployeeemp[N];
structemployeereplace;
structemployee*p=emp;
/*****************************************************************************
系统主函数
******************************************************************************
}
/*****************************************************************************
功能:
登陆函数,进行密码验证
*****************************************************************************/
voidenter()
{
charq;
charkey[10],password[10]="china";
intk=1,i;
\n");
printf("请输入密码:
for(i=0;i<5;i++)
{
q=getch();key[i]=q;printf("*");
}
while(k<=3)
{
if(strncmp(key,password,5)==0){
while
(1)
{
inta;
〃system("cls");a=menu();
switch(a)
{
case1:
input();break;
case2:
output();break;
case3:
search();break;
case4:
edit();break;
case5:
array();break;
case6:
load();statistics();break;
case0:
\n\n\n\n");
printf("\n\n谢谢使用!
save();
exit(0);
}
}
}
else
{
k++;
printf("输入密码错误!
请再次输入:
”);
for(i=0;i<5;i++)
{
q=getch();key[i]=q;printf("*");
}
if(k>2)
{
if(strncmp(password,key,5)==0)
continue;
else
{
\n");
printf(”输入密码错误三次,系统将自动退出!
exit(O);
}
}
}
}
}/************************************************************************功能:
主菜单函数
参数:
a
类型:
int
说明:
变量返回值:
a
************************************************************************/intmenu()
inta;printf("\n\n");
scanf("%d",&a);
while(a>6||a<0)
{
printf("error!
\n");
printf("请重新输入你所选择的选项:
”);
scanf("%d",&a);
}
returna;
}
/*********************************************************************************
功能:
职工信息输入
**********************************************************************************voidinput()
{
intc;
\n\n\n”);
p=emp;
printf(”进入职工信息输入模块
for(c=0;c{p[c].totalwage=p[c].basesalary+p[c].postwage;printf("请输入第%d个职工信息:
\n\n”,c+1);
printf("请输入职工号:
\n");
seanf("%s",p->employeeid);
if(strcmp(p->employeeid,"0")!
=0)
{
printf("请输入职工姓名:
\n");
seanf("%s",p->name);
printf("请输入职工性别:
\n");
scanf("%s",&p->sex);
printf("请输入职工年龄:
\n");
scanf("%d",&p->age);
printf("请输入职工基本工资:
\n");
scanf("%f",&p->basesalary);
printf("请输入职工岗位工资:
\n");
scanf("%f",&p->postwage);
printf("职工信息输入完成!
\n\n");
}
else
return;
}
save();
}
/*******************************************************************************
功能:
职工信息输出
********************************************************************************/
voidoutput()
{
intj;
load();
p=emp;
printf("进入职工信息输出模块\n\n\n”);
printf(”
岗位工资
——\n");
printf("|职工号|姓名|性别|年龄|基本工资|
|总工资|\n");
printf("
\n");
for(j=0;j{
p[j].totalwage=p[j].postwage+p[j].basesalary;
printf("|%10s|%9s|%7s|%5d|%10.2f|%10.2f|%10.2f|\n",p[j].employeeid,p[j].name,p[j].sex,
p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);
printf("
\n");
}
printf("\n\n职工信息输出完成!
\n\n");
getchar();
}
/******************************************************************************能:
职工信息查询
**/
****************************************************************************voidsearch(){
intj;
while
(1)
printf(”
scanf("%d",&j);if(j>=0&&j<=2){
{
printf("*********************
耳口工信自查^询*********************\n\n\n")
printf(”
1
按职工号查询
\n");
printf(”
2
按职工姓名查询
\n");
printf(”
0
退出该项操作
\n");
printf("\n\n");
while
(1)
{
请输入你的选择
\n");
switch(j)
{
case1:
search_employeeid();break;
case2:
search_name();break;
case0:
return;
}
}else
{
\n\n");
/*******************************************************************************功能:
按职工号查询函数
*******************************************************************************/voidsearch_employeeid()
{
charemployeeid[10];
\n\n");
seanf("%s",employeeid);for(k=0;k{if(strcmp(employeeid,p->employeeid)==0){
j=k;
p[j].totalwage=p[j].postwage+p[j].basesalary;
printf("
岗位工资
\n");
printf("|职工号|姓名|性别|年龄|基本工资
|总工资|\n");
printf("|%10s|%9s|%7s|%5d|%10.2f|%10.2f|%10.2f|\n",p[j].employeeid,
p[j].name,p[j].sex,
p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);
printf("
--\n");break;
}
else
{
printf("notfound\n");
return;
}
}
}
/*****************************************************************************功能:
按职工姓名查询函数
***************************************************************************
voidsearch_name()
{
charname[10];
intflog=0;
intf,j;
p=emp;
\n\n");
scanf("%s",name);
for(f=0;f{
if(strcmp(name,p->name)==O)
{
j=f;
p[j].totalwage=p[j].postwage+p[j].basesalary;
printf(”
——\n");
|岗位工资
printf("|职工号|姓名|性别|年龄|基本工资
|总工资|\n");
printf("|%10s|%9s|%7s|%5d|%10.2f|%10.2f|%10.2f|\n",p[j].employeeid,p[j].name,p[j].sex,
p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);
printf("
\n");
break;
}
else
{
printf("notfound\n\n");
return;
}
}
getchar();
}
/*******************************************************************************
功能:
职工信息修改函数
*******************************************************************************/
voidedit()
{
chare[10];
intg=0,j;
charflog;
p=emp;
\n");
printf(”请输入你要修改职工的职工号:
scanf("%s",e);
for(g=0;g{
//if(*e==p[g].employeeid)
if(strcmp(e,p->employeeid)==0)
{
j=g;
p[j].totalwage=p[j].postwage+p[j].basesalary;
print(”
——\n");
|基本工资I岗
printf("|职工号|姓名|性别|年龄
位工资|总工资|\n");
printf("|%10s|%9s|%7s|%5d|%10.2f|%10.2f|%10.2f|\n",p[j].employeeid,p[j].name,p[j].sex,
p[j].age,p|j].basesalary,p[j].postwage,p|j].totalwage);
print(”
——\n");
否)?
\n\n");
printf("是否要修改该职工信息?
y(是)orn(
getchar();
scanf("%c",&flog);
if(flog=='y')
{
printf("请输入新姓名:
\n");
scanf("%s",p->name);
printf("请输入性别:
\n");
scanf("%s",&p->sex);
printf("请输入年龄:
\n");
scanf("%d",&p->age);
printf("请输入基本工资:
\n");
scanf("%f",&p->basesalary);
printf("请输入岗位工资:
\n");
scanf("%f",&p->postwage);
\n\n");
printf("修改职工信息成功!
}
if(flog=='n')
{
printf("退出该项操作!
\n\n");
return;
}
save();
}
if(g==N)
{
printf(”notfound\n\n\n”);
return;
}}
}
/************************************************************************
功能:
职工工资排列函数
************************************************************************/
输入错误!
\n\n\n");
请再次输入你的选择:
/**************************************************************************
功能:
按基本工资排列(选择法)
***************************************************************************/voidarray_basesalary(){
inti,j,k;
p=emp;
for(i=0;ik=i;
for(j=i+1;j{
if(p[k].basesalary
k=j;
}
if(k!
=i)
{
replace=emp[k];
emp[k]=emp[i];
emp[i]=replace;
}
}
for(j=0;j{
p[j].totalwage=p[j].postwage+p[j].basesalary;
printf(”
岗位工资
\n");
printf("|职工号|姓名|性别|年龄|基本工资|
|总工资|\n");
printf("|%10s|%9s|%7s|%5d|%10.2f|%10.2f|%10.2f|\n",p[j].employeeid,
p[j].name,p[j].sex,
p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);
}
printf("
\n");
}
/************************************************************************
功能:
按岗位工资排列(冒泡法)
*************************************************************************/
voidarray_postwage()
{
inti,j;
p=emp;
for(i=0;i{
for(j=0;j{
if(p[j].postwage
{
replace=emp[j];
emp[j]=emp[j+1];
emp[j+1]=replace;
}
}
}
for(j=0;j{
p[j].totalwage=p|j].postwage+p[j].basesalary;
printf(”
岗位工资
\n");
printf("|职工号|姓名|性别|年龄|基本工资|
|总工资|\n");
printf("|%10s|%9s|%7s|%5d|%10.2f|%10.2f|%10.2f|\n",p[j].employeeid,p[j].name,p[j].sex,
p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);
}
printf("
\n");
/**
**********************************************************************
功能:
按总工资排列(插入法)
**********************************************************************voidarray_totalwage()
{-
inti,j;
p=emp;
for(i=1;i{
replace=emp[i];
for(j=i-1;j>=0&&p[i].totalwage>p[i].totalwage;j--)
{
emp[j+1]=emp[j];
emp[j+1]=replace;
}
}
for(j=N-1;j>=0;j--)
{p[j].totalwage=p[j].postwage+p[j].basesalary;
printf("
岗位工资
\n");
printf("|职工号|姓名|性别|年龄|基本工资|
|总工资|\n");
printf("|%10s|%9s|%7s|%5d|%10.2f|%10.2f|%10.2f|\n",p[j].employeeid,p[j].name,p[j].sex,
p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);
}
printf("
\n");
}
/*************************************************************************
功能:
工资统计函数
**************************************************************************]
voidstatistics。
{
intz,a=0,b=0,c=0;p=emp;
for(z=0;z{
if(p[z].totalwage>3000)
{
a++;
continue;
}
if(p[z].totalwage>=2000&&p[z].totalwage<=3000)
{
b++;
continue;
}
if(p[z].totalwage<=2000&&p[z].totalwage>0)
{
c++;
continue;
}
}
printf("总工资在3000元以上的职工人数有:
%d\n\n",a);
printf("总工资在2000元至3000元的职工人数有:
%d\n\n”,b);
printf("总工资在2000元以下的职工人数有:
%d\n