职工管理系统2.docx
- 文档编号:8888607
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:17
- 大小:17.34KB
职工管理系统2.docx
《职工管理系统2.docx》由会员分享,可在线阅读,更多相关《职工管理系统2.docx(17页珍藏版)》请在冰豆网上搜索。
职工管理系统2
#include
#include
#include
#include
typedefstructZHIGONG
{
charzhigongNumber[10];/*职工号*/
charzhigongName[20];/*职工姓名*/
charzhigongsex[4];/*职工性别*/
charzhigongage[10];/*出生年月*/
charzhigongedu[10];/*学历*/
charzhigongposition[30];/*职务*/
charzhigongwage[1000];/*工资*/
structZHIGONG*next;
}ZHIGONG;
ZHIGONG*headLink;/*链表表头指针*/
/*以下是函数声明*/
voidReadInfoFormFile(void);
voidDesplayMenu(void);
voidCreateHeadLink(void);
ZHIGONG*MallocNode(void);
voidGetInformation(ZHIGONG*t);
voidInsertOneNode(ZHIGONG*t);
voidDesplayInfoByzhigongwage(void);
voidDesplayInfoByezhigongedu(void);
voidDesplayOneNode(ZHIGONG*t);
voidDeleteNodeByzhigongNumber(void);
voidOutputInformation(void);
voidChangeMarkByzhigongName(void);
voidCompositorByTotalzhigongwage(void);
voidCompositorByTotalzhigongedu(void);
voidSaveLinkToFile(void);
intchoose;/*用于接受用户的选择*/
/*主函数*/
voidmain()
{
CreateHeadLink();
ReadInfoFormFile();
DesplayMenu();
SaveLinkToFile();
}
/************************************
函数功能:
从文件中读职工信息到链表中
************************************/
voidReadInfoFormFile(void)
{
FILE*fp;
ZHIGONG*p;
fp=fopen("zhigong.txt","r");
if(!
fp)
{
printf("文件不存在\n");
return;
}
p=MallocNode();
while(fscanf(fp,"%s%s%s%s%s%s%s",p->zhigongNumber,p->zhigongName,p->zhigongsex,
p->zhigongage,p->zhigongedu,p->zhigongposition,p->zhigongwage))
{
InsertOneNode(p);
p=MallocNode();
}
fclose(fp);
}
/************************************
函数功能:
显示菜单,根据用户的输入
完成相应的功能
************************************/
voidDesplayMenu(void)
{
ZHIGONG*p;
printf("-------请选择相应功能------------\n\n");
printf("|1录入职工信息|\n");
printf("|2显示所有职工的信息|\n");
printf("|3按工资查询|\n");
printf("|4按学历查询|\n");
printf("|5按工资排序|\n");
printf("|6按学历排序|\n");
printf("|7按职工号删除职工信息|\n");
printf("|8按职工号修改职工信息|\n");
printf("|9退出|\n\n");
scanf("%d",&choose);/*取得用户的选择*/
switch(choose)
{
case1:
p=MallocNode();/*先申请一个新结点*/
GetInformation(p);/*要求用户输入信息到新结点中*/
InsertOneNode(p);/*将新结点加到链表中*/
break;
case2:
OutputInformation();/*显示所有职工的信息*/
break;
case3:
DesplayInfoByzhigongwage();/*根据用户输入的职工工资显示该职工的信息*/
break;
case4:
DesplayInfoByezhigongedu();/*根据用户输入的职工学历显示该职工的信息*/
break;
case5:
CompositorByTotalzhigongwage();/*按工资排序*/
break;
case6:
CompositorByTotalzhigongedu();/*按学历排序*/
break;
case7:
DeleteNodeByzhigongNumber();/*根据用户输入的职工号删除该职工信息*/
break;
case8:
ChangeMarkByzhigongName();/*根据用户输入的职工姓名修改该职工信息*/
break;
case9:
SaveLinkToFile();/*保存数据后再退出*/
free(headLink);
default:
break;
}
DesplayMenu();/*递归调用*/
}
/************************************
函数功能:
建立链表表头
************************************/
voidCreateHeadLink(void)
{
ZHIGONG*p;
p=(ZHIGONG*)malloc(sizeof(ZHIGONG));
headLink=p;
p->next=NULL;
}
/****************************************
函数功能:
申请一个新结点,并将其初始化
*****************************************/
ZHIGONG*MallocNode(void)
{
ZHIGONG*p;
inti;
p=(ZHIGONG*)malloc(sizeof(ZHIGONG));
if(p==NULL)
returnNULL;
for(i=0;i<10;i++)
p->zhigongNumber[i]='\0';
for(i=0;i<20;i++)
p->zhigongName[i]='\0';
for(i=0;i<4;i++)
p->zhigongsex[i]='\0';
for(i=0;i<10;i++)
p->zhigongage[i]='\0';
for(i=0;i<10;i++)
p->zhigongedu[i]='\0';
for(i=0;i<30;i++)
p->zhigongposition[i]='\0';
for(i=0;i<1000;i++)
p->zhigongwage[i]='\0';
p->next=NULL;
returnp;
}
/************************************
函数功能:
取得用户输入的职工信息
************************************/
voidGetInformation(ZHIGONG*t)
{
printf("请输入职工号:
\n");
scanf("%s",t->zhigongNumber);
printf("请输入职工姓名:
\n");
scanf("%s",t->zhigongName);
printf("请输入职工性别:
\n");
scanf("%s",t->zhigongsex);
printf("请输入职工出生年月:
\n");
scanf("%s",t->zhigongage);
printf("请输入职工学历:
\n");
scanf("%s",t->zhigongedu);
printf("请输入职工职位:
\n");
scanf("%s",t->zhigongposition);
printf("请输入职工工资:
\n");
scanf("%s",t->zhigongwage);
}
/************************************
函数功能:
在链表的结尾处增加一个结点
************************************/
voidInsertOneNode(ZHIGONG*t)
{
ZHIGONG*p;
p=headLink;
while(p->next)
{
p=p->next;
}
p->next=t;
}
/*************************************************
函数功能:
根据用户输入的职工工资显示该职工的信息
**************************************************/
voidDesplayInfoByzhigongwage(void)
{
ZHIGONG*p;
charzhigongwage[1000];
charflag=0;
p=headLink->next;
printf("请输入职工的工资:
\n");
scanf("%s",zhigongwage);
while(p)
{
if(strcmp(p->zhigongwage,zhigongwage)==0)
{
printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\n\n");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!
flag)
printf("对不起,不存在工资为%s的职工\n",zhigongwage);
}
/************************************************
函数功能:
根据用户输入的职工学历显示该职工的信息
*************************************************/
voidDesplayInfoByezhigongedu(void)
{
ZHIGONG*p;
charzhigongedu[10];
charflag=0;
p=headLink->next;
printf("请输入职工学历:
\n");
scanf("%s",zhigongedu);
while(p)
{
if(strcmp(p->zhigongedu,zhigongedu)==0)
{
printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\n\n");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!
flag)
printf("对不起,不存在学历为%s的职工\n",zhigongedu);
}
/************************************
函数功能:
输出一个结点的信息
************************************/
voidDesplayOneNode(ZHIGONG*t)
{
printf("%s\t",t->zhigongNumber);
printf("%s\t",t->zhigongName);
printf("%s\t",t->zhigongsex);
printf("%s\t",t->zhigongage);
printf("%s\t",t->zhigongedu);
printf("%s\t",t->zhigongposition);
printf("%s\t\n",t->zhigongwage);
}
/*************************************************
函数功能:
根据用户输入的职工号删除该职工的信息
**************************************************/
voidDeleteNodeByzhigongNumber(void)
{
charzhigongNumber[10];
ZHIGONG*p,*q;
charflag=0;
printf("请输入要删除的职工的职工号:
");
scanf("%s",zhigongNumber);
p=headLink;
q=headLink->next;
while(q)
{
if(strcmp(q->zhigongNumber,zhigongNumber)==0)
{
p->next=q->next;
free(q);
flag=1;
break;
}
p=p->next;
q=q->next;
}
if(!
flag)
{
printf("不存在该职工号的职工\n");
return;
}
printf("成功删除\n");
}
/************************************
函数功能:
显示所有职工的信息
************************************/
voidOutputInformation(void)
{
ZHIGONG*p;
p=headLink->next;
if(p==NULL)
{
printf("现在没有职工信息,请先输入职工信息\n\n");
return;
}
printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\n\n");
while(p)
{
DesplayOneNode(p);
p=p->next;
}
}
/*********************************************
函数功能:
根据输入的职工姓名修改员工的信息
**********************************************/
voidChangeMarkByzhigongName(void)
{
ZHIGONG*p;
charzhigongName[10];
charflag=0;
charzhigongedu,zhigongwage,zhigongage,zhigongNumber,zhigongsex,zhigongposition;
p=headLink->next;
printf("请输入职工姓名:
\n");
scanf("%s",zhigongName);
while(p)
{
if(strcmp(p->zhigongName,zhigongName)==0)
{
printf("请输入新的职工号:
\n");
scanf("%s",&zhigongNumber);
printf("请输入新的学历:
\n");
scanf("%s",&zhigongedu);
printf("请输入新的工资:
\n");
scanf("%s",&zhigongwage);
printf("请输入新的出生年月:
\n");
scanf("%s",&zhigongage);
printf("请输入新的性别:
\n");
scanf("%s",&zhigongsex);
printf("请输入新的职位:
\n");
scanf("%s",&zhigongposition);
strcpy(p->zhigongposition,&zhigongposition);
strcpy(p->zhigongsex,&zhigongsex);
strcpy(p->zhigongNumber,&zhigongNumber);
strcpy(p->zhigongedu,&zhigongedu);
strcpy(p->zhigongwage,&zhigongwage);
strcpy(p->zhigongage,&zhigongage);
flag=1;
printf("修改成功\n");
break;
}
p=p->next;
}
if(!
flag)
printf("对不起,不存在姓名为%s的职工\n",zhigongName);
}
/************************************
函数功能:
保存链表数据到文件中
************************************/
voidSaveLinkToFile(void)
{
ZHIGONG*p;
FILE*fp;
p=headLink->next;
if(p==NULL)
{
printf("现在没有职工信息,请先输入职工信息\n\n");
return;
}
fp=fopen("zhigong.txt","w+");
if(!
fp)
{
printf("文件不存在\n");
return;
}
while(p)
{
fprintf(fp,"%s%s%s%s%s%s%s",p->zhigongNumber,p->zhigongName,p->zhigongsex,
p->zhigongage,p->zhigongedu,p->zhigongposition,p->zhigongwage);
p=p->next;
}
fclose(fp);
}
/************************************
函数功能:
按职工工资排序
************************************/
voidCompositorByTotalzhigongwage(void)
{
ZHIGONGexchange,*r,*p,*q;
r=headLink->next;
if(r==NULL)
{
printf("现在还没职工信息,请先输入职工信息\n");
return;
}
while(r)/*两层while循环实现排序*/
{
p=r;
q=r->next;
while(q)
{
if((p->zhigongwage)>(p->zhigongwage))
{
strcpy(exchange.zhigongNumber,q->zhigongNumber);/*先复制q结点信息到exchange*/
strcpy(exchange.zhigongName,q->zhigongName);
strcpy(exchange.zhigongsex,q->zhigongsex);
strcpy(exchange.zhigongage,q->zhigongage);
strcpy(exchange.zhigongedu,q->zhigongedu);
strcpy(exchange.zhigongposition,q->zhigongposition);
strcpy(exchange.zhigongwage,q->zhigongwage);
strcpy(q->zhigongNumber,p->zhigongNumber);/*再复制p结点信息到q*/
strcpy(q->zhigongName,p->zhigongName);
strcpy(q->zhigongsex,p->zhigongsex);
strcpy(q->zhigongage,p->zhigongage);
strcpy(q->zhigongedu,p->zhigongedu);
strcpy(q->zhigongposition,p->zhigongposition);
strcpy(q->zhigongwage,p->zhigongwage);
strcpy(p->zhigongNumber,exchange.zhigongNumber);/*最后复制exchange结点信息到p*/
strcpy(p->zhigongName,exchange.zhigongName);
strcpy(p->zhigongsex,exchange.zhigongsex);
strcpy(p->zhigongage,exchange.zhigongage);
strcpy(p->zhigongedu,exchange.zhigongedu);
strcpy(p->zhigongposition,exchange.zhigongposition);
strcpy(p->zhigongwage,exchange.zhigongwage);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)