《数据结构员工管理系统》由会员分享,可在线阅读,更多相关《数据结构员工管理系统(21页珍藏版)》请在金锄头文库上搜索。
1、编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页 共1页一、设计题目问题描述每个员工的信息包括:编号、姓名、性别、出生年月、学历职务、电话、住址等。系统能够完成员工信息的查询、更新、插入、删除、排序等功能。基本要求(1) 排序:按不同关键字,对所有员工的信息进行排序。(2) 查询:按特定条件查找员工。(3) 更新:按编号对某个员工的某项信息进行修改。(4) 插入:加入新员工的信息。(5) 删除:按编号删除已离职的员工的信息。二、运行环境Mrosoft Visual C+6.0三、算法设计的思想 构造链表存储用户记录。四、算法的流程图五、算法设计分析(1)构造顺序表存储用
2、户记录。(2)利用冒泡法对用户名和号码分别进行排序(3)利用直接查找法进行查找六、源代码#includestdio.h#includestdlib.h#include string.h/定义节点类型typedef struct nodechar id10;char name10;char sex10;char birth10;char xueli10;char zhiwu10;char phone10;char address10;struct node *next;node,*linklist;/头插法生成单链表int creatlist(linklist &L)linklist p;p=(
3、linklist)malloc(sizeof(node);if(!p)return (0);elseprintf(请输入员工编号n);scanf(%s,p-id); printf(请输入员工姓名n);scanf(%s,p-name); printf(请输入员工性别n); scanf(%s,p-sex); printf(请输入员工生日n);scanf(%s,p-birth); printf(请输入员工学历n); scanf(%s,p-xueli); printf(请输入员工职务n);scanf(%s,p-zhiwu);printf(请输入员工电话n);scanf(%s,p-phone); pri
4、ntf(请输入员工地址n);scanf(%s,p-address);p-next=L-next;L-next=p;/初始化单链表int initlist(linklist &L)L=(linklist)malloc(sizeof(node);if(!L)return (0);L-next=NULL;return 1;/显示所有员工信息void display(linklist &L)linklist p;for(p=L-next;p;p=p-next)printf(编号 %s,p-id);printf(姓名 %s,p-name);printf(性别 %s,p-sex);printf(生日 %s
5、,p-birth);printf(学历 %s,p-xueli);printf(职务 %s,p-zhiwu);printf(电话 %s,p-phone);printf(地址 %sn,p-address);/按id删除int del(linklist &L,char id10)node *p;node *r;p=L-next;r=L;while(!(strcmp(p-id,id)=0)&p)r=p;p=p-next;if(!p)printf(n删除位置不合理n);elser-next=p-next; free(p);printf(删除成功n);return 1;/查询idint searchid(
6、linklist &L,char id10)node *p;p=L;while(p)if(strcmp(p-id,id)=0)printf(编号 %s,p-id);printf(姓名 %s,p-name);printf(性别 %s,p-sex);printf(生日 %s,p-birth);printf(学历 %s,p-xueli);printf(职务 %s,p-zhiwu);printf(电话 %s,p-phone);printf(地址 %sn,p-address);p=p-next;return 1;/查询姓名int searchname(linklist &L,char name10)no
7、de *p;p=L;while(p)if(strcmp(p-name,name)=0)printf(编号 %s,p-id);printf(姓名 %s,p-name);printf(性别 %s,p-sex);printf(生日 %s,p-birth);printf(学历 %s,p-xueli);printf(职务 %s,p-zhiwu);printf(电话 %s,p-phone);printf(地址 %sn,p-address);p=p-next;return 1;/修改int xiugai(linklist &L,char id10)node *p;p=L;while(p)if(strcmp(
8、p-id,id)=0)printf(请输入员工编号n);scanf(%s,p-id); printf(请输入员工姓名n);scanf(%s,p-name);printf(请输入员工性别n);scanf(%s,p-sex);printf(请输入员工生日n);scanf(%s,p-birth);printf(请输入员工学历n);scanf(%s,p-xueli);printf(请输入员工职务n);scanf(%s,p-zhiwu);printf(请输入员工电话n);scanf(%s,p-phone);printf(请输入员工地址n);scanf(%s,p-address);p=p-next;ret
9、urn 1;/排序void Sort(linklist &L) linklist La;linklist p,q,m; La=(linklist)malloc(sizeof(node);La-next =NULL;while(L-next) for(q=L-next ,p=L-next ;p-next ;p=p-next )if(strcmp( p-next-id,q-id )0 )m=p;q=p-next ; if(q=L-next)L-next =L-next-next ;elsem-next =q-next ;q-next =La-next ;La-next =q ;L=La;displ
10、ay(L);#includestdio.h#includestdlib.h#includestring.h#includehead.h/主函数void main()linklist L;int a;char m;char name10; char id10;initlist(L);int y;int x=1;while(x)printf(*n);printf(1添加员工信息n);printf(2修改员工信息n);printf(3删除员工信息n);printf(4查询员工信息n);printf(5排序员工信息n);printf(6显示所有员工信息n);printf(7退出n);printf(*n
11、);printf(请输入代码:);scanf(%d,&y);switch(y)case 1: creatlist(L);doprintf(否继续输入?(y/n);getchar();scanf(%c,&m);if(m=y)creatlist(L);while(m!=n);break;case 2: printf(请输入修改员工编号);getchar();scanf(%s,&id);xiugai(L,id);break;case 3: printf(请输入删除员工编号);getchar();scanf(%s,&id);del(L,id);break;case 4: printf(请输入查询方式(1按编号查询,2按姓名查找);scanf(%d,&a);if(a=1)printf(请输入查询员工编号n);scanf(%s,&id);searchid(