1010420126 肖树林 面向对象程序设计
面向对象程序设计

1.1 面向对象程序设计概述
•在程序的实施过程中,由于大型系统必须由 多人合作完成,各人或各小组完成程序中的 一个或几个模块,如何划分任务、估计和分 配资源、掌握每个程序员的进度等就构成了 进行大型系统设计时管理的复杂性,另外, 即使每个人或小组所设计的模块都无可挑剔, 但将这些模块整合在一起时未必不会出现问 题,因此如何权衡模块内聚度和模块间的耦 合度,也是编程人员必须面对的问题之一。
1.1 面向对象程序设计概述
简单的说,通过使用面向对象的方法可以把 一组看似相互之间毫无联系的对象有效地集成在 一起,这些对象都包含代表各自特征的数据以及 对数据的操作即对象的行为。通过面向对象方法, 可以把与该对象相关的数据和操作封装在一个相 对独立的实体中,该实体有自己的功能和特征, 它也可以采用某种机制与外界交互。
1.1 面向对象程序设计概述
面向对象设计方法追求的是现实问题空 间与软件系统解空间的近似和直接模拟。它 希望用户用最小的力气,最大限度地利用软 件系统进行求解。
在具体学习OOP之前,请先注意一下两 点:
记忆的特征或数据,这些特征或数据能反映对象的基本性质。 找出对象和类中存在的各种整体-部分结构和一般-特殊结构,并进一步确定这些结构组合而成的多重结构。
的处理这些系统状态以及中间状态、组织高 这种环境最主要的特征就是以对象作为程序的主要单位,它将数据及对这些数据的操作功能以及与其他对象的通信的能力都封装在了
面向对象程序设计

面向对象程序设计⏹结构化程序设计的基本内容:1.结构的类型:顺序、分支、循环2.结构化程序设计思想:利用过程或函数来抽象和模拟客观现实。
3.结构化程序设计方法:1)重点放在如何实现细节过程方面,将数据与函数分开。
2)形式:主模块+若干个子模块(如C:main()+子函数)。
4.特点:自顶向下,逐步求精——功能分解。
5.缺点:效率低,是手工作坊式的编程。
6.结构化程序的问题——数据与算法分离,程序数据和操作数据的函数是分离的。
⏹面向对象程序设计观点:1.自然界是由各种各样的实体(对象)所组成,每种对象都有自己的内部状态和运动规律,不同对象之间的相互联系和相互作用就构成了各种不同的系统,进而构成整个客观世界。
2.程序设计方法:使用面向对象的观点来描述模仿并处理现实问题。
3.要求:高度概括、分类和抽象。
4.目的:实现软件设计的产业化。
5.基本概念:1)对象:用来描述客观事物的一个实体,它是构成系统的一个基本单元。
一个对象具有一组属性和行为。
实体对象*一台计算机抽象对象*一项计划2)对象构成要素:对象标识符:是对象的名称,用来区别于其他对象。
属性:是用来描述对象静态特征的一个数据项。
行为:是用来描述对象动态特征和行为的操作。
3)消息(Message)用于描述事件发生的信息。
消息是对象之间发出的行为请求。
多个消息构成一个事件(Event)。
对象之间通过传递消息相互影响。
对象示例:一个“学生”对象的例子对象名:学生属性:学号:123456姓名:令狐冲年龄:18专业:信管行为:修改学号、姓名、专业、年龄等等对象示例:一个“课程”对象的例子:对象名:课程属性:课程号:123456课程名:程序设计任课教师:莫名选课要求:学时:48行为:获取并修改课程名、课程号、学时数、选课要求、任课教师等4)类:是具有相同属性和行为的一组对象的集合,它为属于该类的全部对象提供统一的抽象描述,是对象集合的再抽象。
5)类和对象的关系:类(抽象定义)<->对象(实例)6)类<->对象举例学生<->学生王强课程<->C++程序设计类型<->变量,如C语言中的int和int x;7)类的实例——用类定义的类变量,即对象。
《面向对象程序设计》教案

《面向对象程序设计》教案一、教案简介本教案旨在帮助学生掌握面向对象程序设计的基本概念、原理和方法,培养学生的编程能力和软件开发思维。
通过本课程的学习,学生将能够熟练运用面向对象的编程语言,如Java或C++,进行软件开发和设计。
二、教学目标1. 了解面向对象程序设计的基本概念,如类、对象、封装、继承和多态等。
2. 掌握面向对象程序设计的基本原则,如单一职责原则、开闭原则、里氏替换原则等。
3. 学会使用面向对象的编程语言进行程序设计和开发。
4. 培养学生的软件开发思维和团队协作能力。
三、教学内容1. 面向对象程序设计的基本概念1.1 类与对象1.2 封装1.3 继承1.4 多态2. 面向对象程序设计的基本原则2.1 单一职责原则2.2 开闭原则2.3 里氏替换原则2.4 接口隔离原则2.5 依赖倒置原则3. 面向对象的编程语言3.1 Java3.2 C++4. 面向对象的设计模式4.1 创建型模式4.2 结构型模式4.3 行为型模式四、教学方法1. 讲授法:讲解面向对象程序设计的基本概念、原理和编程方法。
2. 案例分析法:分析实际项目中的面向对象设计案例,让学生理解并掌握面向对象的设计思想。
3. 实践操作法:让学生通过编写代码,亲身体验面向对象程序设计的流程和方法。
4. 小组讨论法:分组进行讨论,培养学生的团队协作能力和解决问题的能力。
五、教学评价1. 课堂参与度:评估学生在课堂上的发言和提问情况,了解学生的学习兴趣和积极性。
2. 课后作业:布置相关的编程作业,检查学生对面向对象程序设计知识的掌握程度。
3. 项目实践:评估学生在团队项目中的表现,包括代码质量、设计思路和团队协作能力。
4. 期末考试:全面测试学生对面向对象程序设计知识的掌握情况。
六、教学资源1. 教材:推荐《Java面向对象程序设计》、《C++ Primer》等经典教材。
2. 在线资源:提供相关的在线教程、视频课程和编程练习平台,如慕课网、Coursera、LeetCode等。
《 面向对象程序设计》课程设计实验报告

《面向对象程序设计》课程设计实验报告指导教师小组成员:专业班级: 2010级计算机科学与技术专业开设时间:2011-2012(一)目录1.任务1 (2)1.1 任务介绍 (2)1.2 小组成员任务分配 (2)1.3.1设计思想及主要流程图 (2)1.3.1主要程序清单 (2)1.3.1 运行结果及分析 (4)1.3.2设计思想及主要流程图 (2)1.3.2主要程序清单 (2)1.3.2 运行结果及分析 (4)1.3.3设计思想及主要流程图 (2)1.3.3主要程序清单 (2)1.3.3 运行结果及分析 (4)2.任务2 (2)2.1 任务介绍 (2)2.2 小组成员任务分配 (2)2.3设计思想及主要流程图 (2)2.3主要程序清单 (2)2.3 运行结果及分析 (4)3收获、体会和建议 (4)任务1.按照要求设计类 1.根据输出设计类设计类就是根据数据封装的要求,抽象出适合的类。
有如下测试程序和测试程序的输出结果,要求设计类Welcome 。
void main() { Welcome we; Welcome you(we); you.Display();you.Set(“Thank you.”);cout<<you.Get()<<endl; you.talk(); you.Display();}测试程序的输出结果如右: 设计类Welcome 的原则 1)在头文件Cpp1.h 中声明类 2)在Cpp1.cpp 中实现类3)使用内联函数定义Display()函数2.使用类改写程序编写一个求方程02=++c bx ax 的根的程序,用三个函数分别求当ac b 42+大于零、等于零和小于零时方程的根。
要求从主函数输入a 、b 、c 的值并输出结果。
使用面向过程的解法一般是把变量设为double 型,适用库函数cmath 进行计算。
请注意:使用面向对象的方法解决这个问题,首先要从解一元二次方程出发,抽象一个代表一元二次方程的类。
面向对象程序设计课程描述

面向对象程序设计课程描述一、课程概述面向对象程序设计是计算机科学中的一个重要分支,它是一种编程范式,通过把数据和操作封装在对象中,实现程序的模块化和复用。
本课程旨在帮助学生掌握面向对象程序设计的基本概念、原则和技术,并能够运用所学知识设计、实现和维护高质量的面向对象程序。
二、课程内容1. 面向对象基础介绍面向对象编程的基本概念,包括类、对象、继承、多态等。
讲解如何使用类定义数据类型,并通过封装、继承和多态等机制来实现代码复用和灵活性。
2. 面向对象设计原则介绍常见的面向对象设计原则,包括单一职责原则、开放封闭原则、里氏替换原则等。
讲解如何根据这些原则进行系统架构设计和代码编写。
3. 面向对象分析与设计介绍面向对象分析与设计方法,包括UML建模语言和常用建模工具。
讲解如何使用UML图形化表示系统需求和结构,并通过UML类图来描述系统组成部分及其相互关系。
4. 面向对象编程语言介绍面向对象编程语言的特点和常见语言的使用,包括Java、C++、Python等。
讲解如何使用这些语言实现面向对象程序设计,并介绍常用的开发工具和框架。
5. 面向对象设计模式介绍常见的面向对象设计模式,包括工厂模式、单例模式、观察者模式等。
讲解如何根据不同场景选择合适的设计模式,并通过实例演示如何应用。
三、教学方法1. 理论讲授老师将通过课堂讲解和PPT展示,系统全面地介绍课程内容和案例分析,帮助学生理解相关概念和原理。
2. 实践操作课程中将安排一定量的编程实践环节,帮助学生巩固所学知识并提高编程能力。
实践环节将涉及到面向对象程序设计的各个方面,包括类定义、封装、继承、多态等。
3. 课程项目本课程将安排一个小型项目作为期末考核,要求学生运用所学知识完成一个具有一定规模和复杂度的面向对象程序,并在最后一次课堂上进行演示和评分。
四、评分方式1. 平时成绩包括课堂出勤、作业完成情况、实验报告等,占总成绩的30%。
2. 期中考试考察学生对课程内容的掌握程度,占总成绩的30%。
《面向对象程序设计》知识点

《面向对象程序设计》知识点《面向对象程序设计》是计算机科学中的重要概念,它是一种软件开发方法,将软件模型作为一个系统的集合来设计、分析和实现。
本文将重点介绍面向对象程序设计中的关键知识点,包括面向对象的基本概念、类与对象、继承与多态、封装和抽象等内容,以便读者全面了解和掌握面向对象程序设计的核心概念和方法。
一、面向对象的基本概念1. 面向对象编程的起源:面向对象编程(Object-Oriented Programming,简称OOP)起源于20世纪60年代,是一种基于对象的软件开发范式,它将数据和操作数据的方法组合到一个对象中,以及通过对象之间的交互来完成程序的设计。
2. 面向对象的特征:面向对象的程序设计具有封装、继承和多态的特征。
封装指的是将数据和处理数据的方法封装在对象中,继承指的是子类可以继承父类的属性和方法,多态指的是同一操作作用于不同对象上时可以有不同的行为。
3. 面向对象的优势:面向对象的程序设计具有代码复用性高、可维护性强、扩展性好、可靠性高等优势,可以提高程序的设计效率和质量。
二、类与对象1. 类的定义:类是一种抽象数据类型,用来描述具有相同属性和行为的对象的集合。
类用来创建对象的模板,包含数据成员和成员函数。
2. 对象的创建:对象是类的一个实例,是具体的数据和行为的封装体。
通过类实例化,可以创建多个对象来表示真实世界的实体。
3. 类的成员:类包含数据成员和成员函数。
数据成员表示对象的属性,成员函数表示对象的行为,可以进行数据的操作和处理。
三、继承与多态1. 继承:继承是指一个新类从现有类中派生出来,并且拥有现有类的属性和行为。
继承可以实现代码的复用,并且可以建立类之间的关系。
2. 多态:多态是指同一操作作用于不同对象上时可以有不同的行为。
多态通过虚函数和动态绑定实现,可以使程序具有更好的灵活性和扩展性。
四、封装和抽象1. 封装:封装是指将数据和数据的操作封装在类的内部,外部无法直接访问和修改类的数据。
面向对象程序设计

面向对象程序设计面向对象程序设计(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计软件。
对象可以包含数据(通常称为属性)和代码(通常称为方法或函数)。
面向对象程序设计的核心概念包括封装、继承、多态和抽象。
封装封装是将数据(属性)和操作这些数据的方法(行为)绑定在一起的过程。
封装的目的是隐藏对象的内部状态和实现细节,只暴露出一个可以被外界访问的接口。
这样,对象的使用者不需要了解对象内部的复杂性,只需要通过公共接口与对象交互。
继承继承是一种机制,允许新创建的类(子类)继承现有类(父类)的属性和方法。
这使得代码重用变得可能,同时也支持层次结构的创建。
子类可以扩展或修改父类的行为,但通常保持父类的大部分功能。
多态多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
在面向对象编程中,多态性通常是通过方法重载(同一个类中多个同名方法,参数不同)和方法重写(子类重写父类的方法)实现的。
抽象抽象是简化复杂的现实世界问题的过程,只关注对于当前目标重要的方面,忽略不相关的细节。
在面向对象编程中,抽象通常是通过创建抽象类和接口来实现的。
抽象类可以包含抽象方法,这些方法没有具体的实现,必须由子类提供。
类和对象类是创建对象的蓝图或模板,定义了对象的结构和行为。
对象是根据类创建的实例,具有类定义的属性和方法。
每个对象都是唯一的,即使它们是同一个类的实例。
面向对象设计原则在面向对象设计中,有几个关键的设计原则,如单一职责原则、开放-封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则等。
这些原则帮助开发者创建灵活、可维护和可扩展的系统。
面向对象的优势- 代码重用:通过继承和多态性,可以减少代码重复。
- 易于维护:封装和抽象使得修改系统的一部分不会影响其他部分。
- 模块化:系统被分解为独立的模块,每个模块负责特定的功能。
- 可扩展性:系统可以容易地扩展新功能,而不需要重写现有代码。
1010420126 肖树林 面向对象程序设计

课程设计2011 ~ 2012学年第二学期设计题目职工工资管理系统设计院(系)计算机科学与信息工程系专业软件工程班级 10104201 学号 1010420126学生姓名肖树林设计时间2012年 6 月 25 日——2012 年 6 月 29 日指导教师程海英提交日期 2012年6月29日上海应用技术学院课程设计任务书二.程序具体程序流程图员工类: Class Employees销售人员类: Class Saleman;秘书类:Class Secretary;经理类:Class Manager;技术经理类:Class TechManager;销售经理类:Class salesManager;三.程序架构详细说明1.首先我们编程针对的是面向对象思维,所以这对于我们如何管理整个程序结构是有很高的难度。
先设计员工类,员工类里有姓名,职务,编号和月薪属性,外加员工输入信息函数和将信息写入文件函数以及一个没有实现的计算月薪的函数。
属性有GET和SET 方法。
员工信息函数我主要采用的是文件输入输出流的形式。
文件函数主要采用一个面向对象里的一个集合的方式,用循环遍历的方法将集合里的对象全部读出来,然后依次将各种信息存入文件。
由于每个对象的月薪计算方法不一样,所以它没有实现,只让派生类生成的对应的方法去覆盖它。
以上主要是针对员工类。
2.普通员工类主要是继承了员工类,像秘书类,技术工人类,销售人员类,经理类都是采用了这样的方法,唯一的不同是各种不同的类的职能不同导致他们取得的月薪方法不一样,所以月薪方法要重写。
月薪方法也是采用输入输出流的方式与客户交流,使得程序富有弹性。
但是对于销售经理我们要注意的是他是按照其他销售人员的每月销售总额来确定自己最终的月薪的,所以这里要先对集合VECTOR里的所有对象循环遍厉一遍,找出所有的销售员工,将他们的销售总额想加,这是特别要注意的地方。
3.对于如何调用和初始化各种类,这主要关系到函数的入口(主函数)的设计。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计2011 ~ 2012学年第二学期设计题目职工工资管理系统设计院(系)计算机科学与信息工程系专业软件工程班级 10104201 学号 1010420126学生姓名肖树林设计时间2012年 6 月 25 日——2012 年 6 月 29 日指导教师程海英提交日期 2012年6月29日上海应用技术学院课程设计任务书二.程序具体程序流程图员工类: Class Employees销售人员类: Class Saleman;秘书类:Class Secretary;经理类:Class Manager;技术经理类:Class TechManager;销售经理类:Class salesManager;三.程序架构详细说明1.首先我们编程针对的是面向对象思维,所以这对于我们如何管理整个程序结构是有很高的难度。
先设计员工类,员工类里有姓名,职务,编号和月薪属性,外加员工输入信息函数和将信息写入文件函数以及一个没有实现的计算月薪的函数。
属性有GET和SET 方法。
员工信息函数我主要采用的是文件输入输出流的形式。
文件函数主要采用一个面向对象里的一个集合的方式,用循环遍历的方法将集合里的对象全部读出来,然后依次将各种信息存入文件。
由于每个对象的月薪计算方法不一样,所以它没有实现,只让派生类生成的对应的方法去覆盖它。
以上主要是针对员工类。
2.普通员工类主要是继承了员工类,像秘书类,技术工人类,销售人员类,经理类都是采用了这样的方法,唯一的不同是各种不同的类的职能不同导致他们取得的月薪方法不一样,所以月薪方法要重写。
月薪方法也是采用输入输出流的方式与客户交流,使得程序富有弹性。
但是对于销售经理我们要注意的是他是按照其他销售人员的每月销售总额来确定自己最终的月薪的,所以这里要先对集合VECTOR里的所有对象循环遍厉一遍,找出所有的销售员工,将他们的销售总额想加,这是特别要注意的地方。
3.对于如何调用和初始化各种类,这主要关系到函数的入口(主函数)的设计。
我先初始化一个集合里面的VECTOR,然后再做一个功能菜单,然后通过输入的字符串判定应调用什么功能,再依次来实例化各种类和调用相应的功能来实现程序。
整个过程是循环进行的,当我们选择了退出函数,即函数退出。
4.程序运行情况:输入数据:2.查询信息:3.存取数据四.对于程序的进一步设想我的主要设想是:我存储信息的方式主要是采用文件来处理的,虽然能够很好得存储和进行查询输入输出(我查询的主要方式是通过遍历集合VECTOR中的对象实现的),但是我很好奇我们是否能用数据库来实现呢?这对于数据的保存更新查询有重大作用。
而且数据库是一种很流行的软件,如果一个程序能够连接数据库,那它的实用性会更高。
思路如下:通过调用数据库的接口联系,在存信息的函数中去连接数据库。
由于时间的关系,我只能通过有限的自学JA V A知识,我只能做到这一步,打算在今后的学习当中再去实现。
五.程序的不足之处由于我采用的是JA V A语言,我们都知道JA V A不善于程序界面上的操作,它的强大功能主要在于服务器的运用,所以我没有采用界面,而是直接采用了命令行的方式。
或许这对于操作员来说不是很上手,但是我已经把命令行做得很人性化了。
希望能弥补没有界面带来的不足之处。
六.心得体会首先我想说这次编程让我明白了一个道理:要很好得理解面向对象思想,必须经常去编程,实践才是关键!这次面向对象思想编程让我很好得再一次理解了什么是面向对象,解决了很多思想上的问题。
在编程过程中我也遇到过很多棘手的问题,比如输入输出流,文件处理。
幸好我课余时间很好地利用了工具书才能帮我很多,给我提升了很大的信心。
这次编程我很高兴JA V A中有集合这种类,它结合了数据结构的特点,又有数组的影子,让我大大减少了编程过程中遇到的各种困难。
说实话,我很感谢JA V A,感谢面向对象。
其实编程并不是件难事,语法不是问题,思想有了,程序也就出来了,是我很大的心得体会。
七.软件使用说明该软件必须在装有Java运行环境的平台上运行,像JDK1.6,eclipse整套最好都能安装上。
该软件是在命令行的方式下运行。
运行程序时,注意看提示语操作。
八.软件参考文献和源程序代码(1)《面向对象程序设计》,郑莉,清华大学出版社,(2)《面向对象程序设计Java语言》,朱战立等编西安电子科技大学出版社(3)《面向对象程序设计----Java》,刘斌等编, 清华大学出版社(4)《面向对象程序设计----Java语言描述》, Richard Johnson Baugh(美)等著,蔡宇辉等译,机械工业出版社,2003源程序显示:package ProgressStart;import java.io.*;import java.util.*;public class ProgressStart {/*** @param args* @throws IOException*/public static void main (String[] args) throws IOException {Vector<Employees> em=new Vector<Employees>() ; //建立集合向量while(true)//循环输入输出菜单{System.out.println("&&&&&&&&&&&&&&菜单&&&&&&&&&&&&&&");System.out.println("1.普通技术工人(technician)");System.out.println("2.普通销售人员(salesman)");System.out.println("3.秘书(secretary)");System.out.println("4.技术经理(techmanager)");System.out.println("5.销售经理(salesmanager)");System.out.println("6.查询员工信息(search information)");System.out.println("7.查询所有员工信息(search all)");System.out.println("8.退出(exit)");System.out.println("请输入员工类型编号(input number):");Scanner s =new Scanner(System.in);String number =s.next();switch(number)//选择功能{case "1":Technician Technician1=new Technician(1000);em.add(Technician1);(Technician1);Technician1.countSalary( );Technician1.recordinfo(em);Technician1.recordsalary(em);break;case "2":Saleman saleman1=new Saleman(24288,(float) 0.2);em.add(saleman1);(saleman1);saleman1.countSalary();saleman1.recordinfo(em);saleman1.recordsalary(em);break;case "3":Secretary secretary1=new Secretary(4000,500);em.add(secretary1);(secretary1);secretary1.countSalary();secretary1.recordinfo(em);secretary1.recordsalary(em);break;case "4":TechManager thm=new TechManager(213,35,3);em.add(thm);(thm);thm.countSalary();thm.recordinfo(em);thm.recordsalary(em);break;case "5":SalesManager sm=new SalesManager(444332,(float) 0.02);em.add(sm);(sm);sm.countSalary();sm.recordinfo(em);sm.recordsalary(em);break;case "6":em.get(em.size()-1).search(em);break;case "8":System.exit(0);case "7":em.get(em.size()-1).allShowInformation(em);break;default:System.out.println("输入有误!");System.out.println();}}}}class Employees{ //员工类private String number;private String name;private float salary;private String status;public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public String getName() {return name;}public void setName(String name) { = name;}public float getSalary() {return salary;}public float setSalary(float salary) {return this.salary = salary;}public String getStatus() {return status;}public void setStatus(String status) {this.status = status;}public void info (Employees employee){BufferedReader bur=new BufferedReader(new InputStreamReader(System.in));System.out.println("请输入员工的编号:");try {employee.number= bur.readLine();} catch (IOException e) {e.printStackTrace();}System.out.println("请输入员工的名字:");try {=bur.readLine();} catch (IOException e) {e.printStackTrace();}System.out.println("请输入员工的职务:");try {employee.status=bur.readLine();} catch (IOException e) {e.printStackTrace();}}public void search(Vector<Employees> em)//查询员工信息{int j=0;Scanner s=new Scanner (System.in);System.out.println("请输入要找的人的编号:");String number=s.next();for(int i=0;i<em.size();i++){if( em.get(i).getNumber().equals(number)){System.out.println("编号:"+em.get(i).getNumber());System.out.println("姓名:"+em.get(i).getName());System.out.println("职位:"+em.get(i).getStatus());System.out.println("月薪:"+em.get(i).getSalary());j++;}}if(j==0){System.out.println("没有找到对象!!!");}}public void recordsalary(Vector<Employees> em) //写入文件{FileWriter fw = null;try {fw = new FileWriter("D:/salary.txt");} catch (IOException e) {e.printStackTrace();}PrintWriter pw = new PrintWriter(fw);pw.println("姓名"+" "+"月薪");for(int i=0;i<em.size();i++){pw.println(em.get(i).getName()+" "+em.get(i).getSalary());}pw.close();}public void recordinfo(Vector<Employees> em) throws IOException//写入文件信息{FileWriter fw= new FileWriter("D:/info.txt");PrintWriter pw = new PrintWriter(fw);pw.println("编号"+" "+"姓名"+" "+"职务");for(int i=0;i<em.size();i++){pw.println(em.get(i).number+" "+em.get(i).getName()+" "+em.get(i).getStatus());}pw.close();}public void countSalary(){}public void allShowInformation(Vector<Employees> em){//显示全部员工信息System.out.println("显示全部员工的信息");System.out.println("number"+" "+"name"+" "+"status"+" "+"salary");for(int i=0;i<em.size();i++){System.out.println(em.get(i).getNumber()+" "+em.get(i).getName()+" "+em.get(i).getStatus()+" "+em.get(i).getSalary());}}}class Technician extends Employees{ //技术员工类private int hours;private float hoursavary=35;public Technician(int hours) {this.hours=hours;}public int getHours() {return hours;}public void setHours(int hours) {this.hours = hours;}public float getHoursalary() {return hoursavary;}public void setHoursavary(float hoursavary) {this.hoursavary = hoursavary;}public void countSalary(){System.out.println("请输入该员工每月工作的时间(小时);");Scanner s =new Scanner(System.in);int hours =s.nextInt();setSalary(hours*getHoursalary());}}class Manager extends Employees{private float basicSalary=6000;public float getBasicSalary() {return basicSalary;}public void setBasicSalary(float basicSalary) {this.basicSalary = basicSalary;}}class Secretary extends Employees{private float basicSalary=4000;private float bonus;public float getBasicSalary() {return basicSalary;}public void setBasicSalary(float basicSalary) {this.basicSalary = basicSalary;}public float getBonus() {return bonus;}public void setBonus(float bonus) {this.bonus = bonus;}public Secretary(float basicSalary,float bonus){this.basicSalary=basicSalary;this.bonus=bonus;}public void countSalary(){Scanner s =new Scanner(System.in);System.out.println("这个月给秘书发的奖金为多少(元):");float bonus=s.nextFloat();setSalary(basicSalary+bonus);}}class Saleman extends Employees{private float saleSum;private float saleRate=(float) 0.05;public float getSaleSum() {return saleSum;}public void setSaleSum(float saleSum) {this.saleSum = saleSum;}public float getSaleRate() {return saleRate;}public void setSaleRate(float saleRate) {this.saleRate = saleRate;}public Saleman(float saleSum,float saleRate){this.saleRate=saleRate;this.saleSum=saleSum;}public void countSalary(){Scanner s =new Scanner(System.in);System.out.println("这个月该员工的销售总额是多少(元):");int saleSum = s.nextInt();setSalary((saleSum*getSaleRate()));}}class TechManager extends Manager{ //技术经理类private int hours;private int hoursalary=35;private int jobDegree;public int getHours() {return hours;}public void setHours(int hours) {this.hours = hours;}public int getHoursalary() {return hoursalary;}public void setHoursalary(int hoursalary) {this.hoursalary = hoursalary;}public int getJobDegree() {return jobDegree;}public void setJobDegree(int jobDegree) {if(jobDegree>=1&&jobDegree<=3){this.jobDegree = jobDegree;}else{System.out.println("出始化出错,原因是输入的数据不符合规定");}}public TechManager(int hours,int hoursalary,int jobDegree){this.hours=hours;this.hoursalary=hoursalary;this.jobDegree=jobDegree;}public void countSalary(){Scanner s =new Scanner(System.in);System.out.println("这个月技术经理的技术工作等级(1-3):");int jobDegree=s.nextInt();System.out.println("这个月技术经理的技术工作时间(小时):");int hours=s.nextInt();setSalary(getBasicSalary()+hours*getHoursalary()+jobDegree*1000);}}class SalesManager extends Manager{ //销售经理类private int salesResult;private float salesResultRate= (float) 0.02;public float getSalesResultRate() {return salesResultRate;}public void setSalesResultRate(float salesResultRate) {this.salesResultRate = salesResultRate;}public int getSalesResult() {return salesResult;}public void setSalesResult(int salesResult) {this.salesResult = salesResult;}public SalesManager(int salesResult,float salesResultRate){this.salesResult=salesResult;this.salesResultRate=salesResultRate;}public void countSalary( ) //结算工资{Scanner s =new Scanner(System.in);System.out.println("这个月总销售额是(元):");int salesResult=s.nextInt();setSalary(getBasicSalary()+salesResult*getSalesResultRate());}}。