尚硅谷java项目三
domain文件
Architect
package work3.domain;
public class Architect extends Designer{
private int stock;
public Architect(int id, String name, int age, double salary, Equipment equipment, double bone, int stock) {
super(id, name, age, salary, equipment, bone);
this.stock = stock;
}
public int getStock() {
return stock;
}
public void setStock(int stock) {
this.stock = stock;
}
public String toString(){
return super.getDetails()+"\t架构师\t"+getStatus()+"\t"+getBone()+"\t"+stock+"\t"+getEquipment().getDescription();
}
public String getDetailsForTeam(){
return getMemberId()+"/"+getId()+"\t"+getName()+"\t"+getAge()+"\t"+getSalary()+"\t架构师\t"+getBone()+"\t"+getStock();
}
}
Designer
package work3.domain;
public class Designer extends Programmer{
private double bone;
public Designer(int id, String name, int age, double salary, Equipment equipment, double bone) {
super(id, name, age, salary, equipment);
this.bone = bone;
}
public double getBone() {
return bone;
}
public void setBone(double bone) {
this.bone = bone;
}
public String toString(){
return super.getDetails()+"\t设计师\t"+getStatus()+"\t"+getBone()+"\t\t"+getEquipment().getDescription();
}
public String getDetailsForTeam(){
return getMemberId()+"/"+getId()+"\t"+getName()+"\t"+getAge()+"\t"+getSalary()+"\t设计师\t"+getBone();
}
}
Employee
package work3.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;
}
public String getDetails(){
return id+"\t"+name+"\t"+age+"\t"+salary;
}
public String toString(){
return id+"\t"+name+"\t"+age+"\t"+salary;
}
}
Equipment
package work3.domain;
public interface Equipment {
public abstract String getDescription();
}
NoteBook
package work3.domain;
public class NoteBook implements Equipment{
private String model;
private double price;
public NoteBook(String model, double price) {
this.model = model;
this.price = price;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String getDescription() {
return model+"("+price+")";
}
}
PC
package work3.domain;
public class PC implements Equipment{
private String model;
private String display;
public PC(String model, String display) {
this.model = model;
this.display = display;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public String getDisplay() {
return display;
}
public void setDisplay(String display) {
this.display = display;
}
@Override
public String getDescription() {
return model+"("+display+")";
}
}
Printer
package work3.domain;
public class Printer implements Equipment{
private String name;
private String type;
public Printer(String name, String type) {
this.name = name;
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Override
public String getDescription() {
return name+"("+type+")";
}
}
Programmer
package work3.domain;
import work3.service.Status;
public class Programmer extends Employee{
private int 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;
}
public int getMemberId() {
return memberId;
}
public void setMemberId(int memberId) {
this.memberId = memberId;
}
public Equipment getEquipment() {
return equipment;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
public void setEquipment(Equipment equipment) {
this.equipment = equipment;
}
public String toString(){
return super.toString()+"\t程序员\t"+getStatus()+"\t\t\t"+equipment.getDescription();
}
public String getDetailsForTeam(){
return getMemberId()+"/"+getId()+"\t"+getName()+"\t"+getAge()+"\t"+getSalary()+"\t程序员";
}
}
service文件
Data
package work3.service;
public class Data {
public static final int EMPLOYEE=10;
public static final int PROGRAMMER=11;
public static final int DESIGNER=12;
public static final int ARCHITECT=13;
public static final int PC=21;
public static final int NOTEBOOK=22;
public static final int PRINTER=23;
public static final String[][] EMPLOYEES = {
{"10","1","马云","22","3000"},
{"13","2","马华腾","32","18000","15000","2000"},
{"11","3","李彦宏","23","7000"},
{"11","4","刘强东","24","7300"},
{"12","5","雷军","28","10000","5000"},
{"11","6","任志强","22","6800"},
{"12","7","柳传志","29","10800","5200"},
{"13","8","杨元庆","30","19800","15000","2500"},
{"12","9","史玉柱","26","9800","5500"},
{"11","10","丁磊","21","6600"},
{"11","11","张朝阳","25","7100"},
{"12","12","杨致远","27","9600","4800"}
};
public static final String[][] EQUIPMENTS={
{},
{"22","联想T4","6000"},
{"21","戴尔","NEC17寸"},
{"21","戴尔","三星17寸"},
{"23","佳能 2900","激光"},
{"21","华硕","三星17寸"},
{"21","华硕","三星17寸"},
{"23","爱普生20K","针式"},
{"22","惠普m6","5800"},
{"21","戴尔","NEC 17寸"},
{"21","华硕","三星17寸"},
{"22","惠普m6","5800"}
};
}
NameListService
package work3.service;
import work3.domain.*;
import static work3.service.Data.*;
public class NameListService {
private Employee[] employees;
public NameListService() {
employees= new Employee[EMPLOYEES.length];
for(int i=0;i<employees.length;i++){
int type=Integer.parseInt(EMPLOYEES[i][0]);
int id=Integer.parseInt(EMPLOYEES[i][1]);
String name=EMPLOYEES[i][2];
int age=Integer.parseInt(EMPLOYEES[i][3]);
double salary=Double.parseDouble(EMPLOYEES[i][4]);
Equipment equipment;
double bonus;
int stock;
if(type==EMPLOYEE){
employees[i]=new Employee(id,name,age,salary);
} else if(type==PROGRAMMER){
equipment=createEquipment(i);
employees[i]=new Programmer(id,name,age,salary,equipment);
} else if(type==DESIGNER){
equipment=createEquipment(i);
bonus=Double.parseDouble(EMPLOYEES[i][5]);
employees[i]=new Designer(id,name,age,salary,equipment,bonus);
} else if(type==ARCHITECT){
equipment=createEquipment(i);
bonus=Double.parseDouble(EMPLOYEES[i][5]);
stock=Integer.parseInt(EMPLOYEES[i][6]);
employees[i]=new Architect(id,name,age,salary,equipment,bonus,stock);
}
}
}
public Equipment createEquipment(int index){
int key=Integer.parseInt(EQUIPMENTS[index][0]);
if(key==PC){
String model=EQUIPMENTS[index][1];
String display=EQUIPMENTS[index][2];
return new PC(model,display);
}else if(key==NOTEBOOK){
String model=EQUIPMENTS[index][1];
int price=Integer.parseInt(EQUIPMENTS[index][2]);
return new NoteBook(model,price);
}else if(key==PRINTER){
String name=EQUIPMENTS[index][1];
String type=EQUIPMENTS[index][2];
return new Printer(name,type);
}
return null;
}
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];
}
throw new TeamException("找不到指定员工");
}
}
Status
package work3.service;
public class Status {
private String NAME;
private Status(String name) {
this.NAME = name;
}
public static final Status FREE=new Status("FREE");
public static final Status BUSY=new Status("BUSY");
public static final Status VOCATION=new Status("VOCATION");
public String toString(){
return NAME;
}
}
TeamException
package work3.service;
public class TeamException extends Exception{
static final long serialVersionUID = -3324229948L;
public TeamException() {
super();
}
public TeamException(String msg){
super(msg);
}
}
TeamService
package work3.service;
import work3.domain.*;
public class TeamService {
private int counter=1;
private final int MAX_MEMBER=5;
private Programmer[] team=new Programmer[MAX_MEMBER];
private int total;
public TeamService() {
super();
}
public Programmer[] getTeam(){
Programmer[] team=new Programmer[total];
for(int i=0;i<total;i++){
team[i]=this.team[i];
}
return team;
}
public void addMember(Employee e)throws TeamException{
if(total==MAX_MEMBER){
throw new TeamException("成员已满,无法添加");
}
if(!(e instanceof Programmer)){
throw new TeamException("该成员不是开发人员,无法添加");
}
if(isExit(e)){
throw new TeamException("该成员已在本开发团队中");
}
Programmer p=(Programmer) e;
if(p.getStatus()==Status.BUSY){
throw new TeamException("该成员已是某团队成员");
}
if(p.getStatus()==Status.VOCATION){
throw new TeamException("该员工正在休假,无法添加");
}
int numOfArch=0,numOfDes=0,nuOfPro=0;
for(int i=0;i<total;i++){
if(team[i] instanceof Architect){
numOfArch++;
}else if(team[i] instanceof Designer){
numOfDes++;
}else if(team[i] instanceof Programmer){
nuOfPro++;
}
}
if(numOfArch>1){
throw new TeamException("团队至多只能有一名架构师");
}else if(numOfDes>2){
throw new TeamException("团队至多只能有两名设计师");
}else if(nuOfPro>3){
throw new TeamException("团队至多只能有三名程序员");
}
team[total++]=p;
p.setStatus(Status.BUSY);
p.setMemberId(counter++);
}
public boolean isExit(Employee e){
for(int i=0;i<total;i++){
if(team[i].getId()==e.getId()){
return true;
}
}
return false;
}
public void removerMeMber(int memberId)throws TeamException{
int i;
for(i=0;i<total;i++){
if(team[i].getMemberId()==memberId){
team[i].setStatus(Status.FREE);
break;
}
}
if(i==total){
throw new TeamException("未找到指定memberId的员工,删除失败");
}
for(i=i+1;i<total;i++){
team[i-1]=team[i];
}
team[--total]=null;
}
}
view文件
TeamView
package work3.view;
import work3.domain.Employee;
import work3.domain.Programmer;
import work3.service.*;
public class TeamView {
private NameListService listSvc=new NameListService();
private TeamService teamSvc=new TeamService();
public void enterMainMenu(){
char menu=0;
boolean loopFlag=true;
while(loopFlag){
if(menu!='1') listAllEmployees();
System.out.print("1-团队列表 2-添加团队成员 3-删除团队成员 4-退出 请选择(1~4):");
menu=TSUtility.readMenuSelection();
switch (menu){
case '1':
getTeam();
break;
case '2':
addMember();
break;
case '3':
deleteMember();
break;
case '4':
System.out.print("确认是否退出(Y/N):");
char isExit=TSUtility.readConfirmSelection();
if(isExit=='Y'){
loopFlag=false;
}
break;
}
}
}
private void listAllEmployees(){
System.out.println("----------------------------------开发团队调度软件----------------------------------\n");
Employee[] employees=listSvc.getAllEmployees();
if(employees.length==0||employees==null){
System.out.println("公司中没有任何员工信息");
return;
}
System.out.println("ID\t姓名\t年龄\t工资\t职位\t状态\t奖金\t股票\t领用设备");
for(int i=0;i<employees.length;i++){
System.out.println(employees[i]);
}
System.out.println("---------------------------------------------------------------------------------\n");
}
private void getTeam(){
System.out.println("------------------------------------团队成员列表-----------------------------------\n");
Programmer[] team=teamSvc.getTeam();
if(team.length==0||team==null){
System.out.println("开发团队目前没有任何成员!");
System.out.println("---------------------------------------------------------------------------------\n");
return;
}
System.out.println("TID/ID\t姓名\t年龄\t工资\t职位\t奖金\t股票");
for(int i=0;i<team.length;i++){
System.out.println(team[i].getDetailsForTeam());
}
System.out.println("---------------------------------------------------------------------------------\n");
TSUtility.readReturn();
}
private void addMember(){
System.out.println("---------------------------------------添加成员-----------------------------------\n");
System.out.print("请输入要添加的成员的ID:");
int id=TSUtility.readInt();
try {
Employee emp = listSvc.getEmployee(id);
teamSvc.addMember(emp);
System.out.println("添加成功");
}catch (TeamException e){
System.out.println("添加失败原因:"+e.getMessage());
}
TSUtility.readReturn();
}
private void deleteMember(){
System.out.println("---------------------------------------删除成员-----------------------------------");
System.out.print("请输入要删除员工的TID:");
int memberId=TSUtility.readInt();
System.out.print("确然是否删除(Y/N):");
char isDelete=TSUtility.readConfirmSelection();
if(isDelete=='Y'){
try{
teamSvc.removerMeMber(memberId);
System.out.println("删除成功");
}catch (TeamException e){
System.out.println("添加失败原因:"+e.getMessage());
}
}
TSUtility.readReturn();
}
public static void main(String[] args) {
TeamView view=new TeamView();
view.enterMainMenu();
}
}
TSUtility
package work3.view;
import java.util.Scanner;
public class TSUtility {
static Scanner scanner=new Scanner(System.in);
public static char readMenuSelection(){
char c;
while(true){
String str=readKeyBoard(1,false);
c=str.charAt(0);
if(c>='1'&&c<='4') break;
System.out.print("输入错误,请重新输入:");
}
return c;
}
public static void readReturn(){
System.out.print("按回车键继续...");
String str=readKeyBoard(100,true);
}
public static int readInt(){
int number;
while(true){
String str=readKeyBoard(2,false);
try{
number=Integer.parseInt(str);
break;
}catch (NumberFormatException e){
System.out.print("数字输入错误,请重新输入:");
}
}
return number;
}
public static char readConfirmSelection(){
char c;
while(true){
String str=readKeyBoard(1,false).toUpperCase();
c=str.charAt(0);
if(c=='N'||c=='Y') break;
}
return c;
}
public static String readKeyBoard(int lime,boolean blanReturn){
String line="";
while(scanner.hasNextLine()) {
line = scanner.nextLine();
if (line.length() == 0) {
if (blanReturn) {
return line;
}
else continue;
}
if (line.length() < 1 || line.length() > lime) {
System.out.print("输入长度(不大于" + lime + ")输入错误,请重新输入:");
}
else break;
}
return line;
}
}