员工管理系统.doc
《员工管理系统.doc》由会员分享,可在线阅读,更多相关《员工管理系统.doc(18页珍藏版)》请在三一办公上搜索。
1、#include #include #include #define ALLMAX 200 /总共统计的职工的人数typedef struct Nodelong int born_date,age,tele_num,job_num; char sex,nameALLMAX,degreeALLMAX,jobALLMAX,addressALLMAX;struct Node *next;SLNode;typedef structlong int born_date,age,tele_num,job_num;char nameALLMAX,sex,degreeALLMAX,jobALLMAX,addr
2、essALLMAX;DataType;void ListInitiate(SLNode *head)/链表初始化if(*head=(SLNode *)malloc(sizeof(SLNode)=NULL) exit(1);/动态分配存储空间(*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);/动态分配存储空间q-born_date=x.born_date
3、; q-age=x.age;q-tele_num=x.tele_num;q-job_num=x.job_num;strcpy(q-name,x.name);q-sex=x.sex; strcpy(q-degree,x.degree);strcpy(q-job,x.job); strcpy(q-address,x.address);if(head-next=NULL)/如果只有链表的头结点,没有其他的结点,直接插入在头结点后面head-next=q;head-next-next=NULL;else/链表非空for(;p;p=p-next)if(p-next!=NULL)if(strcmp(p-n
4、ame,x.name)next-name,x.name)0)/位于两个结点之间s=p-next;p-next=q;q-next=s;break;/else if(strcmp(p-name,x.name)=0)break; /如果姓名相同则不插入信息else if(strcmp(p-name,x.name)next=NULL)/链表非空,并且在排序中是最后一个p-next=q;q-next=NULL;break;if(strcmp(p-name,x.name)0)/位于链表头结点之后的位置s=head-next;head-next=q;q-next=s;break;return head;vo
5、id print(SLNode *head)/职工信息的显示for(SLNode *p=head-next;p;p=p-next)/输出所有职工的信息printf(%s %c %ld %ld %s %s %s %ld %ldn,p-name,p-sex,p-born_date,p-age,p-degree,p-job,p-address,p-tele_num,p-job_num);void printLink(SLNode *head)/职工信息的显示printf(职工名单:n姓名、性别、出生年月、年龄、学历、职务、住址、电话、工号n);print(head);void put(SLNode
6、*head,FILE *fp)/职工信息的保存SLNode *p;if(fp=fopen(Employee.txt,a)=NULL)printf(无法打开Employee.txt!n);/exit(0);/return 0;for(p=head-next;p;p=p-next)fprintf(fp,%s %c %ld %ld %s %s %s %ld %ldn,p-name,p-sex,p-born_date,p-age,p-degree,p-job,p-address,p-tele_num,p-job_num);if(fclose(fp)printf(无法关闭Employee.txt!n);
7、 /exit(0);/return 0;void ListDelete(SLNode *head)/职工信息的删除SLNode *p,*s;char x20;int a,job_num;s=head;p=head-next;if(head-next=NULL)/链表为空,输出:名单中无职工信息,无须删除!printf(名单中无此职工信息,无须删除!n);return; printf(n);printf(t*n);printf(t* 职工信息删除操作 *n);printf(t* *n); printf(t* 0.退出查询系统,回到主菜单tt 1.按姓名进行删除 t *nt* 2.按工号进行删除
8、tt *n); printf(t*n);while(1)printf(请选择你要进行的操作:);scanf(%d,&a);if(a=0)break; else if(a=1)printf(请输入要删除职工的姓名:n); /输入要删除的人的姓名scanf(%s,x);for(p;p;p=p-next)/在链表中从头到尾查找输入的人的姓名if(strcmp(p-name,x)=0)/如果存在,则删除,否则输出:名单中无职工信息,无须删除!s-next=p-next;free(p);printf(删除成功!请继续操作!n);printLink(head);break;s=p;if(p=NULL) p
9、rintf(名单中无此职工信息,无须删除!n); else if(a=2)printf(请输入要删除职工的工号:n); /输入要删除的人的工号scanf(%ld,&job_num);for(p;p;p=p-next)/在链表中从头到尾查找输入的人的工号if(p-job_num=job_num)/如果存在,则删除,否则输出:名单中无职工信息,无须删除!s-next=p-next;free(p);printf(删除成功!请继续操作!n);printLink(head); s=p;if(p=NULL)printf(名单中无此职工信息,无须删除!n);void ListModify(SLNode *h
10、ead)/职工信息的修改DataType x;SLNode *p;p=head-next;/*if(p=NULL)printf(职工名单无职工信息,无须修改!n);return;*/printf(请输入要修改的职工姓名:n);scanf(%s,x.name);for(;p;p=p-next)if(strcmp(x.name,p-name)=0)/查找到了该职工的信息printf(依次写入该职工的新信息:n);printf(请输入职工信息:n姓名、性别、出生年月、年龄、学历、职务、住址、电话、工号n);scanf(%s %c %ld %ld %s %s %s %ld %ld,p-name,&p-
11、sex,&p-born_date,&p-age,p-degree,p-job,p-address,&p-tele_num,&p-job_num);printf(修改成功!请继续操作!n);break;if(p=NULL)printf(此职工不存在,无法修改其信息!n);void Listfind(SLNode head)/职工信息的查找int i,j;SLNode *p;DataType x;if(head.next=NULL)/链表为空printf(名单中无职工信息,查询失败!n);return;/返回主菜单printf(n); printf(tn);printf(t * 职工信息查询操作
12、* n);printf(t * n);printf(t n);printf(t 0.结束管理系统tttt1.姓名进行查询tnt 2.出生年月查询tttt3.职工学历查询tnt 4.职工年龄查询tttt5.职工职务查询tnt 6.职工住址查询tttt7.职工电话查询tnt 8.职工工号查询tttt tn); printf(t n);printf(tn); while(1)printf(请输入您要选择的操作:);scanf(%d,&i);if(i=0)/输入0,退出查询系统,回到主菜单break;else if(i=1)/输入1,对姓名进行查询p=head.next;printf(请输入姓名:);
13、scanf(%s,x.name);j=0;for(p;p;p=p-next)if(strcmp(p-name,x.name)=0)/如果存在这个人,那么j自加+j;printf(n姓名、性别、出生年月、年龄、学历、职务、住址、电话、工号n);printf(%s %c %ld %ld %s %s %s %ld %ldn,p-name,p-sex,p-born_date,p-age,p-degree,p-job,p-address,p-tele_num,p-job_num);if(j=0)/表示没有找到输入的信息printf(职工名单中不存在此人!n);else printf(查询成功!继续操作!
14、n);else if(i=2)/输入2,对出生年月进行查询p=head.next;printf(请输入出生年月:);scanf(%ld,&x.born_date);j=0;for(p;p;p=p-next)if(p-born_date=x.born_date)/输入的出生年月在链表中存在+j;/如果存在这个人,那么j自加printf(n姓名、性别、出生年月、工作年月、学历、职务、住址、电话、工号n);printf(%s %c %ld %ld %s %s %s %ld %ldn,p-name,p-sex,p-born_date,p-age,p-degree,p-job,p-address,p-t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 员工 管理 系统
链接地址:https://www.31ppt.com/p-3736516.html