解决方案:

1创建汇报类Report

public class Report {//汇报类private int reportId;private int reporterId;private String content;public int getReportId() {return reportId;}public void setReportId(int reportId) {this.reportId = reportId;}public int getReporterId() {return reporterId;}public void setReporterId(int reporterId) {this.reporterId = reporterId;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}}

2,创建Data数据初始化类

public class Data {//保存当前登录的员工public static Employee currentEmployee;//角色值为1普通员工 2经理 3 管理员//部门值1表示市场部 2表示开发部 3信息部//实例普通员工public static Staff staff=new Staff(1,"DH001","Staff","Staff",2,1,3000.5);//部门经理public static Manager manager=new Manager(2,"DH002","Manager","Manager",2,2,5000.5);//实例管理员public static Admin admin=new Admin(3,"DH003","Admin","Admin",2,3,4000.5);public static Report[] reports=new Report[1000];//初始化数据public static void init(){for(int i=0;i<reports.length;i++){reports[i]=new Report();}}}

3,创建业务逻辑类hrhelper

public class HrHelper {//登录检测public Employee login(String name,String password){if(name.equals(Data.staff .getUserName())&& password.equals(Data.staff.getPassword())){Data.currentEmployee=Data.staff ;}else if(name.equals(Data.manager.getUserName())&& password.equals(Data.manager.getPassword())){Data.currentEmployee=Data.manager ;}else if(name.equals(Data.admin.getUserName())&& password.equals(Data.admin.getPassword())){Data.currentEmployee=Data.admin;}return Data.currentEmployee;}public int getReportsCount(){int count=0;//如果遍历完现有汇报for(Report item:Data.reports){if(item.getReportId()<=0)break;count++;}//返回现有汇报数量return count;}//通过员工id返回员工对象public Employee getEmployeeByUserId(int userId){if(Data.staff.getUserId()==userId)return Data.staff;if(Data.manager.getUserId()==userId)return Data.manager;if(Data.admin.getUserId()==userId)return Data.admin;return null;}//显示所有汇报public void displayReports(){System.out.println("汇报如下");System.out.println("*****************************");for(int  i=0;i<Data.reports.length;i++){//如果遍历完现有汇报if(Data.reports[i]==null)break;//得到汇报人信息Employee employee=getEmployeeByUserId(Data.reports[i].getReporterId());if(employee!=null)System.out.println("编号"+Data.reports[i].getReporterId()+"\t汇报人:"+employee.getUserName()+employee.getUserName()+"\t汇报内容:"+Data.reports[i].getContent());}}//添加汇报public void addReport(Report report){//得到当前汇报的数量int count =getReportsCount();if(count>=Data.reports.length){System.out.println("汇报日志已满");return;}else{//将汇报存储到report数组Data.reports[count]=report;System.out.println("汇报成功");}}/***修改员工角色*@param empNo 员工编号*@param roleName 角色名称**/public void modifyEmployeeRole(String empNo,String roleName){int roleId=0;switch(roleName){case "Staff":roleId=1;break;case "Manager":roleId=2;break;case "Admin":roleId=3;break;default:System.out.println("输入的角色不存在!");;break;}if(empNo.equals(Data.staff.getEmpNo())){Data.staff.setRoleId(roleId);}else if(empNo.equals(Data.manager.getRoleId())){Data.manager.setRoleId(roleId);}else if(empNo.equals(Data.admin.getRoleId())){Data.admin.setRoleId(roleId);}else{System.out.println("不存在此员工!");}}}

4  修改Staff类

public class Staff  extends Employee{public Staff(){super();}public Staff(int userId,String empNo,String userName,String password,int departId,int roleId,double salary){super(userId,empNo,userName,password,departId,roleId,salary);}HrHelper helper=new HrHelper();public void addReport(){System.out.println("请输入汇报信息\n");Scanner input=new Scanner(System.in);String content=input.next();//实例化report对象Report report =new Report();//汇报id,每一次在上一次的基础上加一report.setReporterId(helper.getReportsCount()+1);report.setContent(content);//设置汇报人idreport.setReporterId(Data.currentEmployee.getUserId());//加入汇报数组helper.addReport(report);}}

实现Staff类的汇报工作功能相关推荐

  1. 项目经理如何汇报工作

    向领导汇报工作,看似很平常,实际很重要.汇报得好不好,一是体现着项目经理的素质,二是关系到能否真实地反映项目的实际工作情况,三是有时关系到能否赢得上级领导的支持,四是关系到项目经理的形象和声誉. 领导 ...

  2. 4步美化报表教程,这样汇报工作直接拿满分

    在做数据分析工作时,当你搜集完数据后,就进入到了报表制作阶段,也是最重要的数据展示阶段. 所谓可视化数据分析,不光是让数据让别人看见,更是让人看懂,让人忍不住欣赏.只有认真考量报表上的所有展示元素,才 ...

  3. 跟领导汇报工作时,这句话建议你不要说

    [ 爱开发]陪伴你一起成长,一起进步 跟领导汇报工作时,这三个字,建议你不要说 文 | 洪生鹏 跟领导汇报工作时,要是有某项工作那里做得不好,被领导指出时,有的人喜欢用"我以为"来 ...

  4. VC++ 绘制线条 OnLButtonDown函数(DrawView.cpp) 利用SDK全局函数实现画线功能 利用MFC的CDC类实现画线功能 利用MFC的CClientDC类实现画线功能

    目录 绘制线条 OnLButtonDown函数(DrawView.cpp) 利用SDK全局函数实现画线功能 利用MFC的CDC类实现画线功能 利用MFC的CClientDC类实现画线功能 接上:VC+ ...

  5. 如何向领导汇报工作(5)

    第一,掌握领导的需要.不同层级的领导,需要了解的信息,所站的角度,差别极大.或者领导已经先入为主,来调研之前对很多事情已有成见,这时想要扭转领导的印象就非常困难.因此,在上会之前,与领导的沟通就显得非 ...

  6. 有没有必要经常向领导汇报工作?

    不但必要,而且十分重要. 其实向领导汇报工作表面上是一个沟通的过程,实质是把一个个事情 理解透做透,甚至举一反三的过程.更为重要的是,在与领导多次的 交流过程中,你会无形中会领会许多.得到信任和助力, ...

  7. 项目经理怎样给领导汇报工作?

    项目经理怎样给领导汇报工作? 时间:2013-10-14 23:33 来源:西西吹雪 作者:西西吹雪 如果有一天领导叫你汇报一下项目状况,你会怎样来回答呢?在项目汇报方面,我总结有三种类型的项目经理, ...

  8. python列表实现栈,Python之列表实现栈的工作功能

    Python之列表实现栈的工作功能 问题: python中使用列表实现栈的功能 """ 栈的工作原理 入栈 出栈 查看栈顶元素 栈的长度 栈是否为空 "&quo ...

  9. 苹果x微信语音十秒就断_通过微信汇报工作,你需要掌握这4点,让领导更加看重你...

    点击右上角[关注]霸王课头条号,收获更多加薪秘籍.本文共2377字,阅读全文约3分钟 初入职场的小华,前几天心情很委屈的和我哭诉,说自己一连三天被领导批评,工作的积极性全部没有了,现在根本无心工作. ...

  10. 如何向领导汇报工作(2)

    汇报工作是向上级领导反映情况,求得指导和帮助的重要方法,也是展示本单位成绩.工作能力和水平的重要机会.汇报得好,领导自然就会满意,就会对你或你单位的工作给予肯定,或对你提出的问题引起应有的重视,进而使 ...

最新文章

  1. Asp.net中时间格式化的几种方法
  2. yoyo思维题(困难) 组合数学
  3. 方钢管弹性模量计算方式_弹性模量的物理学本质
  4. 基于redis分布式锁实现的多线程并发程序
  5. hibernate实现多变联合查询
  6. bat 两个文本字符替换_Excel中最全最实用的文本函数公式大全
  7. MySQL的my.cnf详细配置说明
  8. 第九次团队作业-测试报告与用户使用手册
  9. Python实战——过采样数据的处理之改进的SMOTE算法
  10. 伺服电机负载惯量比的合理取值
  11. 【SCI\EI】SCI分区,该看JCR还是中科院?
  12. Spring AOP实现原理
  13. 第一台微型计算机处理器位数,微处理器芯片的位数指的是什么 - 全文
  14. KeilC51基础 改变代码的字体大小
  15. 用PYTHON做一个动态钟表
  16. git操作生成ssh公钥
  17. 2021李宏毅机器学习笔记--12 attack ML models
  18. 国家天文台结盟阿里云:计算100亿光年的数字宇宙
  19. 走进就职演说幕后:大有深意的用词
  20. HTML表格展示增加横向滚动条

热门文章

  1. 数据库连接池的配置和使用(大自然的搬运工)
  2. 嵌入式Linux开发 之 共享文件夹、NFS、SSH
  3. YDOOK:ESP8266EX 四大工作模式与耗能 低耗能分析
  4. 元素隐藏和元素溢出隐藏的区别和方法
  5. linux 文件描述符异常,Linux下利用文件描述符恢复的成功失败实验
  6. 校园安全防护,人人有责
  7. 程序人生 - 马住这份水果攻略,以后再也不怕挑不到好吃的水果啦!
  8. CPU针脚弯曲,是否能够正常开机?
  9. git 图形化和远程仓库
  10. web笔记day06