职工管理系统代码解释

上传人:人*** 文档编号:564957579 上传时间:2024-01-26 格式:DOCX 页数:12 大小:20.36KB
返回 下载 相关 举报
职工管理系统代码解释_第1页
第1页 / 共12页
职工管理系统代码解释_第2页
第2页 / 共12页
职工管理系统代码解释_第3页
第3页 / 共12页
职工管理系统代码解释_第4页
第4页 / 共12页
职工管理系统代码解释_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《职工管理系统代码解释》由会员分享,可在线阅读,更多相关《职工管理系统代码解释(12页珍藏版)》请在金锄头文库上搜索。

1、#includestdio.h/printf,scanf输出,输入的头文件#includestring.h/strcpy(),strcmp()字符串函数的头文件#include #includestdlib.h/malloc函数的头文件sdtlib.h包含malloc.h#define ALLMAX 100typedef struct Node/定义一个结构体来表示链表的节点int chusheng,gongzuo,dianhua;char sex,nameALLMAX,xueliALLMAX,zhiwuALLMAX,zhuzhiALLMAX;struct Node *next;SLNode;

2、typedef struct/*定义一个结构体来表示基本员工的基本信息,和链表节点的结构体,有所不同 比链表的结构体少了一个指向Node结构体指针变量*/int chusheng,gongzuo,dianhua;char nameALLMAX,sex,xueliALLMAX,zhiwuALLMAX,zhuzhiALLMAX;DataType;void ListInitiate(SLNode *head)/开辟一个SLNode大小的空间,来初始化链表头指针,并让next指向null if(*head=(SLNode *)malloc(sizeof(SLNode)=NULL) exit(1); (

3、*head)-next=NULL;SLNode *ListInsert(SLNode *head,DataType x)/此函数功能是插入链表节点,并让节点插入合适位置SLNode *p,*q,*s; p=head-next;/首先先开辟一个节点的内存空间if(q=(SLNode *)malloc(sizeof(SLNode)=NULL) exit(1);/然后把X里的信息赋值给q链表节点 q-chusheng=x.chusheng; q-gongzuo=x.gongzuo; q-dianhua=x.dianhua; strcpy(q-name,x.name); q-sex=x.sex; st

4、rcpy(q-xueli,x.xueli); strcpy(q-zhiwu,x.zhiwu); strcpy(q-zhuzhi,x.zhuzhi); /strcpy(al,a2)函数的功能是把a2字符的值赋值给al if(head-next=NULL)/如果只有头节点,而没有其他的节点,则将q节点插入到头节点后 head-next=q;head-next-next=NULL;else/如果有其他节点元素for(;p;p=p-next)/不断向后查找,当前面节点name值小于数据X里name值并且后面的节点name值大于数据X里name值 的时候插入if(p-next!=NULL) if(str

5、cmp(p-name,x.name)next-name,x.name)0)/*strcmp(al,a2)函数的功能是比较al,a2字符的值,若al=a2,则返回值为若a1a2,则返回一个正值,若a1a2,则返回一个负值*/s=p-next;p-next=q;q-next=s;break;else if(strcmp(p-name,x.name)next=NULL)/不断先后查找,当找到最后一个节点的时候,并且前面所有的name值都小于数据X里name值,把 节点插入到链表最后p-next=q;q-next=NULL;break;if(strcmp(p-name,x.name)0)/后面所以节点

6、name的值都比数据X里name值大,就把节点插入后指针后,即所以链表节点前 s=head-next;head-next=q;q-next=s; break;/return head;void ListDelete(SLNode *head)/此函数的功能是删除链表中特定的节点,以职员name为关键字SLNode *p,*s;char x20;s=head;p=head-next;if(head-next=NULL)/当链表中无节点时,给出提示信息printf(“名单中无职工信息,无须删除! n);return;printf(请输入要删除职工的姓名:n);/获得要删除的节点的name的值sca

7、nf(%s,x);for(p;p;p=p-next)/然后不断的往后找,知道节点里的name的值,等于输入的name的值的时候,就退出此for循环, 用break语句if(strcmp(p-name,x)=0)/找到后,要删除节点的前面节点指向要删除节点的后面节点 s-next=p-next;free(p);/然后释放要删除节点的内存空间printf(删除成功!请继续操作! n);/break,退出for循环break;s=p;if(p=NULL)/如果没有找到要删除的节点,则提示信息 printf(名单中无职工信息,无须删除! n);void Listxiugai(SLNode *head)

8、/此函数为修改指定的节点,以职员name为关键字,DataType x;SLNode *p;p=head-next;if(p=NULL)/当链表中无节点时,给出提示信息printf(职工名单无职工信息,无须修改! n);return;printf(请输入要修改的职工姓名:n);/获得要修改的节点的name的值scanf(%s,x.name);printf(依次写入该职工的信息:n); for(;p;p=p-next)/不断往后找,直到找到要修改的节点,让后通过scanf获得用户重新输入的各属性值,再重新赋值 给要修改的节点Pif(strcmp(x.name,p-name)=0) scanf(%

9、s %c %d %d %s %s %s %d,p-name,&p-sex,&p-chusheng,&p-gongzuo,p-xueli,p-zhiwu,p -zhuzhi,&p-dianhua);break;if(p=NULL)/如果没有找到要修改的节点,则提示信息printf (“此职工不存在,无法修改其信息! n);printf(修改成功!请继续操作! n);void put(SLNode *head,FILE *fp)/此函数的功能是将,链表中节点的值,打印到worker.txt文件中SLNode *p;/打开要输入信息的文件if(fp=fopen(worker.txt,w)=NULL)

10、/如果没有打开,则提示错误信息printf(无法打开 worker.txt !n);exit(0);for(p=head-next;p;p=p-next)/通过for循环,不断的将链表节点信息输入到文件中fprintf(fp,%s %c %d %d %s %s %s %dn,p-name,p-sex,p-chusheng,p-gongzuo,p-xueli,p-zhi wu,p-zhuzhi,p-dianhua);/输入信息成功后,关闭打开的文件if(fclose(fp)/如果关闭失败,则提示错误信息printf(无法关闭 worker.txt !n); exit(0);void Listfi

11、nd(SLNode head)/此函数的功能是,寻找特定职员的信息int i;SLNode *p;DataType x;if(head.next=NULL)/如果没有链表节点,则提示信息printf(名单中无职工信息,无法查询! n);return;/打印出一段字符,提示用户,输入不同的数字,来执行不同的操作printf(0.退出查询系统,回到主菜单n1.对姓名进行查询n2.对出生年月进行查询n3.对工作年月进行 查询n4.对学历进行查询n5.对职务进行查询n6.对住址进行查询n7.对电话号码进行查询n);for(;)/一个空的for循环,来不断的接受用户的查询,当用户输入时,在通过break

12、语句退出此for循环 /得到用户要操作的数字,通过这个数字的不同来执行不同的查询操作scanf(%d,&i);if(i=0)/如果用户输入,则退出for循环,也就是退出查询break;if(i=1)/输入,按姓名查询p=head.next;printf(请输入姓名:);scanf(%s,x.name);i=0;for(p;p;p=p-next)/通过用户输入的name值,来查询链表各节点中name的值,如相同,则打印到屏幕上 if(strcmp(p-name,x.name)=0)+i;/设置一个i值,来判断,有木有查询到所要查询的员工信息printf(%s %c %d %d %s %s %s

13、%dn,p-name,p-sex,p-chusheng,p-gongzuo,p-xueli,p-zhiwu,p -zhuzhi,p-dianhua);if(i=0)/i=0,说明没有查询到要查询的员工信息,则提示信息printf(职工名单中不存在此人! n);/否则说明,查询成功,即给出提示信息else printf(查询成功!请继续操作! n);/*下面的程序和上面的程序一样,只是通过获得不同的i值,来通过不同的关键字来查询,当i=l.对姓名进行查询i=2.对出生年月进行查询i=3.对工作年月进行查询i=4.对学历进行查询i=5.对 职务进行查询 i=6. 对住址进行查询i=7. 对电话号码

14、进行查询,所以,下面的程序就不解释啦*/if(i=2)p=head.next;printf(请输入出生年月:);scanf(%d,&x.chusheng);i=0;for(p;p;p=p-next)if(p-chusheng=x.chusheng)+i;printf(%s %c %d %d %s %s %s %dn,p-name,p-sex,p-chusheng,p-gongzuo,p-xueli,p-zhiwu,p -zhuzhi,p-dianhua);if(i=0)printf(职工名单中没有这个时间出生的! n);else printf(查询成功!请继续操作! n);if(i=3)p=head.next;printf(请输入工作年月:);scanf(%d

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号