项目任务:
某公司安装了电子门,要设计门禁系统,要求如下:
公司的雇员(employee)可以凭借密码(pa)、胸卡(ca)、指纹(fi)进入公司;
计算机根据雇员的验证方式对其身份进行验证;
管理员(admin)在监控室可以通过按钮直接开启电子门;
访客(guest)可以按门铃请求进入,由管理员为其放行;
管理员可以为新职员设置密码。
package sys: class ControlSys package sys; public class ControlSys { private Door door; private Computer computer; private InputEquip inputEquip; private boolean ring; private boolean openSign; public ControlSys(){ this.ring= false; this.openSign = false; inputEquip = new InputEquip(); computer = new Computer(); door = new Door(); } public void guestSetRing(){ if (this.ring == false){ this.ring = true; }else{ this.ring = false; } } public boolean getRing(){ return this.ring; } public void setOpenSign(){ this.openSign = true; } public void employeeSetInfo(String inputString, String password){ inputEquip.inputString(inputString, password); String string = inputEquip.outputString(); boolean conf = computer.confirm(string); this.openSign = door.ifOpenDoor(conf); } public void work() throws InterruptedException{ if(this.openSign == true){ System.out.println("Door Open."); java.lang.Thread.sleep(5000); System.out.println("Door Close."); this.openSign = false; }else{ System.out.println("Identity Verificate Failure."); } } }
class InputEquip
package sys; public final class InputEquip{ private String input; InputEquip(){ this.input = null; } public void inputString(String inputString, String password){ this.input = inputString + password; } public String outputString(){ return this.input; } }
class Computer
package sys; public final class Computer { private String input; Computer(){ this.input = null; } private void inputFormConfirm(String inputString){ if (inputString.substring(0, 2).equals("pa")){ this.input = inputString.substring(2); }else if (inputString.substring(0, 2).equals("ca")){ this.input = inputString.substring(2); }else if (inputString.substring(0, 2).equals("fi")){ this.input = inputString.substring(2); }else{ this.input = null; } } public boolean confirm(String inputString){ inputFormConfirm(inputString); if (this.input == null){ return false; }else{ return true; } } }
class Door
package sys; public final class Door { public boolean ifOpenDoor(boolean confirm){ if (confirm == true){ return true; }else{ return false; } } }
package user:
class Guest package user; import sys.*; public class Guest { public void pressRing(ControlSys controSys){ controSys.guestSetRing(); } }
class Employee
package user; import sys.*; public class Employee extends Guest{ private String info; protected String password; public Employee(String _info, String _password){ this.info = _info; this.password = _password; } public void InputInfo(ControlSys controlSys){ controlSys.employeeSetInfo(this.info, this.password); } }
class Admin
package user; import sys.*; public class Admin extends Employee{ public Admin(String _info, String _password){ super(_info, _password); } public void setEmployeePassword(String newPassword){ super.password = newPassword; } public void workDoor(ControlSys controlSys, Guest guest){ if (controlSys.getRing()){ controlSys.setOpenSign(); controlSys.guestSetRing(); } } }
package test:
class GuestTest package test; import sys.*; import user.*; public class GuestTest { public static void main(String args[]){ Guest guest = new Guest(); Admin admin = new Admin("pa", "12345"); ControlSys sys = new ControlSys(); System.out.println("门禁系统_管理员测试"); guest.pressRing(sys); admin.workDoor(sys, guest); try{ sys.work(); }catch(Exception e){ e.printStackTrace(); } } }
class EmployeeTest
package test; import sys.*; import user.*; public class EmployeeTest { public static void main(String[] args) { Employee employee = new Employee("pa", "12345"); // 雇员 ControlSys sys = new ControlSys(); // 门禁系统 System.out.println("门禁系统_雇员测试"); employee.InputInfo(sys); try{ sys.work(); }catch(Exception e){ e.printStackTrace(); } } }
class AdminTest
package test; import sys.*; import user.*; public class AdminTest { public static void main(String[] args) { Admin admin = new Admin("pa", "12345"); // 管理员 ControlSys sys = new ControlSys(); // 门禁系统 System.out.println("门禁系统_管理员测试"); admin.InputInfo(sys); try{ sys.work(); }catch(Exception e){ e.printStackTrace(); } } }
Test运行结果
GuestTest:
门禁系统_访客测试
Door Open.
Door Close.
EmployeeTest:
门禁系统_雇员测试
Door Open.
Door Close.
AdminTest:
门禁系统_管理员测试
Door Open.
Door Close