java门禁系统项目开发实现
文章目录
- 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)理解面向对象编程思想。
(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门禁系统项目开发实现相关推荐
- JAVA车辆进出厂预报-物流门禁系统对接开发-王大师王文峰开发(去年已完成)
本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,<Java王大师王天师>作者 公众号:山峯草堂,非技术多篇文章,专注于天道酬勤的 Java 开发问题.中国国学.传统文化和代 ...
- 有关宿舍NFC门禁系统的开发
有关宿舍NFC门禁系统的开发 咕咕咕 文章目录 **有关宿舍NFC门禁系统的开发** 前言 一.需要的设备 二.写入代码 1.安装arduino IDE 2.安装rc522库文件 2.上传代码 将es ...
- 毕业设计 基于stm32的RFID与指纹识别的门禁系统 (项目开源)
文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 射频识别 3.1 射频识别技术 3.2 射频识别模块 3.2.1 RFID模块 3.2.2 RFID模块组成 4 系统设计 4.1 系统架构 ...
- java门禁系统_java项目:门禁系统
门禁系统 门禁系统:包和文件划分 system包 Computer.java package com.handson.sys; import com.handson.validate.CardVld; ...
- 关于智能码控门禁系统项目的二维码验证问题
现在这个项目的话网页端做完了,网页端实现的就是管理员登录,然后可以添加访客,访客添加完后回对应访客生成一个二维码,访客可以拿着这个二维码到门禁系统扫描,如果验证成功就可以开门,但是现在我不太懂扫描二维 ...
- java门禁系统实训,Java 并发课题 : CyclicBarrier 打造一个安全的门禁系统
Java 并发专题 : CyclicBarrier 打造一个安全的门禁系统 继续并发专题~ 这次介绍CyclicBarrier:看一眼API的注释: /** * A synchronization a ...
- java门禁系统_java实现门禁系统
本文实例为大家分享了java实现门禁系统的具体代码,供大家参考,具体内容如下 Door.java package com.handson.sys; public class Door { public ...
- java门禁系统面向对象程序设计
门禁系统的体会 我觉得在写门禁系统之前,一定要有一个清晰的思路,要明确自己下一步要做哪些工作,要干什么,这样的速度和效率是比较高的.在写程序时要有一个认真端正的态度,不急不燥,有困难,这不是写不下去的 ...
- stm32指纹、蓝牙识别门禁系统项目详解
摘要 本着做stm32项目的初心,在11月份中旬便开始着手了这个项目的开展,如今已经12月份下旬了,也是将近一个多月了.也算是接近项目的尾声了,在这段时间,学到了不少东西,记录下来,也算是对自己的一个 ...
最新文章
- fragment切换事件
- 领扣-104/111 二叉树的最大深度 Maximum Depth of Binary Tree MD
- spring初始化web_了解Spring Web初始化
- Asp.net MVC3.0 基于不同的角色显示不同的菜单
- rust 编程入门_面向初学者的Rust –最受欢迎的编程语言入门
- Java-JUC(十):线程按序交替执行
- 局域网中计算机网络密码查看,Win10怎么查看电脑上已知的wifi网络密码
- [09]表单元素(下)
- AD快捷键还原为默认配置
- rxbus 源码_关于RxBus实现方式的思考
- 汽车CAN通信解析(一)
- oppo小布机器人_OPPO小布助手2.0强势来袭 三大版块迎来重大升级
- 亳州市发明专利申请费用多少钱,权利要求书要怎么写?
- 编程新手该如何调优程序?程序员必备性能调优利器——火焰图
- python代码实现进制转换
- maven到底是什么
- 大容量Flash型AT91系列ARM核微控制器
- OLAP与OLTP的区别
- 新手入坑GMSSL(一)Windows下编译GMSSL并生成CA证书
- C# Tif格式转Jpg
热门文章
- R语言计算时间序列数据的移动平均值(滚动平均值、例如5日均线、10日均线等):使用zoo包中的rollmean函数计算k个周期移动平均值
- [下属谈话]管理者与下属谈话的技巧以及注意点
- 在Wordpress网页直接插入bilibili视频方法
- 使用Java做ORC图片识别
- 【2019-09-11】为学日益,为道日损
- C#SharpDevelop如何开发插件详细记录
- 如何设置计算机自动连接宽带,宽带自动连接设置,教您电脑怎么设置宽带自动连接...
- Gradle sync failed: No variants found for ':app'. Check build files to ensure at least one varian...
- ImageMagick convert多张照片JPG转成pdf格式,pdfunite合并PDF文件
- 用事实说话,我们的数据库应选择RAID几?