数据结构简单的职工管理系统完整版.doc_第1页
数据结构简单的职工管理系统完整版.doc_第2页
数据结构简单的职工管理系统完整版.doc_第3页
数据结构简单的职工管理系统完整版.doc_第4页
数据结构简单的职工管理系统完整版.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习资料收集于网络 仅供参考 学习资料 湖南涉外经济学院湖南涉外经济学院 数据结构课程设计报告 题目 题目 简单的职工管理系统简单的职工管理系统 院系名称 院系名称 计算机学院计算机学院 专业名称 专业名称 计算机科学与技术计算机科学与技术 班班 级 级 计科计科 201001 班班 学生姓名 学生姓名 刘兴斌刘兴斌 学号 学号 30 指导教师 指导教师 张建明张建明 设计起止时间 设计起止时间 2011 年 11 月 20 日 2011 年 12 月 30 日 学习资料收集于网络 仅供参考 学习资料 完成于 2011 年 12 月 29 日 星期四 目 录 第一章第一章 序序 1 第二章第二章 系统总体功能的设计和分析 2 1 问题描述 2 2 详细要求 2 3 功能分析 2 1 具体要求 2 2 系统流程分析 3 3 系统功能结构 3 4 模块函数构造 4 第三章第三章 详细设计分析详细设计分析 5 1 抽象数据类型定义 5 2 主函数设计 5 3 查找算法设计 6 4 排序算法设计 8 第四章第四章 源程序代码源程序代码 11 学习资料收集于网络 仅供参考 学习资料 第五章第五章 系统实现系统实现 29 第第六六章章 课程设计总结课程设计总结 31 学习资料收集于网络 仅供参考 学习资料 第一章 序 电子信息时代由如洪水一样的凶猛 能在现实社会应用软件给 我们的生活和工作带来方便和实用性就是软件存在的最大的价值 数据结构所能解决的就是这些复杂的问题简单化 数据结构 是计算机专业学生学习的一门基础课程 但十分 的重要 本课程系统地介绍了软件设计中常用的数据结构以及相应 的存储结构和实现算法 介绍了常用的多种查找和排序技术 本课 程将为整个专业的学习以及软件设计水平的提高打下良好的基础 为了学好 数据结构 必须掌握编写一些在特定数据结构上的算法 并通过上机调试 更好地掌握各种数据结构及其特点 经过本次课程设计 我们对于数据结构基本理论和存储结构及 算法设计将有更加深入的理解 并提高我们在实际设计操作中系统 分析 结构确定 算法选择 数学建模和信息加工的能力 提高我 们的 C C 语言程序设计能力 以及培养学我们编写程序设计文档 的能力 为将来在实战工作中打下良好的基础 在经济发达的今天对于职工简单的管理都是有很大程度上的要 求 一个工司能否较好较快的运行 与职工管理的好坏分不开关系 通过该系统 将一系列的问题系统化 能够更好的管理职工 简化 管理 使管理更方便 准确性 直观性和实用性更强 本着以锻炼 自己的能力为目的 通过设计与制作进一步学习和掌握简单的职工 管理系统的原理和使用方法 虽然在一定程度上较为简单 但也能 体现在出在人员管理上的方便快捷 也体现一个领导的管理水平是 不是充满艺术 学习资料收集于网络 仅供参考 学习资料 第二章第二章 系统总体功能的设计和分析系统总体功能的设计和分析 1 问题描述问题描述 根据课程设计题目的要求 由于职工信息是一定要存放 在指定的文件中 所以应提供文件的输入 输出等操作 在程序中需要浏览职工的信息 应提供显示 查找 删除 插入 排序等一系列的操作 另外还应提供键盘式选择菜 单实现功能选择 对功能要求的实现是解决管理系统的关键问题 一个管 理系统能将其划分为插入 删除 查找 排序等功能 对 不同的功能模块进行代码的编写实现 最后通过一定的方 式的进行连接测试和最终的调用 从而完成对各部分的操 作 2 详细要求 详细要求 1 要求 职工对象包括姓名 性别 出生年月 工作年月 学 历 职务 住址 电话等信息 1 新增一名职工 将新增职工对象按姓名以字典方式职 工管理文件中 2 删除一名职工 从职工管理文件中删除一名职工对象 3 查询 从职工管理文件中查询符合某些条件的职工 4 修改 检索某个职工对象 对其某些属性进行修改 5 排序 按某种需要对职工对象文件进行排序 学习资料收集于网络 仅供参考 学习资料 3 功能分析功能分析 1 1 实现提示实现提示 职工对象数不必很多 便于一次读入内存 所有操作不经过内外存交换 职工对象数不必很多 便于一次读入内存 所有操作不经过内外存交换 1 1 由键盘输入职工对象 以文件方式保存 程序执行时先将文件读入内存 由键盘输入职工对象 以文件方式保存 程序执行时先将文件读入内存 2 2 对职工对象中的 对职工对象中的 姓名姓名 按字典顺序进行排序 按字典顺序进行排序 3 3 对排序后的职工对象进行增 删 查询 修改 排序等操作 对排序后的职工对象进行增 删 查询 修改 排序等操作 2 系统流程分析系统流程分析 1 输入功能的实现 要想实现职工管理系统的输入 必须要建立一个职 工信息系统的抽象数据类型 其中职工信息以链表的存储方式实现 由键盘输 入职工对象 以文件方式保存 程序执行时先将文件读入内存 2 系统处理功能的实现 系统管理员根据公司的人员流动情况 在提示 信息的提示下 选择相应的服务进行操作 如对职工对象中的 姓名 按字典顺 序进行排序 对排序后的职工对象进行增 删 查询 修改 排序等操作 3 输出的实现 根据选择的操作 输出与之对应的信息 综上可以绘制出职工管理功能的系统流程图 如图 1 所示 总控模块 输入模块 系统处理 模块 输出模块 测试模块 图1 系统流程图 学习资料收集于网络 仅供参考 学习资料 3 系统功能结构 系统功能结构 根据职工管理系统问题的分析和设计要求 可以得到该职工管理系统可以 分为五个模块 职工信息添加模块 职工信息修改模块 职工信息删除模块 职工信息查询模块 职工信息排序模块 其系统功能结构如图 2 所示 职工管理系统 新 增 职 工 信 息 删 除 职 工 信 息 查 询 职 工 信 息 排 序 职 工 信 息 修 改 职 工 信 息 对 职 务 进 行 查 询 对 电 话 进 行 查 询 对 姓 名 进 行 查 询 对 工 作 年 月 进 行 查 询 对 住 址 进 行 查 询 对 出 生 年 月 进 行 查 询 对 学 历 进 行 查 询 对 性 别 进 行 排 序 对 出 生 年 月 进 行 排 序 对 工 作 年 月 进 行 排 序 对 姓 名 进 行 排 序 图2 系统功能结构图 4 4 模块函数构造模块函数构造 根据系统功能结构图的描述 可以构造出该系统的抽象数据类型和相对应 的函数 其方法名和功能如表 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 显示职工信息 学习资料收集于网络 仅供参考 学习资料 第三章 详细设计分析 1 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 2 2 主函数设计主函数设计 1 根据详细设计要求 可以得到主函数代码及其对应的程序流程图 在 主函数中 实现了友好的界面设计 系统需要输入职工的基本信息 姓名 性 别 出生年月 工作年月 学历 职务 住址 电话等 这个系统还利用键盘 输入提供的主菜单服务 在主菜单中 有七种操作的调用 新增职工信息 SLNode ListInsert SLNode head DataType x 查询职工信息 Listfind SLNode head 删除职工信息 ListDelete SLNode head 学习资料收集于网络 仅供参考 学习资料 修改职工信息 ListModify SLNode head 职工信息排序 Listpaixu SLNode head 保存职工信息 put SLNode head FILE fp 显示职工信息 print SLNode head 2 主函数程序流程图如图 3 所示 开始 输入职工人数 和对应的信息 显示主菜单提 示 选择操作 新增职 工信息 删除职 工信息 查询职 工信息 职工信 息排序 修改职 工信息 结束系统 选1 选 2 选3 选 4 选5 选0 选除 上述 数字 之外 的操 作 图 3 主函数程序流程图 3 3 查找算法设计查找算法设计 在查询算法中 职工管理系统提供了七种查询操作 实现了系统的人性化 查询操作 这些查询操作分别为 对姓名进行查询 对性别进行查询 对出生年月进行查询 对工作年月进 行查询 对学历进行查询 对职位进行查询 对住址进行查询 对电话进行查 询等一些列操作 查找算法中 利用链表的指针的移动扫描整个职工信息表 利用 strcmp 函数判断字符串是否匹配 学习资料收集于网络 仅供参考 学习资料 查询算法程序流程图如图 4 所示 链表是否为空 选择执行的 操作 退出查 询 对年龄 查询 对学历 查询 对工作年 月查询 对住址 查询 对出生年 月查询 对姓名 查询 对职务 查询 无职工 信息 是 否 选0 选3 选1 选4 选6 选5 选7 选2 显示查询 主菜单 选择除上述数字之外的操作 图 4 查询算法程序流程图 4 4 排序算法设计排序算法设计 在排序算法中 职工管理系统提供了四种查询操作 实现了系统的基本排 序操作 这些排序操作分别为 对姓名进行排序 对性别进行排序 对出生年月进行排序 对工作年月进 行排序 等一些列操作 排序算法中 利用链表的指针的移动扫描整个职工信 息表 利用 strcmp 函数判断字符串是否匹配 学习资料收集于网络 仅供参考 学习资料 排序的核心代码 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 排序算法程序流程图 学习资料收集于网络 仅供参考 学习资料 第四章第四章 源程序代码源程序代码 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 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 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 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 查询下一节点 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 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 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 ptr F Next ptr break if 学习资料收集于网络 仅供参考 学习资料 else ptr F ptr F Next while ptr F Next if ptr F Next NULL ptr Next ptr F Next ptr F Next ptr 表示插到有序链表的最后面了 ptr ptr N 归位 准备下一次排序 while ptr cout 从高到低 排序成功 endl return Head int main Link Head 0 学习资料收集于网络 仅供参考 学习资料 Head Create Head fstream iofile iofile open d iofile txt ios base in ios base out ios ba se app 文件以三种方式打开 if iofile cout 打开文件失败 endl return 1 int menu while 1 cout endl cout 欢迎进入职工管理系统 endl cout endl cout endl cout endl cout 主菜单 endl cout endl cout endl 学习资料收集于网络 仅供参考 学习资料 cout endl cout 1 注册职工 2 修改信息 endl cout 3 删除信息 4 信息查询 endl cout 5 保存文件 6 工资排行 endl cout 7 信息显示 0 退出系统 endl cout endl cout endl cout endl cout endl cout endl menu while cin fail cout 请选择正确的菜单选项 menu switch menu case 0 cout 成功退出系统 endl return 0 case 1 Head Add Head break case 2 Head Modify Head break case 3 Head Del Head break case 4 Search Head break case 5 Save ByFile Head iofile 学习资料收集于网络 仅供参考 学习资料 break case 6 Sort Head break case 7 Display List Head break default cout 请选择正确的菜单项进行操作 多谢合作 endl Release Head iofile close return 0 学习资料收集于网络 仅供参考 学习资料 第五章 系统实现 测试是使用人工或者自动手段来运行或测试某个系统的过程 其目的在于检 验是否满足规定的需求或弄清预期结果与实际结果之间的差别 系统运行结果 1 进入职工管理系统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论