例810为某一单位编写一个简单的员工信息管理程序其中,.doc
《例810为某一单位编写一个简单的员工信息管理程序其中,.doc》由会员分享,可在线阅读,更多相关《例810为某一单位编写一个简单的员工信息管理程序其中,.doc(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、例810为某一单位编写一个简单的员工信息管理程序。其中, 例8.10 为某一单位编写一个简单的员工信息管理程序。其中,每一个员工的属性包括:员工编号(不重复)、姓名、年龄、所属部门、职位、;主要的管理功能包括:增加员工;删除员工;按照编号查询员工的信息;修改员工的属性等。要求利用散列表存储员工信息。分析根据题意要求,定义员工记录类型的C语言描述如下:typedef struct intkey_num; /*员工的编号,即员工记录的关键字*/ char name10;/*员工的姓名*/ intage;/*员工的年龄*/ char department15; /*员工所在的部门*/ char po
2、sition15; /*员工的职位*/ long tele;/*员工的*/employee_type; 为了永久的保存员工的信息,防止重复的输入,假定已经将员工信息保存在文件“emp_list.dat中。下面给出了保存员工信息的函数save(),用户可以调用此函数实现在磁盘上建立文件。 void save FILE *fp; int i; employee_type s; if fpfopenemp_list.dat,wbNULL /*以写的方式翻开文件emp_list.dat*/ printfcannot open filen; return; fori0;iSIZE;i+/*循环次数由SI
3、ZE决定,它需要事先定义*/ scanf%d%s%d%s%s%ld, /*读取员工信息*/ &s.key_num,s.name,&s.age,s.department,s.position,&s.tele; if fwrite&s,sizeofemployee_type,1,fp!1 /*将员工信息s写入文件中*/ printffile write errorn; fclosefp;/*关闭文件*/ 对员工信息实现管理首先需要将员工信息从文件读入到内存的散列表中,接着对员工信息进行输出、修改、插入、删除、查询等操作,实际上就是对散列表实现根本操作,当操作完成之后,把处理后的结果再写回文件中。根
4、据题意,程序中包括如下功能: (1)输出员工信息表。 (2)编辑员工信息:首先输入员工的编号,假设找到对应的员工记录,那么输入其它需要修改的属性信息,把修改后的员工记录写回原来的位置;假设没有找到对应的员工记录,那么插入一个新记录,需要输入新员工的各项属性信息,然后把新员工插入到散列表的适宜位置上。 (3)删除员工信息:根据输入的员工编号,删除对应的员工记录。 (4)按照员工的编号查询对应员工的所有相关信息。在此仅设计出最根本的查询功能,用户可以根据实际的需求设计出更为复杂的查询功能。 用散列表存储员工信息,需要设计出合理的散列函数和解决冲突的方法。在本程序中,员工的编号是员工记录的关键字。这
5、里为了问题的简单化,选择除留余数法设计散列函数,即hashkey key % M,M为散列表的长度。在处理冲突问题时,本程序使用的是链地址法,如果使用线性探测法解决冲突,读者只需对程序作简单的修改即可实现。 2.程序源代码#include#include#include#define M 13 /*M为散列表的长度,可根据具体问题,自己设计大小*/typedef struct /*定义员工记录的类型*/intkey_num; char name10;intage; char department15; char position15; long tele;employee_type;typed
6、ef struct node /*定义存储员工记录的单链表*/employee_type data; struct node *next;Lnode;void initHashLnode *h/*初始化散列表,将散列表中每一个单元置为空*/int i; fori0;iM;i+ hiNULL;int hashint key /*散列函数,根据关键字计算散列地址*/return key%M;int insertLnode *h, employee_type item /*向散列表中插入一个记录item*/int d;Lnode *p;dhashitem.key_num;/*计算新记录的散列地址*/
7、pLnode *mallocsizeofemployee_type;/*为新记录分配存储空间*/if pNULL return 0;/*返回0表示插入失败*/p-dataitem;p-nexthd; /*将新记录插入到对应单链表的表头*/hdp;return 1;/*插入成功返回1*/ void loadLnode *h /*将事先写入文件的员工信息读入散列表*/FILE *fp; employee_type s; if fpfopenemp_list.dat,rbNULL /*翻开文件,如果失败输出信息并返回*/ printfcannot open the filen; return; fr
8、ead&s,sizeofemployee_type,1,fp;/*从文件里读取员工记录*/while!feoffp /*文件没结束*/ if !inserth,s /*向散列表插入员工的信息*/ printfcan not insert hash,load failed;/*插入失败,返回*/return; fread&s,sizeofemployee_type,1,fp; /*继续读取下一个记录*/ fclosefp; void printLnode *h/*输出散列表中的员工信息*/ int i; Lnode *p; printfn-员工信息列表- n; fori0;iM;i+ /*依次访
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 810 某一 单位 编写 一个 简单 员工 信息管理 程序 其中
限制150内