- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
教案为某一单位编写一个简单的员工信息管理程序其中
例8.10 为某一单位编写一个简单的员工信息管理程序。其中,每一个员工的属性包括:员工编号(不重复)、姓名、年龄、所属部门、职位、联系电话;主要的管理功能包括:增加员工;删除员工;按照编号查询员工的信息;修改员工的属性等。要求利用散列表存储员工信息。
分析
根据题意要求,定义员工记录类型的C语言描述如下:
typedef struct
{ int key_num; /*员工的编号,即员工记录的关键字*/
char name[10]; /*员工的姓名*/
int age; /*员工的年龄*/
char department[15]; /*员工所在的部门*/
char position[15]; /*员工的职位*/
long tele; /*员工的联系电话*/
} employee_type;
为了永久的保存员工的信息,避免重复的输入,假定已经将员工信息保存在文件“emp_list.dat”中。下面给出了保存员工信息的函数save(),用户可以调用此函数实现在磁盘上建立文件。
void save()
{ FILE *fp;
int i;
employee_type s;
if ((fp=fopen(emp_list.dat,wb))==NULL) /*以写的方式打开文件emp_list.dat*/
{ printf(cannot open file\n);
return;
}
for(i=0;iSIZE;i++) /*循环次数由SIZE决定,它需要事先定义*/
{ scanf(%d%s%d%s%s%ld, /*读取员工信息*/
s.key_num,s.name,s.age,s.department,s.position,s.tele);
if (fwrite(s,sizeof(employee_type),1,fp)!=1) /*将员工信息s写入文件中*/
printf(file write error\n);
}
fclose(fp); /*关闭文件*/
}
对员工信息实现管理首先需要将员工信息从文件读入到内存的散列表中,接着对员工信息进行输出、修改、插入、删除、查询等操作,实际上就是对散列表实现基本操作,当操作完成之后,把处理后的结果再写回文件中。根据题意,程序中包括如下功能:
(1)输出员工信息表。
(2)编辑员工信息:首先输入员工的编号,若找到对应的员工记录,则输入其它需要修改的属性信息,把修改后的员工记录写回原来的位置;若没有找到对应的员工记录,则插入一个新记录,需要输入新员工的各项属性信息,然后把新员工插入到散列表的合适位置上。
(3)删除员工信息:根据输入的员工编号,删除对应的员工记录。
(4)按照员工的编号查询对应员工的所有相关信息。在此仅设计出最基本的查询功
能,用户可以根据实际的需求设计出更为复杂的查询功能。
用散列表存储员工信息,需要设计出合理的散列函数和解决冲突的方法。在本程序中,员工的编号是员工记录的关键字。这里为了问题的简单化,选择除留余数法设计散列函数,即hash(key) =key % M,M为散列表的长度。在处理冲突问题时,本程序使用的是链地址法,如果使用线性探测法解决冲突,读者只需对程序作简单的修改即可实现。
2.程序源代码
#include stdio.h
#include malloc.h
#include stdlib.h
#define M 13 /*M为散列表的长度,可根据具体问题,自己设计大小*/
typedef struct /*定义员工记录的类型*/
{ int key_num;
char name[10];
int age;
char department[15];
char position[15];
long tele;
} employee_type;
typedef struct node /*定义存储员工记录的单链表*/
{ employee_type data;
struct node *next;
} Lnode;
void initHash(Lnode *h[]) /*初始化散列表,将散列表中每一个单元置为空*/
{ int i;
for(i=0;iM;i++)
h
您可能关注的文档
- 教案中国骨科大手术静脉血栓栓塞症.ppt
- 教案中央电大2012年经济数学基础期末复习考试整理题库.doc
- 教案中央电大中级财务会计二考试复习资料及考试试题和答案.doc
- 教案中央电大形成性测评系统.ppt
- 教案中央电大经济数学基础_应用题和计算题_小抄3333.doc
- 教案中央电大经济数学基础教学建议.doc
- 教案中学心理健康课教案(全).doc
- 教案中学数学教材教法试题及答案.doc
- 教案中学田径运动教学.ppt
- 教案中学生交通安全主题班会课件.ppt
- 2022年咸宁职业技术学院招聘笔试真题含答案详解.docx
- 2022年忻州职业技术学院招聘笔试真题及答案详解1套.docx
- 2022年宣城职业技术学院招聘笔试真题参考答案详解.docx
- 2022年宿州学院招聘笔试真题及参考答案详解一套.docx
- 2022年天津工艺美术职业学院招聘笔试真题参考答案详解.docx
- 2022年天津商务职业学院招聘笔试真题及参考答案详解.docx
- 2022年天津职业技术师范大学招聘笔试真题含答案详解.docx
- 2022年四川交通职业技术学院招聘笔试真题及参考答案详解1套.docx
- 福建省漳州市部分区县2024_2025学年高一数学上学期开学考试含解析.docx
- 2022年山西警官职业学院招聘笔试真题及参考答案详解1套.docx
文档评论(0)