标签:java String package 门禁系统 System 开发 import public
文章目录
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。