目录
导语
作为一名非科班出身的无基础java初学者。我会在这里记录我的学习过程及心得分享,希望会对你们想要入行的小伙伴有所帮助,多一个参考的点。
其次希望我的分享能对同样是初学者的你能有所帮助。
同时我也想以此激励自己学习,如果有志同道合的小伙伴就最好啦。大家一起进步!
最后,若您有自己的想法或者觉得我的讲述有问题,需要补充或改正的,欢迎在下方留言互相讨论!!
前言
博主作为无基础的小白,这个项目写的可谓是呕心沥血。写好代码并不代表项目就完成了,还得运行代码去测试。博主写这个项目用的时间大概是4-5天,该Bug用了3天。其实Bug数量可能也不多,大概7-8个,但是作为第一次实践去解决Bug,对于小白来说可太折磨了。但是坚持完成后,能感觉到对自己的提升是非常大的。
项目介绍
项目涉及知识点
1.类的继承性和多态性
2.对象的值传递、接口
3.static 和 final 修饰符
4.特殊类的使用:包装类、抽象类、内部类
5.异常处理
6.Java基本语法和流程控制
7.数组,ArrayList集合
项目结构示意
项目四大模块:
1.用户注册和登录
2.开发人员管理
3.开发团队调度管理
4.开发项目管理
系统流程示意
设计结构示意
项目需求说明
项目难点代码演示
♣ 展示所有员工
if (allEmployees.get(i) instanceof Architect) { System.out.println((allEmployees.get(i).getId(listSvc, allEmployees.get(i)) + 1) + "\t" + allEmployees.get(i).getName() + "\t " + allEmployees.get(i).getAge() + "\t" + allEmployees.get(i).getSalary() + "\t" + "架构师" + "\t" + ((Architect) allEmployees.get(i)).isStatus() + "\t" + ((Architect) allEmployees.get(i)).getBonus() + "\t" + ((Architect) allEmployees.get(i)).getStock() + "\t\t" + ((Architect) allEmployees.get(i)).getEquipment().getDescription()); } else if (allEmployees.get(i) instanceof Designer) { System.out.println((allEmployees.get(i).getId(listSvc, allEmployees.get(i)) + 1) + "\t" + allEmployees.get(i).getName() + "\t\t" + allEmployees.get(i).getAge() + "\t" + allEmployees.get(i).getSalary() + "\t" + "设计师" + "\t" + ((Designer) allEmployees.get(i)).isStatus() + "\t" + ((Designer) allEmployees.get(i)).getBonus() + "\t\t\t" + ((Designer) allEmployees.get(i)).getEquipment().getDescription()); } else if (allEmployees.get(i) instanceof Programmer) { System.out.println((allEmployees.get(i).getId(listSvc, allEmployees.get(i)) + 1) + "\t" + allEmployees.get(i).getName() + "\t\t" + allEmployees.get(i).getAge() + "\t" + allEmployees.get(i).getSalary() + "\t" + "程序员" + "\t" + ((Programmer) allEmployees.get(i)).isStatus() + "\t\t\t\t\t" + ((Programmer) allEmployees.get(i)).getEquipment().getDescription()); } else{ System.out.println((allEmployees.get(i).getId(listSvc, allEmployees.get(i)) + 1) + "\t" + allEmployees.get(i).getName() + "\t\t" + allEmployees.get(i).getAge() + "\t" + allEmployees.get(i).getSalary()); }
♣ 添加员工到开发团队
if (team.size() == MaxMember) { throw new TeamException("成员已满,无法添加"); } if (!(employee instanceof Programmer)) { throw new TeamException("该成员不是开发人员,添加失败"); } else { Programmer programmer = (Programmer) employee; if (!(programmer.isStatus())) { for (int i = 0; i < team.size(); i++) { if (team.get(i).getId(n, team.get(i)) == programmer.getId(n,programmer)) { throw new TeamException("成员已在本开发团队中"); } } throw new TeamException("成员已在某开发团队中"); } if (employee instanceof Architect) { int a = 0; for (int i = 0; i < team.size(); i++) { if (team.get(i) instanceof Architect) { a++; } } if (a >= 1) { throw new TeamException("团队中至多只能有一名架构师"); } else { team.add(programmer); programmer.setMumberId(team.indexOf(programmer) + 1); programmer.setStatus(false); } } else if (employee instanceof Designer) { int a = 0; for (int i = 0; i < team.size(); i++) { if (team.get(i) instanceof Architect) { }else if (team.get(i) instanceof Designer){ a++; }else {} } if (a >= 2) { throw new TeamException("团队中至多只能有两名设计师"); } else { team.add(programmer); programmer.setMumberId(team.indexOf(programmer) + 1); programmer.setStatus(false); } } else { int a = 0; for (int i = 0; i < team.size(); i++) { if (team.get(i) instanceof Programmer) { a++; } } if (a >= 3) { throw new TeamException("团队中至多只能有三名程序员"); } else { team.add(programmer); programmer.setMumberId(team.indexOf(programmer) + 1); programmer.setStatus(false); } } } }
♣ 项目随机分配给团队
Project p = new Project(t); ArrayList<ArrayList<Programmer>> proteam = p.getProteam(); ArrayList<String> teamNames = new ArrayList<>(); if (proteam.size() == 0) { System.out.println("暂无可分配团队"); } else { System.out.println("当前有" + proteam.size() + "个团队"); Scanner sc = new Scanner(System.in); for (int i = 0; i < proteam.size(); i++) { System.out.println("团队" + (i+1) + "成员:"); for (int j = 0; j < proteam.get(i).size(); j++) { System.out.println((proteam.get(i).get(j).getId(n,proteam.get(i).get(j))+1) + "\t" + proteam.get(i).get(j).getName() + "\t" + proteam.get(i).get(j).toString() + "\t" + proteam.get(i).get(j).getSalary()); } System.out.println("请为当前团队创建一个名称"); String teamName = sc.next(); teamNames.add(teamName) ; } Random r = new Random(); if (pro.size() == 0) { System.out.println("暂无项目可分配"); } else if (pro.size() >= proteam.size()) { for (int i = 0; i < proteam.size(); i++) { int a = r.nextInt(pro.size()); if (!pro.get(a).isProstatus()) { pro.get(a).setTeam(proteam.get(i)); pro.get(a).setTeamName(teamNames.get(i)); pro.get(a).setProstatus(true); } else { i--; } } } else { for (int i = 0; i < pro.size(); i++) { int a = r.nextInt(pro.size()); if (!pro.get(a).isProstatus()) { pro.get(a).setTeam(proteam.get(i)); pro.get(a).setTeamName(teamNames.get(i)); pro.get(a).setProstatus(true); } else { i--; } } } } }
总结
1.测试代码时老是遇到数据不互通的情况,即不同的对象在调用一个方法。所以写方法的时候,需要注意是否要设置一个形参来传入对象,并在该方法内使用传入的对象进行相应操作,来确保将来数据的互通,统一。
2.打磨自己的过程是痛苦的,但宝剑锋从磨砺出,经历风雨才能见彩虹,必须有付出才会得到汇报。要耐住自己性子去学习。