用c语言编写企业人事管理信息系统.docx

上传人:b****6 文档编号:7123847 上传时间:2023-01-20 格式:DOCX 页数:24 大小:20.01KB
下载 相关 举报
用c语言编写企业人事管理信息系统.docx_第1页
第1页 / 共24页
用c语言编写企业人事管理信息系统.docx_第2页
第2页 / 共24页
用c语言编写企业人事管理信息系统.docx_第3页
第3页 / 共24页
用c语言编写企业人事管理信息系统.docx_第4页
第4页 / 共24页
用c语言编写企业人事管理信息系统.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

用c语言编写企业人事管理信息系统.docx

《用c语言编写企业人事管理信息系统.docx》由会员分享,可在线阅读,更多相关《用c语言编写企业人事管理信息系统.docx(24页珍藏版)》请在冰豆网上搜索。

用c语言编写企业人事管理信息系统.docx

用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->idid)

{

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("****************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1