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



