C++课程设计报告-公司人员管理系统_第1页
C++课程设计报告-公司人员管理系统_第2页
C++课程设计报告-公司人员管理系统_第3页
C++课程设计报告-公司人员管理系统_第4页
C++课程设计报告-公司人员管理系统_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1 内蒙古科技大学内蒙古科技大学 面向对象程序设计面向对象程序设计 课程设计报告课程设计报告 设计题目 公司人员管理系统设计题目 公司人员管理系统 学学 院 院 信息学信息学 院院 专专 业 业 电子信息工程电子信息工程 班班 级 级 xxxxxxxxxx 班班 学学 号 号 xxxxxxxxxxxxxxxxxxxx 学生姓名 学生姓名 xxxxxxxxxxxxxxxxxx 指导教师 指导教师 余金林余金林 20112011 6 6 13 2011 6 2413 2011 6 24 2 内蒙古科技大学课程设计任务书 课程名称C 语言课程设计 设计题目公司人员管理系统 指导教师余金林时间 2011 6 13 2011 6 24 一 教学要求 1 巩固和加深学生对 C 语言课程的基本知识的理解和掌握 2 掌握 C 语言编程和程序调试的基本技能 3 利用 C 语言进行基本的软件设计 4 掌握书写程序设计说明文档的能力 5 提高运用 C 语言解决实际问题的能力 二 设计资料及参数 每个学生在教师提供的课程设计题目中任意选择一题 独立完成 可根据设计内容适当修改题目名 称 公司人员管理系统 定义人员基类 并派生出兼职技术人员类 经理类 部门管理人员类并在类中声明各自的 成员函数 要求至少设计以下各功能模块 输入记录 查询功能 计算工资 显示信息 三 设计要求及成果 1 分析课程设计题目的要求 2 写出详细设计说明 3 编写程序代码 调试程序使其能正确运行 4 设计完成的软件要便于操作和使用 4 设计完成后提交课程设计报告 四 进度安排 资料查阅与讨论 1 天 系统分析 2 天 系统的开发与测试 5 天 编写课程设计说明书和验收 2 天 五 评分标准 1 根据平时上机考勤 表现和进度 教师将每天点名和检查 2 根据课程设计完成情况 必须有可运行的软件 3 根据课程设计报告的质量 如有雷同 则所有雷同的所有人均判为不及格 六 建议参考资料 1 C 面向对象程序设计 吴敏 杨国林 主编 内蒙古大学出版社 2 C 语言程序设计 第三版 郑莉 清华大学出版社 3 目目 录录 一 摘要 二 需求分析 三 概要设计 四 详细设计 五 总结 六 参考文献 4 一 一 摘要摘要 C 简介 Stroustrup 工作起于 1979 年的 C with Classes 这个构思 起源于 Stroustrup 做博士论文时的一些程序撰写经验 他发现 Simula 具备很利于大型软件开发的特点 但 Simula 的运行速度太 慢 无法对现实需求发挥功效 BCPL 虽快得多 但它过于低级的 特性 使其不适于大型软件的开发 当 Stroustrup 开始在贝尔实验 室工作时 他有分析 UNIX 核心关于分布式计算的问题 回想起他 的博士论文经验 Stroustrup 开始为 C 语言增强一些类似 Simula 的特点 之所以选择 C 是因为它适于各种用途 快速和可移植性 除了 C 和 Simula 之外 同时也从其它语言中取得灵感 如 ALGOL 68 Ada CLU 以及 ML 刚开始时 类 派生类 存储类型检查 内联和默认参数特性 都是通过 CfrONt 引入 C 语言之中 1985 年 10 月出现了第一个商业化发布 1983 年 C with Classes 改命名为 C 加入了新的特性 其中包括虚函数 函数名和运算符重载 参考 常数 用户可控 制的自由空间存储区控制 改良的类型检查 以及新的双斜线 单行注解风格 1985 年 发布第一版 C 程序设计语言 提供一个重点的语言参考 至此还不是官方标准 1989 年 发布了 Release 2 0 引入了多重继承 抽象类 静态成员函数 常数成员 函数 以及成员保护 1990 年 出版了 The Annotated C Reference Manual 这本书后来成为标准化的基础 稍后还引入了 5 模板 异常处理 命名空间 新的强制类型转换 以及布尔类型 随着 C 语言的演变 也逐渐演化出相应的标准程序库 最先 加进 C 标准库的是流 I O 程序库 其用以取代传统的 C 函数 如 printf 和 scanf 随后所引入的程序库中最重要的便是标准模板库 简称 STL 多年后 一个联合的 ANSI ISO 委员会于 1998 年对 C 标准 化 ISO IEC 14882 1998 在官方释出 1998 标准的若干年后 委员会处理缺陷报告 并于 2003 年发布一个 C 标准的修正版本 2005 年 一份名为 Library Technical Report 1 简称 TR1 的技 术报告释出 虽然还不是官方标准的一部分 不过它所提供的几个 扩展可望成为下一版 C 标准的一部分 几乎所有目前仍在维护的 C 编译器皆已支持 TR1 虽然 C 免专利 但标准文件本身并不是免费的 尽管标准文 档不是免费的 但是很容易从网络中取得 最简单的就是 C 标准 文档之前的最后一次草稿版本 它与标准的差别几乎只在于排版上 C 语言既保留了 C 语言的有效性 灵活性 便于移植等全部 精华和特点 又添加了面向对象编程的支持 具有强大的编程功能 可方便地构造出模拟现实问题的实体和操作 编写出的程序具有结 构清晰 易于扩充等优良特性 适合于各种应用软件 系统软件的 程序设计 用 C 编写的程序可读性好 生成的代码质量高 运行 效率仅比汇编语言慢 10 20 6 C 语言具有以下特点 1 C 是 C 语言的超集 它既保持了 C 语言的简洁 高 效和接近汇编语言等特点 又克服了 C 语言的缺点 其编译系统能 检查更多的语法错误 因此 C 比 C 语言更安全 2 C 保持了与 C 语言的兼容 绝大多数 C 语言程序可以不经 修改直接在 C 环境中运行 用 C 语言编写的众多库函数可以用于 C 程序中 3 支持面向对象程序设计的特征 C 既支持面向过程的程序 设计 又支持面向对象的程序设计 4 C 程序在可重用性 可扩充性 可维护性和可靠性等方面 都较 C 语言得到了提高 使其更适合开发大中型的系统软件和应用 程序 每个学生在教师提供的课程设计题目中任意选择一题 独立完成 可根据设计内容适当修改题目名称 二 需求分析二 需求分析 某小型公司 主要有四类人员 经理 技术工人 销售人员以 及部门管理人员 现在 需要建立一个小型的公司人员管理系统 能够以文件方式存储这些人员的各类信息并能按照其编号查询输出 所输入的所有信息 还要按照公司的要求计算出每名员工一个月的 工资 要求 7 1 可以录入并保存四类人员的信息 2 可以按照职工的类别以及姓名查询并显示四类人员的信息 3 可以按照规定的方法计算每名员工每月所得的工资 方法 A 经理 固定工资 5000 可更改 工龄工资 工龄 100 领 导能力评价 B 技术工人 固定工资 2500 可更改 工龄工资 工龄 50 工时工资 工时 10 工作表现评价 C 销售员 工龄工资 工龄 50 销售额 0 05 销售效率评价 D 部门管理人员 固定工资 3500 可更改 工龄工资 工龄 50 销售额 0 005 统率力评价 其中 每一类员工的前一部分的计算方法是固定了的 而后面的评 价部分分为了优 良 中 差四个等级 在最终评定某一位员工该 月应得的工资时可以按评定等级酌情考虑 这样能更加体现人性化 并且更能够提高员工积极性 4 可以在各个界面中实现退出以及进入的循环 5 可以退出本系统 三三 概要设计概要设计 3 1系统功能分析和设计思路 系统功能模块 我们使用面向对象程序设计方法的思路进行分析 得出了整个系统应该涉 及两个基类的信息和操作 首先是公司雇员这一个大基类 其它诸如经理等的 8 类应该由此类派生 再有 为了方便实现各类信息以文件方式的储存以及实现 各种功能和界面 我们决定再创建一个系统类 所以我们接下来所要做的一切 工作都要围绕这两个类 公司雇员类 employee以及系统类 system 来展开 1 公司雇员类 employee 可以说这是本系统的一个 总 基类 我们按照预期的设计及要求由它 公司雇员类 employee 派生出了经理类 manager 一般工人类 worker 销 售员类 sale以及部门管理人员类 Branch manage 由于考虑到各 个小的分类之间在形式下差不多 为了不出现 二义性 的问题 我们主要在各个类之间采取定义虚基类以及纯虚函数的思路进行调 用 另外 由于我们对链表的运用以及链表的掌握还不是很熟练 再加上为了使各个类方便与系统类 system进行直接连接 我们遂 决定采用对象数组存放文件中读入或读出的各类公司人员信息 但 是我们发现这样做有一个缺陷 因为无法事先确定各类人员及各类 人员的各种信息 所以无法确定对象数组的大小 这里我们讨论后 决定事先确定一个较大的数组空间来决定这个问题 当然 解决这 个问题的最好方法还是采用异质链表来存放从文件中读取的信息 2 系统类 system 由于这个系统涉及到了文件的应用 所 以系统类 system是必不可少的 我们对问题分析 讨论以后决定 系统类 system的主要成员函数要包括 提供输入各类数据的 inform 确认各类输入成功的 success 添加各类信息的 in information 用于各类查询的 search 计算并显示总工资的 9 out total salary以及用于各个选项之间输出界面的 interface 3 由于考虑到这应该是一个完整的管理系统 加上我们希望 这个系统的界面能够做到清晰 明了 我们经讨论后决定采用一个 总操作界面 三个分操作界面 总操作界面应该包括 分别对应 1 输入信息 2 查询信息并显 示 3 计算总工资并显示 4 退出 输入信息界面中又因该包括 1 经理类 2 工人类 3 销售员类 4 部门管理人员类 5 退出 查询信息并显示界面中又应该包括 1 经理类 2 工人类 3 销售 员类 4 部门管理人员类 5 退出 计算总工资并显示界面中又应该包括 1 经理类 2 工人类 3 销 售员类 4 部门管理人员类 5 退出 3 2 系统使用说明系统使用说明 文字说明 进入主菜单后 选 1 1 为输入经理类的记录 1 2 为输入工 人类的记录 1 3 为输入销售员类的记录 1 4 为输入部门管理人 员类的记录 1 5 为退出此界面并返回到主界面 选 2 1 为查找经理类的记录 2 2 为查找工人类的记录 2 3 为 查找销售员类的记录 2 4 为查找部门管理人员类的记录 2 5 为 退出此界面并返回到主界面 以上操作的详细流程请参照流程图 10 3 选 3 1 为计算经理类的总工资 3 2 为计算工人类的总工资 3 3 为计算销售员类的总工资 3 4 为计算部门管理人员类的总工 资 3 5 为退出此界面并返回到主界面 以上操作的详细流程请参 照流程图 4 选 4 会输出 谢谢您使用本系统 次再见 并退出程序 软件界面说明例子 11 12 13 14 15 四 详细设计四 详细设计 4 1 系统流程图系统流程图 说明 以下是对应上面系统功能模块实图的系统流程图 16 17 4 24 2 程序代码程序代码 Employee h include include include include class Employee 基类 雇员类 protected int lb int num char name 20 int work age double total salary public int Get lb return lb int Get num int Get work age char Getname double Get total salary virtual void Compute total salary 0 virtual void Input virtual void Output class Manager virtual public Employee 派生类 经理类 protected float salary char leadership 10 public Manager lb 1 Manager void Input void Output void Compute total salary class Worker public Employee 派生类 技术工人类 float salary 18 int work hour char performance 10 public Worker lb 2 Worker void Input void Output void Compute total salary class Sale virtual public Employee 派生类 销售人员类 protected float sale char efficiency 10 public Sale lb 3 Sale void Input void Output void Compute total salary class Branch Manage public Manager public Sale 派生类 部门管 理人员类 char command 10 public Branch Manage lb 4 Branch Manage void Input void Output void Compute total salary class System 系统类 Manager B 10 Worker C 10 Sale D 10 Branch Manage E 10 static int j1 j2 j3 j4 void infor1 void infor2 19 void infor3 void infor4 void Search1 int h char ch 20 void Out total salary1 int h char name void Interface1 public System void In information void Search void Out total salary void Interface carry out cpp include include include include char fileName company dat int Employee Get num return num int Employee Get work age return work age double Employee Get total salary return total salary char Employee Getname return name void Employee Input cout num cout name cout work age void Employee Output cout t t t 员工编号 num endl cout t t t 员工姓名 name endl cout t t t 员工工龄 work age endl cout t t t 总工资 total salary endl void Manager Input Employee Input cout salary cout leadership void Manager Output Employee Output cout t t t 领导能力 优 良 中 差 leadership endl void Manager Compute total salary total salary salary 100 work age void Worker Input Employee Input cout salary cout work hour cout performance void Worker Output Employee Output cout t t t 工时 work hour endl cout t t t 工作表现 优 良 中 差 performance endl 21 void Worker Compute total salary total salary salary 10 work hour 50 work age void Sale Input Employee Input cout sale cout efficiency void Sale Output Employee Output cout t t t 当月销售额 sale endl cout t t t 销售效率 优 良 中 差 efficiency endl void Sale Compute total salary total salary 50 work age sale 0 05 void Branch Manage Input Employee Input cout salary cout sale cout command void Branch Manage Output Employee Output cout t t t 当月销售总额 sale endl cout t t t 统率力 优 良 中 差 command endl void Branch Manage Compute total salary total salary salary 50 work age sale 0 005 22 int System j1 0 int System j2 0 int System j3 0 int System j4 0 void System Interface1 cout n n n cout t t 按雇员类别进行管理 endl cout t t 公司人员类别 endl cout t t 1 经理类 endl cout t t 2 兼职技术工人类 endl cout t t 3 销售类 endl cout t t 4 部门管理人员类 endl cout t t 5 退出 endl cout rev1 switch rev1 case 1 infor1 break case 2 infor2 break case 3 infor3 break case 4 infor4 break case 5 23 Interface break default cout t t t 对不起 没有此类人员 endl continue cout t t t 信息储存成功 endl cout t cout endl if t Y t y again 0 Interface void System infor1 fstream datafile fileName ios in ios out ios binary datafile seekp 0 ios end B j1 Input datafile write char datafile close j1 void System infor2 fstream datafile fileName ios in ios out ios binary datafile seekp 0 ios end C j2 Input datafile write char datafile close j2 void System infor3 fstream datafile fileName ios in ios out ios binary datafile seekp 0 ios end D j3 Input datafile write char datafile close 24 j3 void System infor4 fstream datafile fileName ios in ios out ios binary datafile seekp 0 ios end E j4 Input datafile write char datafile close j4 void System Search1 int h char ch 20 int s 0 found 0 switch h case 1 while s j1 if strcmp ch B s Getname 0 B s Compute total salary B s Output cout t t t endl found 1 break s break case 2 while s j2 if strcmp ch C s Getname 0 C s Compute total salary C s Output cout t t t endl found 1 break s break 25 case 3 while s j3 if strcmp ch D s Getname 0 D s Compute total salary D s Output cout t t t endl found 1 break s break case 4 while s j4 if strcmp ch E s Getname 0 E s Compute total salary E s Output cout t t t endl found 1 break s break if found 0 cout n n t t 对不起 该类别中并没有此人 rev if rev 5 break cout name 26 Search1 rev name cout t cout endl if t Y t y again 0 Interface void System Out total salary1 int h char name int s 0 found 0 switch h case 1 while s j1 if strcmp name B s Getname 0 B s Compute total salary B s Output found 1 break s break case 2 while s j2 if strcmp name C s Getname 0 C s Compute total salary C s Output found 1 break s break case 3 while s j3 if strcmp name D s Getname 0 27 D s Compute total salary D s Output found 1 break s break case 4 while s j4 if strcmp name E s Getname 0 E s Compute total salary E s Output found 1 break s break if found 0 cout n n t t 对不起 该类别中并没有这种类型的总工资 rev if rev 5 break cou

温馨提示

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

评论

0/150

提交评论