小型公司人员管理系统课程设计报告(C++)
- 格式:doc
- 大小:296.00 KB
- 文档页数:25
原创C语言职工管理系统课程设计报告1. 引言职工管理系统是一个可以对职工信息进行录入、查询、修改和删除的软件系统。
在这个项目中,我们将使用C语言来实现这个系统。
通过设计这个项目,我们旨在提高学生们对C语言的理解和应用能力。
2. 项目背景和目的职工管理系统是一个常见的实际应用场景,他在许多企事业单位中都有使用。
通过设计和实现这个系统,我们可以帮助管理人员更有效地管理职工信息,提高管理效率。
我们的目标是设计一个简单易用、功能完善的职工管理系统,可以实现以下功能:职工信息录入、职工信息查询、职工信息修改和职工信息删除。
3. 系统设计我们将使用C语言来实现职工管理系统。
系统设计主要包括以下几个方面的功能模块:3.1 菜单功能模块在这个模块中,我们将设计一个菜单来显示系统的功能选项。
用户可以通过输入相应的选项来进入不同的功能模块。
3.2 职工信息录入功能模块在这个模块中,用户可以输入职工的信息,包括职工编号、职工姓名、职工性别、职工年龄等。
系统将会将这些信息保存到一个文件中以后的查询和修改操作。
3.3 职工信息查询功能模块在这个模块中,用户可以输入职工的编号或者姓名来查询职工的信息。
系统将会根据用户输入的信息在文件中查找相应的职工信息并显示出来。
3.4 职工信息修改功能模块在这个模块中,用户可以输入职工的编号来修改职工的信息。
用户需要输入修改后的信息,并将更新后的信息保存到文件中。
3.5 职工信息删除功能模块在这个模块中,用户可以输入职工的编号来删除职工的信息。
系统将会在文件中查找相应的职工信息并删除。
4. 系统实现系统实现主要有以下几个步骤:4.1 设计程序结构首先,我们需要设计系统的程序结构。
我们将使用函数来实现不同功能模块,通过调用不同的函数来实现系统不同的功能。
4.2 实现菜单功能模块我们将使用printf函数来输出菜单,并使用scanf函数来获取用户的输入。
根据用户的输入,我们将使用switch语句来进入相应的功能模块。
高职学院C++程序设计语言上学期课程设计报告(2011 -2012第1学期)课程设计类型: C语言程序设计题目: 人员信息管理系统学号:姓名:专业: 计算机应用基础指导教师:课程设计日期: 2012.12.23-2012.12.27.目录1.问题分析 (1)2.总体设计 (1)2.1 功能分析 (2)3.详细设计 (2)3.1 程序结构图 (2)3.2 程序类结构图 (3)3.3 程序类结构图 (4)4.功能测试 (4)4.1 本系统的主界面 (5)4.2 录入功能的主界面 (5)4.3 显示功能的主界面 (6)4.4 查找功能的主界面 (6)4.5 修改功能的主界面 (7)4.6 删除功能的主界面 (7)4.7 清理功能的主界面 (8)4.8 退出功能的主界面 (8)5.课设小结 (7)参考文献 (9)附录: 源代码清单 (8)1.问题分析1.1 问题描述1.题目《人员信息管理系统》设计2.设计说明与要求(1)公司主要有4类人员: 经理、技术人员、销售员、销售经理, 要求存储这些人的姓名、年龄、工资信息。
(2)工资的计算方法A、经理: 固定为8000元;B、技术员: 工作时间*每小时酬金(100RMB);C、销售员: 4%提成;(3)销售经理: 1%提成+固定工资(5000RMB);(4)实现功能①录入: 输入各种数据, 并录入TXT文件保存;②显示: 显示员工的数据信息;③查找: 查找员工的数据信息;④修改: 修改员工的数据信息;⑤删除: 删除员工的数据信息;⑥退出: 退出本系统;清理存储文件: 清理系统产生的TXT文件;2.总体设计2.1 功能分析使用面向对象的程序设计思想进行分析, 整个系统涉及两大类信息和操作, 公司, 人员。
所以系统主要涉及两个大类: 公司类business、人员类person。
系统的总体框架就是公司类, 人员类的定义;主函数中定义一个公司对象, 循环显示主菜单并根据用户选择调用公司类的相应方法(成员函数)。
员工管理系统课程设计c语言一、课程目标知识目标:1. 理解C语言基本数据类型、变量定义及作用域;2. 学会使用C语言进行结构体定义,掌握结构体的初始化和操作;3. 掌握C语言文件操作,能够实现数据的读写功能;4. 了解员工管理系统的基本功能需求,能够运用所学知识实现简单员工管理功能。
技能目标:1. 能够运用C语言编写结构体,实现对员工信息的存储和读取;2. 能够利用文件操作,实现员工信息的持久化存储;3. 能够编写简单的员工管理系统,完成增删查改等基本功能;4. 能够通过调试和修改程序,解决实际编程过程中遇到的问题。
情感态度价值观目标:1. 培养学生对C语言编程的兴趣,激发学生的学习热情;2. 培养学生的团队协作意识,学会与他人共同解决问题;3. 培养学生的逻辑思维能力,提高分析问题和解决问题的能力;4. 增强学生的自信心,使其在编程实践中获得成就感。
课程性质:本课程为实践性较强的学科,以项目驱动的方式进行教学,旨在让学生在实际项目中掌握C语言编程技巧。
学生特点:学生已经掌握了C语言的基本语法和编程技巧,具有一定的编程基础。
教学要求:结合学生特点,注重实践操作,通过项目实践提高学生的编程能力和解决问题的能力。
同时,关注学生的情感态度,培养其团队协作和逻辑思维能力。
在教学过程中,将目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. C语言基本数据类型和变量复习(1课时)- 复习基本数据类型:整型、浮点型、字符型等- 变量的定义、赋值和作用域2. 结构体的定义和使用(2课时)- 结构体的定义、成员变量及初始化- 结构体数组的创建和操作- 结构体指针的使用3. 文件操作(2课时)- 文件打开、关闭、读写操作- 文件指针的使用- 文件错误处理4. 员工管理系统功能设计(2课时)- 需求分析:明确员工管理系统的基本功能- 功能模块划分:增删查改、数据存储等5. 编程实现员工管理系统(3课时)- 实现员工信息录入、显示、查询、删除和修改功能- 实现员工信息文件存储和读取- 项目调试和优化6. 项目展示和总结(1课时)- 学生分组展示项目成果- 总结项目实现过程中的问题和经验教学内容安排和进度:- 前两节课复习C语言基本数据类型和变量,为后续学习打下基础;- 接着两节课学习结构体的定义和使用,为员工信息管理提供数据结构支持;- 紧接着两节课学习文件操作,为数据持久化存储奠定基础;- 然后两节课进行员工管理系统功能设计,明确项目需求;- 最后三节课编程实现员工管理系统,并进行项目展示和总结。
员工管理系统课程设计c一、课程目标知识目标:1. 学生能理解员工管理系统的基本概念,掌握其功能模块和使用方法。
2. 学生能掌握数据库的基本操作,如增加、删除、修改和查询员工信息。
3. 学生了解软件开发的基本流程,明确需求分析、设计、编码、测试等阶段的重要性。
技能目标:1. 学生能运用所学知识,设计并实现一个简单的员工管理系统,具备基本的编程和调试能力。
2. 学生能通过团队协作,完成项目任务,提高沟通与协作能力。
3. 学生能运用问题解决策略,分析并解决在开发过程中遇到的技术问题。
情感态度价值观目标:1. 学生培养对信息技术的兴趣,认识到其在企业运营中的重要作用。
2. 学生在项目实践中,体验团队合作的力量,增强团队意识和责任感。
3. 学生通过学习,认识到遵守法律法规、保护员工隐私的重要性,树立正确的价值观。
课程性质:本课程为实践性较强的课程,结合课本知识,让学生在实际操作中掌握员工管理系统的开发和应用。
学生特点:学生具备一定的计算机基础,具有较强的学习能力和动手能力,对新技术充满好奇心。
教学要求:教师需采用项目驱动法,引导学生通过自主学习、合作探究的方式完成任务,注重培养学生的实践能力和团队协作精神。
在教学过程中,关注学生的个体差异,提供个性化的指导和支持。
通过课程目标的设定,使学生在知识、技能和情感态度价值观方面取得全面发展。
二、教学内容本课程教学内容紧密结合课程目标,确保学生能够系统地掌握员工管理系统的相关知识。
1. 基础知识:- 数据库原理与应用:介绍数据库的基本概念、关系型数据库的设计和SQL语言操作。
- 程序设计基础:回顾编程语言的基本语法,如变量、条件语句和循环结构。
2. 员工管理系统功能模块:- 用户登录与权限管理:讲解用户身份验证和权限控制方法。
- 员工信息管理:介绍员工信息表的设计,实现增加、删除、修改和查询功能。
- 工资管理:探讨工资计算方法,设计工资管理模块。
3. 教学大纲:- 第一周:数据库原理与应用,介绍员工管理系统需求分析。
1公司员工管理系统(2014 届)《面向对象课程设计》课程设计报告课程设计题目:公司员工管理系统学院:软件学院专业:软件工程(电子商务)学生姓名:班级:学号:指导老师:2015年 6月 25日2公司员工管理系统目录1.需求分析 (2)2.具体要求 (2)3.总体设计 (3)4.详细设计 (4)5.测试结果 (13)6.软件操作说明书 (18)7.总结 (19)8.源代码 (19)公司员工管理系统课程设计报告1.需求分析根据对公司人员管理的需要,编写一个“公司人员管理系统”,以方便对公司人员数据的录入、修改、删除、显示、和查询功能。
2.具体要求设计一个虚基类 Staff(员工),包括编号、姓名和年龄保护数据成员以及相关的成员函数;由Staff 派生出工程师类Engineer 包含专业和职称保护数据成员以及相关的成员函数,再由Staff 派生出领导类Leader,包括职务和部门保护数据成员以及相关的成员函数;然后由Engineer 和 Leader 类派生出主任工程师类Chairman。
具体实现以下要求:1.增加员工数据信息2.更新员工数据信息3公司员工管理系统3.查询员工数据信息4.删除员工数据信息5.良好的人际交互界面、方便操作3.总体设计根据问题描述和要求,系统要求能够按姓名或者编号显示、查找、增加、删除和保存各类人员的信息。
确定程序至少应该具备如下功能:“增加各类人员数据”、“查询各类人员数据” 、“显示各类成员数据” 、“修改各类人员数据” 、“删除各类人员数据”、“各类人员数据存盘” 、“各类人员数据读入”基本模块。
公司人员管理系统添查删员员加询除工工员员员数数工工工据据数数数存读据据据盘盘图 3.1 程序基本功能结构图为体现面向对象编程的优点,本系统除过显示菜单函数、文件读写以及主函数为全局函数外,其他所有函数功能均封装于类之中。
4公司员工管理系统LeaderStaffList<T>共同派生Chairman(类模版 )Engineer图 3.2 类结构一览图4.详细设计本系统公有五个类,其中一个抽象类,一个模版类,三个派生类。
课程设计报告公司人员管理系统课程:面向对象课程设计班级:11511学号:姓名:吴小蛟指导老师:清华教授2012年 6月12日一、设计题目(问题)描述和要求1.题目:公司人员管理系统2.问题描述:某小型公司,主要有四类人员:经理、兼职技术人员、销售经理和兼职推销员。
现在,需要存储这些人员的XX、编号、级别、当月薪水,计算月薪总额并显示全部信息。
要求:(1)其中,人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
(2)程序对所有人员有提升级别的功能(3)月薪的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成 ,销售经理既拿固定月薪也领取销售提成。
(4)能按XX或者编号显示、查找、增加、删除和保存各类人员的信息二、系统分析与模块设计根据问题描述和要求,系统要求能够按XX或者编号显示、查找、增加、删除和保存各类人员的信息。
确定程序至少应该具备如下功能:“查询人员”、“增加人员”、“删除人员”、“数据存盘”基本模块。
系统既然具有“数据存盘”功能-人员数据可以保存到磁盘文件,那么也就意味着今后可以从磁盘文件读出人员数据,所以系统增加了“人员数据装入”模块,以方便用户使用、避免数据重复录入。
考虑到系统实现简捷,人员数据文件采用文本文件,人员数据文件名:Person.txt。
做为一个完整系统,除了具有增加人员,删除人员信息模块,还应该具有修改人员相关信息的功能,所以本系统设计时考虑增加“修改人员”模块。
考虑到根据编号查找人员信息功能在“删除人员”、“修改人员”等模块都使用,所以可以考虑设置为一个模块。
考虑到系统要求人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
这样就要求人员编号在增加人员时自动生成(增加1)且不重复。
根据这个要求,可以考虑设置一个全局量:“当前最大编号”,每增加一个人员,当前最大编号自动增1,然后新增加人员使用这个编号。
企业员工管理系统c 课程设计一、教学目标本课程旨在让学生掌握企业员工管理系统的C语言编程技能,通过对基本概念、语法及实际案例的学习,使学生能够熟练运用C语言进行简单的员工管理系统开发。
具体的教学目标如下:1.理解C语言的基本语法和数据类型。
2.掌握控制结构、函数、数组和指针等编程基础。
3.了解结构体和文件操作等高级概念。
4.能够使用C语言编写简单的程序。
5.能够独立完成企业员工管理系统的核心功能模块。
6.具备调试和优化代码的能力。
情感态度价值观目标:1.培养学生对计算机编程的兴趣和热情。
2.培养学生解决问题的能力和团队合作精神。
3.培养学生良好的编程习惯和职业道德。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、控制结构、函数、数组和指针等编程基础,以及结构体和文件操作等高级概念。
具体的教学大纲如下:1.C语言概述和基本语法:介绍C语言的历史和发展,熟悉C语言的编译环境和基本语法。
2.数据类型和变量:学习整型、浮点型、字符型等数据类型,以及变量的声明和赋值。
3.控制结构:掌握顺序结构、选择结构和循环结构的使用。
4.函数:学习函数的定义、声明和调用,了解递归函数和外部函数。
5.数组和指针:掌握一维、二维数组的操作,了解指针的概念和应用。
6.结构体:学习结构体的定义和使用,了解联合体和枚举类型。
7.文件操作:掌握文件的打开、关闭、读写等基本操作。
8.企业员工管理系统实例:通过实际案例,引导学生运用所学知识开发简单的员工管理系统。
三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解C语言的基本语法和概念,使学生掌握编程基础。
2.案例分析法:分析实际案例,让学生了解如何将理论知识应用于实际开发。
3.实验法:安排上机实验,让学生动手编写代码,培养实际编程能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。
”小型公司工资管理系统设计“c++课程设计1目录一、课程设计目的(1)二、课程设计内容(1)1、题目及简介(1)2、设计说明(1)3、程序设计(1)(1)程序流程图(1)(2)程序代码(2)三、课程设计总结(15)参考文献(15)一、课程设计目的(1)要求学生达到熟练掌握c++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基础思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
二、课程设计内容1、题目及简介(1)设计题目:小型公司工资管理系统设计(2)简介:公司主要有4类人员:经理,技术员,销售员,销售经理。
要求存储这些人的职工号,姓名,月工资,岗位,年龄,性别等信息。
工资的计算方法:经理:固定月薪为8000;技术员:工作时间*小是工资(100元每小时);销售员:销售额*4%提成;销售经理:底薪(5000)+所辖部门销售额总额*0.5%;要求;1)输入数据要求每类人员不能少于4人,并按一下格式输出:职员号姓名性别年龄岗位工资排名及某销售经理管理所辖部门各销售员的业绩及自己的工资表:职员号姓名销售额销售额合计。
2)总体设计,要有一个菜单,用于选择各项功能,其中(1)数据录入:输入各种数据;(2)数据统计:各销售经理的工资计算及最终按工资进行的冒泡排序;(3)数据打印:打印上述表格;(4)退出:退出本系统;2设计说明充分利用了类的继承与派生的知识,先定义了一个雇员类Employee,由雇员类公有派生出技术员类Tech,销售员类Seller,经理类Manager,由销售员类Seller,经理类Manager公有派生出销售经理类XManager。
把基类都定义为虚基类。
通过基类去写的派生类就可以调基类的公有成员。
利用for循环把经理数据,技术员数据,销售员数据,销售经理数据输入,利用冒泡排序法把各销售经理的资按升序排列。
利用switch进行选择系统进行的工作。
在主菜单中进行调用各函数,从而实现系统各功能的运行。
c课程设计报告公司人员管理系统Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#内蒙古科技大学《面向对象程序设计》课程设计报告设计题目:公司人员管理系统学院:信息学院专业:电子信息工程班级:xxxxx班学号:xxxxxxxxxx学生姓名: xxxxxxxxx指导教师:余金林2011.6内蒙古科技大学课程设计任务书一、教学要求1. 巩固和加深学生对C++语言课程的基本知识的理解和掌握2. 掌握C++语言编程和程序调试的基本技能3. 利用C++语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C++语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,可根据设计内容适当修改题目名称。
公司人员管理系统定义人员基类,并派生出兼职技术人员类、经理类、部门管理人员类并在类中声明各自的成员函数;要求至少设计以下各功能模块:输入记录查询功能计算工资显示信息三、设计要求及成果1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用4. 设计完成后提交课程设计报告四、进度安排资料查阅与讨论(1天)系统分析(2天)系统的开发与测试(5天)编写课程设计说明书和验收(2天)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。
3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
目录一.摘要——————————————二.需求分析————————————三.概要设计————————————四.详细设计———————————五.总结——————————————六.参考文献————————————一.摘要C++简介:Stroustrup工作起于1979年的C with Classes。
课程设计报告公司人员管理系统课程:面向对象课程设计班级:11511学号:102姓名:吴小蛟指导老师:清华教授2012年 6月12日一、设计题目(问题)描述和要求1.题目:公司人员管理系统2.问题描述:某小型公司,主要有四类人员:经理、兼职技术人员、销售经理和兼职推销员。
现在,需要存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信息。
要求:(1)其中,人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
(2)程序对所有人员有提升级别的功能(3)月薪的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成 ,销售经理既拿固定月薪也领取销售提成。
(4)能按姓名或者编号显示、查找、增加、删除和保存各类人员的信息二、系统分析与模块设计根据问题描述和要求,系统要求能够按姓名或者编号显示、查找、增加、删除和保存各类人员的信息。
确定程序至少应该具备如下功能:“查询人员”、“增加人员”、“删除人员”、“数据存盘”基本模块。
系统既然具有“数据存盘”功能-人员数据可以保存到磁盘文件,那么也就意味着今后可以从磁盘文件读出人员数据,所以系统增加了“人员数据装入”模块,以方便用户使用、避免数据重复录入。
考虑到系统实现简捷,人员数据文件采用文本文件,人员数据文件名:Person.txt。
做为一个完整系统,除了具有增加人员,删除人员信息模块,还应该具有修改人员相关信息的功能,所以本系统设计时考虑增加“修改人员”模块。
考虑到根据编号查找人员信息功能在“删除人员”、“修改人员”等模块都使用,所以可以考虑设置为一个模块。
考虑到系统要求人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
这样就要求人员编号在增加人员时自动生成(增加1)且不重复。
根据这个要求,可以考虑设置一个全局量:“当前最大编号”,每增加一个人员,当前最大编号自动增1,然后新增加人员使用这个编号。
《面向对象程序设计》课程设计报告设计题目:小型公司人员管理系统学院:职业技术学院专业:计算机科学与技术班级:计科职071学号:072002110148学生姓名:彭银指导教师:杨敏成绩:2008 年 1 月 9 日目录1.系统功能要求————————————————3 2.系统功能分析和设计思路、系统功能模块———4—6 3.系统流程图————————————————7—8 4.调试过程及系统使用说明———————————9 5.程序代码———————————————10—22 6.总结、心得与体会—————————————23 7.小组成员及任务分配————————————24 8.参考书目—————————————————251.系统功能要求某小型公司,主要有四类人员:经理、一般工人、销售员以及销售经理。
现在、需要建立一个小型的公司人员管理系统,能够以文件方式存储这些人员的各类信息并能按照其编号查询输出所输入的所有信息,还要按照公司的要求计算出每名员工一个月的工资。
要求:1)可以录入并保存四类人员的信息2)可以按照职工的类别以及姓名查询并显示四类人员的信息3)可以按照规定的方法计算每名员工每月所得的工资方法:A 经理:固定工资(5000 可更改)+工龄工资(工龄*100)+领导能力评价B 一般工人:固定工资(2500 可更改)+工龄工资(工龄*50)+工时工资(工时*10)+工作表现评价C 销售员:工龄工资(工龄*50)+销售额*0.05+销售效率评价D 销售经理:固定工资(3500 可更改)+工龄工资(工龄*50)+销售额*0.005+统率力评价其中,每一类员工的前一部分的计算方法是固定了的,而后面的评价部分分为了优、良、中、差四个等级,在最终评定某一位员工该月应得的工资时可以按评定等级酌情考虑,这样能更加体现人性化并且更能够提高员工积极性。
4)可以在各个界面中实现退出以及进入的循环5)可以退出本系统2.系统功能分析和设计思路、系统功能模块我们使用面向对象程序设计方法的思路进行分析,得出了整个系统应该涉及两个基类的信息和操作,首先是公司雇员这一个大基类,其它诸如经理等的类应该由此类派生;再有、为了方便实现各类信息以文件方式的储存以及实现各种功能和界面,我们决定再创建一个系统类。
所以我们接下来所要做的一切工作都要围绕这两个类(公司雇员类employee以及系统类system)来展开。
(1)公司雇员类employee:可以说这是本系统的一个“总基类”,我们按照预期的设计及要求由它(公司雇员类employee)派生出了经理类manager、一般工人类worker、销售员类sale以及销售经理类sale_manager。
由于考虑到各个小的分类之间在形式下差不多,为了不出现“二义性”的问题,我们主要在各个类之间采取定义虚基类以及纯虚函数的思路进行调用。
另外、由于我们对链表的运用以及链表的掌握还不是很熟练,再加上为了使各个类方便与系统类system进行直接连接,我们遂决定采用对象数组存放文件中读入或读出的各类公司人员信息。
但是我们发现这样做有一个缺陷:因为无法事先确定各类人员及各类人员的各种信息,所以无法确定对象数组的大小。
这里我们讨论后决定事先确定一个较大的数组空间来决定这个问题,当然,解决这个问题的最好方法还是采用异质链表来存放从文件中读取的信息。
(2)系统类system:由于这个系统涉及到了文件的应用,所以系统类system是必不可少的。
我们对问题分析、讨论以后决定,系统类system的主要成员函数要包括:提供输入各类数据的inform、确认各类输入成功的success、添加各类信息的in_information、用于各类查询的search、计算并显示总工资的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.系统流程图说明:以下是对应上面系统功能模块实图的系统流程图,因为制图的不便,故只将成功完成一次操作的流程给出,而“各个流程中中途如果输入了菜单中没有的项以及数据保存文件中没有的数据而被强制退出”的流程因为过于复杂(每步都要进行判断)而没有给出,实际情况读者朋友一试便知。
在此我们对此表示深深的歉意,我们以后一定会努力完善我们各方面的工作的。
4.调试过程及系统使用说明对此程序进行调试需要一个功能、一个功能地逐个调试,如遇到出现与先前期望的结果不符的话需要使用C++自带的程序调试工具逐一进行改正。
在这当中需注意的是由于几个关于工资的计算变量我们设定成了float型,所以在组建过程中会出现如下警告:“warning C4244: '=' : conversion from 'double' to 'float', possible loss of data”,我们一开始也挺纳闷的,因为我们并没有设置任何double型变量,怎么会在警告中出现“从double型转变为float型很可能引起数据丢失”的警告呢?后来请教老师后发现,警告是由于这个C++系统把一般的小数都按double类型数据处理,而我们在定义的时候是用的float类型,所以系统认为有数据丢失。
进入主菜单后选1-1为输入经理类的记录;1-2为输入工人类的记录;1-3为输入销售员类的记录;1-4为输入销售经理类的记录;1-5为退出此界面并返回到主界面。
选2-1为查找经理类的记录;2-2为查找工人类的记录;2-3为查找销售员类的记录;2-4为查找销售经理类的记录;2-5为退出此界面并返回到主界面。
以上操作的详细流程请参照流程图3。
选3-1为计算经理类的总工资;3-2为计算工人类的总工资;3-3为计算销售员类的总工资;3-4为计算销售经理类的总工资;3-5为退出此界面并返回到主界面。
以上操作的详细流程请参照流程图4。
选4会输出“谢谢您使用本系统,次再见!”并退出程序。
5.程序代码//Employee.h#include<iostream.h>#include<string.h>#include<fstream.h>#include<stdlib.h>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;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 Sale_Manager:public Manager, public Sale /*销售经理类*/ {char command[10];public:Sale_Manager(){lb=4;};~Sale_Manager(){};void Input();void Output();void Compute_total_salary();};class System /*系统类*/{Manager B[10];Worker C[10];Sale D[10];Sale_Manager E[10];static int j1,j2,j3,j4;void infor1();void infor2();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<iostream.h>#include<string.h>#include<fstream.h>#include<stdlib.h>#include"Employee.h"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<<"\t\t\t员工编号:";cin>>num;cout<<"\t\t\t员工姓名:";cin>>name;cout<<"\t\t\t员工工龄:";cin>>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<<"\t\t\t固定工资:";cin>>salary;cout<<"\t\t\t领导能力(优、良、中、差):";cin>>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<<"\t\t\t固定工资:";cin>>salary;cout<<"\t\t\t工时:";cin>>work_hour;cout<<"\t\t\t工作表现(优、良、中、差):";cin>>performance;}{Employee::Output();cout<<"\t\t\t工时:"<<work_hour<<endl;cout<<"\t\t\t工作表现(优、良、中、差):"<<performance<<endl; }void Worker::Compute_total_salary(){total_salary=salary+10*work_hour+50*work_age;}void Sale::Input(){Employee::Input();cout<<"\t\t\t当月销售额:";cin>>sale;cout<<"\t\t\t销售效率(优、良、中、差):";cin>>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 Sale_Manager::Input(){Employee::Input();cout<<"\t\t\t固定工资:";cin>>salary;cout<<"\t\t\t当月销售总额:";cin>>sale;cout<<"\t\t\t统率力(优、良、中、差):";cin>>command;}void Sale_Manager::Output(){cout<<"\t\t\t当月销售总额:"<<sale<<endl;cout<<"\t\t\t统率力(优、良、中、差):"<<command<<endl; }void Sale_Manager::Compute_total_salary(){total_salary=salary+50*work_age+sale*0.005;}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<<"\t\t 请您输入您选择的类别:";}void System::In_information(){int rev1;int again=1;char t;while(again){Interface1();cin>>rev1;switch(rev1){case 1:infor1();break;case 2:infor2();break;case 3:infor3();break;case 4:infor4();break;case 5:Interface();break;default:cout<<"\t\t\t 对不起、没有此类人员!"<<endl;continue;}cout<<"\t\t\t 信息储存成功!"<<endl;cout<<"\t\t\t 是否继续输入(y/n)?";cin>>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 *)&B[j1],sizeof(class Manager));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 *)&C[j2],sizeof(class Worker));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 *)&D[j3],sizeof(class Sale));datafile.close();j3++;}void System::infor4(){fstream datafile(fileName,ios::in|ios::out|ios::binary);datafile.seekp(0,ios::end);E[j4].Input();datafile.write((char *)&E[j4],sizeof(class Sale_Manager));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;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 对不起,该类别中并没有此人!"<<endl; }void System::Search(){int rev;char name[20];int again=1;char t;while(again){Interface1();cin>>rev;if(rev==5) break;cout<<"\t\t\t请输入您要查询的人员姓名:";cin>>name;Search1(rev,name);cout<<"\t\t\t是否继续查询(y/n)?";cin>>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){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 对不起,该类别中并没有这种类型的总工资!"<<endl; }void System::Out_total_salary(){int rev;char name[20];int again=1;char t;while(again){Interface1();cin>>rev;if(rev==5) break;cout<<"\n\t\t\t请输入您将要查看总工资的人员姓名:";cin>>name;Out_total_salary1(rev,name);cout<<"\t\t是否继续查看总工资(y/n)?";cin>>t;cout<<endl;if(!(t=='Y'||t=='y'))again=0;}Interface();}void System::Interface(){int rev;cout<<"\n\n\n\n\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 请输入您的选择(1~4):";cin>>rev;switch(rev){case 1:In_information();break;case 2:Search();break;case 3:Out_total_salary();break;case 4:cout<<"\t\t\t 谢谢您使用本系统,下次再见!"<<endl;exit(0);}}//main.cpp#include"Employee.h" void main(void){System s;s.Interface();}6.总结、心得与体会通过这次课题设计,我觉得做好一个程序,灵活运用是关键。