C语言职工工资管理系统程序设计报告_第1页
C语言职工工资管理系统程序设计报告_第2页
C语言职工工资管理系统程序设计报告_第3页
C语言职工工资管理系统程序设计报告_第4页
C语言职工工资管理系统程序设计报告_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

C 语言课程设计报告 题 目 小型职工工资管理系统 专业班级 2016 级通信工程本科 1 班 组 别 通信第二组 学生姓名 院 系 信息工程系 指导教师 职称 完成时间 2017 年 5 月 31 日 课程设计任务书 题目 职工工资管理系统 班级 2016 级通信工程本科 1 班 学号 6 姓名 学号 1 姓名 学号 8 姓名 学号 9 姓名 学号 6 姓名 一 主要内容 本课程设计结合本学期所学 C 语言知识 准备设计开发一个简单职工工资管理 系统 工资管理系统是企业不可或缺的一部分 它利用计算机对员工工资进行统一 管理 实现工资管理系统的系统化 规范化和自动化 为企业提高工作效率 设计 开发这个系统需要用到单链表 文件读取操作 结构体 函数 指针等 C 语言知识 本课程设计准备通过 Windows 控制台应用程序实现职工工资管理系统的简单运行 利用所学知识 本着简单 易用的设计原则 本课程设计尽量实现良好 美观的 人机界面 便于软件的操作使用 本次设计主要学习内容包括 一 进一步学习并熟练掌握 C 语言语法和编程思想 二 学习 C 语言提供的库函数 熟悉 Visual C 6 0 的开发工具 三 学习 C 语言函数 链表 结构体 文件读取 指针等知识 四 学习如何查阅他人的文档进行软件的设计与开发 二 基本要求 一 质量要求 1 职工工资管理系统基本功能模块的设计应包括 显示主菜单功能 职工信 息的录入 添加 删除 修改 查询 排序功能 退出系统 测试文件的读取与存 储是否正常 测试评估界面是否合理 友好 2 对职工工资管理系统设计并进行调试 修复 完善 测试 3 定期主动向指导教师汇报任务进度 认真填写相关报告文档 4 按时完成各阶段工作 不突击 不抄袭 二 进度要求 1 明确课程设计任务 搜集资料 2017 年 2 月 28 日 3 月 14 日 2 完成程序的设计与实现 撰写课程设计论文初稿 2017 年 3 月 15 日 5 月 15 日 3 与指导教师沟通 完成课程设计论文定稿 2016 年 5 月 16 日 2017 年 5 月 28 日 4 进入课程设计论文审阅阶段 准备答辩 2017 年 5 月 29 日 6 月 9 日 三 主要参考资料 1 工资管理系统课程设计程序 2 C 语言程序设计规范及基础 3 明解 C 语言 第 3 版 日 柴田望洋著 人民邮电出版社 4 C Primer Plus 第 6 版 中文版 姜佑 译 人民邮电出版社 5 C 程序设计 第四版 谭浩强著 清华大学出版社 6 C 和 C 实物精选 徐波著 北京邮电出版社 学 生 签 名 指导教师签名 年 月 日 目目 录录 1 概述 1 1 1 设计思想 1 1 2 设计原则 1 1 3 性能需求 1 1 4 课程设计报告内容及分工情况 2 1 4 1 课程设计报告内容 2 1 4 2 课程设计分工情况 2 2 总体设计 3 2 1 系统功能设计图 3 2 2 主函数 main 3 2 3 程序流程图 4 3 详细设计 5 3 1 函数 5 3 2 函数流程图 10 4 运行结果与调试 16 4 1 运行结果 16 4 2 程序调试 21 结束语 22 附录 25 1 1 1 概述概述 1 11 1 设计思想设计思想 1 系统分成几个相对独立的模块 但这些模块都进行集中式管理 2 分层的模块化程序设计思想 整个系统采用模块化结构设计作为应用程 序 有较强的可操作性和扩展性 3 合理的数据设计 在应用系统设计中 相对独立的模块间以数据相互连 接 使各模块间的耦合性较低 方便系统运行 提高系统安全性 1 21 2 设计原则设计原则 为了使本系统功能齐全完备 操作简便 最大限度的提高软件的质量 从 而满足用户的实际需要 在设计开发过程中遵循了如下原则 1 合法性原则 依据产品核算系统的工作规定以及要求 参照核算实际的 工作情况 进行诸如产品进货 销售等工作 2 实用性原则 适合产品信息管理工作的实际需求 并能够处理一些特殊 情况的要求 此外 尽可能预留空间 以便扩充功能 3 准确性原则 对输入的相关资料建立检错机制 及时报错 使用户能够 及时准确的输入合法资料 如 类型匹配 长度不超限等 4 易操作原则 要求设计的系统功能齐全 界面友好 操作方便 必要的 地方进行提示 5 源程序可读性原则 为了便于其他设计 维护人员读懂代码或以后的代 码修改 软件升级维护 即可能做好代码注释工作 1 31 3 性能需求性能需求 1 支持工资信息一次性多组导入 2 2 非法操作能够提示错误并且知道安全行为方式 3 信息查询时界面显示数量 1 41 4 课程设计报告内容及分工情况课程设计报告内容及分工情况 1 4 11 4 1 课程设计报告内容课程设计报告内容 1 系统功能模块结构图和程序流程图 2 数据结构设计及用法说明 3 程序结构 画功能模块图或流程图 4 各模块的功能 5 实验结果 包括输入数据和输出结果 6 设计体会 7 参考文献 1 4 21 4 2 课程设计分工情况课程设计分工情况 本组共有 5 人 具体分工情况如下 1 学号 6 姓名 司笑笑 具体负责功能模块结构图和程序流 程图的设计 负责 排序 代码的编写及整体代码的整合 负责程序设计 报告中函数详细设计 2 学号 1 姓名 代慧 负责 添加 录入 代码的编写 负责 显示界面的优化 美化 3 学号 8 姓名 王春亚 负责 查询 代码的编写 程序的测试与 3 调试 4 学号 9 姓名 董子阳 负责 修改 代码的编写 具体负责实验 结果的采集 程序设计报告书的校对 负责流程图的绘制 5 学号 6 姓名 马良智 负责 删除 代码的编写 具体负责程序 设计报告书的排版与完善 相关文献的查找和参考 4 2 2 总体设计总体设计 2 12 1 系统功能设计图系统功能设计图 系统功能设计是使整个系统能基本实现职工工资管理功能 能让公司的管 理者利用计算机对员工工资进行统一管理 实现工资管理系统的系统化 规范 化和自动化 提高了工作效率 管理信息系统 MIS 主要的功能就是进行信息的 收集 查询 存储 同时对这些信息进行维护的 本系统共包括七大模块 分别是录入模块 添加模块 修改模块 删除模 块 查询模块 排序模块 输出模块 系统功能模块设计如图 2 1 所示 图 2 1 小型职工工资管理系统功能模块结构图 2 2 主函数 main 1 函数的功能 用于联系各个功能函数模块 以及退出程序时的退出画面 提示 2 函数的入口 整个程序是从主函数开始的 5 3 函数的出口 当从 main 的 switch 开关结构中进入 即 choise 的值大于 7 时通过 return 退出 main 函数 即 退出整个程序 4 函数调用关系 该函数不被其它函数调用 2 3 程序 流程 图 6 3 详细设计 3 1函数 1 功能函数 mainMenu 函数的功能 显示主菜单 函数的入口 从 main 进入 main 运行时进入该函数 函数调用关系 被主函数调用 7 函数的出口 当主菜单显示在屏幕上 结束该函数 2 功能函数 input LinkList head 函数的功能 进入录入职工信息系统 函数的入口 程序从 main 的 switch 开关结构中进入 即 choice 的值为 1 时 开始进入该函数 进入函数后 首先用 inputMenu 显示录入菜单选项 然后选择选项进行录入职工信息 函数调用关系 被主函数调用 从 switch 开关结构中进入 并在文中无 返回值的空值 void 函数 函数的出口 录入职工信息完成后 结束该函数而并执行主函数 main 中 output head 输出职工信息在屏幕上并保存职工信息在磁盘上 然后执 行 break 跳出 switch 开关函数 继续执行 while 循环结构 3 功能函数 inputMenu 函数的功能 显示录入菜单 函数的入口 从 input LinkList head 进入 input LinkList head 被调用时 进入该函数 函数调用关系 被 input LinkList head 调用 并在文中无返回值的空值 void 函数 函数的出口 当录入菜单显示在屏幕上 结束该函数 4 功能函数 hand LinkList head 函数的功能 进入 手动录入职工信息 函数的入口 程序从 input LinkList head 的 switch 开关结构中进入 即 choice 的值为 1 时 开始进入该函数 进入函数后 首先输入录入职工人数 然后逐个录入职工信息 函数调用关系 被 input LinkList head 调用 从 switch 开关结构中进入 8 并在文中无返回值的空值 void 函数 函数的出口 录入全部职工信息完成后 结束该函数并执行 input LinkList head 中 break 跳出 switch 开关函数 继续执行 while 循环结 构 5 功能函数 read LinkList head 函数的功能 进入 文件录入职工信息 函数的入口 程序从 input LinkList head 的 switch 开关结构中进入 即 choice 的值为 2 时 开始进入该函数 进入函数后 输入需要录入的文件路径 fileName 通过 fopen 函数 即 if fq fopen fileName r NULL 打开文 件 进入数据的处理 函数调用关系 被 input LinkList head 调用 从 switch 开关结构中进入 并在文中无返回值的空值 void 函数 函数的出口 自动录入文件中全部职工信息后 结束该函数并执行 input LinkList head 中 break 跳出 switch 开关函数 继续执行 while 循环结 构 6 功能函数 output LinkList head 函数的功能 输出职工信息 函数的入口 程序在录入 添加 修改 删除 查询 排序后都进入该 函数 进入函数后 将职工信息用 printf 标准输出到屏幕上 然后通过 fopen 函数 即 if fp fopen d worker dat w NULL 打开文件 将职工 信息写到 d worker dat文件中 函数调用关系 被 main 等多个调用 在文中无返回值的空值 void 函数 函数的出口 将职工信息用 printf 标准输出到屏幕上 将职工信息存入 磁盘后 结束该函数 7 功能函数 add LinkList head 9 函数的功能 添加一个职工信息 函数的入口 从 main 的 switch 开关结构中进入 即 choice 的值为 2 的 时侯 进入该函数 根据提示输入职工信息 函数调用关系 被主函数调用 由 switch 开关结构中进入 并在文中有 返回值的整型 int 函数 返回值为 1 添加成功 函数的出口 职工信息添加成功返回 1 后结束该函数 并执行主函数 main 中 output head 输出职工信息在屏幕上并保存职工信息在磁盘上 然 后执行 break 跳出 switch 开关函数 继续执行 while 循环结构 8 功能函数 deleteWorker LinkList head 函数的功能 删除 一个职工信息 函数的入口 从 main 的 switch 开关结构中进入 即 choice 的值为 3 的 时侯 进入该函数 输入要删除的职工编号 删除改编号职工信息 函数调用关系 被主函数调用 由 switch 开关结构中进入 并在文中有 返回值的整型 int 函数 返回值为 1 删除成功 函数的出口 职工信息删除成功返回 1 后结束该函数 并执行主函数 main 中 output head 输出剩余的职工信息在屏幕上 然后执行 break 跳出 switch 开关函数 继续执行 while 循环结构 9 功能函数 update LinkList head 函数的功能 修改一个职工信息 函数的入口 从 main 的 switch 开关结构中进入 即 choice 的值为 4 的 时侯 进入该函数 输入要修改的职工编号 根据提示输入新的职工信息 函数调用关系 被主函数调用 由 switch 开关结构中进入 并在文中有 返回值的整型 int 函数 返回值为 1 修改成功 函数的出口 职工信息修改成功返回 1 后结束该函数 并执行主函数 main 中 output head 输出职工信息在屏幕上并保存职工信息在磁盘上 然 10 后执行 break 跳出 switch 开关函数 继续执行 while 循环结构 10 功能函数 find LinkList head 函数的功能 进入查询职工信息系统 函数的入口 程序从 main 的 switch 开关结构中进入 即 choice 的值为 5 时 开始进入该函数 进入函数后 首先用 findMenu 显示查询菜单选项 然后选择选项进行查询职工信息 函数调用关系 被主函数调用 从 switch 开关结构中进入 并在文中无 返回值的空值 void 函数 函数的出口 查询职工信息完成后 结束该函数 然后执行主函数 main 中 的 break 跳出 switch 开关函数 继续执行 while 循环结构 11 功能函数findMenu 函数的功能 显示查询菜单 函数的入口 从 find LinkList head 进入 find LinkList head 被调用时进 入该函数 函数调用关系 被 find LinkList head 调用 并在文中无返回值的空值 void 函数 函数的出口 当查询菜单显示在屏幕上 结束该函数 12 功能函数 findByWay LinkList head int n 函数的功能 查询职工信息 函数的入口 程序从 find LinkList head 的 switch 开关结构中进入 即 choice 的值为 1 2 3 4 5 6 时 开始进入该函数 进入函数后 根据不同 的选项值进行相应的查询 函数调用关系 被 find LinkList head 调用 从 switch 开关结构中进入 并在文中有返回值的的整型 int 函数 返回值为 1 查询成功 11 函数的出口 查询职工信息完成后 执行 output head 输出职工信 息在屏幕上并保存职工信息在磁盘上 然后结束该函数 执行 find LinkList head 中 break 跳出 switch 开关函数 继续执行 while 循环结构 13 功能函数 sort LinkList head 函数的功能 进入职工信息排序系统 函数的入口 程序从 main 的 switch 开关结构中进入 即 choice 的值为 6 时 开始进入该函数 进入函数后 首先用 sortMenu 显示排序菜单选项 然 后选择选项进行职工信息排序 函数调用关系 被主函数调用 从 switch 开关结构中进入 并在文中无 返回值的空值 void 函数 函数的出口 职工信息排序完成后 结束该函数 然后执行主函数 main 中 的 break 跳出 switch 开关函数 继续执行 while 循环结构 14 功能函数sortMenu 函数的功能 显示排序菜单 函数的入口 从 sort LinkList head 进入 sort LinkList head 被调用时进入 该函数 函数调用关系 被 sort LinkList head 调用 并在文中无返回值的空值 void 函数 函数的出口 当排序菜单显示在屏幕上 结束该函数 15 功能函数 sortByWay LinkList head int n 函数的功能 职工信息排序 函数的入口 程序从 sort LinkList head 的 switch 开关结构中进入 即 choice 的值为 1 2 3 4 5 6 时 开始进入该函数 进入函数后 根据不同 的选项值进行相应的排序 12 函数调用关系 被 sort LinkList head 调用 从 switch 开关结构中进入 并在文中有返回值的的整型 int 函数 返回值为 1 排序成功 函数的出口 职工信息排序完成后 执行 output head 输出职工信 息在屏幕上并保存职工信息在磁盘上 然后结束该函数 执行 sort LinkList head 中 break 跳出 switch 开关函数 继续执行 while 循环结构 16 功能函数 uqnum LinkList head int num 函数的功能 判断职工编号是否已存在 函数的入口 程序 add LinkList head 中进入 输入职工编号后 开始进 入该函数 进入函数后 判断输入的职工编号是否已经存在 函数调用关系 被 add LinkList head 调用 在文中有返回值的的整型 int 函数 返回值为 1 职工编号已存在 函数的出口 判断职工编号是否已存在后返回 add LinkList head 继续 输入其它职工信息或重新输入职工编号 功能实现效果如图 3 1 所示 13 图 3 1 主菜单界面 3 2函数流程图函数流程图 1 录入职工信息 该功能模块流程如图 3 2 所示 图 3 2 录入职工信息 功能模块流程图 14 2 添加职工信息 该功能模块流程如图 3 3 所示 15 图 3 3 添加职工信息 功能模块流程图 16 3 删除职工信息 该功能模块流程如图 3 4 所示 17 图 3 4 删除职工信息 功能模块流程图 4 修改职工信息 该功能模块流程如图 3 5 所示 18 图 3 5 修改职工信息 功能模块流程图 19 5 查询职工信息 该功能模块流程如图 3 6 所示 20 图 3 6 查询职工信息 功能模块流程图 21 6 排序职工信息 该功能模块流程如图 3 7 所示 22 图 3 7 排序职工信息 功能模块流程图 4 4 运行结果运行结果与调试与调试 4 1 运行结果运行结果 本系统运行初始页面如图 4 1 所示 图 4 1 初始页面 在函数开始时 初始化临时结构体数组 让结构体内所有信息为空 读取 23 目标文件 然后运行功能函数 选择需要的功能 实现效果如图 4 2 所示 图 4 2 输入界面 1 根据自己需要的功能输入相应数字 24 图 4 3 职工信息的录入 图 4 4 职工信息的添加 25 图 4 5 职工信息的删除 4 6 职工信息的修改 图 4 7 职工信息的查询 26 图 4 8 职工信息的排序 图 4 9 退出系统 2 录入职工的信息 通过手动录入和文件录入两个方法录入职工的信息 27 图 4 10 职工信息录入的方式 3 查找职工的个人信息 通过输入编号 姓名 部门 基本工资 奖金和总 工资进行查找 图 4 11 职工信息的查询方式 4 职工信息的排序可以通过编号排序 姓名排序 部门排序 基本工资排序 奖金排序和总工资排序 28 图 4 12 职工信息的排序方式 5 每次将职工信息输出在屏幕上时 都会通过 fwrite 写到文件 D woker date 中 6 根据数字提示结束程序 4 2 程序调试程序调试 1 每个选择界面之后 前一屏幕的内容依旧存在 影响界面的美观 经过同 学的帮助及上网搜索 发现利用 system cls 可以消去前一屏幕的内 容 然而接下来又出现新的问题 有些函数会出现错误 经过多次调试和修改 才发现把 system cls 放在调用的函数之前以及适当的位置可以解决 此问题 2 修改员工信息时 输入职工编号查询出多条信息 修改错误 后来加入职 工编号唯一判断的函数 让职工编号唯一不重复 3 排序 开始交换指针指向 一直出现指针不存在导致乱码问题 后来修改 为交换指针的数据域 29 4 文件写入磁盘 用笔记本打开磁盘内的文件乱码 经查询资料了解写入磁 盘的文件是二进制数据 不能通过笔记本打开 可重新把文件读入程序中 在 程序中显示 5 忘导入 导致 strcmp 不能用 6 字符串输入输出要用 s 30 结束语结束语 工资管理系统对于决策者和管理者来说都至关重要 所以工资管理系统应该 能够为用户提供充足的信息和快捷的查询手段 但一直以来人们使用传统人工 的方式管理文件工资档案 这种管理方式存在着许多缺点 如 效率低 保密性差 另 外时间一长 将产生大量的文件和数据 这对于查找 更新和维护都带来了不少的 困难 随着科学技术的不断提高 计算机科学日渐成熟 其强大的功能已为人们深刻 认识 它已进入人类社会的各个领域并发挥着越来越重要的作用 作为计算机应用的一部分 使用计算机对工资信息进行管理 具有着手工管理 所无法比拟的优点 例如 检索迅速 查找方便 可靠性高 存储量大 保密性好 寿命长 成本低等 这些优点能够极大地提高工资管理的效率 也是科学化 正 规化管理的重要条件 这一个月以来 在开发这个工资管理系统过程中 我深刻地体会到了自学能 力的重要性 毕竟在学校学习到的知识是有限的 而在开发系统的过程中仅凭原 有的一点点知识是远远不够的 只有翻阅大量的资料才能学到更多的知识 才能 实现其预期的功能 在开发过程中 遇到困难是在所难免的 期间我跟我的指 导老师和同学们进行交流 从中明白了很多 开发一个系统 恒心和毅力也是 不可缺少的 同样 在开发过程当中 细心也是非常重要的 由于很多事项都 要很注意才行 如果没有做到这一点 就会出错 在这里要同学的帮助 老师的悉心指导下基本完成本次课程设计 基本达 到了工资管理系统的要求 小组各成员心得体会小组各成员心得体会 Xxx 31 这个系统实现了对员工信息的存储 修改 删除 查询及排序 从拿到题 目到完成整个编程 从理论到实践学到了很多东西 通过这次程序设计我深入 了解了链表 结构体 也学会了文件的读写 懂得了理论和实际结合是很重要 的 在设计过程中遇到了很多问题 这毕竟是第一次做 同时在设计过程中发 现了自己的不足之处 对以前所学的知识理解的不够深刻 掌握的不够牢固 比如单链表 总之不收获很多 Xxx 通过这次课程设计 我对数据结构中单链表的应用有了更深的理解 并且 深刻的认识了实践的重要性 只有理论与实践相结合才能很好的学习 发现想 要做好课程设计 仅靠书本上的知识是不够的 还需要查阅其他的程序和知识 在这个过程中 我充分认识了数据结构在编写程序

温馨提示

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

评论

0/150

提交评论