职工信息管理系统 单链表实现 C语言源程序Word文档格式.docx

上传人:b****1 文档编号:15400473 上传时间:2022-10-30 格式:DOCX 页数:26 大小:21.77KB
下载 相关 举报
职工信息管理系统 单链表实现 C语言源程序Word文档格式.docx_第1页
第1页 / 共26页
职工信息管理系统 单链表实现 C语言源程序Word文档格式.docx_第2页
第2页 / 共26页
职工信息管理系统 单链表实现 C语言源程序Word文档格式.docx_第3页
第3页 / 共26页
职工信息管理系统 单链表实现 C语言源程序Word文档格式.docx_第4页
第4页 / 共26页
职工信息管理系统 单链表实现 C语言源程序Word文档格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

职工信息管理系统 单链表实现 C语言源程序Word文档格式.docx

《职工信息管理系统 单链表实现 C语言源程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统 单链表实现 C语言源程序Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。

职工信息管理系统 单链表实现 C语言源程序Word文档格式.docx

charphone[20];

/*电话号码*/

charaddress[30];

/*住址*/

};

typedefstructNode

{

structemployeedata;

structNode*next;

}ListNode,*LinkList;

voidInitList(LinkList*head)/*将单链表初始化为空。

动态生成一个头结点,并将头结点的指针域置为空*/

if((*head=(LinkList)malloc(sizeof(ListNode)))==NULL)/*为头结点分配一个存储空间*/

printf("

系统分配存储空间失败!

\n"

);

exit(-1);

(*head)->

next=NULL;

/*将头结点的指针域置为空*/

}

ListNode*Locatenum(LinkListhead,charfind[])//通过职工工号查找,返回定位指针。

LinkListp;

p=head->

next;

if(!

p)//如果职工信息记录为空,返回NULL。

returnNULL;

while(p)

{

if(strcmp(p->

data.num,find)==0)

returnp;

p=p->

}

returnNULL;

ListNode*Locatename(LinkListhead,charfind[])//通过职工姓名查找,返回定位指针。

data.name,find)==0)

ListNode*Locatesalary(LinkListhead,intsalary)//通过职工工资查找,返回定位指针。

if(p->

data.salary==salary)

voidNofind()

printf("

\n***提示***:

没有找到该职工!

voidModify(LinkListL)//修改功能。

ListNode*p;

charfind[20];

L->

next)

{

\n***提示***:

没有资料可以修改!

return;

}

请你输入要修改的职工工号:

"

scanf("

%s"

find);

p=Locatenum(L,find);

if(p)

请你输入新的工号(原来是%s):

p->

data.num);

scanf("

getchar();

请你输入新的姓名(原来是%s):

data.name);

请你输入新的性别(原来是%s):

data.sex);

请你输入新的年龄(原来是%d):

data.age);

%d"

&

p->

请你输入新的学历(原来是%s):

data.education);

请你输入新的工资(原来是%d):

data.salary);

请你输入新的电话(原来是%s):

data.phone);

请你输入新的住址(原来是%s):

data.address);

资料修改成功!

saveflag=1;

else

Nofind();

//if(p)结束

}//voidModify(LinkListL)//修改功能结束

voidAdd(LinkListhead)/*录入职工信息*/

system("

cls"

ListNode*p,*r,*s;

/*实现添加操作的临时的结构体指针变量*/

intsign;

/*标记重复工号的变量*/

r=head;

s=head->

/*链表没有节点时,s=NULL;

链表有节点时,指向第一个职工节点*/

while(r->

next!

=NULL)/*如果存在后继结点时,r指针后移一个*/

r=r->

/*将指针移至于链表最末尾,准备添加记录*/

输入‘#’将退出职工信息录入,退回至主菜单!

\n\n"

while

(1)

(PS:

职工号为‘#’即退出录入功能)\n\n"

请输入职工号:

fflush(stdin);

//清除缓冲区。

gets(num);

if(strcmp(num,"

#"

)==0)/*输入‘0’,跳出while

(1),即跳出Add()函数*/

break;

s=head->

/*每次从第一个节点开始找,看num是否重复。

*/

while(s)

{

if(strcmp(s->

data.num,num)==0)

{

printf("

***提示***\n工号为:

‘%s’的职工信息已经存在!

num);

若要修改请按‘4’,放弃请按‘0’!

scanf("

sign);

if(sign==4)

Modify(head);

else

return;

}

s=s->

}//while(s)

if((p=(LinkList)malloc(sizeof(ListNode)))==NULL)//生成没赋值的新节点p。

printf("

退出程序!

exit(-1);

}

strcpy(p->

data.num,num);

printf("

请输入该职工姓名:

scanf("

getchar();

请输入该职工的性别:

(注:

男性:

male;

女性:

female)"

请输入该职工的年龄:

请输入该职工的学历:

请输入该职工的工资:

请输入该职工的电话号码:

请输入该职工的住址:

gets(p->

p->

/*表明这是链表的尾部结点*/

r->

next=p;

/*将新建的结点加入链表尾部中*/

r=p;

saveflag=1;

}//while

(1)

}//voidAdd函数结束。

voidprintline()//打印横线。

--------------------------------------------------------------------------------\n"

voidprintsubject()//打印各分类标题。

工号\t姓名性别年龄学历工资电话\t\t住址\n"

voidprintLinkList(LinkListp)//打印p结点各个数据成员的值。

%s%s%s%d%s%d%s%s\n"

data.num,p->

data.name,p->

data.sex,p->

data.age,p->

data.education,p->

data.salary,p->

data.phone,p->

voidAllemployeeinfo(LinkListhead)//显示所有职工信息。

intcount=0;

ListNode*

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

当前位置:首页 > 高等教育 > 院校资料

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

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