员工管理程序.docx
《员工管理程序.docx》由会员分享,可在线阅读,更多相关《员工管理程序.docx(25页珍藏版)》请在冰豆网上搜索。
员工管理程序
/***************************************************
头文件
***************************************************/
#include
#include
#include
#defineN100
voidmenu_handle();/*函数处理菜单*/
intmenu_choose();/*函数选择菜单*/
voidinput_worker();/*创建文件并对工人信息输入函数*/
voidsave_file(intn);/*文件保存*/
intload();/*提取员工数*/
voidmessage_output();/*员工信息浏览函数*/
voidadd_worker();/*员工添加函数*/
voiddele_worker();/*员工信息删除函数*/
voidfine();/*员工信息查询函数*/
voidfine_num();/*员工号查询函数*/
voidfine_name();/*按姓名查询函数*/
voidsort_age();/*按年龄排序函数*/
voidsort_pay();/*按工资排序函数*/
voidsort();/*排序函数处理*/
voidchange(structworker*p,intn);/*交换元素*/
/***************************************************
主函数
***************************************************/
voidmain()
{
printf("\n\t\t\t∞∞∞∞计算机工程系∞∞∞∞\n");
printf("\n\t\t\t\t\t\t计Y111班");
printf("\n\t\t\t\t\t\t朱建国\n");
menu_handle();/*调用菜单函数*/
}
/***************************************************
菜单文件
***************************************************/
/***************************************************
菜单选择函数
***************************************************/
intmenu_chooose()
{
intshuzi;/*定义数字选择的变量s*/
chars[2];
//printf("\n");
printf("\t∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞\n");
printf("\t*欢*1.员工信息输入*职*\n");
printf("\t**2.员工信息输出**\n");
printf("\t*迎*3.添加员工信息*工*\n");
printf("\t**4.删除员工信息**\n");
printf("\t*进*5.员工信息查询*档*\n");
printf("\t**6.员工信息排序**\n");
printf("\t*入*7.退出程序*案*\n");
printf("\t∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞\n\n");
printf("***********请选择1-7*********\n");/*选择菜单*/
for(;;)
{
scanf("%s",s);/*输入数字*/
shuzi=atoi(s);/*字符转换*/
if(shuzi>7||shuzi<1)
printf("\t\t\t输入错误\n\n\t\t\t请重新输入1-7!
\n\n\t\t\t退出请按7!
\n");
else
break;
}
return(shuzi);
}
/***************************************************
菜单处理函数
***************************************************/
voidmenu_handle()
{
for(;;)
{
switch(menu_chooose())/*调用菜单选择函数*/
{
case1:
printf("\t\t\t◆◆◆员工信息输出◆◆◆\n\n");
input_worker();
break;
case2:
system("cls");
printf("\t\t\t◆◆◆员工信息输出◆◆◆\n");
message_output();
break;
case3:
system("cls");
printf("\t\t\t◆◆◆添加员工信息◆◆◆\n\n");
add_worker();
break;
case4:
system("cls");
printf("\t\t\t◆◆◆删除员工信息◆◆◆\n\n");
dele_worker();
break;
case5:
system("cls");
printf("\t\t\t◆◆◆员工信息查询◆◆◆\n\n");
fine();
break;
case6:
system("cls");
printf("\t\t\t◆◆◆员工信息排序◆◆◆\n\n");
sort();
break;
case7:
system("cls");
printf("\n\n\n\n\n\n\n\n\n\n\n\\n\n");
printf("\t\t\t☆★☆★☆☆\n");
printf("\t\t\t☆★★★★☆\n");
printf("\t\t\t☆★★★☆\n");
printf("\t\t\t☆★谢谢使用★☆\n");
printf("\t\t\t☆★再见~★☆\n");
printf("\t\t\t☆★★☆\n");
printf("\t\t\t★★\n");
printf("\t\t\t★\n\n");
printf("\n\n\n\n\n\n\nn");
return;
}
}
}
structworker
{
intnum;/*--------员工号*/
charname[10];/*----姓名*/
charsex[10];/*-----性别*/
intage;/*--------年龄*/
charposition[10];/*----职位*/
intpay;/*---------工资*/
}work[N];
/***************************************************
员工信息输入函数
***************************************************/
voidinput_worker()/*定义一个员工信息输入的函数*/
{
intn,i;
printf("输入员工数:
");
scanf("%d",&n);
FILE*fp;/*定义一个指向员工信息数组的指针文件*/
structworker*p;/*定义员工数组及指向员工的指针*/
if((fp=fopen("workermessage","wb"))==NULL)/*创建一个存储员工信息的文件*/
{
printf("不能打开该文件");
exit(0);
}
for(p=work,i=1;p{
printf("\t\t\t【输入第%d名员工】\n\n",i);
printf("输入员工号:
");
scanf("%d",&p->num);
printf("\n");
printf("输入姓名:
");
scanf("%s",p->name);
printf("\n");
printf("输入性别:
");
scanf("%s",p->sex);
printf("\n");
printf("输入年龄:
");
scanf("%d",&p->age);
printf("\n");
printf("输入职位:
");
scanf("%s",p->position);
printf("\n");
printf("输入工资:
");
scanf("%d",&p->pay);
printf("\n\n\n");
fwrite(p,sizeof(structworker),1,fp);
}
fclose(fp);
printf("输入完成\n\n\n\n\n");
}
/***************************************************
提取员工数
***************************************************/
intload()/*定义一个能获取员工数的函数*/
{
FILE*fp;/*定义指针文件*/
inti;
structworker*p=work;/*定义一个指向结构体数组的指针*/
if((fp=fopen("workermessage","rb"))==NULL)
{
printf("不能打开该文件");
exit(0);
}
for(i=0;feof(fp)==0;i++)
fread(p,sizeof(structworker),1,fp);
fclose(fp);
return(i-1);/*以返还的形式找到员工数*/
}
/***************************************************
文件存储函数
***************************************************/
voidsave_file(intn)/*定义一个文件储存函数*/
{
inti;
FILE*fp;
if((fp=fopen("workermessage","wb"))==NULL)/*创建一个存储员工信息的文件*/
{
printf("不能打开该文件");
exit(0);
}
for(i=0;i{
fwrite(&work[i],sizeof(structworker),1,fp);
}
fclose(fp);
}
/***************************************************
员工信息浏览函数
***************************************************/
voidmessage_output()/*员工信息输出函数*/
{
intn;/*定义一个员工数变量*/
n=load();/*将员工数赋值给n*/
structworker*p;/*定义员工数组及指向员工的指针*/
FILE*fp;
if((fp=fopen("workermessage","rb"))==NULL)/*打开存储员工信息的文件*/
{
printf("不能打开该文件");
exit(0);
}
printf("\n\t\t员工号\t姓名\t性别\t年龄\t职位\t工资\n");
for(p=work;p{
fread(p,sizeof(structworker),1,fp);/*读文件*/
printf("\n\t\t%d\t%s\t%s\t%d\t%s\t%d\n",p->num,p->name,p->sex,p->age,p->position,p->pay);/*输出员工信息*/
}
fclose(fp);
}
/***************************************************
员工信息添加函数
***************************************************/
voidadd_worker()/*定义一个员工信息添加函数*/
{
intn,m,i,j=1;/*定义添加的员员工数*/
m=load();
printf("输入添加多少名员工:
");
scanf("%d",&n);/*输入员工数*/
FILE*fp;/*定义一个指向员工信息数组的指针文件*/
structworker*p;/*定义员工数组及指向员工的指针*/
if((fp=fopen("workermessage","ab"))==NULL)/*创建一个存储员工信息的文件*/
{
printf("不能打开该文件");
exit(0);
}
for(p=work+m,i=m;i{
printf("\t\t\t【输入第%d名员工】\n\n",j);
printf("输入员工号:
");
scanf("%d",&p->num);
printf("\n");
printf("输入姓名:
");
scanf("%s",p->name);
printf("\n");
printf("输入性别:
");
scanf("%s",p->sex);
printf("\n");
printf("输入年龄:
");
scanf("%d",&p->age);
printf("\n");
printf("输入职位:
");
scanf("%s",p->position);
printf("\n");
printf("输入工资:
");
scanf("%d",&p->pay);
printf("\n");
fwrite(p,sizeof(structworker),1,fp);
}
fclose(fp);
printf("输入完成\n\n\n\n\n");
}
/***************************************************
员工信息删除函数
***************************************************/
voiddele_worker()/*定义员工信息删除函数*/
{
intn,m,i,j,flag,x;/*定义员工数变量、选择数字、标志*/
charwk[10];/*定义一个数组用于提醒输入错误*/
structworker*p;/*定义结构体指针*/
n=load();/*调用提取员工数的函数*/
message_output();/*调用员工信息输出函数*/
p=work;/*指针p指向结构体数组*/
loop:
printf("输入要删除的姓名");
scanf("%s",wk);
for(i=0;i{
if(strcmp((p+i)->name,wk)==0)
{
printf("找到此人\n此人原本信息:
\n");
flag=1;
printf("\n\t\t员工号\t姓名\t性别\t年龄\t职位\t工资\n");
printf("\n\t\t%d\t%s\t%s\t%d\t%s\t%d\n",(p+i)->num,(p+i)->name,(p+i)->sex,(p+i)->age,(p+i)->position,(p+i)->pay);
printf("\n是否删除?
\n是请按1\n否请按0\n");
scanf("%d",&m);
if(m==1)
{
for(j=i;j{
/*(p+j)->num=(p+j+1)->num;
strcpy((p+j)->name,(p+(j+1))->name);
strcpy((p+j)->sex,(p+j+1)->sex);
(p+j)->age,(p+j+1)->age;
strcpy((p+j)->position,(p+j+1)->position);
(p+j)->pay,(p+j+1)->pay;
n=load();*/
work[j].num=work[j+1].num;
strcpy(work[j].name,work[j+1].name);
strcpy(work[j].sex,work[j+1].sex);
work[j].age=work[j+1].age;
strcpy(work[j].position,work[j+1].position);
work[j].pay=work[j+1].pay;
}
}
}
}
if(flag!
=1)
{
printf("\t\t\t\t查无此人!
\n");
}
if(flag==1)
n=n-1;
save_file(n);/*保存文件*/
message_output();/*刷新数组*/
printf("继续删除请按
(1)\n退出请按
(2)\n");/*选择菜单*/
scanf("%d",&x);
switch(x)
{
case1:
gotoloop;
break;
case2:
printf("谢谢使用!
\n");
break;
}
}
/***************************************************
员工信息查询函数
***************************************************/
voidfine()
{
intm;/*定义变量提示输入*/
chars[10];/*定义一个数组用于提醒输入*/
printf("按员工号查询请按1:
\n\n按姓名查询请按2:
\n\n退出查询请按3:
\n");
for(;;)/*防止输入错误*/
{
scanf("%s",s);/*输入数字*/
m=atoi(s);/*字符转换*/
if(m<1||m>3)
printf("\t\t\t输入错误!
请重新输入1-3\n");
else
break;
}
switch(m)/*选择查询方式*/
{
case1:
fine_num();/*调用按员工号查询函数*/
break;
case2:
fine_name();/*调用按姓名查询函数*/
break;
case3:
printf("谢谢使用!
\n");
break;
}
}
/***************************************************
按员工号查询函数
***************************************************/
voidfine_num()
{
intm,n,q,x,flag;/*定义m存储员工号,n表示员工数,q提醒输入*/
chars[10];/*用于提醒输入*/
structworker*p;/*结构体指针*/
n=load();/*调用提取数组地址函数*/
message_output();/*调用信息输出函数*/
system("cls");/*清屏*/
loop:
printf("输入要查询的员工号:
");/*返回输入*/
scanf("%d",&m);
for(p=work;p{if(m==p->num)/*如果查到的数组与输入的数组相同*/
{
printf("此员工信息如下:
\n\n");
printf("\n\t\t员工号\t姓名\t性别\t年龄\t职位\t工资\n");
printf("\n\t\t%d\t%s\t%s\t%d\t%s\t%d\n",p->num,p->name,p->sex,p->age,p->position,p->pay);
flag=1;
printf("查询下一个请按
(1)\n返回上一级请按
(2)\n退出请按(3)\n");
scanf("%d",&x);
system("cls");
switch(x)/*用于选择是否继续查询*/
{
case1:
gotoloop;
break;
case2:
fine();
break;
case3:
printf("谢谢使用!
\n");
break;
}
}
}
if(flag!
=1)
{
printf("查无此人!
\n");
for(;;)/*用于防止输入错误*/
{
printf("重新输