现在出去旅游,需要对人员进行统计
学生:
张三 男 19 小1班
李四 女 18 小1班
王五 男 20 小2班
赵六 女 18 小1班
钱七 男 22 小2班
讲师:
老张 男 40 Java
老王 男 35 Python
老李 女 32 前端
辅导员:
小王 女 25 小1班
小李 男 22 小2班
①请根据题目,设计学生、讲师、辅导员类.
已知: 讲师和辅导员都是员工
员工只是一个抽象的概念,不能是一个具体的对象
学生和员工都是人
设计时:必须有接口、抽象类
英文:学生-student
讲师-Lecturer
辅导员-ClassTeacher
班级-classes
课程名-lesson
员工-employee
人-Person
②现在将所有人员保存到一个集合中
③现在缴纳出行保险:
学生每人缴纳:10元,学校补助15元
员工每人缴纳:20元
下面请计算,保险公司总共收取的保费总额为多少
④
已知:程序员30岁之前秃顶概率 20%
程序员30~35岁秃顶概率 50%
程序员35岁之后秃顶概率 30%
请计算两位男讲师的平均年龄和他们的秃顶概率
定义员工类Emp,拥有姓名(String ename),薪水(Double sal),职位(String job),部门号(deptno)4个属性
要求:
* 创建员工、部门类,在部门中添加属性,表示部门拥有多个员工
* 创建下列员工,并添加到集合ArrayList中
2.1. 姓名:刘备,薪水:20000,职位:经理,部门号:10
2.2. 姓名:诸葛,薪水:12000,职位:员工,部门号:10
2.3. 姓名:孙权,薪水:18000,职位:经理,部门号:20
2.4. 姓名:黄盖,薪水:12000,职位:员工,部门号:20
2.5. 姓名:曹操,薪水:50000,职位:经理,部门号:30
2.6. 姓名:张颌,薪水:30000,职位:员工,部门号:30
2.7. 姓名:许褚,薪水:20000,职位:员工,部门号:30
2.8. 姓名:张辽,薪水:30000,职位:员工,部门号:30
1.定义方法sumSal,统计指定部门的员工人数和薪资总和
示例:
统计10号部门:sum(empList,10)
输出:10号部门共2人,薪资和是:22000
2.定义方法selectDeptno,方法接收员工姓名和员工集合,方法中根据员工姓名查询员工的部门号,并返回部门号
示例:
selectDeptno("黄盖",empList)
返回:20
3.定义方法selectAvgSql,方法接收部门号、员工集合,方法中查询并打印指定部门号的最高薪资、和平均薪资。
示例:
selectAvgSql(20,empList)
输出:20号部门最高薪资是:18000,平均薪资是:15000
4.定义方法betterThanEmp,方法有2个参数,员工A、员工列表,方法中打印所有比员工A薪资高的员工姓名、员工薪资。
5.定义方法betterThanSal,方法有接收员工集合,方法中打印:比所有员工平均薪资高的员工姓名,员工薪资。
6.定义方法printMyselfManager,方法接收员工集合,方法中打印员工姓名、领导姓名。
示例:
10号部门 刘备 领导:无
10号部门 诸葛 领导:刘备
...
30号部门 曹操 领导:无
30号部门 张颌 领导:曹操
30号部门 许褚 领导:曹操
...
* 定义部门类Dept,拥有部门号(int deptno),部门名称(String deptName),部门地址(String deptAddr)4个属性
* 创建下列部门
3.1. 部门号:10,部门名称:蜀,部门地址:汉中
3.1. 部门号:20,部门名称:魏,部门地址:江南
3.1. 部门号:30,部门名称:吴,部门地址:江北
* 将上述部门对象添加到部门的集合中(注意:没有要求将员工对象放入部门对象集合中)
1.定义方法printSalary,接收部门集合、员工集合,方法中打印每个部门的部门号、部门名称、最高薪资、最高薪资的员工姓名
2.定义方法printDept,方法接收部门集合,员工集合,方法中根据部门号匹配,打印曹操的部门号,部门名称
3.定义方法printMaxManager,方法接收部门集合,员工集合,方法中打印管理人数最多的经理姓名、部门名称
继承 super练习(本题旨在练习继承super):
1.创造手机类Phone:拥有品牌brand、价格price、生产日期time属性,属性都私有,提供get/set方法,
* 提供无参和满参构造方法,
* 拥有打电话call方法,接收字符串电话号码。方法具体代码由子类实现
2.创建华为手机类HuaWeiPhone,继承手机类:
* 该类有2个构造方法(考核super的用法):
- 无参构造方法
- 有参构造方法,有参构造方法接收3个参数(String brand,Double price,Date productTime),可以给华为手机初始化属性。
* 补全HuaWeiPhone类中call方法,该方法可以从之前的通话记录中拨号和更新通话记录功能:String phoneNum
- 拨号(打印):
根据接收的电话号码,在项目下的recode.txt中找到该号码的记录,打印该号码通话记录信息。
打印格式如下:13698652317是第1次通话,上次通话时间2018年12月08日,通话20秒。
1.有记录
1.1.遍历字符串
1.2.切割字符串
1.3.数据有格式要求
1.4.打印
2.无记录
2.1.自己拼接这个格式的字符串:13698652317是第1次通话,上次通话时间2018年12月08日,通话20分。
2.1.1.问题点1:当前时间 -> 2018年12月10日
2.1.2. 时长:通话20分 ——> 1-200随机数(秒)
- 更新通话记录:
* 如果有历史记录,将原来通话记录中的拨打次数+1,通话时间改为当前时间
* 如果没有历史记录,新增一条通话记录,时间为当前时间,通话时长尾1-200以内随机数,拨打次数为1.
** 发现如果只想修改某一部分数据,操作比较困难
** 解决方法:在解析数据时候,提前将解析的数据放入ArrayList集合中。
** 修改集合中的数据,最后将集合数据全部覆盖写回原文件,这样就能实现修改的效果
* recode.txt flag=false
15271312791@2018-12-10@56秒@4
15656238957@2018-12-10@32秒@2
17865662379@2018-12-8@157秒@6
13965879652@2018-12-10@3秒@2
13999999999@2018-12-10@3秒@1