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


相关文章
|
4月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
434 0
|
5月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
609 1
|
5月前
|
Java
java入门代码示例
本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
506 0
|
5月前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
5月前
|
IDE 安全 Java
Lombok 在企业级 Java 项目中的隐性成本:便利背后的取舍之道
Lombok虽能简化Java代码,但其“魔法”特性易破坏封装、影响可维护性,隐藏调试难题,且与JPA等框架存在兼容风险。企业级项目应优先考虑IDE生成、Java Records或MapStruct等更透明、稳健的替代方案,平衡开发效率与系统长期稳定性。
411 115
|
4月前
|
移动开发 监控 小程序
java家政平台源码,家政上门清洁系统源码,数据多端互通,可直接搭建使用
一款基于Java+SpringBoot+Vue+UniApp开发的家政上门系统,支持小程序、APP、H5、公众号多端互通。涵盖用户端、技工端与管理后台,支持多城市、服务分类、在线预约、微信支付、抢单派单、技能认证、钱包提现等功能,源码开源,可直接部署使用。
373 24
|
4月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
447 8
|
4月前
|
安全 前端开发 Java
使用Java编写UDP协议的简易群聊系统
通过这个基础框架,你可以进一步增加更多的功能,例如用户认证、消息格式化、更复杂的客户端界面等,来丰富你的群聊系统。
232 11
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
Java与生成式AI:构建内容生成与创意辅助系统
生成式AI正在重塑内容创作、软件开发和创意设计的方式。本文深入探讨如何在Java生态中构建支持文本、图像、代码等多种生成任务的创意辅助系统。我们将完整展示集成大型生成模型(如GPT、Stable Diffusion)、处理生成任务队列、优化生成结果以及构建企业级生成式AI应用的全流程,为Java开发者提供构建下一代创意辅助系统的完整技术方案。
307 10
|
4月前
|
人工智能 监控 Java
Java与AI智能体:构建自主决策与工具调用的智能系统
随着AI智能体技术的快速发展,构建能够自主理解任务、制定计划并执行复杂操作的智能系统已成为新的技术前沿。本文深入探讨如何在Java生态中构建具备工具调用、记忆管理和自主决策能力的AI智能体系统。我们将完整展示从智能体架构设计、工具生态系统、记忆机制到多智能体协作的全流程,为Java开发者提供构建下一代自主智能系统的完整技术方案。
696 4