小型公司工资管理系统设计课设报告.doc_第1页
小型公司工资管理系统设计课设报告.doc_第2页
小型公司工资管理系统设计课设报告.doc_第3页
小型公司工资管理系统设计课设报告.doc_第4页
小型公司工资管理系统设计课设报告.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

基于 C 的面向对象程序设计实例 课程设计报告 报告题目 小型公司工资管理系统设计 作者所在系部 计算机科学与工程系 作者所在专业 计算机应用技术 作者所在班级 作 者 姓 名 指导教师姓名 完 成 时 间 2012 6 21 北华航天工业学院教务处制 摘 要 在当前的市场经济体制下 一个公司要好的发展 不但要有好的管理制度 优秀的 管理人员 同时也要有一个健全的并且适合自身特点的公司人员管理和员工工资管理系 统 以实现公司人员管理 工资管理的目 本文在 Microsoft Visual C 6 0 环境下 利用 c 语言编写程序 实现了公司对 雇员工资信息的管理操作 本系统一简单易懂为原则 便于操作 本系统一简单易懂为原则 便于操作 本系统主要有九个功能模块 1 修改职工信息 2 查询职工信息 3 删除职工 信息 4 添加职工信息 5 显示所有职工信息 6 计算员工工资 7 读入员工信息 8 保存员工信息 9 统计员工信息 已经通过全面的系统测试 能够很好的运行 达 到了预期的效果 关键词 c 功能模块 工资 信息 目录目录 摘摘 要要 I 目录目录 II 课程设计任务书课程设计任务书 IV 第一章第一章 绪论绪论 1 1 1 1 1 课程设计的目的课程设计的目的 1 1 1 2 2 课程设计的背景和意义课程设计的背景和意义 1 1 2 1 课程设计的背景 1 1 2 2 课程设计的意义 2 1 1 3 3 课程设计环境课程设计环境 2 第二章第二章 需求分析需求分析 3 2 1 问题描述问题描述 3 2 2 功能要求功能要求 3 2 2 问题的解决方案问题的解决方案 3 第三章第三章 系统设计系统设计 4 3 3 1 1 数据设计数据设计 4 3 1 1 类设计 4 3 1 2 类之间的关系 6 3 1 3 函数设计 6 3 2 结构设计 6 3 2 1 系统流程图 6 3 2 2 界面设计 7 第四章第四章 系统实现系统实现 8 4 4 1 1 类实现类实现 8 4 4 3 3 主函数实现主函数实现 35 第五章第五章 系统测试系统测试 36 5 5 1 1 模块测试模块测试 36 5 5 2 2 课程设计过程中遇到的问题课程设计过程中遇到的问题 37 总总 结结 39 致致 谢谢 40 参考文献参考文献 40 附附 录录 40 课题名称课题名称小型公司工资管理系统设计完成时间完成时间2012 6 212012 6 21 指导教师指导教师贾振华贾振华职称职称讲师讲师学生姓名学生姓名孟伟闪孟伟闪班班 级级1151311513 总体设计要求和技术要点总体设计要求和技术要点 1 问题描述 某公司需要存储雇员的编号 姓名 性别 所在部门 级别 并进行工资的计算 其中 雇员分 为经理 技术人员 销售人员和销售经理 四类人员的月薪计算方法如下 经理拿固定月薪 技术人 员按小时领取月薪 销售人员按其当月销售额的提成领取工资 销售经理既拿固定月薪也领取销售提 成 设计一程序能够对公司人员进行管理 应用到继承 抽象类 虚函数 虚基类 多态和文件的输 入 输出等内容 2 功能要求 1 添加功能 程序能够任意添加上述四类人员的记录 可提供选择界面供用户选择所要添加 的人员类别 要求员工的编号要唯一 如果添加了重复编号的记录时 则提示数据添加重复并取消添 加 2 查询功能 可根据编号 姓名等信息对已添加的记录进行查询 如果未找到 给出相应的 提示信息 如果找到 则显示相应的记录信息 3 显示功能 可显示当前系统中所有记录 每条记录占据一行 4 编辑功能 可根据查询结果对相应的记录进行修改 修改时注意编号的唯一性 5 删除功能 主要实现对已添加的人员记录进行删除 如果当前系统中没有相应的人员记录 则提示 记录为空 并返回操作 否则 输入要删除的人员的编号或姓名 根据所输入的信息删除 该人员记录 如果没有找到该人员信息 则提示相应的记录不存 6 统计功能 能根据多种参数进行人员的统计 例如 统计四类人员数量以及总数 或者统计男 女员工的数量 或者统计平均工资 最高工资 最低工资等信息 7 保存功能 可将当前系统中各类人员记录存入文件中 存入方式任意 8 读取功能 可将保存在文件中的人员信息读入到当前系统中 供用户进行使用 工作内容及时间进度安排工作内容及时间进度安排 1 6 月 4 日 10 日 布置任务 软件设计 2 6 月 11 日 18 日 编写代码 上机调试 3 6 月 19 20 21 日 软件验收 撰写课程设计报告 4 各班在 6 月 22 日下午五点前将课程设计报告收齐并上交 课程设计任务书 第一章 绪论 1 1 课程设计的目的 1 此次课程设计的目的是以 c 程序设计基础 为基础 针对具有一定难度的综合 性题目 进行分析 编程 调试和运行 进一步掌握面向对象和面向过程程序设计的基本 方法和编程技巧 巩固所学理论知识 使理论与实践相结合 提高分析问题 解决问 题的能力 要求学生达到熟练掌握 C 语言的基本知识和技能 2 基本掌握面向对象程序设计的基本思路和方法 3 能够利用所学的基本知识和技能 解决简单的面向对象程序设计问题 4 通过设计一个简单的 小型公司工资管理系统小型公司工资管理系统 进一步熟悉 C 中类的概念 类的封装 继承和多态的实现方式 掌握文件的录入 查找 对象指针的使用 了解系 统开发的需要分析 类层次设计 模块分析 编码测试 模块组装与整体调试的全过程 逐步熟悉程序设计的方法 并养成良好的编程习惯 1 2 课程设计的背景和意义 1 2 1 课程设计的背景 1 理论研究基础 C 面向对象程序设计 是计算机专业的基础课程 本课程按照软件程序设计所需 能力进行教学设计 提出以项目模块方式带动相关知识点 实践项目和理论并行的思路 将案例贯穿于课程始终 对原有的教学体系 教学内容进行重新编排 按照从易到难的原 则 将其巧妙地融入到项目开发过程中 降低学习难度 提高学生学习的信心 有效培养 学生的应用能力和学习能力 2 技术层面的支持 本系统运用到 类与对象在 C 中的实现 静态数据成员 运算符重载 友元函数继 承与派生的基本知识 单继承和多继承 虚基类的作用与使用 虚函数的定义和使用 纯 虚函数和抽象类的定义和使用 输入输出流的概念 输入 输出流操作 文件的创建 打 开 读写 关闭等操作 1 2 2 课程设计的意义 本课程按照软件程序设计所需能力进行教学设计 提出以项目模块方式带动相关知识 点 实践项目和理论并行的思路 将案例贯穿于课程始终 对原有的教学体系 教学内容 进行重新编排 按照从易到难的原则 将其巧妙地融入到项目开发过程中 降低学习难度 提高学生学习的信心 有效培养学生的应用能力和学习能力 小型公司工资管理对公司管理有着很重要的作用 在当今社会应用广泛 1 3 课程设计环境 硬件平台 CPU i5 2 67GHz RAM 512MB 以上 软件平台 操作系统 Windows xp Windows 7 编辑环境 Visual c 6 0 分辨率 最佳效果 1024 768 像 第二章 需求分析 2 1 问题描述 某公司需要存储雇员的编号 姓名 性别 所在部门 级别 并进行工资的计算 其中 雇员分 为经理 技术人员 销售人员和销售经理 四类人员的月薪计算方法如下 经理拿固定月薪 技术人 员按小时领取月薪 销售人员按其当月销售额的提成领取工资 销售经理既拿固定月薪也领取销售提 成 设计一程序能够对公司人员进行管理 应用到继承 抽象类 虚函数 虚基类 多态和文件的输 入 输出等内容 2 2 功能要求 1 添加功能 程序能够任意添加上述四类人员的记录 可提供选择界面供用户选择所要添加的 人员类别 要求员工的编号要唯一 如果添加了重复编号的记录时 则提示数据添加重复并取消添加 2 查询功能 可根据编号 姓名等信息对已添加的记录进行查询 如果未找到 给出相应的提 示信息 如果找到 则显示相应的记录信息 3 显示功能 可显示当前系统中所有记录 每条记录占据一行 4 编辑功能 可根据查询结果对相应的记录进行修改 修改时注意编号的唯一性 5 删除功能 主要实现对已添加的人员记录进行删除 如果当前系统中没有相应的人员记录 则提示 记录为空 并返回操作 否则 输入要删除的人员的编号或姓名 根据所输入的信息删除 该人员记录 如果没有找到该人员信息 则提示相应的记录不存 6 统计功能 能根据多种参数进行人员的统计 例如 统计四类人员数量以及总数 或者统计男 女员工的数量 或者统计平均工资 最高工资 最低工资等信息 7 保存功能 可将当前系统中各类人员记录存入文件中 存入方式任意 8 读取功能 可将保存在文件中的人员信息读入到当前系统中 供用户进行使用 2 2 问题的解决方案 根据系统功能要求 可以将问题解决分为以下步骤 1 应用系统分析 建立该系统的功能模块框图以及界面的组织和设计 2 分析系统中的各个实体及它们之间的关系 3 根据问题描述 设计系统的类层次 4 完成类层次中各个类的描述 5 完成类中各个成员函数的定义 6 完成系统的应用模块 7 功能调试 8 完成系统总结报告 第三章 系统设计 3 1 数据设计 3 1 1 类设计 根据课程设计要求 需要定义六个类 雇员类 基类 worker 如表 3 1 1 经理 类 manager 如表 3 1 2 技术人员类 technologyman 表 3 1 3 销售人员类 saleman 如表 3 1 4 销售经理类 salemanager 如表 3 1 5 和管理类 control 如表 3 1 6 表 3 1 1 雇员类 数据成员 编号 int num 姓名 char name 20 性别 char sex 5 部门 char branch 20 int mark static int count static int count1 static int count2 static int count3 static int count4 static int count5 static int count6 int basic double worktime double xiaoshoue int job 雇员类 成员函数 worker worker int mark virtual worker static int display1 friend istream friend ostream friend ostream friend ostream friend ostream friend ostream count virtual worker cout 员工类被析构 istream friend ostream static int display1 return count void input virtual void inputmoney virtual void display virtual void display2 0 virtual void money 0 char getjibie return jibie double getworktime return worktime double getxiaoshoue return xiaoshoue worker next int num char name 20 char sex 5 char branch 20 部门 char jibie 20 int mark static int count count1 count2 count3 count4 count5 count6 int basic double worktime double xiaoshoue int job 职务 2 经理类 class manager virtual public worker 经理 public manager manager int mark worker mark manager cout 经理类被析构 istream friend ostream void inputmoney job 1 cout 请输入职员基本工资 basic count3 void display2 cout 职务 经理 职员基本工资 endl cout basic void money cout 该员工的实际工资是 basic endl 3 技术人员类 class technologyman virtual public worker 技术人员 public technologyman technologyman int mark worker mark technologyman cout 技术人员类被析构 endl void inputmoney job 3 cout 请输入职员工作时间 worktime count5 void display2 cout 职务 技术人员 职员工作时间 endl cout worktime void money jine 35 cout 该员工的实际工资是 jine worktime istream friend ostream int jine 4 销售人员类 class saleman virtual public worker 销售人员 public saleman saleman int mark worker mark saleman cout 销售人员类被析构 endl void inputmoney job 2 cout 请输入职员销售额 xiaoshoue ount4 oid display2 cout 职务 销售人员 职员销售额 endl cout xiaoshoue void money tichengbili 0 05 cout 该员工的实际工资是 xiaoshoue tichengbili istream friend ostream double tichengbili 5 销售经理 class salemanager public manager public saleman 销售经理 public salemanager salemanager int mark worker mark salemanager cout 销售经理类被析构 endl void inputmoney job 4 cout 请输入职员基本工资 销售额 basic xiaoshoue count6 void display2 cout 职务 销售经理 职员基本工资 销售额 endl cout basic xiaoshoue void money tichengbili 0 03 cout 该员工的实际工资是 basic xiaoshoue tichengbili istream friend ostream 指向下一个节点 delete head 释放空间 head p head NULL void showface void changeinformation 修改 void cancelinformation 删除 void addinformation 添加 void showinformation 显示 void searchinformation 查询 void countinformation 计算 void readinformation 读入 void keepinformation 保存 void tongjiformation 统计 4 2 函数实现 雇员类 int worker count 0 int worker count1 0 int worker count2 0 int worker count3 0 int worker count4 0 int worker count5 0 int worker count6 0 void worker input cout 请输入职员信息 endl cout num cout name int i cout sex if strcmp sex nan 0 strcmp sex nv 0 if strcmp sex nan 0 count1 else count2 break else cout 输入错误请重新输入 endl cout branch void worker inputmoney cout 基本工资 basic void worker display cout 编号 num 姓名 name 性别 sex 部门 istream w inputmoney return in ostream w inputmoney return in ostream w inputmoney return in ostream w inputmoney return in ostream s inputmoney return in ostream s display2 return out 管理类 void control showface control control1 int i do cout endl cout endl cout 欢迎使用本职工信息管理系统 endl cout 1 添加职工信息 2 查询职工信息 endl cout 3 删除职工信息 4 修改职工信息 endl cout 5 显示所有职工信息 6 计算员工工资 endl cout 7 读入员工信息 8 保存员工信息 endl cout 9 统计员工信息 0 退出系统 endl cout 请选择相应编号 endl cout i if i 9 i 0 cout 输入错误请重新输入 endl else break 选择相应标号所对应的功能 switch i case 1 control1 addinformation break case 2 control1 searchinformation break case 3 control1 cancelinformation break case 4 control1 changeinformation break case 5 control1 showinformation break case 6 control1 countinformation break case 7 control1 readinformation break case 8 control1 keepinformation break case 9 control1 tongjiformation break case 0 break default cout 选择错误 请重新选择 endl while i 0 void control addinformation 添加职工信息 control control1 worker p NULL 新增结点指针 int i 选择变量 do 添加职工信息菜单 cout endl cout endl cout 请选择增加的员工种类 endl cout 1 增加经理 2 增加销售人员 endl cout 3 增加技术人员 4 增加销售经理 endl cout 5 返回上级菜单 endl cout endl cout 请选择相应编号 endl cout i if i 5 i 0 cout 输入错误请重新输入 p break case 2 p new saleman 2 cin p break case 3 p new technologyman 3 cin p break case 4 p new salemanager 4 cin p break case 5 break p next NULL 员工结点加入链表 if i 5 if head NULL 链表已经存在 worker p1 NULL p2 NULL 指针初始化 p1 head if p1 num p num cout 添加重复 next p2 next p 连接结点 cout 信息添加成功 endl else 链表不存在 head p 连接结点 cout 信息添加成功 endl while i 5 void control cancelinformation 删除职工信息 worker p1 NULL p2 NULL p1 head if p1 NULL cout 系统暂无信息 无法删除 请录入信息 endl return int i 选择变量 do 删除职工信息菜单 cout endl cout endl cout 请选择删除方式 endl cout 1 按照编号 2 按照姓名 endl cout 3 按照部门 4 返回上级菜单 endl cout endl cout 请选择相应编号 endl cout i if i 4 i 0 cout 输入错误请重新输入 endl else break switch i case 1 int num cout num p1 head while p1 NULL if p1 num num break else p2 p1 p1 p1 next break case 2 char name 20 cout name p1 head while p1 NULL if strcmp p1 name name 0 break else p2 p1 p1 p1 next break case 3 char branch 20 cout branch p1 head while p1 NULL if strcmp p1 branch branch 0 break else p2 p1 p1 p1 next break case 4 return 删除结点 if i 4 if p1 NULL 找到结点 删除 f p1 head 要删除的结点是第一个结点 head p1 next delete p1 else 要删除的结点不是第一个结点 p2 next p1 next delete p1 cout 信息删除成功 endl worker count else 未找到结点 cout 信息删除失败 endl while i 4 void control searchinformation 查询职工信息 worker p1 NULL p2 NULL p1 head if p1 NULL cout 系统暂无信息 无法查询 请录入信息 endl return int i 选择变量 do cout endl cout endl cout 请选择查询方式 endl cout 1 按照编号 2 按照姓名 endl cout 3 按照部门 4 按照职务 endl cout 5 返回上级菜单 endl cout endl cout 请选择相应编号 endl cout i if i 5 i 0 cout 输入错误请重新输入 endl else break switch i case 1 int num cout num p1 head while p1 NULL if p1 num num break else p2 p1 p1 p1 next if p1 NULL 若找到结点 cout 职工信息为 endl endl p1 endl else cout 该职工信息不存在 endl break case 2 char name 20 cout name p1 head while p1 NULL if strcmp p1 name name 0 break else p2 p1 p1 p1 next if p1 NULL 若找到结点 cout p1 endl else cout 信息查询失败 endl break case 3 char branch 20 int m 0 cout branch p1 head while p1 NULL if strcmp p1 branch branch 0 cout p1 next m else p2 p1 p1 p1 next if m 0 cout 信息查询失败 endl break case 4 int job int n 0 cout job p1 head while p1 NULL if p1 job job cout p1 next n else p2 p1 p1 p1 next if n 0 cout 查询失败 endl break case 5 return while i 5 void control changeinformation 修改职工信息 worker p1 NULL p2 NULL if head NULL cout 系统暂无信息 无法修改 请录入信息 endl return int i 选择变量 do cout endl cout endl cout 1 修改姓名 2 修改部门 endl cout 3 修改职务 4 返回上级菜单 endl cout endl cout 请选择相应编号 endl cout i if i 4 i 0 cout 输入错误请重新输入 endl else break if i 4 int num cout num p1 head while p1 NULL if p1 num num break else p2 p1 p1 p1 next if p1 NULL 若找到结点 cout 编号为 num 的职工原信息为 endl endl p1 endl else cout 该职工信息不存在 endl return 执行修改结点 switch i case 1 cout newname strcpy p1 name newname break case 2 cout newbranch strcpy p1 branch newbranch break case 3 cout newjob p1 job newjob break case 4 return if p1 NULL 若找到结点 cout 修改成功 endl cout 该职工现在的信息为 endl endl p1 endl while i 4 void control showinformation 显示所有职工信息 cout 显示所有职工信息 endl worker p1 head 初始化 a if p1 NULL cout 系统暂无信息 请录入 endl while p1 NULL cout p1 next void control countinformation worker p1 NULL p2 NULL if head NULL cout 系统暂无信息 无法计算 请录入信息 endl return int i 选择变量 do cout endl cout endl cout 1 按照编号 2 按照姓名 endl cout 0 返回上级菜单 endl cout 请选择相应编号 endl cout i if i 2 i 0 cout 输入错误请重新输入 endl else break switch i case 1 int num cout num p1 head while p1 NULL if p1 num num break else p2 p1 p1 p1 next if p1 NULL 若找到结点 cout 职工的实际工资为 money else cout 该职工信息不存在 endl break case 2 char name 20 cout name p1 head while p1 NULL if strcmp p1 name name 0 break else p2 p1 p1 p1 next if p1 NULL 若找到结点 cout 职工的实际工资为 money else cout 信息查询失败 endl break case 0 return while i 0 void control readinformation 读入员工信息 int mark 类标记 worker p NULL ifstream infile worker1 txt ios in 读取一条记录 if infile cerr Open error mark switch mark case 1 p new manager 1 p mark 1 infile p num p name p sex p branch p job p basic infile p jibie break case 2 p new saleman 2 p mark 2 infile p num p name p sex p branch p job p xiaoshoue break case 3 p new technologyman 3 p mark 3 infile p num p name p sex p branch p job p worktime break case 4 p new salemanager 4 p mark 4 infile p num p name p sex p branch p job p basic p jibie p xiaoshoue break p next NULL if mark 0 if head NULL 链表已经存在 worker p1 NULL 指针初始化 p1 head while p1 next NULL 查找尾结点 p1 p1 next p1 next p 连接结点 cout 信息读入成功 endl break else 链表不存在 head p 连接结点 cout 信息成功 endl infile close cout 信息读入成功 endl void control keepinformation 保存员工信息 worker p head if p NULL cout 系统暂无信息 无法保存 请录入信息 endl return ofstream outfile worker1 txt ios out if outfile cerr Open error endl abort while p NULL outfile mark num name sex branch job mark 1 outfile getjibie else if p mark 2 outfile getxiaoshoue else if p mark 3 outfile getworktime else if p mark 4 outfile getjibie getxiaoshoue outfile next outfile 0 endl outfile close cout 保存信息成功 endl void control tongjiformation worker p1 NULL p2 NULL p1 head if p1 NULL cout 系统暂无信息 请录入信息 endl return int i 选择变量 do cout endl cout endl cout 请选择统计参数 endl cout 1 按照性别 2 按照职务 endl cout 3 总人数 4 返回上级菜单 endl cout endl cout 请选择相应编号 endl cout i if i 4 i 0 cout 输入错误请重新输入 endl else break switch i case 1 int k do cout endl cout endl cout 请选择 endl cout 1 男员工 2 女员工 endl cout 0 返回上级菜单 endl cout endl cout 请选择相应编号 endl cout k if k 2 k 0 cout 输入错误请重新输入 endl else break switch k case 1 cout 男职工数为 worker count1 endl break case 2 cout 女职工数为 worker count2 endl break case 0 break default cout 输入错误 endl while k 0 break case 2 int k do cout endl cout endl cout 请选择 endl cout 1 经理 2 技术人员 endl cout 3 销售人员 4 销售经理 endl cout 0 返回上级菜单 endl cout endl cout 请选择相应编号 endl cout k if k 4 k 0 cout 输入错误请重新输入 endl else break switch k case 1 cout 经理人数为 worker count3 endl break case 2 cout 技术人员人数为 worker count5 endl break case 3 cout 销售人员人数为 worker count4 endl break case 4 cout 销售经理人数为 worker count6 endl break case 0 break default cout 输入错误 endl while k 0 break case 3 cout 总员工数为 worker count endl break case 4 break default cout 输入错误 endl while i 4 4 3 主函数实现 int

温馨提示

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

评论

0/150

提交评论