




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
例810为某一单位编写一个简单的员工信息管理程序。其中,例810为某一单位编写一个简单的员工信息管理程序。其中,每一个员工的属性包括员工编号不重复、姓名、年龄、所属部门、职位、主要的管理功能包括增加员工删除员工按照编号查询员工的信息修改员工的属性等。要求利用散列表存储员工信息。分析根据题意要求,定义员工记录类型的C语言描述如下TYPEDEFSTRUCTINTKEY_NUM/员工的编号,即员工记录的关键字/CHARNAME10/员工的姓名/INTAGE/员工的年龄/CHARDEPARTMENT15/员工所在的部门/CHARPOSITION15/员工的职位/LONGTELE/员工的/EMPLOYEE_TYPE为了永久的保存员工的信息,避免重复的输入,假定已经将员工信息保存在文件“EMP_LISTDAT”中。下面给出了保存员工信息的函数SAVE,用户可以调用此函数实现在磁盘上建立文件。VOIDSAVEFILEFPINTIEMPLOYEE_TYPESIFFPFOPEN“EMP_LISTDAT“,“WB“NULL/以写的方式打开文件EMP_LISTDAT/PRINTF“CANNOTOPENFILEN“RETURNFORI0ISIZEI/循环次数由SIZE决定,它需要事先定义/SCANF“DSDSSLD“,/读取员工信息/IFFWRITEFCLOSEFP/关闭文件/对员工信息实现管理首先需要将员工信息从文件读入到内存的散列表中,接着对员工信息进行输出、修改、插入、删除、查询等操作,实际上就是对散列表实现基本操作,当操作完成之后,把处理后的结果再写回文件中。根据题意,程序中包括如下功能1输出员工信息表。2编辑员工信息首先输入员工的编号,若找到对应的员工记录,则输入其它需要修改的属性信息,把修改后的员工记录写回原来的位置若没有找到对应的员工记录,则插入一个新记录,需要输入新员工的各项属性信息,然后把新员工插入到散列表的合适位置上。3删除员工信息根据输入的员工编号,删除对应的员工记录。4按照员工的编号查询对应员工的所有相关信息。在此仅设计出最基本的查询功能,用户可以根据实际的需求设计出更为复杂的查询功能。用散列表存储员工信息,需要设计出合理的散列函数和解决冲突的方法。在本程序中,员工的编号是员工记录的关键字。这里为了问题的简单化,选择除留余数法设计散列函数,即HASHKEYKEYM,M为散列表的长度。在处理冲突问题时,本程序使用的是链地址法,如果使用线性探测法解决冲突,读者只需对程序作简单的修改即可实现。2程序源代码INCLUDEINCLUDEINCLUDEDEFINEM13/M为散列表的长度,可根据具体问题,自己设计大小/TYPEDEFSTRUCT/定义员工记录的类型/INTKEY_NUMCHARNAME10INTAGECHARDEPARTMENT15CHARPOSITION15LONGTELEEMPLOYEE_TYPETYPEDEFSTRUCTNODE/定义存储员工记录的单链表/EMPLOYEE_TYPEDATASTRUCTNODENEXTLNODEVOIDINITHASHLNODEH/初始化散列表,将散列表中每一个单元置为空/INTIFORI0IMIHINULLINTHASHINTKEY/散列函数,根据关键字计算散列地址/RETURNKEYMINTINSERTLNODEH,EMPLOYEE_TYPEITEM/向散列表中插入一个记录ITEM/INTDLNODEPDHASHITEMKEY_NUM/计算新记录的散列地址/PLNODEMALLOCSIZEOFEMPLOYEE_TYPE/为新记录分配存储空间/IFPNULLRETURN0/返回0表示插入失败/PDATAITEMPNEXTHD/将新记录插入到对应单链表的表头/HDPRETURN1/插入成功返回1/VOIDLOADLNODEH/将事先写入文件的员工信息读入散列表/FILEFPEMPLOYEE_TYPESIFFPFOPEN“EMP_LISTDAT“,“RB“NULL/打开文件,如果失败输出信息并返回/PRINTF“CANNOTOPENTHEFILEN“RETURNFREAD/从文件里读取员工记录/WHILEFEOFFP/文件没结束/IFINSERTH,S/向散列表插入员工的信息/PRINTF“CANNOTINSERTHASH,LOADFAILED“/插入失败,返回/RETURNFREAD/继续读取下一个记录/FCLOSEFPVOIDPRINTLNODEH/输出散列表中的员工信息/INTILNODEPPRINTF“N员工信息列表N“FORI0IMI/依次访问散列中的每一记录/IFHI/对应的元素不为空/PHI/遍历输出单链表/WHILEPPRINTF“D,S,D,S,S,LDN“,PDATAKEY_NUM,PDATANAME,PDATAAGE,PDATADEPARTMENT,PDATAPOSITION,PDATATELEPPNEXTPRINTF“EMPLOYEE_TYPESEARCHLNODEH,INTK/在散列表中查询编号为K的员工的信息/INTDLNODEPDHASHK/计算散列地址/PHD/得到对应单链表的表头指针/WHILEP/在对应的单链表中查询员工的信息/IFPDATAKEY_NUMK/若在单链表中查找成功,返回该记录的地址/RETURNELSEPPNEXTRETURNNULL/查找失败返回空指针/INTDELELNODEH,INTK/在散列表中删除编号为K的员工/INTDLNODEP,QDHASHK/计算散列地址/PHD/得到对应单链表的表头指针/IFPRETURN0/若单链表为空,返回0,说明删除失败/IFPDATAKEY_NUMK/若删除的记录是表头结点,删除它并返回1/HDPNEXTFREEPRETURN1QPNEXT/若删除的记录是非表头结点,在单链中查找被删除的记录/WHILEQIFQDATAKEY_NUMK/找到被删除的记录,删除它并返回1/PNEXTQNEXTFREEQRETURN1ELSEPQNEXTRETURN0/返回0,说明删除失败/VOIDSAVELNODEH/将散列表中的记录写回文件/FILEFPINTILNODEPEMPLOYEE_TYPESIFFPFOPEN“EMP_LISTDAT“,“WB“NULL/打开文件/PRINTF“CANNOTOPENFILEN“RETURNFORI0IMI/依次访问散列表中的每一个记录/IFHI/如果对应的单链表非空/PHI/得到表头指针/WHILEP/遍历单链表,将每一个记录写入文件/IFFWRITE/写文件失败/FCLOSEFPRETURNPPNEXTFCLOSEFP/关闭文件/MAINLNODEHASHM/定义一个散列表/EMPLOYEE_TYPES,EMPINTPINTFLAG1,SELECTINITHASHHASH/初始化散列表/LOADHASH/把文件中的记录读入散列表中/WHILEFLAG/当FLAG为真时执行循环/PRINTF“N欢迎使用本软件N“/显示菜单/PRINTF“1输出员工信息列表N“PRINTF“2编辑员工信息N“PRINTF“3删除员工信息N“PRINTF“4查询员工信息N“PRINTF“5退出软件N“PRINTF“N“PRINTF“请输入你的选择15N“SCANF“D“,/根据菜单提示输入操作选项/SWITCHSELECTCASE1/输出员工信息表/PRINTHASHBREAKCASE2/修改或者增加员工信息/PRINTF“输入员工编号“SCANF“D“,EMPKEY_NUMPIFSSEARCHHASH,P/若该编号存在,修改信息/PRINTF“D号员工原来的信息是S,D,S,S,LDN“,P,SNAME,SAGE,SDEPARTMENT,SPOSITION,STELEPRINTF“请输入更新的信息N姓名,年龄,部门,职位,电话号码N“SCANF“SDSSLD“,EMPNAME,SEMP/将修改后的信息写入散列表中/ELSE/若编号不存在,增加一个新的员工/PRINTF“请输入新员工的信息N姓名,年龄,部门,职位,电话号码N“SCANF“SDSSLD“,EMPNAME,INSERTHASH,EMP/在散列表中插入一个新记录/BREAKCASE3/删除员工信息/PRINTF“请输入要删除员工的编号“SCANF“D“,IFDELEHASH,PPRINTF“删除成功N“ELSEPRINTF“此员工不存在N“BREAKCASE4/查询员工的信息/PRINTF“请输入要查询的员工编号“SCANF“D“,SSEARCHHASH,P/在散列表中作查询
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 激光行业竞争分析与策略试题及答案
- 油层物理考试题及答案
- 系统规划与管理师考试线上课程评价试题及答案
- 药品市场动态与策略应对试题及答案
- 考试中应注意的时间管理试题及答案
- 报关实务考试试题及答案
- 河南音乐乐理试题及答案
- 药物储存与管理知识试题及答案
- 衛生管理機構評價題目
- 幼儿文学对口试题及答案
- 学前教育学 课件 第1、2章 绪论;学前教育的目标、内容的方法
- 部编人教版五年级语文下册教学策略计划
- 2025北京丰台高三一模物理试题及答案
- 江南美术遗产融入美育的数智化路径探索
- 动物生理学第十二章-泌乳
- 互联网+旅游创新创业
- 金属矿床地下开采-全知识点
- 血站服务礼仪培训
- TSHAEPI 016-2024 风冷热泵机组噪声振动控制技术要求
- 滨海城市灾害防控-深度研究
- 房屋市政工程生产安全重大事故隐患判定标准(2024版)危险性较大的分部分项工程专项施工方案严重缺陷清单(试行)解读
评论
0/150
提交评论