package door.bxl.sys;
import org.apache.log4j.Logger;
public class ControlSys {
private Door door; // 门禁系统的电子门
private Computer computer; // 门禁系统的计算机
private InputEquip inputEquip; // 门禁系统的输入设备
private int ring; // 门铃,0为安静,1为鸣响
private int openSign; // 开门信号,由管理员按下按钮时产生
private Logger logger; // 日志
public ControlSys() {
this.door = new Door();
this.computer = new Computer();
this.inputEquip = new InputEquip();
this.ring = 0;
this.openSign = 0;
this.logger = Logger.getLogger(TestLog4j.class.getName());
System.out.println("门禁系统的使用方法" + "\n" + "1.模拟输入密码:以“pa”开头,后跟密码" + "\n"
+ "2.模拟刷卡:以“ca”开头,后跟卡号" + "\n" + "3.模拟取指纹:以“fi”开头,后跟表示指纹的字符串"
+ "\n" + "4.模拟管理员按下开门按钮:输入“y”" + "\n"
+ "***************************************************" + "\n");
}
// 工作方法
public void work() {
// 检查输入设备的输入缓存
if (inputEquip.getInput() != null) {
if (inputEquip.getInput().equals("exit")) {
logger.info("门禁系统关闭");
System.exit(0);
}
if (computer.validate(inputEquip.getInput())) {
door.open(); // 开启电子门
logger.info("<身份验证成功, " + inputEquip.getInput() + " 通过电子门>"); // 记录日志
inputEquip.setInput(null); // 清空输入设备缓存
} else {
logger.info("身份验证失败"); // 记录日志
}
}
// 检查开门信号
if (this.getOpenSign() == 1) {
door.open(); // 开启电子门
logger.info("管理员开启了电子门"); // 记录日志
this.setOpenSign(0); // 电子门开门信号归零
}
// 电子门开启状态将维持5秒后关闭
if (door.getState().equals("门已开启")) {
try {
Thread.sleep(5000); // 让电子门开启状态维持5秒
} catch (InterruptedException e) {
logger.debug(e.getMessage());
}
door.close(); // 关闭电子门
logger.info("电子门关闭"); // 记录日志
}
}
public void ring()
{
this.ring=1;
}
public int getOpenSign() {
return openSign;
}
public void setOpenSign(int openSign) {
this.openSign = openSign;
}
public Computer getComputer() {
return computer;
}
public void setComputer(Computer computer) {
this.computer = computer;
}
public InputEquip getInputEquip() {
return inputEquip;
}
public void setInputEquip(InputEquip inputEquip) {
this.inputEquip = inputEquip;
}
public Logger getLogger() {
return logger;
}
public void setLogger(Logger logger) {
this.logger = logger;
}
public int getRing() {
return ring;
}
public void setRing(int ring) {
this.ring = ring;
}
}