java项目:门禁系统

门禁系统


门禁系统:包和文件划分

源码下载


  • 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];  // 计算机存储的雇员密码,数字字符串
    private String[] cards       = new String[100];  // 计算机存储的雇员胸卡号,字符串形式
    private String[] fingerMarks = new String[100];  // 计算机存储的雇员指纹,字符串形式

    //无参构造方法,创建一组测试用密码、指纹、卡号
    public Computer(){
        pwds[0]   = "2222";
        cards[0]       = "accp";
        fingerMarks[0] = "accp";
    }
    
    //验证
    public boolean validate(String inputMsg){
        boolean bn = false;
        Validate validate = null;
        if (inputMsg.length()>2)
        {
            String prefix = inputMsg.substring(0, 2);
            /*验证密码*/
            if(prefix.equals("pa")){
                validate = new PasswordVld();
                bn = validate.check(pwds, inputMsg);
            }
            /*验证胸卡*/
            else if(prefix.equals("ca")){
                validate = new CardVld();
                bn = validate.check(cards, inputMsg);
            } 
            /*验证指纹*/
            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 = "门已关闭"; 
    private String state   = CLOSE; // 电子门状态
    private boolean bellState = false; //门铃状态

    //构造方法
    public Door(){
        this.setState(CLOSE);
    }

    //开启电子门
    public void open(){
        this.setState(OPEN);
    }

    //关闭电子门
    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 {
    
    //  重写验证方法-根据卡号验证
    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 {
    
    //重写验证方法-根据指纹验证
    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 {
    
    //重写验证方法-根据密码验证
    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 {
    
    //构造方法
    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,监听门铃
    public boolean work(Door door, Guest guest) {
        boolean bn = false;
        if (door.isBellState() ) {  //门铃响
            bn = this.work(door);
            door.setBellState(false);
        }
        return bn;
    }

//    //管理员的工作方法3,录入验证信息
//    public void addUserInfo( String valType, String valStr) {
//        if (valType.equals("pa")) {
//            controlSys.getComputer().addPassWord(Integer.parseInt(valStr));
//            controlSys.getLogger().debug(
//                    "管理员(" + this.getName() + ")录入新的密码验证信息");
//        } else if (valType.equals("ca")) {
//            controlSys.getComputer().addCard(valStr);
//            controlSys.getLogger().debug(
//                    "管理员(" + this.getName() + ")录入新的胸卡验证信息");
//        } else if (valType.equals("fi")) {
//            controlSys.getComputer().addFingerMark(valStr);
//            controlSys.getLogger().debug(
//                    "管理员(" + this.getName() + ")录入新的指纹验证信息");
//        } else {
//            controlSys.getLogger().debug("验证信息录入失败");
//        }
//    }
}

Employee.java

package com.handson.user;

import java.util.Scanner;

public class Employee extends Guest {
    
    //构造方法
    public Employee() {
        super();
    }
    public Employee(String name) {
        super(name);
    }
    
    //输入身份信息
    public String input() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("身份验证:" );
        String passStr = scanner.nextLine();
        return passStr;
        //controSys.getInputEquip().input();
    }
}

Guest.java

package com.handson.user;

import java.util.Scanner;

public class Employee extends Guest {
    
    //构造方法
    public Employee() {
        super();
    }
    public Employee(String name) {
        super(name);
    }
    
    //输入身份信息
    public String input() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("身份验证:" );
        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("门禁系统的使用方法\n" +
              " 1.模拟输入密码:以“pa”开头,后跟密码\n" +
              " 2.模拟刷卡:以“ca”开头,后跟卡号\n" +
              " 3.模拟取指纹:以“fi”开头,后跟表示指纹的字符串\n"+
              " 4.模拟管理员按下开门按钮:输入“y”");
        System.out.println("***************************************************");
        System.out.println("门禁系统启动");
        
        System.out.println("门禁系统---管理员测试");
        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() + " 开启了电子门");
            }
            
            /* 电子门开启状态将维持5秒后关闭 */
            if(door.getState().equals(Door.OPEN)){
                try {
                    Thread.sleep(5000);             // 让电子门开启状态维持5秒
                } catch (InterruptedException e) {
                    System.out.println(e.getMessage());
                }
                door.close();                       // 关闭电子门
                System.out.println("---电子门5秒后自动关闭---");
            }
        }
    }

}

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("门禁系统的使用方法\n" +
              " 1.模拟输入密码:以“pa”开头,后跟密码\n" +
              " 2.模拟刷卡:以“ca”开头,后跟卡号\n" +
              " 3.模拟取指纹:以“fi”开头,后跟表示指纹的字符串\n"+
              " 4.模拟管理员按下开门按钮:输入“y”");
        System.out.println("***************************************************");
        System.out.println("门禁系统启动");
        
        System.out.println("门禁系统---员工测试");
        System.out.println("***************************************************");
        
        Employee emp = new Employee("员工张三丰");
        Computer computer = new Computer();
        Door door = new Door();
        while(true){
            String inputMsg = emp.input();//员工输入身份验证

            boolean bn = computer.validate(inputMsg);//根据输入的内容,验证身份
            if (bn) //验证通过
            {
                door.open();
                System.out.println("<身份验证成功, " + emp.getName() + " 通过电子门>");
                
                if (door.getState().equals(Door.OPEN))
                {
                    try {
                        Thread.sleep(5000);             // 让电子门开启状态维持5秒
                    } catch (InterruptedException e) {
                        System.out.println(e.getMessage());
                    }
                    door.close();                       // 关闭电子门
                    System.out.println("---电子门5秒后自动关闭---");
                }
            } else { //验证没通过
                System.out.println("-^-^-^-^-^-身份验证失败!");
            }
        }
    }

}

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("门禁系统的使用方法\n" +
              " 1.模拟输入密码:以“pa”开头,后跟密码\n" +
              " 2.模拟刷卡:以“ca”开头,后跟卡号\n" +
              " 3.模拟取指纹:以“fi”开头,后跟表示指纹的字符串\n"+
              " 4.模拟管理员按下开门按钮:输入“y”");
        System.out.println("***************************************************");
        System.out.println("门禁系统启动");
        
        System.out.println("门禁系统---访客测试");
        System.out.println("***************************************************");
        
        Guest guest = new Guest("赵强");
        Admin admin = new Admin("王石头");
        Door door = new Door();
        while(true){
            guest.pressRing(door);   //按门铃
            
            boolean bn = admin.work(door, guest);   //管理员监听门铃

            /* 检查开门信号(监听门铃,响) */
            if(bn){
                door.open();                        // 开启电子门
                System.out.println("-------^_^管理员 " + admin.getName() + " 开启了电子门");
            }

            /* 电子门开启状态将维持5秒后关闭 */
            if(door.getState().equals(Door.OPEN)){
                try {
                    Thread.sleep(5000);             // 让电子门开启状态维持5秒
                } catch (InterruptedException e) {
                    System.out.println(e.getMessage());
                }
                door.close();                       // 关闭电子门
                System.out.println("---电子门5秒后自动关闭---");
            }
        }
    }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,296评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 一. Java基础部分.................................................
    wy_sure阅读 3,731评论 0 11
  • PLEASE READ THE FOLLOWING APPLE DEVELOPER PROGRAM LICENSE...
    念念不忘的阅读 13,305评论 5 6
  • 1 昨晚跟朋友聊天,他突然问我:你觉得什么叫屌丝呢? 然后他告诉我,八九年前他手里的钱能够买半套房子,可是奋斗了八...
    彼小清阅读 236评论 0 0