C++人事管理系统课程设计报告

合集下载

c人事管理课程设计

c人事管理课程设计

c 人事管理课程设计一、课程目标知识目标:1. 让学生理解并掌握人事管理的基本概念、原则和方法。

2. 使学生了解人事管理的组织结构、职能和运作流程。

3. 帮助学生掌握我国人事制度的基本政策和法规。

技能目标:1. 培养学生运用人事管理方法分析和解决实际问题的能力。

2. 提高学生在团队协作中的人际沟通和协调能力。

3. 培养学生运用现代信息技术进行人事数据管理和分析的能力。

情感态度价值观目标:1. 培养学生对人事管理工作的兴趣和热情,树立正确的职业观念。

2. 引导学生树立以人为本的管理理念,关注员工发展和企业社会责任。

3. 培养学生具备诚信、公正、负责的人事管理职业道德。

课程性质分析:本课程为人力资源管理专业核心课程,旨在帮助学生系统地掌握人事管理的基本知识和技能,为今后从事相关工作奠定基础。

学生特点分析:学生为高中年级学生,具有一定的学习能力和独立思考能力,对实际案例和情境具有较强的兴趣。

教学要求:1. 结合实际案例进行教学,提高学生的实践操作能力。

2. 鼓励学生参与讨论,培养学生的表达和沟通能力。

3. 强化政策法规教育,提高学生的法治意识。

4. 注重学生情感态度价值观的培养,促使学生全面发展。

二、教学内容1. 人事管理概述- 人事管理的定义、功能和目标- 人事管理的演变与发展趋势- 人事管理与人力资源管理的关系2. 人事管理的组织结构与职能- 人事部门的组织结构- 人事部门的职能和职责- 人事管理岗位设置与职责3. 人事管理的流程与方法- 员工招聘与选拔- 员工培训与发展- 绩效考核与激励- 薪酬福利管理- 劳动关系管理4. 我国人事制度与政策法规- 人事制度改革与发展- 基本人事政策与法规- 人事争议处理与预防5. 现代人事管理技术- 信息技术在人事管理中的应用- 人事数据管理与分析- 人力资源信息系统6. 人事管理案例分析- 国内外知名企业人事管理案例- 案例分析与讨论教学大纲安排:第一周:人事管理概述第二周:人事管理的组织结构与职能第三周:人事管理的流程与方法(一)第四周:人事管理的流程与方法(二)第五周:我国人事制度与政策法规第六周:现代人事管理技术第七周:人事管理案例分析教学内容根据课程目标和教学大纲进行安排,确保内容的科学性和系统性,使学生能够循序渐进地掌握人事管理的相关知识和技能。

人事管理系统c课程设计

人事管理系统c课程设计

人事管理系统c 课程设计一、课程目标知识目标:1. 让学生理解人事管理系统的基本概念,掌握其功能模块和操作流程。

2. 使学生掌握数据库管理的基本方法,能够运用SQL语句进行数据查询、插入、修改和删除。

3. 帮助学生了解人力资源管理的基本原则,结合实际案例进行分析。

技能目标:1. 培养学生运用C语言编写简单的人事管理系统功能模块的能力。

2. 培养学生具备数据库设计和操作的能力,能够根据实际需求创建数据库表、编写SQL语句。

3. 提高学生的团队协作能力,通过分组讨论、协作完成项目任务。

情感态度价值观目标:1. 培养学生对待人事管理系统开发的认真态度,注重程序规范和代码质量。

2. 培养学生对人力资源管理的兴趣,激发学生探讨实际问题的热情。

3. 引导学生树立正确的职业观,认识到人事管理系统在企业管理中的重要作用。

课程性质分析:本课程为实践性较强的课程,旨在让学生在掌握基本理论知识的基础上,通过实际操作,提高解决实际问题的能力。

学生特点分析:学生具备一定的C语言基础和数据库知识,但对人事管理系统的整体架构和实际应用尚不了解,需要通过本课程的学习,逐步提高。

教学要求:1. 结合实际案例,注重理论知识与实际操作相结合,提高学生的实践能力。

2. 采用任务驱动教学法,激发学生的学习兴趣,引导学生主动探索。

3. 强化团队合作,培养学生的沟通能力和协作精神。

二、教学内容1. 人事管理系统概述- 了解人事管理系统的基本概念、发展历程和实际应用场景。

- 分析人事管理系统的功能模块和业务流程。

2. 数据库基础- 复习数据库的基本概念,如表、字段、记录等。

- 掌握SQL语句的基本操作,包括数据查询、插入、修改和删除。

3. C语言编程实践- 运用C语言编写人事管理系统中的功能模块,如员工信息录入、查询、修改等。

- 学习如何使用C语言调用数据库接口,实现数据存取。

4. 人力资源管理基础知识- 了解人力资源管理的基本原则、方法和技巧。

人事管理c语言课程设计

人事管理c语言课程设计

人事管理c语言课程设计一、教学目标本课程旨在通过学习人事管理系统C语言编程,让学生掌握C语言的基本语法、数据结构、算法及面向对象编程思想,培养学生具备运用C语言解决实际问题的能力。

具体目标如下:1.知识目标:–掌握C语言的基本语法和编程规范;–理解并运用数据结构、算法解决编程问题;–学习面向对象编程,了解类和对象的概念及应用。

2.技能目标:–能够运用C语言编写简单的程序,解决实际问题;–熟练使用C语言开发工具,如编译器、调试器等;–掌握C语言编程的基本技巧,提高编程效率。

3.情感态度价值观目标:–培养学生的编程兴趣,激发创新精神;–培养学生团队合作、自主学习的良好学习态度;–使学生认识到计算机编程在现代社会的重要性,提高学生的信息素养。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法及面向对象编程。

具体安排如下:1.C语言基本语法:–变量、数据类型、运算符;–控制语句、函数、数组和字符串;–指针、结构体、共用体和位字段。

2.数据结构:–线性表、栈和队列;–链表、树和图。

–排序和查找算法;–递归算法;–动态规划算法。

3.面向对象编程:–类和对象的概念及创建;–继承、封装和多态;–常用类库和接口。

三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:教师讲解C语言的基本语法、数据结构、算法及面向对象编程的概念和原理,引导学生掌握编程知识。

2.讨论法:学生分组讨论编程问题,培养学生的团队合作精神和沟通能力。

3.案例分析法:通过分析实际案例,让学生了解编程在实际应用中的重要性,提高学生的信息素养。

4.实验法:安排实验室实践环节,让学生动手编写代码,培养学生的编程能力和实践能力。

四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料和实验设备。

1.教材:选用权威、实用的C语言编程教材,如《C程序设计语言》等。

2.参考书:提供相关领域的经典著作和优秀教材,如《C Primer Plus》等。

高校人事管理系统C 实验报告

高校人事管理系统C  实验报告

Protected: char name[20]; char sex[10]; int age; Public: setpersonnel(); personnelprint();
返聘时间类
Protected: int month; int year; int day; public: setretime(); retimeprint();
目录
第一章 需求分析.................................................................................................................2 第二章 总体设计.......................................................................................................................2
2.1 系统功能模块...............................................................................................................2 2.3 类之间的关系............................................................................................................. 2 2.3 类的关系图..................................................................................................................3 第三章 各功能模块实现...........................................................................................................4 3.1 模块实现及代码......................................................................................................... 4 3.2 运行结果.............................................................................................................13 第四章 系统调试.....................................................................................................................15 第五章 总结和体会.................................................................................................................15

人事管理系统c课程设计

人事管理系统c课程设计

人事管理系统c 课程设计一、课程目标知识目标:1. 让学生理解人事管理系统的基本概念和功能,掌握系统设计的基本原理;2. 使学生掌握数据库管理、数据查询和更新等基本操作;3. 帮助学生了解我国企事业单位人事管理的相关规定和流程。

技能目标:1. 培养学生运用所学知识设计简单的人事管理系统,具备实际操作能力;2. 提高学生分析问题、解决问题的能力,能够根据实际需求进行系统优化;3. 培养学生团队协作和沟通能力,能在项目中进行有效分工与合作。

情感态度价值观目标:1. 培养学生热爱祖国、热爱人民,树立为人民服务的意识;2. 培养学生具备责任心和敬业精神,养成良好的工作态度;3. 引导学生认识到信息技术在企事业单位人事管理中的重要作用,激发学生深入学习信息技术的兴趣。

课程性质分析:本课程为人事管理系统设计,结合信息技术和企事业单位实际需求,具有较强的实践性和应用性。

学生特点分析:学生为高年级学生,具备一定的信息技术基础和编程能力,对实际应用有较高的兴趣。

教学要求:1. 结合课本内容,注重理论与实践相结合,提高学生的实际操作能力;2. 重视团队协作,培养学生的沟通能力和协作精神;3. 关注学生情感态度价值观的培养,使学生在学习过程中形成正确的价值观。

二、教学内容1. 人事管理系统概述- 了解人事管理系统的定义、功能和发展历程;- 掌握人事管理系统在企事业单位中的应用。

2. 数据库管理基础- 学习数据库的基本概念、设计原则和SQL语言;- 掌握人事管理系统数据库的建立、维护和查询方法。

3. 人事管理系统模块设计- 分析人事管理系统的主要模块及其功能;- 学习系统设计的基本流程和方法,包括需求分析、模块划分、界面设计等。

4. 系统实现与测试- 掌握人事管理系统的编程实现,运用所学编程语言进行开发;- 学习系统测试方法,确保系统稳定可靠。

5. 企事业单位人事管理规范- 了解我国企事业单位人事管理的相关规定和流程;- 掌握人事管理系统在实际应用中的注意事项。

人事管理系统c课程设计

人事管理系统c课程设计

人事管理系统c 课程设计一、教学目标本课程旨在通过学习人事管理系统C的相关知识,使学生掌握以下知识目标:1.理解人事管理系统C的基本概念和组成部分;2.掌握人事管理系统C的主要功能和操作方法;3.了解人事管理系统C在现代企业管理中的应用和意义。

同时,通过实践操作和案例分析,培养学生以下技能目标:1.能够熟练操作人事管理系统C进行日常的人事管理;2.能够根据企业实际情况,进行人事管理系统的配置和优化;3.能够运用人事管理系统C进行人力资源数据的分析和决策。

在教学过程中,注重培养学生的情感态度和价值观,使学生:1.认识到人事管理系统C在提高企业效率和降低成本方面的重要性;2.培养学生对新技术的敏感度和积极学习的态度;3.培养学生团队合作和解决问题的能力。

二、教学内容本课程的教学内容主要包括以下几个部分:1.人事管理系统C的基本概念和组成部分;2.人事管理系统C的主要功能和操作方法;3.人事管理系统C在现代企业管理中的应用和意义;4.人事管理系统C的配置和优化方法;5.人事管理系统C的数据分析和决策应用。

教学过程中,将结合具体教材和案例,进行详细的讲解和操作演示,确保学生能够全面掌握相关知识。

三、教学方法为了提高教学效果和学生的参与度,本课程将采用多种教学方法:1.讲授法:通过讲解和案例分析,使学生掌握人事管理系统C的基本概念和主要功能;2.讨论法:通过小组讨论和分享,培养学生的思考和解决问题的能力;3.实验法:通过实际操作和模拟实验,使学生熟练掌握人事管理系统C的操作方法;4.案例分析法:通过分析真实案例,使学生了解人事管理系统C在实际企业管理中的应用。

四、教学资源为了支持本课程的教学,将准备以下教学资源:1.教材:选择适合的教材,为学生提供全面的知识体系;2.参考书:提供相关的参考书籍,丰富学生的知识视野;3.多媒体资料:制作教学PPT和视频资料,提高学生的学习兴趣;4.实验设备:准备计算机和相关设备,为学生提供实际操作的机会。

C++课程设计报告-人事管理系统

C++课程设计报告-人事管理系统
4•“系统封面构成”模块:
(1)系统时钟:在在设定的时间间隔内,系统封面显示达到或超过设定的显示时间,系统
封面会自动释放
(2)功能实现:进入主界面与退出系统。
6.
图模块框架图
7.系统数据分析
所有数据存放到access数据库文件下,由ado连接,通过程序按照要求显 示给用户。找到用户需要的数据。
二、系统设计
{
DataModule3->ADOQuery1->Next();
StatusBar1->Panels->Items[0]->Text="数据指向下一个";
}
void __fastcall TFmain::SpeedButton4Click (TObject *Sender)
{
DataModule3->ADOQuery1->Last();
}
void __fastcall TFmain::N9Click (T Object *Sender)
{
//帮助内容
ShowMessage("\
大家好,虽然只是一个简单的程序但是也要写帮助。\n\
简单的操作如下:\n\
一、打开程序。\n\
二、可以进行数据的添加、删除、浏览、查找\n\
三、关闭。\n\
Action=caNone;
}
void__fastcall TFmain::N10Click (T Object *Sender)
{
AboutBox->ShowModal() ; //显示关于对话框
}
void __fastcall TFmain::Button4Click (T Object *Sender)

人事管理系统c课程设计

人事管理系统c课程设计

人事管理系统c课程设计一、教学目标本课程旨在通过学习人事管理系统的设计与实现,使学生掌握人力资源管理的基本理论知识,培养学生运用计算机技术进行人事管理的能力。

具体目标如下:1.知识目标:(1)理解人力资源管理的基本概念、原则和方法。

(2)熟悉人事管理系统的基本功能和模块。

(3)掌握数据库设计、编程语言以及软件工程相关知识。

2.技能目标:(1)能够运用人力资源管理理论知识分析和解决实际问题。

(2)具备人事管理系统的设计和开发能力。

(3)学会使用相关编程工具和数据库管理系统。

3.情感态度价值观目标:(1)培养学生热爱祖国、为人民服务的情感态度。

(2)培养学生团结协作、积极进取的精神风貌。

(3)培养学生诚实守信、遵纪守法的良好品质。

二、教学内容本课程主要内容包括:人力资源管理基本理论、人事管理系统设计方法、数据库设计、编程语言以及软件工程相关知识。

具体安排如下:1.人力资源管理基本理论:介绍人力资源管理的基本概念、原则和方法,包括招聘、培训、考核、薪酬等方面。

2.人事管理系统设计方法:讲解人事管理系统的设计思路、流程和技巧,包括需求分析、系统设计、编码和测试等环节。

3.数据库设计:学习数据库的基本概念、设计方法和技巧,掌握数据库管理系统的基本操作。

4.编程语言:学习常用的编程语言,如Java、C++等,掌握基本的编程思想和方法。

5.软件工程:了解软件工程的原理和方法,学会使用相关的软件工程工具。

三、教学方法本课程采用多种教学方法,如讲授法、案例分析法、实验法等,以激发学生的学习兴趣和主动性。

具体方法如下:1.讲授法:通过讲解理论知识,使学生掌握基本概念和原理。

2.案例分析法:通过分析实际案例,使学生学会运用理论知识分析和解决实际问题。

3.实验法:通过动手实践,使学生掌握编程语言和数据库管理系统的基本操作。

四、教学资源本课程所需教学资源包括:教材、参考书、多媒体资料、实验设备等。

具体资源如下:1.教材:选用国内权威出版的教材,如《人力资源管理》、《数据库原理》等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、设计题目(问题)描述和要求1.题目:人事管理系统2.问题描述:某小型公司,主要有四类人员:经理、兼职技术人员、销售经理和兼职推销员。

现在,需要存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信息。

要求:(1)其中,人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。

(2)程序对所有人员有提升级别的功能(3)月薪的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成, 销售经理既拿固定月薪也领取销售提成。

(4)能按姓名或者编号显示、查找、增加、删除和保存各类人员的信息二、系统分析与模块设计根据问题描述和要求,系统要求能够按姓名或者编号显示、查找、增加、删除和保存各类人员的信息。

确定程序至少应该具备如下功能:“查询人员”、“增加人员”、“删除人员”、“数据存盘”基本模块。

系统既然具有“数据存盘”功能-人员数据可以保存到磁盘文件,那么也就意味着今后可以从磁盘文件读出人员数据,所以系统增加了“人员数据装入” 模块,以方便用户使用、避免数据重复录入。

考虑到系统实现简捷,人员数据文件采用文本文件,人员数据文件名:Person.txt 。

做为一个完整系统,除了具有增加人员,删除人员信息模块,还应该具有修改人员相关信息的功能,所以本系统设计时考虑增加“修改人员”模块。

考虑到根据编号查找人员信息功能在“删除人员” 、“修改人员”等模块都使用,所以可以考虑设置为一个模块。

考虑到系统要求人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。

这样就要求人员编号在增加人员时自动生成(增加1)且不重复。

根据这个要求,可以考虑设置一个全局量:“当前最大编号”,每增加一个人员,当前最大编号自动增1,然后新增加人员使用这个编号。

为了保证系统能记忆这个编号,可以使用一个数据文件保存当前这个编号。

系统每次开始运行前从文件读入这个编号,随着人员增加,编号自动增加,系统每次运行结束时将这个编号写入文件。

本系统将初值(没有一个用户时)设置为0。

考虑到人员的许多固定信息如:经理、销售经理的固定月薪,销售经理、销售人员提成,技术人员小时工资等都是一些不需要每个人员都要输入的信息,所以可以将这些信息都保存在一个数据文件中,本系统为了方便起见,将这些信息与“最大编号”全部保存在一个文件中,并使用“基础数据设置”模块进行设置和管理。

基础数据文件也采用文本文件,基础数据文件名:Base.txt 。

本系统还提供“查询本月经营信息”帮助计算销售总额,工资总额,并按照公式计算本月盈亏。

综合考虑系统具有下面8 项功能模块:增加人员,删除人员,修改人员,查询本月经营信息,基础数据设置,数据存盘,数据装入。

系统使用的数据文件格式如下:Base.txt:(格式:项目数据)经理固定月薪3000 销售经理固定月薪1000 销售经理提成%1 销售人员提成% 2 技术人员小时工资20ID 6Person.txt:(格式:编号,姓名,人员类别,其它数据,销售员销售额,技术人员工作小时)2 wang3 1000003 liu 14 wu 4 1005 huang 26 tao 3 150000注:人员类型编号1-经理;2-销售经理;3-销售员;4-技术人员三、系统设计1. 系统总体框架使用面向对象的程序设计思想进行分析,整个系统涉及两大类信息和操作,公司,人员。

所以系统主要涉及两个大类:公司类Company人员类Person。

系统的总体框架就是公司类,人员类的定义;主函数中定义一个公司对象,循环显 示主菜单并根据用户选择调用公司类的相应方法 (成员函数)。

⑴公司类Company 考虑系统操作的人员信息的数量具有不确定性,所以考虑 使用链表保存、处理人员信息。

公司类包含:所有人员信息的一个不带头结点的 链表(作为数据成员)及可以对人员信息进行增,删,改,查询经营信息,基础 数据设置,数据存盘,数据装入等操作的相关模块 (Add,Delete,Modify,Query,Set,Save,Load) 作为成员函数。

⑵人员类Person :所有人员都具有的公共信息及操作可以使用人员类进行描 述。

由于系统具有4类人员且4类人员数据,操作有所不同,如销售员包含销售 额,而技术人员包含工作小时数且计算工资的方法不同,所以应当为4类人员创 建相应的Person 类的派生类。

(3)为了使公司类可以方便处理人员信息,可以考虑将公司类确定为人员类的友 元类或者人员类提供公共的方法以便公司类进行操作。

为了公司类可以用共同方法操作人员类,可以将人员类的方法确定为虚函数。

2. 类的层次图Person{ No,Name,Duty,Earni ng, next,Perso n( ),CalcSalary(),Output()} 其中:(1) Person 类的No-人员编号,Name 人员姓名,Duty-人员类别,Earning-工 资,next-指向下一个人员的指针;Person 类的CalcSalary() ,Output()定义为 纯虚函数分别表示要计算人员工资和输出人员信息 ,由于定义纯虚函数,所以 Person 是抽象类,具体计算工资,输出人员信息由派生类完成。

(2) 各个派生的类,包含本类对象特有的数据,Sales::Amount-销售员销售额, { Ma nager(), {Amou nt, {Amou nt, { t, CalcSalary(), Sales(),GetAmou nt(), SalesMa nager(), Tech nician(),Output()}SetAmou nt(), SetAmou nt(), GetT(),SetT(), CalcSalary(), CalcSalary(), CalcSalary(), Output()} Output()} Output()}Tech ni cia nSalesManager::Amount-销售经理的总销售额(系统统计各个销售员销售额得到销售经理的总销售额),Technician::t- 技术人员工作小时数。

Compa ny{Person *Worker,Clear(),Compa ny(),~Compa ny(),Add(),Delete(),Modify(),Query(),Set(),Save(),Load()}其中:(1)Worker就是人员链表。

(2)Clear()用于清除人员链表所有结点。

(3)Add(),Delete(),Modify(),Query(),Set(),Save(),Load() 分别表示系统各个功能模块:增加人员,删除人员,修改人员,查询本月经营信息,基础数据设置,数据存盘,数据装入。

3. 系统关键算法流程图(1)主函数流程⑵ Compa ny::Add()⑶ Compa ny::Delete()开始输入员工ID⑷ Compa ny::Modify输入员工ID(5) Compa ny::Query()遍历统计销售额J遍历统计工资总额计算盈亏打印本月经营信息结束(6)Company::Save()(7) Compa ny::Load()四、源程序清单参见附录五、系统测试(列出各功能具体的输入数据及对应的输出结果,说明其是否符合设计要求)六、小结(设计过程心得体会)附录:/*本程序有关的两个数据文件:base.txt-基础数据文件(必须存在,且按规定格式保存)person .txt —人员信息文件(可选)*/ #include <iostream.h>#include <fstream.h>#include <ctype.h>#include <string.h> //全局数据,对象double ManagerSalary; //经理固定月薪double SalesManagerSalary; //销售经理固定月薪double SalesManagerPercent; 销// 售经理提成% double SalesPercent; //销售人员提成% class Person //员工类{ protected:int No; //编号char Name[20]; //姓名int Duty; //岗位double Earning; //收入Person *next;public:Person(char ID,char *Name,int Duty){this->Duty=Duty;strcpy(this->Name,Name);this->No=ID;}virtual void CalcSalary()=0;virtual void Output()=0;friend class Company;};class Manager:public Person //经理类{public:Manager(char ID,char *Name,int Duty):Person(ID,Name,Duty){} voidCalcSalary(){Earning=ManagerSalary;}void Output(){CalcSalary(); cout<<No<<"\t"<<Name<<"\t 经理 \t"<<Earning<<endl;}};class SalesManager:public Person //销售经理类{private:double Amount;public:double WagePerHour; int ID; //技术人员小时工资//员工标识 (要保证唯一 )SalesManager(char ID,char *Name,int Duty):Person(ID,Name,Duty){} voidSetAmount(double s){Amount=s;}void CalcSalary(){Earning=SalesManagerSalary+Amount*SalesManagerPercent/100;}void Output(){CalcSalary(); cout<<No<<"\t"<<Name<<"\t 销售经理\t"<<Earning<<endl;}};class Technician:public Person //技术员类{private:double t;public:Technician(char ID,char *Name,int Duty,double T):Person(ID,Name,Duty){ this->t=T;}double GetT(){return t;}void SetT(double T){this->t=T;}void CalcSalary(){Earning=WagePerHour*t;}void Output(){ CalcSalary(); cout<<No<<"\t"<<Name<<"\t 技术员\t"<<t<<"\t"<<Earning<<endl;}};class Sales:public Person // 销售员类{private:double Amount;public:Sales(char ID,char *Name,int Duty,double Amount):Person(ID,Name,Duty) {this->Amount=Amount;}double GetAmount(){return Amount;}void SetAmount(double Amount){ this->Amount=Amount;}void CalcSalary(){ Earning=SalesPercent/100*Amount;}void Output(){CalcSalary(); cout<<No<<"\t"<<Name<<"\t 销售员\t"<<Amount<<"\t"<<Earning<<endl;}};class Company //公司类{private:Person *Worker; //员工表void Clear(); //清除内存中数据public:Company(){Worker=0;Load();}~Company(){Person *p;p=Worker;while(p){ p=p->next; delete Worker; Worker=p;}Worker=0;}void Add(); //增加人员void Delete(); //删除人员void Modify(); //修改人员void Query(); //查询人员void Set(); //基础数据设置void Save(); //数据存盘(包括基础数据,人员数据) void Load(); //数据装入(包括基础数据,人员数据) };void Company::Clear() //清除内存中人员数据(内部使用) { Person* p=Worker;while(p){Worker=p->next;delete p; p=Worker;}}void Company::Add()Person *p; //新结点指针int Duty;char Name[20];double Amount,T;cout<<"\n** 新增员工**\n";//输入员工信息ID++;coutvv"输入岗位(1-经理2-销售经理3-销售员4-技术员):";cin>>Duty; cout«"输入姓名:";cin>>Name;if(Duty==3){cout«"本月销售额:";cin>>Amount;}else if(Duty==4){coutvv"本月工作小时数(0-168):";cin>>T;}//创建新员工结点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,T); break;}p->next=0;//员工结点加入链表if(Worker) //若已经存在结点{Person *p2;p2=Worker;while(p2->next) //查找尾结点{p2=p2->next;}p2->next=p; //连接}else //若不存在结点(表空){Worker=p; //连接}void Company::Delete() //删除人员{int No; cout<<"\n** 删除员工**\n"; cout<<"ID:"; cin>>No;//查找要删除的结点Person *p1,*p2; p1=Worker; while(p1){ if(p1->No==No) break;else{ p2=p1; p1=p1->next;}}//删除结点if(p1!=NULL)// 若找到结点,则删除{ if(p1==Worker) //若要删除的结点是第一个结点{Worker=p1->next; delete p1;}else // 若要删除的结点是后续结点{ p2->next=p1->next; delete p1;} coutvv"找到并删除\n";}else //未找到结点cout«"未找到!\n";}void Company::Modify()int No,Duty;char Name[20];double Amount,T;cout<<"\n** 修改员工**\n"; cout<<"ID:"; cin>>No;//查找要修改的结点Person *p1,*p2; p1=Worker; while(p1){if(p1->No==No)break;else{p2=p1; p1=p1->next;}}//修改结点if(p1!=NULL)// 若找到结点{p1->Output();cin>>Duty; coutvv"调整岗位(1-经理2-销售经理3-销售员4-技术员):";if(p1->Duty!=Duty) //若岗位发生变动{ //修改其它数据cout«"输入姓名:";cin>>Name; if(Duty==3){cout«"本月销售额:";cin>>Amount;}else if(Duty==4){coutvv"本月工作小时数(0-168):"; cin>>T;}//创建新员工结点Person *p3;switch(Duty){case 1:p3=new Manager(p1->No,Name,Duty); break;case 2:p3=new SalesManager(p1->No,Name,Duty); break; case3:p3=new Sales(p1->No,Name,Duty,Amount); break;case 4:p3=new Technician(p1->No,Name,Duty,T); break;}//员工结点替换到链表p3->next=p1->next;if(p1==Worker) //若要替换的结点是第一个结点Worker=p3;else //若要删除的结点是后续结点p2->next=p3;//删除原来的员工结点delete p1;}else // 若岗位没有变动{coutvv"输入姓名:";cin>>p1->Name;if(Duty==3){cout«"本月销售额:";cin»Amount; ((Sales *)p1)->SetAmount(Amount);}else if(Duty==4){cout«"本月工作小时数(0-168):";cin»T; ((Technician *)p1)->SetT(T);}}cout«"修改成功!\n";}else //未找到结点cout«"未找到!\n";}void Company::Query(){cout<<"\n** 查询人员本月销售信息**\n";double sum=0; //销售额总和Person *p=Worker;while(p){if(p->Duty==3)sum+=((Sales *)p)->GetAmount(); p=p->next;}p=Worker;double sum2=0; //工资总和while(p){if(p->Duty==2)((SalesManager *)p)->SetAmount(sum);p->Output(); sum2+=p->Earning; p=p->next;}cout«"本月盈利:"v<sum*0.20-sum2v<endl;coutvv"(按照20%利润计算)\n";}void Company::Set(){cout<<"\n** 设置基础数据**\n";cout«"经理固定月薪["<<ManagerSalaryvv"元]:"; cin>>ManagerSalary;cout«"销售经理固定月薪["«SalesManagerSalaryvv'元]:";cin>>SalesManagerSalary;coutvv"销售经理提成["vvSalesManagerPercent<<% ]:";cin>>SalesManagerPercent;coutvv"销售人员提成["vvSalesPercent<<"%]:"; cin>>SalesPercent;coutvv"技术人员小时工资["v<WagePerHourvv"(元/小时)]:";cin>>WagePerHour;coutvv"员工标识[>="vv|Dvv"]:";cin>>ID;}void Company::Save() //数据存盘(包括基础数据,人员数据),均采用文本文件{ofstream fPerson,fBase;char c;coutvv"\n 保存人员和基础数据,是否继续?[Y/N]:"; cin>>c;if(toupper(c)!='Y')return;//保存人员编号、姓名、岗位fPerson.open("person.txt",ios::out);Person *p=Worker;while(p){fPersonvvp->Novv"\t"vvp->Namevv"\t"vvp->Dutyvv"\t";if(p->Duty==3) fPerson<<((Sales*)p)->GetAmount()<<"\t";else if(p->Duty==4)fPerson<<((Technician *)p)->GetT()<<"\t"; fPerson<<endl;p=p->next;}fPerson.close();//保存基础数据fBase.open("base.txt",ios::out);fBase«"经理固定月薪 \t"v<ManagerSalaryvvendl;fBase«"销售经理固定月薪 \t"<<SalesManagerSalaryvvendl; fBase«"销售经理提成% \t"<<SalesManagerPercent<<endl; fBasevv"销售人员提成%\t"<<SalesPercent<<endl;fBasevv"技术人员小时工资 \t"v<WagePerHourv<endl; fBasevv"ID\t"vvIDvvendl; fPerson.close();coutvv"\n 保存人员和基础数据已经完成 ...\n";}void Company::Load() //数据装入 (包括基础数据,人员数据 ) {//基础数据装入ifstream fBase;char buf[80]; //buf 用于保存数据文件中的注释字符串fBase.open("base.txt",ios::in);fBase>>buf>>ManagerSalary; //经理固定月薪fBase>>buf>>SalesManagerSalary; //销售经理固定月薪fBase>>buf>>SalesManagerPercent; /销/ 售经理提成%fBase>>buf>>SalesPercent; fBase>>buf>>WagePerHour; fBase>>buf>>ID; fBase.close();//清除内存人员数据Clear();//人员数据数据装入ifstream fPerson;Person *p=Worker;int No; char Name[20]; int Duty;double Amount,T;fPerson.open("person.txt",ios::in);//读一条记录 fPerson>>No>>Name>>Duty; if(Duty==3)fPerson>>Amount; else if(Duty==4)fPerson>>T;while(fPerson.good()){//创建员工结点//销售人员提成% //技术人员小时工资 //员工标识switch(Duty){case 1:p=new Manager(No,Name,Duty); break; case 2:p=newSalesManager(No,Name,Duty); break; case 3:p=newSales(No,Name,Duty,Amount); break; case 4:p=newTechnician(No,Name,Duty,T); break;}p->next=0;//员工结点加入链表if(Worker) //若已经存在结点{Person *p2;p2=Worker;while(p2->next) //查找尾结点{ p2=p2->next;}p2->next=p; //连接}else //若不存在结点(表空){Worker=p; // 连接}//读下一条记录fPerson>>No>>Name>>Duty; if(Duty==3)fPerson>>Amount; else if(Duty==4)fPerson>>T;}fPerson.close();cout<<"\n 人员和基础数据已经装入...\n";void main(){char c;Company a;do{cout<<"\n*** 公司人员管理系统 ***\n";cout<<"1 —增加人员 \n";cout<<"2 —删除人员 \n";cout<<"3 —修改人员 \n";cout<<"4 —查询本月经营信息\n";cout<<"5 —基础数据设置\n";cout<<"6 —数据存盘 \n";cout<<"7 —数据装入 \n";cout<<"8 —退出 \t 请选择(1-8):";cin>>c; switch(c)a.Add(); break; a.Delete();break; a.Modify();break; a.Query(); break; a.Set(); break; a.Save(); break; a.Load(); break; } }while(c!='8'); { case '1' case '2' case '3' case '4'case '5'case '6'case '7'。

相关文档
最新文档