员工管理系统.docx
《员工管理系统.docx》由会员分享,可在线阅读,更多相关《员工管理系统.docx(33页珍藏版)》请在冰豆网上搜索。
员工管理系统
#include
#include"stdlib.h"
#include"string.h"
intshouldsave=0;
chardir[15];
/*-------------------------定义结构体-------------------------*/
structmember//定义结构体
{
charscard[20];//工资卡号
charidcard[20];//身份证
charname[20];//名字
charwage[3];//工作年龄
charsex[2];//性别
charsection[50];//部门
chartechnical_title[50];//技术职称
charttnum[50];//技术职称编号
charhnumber[20];//家庭电话
charpnumber[20];//手机号码
floatbasepay;//基本工资
floatpostpay;//职务工资
floatallowance;//补助
intage;//年龄
};
/*-------------------------定义单链表-------------------------*/
structLNode//定义单链表
{
structmemberdata;
structLNode*next;
};
/*---------------------------分割线---------------------------*/
voidDividing_line()//分割线
{
printf("===============================================================================\n");
}
/*-----------------------输入错误时输出-----------------------*/
voidWrong()//如果错误
{
intsel;
printf("\t\t\t输入错误!
按下任意键回到主菜单!
");
scanf("%d",&sel);
return;
}
/*----------------------------菜单----------------------------*/
voidmenu()//菜单
{
printf("\t\t\t\t员工工资管理系统\n\t\t\t\t电子1班\n\t\t\t\t蔡李志\n");
printf("********************************************************************************");
printf("\t1获取说明信息\t\t\t\t\t2输入员工资料\n");
printf("\t3删除员工资料\t\t\t\t\t4查询员工资料\n");
printf("\t5修改员工资料\t\t\t\t\t6显示员工资料\n");
printf("\t7统计员工业绩\t\t\t\t\t8排序员工实发工资\n");
printf("\t9保存员工资料\t\t\t\t\t10逻辑删除员工资料\n");
printf("\t0退出系统\n");
printf("********************************************************************************\n");
}
/*--------------------------系统说明--------------------------*/
intexplanation()//系统说明
{
intsel;
printf("基本功能:
\n录入、修改、插入、删除、查询。
\n");
printf("统计功能:
\n
(1)统计年龄20岁以下青年员工的总数;年龄在20岁以上,45岁以下的员工数;年龄55岁以上退休员工数。
\n
(2)统计各种技术职称的员工的基本工资总额、职务工资总额、各种补助总额、应发工资总额。
进而统计全公司职工的工资总额。
\n(3)统计各种技术职称员工的员工数,并计算各种技术职称员工的平均工资。
\n(4)统计该公司每月税金总额、全年税金总额。
\n(5)按照应发工资对全公司员工进行排序。
\n(6)职工工资信息其它方面的统计。
\n");
printf("\t\t\t\t按下任意键回到主菜单!
");
scanf("%d",&sel);
return0;
}
/*-------------------------寻找函数-------------------------*/
voidLocate(int*i,structLNode*c,intsel)//寻找函数
{
charsel_o[20];
inti1=1;
*i=1;
if(sel==1)
{
printf("请输入您需要删除员工的名字:
");
scanf("%s",&sel_o);
if(strcmp(c->data.name,sel_o)==0)
{
*i=1;
printf("员工资料已成功删除!
\n");
}
if(strcmp(c->data.name,sel_o)!
=0)
{
if(c->next==NULL)
{
*i=0;
printf("输入错误!
无法找到该员工资料!
\n");
return;
}
c=c->next;
i1++;
*i=i1;
printf("员工资料已成功删除!
!
\n");
}
}
if(sel==2)
{
printf("请输入您需要删除员工的身份证:
");
scanf("%s",&sel_o);
if(strcmp(c->data.idcard,sel_o)==0)
{
*i=1;
printf("员工资料已成功删除!
\n");
}
if(strcmp(c->data.idcard,sel_o)!
=0)
{
if(c->next==NULL)
{
*i=0;
printf("输入错误!
无法找到该员工资料!
\n");
return;
}
c=c->next;
i1++;
*i=i1;
printf("员工资料已成功删除!
!
\n");
}
}
if(sel==3)
{
printf("请输入您需要删除员工的工资卡号:
");
scanf("%s",&sel_o);
if(strcmp(c->data.scard,sel_o)==0)
{
*i=1;
printf("员工资料已成功删除!
\n");
}
if(strcmp(c->data.scard,sel_o)!
=0)
{
if(c->next==NULL)
{
*i=0;
printf("输入错误!
无法找到该员工资料!
\n");
return;
}
c=c->next;
i1++;
*i=i1;
printf("员工资料已成功删除!
!
\n");
}
}
}
/*--------------------------添加函数--------------------------*/
voidAdd(structLNode**p)//添加函数
{
intsel;
charidcard[20];
structLNode*s,*q,*b;
s=(structLNode*)malloc(sizeof(structLNode));
q=*p;
b=*p;
printf("输入数字0可以返回上一级菜单!
\n");
printf("请输入员工身份证编号:
");
fflush(stdin);
gets(idcard);
if(strcmp(idcard,"0")==0)return;
while(b)
{
if(strcmp(b->data.idcard,idcard)==0)
{
Dividing_line();
printf("您刚刚输入的员工身份证已存在,请按下任意键返回主菜单!
\n");
scanf("%d",&sel);
return;
}
b=b->next;
}
strcpy(s->data.idcard,idcard);
printf("请输入员工姓名:
");
scanf("%s",s->data.name);
getchar();
printf("请输入员工工作部门:
");
scanf("%s",s->data.section);
getchar();
printf("请输入员工技术职称:
");
scanf("%s",s->data.technical_title);
getchar();
printf("请输入员工性别(m/w):
");
scanf("%s",s->data.sex);
getchar();
printf("请输入员工年龄:
");
scanf("%d",&s->data.age);
getchar();
printf("请输入员工工作年龄:
");
scanf("%s",s->data.wage);
getchar();
printf("请输入员工家庭电话:
");
scanf("%s",s->data.hnumber);
getchar();
printf("请输入员工手机号码:
");
scanf("%s",s->data.pnumber);
getchar();
printf("请输入员工工资卡号:
");
scanf("%s",s->data.scard);
getchar();
printf("请输入员工技术职称编号:
");
scanf("%s",s->data.ttnum);
getchar();
printf("请输入员工基础工资:
");
scanf("%f",&s->data.basepay);
getchar();
printf("请输入员工职务工资:
");
scanf("%f",&s->data.postpay);
getchar();
printf("请输入员工补助:
");
scanf("%f",&s->data.allowance);
getchar();
if(q==NULL)
{
s->next=NULL;
*p=s;
}
else
{
while(q!
=NULL&&q->next!
=NULL)
{
q=q->next;
}
s->next=q->next;
q->next=s;
}
shouldsave=1;
printf("\t\t\t写入成功!
按下任意键回到主菜单!
");
scanf("%d",&sel);
return;
}
/*--------------------------添加函数--------------------------*/
voidDel(structLNode**p)//添加函数
{
structLNode*q=*p,*t;
intsel,i=0;
if(q==NULL)
{
printf("\n=====>提示:
没有资料可以删除!
\n");
return;
}
printf("1========>根据姓名删除员工数据\n");
printf("2========>根据身份证号删除员工数据\n");
printf("3========>根据工资卡卡号删除员工数据\n\n");
printf("请输入您的选择:
");
scanf("%d",&sel);
if(sel!
=1&&sel!
=2&&sel!
=3)
{
printf("\t\t\t输入错误!
按下任意键返回主菜单!
");
scanf("%d",&sel);
return;
}
if(sel==1||sel==2||sel==3)
{
Locate(&i,q,sel);
}
if(i==0)
{
printf("按下任意键回到主菜单!
");
scanf("%d",&sel);
return;
}
if(i==1)
{
t=q;
*p=q->next;
}
if(i!
=0&&i!
=1)
{
for(i--;i>1;i--)
{
q=q->next;
}
t=q->next;
q->next=t->next;
}
if(t!
=NULL)
{
free(t);
}
shouldsave=1;
printf("\t\t\t成功删除!
按下任意键回到主菜单!
");
scanf("%d",&sel);
return;
}
/*--------------------------添加函数--------------------------*/
voidDisplay(structLNode**p)//添加函数
{
structLNode*q;
q=*p;
intsel;
if(q==NULL)/**//*链表为空时*/
{
printf("\n======================>暂时没有员工数据!
按任意键返回主菜单\n");
scanf("%d",&sel);
return;
}
elseif(q->next==NULL)/**//*链表只有一个结点时*/
{
Dividing_line();
printf("员工姓名:
%s\t\t员工身份证:
%s\t\t员工工资卡号:
%s\n",q->data.name,q->data.idcard,q->data.scard);
printf("员工性别:
%s\t\t员工年龄:
%d\t\t员工工作年龄:
%s\n",q->data.sex,q->data.age,q->data.wage);
printf("员工部门:
%s\t\t员工技术职称:
%s\t\t员工技术职称编号:
%s\n",q->data.section,q->data.technical_title,q->data.ttnum);
printf("员工基本工资:
%f\t员工职务工资:
%f\t员工补助:
%f\n",q->data.basepay,q->data.postpay,q->data.allowance);
printf("员工家庭电话:
%s\t\t员工手机号码:
%s\n",q->data.hnumber,q->data.pnumber);
Dividing_line();
printf("\t\t\t\t按下任意键返回主菜单!
");
scanf("%d",&sel);
return;
}
else/**//*链表存在一个以上的结点时*/
{
while(q->next!
=NULL)/**//*显示前面的结点*/
{
Dividing_line();
printf("员工姓名:
%s\t\t员工身份证:
%s\t\t员工工资卡号:
%s\n",q->data.name,q->data.idcard,q->data.scard);
printf("员工性别:
%s\t\t员工年龄:
%d\t\t员工工作年龄:
%s\n",q->data.sex,q->data.age,q->data.wage);
printf("员工部门:
%s\t\t员工技术职称:
%s\t\t员工技术职称编号:
%s\n",q->data.section,q->data.technical_title,q->data.ttnum);
printf("员工基本工资:
%f\t员工职务工资:
%f\t员工补助:
%f\n",q->data.basepay,q->data.postpay,q->data.allowance);
printf("员工家庭电话:
%s\t\t员工手机号码:
%s\n",q->data.hnumber,q->data.pnumber);
q=q->next;
}
Dividing_line();
printf("员工姓名:
%s\t\t员工身份证:
%s\t\t员工工资卡号:
%s\n",q->data.name,q->data.idcard,q->data.scard);
printf("员工性别:
%s\t\t员工年龄:
%d\t\t员工工作年龄:
%s\n",q->data.sex,q->data.age,q->data.wage);
printf("员工部门:
%s\t\t员工技术职称:
%s\t\t员工技术职称编号:
%s\n",q->data.section,q->data.technical_title,q->data.ttnum);
printf("员工基本工资:
%f\t员工职务工资:
%f\t员工补助:
%f\n",q->data.basepay,q->data.postpay,q->data.allowance);
printf("员工家庭电话:
%s\t\t员工手机号码:
%s\n",q->data.hnumber,q->data.pnumber);/**//*显示最后一个结点*/
Dividing_line();
printf("\t\t\t\t按下任意键返回主菜单!
");
scanf("%d",&sel);
return;
}
}
/*--------------------------寻找函数--------------------------*/
voidSearch(structLNode**p)//寻找函数
{
structLNode*q,*b;
intsel;
charsel_o[20];
q=*p;
b=*p;
if(q==NULL)/**//*链表为空时*/
{
printf("\n===============================>暂时没有员工数据!
\n");
return;
}
printf("1========>根据姓名查询员工数据\n");
printf("2========>根据身份证号查询员工数据\n");
printf("3========>根据工资卡卡号查询员工数据\n");
scanf("%d",&sel);
if(sel==1)
{
printf("请输入您要查找员工的姓名:
");
scanf("%s",sel_o);
if(strcmp(q->data.name,sel_o)!
=0&&q->next!
=NULL)
{
q=q->next;
}
if(strcmp(q->data.name,sel_o)==0)
{
Dividing_line();
printf("员工姓名:
%s\t\t员工身份证:
%s\t\t员工工资卡号:
%s\n",q->data.name,q->data.idcard,q->data.scard);
printf("员工性别:
%s\t\t员工年龄:
%d\t\t员工工作年龄:
%s\n",q->data.sex,q->data.age,q->data.wage);
printf("员工部门:
%s\t\t员工技术职称:
%s\t\t员工技术职称编号:
%s\n",q->data.section,q->data.technical_title,q->data.ttnum);
printf("员工基本工资:
%f\t员工职务工资:
%f\t员工补助:
%f\n",q->data.basepay,q->data.postpay,q->data.allowance);
printf("员工家庭电话:
%s\t\t员工手机号码:
%s\n",q->data.hnumber,q->data.pnumber);
printf("\t\t\t\t按下任意键回到主菜单!
");
scanf("%d",&sel);
return;
}
printf("无法找到此员工的信息!
按下任意键返回主菜单!
");
scanf("%d",&sel);
return;
}
if(sel==2)
{
printf("请输入您要查找员工的身份证号:
");
scanf("%s",sel_o);
if(strcmp(q->data.idcard,sel_o)!
=0&&q->next!
=NULL)
{
q=q->next;
}
if(strcmp(q->data.idcard,sel_o)==0)
{
Dividing_line();
printf("员工姓名:
%s\t\t员工身份证:
%s\t\t员工工资卡号:
%s\n",q->data.name,q->data.idcard,q->data.scard);
printf("员工性别:
%s\t\t员工年龄:
%d\t\t员工工作年龄:
%s\n",q->data.sex,q->data.age,q->data.wage);
printf("员工部门:
%s\t\t员工技术职称:
%s\t\t员工技术职称编号:
%s\n",q->data.section,q->data.technical_title,q->data.ttnum);
printf("员工基本工资:
%f\t员工职务工资:
%f\t员工补助:
%f\n",q->data.basepay,q->data.postpay,q->data.allowance);
printf("员工家庭电话:
%s\t\t员工手机号码:
%s\n",q->data.hnumber,q->data.pnumber);
printf("\t\t\t\t按下任意键回到主菜单!
");
scanf("%d",&sel);
return;
}
printf("无法找到此员工的信息!
按下任意键返回主菜单