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,String,package,门禁系统,System,开发,import,public 来源: https://blog.csdn.net/hzf0701/article/details/114338649