文章目录

  • java门禁系统项目实现
    • 一、项目目标和任务
    • 二、项目结构
      • package sys
        • Computer.java
        • ControlSys.java
        • Door.java
        • InputEquip.java
      • package user
        • Admin.java
        • Employee.java
        • Visitor.java
      • package validate
        • ConfirmInfo.java
      • package test
        • EmployeeTest.java
        • VisitorTest.java
    • 三、项目测试

java门禁系统项目实现

一、项目目标和任务

  1. 项目目标

    (1)理解面向对象编程思想。

    (2)掌握类的继承实质含义,方法重载实现方式,与方法覆盖有什么区别,类、方法,变量的访问控制符和限定的使用原则,理解接口的定义和实现。

  2. 项目任务

    某公司安装了电子门,要设计门禁系统,要求如下:

    公司的雇员可以凭借密码、胸卡或指纹进入公司;计算机根据雇员的验证方式对其身份进行验证;管理员在监控室可以通过按钮直接开启电子门;访客可以按门铃请求进入,由管理员为其放行,管理员可以为新职员设置密码。

二、项目结构

package sys

Computer.java

package sys;
import validate.ConfirmInfo;
public class Computer implements ConfirmInfo{public boolean check(String inputInfo){/*** 项目中要求密码、胸卡、指纹都以字符串形式从控制台输入* 其中密码以“pa”开头* 胸卡以“ca”开头* 指纹以“fi”开头* */String temp = inputInfo.substring(0, 2);//截取字符串信息。//密码验证。if (temp.equals("pa")) {System.out.println("密码验证正确!");}//胸卡验证。else if (temp.equals("ca")) {System.out.println("胸卡验证正确!");}//指纹验证。else if (temp.equals("fi")) {System.out.println("指纹验证正确!");} else {System.out.println("验证错误,请重新输入!");temp = null;}if(temp==null){return false;}else{return true;}}
}

ControlSys.java

package sys;
import java.util.*;
/*** 门禁系统类* */
public class ControlSys {private Door door;//门禁系统的电子门private Computer computer;//门禁系统的计算机。private InputEquip inputEquip;//门禁系统的输入设备。private boolean ring;//门铃,true为鸣响,false为安静。private boolean openSign;//开门信号,由管理员按下按钮时产生。//提供输入设备。public InputEquip getInputEquip(){return this.inputEquip;}//设置门铃。public void setRing(boolean ring){this.ring = ring;}//获取门铃状态。public boolean getRingState(){return this.ring;}//设置开门信号。public void setOpenSign(boolean openSign){this.openSign = openSign;}//获取开门信号。public boolean getOpenSign(){return this.openSign;}public ControlSys(){this.door = new Door();this.inputEquip = new InputEquip();this.computer = new Computer();this.ring = false;this.openSign = false;}public void open(){try {this.door.open();System.out.println("门已开启,请赶快通过,将在五秒后关闭!");Thread.sleep(5000);}catch(InterruptedException e){//捕获异常。return;}System.out.println("门已关闭!");this.door.close();}public void work(){if(this.inputEquip.getInputInfo()!=null){if(this.computer.check(this.inputEquip.getInputInfo())){this.open();}}}
}

Door.java

package sys;
import java.util.*;//该报存放了支持一系列标准操作以管理数据集、访问时间和日期信息以及分析字符串的类/**
*门禁系统的电子门类
* */
public final class Door {public final static String OPEN = "门已开启";public final static String CLOSE = "门已开启";private String doorState = CLOSE;//表示电子门当前状态。public Door(){//构造函数。this.setState(CLOSE);}/*开启电子门*/public void open(){this.setState(OPEN);}/*关闭电子门*/public void close(){this.setState(CLOSE);}private void setState(String state){this.doorState = state;}/*获取电子门状态*/public Boolean getState(){if(doorState.equals(OPEN)){return true;}else{return false;}}
}

InputEquip.java

package sys;
import java.util.Scanner;
/*** 门禁系统的输入设备*/
public class InputEquip {private String inputInfo;//输入设备缓存,暂时保存输入信息。public InputEquip(){this.inputInfo = null;}public void input() {Scanner scanner = new Scanner(System.in);System.out.print("身份验证:");inputInfo = scanner.next();}public String getInputInfo(){return this.inputInfo;}
}

package user

Admin.java

package user;
import java.util.Scanner;
import sys.ControlSys;
public class Admin extends Employee{//调用父类的构造方法。public Admin(){super();}public Admin(String name){super(name);}/*开启电子门*/public void work(ControlSys controlSys){Scanner scanner = new Scanner(System.in);System.out.println("管理员"+this.getName()+"按下开门按钮?[yes/no]");String button = scanner.next();if(button.equals("yes")){System.out.println("管理员"+this.getName()+"同意开门!");controlSys.open();}else{System.out.println("管理员"+this.getName()+"拒绝开门!");}}
}

Employee.java

package user;
import sys.ControlSys;
/*** 雇员类* */
public class Employee extends Visitor{private String password;public Employee(){super();password = null;}public Employee(String name){super(name);}//向门禁系统输入验证信息。public void input(ControlSys controlSys){controlSys.getInputEquip().input();}
}

Visitor.java

package user;
import java.util.Scanner;
import sys.ControlSys;
/*** 访客类。* */
public class Visitor {private String name;//姓名public Visitor(){name=null;}public Visitor(String name){this.name = name;}/*** 访客按铃。* */public String getName(){return this.name;}public void setName(String name){this.name = name ; }//按下门铃操作。public boolean pressRing(ControlSys controlSys){Scanner scanner = new Scanner(System.in);System.out.println("访客"+this.getName()+"按门铃?[yes/no]");String button = scanner.nextLine();if(button.equals("yes")){controlSys.setRing(true);System.out.println("访客"+this.getName()+"按下门铃");return true;}else{return false;}}
}

package validate

ConfirmInfo.java

package validate;public interface ConfirmInfo {//验证身份boolean check(String input);
}

package test

EmployeeTest.java

package test;
import user.Admin;
import user.Employee;
import sys.ControlSys;
public class EmployeeTest {public static void main(String[] args){Employee employee = new Employee("张三");ControlSys controlSys = new ControlSys();while(true) {employee.input(controlSys);controlSys.work();}}
}

VisitorTest.java

package test;
import sys.ControlSys;
import user.Visitor;
import user.Admin;
public class VisitorTest {public static void main(String[] args){ControlSys controlSys = new ControlSys();Visitor visitor = new Visitor("张三");Admin admin = new Admin("李四");while(true){if(visitor.pressRing(controlSys)){admin.work(controlSys);}}}
}

三、项目测试

访客测试如图:

雇员测试如图:

java门禁系统项目开发实现相关推荐

  1. JAVA车辆进出厂预报-物流门禁系统对接开发-王大师王文峰开发(去年已完成)

    本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,<Java王大师王天师>作者 公众号:山峯草堂,非技术多篇文章,专注于天道酬勤的 Java 开发问题.中国国学.传统文化和代 ...

  2. 有关宿舍NFC门禁系统的开发

    有关宿舍NFC门禁系统的开发 咕咕咕 文章目录 **有关宿舍NFC门禁系统的开发** 前言 一.需要的设备 二.写入代码 1.安装arduino IDE 2.安装rc522库文件 2.上传代码 将es ...

  3. 毕业设计 基于stm32的RFID与指纹识别的门禁系统 (项目开源)

    文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 射频识别 3.1 射频识别技术 3.2 射频识别模块 3.2.1 RFID模块 3.2.2 RFID模块组成 4 系统设计 4.1 系统架构 ...

  4. java门禁系统_java项目:门禁系统

    门禁系统 门禁系统:包和文件划分 system包 Computer.java package com.handson.sys; import com.handson.validate.CardVld; ...

  5. 关于智能码控门禁系统项目的二维码验证问题

    现在这个项目的话网页端做完了,网页端实现的就是管理员登录,然后可以添加访客,访客添加完后回对应访客生成一个二维码,访客可以拿着这个二维码到门禁系统扫描,如果验证成功就可以开门,但是现在我不太懂扫描二维 ...

  6. java门禁系统实训,Java 并发课题 : CyclicBarrier 打造一个安全的门禁系统

    Java 并发专题 : CyclicBarrier 打造一个安全的门禁系统 继续并发专题~ 这次介绍CyclicBarrier:看一眼API的注释: /** * A synchronization a ...

  7. java门禁系统_java实现门禁系统

    本文实例为大家分享了java实现门禁系统的具体代码,供大家参考,具体内容如下 Door.java package com.handson.sys; public class Door { public ...

  8. java门禁系统面向对象程序设计

    门禁系统的体会 我觉得在写门禁系统之前,一定要有一个清晰的思路,要明确自己下一步要做哪些工作,要干什么,这样的速度和效率是比较高的.在写程序时要有一个认真端正的态度,不急不燥,有困难,这不是写不下去的 ...

  9. stm32指纹、蓝牙识别门禁系统项目详解

    摘要 本着做stm32项目的初心,在11月份中旬便开始着手了这个项目的开展,如今已经12月份下旬了,也是将近一个多月了.也算是接近项目的尾声了,在这段时间,学到了不少东西,记录下来,也算是对自己的一个 ...

最新文章

  1. fragment切换事件
  2. 领扣-104/111 二叉树的最大深度 Maximum Depth of Binary Tree MD
  3. spring初始化web_了解Spring Web初始化
  4. Asp.net MVC3.0 基于不同的角色显示不同的菜单
  5. rust 编程入门_面向初学者的Rust –最受欢迎的编程语言入门
  6. Java-JUC(十):线程按序交替执行
  7. 局域网中计算机网络密码查看,Win10怎么查看电脑上已知的wifi网络密码
  8. [09]表单元素(下)
  9. AD快捷键还原为默认配置
  10. rxbus 源码_关于RxBus实现方式的思考
  11. 汽车CAN通信解析(一)
  12. oppo小布机器人_OPPO小布助手2.0强势来袭 三大版块迎来重大升级
  13. 亳州市发明专利申请费用多少钱,权利要求书要怎么写?
  14. 编程新手该如何调优程序?程序员必备性能调优利器——火焰图
  15. python代码实现进制转换
  16. maven到底是什么
  17. 大容量Flash型AT91系列ARM核微控制器
  18. OLAP与OLTP的区别
  19. 新手入坑GMSSL(一)Windows下编译GMSSL并生成CA证书
  20. C# Tif格式转Jpg

热门文章

  1. R语言计算时间序列数据的移动平均值(滚动平均值、例如5日均线、10日均线等):使用zoo包中的rollmean函数计算k个周期移动平均值
  2. [下属谈话]管理者与下属谈话的技巧以及注意点
  3. 在Wordpress网页直接插入bilibili视频方法
  4. 使用Java做ORC图片识别
  5. 【2019-09-11】为学日益,为道日损
  6. C#SharpDevelop如何开发插件详细记录
  7. 如何设置计算机自动连接宽带,宽带自动连接设置,教您电脑怎么设置宽带自动连接...
  8. Gradle sync failed: No variants found for ':app'. Check build files to ensure at least one varian...
  9. ImageMagick convert多张照片JPG转成pdf格式,pdfunite合并PDF文件
  10. 用事实说话,我们的数据库应选择RAID几?