需求分析:
模拟实现一个基于文本界面的《团队人员调度软件》;
软件启动时,根据给定的数据创建公司部分成员列表;
根据菜单提示,基于现有的公司成员,组建一个开发团队以开发一个新的项目;
组建过程包括成员的添加,删除,查找,在实现功能同时要保证程序的健壮性;
开发团队最多包括一名架构师,两名设计师,三名程序员。
涉及到的知识点:
类的继承和多态;
对象关联:目的是想让一个类的对象方便地使用另外一个对象;
static和final修饰符;
特殊类的属性;
异常处理;
软件设计结构:
view(TeamView),service(TeamException、CompanyService、TeamService),domain(Employee),main(TeamMain)
com.hike.team.domain 实体包
Employee 父类
属性:
id:int
name:String
age:int
salary:double
Programmer 子类
属性:
equipment:Equipment
status:Status //状态
memberId:int
Designer 子类
属性:
bonus:double //奖金
Architect 子类
属性:
stock:int //股票
Equipment 接口
+ abstract getDescription ():String
PC
model:String //型号
display:String //显示器
NoteBook
model:String
price:double
Printer
type:String
name:String
com.hike.team.service 最核心的实体管理器
TeamException 项目自定义异常
CompanyService 公司员工管理器
TeamService 团队管理器
Status 成员的状态,枚举
Data 基础数据
com.hike.team.view UI模块,负责连接用户和管理器
TeamView 主控模块
com.hike.team.main 程序入口
TeamMain
TSUtility 工具类
实体类:
Employee 类:
package com.hike.team.domain;
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;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", salary=" + salary +
'}';
}
}
programmer类:
package com.hike.team.domain;
import com.hike.team.service.Status;
public class Programmer extends Employee{
private int memberId;
private Status status;
private Equipment equipment;
public Programmer() {
super();
}
public Programmer(int id,
String name,
int age,
double salary,
int memberId,
Status status,
Equipment equipment) {
super(id, name, age, salary);
this.memberId = memberId;
this.status = status;
this.equipment = equipment;
}
public int getMemberId() {
return memberId;
}
public void setMemberId(int memberId) {
this.memberId = memberId;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
public Equipment getEquipment() {
return equipment;
}
public void setEquipment(Equipment equipment) {
this.equipment = equipment;
}
@Override
public String toString() {
return super.toString() +
"Programmer{" +
"memberId=" + memberId +
", status=" + status +
", equipment=" + equipment +
'}';
}
}
Designer类:
package com.hike.team.domain;
import com.hike.team.service.Status;
public class Designer extends Programmer{
private double bonus;
public Designer() {
}
public Designer(int id,
String name,
int age,
double salary,
int memberId,
Status status,
Equipment equipment,