Java基础——项目三 开发团队调度软件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java基础——项目三 开发团队调度软件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含13082字,纯文字阅读大概需要19分钟。
内容图文
![Java基础——项目三 开发团队调度软件](/upload/InfoBanner/zyjiaocheng/1312/40f525196f0c48b5b00766f2303b1beb.jpg)
注意:
1.继承关系,判断时,从最子开始,到父。
2.发生输入错误时,自定义异常类,输出信息,在service做throws,在view做try-catch。
domain包:
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
package domain; /** * @author FREZXX * @create 2021-05-21 17:01 */ // 接口,实际上就是定义了一种规范 // 开发中,体会面向接口编程 // 例子:7个元素继承于一个父类,其中3个元素有共同的一个不同于父类的方法 // 方式一:再定义一个继承于父类的类,将3个元素继承于它,此时3个元素与其余4个元素不是并列关系 // 方式二:再定义一个接口,使3个元素引用它,此时为并列关系,接口的地位与类平行 public interface Equipment { public abstract String getDescription(); }
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
package domain; /** * @author FREZXX * @create 2021-05-21 17:02 */ public class PC implements Equipment{ private String model; private String display; public PC() { } public PC(String model, String display) { this.model = model; this.display = display; } public String getModel() { return model; } publicvoid setModel(String model) { this.model = model; } public String getDisplay() { return display; } publicvoid setDisplay(String display) { this.display = display; } @Override public String getDescription() { return model + "(" + display + ")"; } }
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
package domain; /** * @author FREZXX * @create 2021-05-21 17:10 */ public class Printer implements Equipment { private String name; private String type; public Printer() { } public Printer(String name, String type) { this.name = name; this.type = type; } public String getName() { return name; } publicvoid setName(String name) { this.name = name; } public String getType() { return type; } publicvoid setType(String type) { this.type = type; } @Override public String getDescription() { return name + "(" + type + ")"; } }
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
package domain; /** * @author FREZXX * @create 2021-05-21 17:07 */ public class NoteBook implements Equipment{ private String model; privatedouble price; public NoteBook() { } public NoteBook(String model, double price) { this.model = model; this.price = price; } public String getModel() { return model; } publicvoid setModel(String model) { this.model = model; } publicdouble getPrice() { return price; } publicvoid setPrice(double price) { this.price = price; } @Override public String getDescription() { return model + "(" + price + ")"; } }
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
package domain; /** * @author FREZXX * @create 2021-05-21 16:11 */ // 父类,越往下功能越丰富 public class Employee { private int id; private String name; private int age; private double salary; public Employee() { } public Employee(int id, String name, int age, double salary) { this.id = id; this.name = name; this.age = age; this.salary = salary; } publicint getId() { return id; } publicvoid setId(int id) { this.id = id; } public String getName() { return name; } publicvoid setName(String name) { this.name = name; } publicint getAge() { return age; } publicvoid setAge(int age) { this.age = age; } publicdouble getSalary() { return salary; } publicvoid setSalary(double salary) { this.salary = salary; } protected String getDetails() { return id + "\t" + name + "\t" + age+ "\t" +salary; } @Override public String toString() { return getDetails(); } }
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
package domain; import service.Status; /** * @author FREZXX * @create 2021-05-21 16:14 */ public class Programmer extends Employee{ privateint memberId; private Status status = Status.FREE; private Equipment equipment; public Programmer() { } public Programmer(int id, String name, int age, double salary, Equipment equipment) { super(id, name, age, salary); this.equipment = equipment; } publicint getMemberId() { return memberId; } publicvoid setMemberId(int memberId) { this.memberId = memberId; } public Status getStatus() { return status; } publicvoid setStatus(Status status) { this.status = status; } public Equipment getEquipment() { return equipment; } publicvoid setEquipment(Equipment equipment) { this.equipment = equipment; } protected String getMemberDetails() { return getMemberId() + "/" + getDetails(); } public String getDetailsForTeam() { return getMemberDetails() + "\t程序员"; } @Override public String toString() { return getDetails() + "\t程序员\t" + status + "\t\t\t" + equipment.getDescription() ; } }
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
package domain; /** * @author FREZXX * @create 2021-05-21 16:14 */ public class Designer extends Programmer{ privatedouble bonus; public Designer() { } public Designer(int id, String name, int age, double salary, Equipment equipment, double bonus) { super(id, name, age, salary, equipment); this.bonus = bonus; } publicdouble getBonus() { return bonus; } publicvoid setBonus(double bonus) { this.bonus = bonus; } public String getDetailsForTeam() { return getMemberDetails() + "\t设计师\t" + getBonus(); } @Override public String toString() { return getDetails() + "\t设计师\t" + getStatus() + "\t" + getBonus() +"\t\t" + getEquipment().getDescription(); } }
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
package domain; /** * @author FREZXX * @create 2021-05-21 16:14 */ public class Architect extends Designer{ privateint stock; public Architect() { } public Architect(int id, String name, int age, double salary, Equipment equipment, double bonus, int stock) { super(id, name, age, salary, equipment, bonus); this.stock = stock; } publicint getStock() { return stock; } publicvoid setStock(int stock) { this.stock = stock; } public String getDetailsForTeam() { return getMemberDetails() + "\t架构师\t" + getBonus() + "\t" + getStock(); } @Override public String toString() { return getDetails() + "\t架构师\t" + getStatus() + "\t" + getBonus() + "\t" + getStock() + "\t" + getEquipment().getDescription(); } }
service包:
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
package service; /** * @author FREZXX * @create 2021-05-21 20:13 */ // 自定义异常 public class TeamException extends Exception{ staticfinallong serialVersionUID = -3387514229948L; public TeamException(){ } public TeamException(String msg){ super(msg); } }
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
package service; import domain.*; /** * @author FREZXX * @create 2021-05-21 19:24 */publicclass NameListService { private Employee[] employees; public NameListService() { employees = new Employee[Data.EMPLOYEES.length]; for (int i = 0; i < employees.length; i++) { int type = Integer.parseInt(Data.EMPLOYEES[i][0]); int id = Integer.parseInt(Data.EMPLOYEES[i][1]); String name = Data.EMPLOYEES[i][2]; int age = Integer.parseInt(Data.EMPLOYEES[i][3]); double salary = Double.parseDouble(Data.EMPLOYEES[i][4]); Equipment equipment; double bonus; int stock; switch (type) { case Data.EMPLOYEE: employees[i] = new Employee(id, name, age, salary); break; case Data.PROGRAMMER: equipment = createEquipment(i); employees[i] = new Programmer(id, name, age, salary, equipment); break; case Data.DESIGNER: equipment = createEquipment(i); bonus = Double.parseDouble(Data.EMPLOYEES[i][5]); employees[i] = new Designer(id, name, age, salary, equipment, bonus); break; case Data.ARCHITECT: equipment = createEquipment(i); bonus = Double.parseDouble(Data.EMPLOYEES[i][5]); stock = Integer.parseInt(Data.EMPLOYEES[i][6]); employees[i] = new Architect(id, name, age, salary, equipment, bonus,stock); break; } } } private Equipment createEquipment(int index) { int key = Integer.parseInt(Data.EQUIPMENTS[index][0]); String modelorName = Data.EQUIPMENTS[index][1]; switch (key) { case Data.PC: String display = Data.EQUIPMENTS[index][2]; returnnew PC(modelorName, display); case Data.NOTEBOOK: double price = Double.parseDouble(Data.EQUIPMENTS[index][2]); returnnew NoteBook(modelorName, price); case Data.PRINTER: String type = Data.EQUIPMENTS[index][2]; returnnew Printer(modelorName, type); } returnnull; } public Employee[] getAllEmployees() { return employees; } public Employee getEmployee(int id) throws TeamException { for(int i = 0 ;i<employees.length;i++){ if(employees[i].getId() == id){ return employees[i]; } } thrownew TeamException("找不到指定员工"); } }
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
package service; import domain.Architect; import domain.Designer; import domain.Employee; import domain.Programmer; /** * @author FREZXX * @create 2021-05-22 10:31 */ public class TeamService { private static int counter = 1;//用于自动生成团队成员的memberIdprivatefinalint MAX_MEMBER = 5;//团队人数上限private Programmer[] team = new Programmer[MAX_MEMBER];//保存当前团队成员privateint total = 0;//团队实际人数public TeamService() { } //返回team中所有程序员构成的数组public Programmer[] getTeam() { Programmer[] team = new Programmer[total]; for (int i = 0; i < total; i++) { team[i] = this.team[i]; } return team; } publicvoid addMember(Employee e) throws TeamException { if (total >= MAX_MEMBER) thrownew TeamException("成员已满,无法添加"); if (!(e instanceof Programmer)) thrownew TeamException("该成员不是开发人员,无法添加"); Programmer p = (Programmer)e; if (isExist(p)) thrownew TeamException("该员工已在本团队中"); if(p.getStatus().getNAME().equals("BUSY")) { thrownew TeamException("该员工已是某团队成员"); }elseif(p.getStatus().getNAME().equals("VOCATION")) { thrownew TeamException("该员正在休假,无法添加"); } // switch (p.getStatus()) { // case BUSY :throw new TeamException("该员工已是某团队成员"); // case VOCATION:throw new TeamException("该员正在休假,无法添加"); // }int numOfArch = 0, numOfDsgn = 0, numOfPrg = 0; for (int i = 0; i < total; i++) { if (team[i] instanceof Architect) numOfArch++; elseif (team[i] instanceof Designer) numOfDsgn++; elseif (team[i] instanceof Programmer) numOfPrg++; } if (p instanceof Architect) { if (numOfArch >= 1) thrownew TeamException("团队中至多只能有一名架构师"); } elseif (p instanceof Designer) { if (numOfDsgn >= 2) thrownew TeamException("团队中至多只能有两名设计师"); } elseif (p instanceof Programmer) { if (numOfPrg >= 3) thrownew TeamException("团队中至多只能有三名程序员"); } //添加到数组 p.setStatus(Status.BUSY); p.setMemberId(counter++); team[total++] = p; } privateboolean isExist(Programmer p) { for (int i = 0; i < total; i++) { if (team[i].getId() == p.getId()) returntrue; } returnfalse; } //删除指定memberId的程序员publicvoid removeMember(int memberId) throws TeamException { int n = 0; //找到指定memberId的员工,并删除for (; n < total; n++) { if (team[n].getMemberId() == memberId) { team[n].setStatus(Status.FREE); break; } } //如果遍历一遍,都找不到,则报异常if (n == total) thrownew TeamException("找不到该成员,无法删除"); //后面的元素覆盖前面的元素for (int i = n + 1; i < total; i++) { team[i - 1] = team[i]; } team[--total] = null; } }
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
package service; /** * @author FREZXX * @create 2021-05-21 17:37 */ public class Status { private final String NAME; private Status(String name){ this.NAME = name; } publicstaticfinal Status FREE = new Status("FREE"); publicstaticfinal Status BUSY = new Status("BUSY"); publicstaticfinal Status VOCATION = new Status("VOCATION"); public String getNAME() { return NAME; } @Override public String toString() { return NAME; } }
view包:
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
package view; /** * @author FREZXX * @create 2021-05-21 16:11 */ import domain.Employee; import domain.Programmer; import service.NameListService; import service.TeamException; import service.TeamService; public class TeamView { private NameListService listSvc = new NameListService(); private TeamService teamSvc = new TeamService(); publicvoid enterMainMenu() { boolean loopFlag = true; char key = 0; do { if (key != ‘1‘) { listAllEmployees(); } System.out.print("1-团队列表 2-添加团队成员 3-删除团队成员 4-退出 请选择(1-4):"); key = TSUtility.readMenuSelection(); System.out.println(); switch (key) { case ‘1‘: listTeam(); break; case ‘2‘: addMember(); break; case ‘3‘: deleteMember(); break; case ‘4‘: System.out.print("确认是否退出(Y/N):"); char yn = TSUtility.readConfirmSelection(); if (yn == ‘Y‘) loopFlag = false; break; } } while (loopFlag); } // 显示所有的员工成员privatevoid listAllEmployees() { System.out .println("\n-------------------------------开发团队调度软件--------------------------------\n"); Employee[] emps = listSvc.getAllEmployees(); if (emps.length == 0) { System.out.println("没有客户记录!"); } else { System.out.println("ID\t姓名\t年龄\t工资\t职位\t状态\t奖金\t股票\t领用设备"); } for (Employee e : emps) { System.out.println(" " + e); } System.out .println("-------------------------------------------------------------------------------"); } // 显示开发团队成员列表privatevoid listTeam() { System.out .println("\n--------------------团队成员列表---------------------\n"); Programmer[] team = teamSvc.getTeam(); if (team.length == 0) { System.out.println("开发团队目前没有成员!"); } else { System.out.println("TID/ID\t姓名\t年龄\t工资\t职位\t奖金\t股票"); } for (Programmer p : team) { System.out.println(" " + p.getDetailsForTeam()); } System.out .println("-----------------------------------------------------"); } // 添加成员到团队privatevoid addMember() { System.out.println("---------------------添加成员---------------------"); System.out.print("请输入要添加的员工ID:"); int id = TSUtility.readInt(); try { Employee e = listSvc.getEmployee(id); teamSvc.addMember(e); System.out.println("添加成功"); } catch (TeamException e) { System.out.println("添加失败,原因:" + e.getMessage()); } // 按回车键继续... TSUtility.readReturn(); } // 从团队中删除指定id的成员privatevoid deleteMember() { System.out.println("---------------------删除成员---------------------"); System.out.print("请输入要删除员工的TID:"); int id = TSUtility.readInt(); System.out.print("确认是否删除(Y/N):"); char yn = TSUtility.readConfirmSelection(); if (yn == ‘N‘) return; try { teamSvc.removeMember(id); System.out.println("删除成功"); } catch (TeamException e) { System.out.println("删除失败,原因:" + e.getMessage()); } // 按回车键继续... TSUtility.readReturn(); } publicstaticvoid main(String[] args) { TeamView view = new TeamView(); view.enterMainMenu(); } }
原文:https://www.cnblogs.com/frezxx/p/14801401.html
内容总结
以上是互联网集市为您收集整理的Java基础——项目三 开发团队调度软件全部内容,希望文章能够帮你解决Java基础——项目三 开发团队调度软件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。