已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
例810为某一单位编写一个简单的员工信息管理程序。其中,每一个员工的属性包括员工编号(不重复)、姓名、年龄、所属部门、职位、联系电话;主要的管理功能包括增加员工;删除员工;按照编号查询员工的信息;修改员工的属性等。要求利用散列表存储员工信息。1分析根据题意要求,定义员工记录类型的C语言描述如下TYPEDEFSTRUCTINTKEY_NUM/员工的编号,即员工记录的关键字/CHARNAME10/员工的姓名/INTAGE/员工的年龄/CHARDEPARTMENT15/员工所在的部门/CHARPOSITION15/员工的职位/LONGTELE/员工的联系电话/EMPLOYEE_TYPE为了永久的保存员工的信息,避免重复的输入,假定已经将员工信息保存在文件“EMP_LISTDAT”中。下面给出了保存员工信息的函数SAVE(),用户可以调用此函数实现在磁盘上建立文件。VOIDSAVEFILEFPINTIEMPLOYEE_TYPESIFFPFOPEN“EMP_LISTDAT“,“WB“NULL/以写的方式打开文件EMP_LISTDAT/PRINTF“CANNOTOPENFILEN“RETURNFORI0IINCLUDEINCLUDEDEFINEM13/M为散列表的长度,可根据具体问题,自己设计大小/TYPEDEFSTRUCT/定义员工记录的类型/INTKEY_NUMCHARNAME10INTAGECHARDEPARTMENT15CHARPOSITION15LONGTELEEMPLOYEE_TYPETYPEDEFSTRUCTNODE/定义存储员工记录的单链表/EMPLOYEE_TYPEDATASTRUCTNODENEXTLNODEVOIDINITHASHLNODEH/初始化散列表,将散列表中每一个单元置为空/INTIFORI0IDATAITEMPNEXTHD/将新记录插入到对应单链表的表头/HDPRETURN1/插入成功返回1/VOIDLOADLNODEH/将事先写入文件的员工信息读入散列表/FILEFPEMPLOYEE_TYPESIFFPFOPEN“EMP_LISTDAT“,“RB“NULL/打开文件,如果失败输出信息并返回/PRINTF“CANNOTOPENTHEFILEN“RETURNFREAD/从文件里读取员工记录/WHILEFEOFFP/文件没结束/IFINSERTH,S/向散列表插入员工的信息/PRINTF“CANNOTINSERTHASH,LOADFAILED“/插入失败,返回/RETURNFREAD/继续读取下一个记录/FCLOSEFPVOIDPRINTLNODEH/输出散列表中的员工信息/INTILNODEPPRINTF“N员工信息列表N“FORI0IDATAKEY_NUM,PDATANAME,PDATAAGE,PDATADEPARTMENT,PDATAPOSITION,PDATATELEPPNEXTPRINTF“N“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/PNEXTQNEXTFREEQRETURN1ELSEPQQQNEXTRETURN0/返回0,说明删除失败/VOIDSAVELNODEH/将散列表中的记录写回文件/FILEFPINTILNODEPEMPLOYEE_TYPESIFFPFOPEN“EMP_LISTDAT“,“WB“NULL/打开文件/PRINTF“CANNOTOPENFILEN“RETURNFORI0IDATA,SIZEOFEMPLOYEE_TYPE,1,FP1PRINTF“FILEWRITEERRORN“/写文件失败/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/在散列表中作查询/IFS/查找成功,输出对应的员工的信息/PRINTF“查询结果ND,S,D,S,S,LDN“,SKEY_NUM,SNAME,SAGE,SDEPARTMENT,SPOSITION,STELEELSEPRINTF“此员工不存在N“BREAKCASE5/选择退出软件/PRINTF“本次操作结束再见N“FLAG0SAVEHASH/把处理之后的散列表重新写回原文件/程序运行的结果如下(A)软件的主界面(B)选择1,即输出功能,显示员工信息列表(G)选择3,即删除功能,删除编号为7的员工信息,删除失败(F)增加编号为8的员工之后的员工信息列表(C)选择2,即编辑功能,修改编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高温作业防暑知识培训效果
- 幼儿园户外体能循环运动心率监测-基于2024年幼儿可穿戴设备运动数据
- 高值耗材使用成本追踪与效益分析
- 甘肃省酒泉市2025-2026学年高二上学期12月月考地理试题(解析版)
- 医疗技术临床应用管理制度
- 给排水及采暖工程施工方案
- 财务审计岗位职责与合规要求
- 全新人教版小学六年级数学总复习
- 汽车发动机性能测试数据详解
- 语文S版小学一年级语文上册《语文百花园一》教案教学设计
- 司法三段论课件
- 零件读本(出书版)-1
- 教育局中小学考试命题管理方案
- 光大金瓯资产管理有限公司笔试
- 2025年中国邮政集团有限公司湖北省分公司招聘笔试备考试题及完整答案详解1套
- 2025年建筑施工特种作业人员考试建筑电焊工题库(附答案)
- 构建人类命运共同体+课件-2025-2026学年高中政治统编版选择性必修一
- 2025年善意的谎言辩论会材料及流程
- 2025年辽宁卷历史高考试卷(原卷+答案)
- 检验科个人防护培训课件
- 2025年不动产登记业务知识试题及答案
评论
0/150
提交评论