员工管理系统.doc

上传人:仙人指路1688 文档编号:3736516 上传时间:2023-03-18 格式:DOC 页数:18 大小:96KB
返回 下载 相关 举报
员工管理系统.doc_第1页
第1页 / 共18页
员工管理系统.doc_第2页
第2页 / 共18页
员工管理系统.doc_第3页
第3页 / 共18页
员工管理系统.doc_第4页
第4页 / 共18页
员工管理系统.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《员工管理系统.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

15、ele_num,p-job_num);if(j=0)/表示没有找到输入的信息printf(职工名单中没有这个时间出生的!n);else printf(查询成功!请继续操作!n);else if(i=4)/输入4,对职工年龄进行查询p=head.next;printf(请输入职工年龄:);scanf(%ld,&x.age);j=0;for(p;p;p=p-next)if(p-age=x.age)+j;/如果存在这个人,那么j自加printf(n姓名、性别、出生年月、年龄、学历、职务、住址、电话、工号n);printf(%s %c %ld %ld %s %s %s %ld %ldn,p-name,

16、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(查询成功!请继续操作!n);else if(i=3)/输入3,对学历进行查询p=head.next;printf(请输入学历:);scanf(%s,x.degree);j=0;for(p;p;p=p-next)if(strcmp(p-degree,x.degree)=0)+j;/如果存在这个人,那么j自加printf(n姓名、性别、出生年月、工作年

17、月、学历、职务、住址、电话、工号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(查询成功!请继续操作!n);else if(i=5)/输入5,对职务进行查询p=head.next;printf(请输入职务:);scanf(%s,x.job);j=0;for(p;p;p=p-next)if(strcm

18、p(p-job,x.job)=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(查询成功!请继续操作!n);else if(i=6)/输入6,对住址进行查询p=head.next;printf

19、(请输入住址:);scanf(%s,x.address);j=0;for(p;p;p=p-next)if(strcmp(p-address,x.address)=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

20、 printf(查询成功!请继续操作!n);else if(i=7)/输入7,对电话号码进行查询p=head.next;printf(请输入电话:);scanf(%ld,&x.tele_num);j=0;for(p;p;p=p-next)if(p-tele_num=x.tele_num)+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-tel

21、e_num,p-job_num);if(j=0)/表示没有找到输入的信息printf(职工名单中没人用这个号码!n);else printf(查询成功!请继续操作!n);else if(i=8)/输入8,对工号进行查询p=head.next;printf(请输入工号:);scanf(%ld,&x.job_num);j=0;for(p;p;p=p-next)if(p-job_num=x.job_num)+j;/如果存在这个人,那么j自加printf(n姓名、性别、出生年月、年龄、学历、职务、住址、电话、工号n);printf(%s %c %ld %ld %s %s %s %ld %ldn,p-n

22、ame,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(查询成功!请继续操作!n);else if(i!=0 & i!=1 & i!=2 & i!=3 & i!=4 & i!=5 & i!=6 & i!=7 & i!=8)/输入任意不是上述数字的,那么久显示输入错误printf(输入出错!请再次输入!n);printf(n);printf(t*n);printf(t* 职工信息查询操作 *n);

23、printf(t* *n);printf(t* 0.退出查询系统,回到主菜单tt 1.对姓名进行查询t*nt* 2.对出生年月进行查询 tt 3.对学历进行查询t*nt* 4.对职工年龄进行查询 tt 5.对职务进行查询t*nt* 6.对住址进行查询 tt 7.对电话进行查询t*nt* 8.对职工工号进行查询 tt t*n); printf(t*n); void Listpaixu(SLNode *head)/职工信息的排序int i,n=0,m,flag=1;SLNode *p,*q,*s;if(head-next=NULL)/职工链表为空printf(名单中无职工信息,无法排序!nn);r

24、eturn;/printf(输入出错!请再次输入!nn);printf(tt.n);printf(tt. 职工信息排序操作 .n);printf(tt. .n); printf(tt.t0.退出排序系统,回到主菜单 .ntt.t1.对性别进行排序 .ntt.t2.对出生年月进行排序 .ntt.t3.对职工年龄进行排序 .ntt.t4.对工号进行排序 .n);printf(tt.n);while(1)printf(请输入您要选择的操作:);scanf(%d,&i);if(i=0)/输入0,退出排序系统,回到主菜单break;else if(i=1)/输入1,对性别进行排序n=0,m,flag=1

25、;for(p=head;NULL!=p;p=p-next)/统计职工人数n+; for(m=1;flag&mnext,p=head,s=p;q;s=p,p=q,q=q-next)if(p-sexq-sex)/p为当前节点,p的性别p的后继节点的性别if(head=p)/p为头结点 head-next=q-next; head=q; q-next=p;/交换节点信息q=head-next;p=head;elsep-next=q-next; q-next=p; s-next=q; p=q; q=p-next; flag=1; printf(排好序的信息如下:n);printLink(head);/

26、输出所有节点的信息/return;else if(i=2)/输入2,对出生年月进行排序n=0,m,flag=1;for(p=head;NULL!=p;p=p-next)/统计职工人数n+; for(m=1;flag&mnext,p=head,s=p;q;s=p,p=q,q=q-next)if(p-born_dateq-born_date)/对出生年月进行排序if(head=p) head-next=q-next; head=q; q-next=p;q=head-next;p=head;elsep-next=q-next; q-next=p; s-next=q; p=q; q=p-next; f

27、lag=1;printf(排好序的信息如下:n);printLink(head);/return;else if(i=3)/输入3,按年龄排序n=0,m,flag=1;for(p=head;NULL!=p;p=p-next)n+; for(m=1;flag&mnext,p=head,s=p;q;s=p,p=q,q=q-next)if(p-ageq-age)if(head=p) head-next=q-next; head=q; q-next=p;q=head-next;p=head;elsep-next=q-next; q-next=p; s-next=q; p=q; q=p-next; fl

28、ag=1;printf(排好序的信息如下:n);printLink(head);/return;else if(i=4)/按工号排序n=0,m,flag=1;for(p=head;NULL!=p;p=p-next)n+; for(m=1;flag&mnext,p=head,s=p;q;s=p,p=q,q=q-next)if(p-job_numq-job_num)if(head=p) head-next=q-next; head=q; q-next=p;q=head-next;p=head;elsep-next=q-next; q-next=p; s-next=q; p=q; q=p-next; flag=1;printf(排好序的信息如下:n);printLink(head);/return;else if(i!=0&i!=1&i!=2&i!=3&i!=4)printf(输入出错!请再次输入!nn);printf(tt.n);printf(tt. 职工信息排序系统 .n);printf(tt. .n); printf(tt.t0.退出排序系统,回到主菜单 .ntt.t1.对性别进行排序 .ntt.

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

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号