为某一单位编写一个简单的员工信息管理程序其中_第1页
为某一单位编写一个简单的员工信息管理程序其中_第2页
为某一单位编写一个简单的员工信息管理程序其中_第3页
为某一单位编写一个简单的员工信息管理程序其中_第4页
为某一单位编写一个简单的员工信息管理程序其中_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论