本文实例为大家分享了java实现门禁系统的具体代码,供大家参考,具体内容如下

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;

}

}

Computer.java

package com.handson.sys;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Scanner;

import com.handson.validate.CardVId;

import com.handson.validate.FingVId;

import com.handson.validate.PassWordVId;

import com.handson.validate.Validate;

public class Computer {

HashMap Card = new HashMap();

ArrayList Fing = new ArrayList();

String[] Pass = new String[10];

public Computer() {

Card.put(0, "car000");

Card.put(1, "car001");

Card.put(2, "car002");

Fing.add("fing000");

Fing.add("fing001");

Fing.add("fing002");

Pass[0] = "pas000";

Pass[1] = "pas001";

Pass[2] = "pas002";

Pass[3] = "";

}

public boolean validate(String imputMsg) {

boolean ban = false;

Scanner in = new Scanner(System.in);

System.out.println("请选择验证方式:1-卡号 2-指纹 3-密码");

int n = in.nextInt();

Validate val;

switch (n) {

case 1:

val = new CardVId();

ban = val.check(Card, imputMsg);

break;

case 2:

val = new FingVId();

ban = val.check(Fing, imputMsg);

break;

case 3:

val = new PassWordVId();

ban = val.check(Pass, imputMsg);

break;

default:

System.out.println("选择错误!");

}

return ban;

}

}

Amind.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.equalsIgnoreCase("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;

}

}

Employee.java

package com.handson.user;

import java.util.Scanner;

import com.handson.sys.Door;

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;

}

}

Guest.java

package com.handson.user;

import java.util.Scanner;

import com.handson.sys.Door;

public class Guest {

private String name; // 姓名

// 构造方法

public Guest() {

}

public Guest(String name) {

this.name = name;

}

// 访客按门铃

public void pressRing(Door door) {

Scanner scanner = new Scanner(System.in);

System.out.print("访客(" + this.getName() + ")按门铃?[y/n]:");

String btn = scanner.nextLine();

if (btn.equals("y")) {

door.setBellState(true); // 门铃响起

System.out.println("访客(" + this.getName() + ")按下门铃");

} else if (btn.equals("n")) {

return;

}

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

Validate.java

package com.handson.validate;

public interface Validate {

public abstract boolean check(Object ob, String inputMsg);

}

CardVId.java

package com.handson.validate;

import java.util.HashMap;

public class CardVId implements Validate {

public boolean check(Object ob, String inputMsg) {

boolean ban = false;

HashMap srContent = (HashMap) ob;

for (int i = 0; i < srContent.size(); i++) {

if (srContent.get(i).equals(inputMsg)) {

ban = true;

break;

}

}

return ban;

}

}

FingVId.java

package com.handson.validate;

import java.util.ArrayList;

public class FingVId implements Validate {

public boolean check(Object ob, String inputMsg) {

boolean ban = false;

ArrayList srContent = (ArrayList) ob;

for (int i = 0; i < srContent.size(); i++) {

if (srContent.get(i).equals(inputMsg)) {

ban = true;

break;

}

}

return ban;

}

}

PasswordVId.java

package com.handson.validate;

public class PassWordVId implements Validate {

@Override

public boolean check(Object ob, String inputMsg) {

boolean ban = false;

String[] srContent = (String[]) ob;

for (int i = 0; i < srContent.length; i++) {

if (srContent[i].equals("")) {

break;

} else {

if (srContent[i].equals(inputMsg))

ban = true;

}

}

return ban;

}

}

Test.java

package com.handson.test;

import java.util.Scanner;

import com.handson.sys.Computer;

import com.handson.sys.Door;

import com.handson.user.Admin;

import com.handson.user.Guest;

public class Test {

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("***************************************************");

Scanner in = new Scanner(System.in);

Door door = new Door();

boolean ban = true;

boolean bn = false;

Computer coputer = new Computer();

Admin admin = new Admin("王石头");

while (ban) {

System.out.println("请选择扮演的角色:1.来客 2.管理员 3.员工 其它:结束");

String n = in.next();

switch (Integer.parseInt(n)) {

case 1:

Guest guest = new Guest("赵强");

guest.pressRing(door); // 按门铃

bn = admin.work(door, guest); // 管理员监听门铃

/* 检查开门信号(监听门铃,响) */

break;

case 2:

case 3:

System.out.println("请输入验证信息:");

bn = coputer.validate(in.next());

break;

default:

ban = false;

}

if (bn) {

door.open(); // 开启电子门

System.out.println("-------^_^管理员 " + admin.getName()

+ " 开启了电子门");

/* 电子门开启状态将维持5秒后关闭 */

try {

Thread.sleep(5000); // 让电子门开启状态维持5秒

} catch (InterruptedException e) {

System.out.println(e.getMessage());

}

door.close(); // 关闭电子门

System.out.println("---电子门5秒后自动关闭---");

} else

System.out.println("验证失败");

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java 门禁接口_java实现门禁系统相关推荐

  1. java 微信退款接口_java版微信和支付宝退款接口

    本文实例为大家分享了java微信退款接口和支付宝退款接口的具体代码,供大家参考,具体内容如下 1.微信退款接口 相对来说我感觉微信的退款接口还是比较好调用的,直接发送httppost请求即可: /** ...

  2. java中抽象类 接口_java中的抽象类与接口

    1.抽象类的定义 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 2.简单实例 ...

  3. java的set接口_Java集合-Set接口

    importorg.junit.Test;import java.util.*;/*** * Collection接口:单列集合,用来存储一个一个的对象 * (不常用)子接口Set:存储无序的.不可重 ...

  4. java 栈 队列 接口_Java队列接口

    java 栈 队列 接口 介绍: 队列是FIFO(先进先出)抽象数据类型(ADT). 换句话说,按插入顺序将元素删除. java.util.Queue是Java 中的接口,并且从java.util.C ...

  5. java语言sql接口_Java语言SQL接口

    Java语言SQL接口 编辑 锁定 讨论 上传视频 <Java语言SQL接口>是1997年清华大学出版社出版的图书,作者是孙元等.本书覆盖了JDBC的各个方面,适合于有一定的Java语言编 ...

  6. java什么是接口_Java接口是什么

    Java接口是什么 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法,以下 ...

  7. java调用restful接口_Java调用RESTful接口的几种方式

    前端一般通过Ajax来调用,后端调用的方式还是挺多的,比如HttpURLConnection,HttpClient,Spring的RestTemplate 服务端代码如下: 服务端接口请求的URL:h ...

  8. java调用php接口_java 如何调用接口

    在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适,所以,问题来了,java如何调用接口?很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接 ...

  9. java 类 抽象类 接口_Java抽象类和接口

    抽象类和接口 一.抽象类和抽象方法 对于抽象类,首先需要介绍抽象方法,而抽象类因抽象方法的存在而存在 1.抽象方法 (1)必要性: 有些父类方法不确定如何写方法体,但是对于继承它的子类又必须用到这个方 ...

最新文章

  1. 【arduino】不做不死系列,用arduino玩CyberPi童芯派之helloworld点灯
  2. IOS学习之路七(使用 Operation 异步运行任务)
  3. Python模块包中__init__.py文件的作用(转载)
  4. python3基础知识_python3基础知识梳理
  5. linux转换vcf格式,如何使用awk分割vCard通讯录文件(.vcf)
  6. java版模拟经营_我的世界JAVA版
  7. design and analysis of computational and physical experiments
  8. centos 7 一键安装gitlab
  9. 根据各工序时间画aoe网_灯饰画的优点以及定制要求
  10. MYSQL PGA SGA设置
  11. 加好友饥荒服务器没有响应,饥荒进不去别人的服务器 | 手游网游页游攻略大全...
  12. 7-3 寻找大富翁 (50分)
  13. python对气象工作有没有用_Python语言在气象资料下载中的应用
  14. 如何根据IP地址获取局域网内的主机名称
  15. DDNS请求到底请求了什么
  16. 【C盘内存不足的解决方法】
  17. linux挂载镜像iso文件作为yum源
  18. 商汤科技徐立:AI 将在10 年内创造一个印度和中国的总产值
  19. 如何进行SYN攻击防范
  20. 常州和南京计算机工资水平,南京和苏州哪一个城市工资高?六张图带你看懂江苏各市平均工资情况...

热门文章

  1. 元年洞察|如何打造企业数据能力组件中心
  2. 高路入云端:从应用现代化,通往中国式现代化
  3. etabs数据_ETABS分析计算功能有多强?看完你就知道了!
  4. 学数据分析师有专业要求吗?
  5. spring boot rest接口自动生成文档(包含swagger)
  6. C# OpenCvSharp 抠证件照的人物图像,并生成透明背景
  7. COMP9024笔记
  8. 怎样识别DWG图纸版本,CAD高低版本转换
  9. 4.PLC开关量及顺序控制梯形图程序设计方法
  10. ACM Divisions