年终奖励发放系统.doc_第1页
年终奖励发放系统.doc_第2页
年终奖励发放系统.doc_第3页
年终奖励发放系统.doc_第4页
年终奖励发放系统.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1 30 面面向向对对 象象 程程序序设设计计 C 课课程程大大作作业业 项目名称 项目名称 年终奖励发放系统 班班 级 级 姓名学号 姓名学号 完成时间 完成时间 指导教师 指导教师 日期 2012 年 2 月 26 日 2 30 目录 一 需求分析一 需求分析 3 1 1 开发背景 3 1 2 项目目标 3 1 3 运行环境 3 二 程序分析二 程序分析 3 2 1 技术要点 3 2 2 项目任务书 7 三 技术路线三 技术路线 7 3 1 总体方案 7 3 1 1 软件及开发平台 7 3 1 2 总体方案 7 3 2 详细设计 7 四 工程进度四 工程进度 9 五 测试报告五 测试报告 9 5 1 阶段性测试 9 5 2 总体测试 13 六 个人小结六 个人小结 14 附录附录 程序源代码程序源代码 16 3 30 一 需求分析一 需求分析 1 1 开发背景 年终奖就是老板给予员工不封顶的奖金 有的还包括了旅游奖励 物质奖励等 是一年 来的工作业绩奖励 也是可给可不给的一个项目 年终奖的发放额度和形式一般由企业自己 根据情况调整 好的年终奖办法要有较好的考评指标 评价方法 发放规则等等相应的各项 制度 可以有效激励员工 增加企业凝聚力 因此 几乎每个公司每年年末都会根据各个员 工一年的表现发放相应的奖金 针对以上背景 我们提出了一个年终奖励发放系统的方案 并通过对该系统的操作性 可行性及实用性等各个方面的分析 最终确定了该方案即为我们的设计方向 方案提出者 江燊 董诗雅 熊昌磊 开发者 江燊 董诗雅 熊昌磊 用户 所有需要发放年终奖励的公司 1 2 项目目标 通过该系统 能够实现对员工的基本信息及一年工作业务量的管理 可以让员工注册自 己的信息 查询自己本年度的奖金 也可以让管理人员录入 修改 删除员工的业务量 由 财务处算出奖金 最后总经理确认奖金的发放 1 3 运行环境 软件 运行在 Windows 软件 Visual C 6 0 环境下 硬件 能够运行 Windows 软件的 PC 机或笔记本电脑 最低配置 要求内存大于 128M 硬盘大于 1G 二 程序分析二 程序分析 2 1 技术要点 系统结构图 4 30 年终奖金发 放系统 录入基本信 息 普通员工 查询系统 管理人员 管理系统 计算年终奖 金 查询人力资源部财务部总经理 录入考勤 业务量等考 核数据 查询考核数 据 修改考核数 据 删除考核数 据 审核奖金并 确认 确认奖金发 放 程序流程图 图 2 1 系统结构图 5 30 按需求选择相 应的功能 开始 功能 1 录入基 本信息 功能 2 普通员 工查询 系统 功能 3 管理人 员管理 系统 进入相应的功能系统 图 2 2 主流程图 开始 用户登录 进行录入 结束 图 2 3 录入基本信息流程图 开始 用户登录 查询奖金 结束 图 2 4 普通员工查询系统流程图 6 30 开始 选择部门 人力资源部 用户登录 按需求选择 相应功能 总经理 用户登录 确认奖金发放 财务部审核 完毕并确认 财务部 用户登录 审核奖金并确 认 人力资源部 录入完毕 录入考核数据 查询考核数据 修改考核数据 删除考核数据 退出系统 图 2 5 管理人员管理系统流程图 7 30 2 2 项目任务书 江燊负责编写 Employee 类 员工注册系统及程序设计报告 董诗雅负责编写员工查询系统 熊昌磊负责编写 Database 类及管理人员管理系统 三人一起进行调试修改 三 技术路线三 技术路线 3 1 总体方案 3 1 1 软件及开发平台 在 Windows XP 环境下 采用 M 采用 Microsoft 公司的 Visual C 作为开发平台 利用面 向对象的思想实现一个报纸杂志的订阅管理使用类的封装性 抽象性 继承性和多态性 3 1 2 总体方案 系统中应用的头文件 include include include include include include 创建的类 Employee 职工类 Database 职工数据类 我们通过主函数实现对类的利用 实现管理人员对员工信息的增添 删除 查询 修改 等一系列的功能 构造函数用于读入文件中的信息 析构函数用于把信息写入文件 即系统运行时会通过 构造函数自动读入信息 存于内存 而新输入的信息也会先保存在内存在 当系统运行结束 时 自动调用析构函数把信息写入文件 创建 2 个文件 basic txt 用于存放员工基本信息 employee txt 用于保存职工的奖金信 息 我们在此基础上设立了可执行的操作界面 3 2 详细设计 系统中涉及的类 Employee 职工类 Database 职工数据类 详细信息 1 类名 Employee 私有成员 int tag 删除标记 int no 职工编号 char name 20 职工姓名 char zw 20 职工职位 8 30 int salary 职工工资 char code 20 公有成员 Employee char getname 获取名字 char getzw 获取职位 int gettag 获取标记 int getno 获取编号 int getsalary char getcode void setzw char q 设置名字 void setname char na 设置名字 void setcode char na void getsalary int sa void delna 删除 void addemp int n int sa char na char q 增加 void addemp2 int n char na char q 增加员工基本信息 void disp 显示职工信息 2 类名 Database 私有成员 int top Employee read Maxr basic Maxr 公有成员 Database 将职工工资信息从 employee txt 读取到 read 中 将职工基本信息从 basic txt 读取到 basic 中 void clear 删除所有 int addemp int n int sa char na char q 增加职工 int addemp2 int n char na char q 增加职工基本信息 Employee query int empid 从职工工资信息中定位编号 Employee query2 int empid 从员工基本信息中定位编号 Employee query1 char empna 20 从职工工资信息中定位姓名 Employee query3 char empna 20 从员工基本信息中定位姓名 void disp 职工信息显示 void screen void screen1 void screen2 9 30 void empdata 人力资源部管理 void Search void manager void basic2 普通员工注册系统 Database 将 read 中的信息读如到 employee txt 中 四 工程进度四 工程进度 任务阶段任务阶段时间时间计划完成工作计划完成工作实际完成情况实际完成情况 分析选题阶段分析选题阶段 2012 年 1 月 7 日上 午 对大作业所给题目进 行分析 查阅资料 最终选择感兴趣的题 目并确定方案 经过组员讨论 决定 选择 年终奖励系统 随之确定开发方案 规划系统功能 设计规划系统功能 设计 数据结构及类层次阶数据结构及类层次阶 段段 2012 年 1 月 7 日下 午 至 2012 年 1 月 9 日 上午 确定整体框架 编写 大作业中所用到的各 个类及其对应函数 成功确定整体框架 并编写出大作业中所 用到的各个类及其对 应函数 函数编写阶段函数编写阶段 2012 年 1 月 10 日至 2012 年 2 月 15 日 编写所要用到的函数 功能函数 成功编写出大作业中 所要用到的通用函数 功能函数 界面编写阶段界面编写阶段 2012 年 2 月 16 日至 2012 年 2 月 20 日 确定软件界面 并优 化各操作界面 成功确定软件界面 并了优化各操作界面 使软件更加完整 可 用性提高 程序调试阶段程序调试阶段 2012 年 2 月 21 日至 2012 年 2 月 23 日 调试整个程序 用大 量数据对每个功能进 行测试 并邀请其他 同学充当用户进行测 试 测试成功 各项功能 均正常实现 用户反 应良好 报告填写阶段报告填写阶段 2012 年 2 月 24 日至 2012 年 2 月 26 日 填写实验报告 为整 个程序填加必要注释 完成实验报告 出色 地完成了流程图设计 与表格设计 使整个 实验报告可读性大大 提高 五 测试报告五 测试报告 5 1 阶段性测试 在程序基本设计好的时候 我们对整个程序进行了一次比较系统的测试 对各个子系统 的主要功能也都用数据进行了检测 以确保程序的正确性 同时希望程序能够完成对不同员 表 4 1 工程进度一览表 10 30 工信息的输入及显示 从而实现对报纸 杂志订阅系统进行管理 此次测试是在 2012 年 2 月 21 日进行的 以下是这次测试的具体结果 系统主界面 5 1 1 输入 1 则进入普通员工注册系统 根据职位输入相应数字 系统则会提示输入员工的基本信息 输入成功后会自动跳回主 界面 5 1 2 输入 2 则进入普通员工查询系统 图 5 3 普通员工查询系统界面 图 5 2 普通员工注册系统界面 图 5 1 奖金发放系统主界面 11 30 根据提示输入数字查询 例如 输入 1 又例如输入 2 查询成功后按回车键即可返回 输入 3 则返回主界面 5 1 3 输入 3 则进入管理人员管理系统 根据提示输入数字 1 例如 输入 1 系统会提示用户输入编号 普通员工是没有权利进入的 图 5 4 根据编号查询 图 5 6 管理人员管理系统界面 图 5 5 根据姓名查询 12 30 输入 1 系统会提示输入员工编号 输入 2 则是对员工的奖金进行更改 输入 3 则是删除某位员工的信息 输入 4 则是对员工的奖金信息进行查询 输入 5 则会显示全部员工奖金信息 输入 6 则是删除全部奖金信息 输入 0 则返回主界面 2 例如 输入 2 图 5 7 人力资源部界面 图 5 8 新增奖金 图 5 9 显示所有奖金 13 30 3 例如 输入 3 4 输入 4 则返回主界面 此阶段测试基本达到目的 5 2 总体测试 2012 年 2 月 23 日晚上 我们对程序进行了最后一次测试 主要内容与阶段测试相同 只是改变了一些界面 使其看起来更美观更好使用 以下是修改后的界面 图 5 10 财务部确认 图 5 11 总经理确认 图 5 12 修改后的主界面 14 30 六 个人小结六 个人小结 1 的个人小结 这次的大作业 是对编程能力的一种检验 尤其是对 C 的运用能力 C 和 C 最大的 不同就在于它对类的应用 也正是因为有了类 让我们在编程过程中省了不少麻烦 但是也 因为 C 是刚学的 而且之前并没有接触到 C 中文件的应用 这就让我们在编写初期有了 比较大的困难 但是功夫不负有心人 经过我们的努力 我们成功的把信息写入文件也实现 了文件的读入 这让我们激动有成就感 也鼓励着我们继续努力 虽然这次写的只是一个小 系统 几乎没什么用处 但是对我们而言 它依旧是那么珍贵 因为它是我们努力的成果 是我们对所学知识的理解和运用 具有极大的意义 当然了 每一个成就的背后 都离不开团队的合作 我们的系统也一样 作为我们小组 的组长 我对大家的任务进行了划分 而大家也很配合 正是这种团队合作的努力 我们的 系统才能成功完成 往往一个人遇到了问题大家通过讨论和学习一个大的困难变成了一个小 的问题 很自然就解决了 我想这种团队合作的精神 不仅仅是现在需要 以后的生活学习 更需要 通过大家一起交流学习 那才能取得最大的进步 2 的个人小结 就我个人而言 我认为 C 相对于数据结构来说还是比较简单的 有些东西不许要特别 的去说明 比如说构造函数和析构函数就是可以把读文件和写文件功能实现 还有非常重要 的一点是 我认为 C 用的语言很简单但是很实用 去掉了某些非常繁琐的步骤 并且它将 一个类别的事件作为一个整体来向我们呈现出来 拿到我们写得这个程序来说 实际意义上 的核心部分还是就是职工类和职工数据类这两个类 简单明了的用其来把实际问题解决掉 实际上 对于我们来说 我们在大学的学习就是为了简化我们的思路 让我们能够运用有限 的知识来解决实际问题 从这个大作业来看 虽然它是一个很小的系统 但是它还是能体现 我们的思路 我们解决这个问题的具体步骤 我想我们以后走上工作岗位的时候 我们也会 从这个方面考虑 还有就是很重要的一点就是团队的力量 用我高中老师的话来说就是 在 一个失败的班集体中 没有一个真正意义上的成功者 所以在这个寒假中 我充分体验到 了团队的力量 我们将我们的任务划分成好几个部分 我们三没人完成一个部分 虽然我们 图 5 13 退出界面 15 30 做的工作都很单一 但是绑在一起就会产生微妙的变化 所以我还是能够感受得到 一根筷 子是很脆弱的 但是一把筷子是很坚韧的 的道理 还有一点就是 我通过这次的编写 我 自己感觉我的编程能力正在渐渐增长 3 的个人小结 通过这次大作业 我们对面向对象编程的思想以及模块化编程有了更为深刻的理解 同 时掌握了一些编程中应注意的问题以及技巧 最重要的是我们通过团队的力量来完成了它 深度投入的采用了分工合作的精神完成了这个任务 完成一个系统的设计 要明确要求 构建整体思想 需要构造哪些类 每个类要设置哪 些属性 如何设置这些类的接口 设计好后要对相应的项进行的处理 都需要在编程之前考 虑好 并画出方案的流程图 将整体思想图纸化 每件事总是说起来容易做起来难 我们先 根据要求设计了一个系统实现流程图 在实际操作中发现它很难实现 最后经过小组的多次 讨论和借鉴网上资源完善了思想 在实施的过程中发现了自己的不足之处和对知识理解不深的地方 任何一个环节出现小 小的疏忽都会导致整个设计的失败 对不确定的地方一定要查阅资料 不能想当然的做 我 们在平时需要注重收集 将一些常用的 自己编写的类 函数 都保存下来 这样将来用到 的时候 就可以方便的搜索以及使用 同时 小组成员在分工协作的时候要多交流 勤思考 在编写程序的时候要善于试用注释 为了让别人看懂自己的程序或着避免自己因为时间长了 看不懂当初自己写的程序 在整个大作业过程中 大家一起发现修改错误 完善设计 小组 成员互相协作 为本次实验画了一个圆满的句号 小组的分工协助合作精神也起着互助的一个关键 以后若大的项目不是一力之力其成 高效的开发效率 众多新颖功能都是来自各人独特的新意 良好的分工合作 达到每人都有 事做 全心投入这块的设计中 小组成员都必须遵从组长的安排 做到服从 认同和内化 对 块合作一定要充足自信心 没有个人的成功 只有小组目标共同的达成 运用多维评价也是大家分工互助中不可缺少的一环 及时找出现有的缺陷 自我评价和 互相评价 从而集合成组内单一的评价 来达到组内各同学的共识 形成良好的互助条件 也 是小组内合作成效的关键 还想说的是 程序有不足之处 还请老师帮忙改进一下 16 30 附录附录 程序源代码程序源代码 include include include include include include int k 0 定义总经理是否签字的全局变量 const int Maxr 100 class Employee 职工类 int tag 删除标记 int no 职工编号 char name 20 char zw 20 职工姓名 int salary 职工工资 char code 20 public Employee char getname return name 获取名字 char getzw return zw int gettag return tag 获取标记 int getno return no 获取编号 int getsalary return salary char getcode return code void setzw char q 设置名字 strcpy zw q void setname char na 设置名字 strcpy name na void setcode char na strcpy code na void getsalary int sa salary sa void delna tag 1 删除 void addemp int n int sa char na char q 增加 tag 0 no n salary sa 17 30 strcpy name na strcpy zw q void addemp2 int n char na char q 增加员工基本信息 tag 0 no n strcpy name na strcpy zw q void disp 显示职工信息 cout endl cout setw 10 getno setw 10 getname setw 10 getsalary s etw 10 getzw endl cout endl class Database 职工数据类 int top Employee read Maxr basic Maxr public Database 将职工工资信息从 employee txt 读取到 read 中 将职工基本信息从 basic txt 读取到 basic 中 Employee s top 1 fstream file employee txt ios in while 1 file read char if file break top read top s file close top 1 fstream file2 basic txt ios in while 1 file2 read char if file2 break top 18 30 basic top s file2 close void clear 删除所有 top 1 int addemp int n int sa char na char q 增加职工 Employee p query n if p NULL top read top addemp n sa na q return 1 return 0 int addemp2 int n char na char q 增加职工基本信息 Employee p query2 n if p NULL top basic top addemp2 n na q return 1 return 0 Employee query int empid 从职工工资信息中定位编号 for int i 0 i top i if read i getno empid return NULL Employee query2 int empid 从员工基本信息中定位编号 for int i 0 i top i if basic i getno empid return NULL Employee query1 char empna 20 从职工工资信息中定位姓名 for int i 0 i top i if strcmp read i getname empna 0 return NULL Employee query3 char empna 20 从员工基本信息中定位姓名 for int i 0 i top i if strcmp basic i getname empna 0 return NULL void disp 职工信息显示 for int i 0 i top i read i disp void screen void screen1 void screen2 void empdata void Search void manager void basic2 Database 将 read 中的信息读如到 employee txt 中 fstream file employee txt ios out for int i 0 i top i if read i gettag 0 file write char file close fstream file2 basic txt ios out for i 0 i top i if basic i gettag 0 file2 write char file2 close 20 30 void Database basic2 普通员工注册系统 char rname 20 int choice 1 int m 1 int b 1 int empid Employee r cout setw 50 n cout setw 50 请选择您所需的操作 n cout setw 50 经理 1 并按回车键 n cout setw 50 业务经理 2 并按回车键 n cout setw 50 普通职工 3 并按回车键 n cout setw 50 m switch m case 1 cout empid r query2 empid if r NULL cout 您输入的这个编号资料库已存在 n 请重新输入编号 goto A cout rname addemp2 empid rname 经理 break case 2 cout empid r query2 empid if r NULL cout 您输入的这个编号资料库已存在 n 请重新输入编号 goto B cout rname addemp2 empid rname 业务经理 break case 3 cout empid r query2 empid if r NULL cout 您输入的这个编号资料库已存在 n 请重新输入编号 21 30 goto C cout rname addemp2 empid rname 普通职工 break break void Database empdata 人力资源部管理 int choice 1 int m 1 int b 1 char rname 20 int empid int empsa char q 20 Employee r while choice 0 cout setw 50 1 新增 2 更改 n cout setw 50 3 删除 4 查找 n cout setw 50 5 显示 6 全删 n cout setw 45 choice switch choice case 1 cout empid r query2 empid if r NULL cout 您输入的员工编号不存在资料库中 请重新输入 goto C cout 您输入这个员工的姓名是 getname 职位是 getzw getzw 经理 0 cout 经理基本工资为 8000 没有年终提成 getname 经理 if strcmp r getzw 业务经理 0 cout 业务经理基本工资为 4000 endl cout empsa addemp empid 4000 empsa r getname 业务经理 if strcmp r getzw 普通职工 0 cout 普通员工没有固定工资 endl cout empsa addemp empid empsa r getname 普通职工 break case 2 cout empid r query empid if r NULL cout 该职工不存在 endl break cout 您输入这个员工的姓名是 getname 职位是 getzw endl cout 输入新的工资 empsa r getsalary empsa cout 请输入新的职务 q r setzw q addemp empid empsa rname q break case 3 cout empid r query empid if r NULL cout 该读者不存在 endl break cout 您输入这个员工的姓名是 getname 职位是 getzw delna break case 4 cout setw 50 n cout setw 50 请选择您所需的操作 n cout setw 50 按编号查找 1 并按回车键 n cout setw 50 按姓名查找 2 并按回车键 n cout setw 50 返回 3 并按回车键 n cout setw 50 b while b 0 switch b 23 30 case 1 cout empid r query empid if r NULL cout 该职工不存在 endl break cout endl cout setw 10 编号 setw 10 姓名 setw 10 年终奖金 setw 10 职务 endl cout disp break case 2 cout rname r query1 rname if r NULL cout 该职工不存在 endl break cout endl cout setw 10 编号 setw 10 姓名 setw 10 年终奖金 setw 10 职务 endl cout disp break case 3 break break break case 5 cout endl cout setw 10 编号 setw 10 姓名 setw 10 年终奖金 setw 10 职务 endl cout endl disp break case 6 clear break 24 30 void Database Search int empid char rname 20 int b Employee r cout setw 50 n cout setw 50 请选择您所需的操作 n cout setw 50 按编号查找 1 并按回车键 n cout setw 50 按姓名查找 2 并按回车键 n cout setw 50 返回 3 并按回车键 n cout setw 50 b switch b case 1 cout empid r query empid if r NULL cout 该职工不存在 endl break cout endl cout setw 10 编号 setw 10 姓名 setw 10 年终奖金 setw 10 职务 endl cout disp break case 2 cout rname r query1 rname if r NULL cout 该职工不存在 endl break cout endl cout setw 10 编号 setw 10 姓名 setw 10 年终奖金 setw 10 职务 endl cout disp break case 3 break void Database manager char a int choice int empid Employee r cout setw 20 cout choice switch choice case 1 system cls cout en dl cout endl cout endl cout setw 20 欢迎来到人力资源部 endl cout endl cout endl cout empid r query2 empid if r NULL cout 该职工不存在 getzw 普通职工 0 cout 欢迎人力资源部的工作人员 endl cout 您有特权进行一下操作 endl empdata break else cout 您是普通员工 没有权限进行一下操作 endl break case 2 system cls 26 30 cout en dl cout endl cout endl cout setw 20 欢迎来到财务部 endl cout endl cout endl cout empid r query2 empid if r NULL cout 该职工不存在 getzw 普通职工 0 cout 欢迎财务部的工作人员 endl cout 人力资源部已将员工的基本信息输入完毕 endl cout a if a y disp cout 审核完毕 资料已经转移至总经理办公室 endl else cout 未审核 资料未转移 endl k 1 break else cout 您是普通员工 没有权限进行一下操作 endl break case 3 system cls cout en dl cout endl cout endl cout setw 20 欢迎进入总经理办公室 endl cout endl cout endl cout empid r query2 empid if r NULL cout 该职工不存在 getzw 普通职工 0 if k 1 cout a if a y cout 已签字 可以发放奖金 endl k 0 else cout 总经理没有签字 不能发放奖金 endl k 0 break else cout 财务部还没有审核年终奖金 等其签好了再签字吧 endl else c

温馨提示

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

评论

0/150

提交评论