1、 char phone20; /* 电话号码 */ char address30; /* 住址 */;typedef struct Node struct employee data; struct Node *next;ListNode,*LinkList;void InitList(LinkList *head) /*将单链表初始化为空。动态生成一个头结点,并将头结点的指针域置为空*/ if(*head=(LinkList)malloc(sizeof(ListNode)=NULL) /*为头结点分配一个存储空间*/ printf(系统分配存储空间失败!n); exit(-1); (*hea
2、d)-next=NULL; /*将头结点的指针域置为空*/ListNode *Locatenum(LinkList head,char find) /通过职工工号查找,返回定位指针。 LinkList p; p=head-next; if(!p) /如果职工信息记录为空,返回NULL。 return NULL; while(p) if(strcmp(p-data.num,find)=0) return p; p=p- return NULL;ListNode *Locatename(LinkList head,char find) /通过职工姓名查找,返回定位指针。data.name,find
3、)=0)ListNode *Locatesalary(LinkList head,int salary) /通过职工工资查找,返回定位指针。 if(p-data.salary=salary)void Nofind() printf(n*提示*:没有找到该职工!void Modify(LinkList L) /修改功能。 ListNode *p; char find20;L-next) n*提示*:没有资料可以修改! return; 请你输入要修改的职工工号: scanf(%s,find); p=Locatenum(L,find); if(p) 请你输入新的工号(原来是%s):,p-data.n
4、um); 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)结束 /void Modify(LinkList L) /修改功
5、能结束void Add(LinkList head) /* 录入职工信息 */ system(cls ListNode *p,*r,*s; /* 实现添加操作的临时的结构体指针变量 */ int sign; /* 标记重复工号的变量 */ r=head; s=head- /* 链表没有节点时,s=NULL;链表有节点时,指向第一个职工节点 */ while(r-next!=NULL) /* 如果存在后继结点时,r指针后移一个 */ r=r- /* 将指针移至于链表最末尾,准备添加记录 */输入#将退出职工信息录入,退回至主菜单!nn while(1)(PS:职工号为#即退出录入功能)nn请输入
6、职工号: 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
7、)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)/void
8、 Add函数结束。void printline() /打印横线。-nvoid printsubject() /打印各分类标题。 工 号t 姓 名 性 别 年 龄 学 历 工 资 电 话tt 住 址nvoid printLinkList(LinkList p) /打印p结点各个数据成员的值。 %s %s %s %d %s %d %s %sndata.num,p-data.name,p-data.sex,p-data.age,p-data.education,p-data.salary,p-data.phone,p-void Allemployeeinfo(LinkList head) /显示所有职工信息。 int count=0; ListNode *
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1