📄 职工管理系统设计文档.txt
字号:
数据结构实习说明文档
1.问题描述:职工管理系统
职工对象包括姓名,性别,出生年月,工作年月,学历,职务,住址,电话,序号
(1)新增一名职工:将新增职工插入到职工链表最后
(2)删除一名职工:删除一名职工
(3)查询:按名字,职务,学历查找符合相关条件的职工
(4)修改:按序号锁定某个职工,修改其的职务,名字或电话
(5)排序:按职工的姓名顺序,出生日期,或职位大小进行排序
(6)打印:将所有结点按在链表中的顺序打印
2.运行平台:windows 98/2000/xp
开发工具:visual C++ 6.0
3.概要设计说明:用链表实现,分为职工结点类与职工链表类,链表类有头结点
结点类的每个结点可以进行编辑,打印,创建,赋值
链表类可以对链表内的结点锁定,查找某个结点,排序,插入,删除,打印,交换
4.详细设计说明:
(1)算法设计思路:a.采用了链表的数据结构,用结点类表示每个员工,用链表类将员工
链接,链表有头结点。
b.在插入时,实习要求按姓名字母顺序插入,但考虑到可以对链表
进行以姓名方式的排序,故暂时插入到链表末尾,可以调用排序函数
按姓名顺序排序。
c.在每个结点里添加序号(no),便于对链表内的结点定位,锁定
(2)组成介绍:
职工节点类:public:
1.EmployeeNode():构造函数
2.EmployeeNode(int t):
3.CreateEmp():创建节点,输入职工信息
4.EditNode():编辑职工,调用编辑职工的姓名,电话,职位
调用EditName(),EditPost(),EditPhone();
5.Assign(EmployeeNode *p):节点赋值,将一个节点的信息赋予另外一个节点
6.print():打印节点,打印职工的信息
private:
int no;char *name;Sex sex;Date birthdate;Date workdate;
Qualification quali;Post post;char *addr;char phone[8];
EmployeeNode *next;
职工链表:public:
1.Edit():编辑职工结点,用序号确定职工,并调用结点的编辑函数
2.Find():查找结点,用姓名,职务,学历3种方式查找,分别调用Find_name(),
Find_post(int t),Find quali(int t),查找采用顺序查找
3.Insert():插入结点,将结点插入到链表尾部
4.Remove():删除结点,将选定的职工结点删除
5.print():按链表顺序打印员工
6.MakeEmpty():将链表置空
7.Find(int i):查找并返回no=i的结点
8.Swap(EmployeeNode *p1,EmployeeNode*p2):交换p1与p2结点,但不交换no.
9.Sort():按姓名,出生年月,职务分别调用SortName(),SortBirth(),SortPost()
用冒泡排序法进行排序
private:EmployeeNode *first,*last;
(3)输入输出的格式:输入menu:Welcome!This is the system to manage employees built by zblhero.
1.Create a new employee;
2.Delete an employee;
3.Find an employee;
4.Edit an employee;
5.Sort the employees(1.name,2.birthdate,3.post);
6.List all the employees
7.exit
输出格式:~ ~ ~ ~ ~ ~ Information~ ~ ~ ~ ~ ~
name:zblhero sex:Male phone:46248866
birthdate:1988-6-23 workdate:2006-9-1 no:1
qualification:Master post:clerk address:shaanxi
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
(4)算法的时空复杂度分析:冒泡排序法复杂度为O(n^),故实践复杂度为O(n^)
5.总结:由于实践仓促,在灵活性,排序的效率还不是太高,没有用散列的数据结构。
2007.12.30
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -