java項(xiàng)目:門禁系統(tǒng)

門禁系統(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)閉---");
            }
        }
    }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玄糟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子袄秩,更是在濱河造成了極大的恐慌阵翎,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件播揪,死亡現(xiàn)場離奇詭異贮喧,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)猪狈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門箱沦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人雇庙,你說我怎么就攤上這事谓形。” “怎么了疆前?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵寒跳,是天一觀的道長。 經(jīng)常有香客問我竹椒,道長童太,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮书释,結(jié)果婚禮上翘贮,老公的妹妹穿的比我還像新娘。我一直安慰自己爆惧,他們只是感情好狸页,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扯再,像睡著了一般芍耘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上熄阻,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天斋竞,我揣著相機(jī)與錄音,去河邊找鬼秃殉。 笑死窃页,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的复濒。 我是一名探鬼主播脖卖,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼巧颈!你這毒婦竟也來了畦木?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤砸泛,失蹤者是張志新(化名)和其女友劉穎十籍,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唇礁,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡勾栗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了盏筐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片围俘。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖琢融,靈堂內(nèi)的尸體忽然破棺而出界牡,到底是詐尸還是另有隱情,我是刑警寧澤漾抬,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布宿亡,位于F島的核電站,受9級特大地震影響纳令,放射性物質(zhì)發(fā)生泄漏挽荠。R本人自食惡果不足惜克胳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望圈匆。 院中可真熱鬧毯欣,春花似錦、人聲如沸臭脓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽来累。三九已至,卻和暖如春窘奏,著一層夾襖步出監(jiān)牢的瞬間嘹锁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工着裹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留领猾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓骇扇,卻偏偏與公主長得像摔竿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子少孝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法继低,類相關(guān)的語法,內(nèi)部類的語法稍走,繼承相關(guān)的語法袁翁,異常的語法,線程的語...
    子非魚_t_閱讀 31,631評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理婿脸,服務(wù)發(fā)現(xiàn)粱胜,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,811評論 0 11
  • PLEASE READ THE FOLLOWING APPLE DEVELOPER PROGRAM LICENSE...
    念念不忘的閱讀 13,471評論 5 6
  • 1 昨晚跟朋友聊天狐树,他突然問我:你覺得什么叫屌絲呢焙压? 然后他告訴我,八九年前他手里的錢能夠買半套房子抑钟,可是奮斗了八...
    彼小清閱讀 254評論 0 0