公司人员管理系统实训报告课程设计

上传人:沈*** 文档编号:87370018 上传时间:2022-05-09 格式:DOC 页数:52 大小:669.51KB
收藏 版权申诉 举报 下载
公司人员管理系统实训报告课程设计_第1页
第1页 / 共52页
公司人员管理系统实训报告课程设计_第2页
第2页 / 共52页
公司人员管理系统实训报告课程设计_第3页
第3页 / 共52页
资源描述:

《公司人员管理系统实训报告课程设计》由会员分享,可在线阅读,更多相关《公司人员管理系统实训报告课程设计(52页珍藏版)》请在装配图网上搜索。

1、沈 阳 工 程 学 院课 程 设 计设计题目: C+程序设计课程设计 公司人员管理系统 系 别 xx 班级 xx 学生姓名 XX 学 号 xx 指导教师 xx 职称 讲师 副教授 起止日期:2013 年12月30日起至 2014 年01月03日止沈 阳 工 程 学 院课程设计任务书 课程设计题目: 公司人员管理系统 系 别 信息学院 班级 计算本121 学生姓名 学 号 指导教师 职称 课程设计进行地点: F608 任 务 下 达 时 间: 2013年 12月01日起止日期:2013年12月30日起至2014年01月03日止教研室主任 年 月 日批准一、 课程设计的原始资料及依据公司人员管理系

2、统的总目标是:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,分析和设计一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的公司人员管理系统,为公司主管部门的决策者和管理者提供充足的信息、快捷的查询和有效的管理方式,减少不必要的损失和浪费,提高人员管理的效率。二、 课程设计主要内容及要求设计名称:公司人员管理系统设计内容:某小型公司,主要有四类人员:经理,兼职技术人员,销售经理和兼职推销员.1) 人员信息包括姓名,编号,级别,当月薪水,计算月薪总额等2) 能够显示这些人员的全部信息.3) 添加删除功能:能根据公司人事的变动情况,添加删除记录;4) 查询功能

3、:能根据编号和姓名进行查询;5) 保存功能:启动程序时能读取人员信息,关闭程序时能将信息保存至硬盘文件。6) 人员编号在生成人员信息时自动生成,每输入一个人员信息编号顺序加1。设计要求:(1) 要求在设计的过程中建立清晰的类层次,并画出类图;(2) 设计功能满足要求、易于操作的友好界面;(3) 在系统的设计中,至少要用到面向对象的一种机制:继承、多态等;(4) 在完成该题目时,小组人员进行详细的任务分工,并要在报告中体现出来。三、 对课程设计说明书撰写内容、格式、字数的要求1课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到

4、的问题及解决方法、设计总结、参考文献等。一般不应少于3000字。2在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。应做到文理通顺,内容正确完整,书写工整,装订整齐。3设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。4课程设计说明书手写或打印均可。手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。5课程设计说明书装

5、订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献。四、 设计完成后应提交成果的种类、数量、质量等方面的要求1完成“任务书”中指定的功能,运行结果正确。2课程设计说明书。五、 时间进度安排顺序阶段日期计 划 完 成 内 容备注1第1天(12月30号)阅读资料2第2天(12月31号)系统分析设计3第3天(01月01号)程序编制、调试及运行4第4天(01月02号)成绩评定5第5天(01月02号)撰写课程设计说明书六、 参考文献1刘觉夫 王更生等编著C+程序设计.北京邮电大学出版社2曾辉 王更生 李广丽等编著C+程序设计实训教程.北京邮电大学出版社3谭浩强编著C+面向对象程序设计.北京清华大学

6、出版社4郑莉 董渊 何江舟等编著的C+语言程序设计.北京清华大学出版社5李强 贾云霞等编著的VisualC+项目开发实践.北京中国铁道出版社6皮德常编著的C+程序设计教程(第一版).北京清华大学出版社7钱能编著的C+程序设计教程(第二版).北京清华大学出版社8郑阿奇编著VisualC+教程.北京清华大学出版社沈 阳 工 程 学 院 C+程序设计 课程设计成绩评定表系(部): 信息学院 班级: 计算本121 学生姓名: 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪

7、律,出勤情况是否良好,能够独立完成设计工作, 0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩(加权分合计乘以12) 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确

8、,符号统一,编号齐全,图表完备,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以8)分加权分合计评 阅 教 师 签 名: 年 月 日课 程 设 计 总 评 成 绩分沈 阳 工 程 学 院 C+程序设计 课程设计成绩评定表系(部): 信息学院 班级: 计算本121 学生姓名: 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明

9、书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩(加权分合计乘以12) 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以8)分加权分合计评 阅 教 师 签 名:

10、年 月 日课 程 设 计 总 评 成 绩分沈 阳 工 程 学 院 C+程序设计 课程设计成绩评定表系(部): 信息学院 班级: 计算本121 学生姓名: 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导

11、教师评审成绩(加权分合计乘以12) 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以8)分加权分合计评 阅 教 师 签 名: 年 月 日课 程 设 计 总 评 成 绩分摘要在当前的市场经济体制下,企业要想提高市场的竞争力,取得好的经济效益,不但要有好的产品和销

12、售服务,还必须加强对公司内部的人员管理,以提高内部人员的凝聚力和积极性、提高工作效率等。本文利用VisualC+6.0 编写程序,实现了用户对公司人员的编号、姓名、性别、部门。级别、工资等信息的管理操作。本系统主要有八个功能模块:到添加信息子系统、查询信息子系统、统计子系统、显示子系统、修改子系统、删除子系统、保存子系统和读取子系统。已经过全面的系统测试,能够很好的运行,达到了预期的效果。本系统主要实现了对四类人员的管理:经理管理、销售人员管理、技术人员管理、销售经理管理;主要运用了继承友元等编程方法来实现对这些人员的管理。 关键词:系统设计 人员管理 信息 公司目录摘要I目录II第一章 问题

13、分析- 1 -11引言- 1 -12课程设计的目的- 1 -13设计题目(问题)描述和要求- 1 -14系统分析与分工- 2 -15设备器材- 3 -16课程设计意义- 3 -第二章 设计原理与运行环境- 4 -21 c+语言概述- 4 -22 基本操作- 5 -第三章 系统分析与设计- 11 -31系统设计- 11 -32系统关键算法流程图- 13 -第四章 系统功能的实现- 17 -4.1菜单函数- 17 -4.2添加功能- 18 -4.3删除功能- 20 -4.4显示功能- 22 -4.5基础数据设置- 24 -4.6查询功能- 26 -4.7保存功能- 28 -4.8退出功能- 30

14、-总结- 31 -致谢- 32 -参考文献- 33 -第一章 问题分析11引言公司人员管理系统是公司管理中的一个重要内容,随着时代的进步,公司人员数量也不断增加、分工的不断细化、各个行业间联系的不断密切,对人事管理的要求也不断提高。早期的人工方式的管理系统已不适合现代企业的公司的发展,实现企业人事管理的系统化、规范化、自动化,是现代公司管理的首选。此次课程设计的目的是以C+语言程序设计为基础,针对具有一定难度的综合性题目,进行分析、编程、调试和运行,进一步掌握面向对象和面向过程程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实践相结合,提高分析问题、解决问题的能力。通过设计一个简单的公

15、司人员管理系统,进一步熟悉C+中类的概念、类的封装、继承和多态的实现方式。了解系统开发的需要分析,类层次设计,模块分析,编码测试,模块组装与整体调试的全过程,逐步熟悉程序设计的方法,并养成良好的编程习惯。12课程设计的目的 要求学生能够熟练掌握C+语言的基本知识和技能。 基本掌握面向对象程序设计的基本思路和方法。 能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。13设计题目(问题)描述和要求1.3.1设计内容: 某小型公司,主要有四类人员:经理,兼职技术人员,销售经理和兼职推销员. 人员信息包括姓名,编号,级别,当月薪水,计算月薪总额等能够显示这些人员的全部信息.添加删除功能:能

16、根据公司人事的变动情况,添加删除记录;查询功能:能根据编号和姓名进行查询;保存功能:启动程序时能读取人员信息,关闭程序时能将信息保存至硬盘文件。人员编号在生成人员信息时自动生成,每输入一个人员信息编号顺序加1。1.3.2设计要求:要求在设计的过程中建立清晰的类层次,并画出类图;设计功能满足要求、易于操作的友好界面;在系统的设计中,至少要用到面向对象的一种机制:继承、多态等;在完成该题目时,小组人员进行详细的任务分工,并要在报告中体现出来。14系统分析与分工1.4.1问题分析根据问题描述和要求,系统要求能够按姓名或者编号显示、查找、增加、删除和保存各类人员的信息。确定程序至少应该具备如下功能:“

17、查询人员”、“增加人员”、“删除人员”、“数据存盘”基本模块。系统既然具有“数据存盘”功能人员数据可以保存到磁盘文件,那么也就意味着今后可以从磁盘文件读出人员数据,所以系统增加了“人员数据装入”模块,以方便用户使用、避免数据重复录入。考虑到系统实现简捷,人员数据文件采用文本文件,人员数据文件名:Person.txt。考虑到根据编号查找人员信息功能在“删除人员”模块都使用,所以可以考虑设置为一个模块。考虑到系统要求人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。这样就要求人员编号在增加人员时自动生成(增加1)且不重复。根据这个要求,可以考虑设置一个全局量:“当前最大编号”,每增

18、加一个人员,当前最大编号自动增1,然后新增加人员使用这个编号。为了保证系统能记忆这个编号,可以使用一个数据文件保存当前这个编号。系统每次开始运行前从文件读入这个编号,随着人员增加,编号自动增加,系统每次运行结束时将这个编号写入文件。本系统将初值(没有一个用户时)设置为0。考虑到人员的许多固定信息如:经理、销售经理的固定月薪,销售经理、销售人员提成,技术人员小时工资等都是一些不需要每个人员都要输入的信息,所以可以将这些信息都保存在一个数据文件中,本系统为了方便起见,将这些信息与“最大编号”全部保存在一个文件中,并使用“基础数据设置”模块进行设置和管理。基础数据文件也采用文本文件,基础数据文件名:

19、Base.txt。本系统还提供“查询本月经营信息”帮助计算销售总额,工资总额,并按照公式计算本月盈亏。综合考虑系统具有下面8项功能模块:增加人员,删除人员,修改人员,查询本月经营信息,基础数据设置,数据存盘,数据装入。系统使用的数据文件格式如下:Base.txt:(格式:项目 数据)经理固定月薪 3000销售经理固定月薪2000销售经理提成 1销售人员提成 2技术人员小时工资20ID6Person.txt:(格式:编号,姓名,人员类别,其它数据,销售员销售额,技术人员工作小时)2shijinwan31000003hejinwei 14zengying 4 1005chenying26sunyi

20、ming 3150000注:人员类型编号1经理;2销售经理;3销售员;4技术人员1.4.2任务分工小组成员个人任务描述Xx 我主要负责小组分工合作,编写添加函数、删除函数,以及撰写论文的设计原理及部分内容,完成最后的论文汇总。Xxx 我主要负责编写程序的查找和修改模块及主函数等程序功能,负责链接调试程序,结合大家感受撰写论文的总结部分。Xx表1.1 任务分工 我主要负责编写程序的菜单,显示和删除模块,并负责撰写论文的摘要,引言,致谢部分。15设备器材参考书目、计算机、编译软件Microsoft Visual Studio 201016课程设计意义通过设计此系统,熟练掌握C+语言的基本知识和技能

21、,基本掌握面向对象程序开发的基本思路和方法,培养学生的动手操作能力,提高自主学艺能力,能够利用所学的基本知识和技能,进行简单应用程序设计。加深理解利用程序设计思想开发一个系统的整个流程,提高分析问题、解决问题和实际动手的能力。第二章 设计原理与运行环境21 c+语言概述2.1.1 C+语言出现的历史背景 伟大的C+语言之父,Bjarne Stroustrup博士曾经说过:“一种程序设计思想要为人所用,不仅语言的特性必须是典雅的,而且它必须在真正的程序环境中能经得起考验。”面向对象程序设计方法的提出,以及它在编写大规模程序方面显示出的优越性,使人们开始重视面向对象程序设计语言的研究。在面向过程的

22、ALGoL、ADA和MoDuLA2等语言的基础上,逐步演变形成了面向对象的程序设计语言。20世纪60年代,美国国防部投入巨大的人力和物力,研制开发了ADA语言。ADA语言并非面向对象的程序设计语言,但它具有的模块化、信息隐藏、数据抽和并发执行等特点对于面向对象程序设计方法和技术起到了积极的推动作用。人们普遍认为,ADA语言是一种基于对象的程序设计语言。1967年出现了simula67语言,它是面向对象程序设计语言的鼻祖,提出了对象的概念,并且支持类和继承。随后出现的Smalltalk语言继续丰富和发展了面向对象程序设计的概念,并且提供了更加严格的信息隐藏机制。1980年问世的Smalltalk

23、80语言是Smalltalk语言的改进版,开始向世人展现面向对象程序设计的魅力。 1982年,美国AT&T公司贝尔实验室的Bjarne Stroustrup博士在c语言的基础上引入并扩充了面向对象的概念,发明了种新的程序语言。为了表达该语言与c语言的渊源关系,它被名为c+。此后c+语言历经了不断地完善,例如1990年c+语言引入模板和异常处理的概念,1993年引入运行时类型识别(RTTI)和名字空间(Name Space)的概念。1997年,c+语言成为美国国家标准(ANSI)。1998年,c+语言又成为了国际标准(ISO)。目前,c+语言已成为使用最广泛的面向对象程序设计语言之一。c+语言是

24、以c语言为基础的,支持c语言的所有语法和几乎所有的技术,因此也有人把c+语言看作是c语言的超集。同时c+语言支持面向对象程序设计方法的所有概念,它是一种非常实用的、功能极为强大的程序语言,相对而言较难掌握。2.1.2 C+语言的主要特点【优点】C+设计成静态类型、和C同样高效且可移植的多用途程序设计语言。 C+设计成直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。 C+设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。 C+设计成尽可能与C兼容,籍此提供一个从C到C+的平滑过渡。 C+避免平台限定或没有普遍用途的特性。 C+不使用会

25、带来额外开销的特性。 C+设计成无需复杂的程序设计环境。 出于保证语言的简洁和运行高效等方面的考虑,C+的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。C+在一定程度上可以和C语言很好的结合,甚至大多数C语言程序是在C+的集成开发环境中完成的。C+相对众多的面向对象的语言,具有相当高的性能。C+引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括MFC、QT、wxWidgets就是使用的C+。人们一般认为,使用Java或C#的开发成本比C+低。但是,如果充分分析C+和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:

26、软件规模和复杂度都比较小。如果不超过3万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C+的优势将会越来越明显。造成这种差别的就是C+的软件工程性。 【缺点】C+由于语言本身过度复杂,这甚至使人类难于理解其语义。更为糟糕的是C+的编译系统受到C+的复杂性的影响,非常难于编写,即使能够使用的编译器也存在了大量的问题,这些问题大多难于被发现。由于本身的复杂性,复杂的C+程序的正确性相当难于保证。也有人提出不支持多线程的原语等缺陷。不过有如此多的知名人士提出了如此多的缺陷,正说明C+被广泛使用和成功。C+语言由于过度的复杂性,以及与unix的文化相抵触,

27、在unix/linux领域受到很多著名人士(比如Linux之父linus torvalds与著名黑客Eric S. Raymond)的强烈批评与抵制。22 基本操作1新建一个工程 首先鼠标左键单击“文件”菜单,选择“新建”单击鼠标左键,系统将弹出一个窗口,单击“工程”选项,将得到图2.1所示窗口。请在“工程名称”栏填入工程名,然后鼠标左键单击左边窗口倒数第三项“Win32 Console Application”,使该项变蓝,然后鼠标左键单击“确定”按钮。得到图2.2所示窗口,选择“一个空工程”,单击“完成”得到图2.3。再单击“确定”得到图2.4所示的窗口。图2.1新建工程窗口图2.2 选择

28、控制台程序图2.3 创建新工程图2.4 Visual C+ 6.0 的工作环境2新建一个源文件 要新建一个C程序源文件可以选择“文件”菜单的“新建”选项,在弹出的窗口中选择“文件”选项单击,得到如图2.5所示的窗口,其“位置”栏中的内容是默认的,在“添加到工程”前打勾,“工程名”也是默认的。图2.5 新建源文件3编辑程序编辑环境如图2.6所示。把程序代码输入计算机,如图2.7所示。图2.6 编辑区域图2.7 编辑程序4. 编译、连接、运行、调试一个程序 当源文件编辑完成后,就可以编译、连接和运行程序了。方法如下:单击“组建”菜单的“编译”选项,将完成编译工作得到*.cpp目标文件(文件名就是源

29、文件的名字),编译结果将在窗口最下面的输出窗口显示。可根据窗口的提示修改源文件以改正错误。单击“组建”菜单的“组建”选项,完成连接工作得到可执行文件(文件名是工程名),连接的结果也将在窗口最下面的输出窗口显示。单击“组建”菜单的“全部重建”选项,将完成编译和连接两项工作,编译和连接的结果将在输出窗口显示。单击“组建”菜单的“执行”选项,可运行程序,程序运行的结果如图2.8所示。图2.8 程序运行结果第三章 系统分析与设计31系统设计3.1.1系统总体框架使用面向对象的程序设计思想进行分析,整个系统涉及两大类信息和操作,公司,人员。所以系统主要涉及两个大类:公司类Company、人员类Perso

30、n。系统的总体框架就是公司类,人员类的定义;主函数中定义一个公司对象,循环显示主菜单并根据用户选择调用公司类的相应方法(成员函数)。(1)公司类Company:考虑系统操作的人员信息的数量具有不确定性,所以考虑使用链表保存、处理人员信息。公司类包含:所有人员信息的一个不带头结点的链表(作为数据成员)及可以对人员信息进行增,删,改,查询经营信息,基础数据设置,数据存盘,数据装入等操作的相关模块(Add,Delete,Modify,Query,Set,Save,Load)作为成员函数。(2)人员类Person:所有人员都具有的公共信息及操作可以使用人员类进行描述。由于系统具有4类人员且4类人员数据

31、,操作有所不同,如销售员包含销售额,而技术人员包含工作小时数且计算工资的方法不同,所以应当为4类人员创建相应的Person类的派生类。(3)为了使公司类可以方便处理人员信息,可以考虑将公司类确定为人员类的友元类或者人员类提供公共的方法以便公司类进行操作。为了公司类可以用共同方法操作人员类,可以将人员类的方法确定为虚函数。3.1.2类的层次图 类的层次图如图3.1所示。Person No,Name,Duty,Earning,next,Person(),CalcSalary(),Output()Manager Sales SalesManager Technician Manager(), Amo

32、unt, Amount, t,CalcSalary(), Sales(),GetAmount(), SalesManager(), Technician(),Output() SetAmount(), SetAmount(), GetT(),SetT(),CalcSalary(), CalcSalary(), CalcSalary(),Output() Output() Output()3.1 类的层次图其中:Person 类的No-人员编号,Name-人员姓名,Duty-人员类别,Earning-工资,next-指向下一个人员的指针;Person 类的CalcSalary(),Output(

33、)定义为纯虚函数分别表示要计算人员工资和输出人员信息,由于定义纯虚函数,所以Person是抽象类,具体计算工资,输出人员信息由派生类完成。各个派生的类,包含本类对象特有的数据,Sales:Amount-销售员销售额,SalesManager:Amount-销售经理的总销售额(系统统计各个销售员销售额得到销售经理的总销售额),Technician:t-技术人员工作小时数。Company Person *Worker,Clear(),Company(),Company(),Add(),Delete(),Modify(),Query(),Set(),Save(),Load()其中:Worker就是人

34、员链表。Clear()用于清除人员链表所有结点。Add(),Delete(),Modify(),Query(),Set(),Save(),Load()分别表示系统各个功能模块:增加人员,删除人员,修改人员,查询本月经营信息,基础数据设置,数据存盘,数据装入。3.1.3系统流程图主函数首先调用菜单函数,显示菜单,菜单函数给出用户可选择的项目,用户可以通过选择该项前的代码来实现想要实现的功能。菜单函数返回一个值给主函数,主函数根据返回值,调用相应函数。主函数流程图如图3.2所示图3.2 主函数流程图32系统关键算法流程图(1)增加人员Company:Add()图3.3 增加人员函数流程图(2) 删

35、除人员Company:Delete()图3.4 删除人员函数流程图(3) 显示本月经营信息Company:Display() 图3.5 显示本月经营信息函数流程图(4) 查询Company:Query()图3.6 查询函数流程图(4) 保存Company:Save() 图3.7 保存函数流程图(7) 数据装入Company:Load()图3.7 数据装入函数流程图第四章 系统功能的实现4.1菜单函数菜单函数首先标出欢迎使用公司人员管理系统,然后给出用户可选择的项目,用户可以通过选择该项前的代码来实现想要实现的功能。程序源代码如下:void main()char c;Company a;dosy

36、stem(cls);coutntt* 公司人员管理系统 *n;coutttt1增加人员n;coutttt2删除人员n;coutttt3显示本月经营信息n;coutttt4基础数据设置n;coutttt5查询n;coutttt6保存n;coutc;switch(c)case 1: a.Add(); system(pause);break;case 2: a.Delete();system(pause);break;case 3: a.display(); system(pause);break;case 4: a.Set(); system(pause);break;case 5: a.Quer

37、y(); system(pause);break;case 6: a.Save(); system(pause);break;while(c!=7);程序运行时,主界面如图4.1所示图4.1 菜单功能实现用户可以通过选择该项前的代码来实现想要实现的功能,例如,要添加记录,从键盘输入1,按回车后,用户可按相应的提示进行添加操作。4.2添加功能添加功能要求:能根据公司人事的变动情况,添加记录。人员编号在生成人员信息时自动生成,每输入一个人员信息编号顺序加1。程序源代码如下:void Company:Add() Person *p; /新结点指针 int Duty; char Name20; dou

38、ble Amount,T; coutn* 新增员工 *n; /输入员工信息 ID+; coutDuty; coutName; if(Duty=3)coutAmount; else if(Duty=4)coutT; /创建新员工结点 switch(Duty)case 1:p=new Manager(ID,Name,Duty); break;case 2:p=new SalesManager(ID,Name,Duty); break;case 3:p=new Sales(ID,Name,Duty,Amount); break;case 4:p=new Technician(ID,Name,Duty

39、,T); break;p-next=0; /员工结点加入链表 if(Worker) /若已经存在结点Person *p2;p2=Worker;while(p2-next) /查找尾结点p2=p2-next; p2-next=p; /连接 else /若不存在结点(表空)Worker=p; /连接在主界面中,选择1(即输入1,回车),即可输入要添加的信息,如图4.2所示。系统会罗列需要添加的项目,用户只需根据对应项目输入信息。图4.2 添加功能实现4.3删除功能删除功能要求:选中某个人的ID时,可对此人的相应数据进行删除。程序源代码如下:void Company:Delete() /删除人员 i

40、nt No; coutn* 删除员工 *n; coutNo; /查找要删除的结点 Person *p1,*p2; p1=Worker; while(p1)if(p1-No=No) break; elsep2=p1;p1=p1-next; /删除结点 if(p1!=NULL)/若找到结点,则删除if(p1=Worker) /若要删除的结点是第一个结点Worker=p1-next;delete p1; else /若要删除的结点是后续结点p2-next=p1-next;delete p1;cout找到并删除n; else /未找到结点cout未找到!n;在主界面中输入2,系统提示输入要删除的名字,

41、用户从键盘输入名字,系统便自动删除要删除的通讯录信息,并提示已经删除成功,如图4.3和4.4所示:图4.3 删除功能实现图4.4 显示找到并删除4.4显示功能显示功能要求:能够显示这些人员的全部信息。程序源代码如下:void Company:display() coutn* 公司人员本月工资和销售信息 *n; cout编号t姓名tt职位tt月工资tt销售额或工作时间Duty=3)sum+=(Sales *)p)-GetAmount(); p=p-next; p=Worker; double sum2=0; /工资总和 while(p) if(p-Duty=2)(SalesManager *)p

42、)-SetAmount(sum); /sum和sum2必须分开计算 p-Output(); sum2+=p-Earning; p=p-next; cout本月盈利:sum*0.20-sum2 (按照20利润计算)endl;/*设置基础数据*/void Company:Set()coutn* 设置基础数据 *n;cout经理固定月薪ManagerSalaryManagerSalary; cout销售经理固定月薪SalesManagerSalarySalesManagerSalary; cout销售经理提成SalesManagerPercentSalesManagerPercent; cout销售

43、人员提成SalesPercentSalesPercent;cout技术人员小时工资WagePerHourWagePerHour;cout=IDID;在主界面中输入3,显示通讯录中所有人信息。如图4.5所示:图4.5 显示功能实现4.5基础数据设置基础设置要求:对各类人员的基本信息进行初始设置。程序源代码如下:void Company:Load() /数据装入(包括基础数据,人员数据)/基础数据装入ifstream fBase; /建立文件输入流对象char buf80; /buf用于保存数据文件中的注释字符串fBase.open(base.txt,ios:in);fBasebufManager

44、Salary; /经理固定月薪fBasebufSalesManagerSalary; /销售经理固定月薪fBasebufSalesManagerPercent; /销售经理提成fBasebufSalesPercent; /销售人员提成fBasebufWagePerHour; /技术人员小时工资fBasebufID; /员工标识fBase.close(); /人员数据数据装入ifstream fPerson;Person *p=Worker;int No; char Name20; int Duty;double Amount,T;fPerson.open(person.txt,ios:in);

45、/读一条记录fPersonNoNameDuty;if(Duty=3)fPersonAmount;else if(Duty=4)fPersonT;while(fPerson.good()/创建员工结点switch(Duty)case 1:p=new Manager(No,Name,Duty); break;case 2:p=new SalesManager(No,Name,Duty); break;case 3:p=new Sales(No,Name,Duty,Amount); break;case 4:p=new Technician(No,Name,Duty,T); break;p-next

46、=0;/员工结点加入链表if(Worker) /若已经存在结点Person *p2;p2=Worker;while(p2-next) /查找尾结点p2=p2-next;p2-next=p; /连接else /若不存在结点(表空)Worker=p; /连接 /读下一条记录fPersonNoNameDuty;if(Duty=3)fPersonAmount;else if(Duty=4)fPersonT; fPerson.close(); coutn人员和基础数据已经装入.n;在主界面中输入4,显示需要设置的基础数据。如图4.6所示:图4.6 基础数据设置功能4.6查询功能查询功能要求:能根据编号和

47、姓名进行查询。查找函数通过输入查找方式,进一步输入编号和姓名,与原系统中存储的编号,姓名的比较,找到与输入相同的位置。程序源代码如下:void Company: Query()int No,a; char Name20; Person *p1,*p2; p1=Worker; coutn*查找员工*n; cout请选择查找方式:1 按编号查找 2 按姓名查找a; if(a=1) coutNo;/查找要修改的结点 while(p1) if(p1-No=No)break;elsep2=p1;p1=p1-next; else coutName;/查找要修改的结点Person *p1,*p2; p1=W

48、orker;while(p1)if(strcmp(p1-Name,Name)=0)break;elsep2=p1;p1=p1-next; p1-Output();在主界面中输入5后,选择查询方式,根据系统提示输入信息。例如,按编号查找,输入要找的编号。在系统没有要找信息时,系统会给出提示,如图4.7所示。系统中有符合所查询信息时,显示该人信息。如图4.8所示图4.7 查询功能(按编号查找)图4.8 查询功能(按姓名查找)4.7保存功能保存功能:启动程序时能读取人员信息,关闭程序时能将信息保存至硬盘文件。程序源代码如下:void Company:Save() /数据存盘(包括基础数据,人员数据)

49、,均采用文本文件ofstream fPerson,fBase; /定义文件输出流对象char c;coutc;if(c!=Y&c!=y)return;/保存人员编号、姓名、岗位fPerson.open(person.txt,ios:out); Person *p=Worker;while(p)fPersonNotNametDutyDuty=3)fPersonGetAmount()Duty=4)fPersonGetT()t;fPersonnext;fPerson.close();/保存基础数据fBase.open(base.txt,ios:out);fBase经理固定月薪tManagerSala

50、ryendl; fBase销售经理固定月薪tSalesManagerSalaryendl; fBase销售经理提成tSalesManagerPercentendl; fBase销售人员提成tSalesPercentendl; fBase技术人员小时工资tWagePerHourendl; fBaseIDtIDendl;fPerson.close();coutn保存人员和基础数据已经完成.n;在主界面中输入6,系统会将系统中所有人信息保存到文件如图4.9和4.10所示。图4.9 保存功能(1)图4.10 保存功能(2)4.8退出功能退出功能要求:编辑完毕后,退出此公司人员管理系统。在主界面中输入7,便可退出系统,如图4.1

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!