用c语言编写企业人事管理信息系统.docx
- 文档编号:7123847
- 上传时间:2023-01-20
- 格式:DOCX
- 页数:24
- 大小:20.01KB
用c语言编写企业人事管理信息系统.docx
《用c语言编写企业人事管理信息系统.docx》由会员分享,可在线阅读,更多相关《用c语言编写企业人事管理信息系统.docx(24页珍藏版)》请在冰豆网上搜索。
用c语言编写企业人事管理信息系统
企业人事管理信息系统(两种方法)
方法一
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
structdate
{
intyear,month,day;
};
typedefstructmanrecord
{
intid;
charname[20];
charsex[10];
chardept[20];
structdateworktime;
structmanrecord*next;
}Elemtype;
Elemtype*init()
{
Elemtype*h;
h=(Elemtype*)malloc(sizeof(Elemtype));
if(h==NULL)
{
printf("内存空间不足!
\n");
returnNULL;
}
else
{
h->next=NULL;
returnh;
}
}
voidterm(Elemtype*h)
{
Elemtype*p,*q;
p=h;
while(p!
=NULL)
{
q=p;
p=p->next;
free(q);
}
}
Elemtype*isidExist(Elemtype*h,intid)
{
Elemtype*p;
p=h->next;
while(p!
=NULL)
if(p->id==id)
returnp;
else
p=p->next;
returnNULL;
}
voidinputStaff(Elemtype*h)
{
Elemtype*p;
intid;
while
(1)
{
printf("输入员工编号(小于等于0,则结束输入):
");
scanf("%d",&id);
if(id<=0)
{
printf("数据输入结束。
\n");
break;
}
p=(Elemtype*)malloc(sizeof(Elemtype));
if(p==NULL)
{
printf("内存空间不足,输入结束。
\n");
break;
}
p->id=id;
printf("输入姓名:
\n");
scanf("%s",p->name);
printf("输入性别:
\n");
scanf("%s",p->sex);
printf("输入部门:
\n");
scanf("%s",p->dept);
printf("输入员工工作时间:
(yyyy-mm-dd):
\n");
scanf("%d-%d-%d",&p->worktime.year,&p->worktime.month,&p->worktime.day);p->next=NULL;
h->next=p;
h=p;
}
}
voidoutputHead()
{
printf("编号\t姓名\t性别\t部门\t工作时间\n");
}
voidoutputOneStaff(Elemtype*p)
{
printf("%d\t%s\t%s\t%s\t",p->id,p->name,p->sex,p->dept);
printf("%d-%d-%d",p->worktime.year,p->worktime.month,p->worktime.day);
printf("\n");
}
voidoutputStaff(Elemtype*h)
{
Elemtype*p;
if(h->next==NULL)
{
printf("链表为空!
\n");
return;
}
outputHead();
p=h->next;
while(p!
=NULL)
{
outputOneStaff(p);
p=p->next;
}
printf("数据输出结束!
\n");
}
voidsaveStaff(Elemtype*h)
{
FILE*fp;
Elemtype*p;
if(h->next==NULL)
{
printf("无数据!
\n");
return;
}
fp=fopen("d:
\\企业人事管理信息系统\\staff.txt","w");
if(fp==NULL)
{
printf("文件打开失败!
\n");
return;
}
p=h->next;
while(p!
=NULL)
{
fprintf(fp,"\n");
fprintf(fp,"%d\t%s\t%s\t%s\t",p->id,p->name,p->sex,p->dept);
fprintf(fp,"%d-%d-%d",p->worktime.year,p->worktime.month,p->worktime.day);p=p->next;
}
fclose(fp);
printf("已成功存盘!
\n");
}
voidreadStaff(Elemtype*h)
{
intn;
FILE*fp;
Elemtype*p;
fp=fopen("d:
\\企业人事管理信息系统\\staff.txt","r");
if(fp==NULL)
{
printf("文件打开失败!
\n");
return;
}
n=0;
while(!
feof(fp))
{
p=(Elemtype*)malloc(sizeof(Elemtype));
if(p==NULL)
{
printf("内存空间不足。
\n");
break;
}
fscanf(fp,"%d\t%s\t%s\t%s\t",&p->id,p->name,p->sex,p->dept);
fscanf(fp,"%d-%d-%d",&p->worktime.year,&p->worktime.month,&p->worktime.day);n++;
p->next=NULL;
h->next=p;
h=p;
}
fclose(fp);
printf("已从文件成功读取%d条记录!
\n",n);
}
voidinsertOneStaff(Elemtype*h)
{
Elemtype*p;
p=(Elemtype*)malloc(sizeof(Elemtype));
if(p==NULL)
{
printf("内存空间不足.\n");
return;
}
printf("请输入要插入的员工信息。
\n");
do{
printf("输入员工编号:
\n");
scanf("%d",&p->id);
if(p->id<=0)
printf("编号输入错误,请重新输入。
\n");
}while(p->id<=0);
printf("输入姓名:
\n");
scanf("%s",p->name);
printf("输入性别:
\n");
scanf("%s",p->sex);
printf("输入部门:
\n");
scanf("%s",p->dept);
printf("输入员工工作时间:
(yyyy-mm-dd):
\n");
scanf("%d-%d-%d",&p->worktime.year,&p->worktime.month,&p->worktime.day);p->next=h->next;
h->next=p;
printf("已成功插入一个员工记录。
\n");
}
voiddeleteOneStaff(Elemtype*h)
{
Elemtype*p;
if(h->next==NULL)
{
printf("链表为空!
\n");
return;
}
p=h->next;
h->next=p->next;
printf("编号为(%d)的员工记录已从链表中删除。
\n",p->id);
free(p);
}
voidstraightInsertSortById(Elemtype*h)
{
Elemtype*t,*s,*u,*v;
if(h->next==NULL)
{
printf("链表中无数据!
\n");
return;
}
s=h->next->next;
h->next->next=NULL;
while(s!
=NULL)
{
t=s;
s=s->next;
u=h;
v=h->next;
while(v!
=NULL&&v->id
{
u=v;
v=v->next;
}
u->next=t;
t->next=v;
}
printf("已按照员工的编号进行排序。
排序后的结果为:
\n");
outputStaff(h);
}
voidsearchById(Elemtype*h,intid)
{
Elemtype*p;
p=isidExist(h,id);
if(p==NULL)
printf("查找失败!
编号为%d的员工不存在!
\n",id);
else
{
printf("查找成功!
查找结果如下:
\n");
outputHead();
outputOneStaff(p);
}
}
voidsearchByName(Elemtype*h,charname[])
{
intflag=0;
Elemtype*p;
p=h->next;
while(p!
=NULL)
{
if(strcmp(p->name,name)==0)
{
if(flag==0)
{
flag=1;
printf("查找成功!
查找结果如下:
\n");
outputHead();
}
outputOneStaff(p);
}
p=p->next;
}
if(flag==0)
printf("查找失败!
姓名为%s的员工不存在.\n",name);
}
voidsearchStaff(Elemtype*h)
{
intid;
charname[20];
intsubMenuItem=1;
while(subMenuItem!
=0)
{
printf("\n\n");
printf("********查找子菜单********\n");
printf("*1.根据员工编号查找*\n");
printf("*2.根据员工姓名查找*\n");
printf("*0.返回主菜单*\n");
printf("**************************\n");
printf("请输入所选子菜单项序号:
");
scanf("%d",&subMenuItem);
switch(subMenuItem)
{
case1:
printf("输入要查找的员工编号:
");
scanf("%d",&id);
searchById(h,id);
break;
case2:
printf("输入要查找的员工姓名:
");
scanf("%s",name);
searchByName(h,name);
break;
case0:
break;
default:
printf("输入超出范围!
\n");
break;
}
}
}
voidmain()
{
intmenuItemCode;
Elemtype*head;
head=init();
if(head==NULL)
return;
menuItemCode=1;
while(menuItemCode!
=0)
{
printf("\n\n");
printf("********人事管理信息系统**********\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("*0.退出系统*\n");
printf("**********************************\n");
printf("请输入所选菜单项序号:
");
scanf("%d",&menuItemCode);
switch(menuItemCode)
{
case1:
inputStaff(head);break;
case2:
outputStaff(head);break;
case3:
saveStaff(head);break;
case4:
readStaff(head);break;
case5:
insertOneStaff(head);break;
case6:
deleteOneStaff(head);break;
case7:
straightInsertSortById(head);break;
case8:
searchStaff(head);break;
case0:
break;
default:
printf("输入超出范围!
\n");break;
}
}
term(head);
}
方法二
#include"stdio.h"
#include"string.h"
#defineMAXSIZE100
structdate
{
intyear,month,day;
};
typedefstructmanrecord
{
intid;
charname[20];
charsex[10];
chardept[20];
structdateworktime;
}Elemtype;
structsequence
{
Elemtypeelem[MAXSIZE];
intlen;
};
structsequencev;
voidinputstaff()
{
inti,n;
printf("请输入员工个数:
\n");
scanf("%d",&n);
if(n<0)
return;
for(i=0;i { printf("输入第%d个企业人员的编号: \n",i+1); scanf("%d",&v.elem[i].id); printf("输入企业人员姓名: \n"); scanf("%s",v.elem[i].name); printf("输入企业人员性别: \n"); scanf("%s",v.elem[i].sex); printf("输入企业人员部门: \n"); scanf("%s",v.elem[i].dept); printf("输入企业人员工作时间(yyyy-mm-dd): \n"); scanf("%d-%d-%d",&v.elem[i].worktime.year,&v.elem[i].worktime.month,&v.elem[i].worktime.day); } v.len=n; } voidoutputstaff() { inti; if(v.len==0) { printf("\n无数据! \n"); return; } printf("编号\t姓名\t性别\t部门\t工作时间\n"); for(i=0;i { printf("%d\t%s\t%s\t%s\t",v.elem[i].id,v.elem[i].name,v.elem[i].sex,v.elem[i].dept);printf("%d-%d-%d\n",v.elem[i].worktime.year,v.elem[i].worktime.month,v.elem[i].worktime.day); } } voidsavestaff() { inti; FILE*fp; if(v.len==0) { printf("\n无数据! \n"); return; } fp=fopen("d: \\人事管理信息系统\\staff.txt","w"); if(fp==NULL) { printf("文件打失败! \n"); return; } for(i=0;i {fprintf(fp,"\n"); fprintf(fp,"%d\t%s\t%s\t%s\t",v.elem[i].id,v.elem[i].name,v.elem[i].sex,v.elem[i].dept);fprintf(fp,"%d-%d-%d",v.elem[i].worktime.year,v.elem[i].worktime.month,v.elem[i].worktime.day); } fclose(fp); printf("已成功存盘! \n"); } voidreadstaff() { inti; FILE*fp; fp=fopen("d: \\人事管理信息系统\\staff.txt","r"); if(fp==NULL) { printf("文件打开失败! \n"); return; } i=0; while(! feof(fp)) { fscanf(fp,"%d%s%s%s",&v.elem[i].id,v.elem[i].name,v.elem[i].sex,v.elem[i].dept);fscanf(fp,"%d-%d-%d",&v.elem[i].worktime.year,&v.elem[i].worktime.month,&v.elem[i].worktime.day); i++; } v.len=i; fclose(fp); printf("已从文件成功读取%d条记录! \n",v.len); } voidinsertOneStaff() { Elemtypes; inti,pos; if(v.len==MAXSIZE) { printf("表已满! \n"); return; } printf("请输入插入位置: "); scanf("%d",&pos); if(pos<0||pos>MAXSIZE) { printf("插入位置出错! \n"); return; } printf("请输入要插入的员工记录。 \n"); printf("输入企业人员编号: \n"); scanf("%d",&s.id); printf("输入企业人员姓名: \n"); scanf("%s",s.name); printf("输入企业人员性别: \n"); scanf("%s",s.sex); printf("输入企业人员部门: \n"); scanf("%s",s.dept); printf("输入企业人员工作时间(yyyy-mm-dd): \n"); scanf("%d-%d-%d",&s.worktime.year,&s.worktime.month,&s.worktime.day); for(i=v.len-1;i>=pos;i--) v.elem[i+1]=v.elem[i]; v.elem[pos]=s; v.len=v.len+1; printf("插入成功! \n"); } voiddeleteOneStaff() { inti,pos; if(v.len==0) { printf("表空! \n"); return; } printf("请输入要删除的员工记录的位置: "); scanf("%d",&pos); if(pos<0||pos>v.len-1) { printf("删除的位置出错! \n"); return; } for(i=pos+1;i<=v.len-1;i++) v.elem[i-1]=v.elem[i]; v.len=v.len-1; printf("删除成功! \n"); } voidbubbleSortById() { inti,j,n; Elemtypetemp; inttag; n=v.len; for(tag=1,i=0;i<=n-1&&tag==1;i++) { tag=0; for(j=n-1;j>i;j--) if(v.elem[j].id { temp=v.elem[j]; v.elem[j]=v.elem[j-1]; v.elem[j-1]=temp; tag=1; } } printf("已按照员工编号递增排序。 排序后的结果为: \n"); outputstaff(); } voidoutputHead() { printf("编号\t姓名\t性别\t部门\t工作时间\n"); } voidoutputOneStaff(Elemtypew) { printf("%d\t%s\t%s\t%s\t",w.id,w.name,w.sex,w.dept); printf("%d-%d-%d",w.worktime.year,w.worktime.month,w.worktime.day); printf("\n"); } intisIdExist(intid) { intn,i=0; n=v.len; while(i =id) i++; if(i returni; else return-1; } voidseqSearchById(intid) { intpos; pos=isIdExist(id); if(pos! =-1) { printf("查找成功! 查找结果如下: \n"); outputHead(); outputOneStaff(v.elem[pos]); } else printf("查找失败! 编号为%d的员工不存在。 \n",id); } voidseqSearchByName(charname[]) { intflag=0; intn,i; n=v.len; i=0; while(i { if(strcmp(v.elem[i].name,name)==0) { if(flag==0) { flag=1; printf("查找成功! 查找结果如下: \n"); outputHead(); } outputOneStaff(v.elem[i]); } i++; } if(flag==0) printf("查找失败! 姓名为%s的员工不存在。 \n",name); } voidsearchStaff() { intid; charname[20]; intsubMenuItem=1; while(subMenuItem! =0) { printf("\n\n"); printf("****************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编写 企业 人事 管理信息系统
![提示](https://static.bdocx.com/images/bang_tan.gif)