用c语言编写企业人事管理信息系统Word文档格式.docx

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

用c语言编写企业人事管理信息系统Word文档格式.docx

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

用c语言编写企业人事管理信息系统Word文档格式.docx

=NULL)

q=p;

p=p->

next;

free(q);

Elemtype*isidExist(Elemtype*h,intid)

Elemtype*p;

p=h->

if(p->

id==id)

returnp;

voidinputStaff(Elemtype*h)

while

(1)

输入员工编号(小于等于0,则结束输入):

"

scanf("

%d"

&

id);

if(id<

=0)

数据输入结束。

break;

p=(Elemtype*)malloc(sizeof(Elemtype));

if(p==NULL)

内存空间不足,输入结束。

p->

id=id;

输入姓名:

%s"

p->

name);

输入性别:

sex);

输入部门:

dept);

输入员工工作时间:

(yyyy-mm-dd):

%d-%d-%d"

worktime.year,&

worktime.month,&

worktime.day);

next=p;

h=p;

voidoutputHead()

编号\t姓名\t性别\t部门\t工作时间\n"

voidoutputOneStaff(Elemtype*p)

%d\t%s\t%s\t%s\t"

id,p->

name,p->

sex,p->

worktime.year,p->

worktime.month,p->

voidoutputStaff(Elemtype*h)

if(h->

next==NULL)

链表为空!

return;

outputHead();

outputOneStaff(p);

数据输出结束!

voidsaveStaff(Elemtype*h)

FILE*fp;

无数据!

fp=fopen("

d:

\\企业人事管理信息系统\\staff.txt"

"

w"

if(fp==NULL)

文件打开失败!

fprintf(fp,"

fclose(fp);

已成功存盘!

voidreadStaff(Elemtype*h)

intn;

r"

n=0;

while(!

feof(fp))

内存空间不足。

fscanf(fp,"

n++;

已从文件成功读取%d条记录!

n);

voidinsertOneStaff(Elemtype*h)

内存空间不足.\n"

请输入要插入的员工信息。

do{

输入员工编号:

id<

编号输入错误,请重新输入。

}while(p->

=0);

next=h->

已成功插入一个员工记录。

voiddeleteOneStaff(Elemtype*h)

next=p->

编号为(%d)的员工记录已从链表中删除。

free(p);

voidstraightInsertSortById(Elemtype*h)

Elemtype*t,*s,*u,*v;

链表中无数据!

s=h->

next->

while(s!

t=s;

s=s->

u=h;

v=h->

while(v!

=NULL&

&

v->

t->

id)

u=v;

v=v->

u->

next=t;

next=v;

已按照员工的编号进行排序。

排序后的结果为:

outputStaff(h);

voidsearchById(Elemtype*h,intid)

p=isidExist(h,id);

查找失败!

编号为%d的员工不存在!

id);

查找成功!

查找结果如下:

voidsearchByName(Elemtype*h,charname[])

intflag=0;

if(strcmp(p->

name,name)==0)

if(flag==0)

flag=1;

姓名为%s的员工不存在.\n"

name);

voidsearchStaff(Elemtype*h)

intsubMenuItem=1;

while(subMenuItem!

\n\n"

********查找子菜单********\n"

*1.根据员工编号查找*\n"

*2.根据员工姓名查找*\n"

*0.返回主菜单*\n"

**************************\n"

请输入所选子菜单项序号:

subMenuItem);

switch(subMenuItem)

case1:

输入要查找的员工编号:

searchById(h,id);

case2:

输入要查找的员工姓名:

searchByName(h,name);

case0:

default:

输入超出范围!

voidmain()

intmenuItemCode;

Elemtype*head;

head=init();

if(head==NULL)

menuItemCode=1;

while(menuItemCode!

********人事管理信息系统**********\n"

*1.输入员工信息*\n"

*2.输出员工信息*\n"

*3.将员工信息写入文件*\n"

*4.从文件读取员信息*\n"

*5.插入一个员工信息*\n"

*6.删除一个员工信息*\n"

*7.对员工信息进行排序*\n"

*8.对员工信息进行查找*\n"

*0.退出系统*\n"

**********************************\n"

请输入所选菜单项序号:

menuItemCode);

switch(menuItemCode)

inputStaff(head);

outputStaff(head);

case3:

saveStaff(head);

case4:

readStaff(head);

case5:

insertOneStaff(head);

break;

case6:

deleteOneStaff(head);

case7:

straightInsertSortById(head);

case8:

searchStaff(head);

term(head);

方法二

#defineMAXSIZE100

structsequence

Elemtypeelem[MAXSIZE];

intlen;

structsequencev;

voidinputstaff()

inti,n;

请输入员工个数:

n);

if(n<

0)

for(i=0;

i<

n;

i++)

输入第%d个企业人员的编号:

i+1);

v.elem[i].id);

输入企业人员姓名:

v.elem[i].name);

输入企业人员性别:

v.elem[i].sex);

输入企业人员部门:

v.elem[i].dept);

输入企业人员工作时间(yyyy-mm-dd):

v.elem[i].worktime.year,&

v.elem[i].worktime.month,&

v.elem[i].worktime.day);

v.len=n;

voidoutputstaff()

inti;

if(v.len==0)

\n无数据!

v.len;

%d\t%s\t%s\t%s\t"

v.elem[i].id,v.elem[i].name,v.elem[i].sex,v.elem[i].dept);

%d-%d-%d\n"

v.elem[i].worktime.year,v.elem[i].worktime.month,v.elem[i].worktime.day);

voidsavestaff()

\\人事管理信息系统\\staff.txt"

文件打失败!

{fprintf(fp,"

voidreadstaff()

文件打开失败!

i=0;

%d%s%s%s"

v.elem[i].id,v.elem[i].name,v.elem[i].sex,v.elem[i].dept);

i++;

v.len=i;

已从文件成功读取%d条记录!

v.len);

voidinsertOneStaff()

Elemtypes;

inti,pos;

if(v.len==MAXSIZE)

表已满!

请输入插入位置:

pos);

if(pos<

0||pos>

MAXSIZE)

插入位置出错!

请输入要插入的员工记录。

输入企业人员编号:

s.id);

s.name);

s.sex);

s.dept);

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;

插入成功!

voiddeleteOneStaff()

表空!

请输入要删除的员工记录的位置:

if(pos<

v.len-1)

删除的位置出错!

for(i=pos+1;

=v.len-1;

v.elem[i-1]=v.elem[i];

v.len=v.len-1;

删除成功!

voidbubbleSortById()

inti,j,n;

Elemtypetemp;

inttag;

n=v.len;

for(tag=1,i=0;

=n-1&

tag==1;

tag=0;

for(j=n-1;

j>

i;

j--)

if(v.elem[j].id<

v.elem[j-1].id)

temp=v.elem[j];

v.elem[j]=v.elem[j-1];

v.elem[j-1]=temp;

tag=1;

已按照员工编号递增排序。

排序后的结果为:

outputstaff();

voidoutputOneStaff(Elemtypew)

w.id,w.name,w.sex,w.dept);

w.worktime.year,w.worktime.month,w.worktime.day);

intisIdExist(intid)

intn,i=0;

while(i<

n&

v.elem[i].id!

=id)

if(i<

n)

returni;

return-1;

voidseqSearchById(intid)

intpos;

pos=isIdExist(id);

if(pos!

=-1)

查找成功!

查找结果如下:

outputOneStaff(v.elem[pos]);

查找失败!

编号为%d的员工不存在。

voidseqSearchByName(charname[])

intn,i;

while(i<

if(strcmp(v.elem[i].name,name)==0)

outputOneStaff(v.elem[i]);

姓名为%s的员工不存在。

voidsearchStaff()

****************

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

当前位置:首页 > PPT模板 > 可爱清新

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

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