Java入门典题门禁系统项目

简介: Java入门典题门禁系统项目

项目任务:

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

公司的雇员(employee)可以凭借密码(pa)、胸卡(ca)、指纹(fi)进入公司;

计算机根据雇员的验证方式对其身份进行验证;

管理员(admin)在监控室可以通过按钮直接开启电子门;

访客(guest)可以按门铃请求进入,由管理员为其放行;

管理员可以为新职员设置密码。


package sys:
class ControlSys
package sys;
public class ControlSys {
  private Door door; 
  private Computer computer;
  private InputEquip inputEquip;
  private boolean ring;
  private boolean openSign;
  public ControlSys(){
  this.ring= false;
  this.openSign = false;
  inputEquip = new InputEquip();
  computer = new Computer();
  door = new Door();
  }
  public void guestSetRing(){
  if (this.ring == false){
    this.ring = true;
  }else{
    this.ring = false;
  }
  }
  public boolean getRing(){
  return this.ring;
  }
  public void setOpenSign(){
  this.openSign = true;
  }
  public void employeeSetInfo(String inputString, String password){
  inputEquip.inputString(inputString, password);
  String string = inputEquip.outputString();
  boolean conf = computer.confirm(string);
  this.openSign = door.ifOpenDoor(conf);
  }
  public void work() throws InterruptedException{
  if(this.openSign == true){
    System.out.println("Door Open.");
    java.lang.Thread.sleep(5000);
    System.out.println("Door Close.");
    this.openSign = false;
  }else{
    System.out.println("Identity Verificate Failure.");
  }
  }
}


class InputEquip

package sys;
public final class InputEquip{
  private String input;
  InputEquip(){
  this.input = null;
  }
  public void inputString(String inputString, String password){
  this.input = inputString + password;
  }
  public String outputString(){
  return this.input;
  }
}


class Computer

package sys;
public final class Computer {
  private String input;
  Computer(){
  this.input = null;
  }
  private void inputFormConfirm(String inputString){
  if (inputString.substring(0, 2).equals("pa")){
    this.input = inputString.substring(2);
  }else if (inputString.substring(0, 2).equals("ca")){
    this.input = inputString.substring(2);
  }else if (inputString.substring(0, 2).equals("fi")){
    this.input = inputString.substring(2);
  }else{
    this.input = null;
  }
  }
  public boolean confirm(String inputString){
  inputFormConfirm(inputString);
  if (this.input == null){
    return false;
  }else{
    return true;
  }
  }
}


class Door

package sys;
public final class Door { 
  public boolean ifOpenDoor(boolean confirm){
  if (confirm == true){
    return true;
  }else{
    return false;
  }
  }
}


package user:

class Guest
package user;
import sys.*;
public class Guest {
  public void pressRing(ControlSys controSys){
  controSys.guestSetRing();
  }
}


class Employee

package user;
import sys.*;
public class Employee extends Guest{
  private String info;
  protected String password;
  public Employee(String _info, String _password){
  this.info = _info;
  this.password = _password;
  }
  public void InputInfo(ControlSys controlSys){
  controlSys.employeeSetInfo(this.info, this.password);
  }
}


class Admin

package user;
import sys.*;
public class Admin extends Employee{
  public Admin(String _info, String _password){
  super(_info, _password);
  }
  public void setEmployeePassword(String newPassword){
  super.password = newPassword;
  }
  public void workDoor(ControlSys controlSys, Guest guest){
  if (controlSys.getRing()){
    controlSys.setOpenSign();
    controlSys.guestSetRing();
  }
  }
}


package test:

class GuestTest
package test;
import sys.*;
import user.*;
public class GuestTest {
  public static void main(String args[]){
  Guest guest = new Guest();
  Admin admin = new Admin("pa", "12345");
  ControlSys sys = new ControlSys();
  System.out.println("门禁系统_管理员测试");
  guest.pressRing(sys);
  admin.workDoor(sys, guest);
  try{
    sys.work();
  }catch(Exception e){
    e.printStackTrace();
  }
  }
}


class EmployeeTest

package test;
import sys.*;
import user.*;
public class EmployeeTest {
  public static void main(String[] args) {
  Employee employee = new Employee("pa", "12345"); // 雇员
  ControlSys sys = new ControlSys(); // 门禁系统
  System.out.println("门禁系统_雇员测试");
  employee.InputInfo(sys);
  try{
    sys.work();
  }catch(Exception e){
    e.printStackTrace();
  }
  }
}


class AdminTest

package test;
import sys.*;
import user.*;
public class AdminTest {
  public static void main(String[] args) {
  Admin admin = new Admin("pa", "12345"); // 管理员
  ControlSys sys = new ControlSys(); // 门禁系统
  System.out.println("门禁系统_管理员测试");
  admin.InputInfo(sys);
  try{
    sys.work();
  }catch(Exception e){
    e.printStackTrace();
  }
  }
}


Test运行结果

GuestTest:

门禁系统_访客测试

Door Open.

Door Close.


EmployeeTest:

门禁系统_雇员测试

Door Open.

Door Close.


AdminTest:

门禁系统_管理员测试

Door Open.

Door Close


相关文章
|
3天前
|
Java Android开发
Eclipse 创建 Java 项目
Eclipse 创建 Java 项目
18 4
|
5天前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
9天前
|
SQL Java 数据库连接
从理论到实践:Hibernate与JPA在Java项目中的实际应用
本文介绍了Java持久层框架Hibernate和JPA的基本概念及其在具体项目中的应用。通过一个在线书店系统的实例,展示了如何使用@Entity注解定义实体类、通过Spring Data JPA定义仓库接口、在服务层调用方法进行数据库操作,以及使用JPQL编写自定义查询和管理事务。这些技术不仅简化了数据库操作,还显著提升了开发效率。
21 3
|
11天前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
13天前
|
运维 自然语言处理 供应链
Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑器
通过门诊的申请,或者直接住院登记,通过”护士工作站“分配患者,完成后,进入医生患者列表,医生对应开具”长期医嘱“和”临时医嘱“,并在电子病历中,记录病情。病人出院时,停止长期医嘱,开具出院医嘱。进入出院审核,审核医嘱与住院通过后,病人结清缴费,完成出院。
44 3
|
12天前
|
前端开发 Java 数据库
如何实现一个项目,小白做项目-java
本教程涵盖了从数据库到AJAX的多个知识点,并详细介绍了项目实现过程,包括静态页面分析、数据库创建、项目结构搭建、JSP转换及各层代码编写。最后,通过通用分页和优化Servlet来提升代码质量。
31 1
|
17天前
|
存储 安全 Java
🌟Java零基础-反序列化:从入门到精通
【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
55 5
|
14天前
|
安全 Java 调度
Java中的多线程编程入门
【10月更文挑战第29天】在Java的世界中,多线程就像是一场精心编排的交响乐。每个线程都是乐团中的一个乐手,他们各自演奏着自己的部分,却又和谐地共同完成整场演出。本文将带你走进Java多线程的世界,让你从零基础到能够编写基本的多线程程序。
29 1
|
17天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
16 1
|
19天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。