




免费预览已结束,剩余18页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
i 目 录 第一章第一章 前言前言 1 第二章第二章 系统功能总体设计分析系统功能总体设计分析 2 2 1 问题描述 2 2 2 详细要求 2 2 3 功能分析 2 2 3 1 具体要求 2 2 3 2 系统流程分析 3 2 3 3系统功能结构 3 2 3 模块函数构造 4 第三章第三章 详细设计分析详细设计分析 5 3 1 抽象数据类型定义 5 3 2 主函数设计 5 3 3 查找算法设计 6 3 4 排序算法设计 7 第四章第四章 系统实现系统实现 9 第五章第五章 课程设计总结课程设计总结 11 参考文献参考文献 12 附录附录 13 职工管理系统 第一章 前言 0 第一章 前言 随着电子信息的到来 能够在任何时候 任何地方 利用应用程序获得统 计分析的相关信息 并享受应用软件带来的便捷 数据结构就是为着实现这样 的目标而设立的核心问题解决方法 数据结构 是计算机专业一门重要的基础课程 本课程较系统地介绍了 软件设计中常用的数据结构以及相应的存储结构和实现算法 介绍了常用的多 种查找和排序技术 本课程将为整个专业的学习以及软件设计水平的提高打下 良好的基础 为了学好 数据结构 必须掌握编写一些在特定数据结构上的算 法 并通过上机调试 更好地掌握各种数据结构及其特点 此次 数据结构 课程设计目的正在于此 经过本次课程设计 我们对于数据结构基本理论和存储结构及算法设计将 有更加深入的理解 并提高我们在实际设计操作中系统分析 结构确定 算法 选择 数学建模和信息加工的能力 提高我们的 C C 语言程序设计能力 以 及培养学我们编写程序设计文档的能力 在经济繁荣中的今天对于职工管理有很大程度上的要求 一个工程能否较 好较快的运行 与职工管理的好坏分不开关系 通过该系统 能够更好的管理 职工 简化管理 使管理更方便 准确性和直观性更强 本着实践为目的 通 过设计与制作进一步学习和掌握职工管理系统的原理和使用方法 虽然在一定 程度上较为简单 但也能体现在出在人员管理上的方便快捷 职工管理系统 第二章 系统功能总体设计分析 1 第二章 系统功能总体设计分析 2 1 问题描述问题描述 根据题目要求 由于职工信息是存放在文件中 所以应提供文件的输入 输出等操作 在程序中需要浏览职工的信息 应提供显示 查找 排序等操作 另外还应提供键盘式选择菜单实现功能选择 对功能要求的实现是解决管理系统的关键问题 一个管理系统能将其划分 为插入 删除 查找 排序等功能 对不同的功能模块进行编写实现 然后通 过一定的方式的进行连接调用 从而完成对各部分的操作 2 2 详细要求详细要求 由系统管理员依次输入现有职工和新增职工的以下信息 姓名 可以重复 性别 出生年月 工作年月 学历 职务 地址 电话等信息 并且注意输入 时姓名 学历 职务 地址为字符串形式 性别为字符 其余的为长整型数字 系统管理员根据公司的人员流动情况 选择系统提供的各项功能进行操作 并输出相应的结果 2 3 功能分析功能分析 2 3 1 具体要求具体要求 简单的职工管理系统主要实现以下功能 新增一名职工 将新增职工对象按姓名以字典方式职工管理文件中 删除一名职工 从职工管理文件中删除一名职工对象 查询 从职工管理文件中查询符合某些条件的职工 修改 检索某个职工对象 对其某些属性进行修改 职工管理系统 第二章 系统功能总体设计分析 2 排序 按某种需要对职工对象文件进行排序 要求 职工信息包括姓名 性别 出生年月 工作年月 学历 职务 住 址 电话等信息 2 3 2 系统流程分析系统流程分析 1 输入功能的实现 要想实现职工管理系统的输入 必须要建立一个职 工信息系统的抽象数据类型 其中职工信息以链表的存储方式实现 由键盘输 入职工对象 以文件方式保存 程序执行时先将文件读入内存 2 系统处理功能的实现 系统管理员根据公司的人员流动情况 在提示 信息的提示下 选择相应的服务进行操作 如对职工对象中的 姓名 按字典顺 序进行排序 对排序后的职工对象进行增 删 查询 修改 排序等操作 3 输出的实现 根据选择的操作 输出与之对应的信息 综上可以绘制出职工管理功能的系统流程图 如图 1 所示 总控模块 输入模块 系统处理 模块 输出模块 测试模块 图1 系统流程图 2 3 3 系统功能结构系统功能结构 根据职工管理系统问题的分析和设计要求 可以得到该职工管理系统可以 分为五个模块 职工信息添加模块 职工信息修改模块 职工信息删除模块 职工信息查询模块 职工信息排序模块 其系统功能结构如图 2 所示 职工管理系统 第二章 系统功能总体设计分析 3 职工管理系统 新 增 职 工 信 息 删 除 职 工 信 息 查 询 职 工 信 息 排 序 职 工 信 息 修 改 职 工 信 息 对 职 务 进 行 查 询 对 电 话 进 行 查 询 对 姓 名 进 行 查 询 对 工 作 年 月 进 行 查 询 对 住 址 进 行 查 询 对 出 生 年 月 进 行 查 询 对 学 历 进 行 查 询 对 性 别 进 行 排 序 对 出 生 年 月 进 行 排 序 对 工 作 年 月 进 行 排 序 对 姓 名 进 行 排 序 图2 系统功能结构图 2 32 3 模块函数构造模块函数构造 根据系统功能结构图的描述 可以构造出该系统的抽象数据类型和相对应 的函数 其方法名和功能如表 1 所示 表1 函数功能表 模块函数或数据结构功能 typedef struct Node 定义链表结点 typedef struct Datatype 定义职工信息链表数据类型 ListInitiate SLNode head 初始化链表 SLNode ListInsert SLNode head DataType x 插入职工信息 ListDelete SLNode head 删除职工信息 ListModify SLNode head 修改职工信息 put SLNode head FILE fp 保存职工信息 Listfind SLNode head 查询职工信息 系统处理模块 Listpaixu SLNode head 职工信息排序 输出模块 print SLNode head 显示职工信息 职工管理系统 第三章 详细设计分析 4 第三章 详细设计分析 3 13 1 抽象数据类型定义抽象数据类型定义 1 定义表结点 typedef struct Node typedef struct Node long int born time work time tele num char sex name ALLMAX degree ALLMAX job ALLMAX address ALLMAX struct Node next SLNode 2 定义职工信息 typedef struct Datatype typedef struct long int born time work time tele num char name ALLMAX sex degree ALLMAX job ALLMAX address ALLMAX DataType 3 初始化链表 ListInitiate SLNode head void ListInitiate SLNode head 链表初始化 if head SLNode malloc sizeof SLNode NULL exit 1 动态分配存 储空间 head next NULL 3 23 2 主函数设计主函数设计 1 根据详细设计要求 可以得到主函数代码及其对应的程序流程图 在 主函数中 实现了友好的界面设计 系统需要输入职工的基本信息 姓名 性 别 出生年月 工作年月 学历 职务 住址 电话等 这个系统还利用键盘 输入提供的主菜单服务 在主菜单中 有七种操作的调用 新增职工信息 SLNode ListInsert SLNode head DataType x 查询职工信息 Listfind SLNode head 删除职工信息 ListDelete SLNode head 职工管理系统 第三章 详细设计分析 5 修改职工信息 ListModify SLNode head 职工信息排序 Listpaixu SLNode head 保存职工信息 put SLNode head FILE fp 显示职工信息 print SLNode head 2 主函数程序流程图如图 3 所示 开始 输入职工人数 和对应的信息 显示主菜单提 示 选择操作 新增职 工信息 删除职 工信息 查询职 工信息 职工信 息排序 修改职 工信息 结束系统 选1 选 2 选3 选 4 选5 选0 选除 上述 数字 之外 的操 作 图 3 主函数程序流程图 3 33 3 查找算法设计查找算法设计 在查询算法中 职工管理系统提供了七种查询操作 实现了系统的人性化 查询操作 这些查询操作分别为 对姓名进行查询 对性别进行查询 对出生年月进行查询 对工作年月进 行查询 对学历进行查询 对职位进行查询 对住址进行查询 对电话进行查 询等一些列操作 查找算法中 利用链表的指针的移动扫描整个职工信息表 利用 strcmp 函数判断字符串是否匹配 职工管理系统 第三章 详细设计分析 6 查询算法程序流程图如图 4 所示 链表是否为空 选择执行的 操作 退出查 询 对年龄 查询 对学历 查询 对工作年 月查询 对住址 查询 对出生年 月查询 对姓名 查询 对职务 查询 无职工 信息 是 否 选0 选3 选1 选4 选6 选5 选7 选2 显示查询 主菜单 选择除上述数字之外的操作 图 4 查询算法程序流程图 3 43 4 排序算法设计排序算法设计 在排序算法中 职工管理系统提供了四种查询操作 实现了系统的基本排 序操作 这些排序操作分别为 对姓名进行排序 对性别进行排序 对出生年月进行排序 对工作年月进 行排序 等一些列操作 排序算法中 利用链表的指针的移动扫描整个职工信 息表 利用 strcmp 函数判断字符串是否匹配 职工管理系统 第三章 详细设计分析 7 排序的核心代码 for q head next p head s p q s p p q q q next if p born time q born time 对出生年月进行排序 if head p head next q next head q q next p q head next p head else p next q next q next p s next q p q q p next flag 1 排序算法流程图如图 5 所示 显示排序菜单 链表是否为 空 选择操作 对工作日 期排序 对出生日 期排序 退出排 序系统 对性别 排序 无职工 信息 是 否 选0 选1 选2 选3 选除上述操作的任意操作 图5 排序算法程序流程图 职工管理系统 第四章 系统实现 8 第四章 系统实现 测试是使用人工或者自动手段来运行或测试某个系统的过程 其目的在于检 验是否满足规定的需求或弄清预期结果与实际结果之间的差别 系统运行结果 1 进入职工管理系统 如图 6 所示 图 6主菜单选择界面 2 新增一职工信息并查询全部职工信息 如图 7 8 所示 图 7 新增职工信息界面 职工管理系统 第四章 系统实现 9 图 8 查询职工信息界面 3 修改职工信息并与前面信息对照 如图 9 所示 图9 修改职工信息界面 4 退出系统 如图 10 所示 选择 0 退出职工管理系统 图10 退出职工管理系统 职工管理系统 第五章 课程设计总结 10 第五章 课程设计总结 本次课程设计是围绕数据结构进行 根据问题描述可知 需要解决问题并 不复杂 整个问题只需要实现一个职工管理系统功能 那就是在这个系统中实 现对职工信息的插入 删除 查询 排序 修改以及保存 但是 为了实现该 功能 却需要优秀的算法和数据结构以保证实现的时间和空间效率 把职工信 息存储在一个单链表中 利用指针实现对职工信息的各项基本操作 虽然设计的程序完成了题目描述所需要实现的功能 但是仍然存在不如人 意的地方 那就是可以排序上面多设计几个算法 实现多角度排序 在这个系 统中没有职工序号的信息 所以允许职工姓名相同 在很大程度上面 可能是 的职工信息重复 经过这次数据结构课程设计 我们不仅及时巩固的了数据结构 算法 以 及软件工程的知识 并明白数据结构和算法对于程序时间和空间性能的影响 及软件工程提供的开发流程和工具对于实现特定功能程序的重要意义 当我们面对一个实际问题 应该迅速根据问题性质和特点抽象成特定的数 据结构 当然每个问题都有可能能够抽象成多种数据结构 每种数据结构适应 于不同的算法 因此应该综合考虑这样的数据结构 算法以及它们的空间和时 间效率 然后从中选择一个作为实现程序的基础 此外 对程序的测试应该要仔细 根据模块的特点和测试阶段 采用各种 软件测试方法对程序进行测试 确保各个模块的正确性和完整性 最后集成起 来测试其是否正确和完整地实现了问题描述中要求的功能 职工管理系统 参考文献 11 参考文献 1 李云清 杨庆红 揭安全 数据结构 C 语言版 M 北京 人民邮电大学 出版社 2004 6 2 潘彦 算法设计与分析基础 M 北京 清华大学出版社 2007 1 3 肖梦强 曲秀清 软件工程 原理 方法与应用 M 北京 中国水利水电 出版社 2005 10 4 吕凤翥 C 语言程序设计 第 2 版 M 北京 电子工业出版社 2007 2 5 严蔚敏 吴伟民 数据结构 C 语言版 M 北京 清华大学出版社 2002 9 职工管理系统 附录 12 附录附录 include include include include include include include include using namespace std struct Employee 声明职工的结构作为链表节点 数据域 string m Code string m Name unsigned short int m Year string m Sex string m Post string m Department unsigned int m Wage 链表节点的指针域 struct Employee Next 个人习惯 取别名 typedef struct Employee Node typedef Node Link 函数声明 Link Create Link Head void Release Link Head Link Add Link Head bool Search Link Head Link Search Unique Link Head void Display List Link Head void Display Node Link pNode Link Modify Link Head 职工管理系统 附录 13 Link Del Link Head void Save ByFile Link Head fstream Link Sort Link Head 函数实现 Link Create Link Head 创建一个带头节点的空链表 Head Link new Node if Head cout 分配内存失败 m Code Head m Name Head m Year 0 Head m Sex Head m Post Head m Department Head m Wage 0 Head Next NULL return Head void Release Link Head 释放链表 Link ptr 声明一个操作用的指针 while Head NULL ptr Head Head Head Next delete ptr 释放节点资源 Link Add Link Head 前插法添加数据 Link pNew 声明一个新节点 char again string code name sex post department unsigned short int year unsigned int wage do 职工管理系统 附录 14 pNew Link new Node 数据域 cout code cout endl name cout endl year while cin fail cout 请输入正确的年份格式 year cout endl sex cout endl post cout endl department cout endl wage while cin fail cout 请输入正确的工资数据 wage cout m Code code pNew m Name name pNew m Year year pNew m Sex sex pNew m Post post pNew m Department department pNew m Wage wage 指针域 pNew Next Head Next Head Next pNew cout 数据添加成功 是否继续添加 Y N again while again Y again y 职工管理系统 附录 15 return Head bool Search Link Head 查询同时满足 姓名 和 部门 的职工信息 Link ptr string department string name ptr Head Next cout department cout endl name cout endl 查询结果 endl cout endl 职工代码 姓名 出生年份 性别 职称 部门 工资 m Name name 打印满足条件的节点 return true ptr ptr Next 查询下一节点 cout 无此职工的信息 endl return false Link Search Unique Front Link Head 查询满足 职工代码 的职工信息 职工代码必需唯一 Link ptr string code ptr Head cout code cout endl 查询结果 endl cout endl 职工代码 姓名 出生年份 性别 职称 部门 工资 Next if ptr Next m Code code Display Node ptr 打印满足条件的节点 return ptr 注意 是返回的查询到的节点的直接前趋节点 ptr Next ptr Next Next 查询下一节点 职工管理系统 附录 16 return ptr void Display List Link Head Link ptr ptr Head Next cout 所有职工信息 endl cout endl 职工代码 姓名 出生年份 性别 职称 部门 工资 Next void Display Node Link pNode 在标准输出设备上输出 cout setw 10 left m Code setw 10 left m Name setw 10 left m Year setw 10 left m Sex setw 10 left m Post setw 10 left m Department setw 10 left m Wage Next cout 你现在可以修改此职工的信息了 endl cout endl 职工代码 姓名 出生年份 性别 职称 部门 工资 endl 数据域 cout code cout endl name cout endl year while cin fail cout 请输入正确的年份格式 year cout endl sex cout endl post cout endl department cout endl wage while cin fail cout 请输入正确的工资数据 wage cout Next m Code code 因 ptr 是前趋节点 所以要用 ptr Next ptr Next m Name name ptr Next m Year year ptr Next m Sex sex ptr Next m Post post ptr Next m Department department ptr Next m Wage wage cout 没找到此职工的记录 无法修改 Next if ptr 职工管理系统 附录 18 ptr front Next ptr Next delete ptr 删除此节点 cout 没找到此职工的记录 无法删除 Next ofile clear 清除文件结束状态 while pNode ofile setw 10 left m Code setw 10 left m Name setw 10 left m Year setw 10 left m Sex setw 10 left m Post setw 10 left m Department setw 10 left m Wage Next cout 数据文件保存成功 Next NULL Head Next Next NULL 此步条件判断非常有价值 cout 数据节点数少于 2 个 不用排序 Next Next ptr F Head Head Next Next NULL 到此 分成了两个链表 第三步 while ptr 职工管理系统 附录 19 ptr N ptr Next ptr F Head ptr F 的归位 while ptr F Next if ptr m Wage ptr F Next m Wage ptr Next ptr F Next p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工厂安全培训知识点
- 2025重庆巫溪县事业单位考核招聘98人备考考试题库附答案解析
- 2025四川泸州交通物流集团有限公司及下属公司招聘10人备考考试题库附答案解析
- 法务专业团队咨询方案
- 2025湖北省省直机关遴选公务员214人备考考试题库附答案解析
- 哲学博士路途
- 工厂安全培训文案课件
- 2025西安经开第九小学实习教师招聘备考考试题库附答案解析
- 2025贵州安顺市中医院引进专业技术人才备考练习试题及答案解析
- 枣庄市台儿庄区2025届公费医学毕业生定岗备考考试题库附答案解析
- 2024版2025秋贵州黔教版综合实践活动五年级上册全册教案教学设计
- 转作风重实干课件
- 村干部饮水安全培训总结课件
- 安全生产治本攻坚三年行动半年工作总结
- 单招备考科学方案
- 医美咨询培训课件
- 海船船员适任 评估规范(2024)轮机专业
- DB50-T 1463.2-2023 牛羊布鲁氏菌病防控技术规范 第2部分:人员防护
- NoSQL数据库应用与实践 课件 第1-6章 认识NoSQL - 增删改查
- 20世纪宋史研究:主要趋势、热点领域与未来展望
- 2025年度餐饮店知识产权保护与合伙人合同
评论
0/150
提交评论