




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档 1欢迎下载 include include include int saveflag 0 单链表内容有无发生改变 是否需要存盘的 标志变量 struct employee char num 10 工号 char name 15 姓名 char sex 7 性别 int age 年龄 char education 15 学历 int salary 工资 char phone 20 电话号码 char address 30 住址 typedef struct Node struct employee data struct Node next ListNode LinkList void InitList LinkList head 将单链表初始化为空 动态生成一个头 结点 并将头结点的指针域置为空 if head LinkList malloc sizeof ListNode NULL 为头结点 分配一个存储空间 printf 系统分配存储空间失败 n exit 1 head next NULL 将头结点的指针域置为空 ListNode Locatenum LinkList head char find 通过职工工号查找 返回定位指针 LinkList p 精品文档 2欢迎下载 p head next if p 如果职工信息记录为空 返回 NULL return NULL while p if strcmp p data num find 0 return p p p next return NULL ListNode Locatename LinkList head char find 通过职工姓名查 找 返回定位指针 LinkList p p head next if p 如果职工信息记录为空 返回 NULL return NULL while p if strcmp p data name find 0 return p p p next return NULL ListNode Locatesalary LinkList head int salary 通过职工工资查 找 返回定位指针 LinkList p p head next if p 如果职工信息记录为空 返回 NULL return NULL while p 精品文档 3欢迎下载 if p data salary salary return p p p next return NULL void Nofind printf n 提示 没有找到该职工 n void Modify LinkList L 修改功能 ListNode p char find 20 if L next printf n 提示 没有资料可以修改 n return printf 请你输入要修改的职工工号 scanf s find p Locatenum L find if p printf 请你输入新的工号 原来是 s p data num scanf s p data num getchar printf n printf 请你输入新的姓名 原来是 s p data name scanf s p data name getchar printf n 精品文档 4欢迎下载 printf 请你输入新的性别 原来是 s p data sex scanf s p data sex getchar printf n printf 请你输入新的年龄 原来是 d p data age scanf d printf n printf 请你输入新的学历 原来是 s p data education scanf s p data education getchar printf n printf 请你输入新的工资 原来是 d p data salary scanf d printf n printf 请你输入新的电话 原来是 s p data phone scanf s p data phone getchar printf n printf 请你输入新的住址 原来是 s p data address scanf s p data address getchar printf n printf n 提示 资料修改成功 n saveflag 1 else Nofind if p 结束 void Modify LinkList L 修改功能结束 void Add LinkList head 录入职工信息 精品文档 5欢迎下载 system cls ListNode p r s 实现添加操作的临时的结构体指针变量 int sign 标记重复工号的变量 char num 10 r head s head next 链表没有节点时 s NULL 链表有节点时 指 向第一个职工节点 while r next NULL 如果存在后继结点时 r 指针后移一个 r r next 将指针移至于链表最末尾 准备添加记录 printf 输入 将退出职工信息录入 退回至主菜单 n n while 1 printf PS 职工号为 即退出录入功能 n n printf 请输入职工号 fflush stdin 清除缓冲区 gets num if strcmp num 0 输入 0 跳出 while 1 即跳出 Add 函数 break s head next 每次从第一个节点开始找 看 num 是否 重复 while s if strcmp s data num num 0 printf 提示 n 工号为 s 的职工信息已经存 在 n num printf 若要修改请按 4 放弃请按 0 n scanf d if sign 4 Modify head else return s s next while s if p LinkList malloc sizeof ListNode NULL 生成没 精品文档 6欢迎下载 赋值的新节点 p printf 系统分配存储空间失败 n printf 退出程序 n exit 1 strcpy p data num num printf n printf 请输入该职工姓名 scanf s p data name getchar printf n printf 请输入该职工的性别 注 男性 male 女性 female scanf s p data sex getchar printf n printf 请输入该职工的年龄 scanf d printf n printf 请输入该职工的学历 scanf s p data education getchar printf n printf 请输入该职工的工资 scanf d printf n printf 请输入该职工的电话号码 scanf s p data phone getchar printf n printf 请输入该职工的住址 gets p data address printf n p next NULL 表明这是链表的尾部结点 r next p 将新建的结点加入链表尾部中 r p 精品文档 7欢迎下载 saveflag 1 printf n while 1 void Add 函数结束 void printline 打印横线 printf n void printsubject 打印各分类标题 printf 工 号 t 姓 名 性 别 年 龄 学 历 工 资 电 话 t t 住 址 n void printLinkList LinkList p 打印 p 结点各个数据成员的值 printf s s s d s d s s n p data num p data name p data sex p data age p data education p data salary p data phone p data address void Allemployeeinfo LinkList head 显示所有职工信息 int count 0 ListNode p p head next if p printf 提示 目前没有存储任何职工记录 n printf 返回主菜单 请重新选择功能 n return printf t t t t 显示结果 n printline 精品文档 8欢迎下载 printsubject printf n while p printLinkList p p p next count printline printf n printf 已经存储了 d 条职工信息 n count void Wrong printf n 提示 输入错误 n void menu 主菜单 printf n printf t n printf t n printf t n printf t n printf t n printf t 1 录入职工信息 2 删除职工 信息 n printf t 3 查询职工信息 4 修改职工 信息 n printf t 5 插入职工记录 6 统计职工 信息 n 精品文档 9欢迎下载 printf t 7 排序 8 保存职工 信息 n printf t 9 显示所有职工记录 0 退出系统 n printf t n printf t n printf t 版权所有 人 彭林 n printf t 电子 132 班 n printf t 1319200063 n printf t n void menu 菜单结束 void Del LinkList L 删除职工信息 int select 删除方式选择记录变量 ListNode p r char find 20 if L next 当 list 无后继结点时 提示和结束 Del 函数 printf n 提示 没有记录可以删除 n return printf n 按工号删除 请按 1 n 按姓名删除 请按 2 n printf n 功能选择 scanf d if select 1 printf 请输入要删除的职工工号 scanf s find getchar p Locatenum L find 精品文档 10欢迎下载 if p r L while r next p r r next 从第一个结点找起 直到发现 r next p 是 待删除结点 跳出循环 r next p next free p printf n 提示 该职工信息已成功删除 n saveflag 1 else Nofind if select 1 else if select 2 printf 请输入要删除的职工姓名 scanf s find getchar p Locatename L find if p r L while r next p r r next r next p next free p printf n 提示 该职工信息已成功删除 n saveflag 1 else Nofind if select 2 else Wrong 显示输入错误的话 void Del 删除函数结束 精品文档 11欢迎下载 void Search LinkList L 查询职工信息 int select int salary int sign 0 char find 20 ListNode p 实现查询操作的临时结构体指针变量 if L next printf n 提示 没有职工信息资料可以查询 n printf 返回主菜单 请重新选择功能 n return printf n 按工号查找 请按 1 n 按工资查找 请按 2 n 按姓名查 找 请按 3 n printf n 功能选择 scanf d printf n if select 1 工号 printf 请输入要查找的工号 scanf s find getchar p Locatenum L find if p printf t t t t 查找结果 n printline 打印横线 printsubject 打印各分类标题 printLinkList p 打印 p 结点各个数据成员的值 printline 打印横线 else Nofind else if select 2 工资 精品文档 12欢迎下载 printf 请输入要查找的工资 scanf d p Locatesalary L salary if p printf t t t t 查找结果 n printline printsubject printLinkList p printline sign while p p Locatesalary p salary if p printf t t t t 查找结果 n printline printsubject printLinkList p printline sign if sign 0 Nofind else if select 3 姓名 printf 请输入要查找的姓名 scanf s find getchar p Locatename L find if p printf t t t t 查找结果 n 精品文档 13欢迎下载 printline printsubject printLinkList p printline else Nofind else Wrong void Search 查询函数结束 void Save LinkList L 信息保存到文件中 FILE fp ListNode p int count 0 int flag 1 fp fopen Employeeinfo txt wb if fp NULL printf n 提示 打开文件时发生错误 n return p L next while p if fwrite p sizeof ListNode 1 fp 1 将第一个记录结点值 写入文件 p p next 依次写入下一个结点 的值 count 文件的记录数 1 else 精品文档 14欢迎下载 flag 0 printf 写入文件过程发生错误 n break while p if count 0 printf n 提示 文件保存成功 有 d 条记录已经保存 n count saveflag 0 else system cls 清屏 printf 文件保存失败 0 条记录被保存 n fclose fp void Save 函数结束 void Sort LinkList L 排序功能函数 ListNode p m n int i j count 0 p L next if p system cls 清屏 printf 无任何职工信息 n printf 返回主菜单 n return system cls 清屏 printf 按工资从低到高排序 n printf 以下为排序前的所有职工记录 n Allemployeeinfo L while p 精品文档 15欢迎下载 count 不包含头结点的职工信息结点的总个数 p p next for i 0 i count 1 i 单链表的冒泡排序 for j 0 jnext m p next while m if p data salary m data salary n next p next p next m next m next p n m m p next else n p p m m m next printf 以下为排序后的所有职工记录 n Allemployeeinfo L saveflag 1 printf 排序成功 n void Statistics LinkList L 统计职工中的最高工资和最低工资 ListNode Max Min int i 精品文档 16欢迎下载 ListNode t L next if t system cls 清屏 printf 没有储存任何职工记录 n printf 返回主菜单 请先录入职工信息 n return system cls Max Min t t t next while t if Max data salarydata salary Max t Max 指针指向最高工资的职工结点 if Min data salary t data salary Min t Min 指针指向最低工资的职工结点 t t next printf 最高工资为 d n Max data salary printf 最低工资为 d n Min data salary printf 若要查看最低 最高工资的相关职工信息 n printf 请按 1 然后按照提示进行相关操作 n printf 否则 请按 1 除外的任何数字键以退出统计功能 返回主菜单 n printf n 功能选择 scanf d if i 1 Search L 显示符合要求的职工信息 else return void Insert LinkList L 插入新的职工信息 printf 本功能可以通过姓名和工号查找到符合要求的 n 功能介绍 精品文档 17欢迎下载 printf 相关职工信息 然后将您希望添加进去的新的 n printf 职工信息插入到该职工信息记录的后面 n ListNode p s char find 20 存放工号和姓名的变量 int i printf 通过姓名查找 请按 1 n printf 通过工号查找 请按 2 n printf 返回主菜单 请按 3 n printf n 功能选择 scanf d printf n if i 3 system cls 退出插入功能 返回主菜单 return else if i 1 printf 请输入已在存储记录中的职工姓名 scanf s find getchar p Locatename L find 定位 if p printf 您输入的该职工姓名不在信息记录中 请重新核审 n printf 返回主菜单 n return s LinkList malloc sizeof ListNode if s printf 系统分配存储空间失败 n system cls return printf 请输入新职工工号 gets s data num 精品文档 18欢迎下载 printf n printf 请输入新职工姓名 scanf s s data name getchar printf n printf 请输入新职工的性别 注 男性 male 女性 female scanf s s data sex getchar printf n printf 请输入新职工的年龄 scanf d printf n printf 请输入新职工的学历 scanf s s data education getchar printf n printf 请输入新职工的工资 scanf d printf n printf 请输入新职工的电话号码 scanf s s data phone getchar printf n printf 请输入新职工的住址 scanf s s data address getchar printf n s next p next p next s printf 姓名为 s 的新职工信息已成功插到姓名为 s 的职工信息 记录后面 n s data name p data name saveflag 1 资料已改动的存储变量 else if i 2 printf 请输入已在存储记录中的职工工号 scanf s find 精品文档 19欢迎下载 getchar p Locatenum L find 定位 if p printf 您输入的该职工工号不在信息记录中 请重新核审 n printf 返回主菜单 n return s LinkList malloc sizeof ListNode if s printf 系统分配存储空间失败 n system cls return printf 请输入新职工工号 gets s data num printf n printf 请输入新职工姓名 scanf s s data name getchar printf n printf 请输入新职工的性别 注 男性 male 女性 female scanf s s data sex getchar printf n printf 请输入新职工的年龄 scanf d printf n printf 请输入新职工的学历 scanf s s data education getchar printf n printf 请输入新职工的工资 scanf d printf n printf 请输入新职工的电话号码 精品文档 20欢迎下载 scanf s s data phone getchar printf n printf 请输入新职工的住址 scanf s s data address getchar printf n s next p next p next s printf 姓名为 s 的新职工信息已成功插到姓名为 s 的职工信息 记录后面 n s data name p data name saveflag 1 else printf 功能选择有误 返回主菜单 n return void main LinkList L 定义链表 struct Node list FILE fp 文件指针 int choose 保存选择结果变量 char ch 保存 y Y n N int count 0 保存文件中的记录条数 或结点个数 struct Node p r 定义记录指针变量 printf t t t t 职工信息管理系统 n t t t t n L struct Node malloc sizeof struct Node if L printf n 系统分配存储空间失败 n 如没有申请到 打印 提示信息 return 返回菜单 L next NULL 精品文档 21欢迎下载 r L fp fopen Employe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年G1工业锅炉司炉考试模拟题及答案
- 兽医药理学考试试题及标准答案
- 2025年水质考试题库及答案
- 九年级上学期期末模拟测试语文(三)(全国)试卷及答案
- 电大《动物繁殖基础》期末复习考试真题及参考答案
- 2025年中国科学技术大学619生物化学与分子生物学试题及参考答案
- 2025年经济学基础知识测试及答案
- 车辆运行知识培训课件
- 剪映教学课件资料下载不了
- 车辆管理制度培训课件教学
- 水泥路施工安全知识培训课件
- 2025年秋季学期(统编版)二年级上册语文教学工作计划及教学进度表
- 2025年福建省厦门市【辅警协警】笔试真题(含答案)
- (2025年标准)委托他人要账协议书
- 2025-2030中国青少年无人机教育课程体系构建与创新能力培养研究
- 2025年河南开封产城融合投资集团有限公司招聘考试笔试试题(含答案)
- 2025年广西中考语文试题卷(含答案)
- 表单-公司董监高、股东、核心技术人员调查表(上市或尽调使用)
- 小学综合教研组的工作计划PPT模板下载
- GB/T 7588.1-2020电梯制造与安装安全规范第1部分:乘客电梯和载货电梯
- GB/T 3406-2010石油甲苯
评论
0/150
提交评论