門禁系統(tǒng)
門禁系統(tǒng):包和文件劃分
-
system包
Computer.java
package com.handson.sys;
import com.handson.validate.CardVld;
import com.handson.validate.FingerVld;
import com.handson.validate.PasswordVld;
import com.handson.validate.Validate;
public class Computer {
private String[] pwds = new String[100]; // 計算機(jī)存儲的雇員密碼,數(shù)字字符串
private String[] cards = new String[100]; // 計算機(jī)存儲的雇員胸卡號疼邀,字符串形式
private String[] fingerMarks = new String[100]; // 計算機(jī)存儲的雇員指紋喂江,字符串形式
//無參構(gòu)造方法,創(chuàng)建一組測試用密碼檩小、指紋开呐、卡號
public Computer(){
pwds[0] = "2222";
cards[0] = "accp";
fingerMarks[0] = "accp";
}
//驗(yàn)證
public boolean validate(String inputMsg){
boolean bn = false;
Validate validate = null;
if (inputMsg.length()>2)
{
String prefix = inputMsg.substring(0, 2);
/*驗(yàn)證密碼*/
if(prefix.equals("pa")){
validate = new PasswordVld();
bn = validate.check(pwds, inputMsg);
}
/*驗(yàn)證胸卡*/
else if(prefix.equals("ca")){
validate = new CardVld();
bn = validate.check(cards, inputMsg);
}
/*驗(yàn)證指紋*/
else if(prefix.equals("fi")) {
validate = new FingerVld();
bn = validate.check(fingerMarks,inputMsg);
}
}
return bn;
}
// //增加新胸卡
// public void addCards(String card) {
// for(int i=0;i<100;i++){
// if(this.cards[i]==null){
// this.cards[i] = card;
// return;
// }
// }
// }
//
// //增加新指紋
// public void addFingerMarks(String fingerMark) {
// for(int i=0;i<100;i++){
// if(this.fingerMarks[i]==null){
// this.fingerMarks[i] = fingerMark;
// return;
// }
// }
// }
//
// //增加新密碼
// public void addPwds(int passWord) {
// for(int i=0;i<100;i++){
// if(this.pwds[i]==null){
// this.pwds[i] = passWord*2+"";
// return;
// }
// }
// }
//setter/getter
public String[] getCards() {
return cards;
}
public String[] getfingerMarks() {
return fingerMarks;
}
public String[] getPassWords() {
return pwds;
}
}
Door.java
package com.handson.sys;
public class Door {
public final static String OPEN = "門已開啟";
public final static String CLOSE = "門已關(guān)閉";
private String state = CLOSE; // 電子門狀態(tài)
private boolean bellState = false; //門鈴狀態(tài)
//構(gòu)造方法
public Door(){
this.setState(CLOSE);
}
//開啟電子門
public void open(){
this.setState(OPEN);
}
//關(guān)閉電子門
public void close(){
this.setState(CLOSE);
}
//setter/getter
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public boolean isBellState() {
return bellState;
}
public void setBellState(boolean bellState) {
this.bellState = bellState;
}
}
-
validata包
CardVld.java
package com.handson.validate;
public class CardVld implements Validate {
// 重寫驗(yàn)證方法-根據(jù)卡號驗(yàn)證
public boolean check(String[] srcContent, String inputMsg)
{
boolean bn = false;
for(int i=0; i<srcContent.length; i++){
if (inputMsg.substring(2).equals(srcContent[i]) ) // 解析輸入的密碼
{
bn = true;
break;
}
}
return bn;
}
}
FingerVld.java
package com.handson.validate;
public class FingerVld implements Validate {
//重寫驗(yàn)證方法-根據(jù)指紋驗(yàn)證
public boolean check(String[] srcContent, String inputMsg)
{
boolean bn = false;
for(int i=0; i<srcContent.length; i++){
if (inputMsg.substring(2).equals(srcContent[i]) ) // 解析輸入的密碼
{
bn = true;
break;
}
}
return bn;
}
}
PasswordVld.java
package com.handson.validate;
public class PasswordVld implements Validate {
//重寫驗(yàn)證方法-根據(jù)密碼驗(yàn)證
public boolean check(String[] srcContent, String inputMsg)
{
boolean bn = false;
for(int i=0; i<srcContent.length; i++){
if (inputMsg.substring(2).equals(srcContent[i]) ) // 解析輸入的密碼
{
bn = true;
break;
}
}
return bn;
}
}
Validate.java
package com.handson.validate;
public interface Validate {
public boolean check(String[] srcContent, String inputMsg);
}
-
user包
Admin.java
package com.handson.user;
import java.util.Scanner;
import com.handson.sys.Door;
public class Admin extends Employee {
//構(gòu)造方法
public Admin() {
super();
}
public Admin(String name) {
super(name);
}
//管理員的工作方法1烟勋,通過控制室的按鈕规求,開啟電子門
public boolean work(Door door) {
boolean bn = false;
Scanner scanner = new Scanner(System.in);
System.out.print("管理員(" + this.getName() + ")按開門按鈕筐付?[y/n]:");
String btn = scanner.nextLine();
if (btn.equals("y")) {
System.out.println("管理員(" + this.getName() + ")按下開門按鈕");
bn = true;
} else {
System.out.println("---管理員(" + this.getName() + ")拒絕開門");
}
return bn;
}
//管理員的工作方法2,監(jiān)聽門鈴
public boolean work(Door door, Guest guest) {
boolean bn = false;
if (door.isBellState() ) { //門鈴響
bn = this.work(door);
door.setBellState(false);
}
return bn;
}
// //管理員的工作方法3阻肿,錄入驗(yàn)證信息
// public void addUserInfo( String valType, String valStr) {
// if (valType.equals("pa")) {
// controlSys.getComputer().addPassWord(Integer.parseInt(valStr));
// controlSys.getLogger().debug(
// "管理員(" + this.getName() + ")錄入新的密碼驗(yàn)證信息");
// } else if (valType.equals("ca")) {
// controlSys.getComputer().addCard(valStr);
// controlSys.getLogger().debug(
// "管理員(" + this.getName() + ")錄入新的胸卡驗(yàn)證信息");
// } else if (valType.equals("fi")) {
// controlSys.getComputer().addFingerMark(valStr);
// controlSys.getLogger().debug(
// "管理員(" + this.getName() + ")錄入新的指紋驗(yàn)證信息");
// } else {
// controlSys.getLogger().debug("驗(yàn)證信息錄入失敗");
// }
// }
}
Employee.java
package com.handson.user;
import java.util.Scanner;
public class Employee extends Guest {
//構(gòu)造方法
public Employee() {
super();
}
public Employee(String name) {
super(name);
}
//輸入身份信息
public String input() {
Scanner scanner = new Scanner(System.in);
System.out.print("身份驗(yàn)證:" );
String passStr = scanner.nextLine();
return passStr;
//controSys.getInputEquip().input();
}
}
Guest.java
package com.handson.user;
import java.util.Scanner;
public class Employee extends Guest {
//構(gòu)造方法
public Employee() {
super();
}
public Employee(String name) {
super(name);
}
//輸入身份信息
public String input() {
Scanner scanner = new Scanner(System.in);
System.out.print("身份驗(yàn)證:" );
String passStr = scanner.nextLine();
return passStr;
//controSys.getInputEquip().input();
}
}
-
Test包
AdminTest.java
package com.handson.test;
import com.handson.sys.Door;
import com.handson.user.Admin;
public class AdminTest {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("門禁系統(tǒng)的使用方法\n" +
" 1.模擬輸入密碼:以“pa”開頭瓦戚,后跟密碼\n" +
" 2.模擬刷卡:以“ca”開頭,后跟卡號\n" +
" 3.模擬取指紋:以“fi”開頭丛塌,后跟表示指紋的字符串\n"+
" 4.模擬管理員按下開門按鈕:輸入“y”");
System.out.println("***************************************************");
System.out.println("門禁系統(tǒng)啟動");
System.out.println("門禁系統(tǒng)---管理員測試");
System.out.println("***************************************************");
Admin admin = new Admin("王石頭");
Door door = new Door();
while(true){
boolean bn = admin.work(door); //通過控制室的按鈕開啟電子門
/* 檢查開門信號(檢查電子門较解,開) */
if(bn){
door.open(); // 開啟電子門
System.out.println("-------^_^管理員 " + admin.getName() + " 開啟了電子門");
}
/* 電子門開啟狀態(tài)將維持5秒后關(guān)閉 */
if(door.getState().equals(Door.OPEN)){
try {
Thread.sleep(5000); // 讓電子門開啟狀態(tài)維持5秒
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
door.close(); // 關(guān)閉電子門
System.out.println("---電子門5秒后自動關(guān)閉---");
}
}
}
}
EmployeeTest.java
package com.handson.test;
import com.handson.sys.Computer;
import com.handson.sys.Door;
import com.handson.user.Employee;
public class EmployeeTest {
//main方法
public static void main(String[] args) {
System.out.println("門禁系統(tǒng)的使用方法\n" +
" 1.模擬輸入密碼:以“pa”開頭,后跟密碼\n" +
" 2.模擬刷卡:以“ca”開頭赴邻,后跟卡號\n" +
" 3.模擬取指紋:以“fi”開頭印衔,后跟表示指紋的字符串\n"+
" 4.模擬管理員按下開門按鈕:輸入“y”");
System.out.println("***************************************************");
System.out.println("門禁系統(tǒng)啟動");
System.out.println("門禁系統(tǒng)---員工測試");
System.out.println("***************************************************");
Employee emp = new Employee("員工張三豐");
Computer computer = new Computer();
Door door = new Door();
while(true){
String inputMsg = emp.input();//員工輸入身份驗(yàn)證
boolean bn = computer.validate(inputMsg);//根據(jù)輸入的內(nèi)容,驗(yàn)證身份
if (bn) //驗(yàn)證通過
{
door.open();
System.out.println("<身份驗(yàn)證成功姥敛, " + emp.getName() + " 通過電子門>");
if (door.getState().equals(Door.OPEN))
{
try {
Thread.sleep(5000); // 讓電子門開啟狀態(tài)維持5秒
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
door.close(); // 關(guān)閉電子門
System.out.println("---電子門5秒后自動關(guān)閉---");
}
} else { //驗(yàn)證沒通過
System.out.println("-^-^-^-^-^-身份驗(yàn)證失敿楸骸!");
}
}
}
}
GuestTest.java
package com.handson.test;
import com.handson.sys.Door;
import com.handson.user.Admin;
import com.handson.user.Guest;
public class GuestTest {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("門禁系統(tǒng)的使用方法\n" +
" 1.模擬輸入密碼:以“pa”開頭彤敛,后跟密碼\n" +
" 2.模擬刷卡:以“ca”開頭与帆,后跟卡號\n" +
" 3.模擬取指紋:以“fi”開頭,后跟表示指紋的字符串\n"+
" 4.模擬管理員按下開門按鈕:輸入“y”");
System.out.println("***************************************************");
System.out.println("門禁系統(tǒng)啟動");
System.out.println("門禁系統(tǒng)---訪客測試");
System.out.println("***************************************************");
Guest guest = new Guest("趙強(qiáng)");
Admin admin = new Admin("王石頭");
Door door = new Door();
while(true){
guest.pressRing(door); //按門鈴
boolean bn = admin.work(door, guest); //管理員監(jiān)聽門鈴
/* 檢查開門信號(監(jiān)聽門鈴墨榄,響) */
if(bn){
door.open(); // 開啟電子門
System.out.println("-------^_^管理員 " + admin.getName() + " 開啟了電子門");
}
/* 電子門開啟狀態(tài)將維持5秒后關(guān)閉 */
if(door.getState().equals(Door.OPEN)){
try {
Thread.sleep(5000); // 讓電子門開啟狀態(tài)維持5秒
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
door.close(); // 關(guān)閉電子門
System.out.println("---電子門5秒后自動關(guān)閉---");
}
}
}
}