设计题目:门禁管理系统(DOS)设计目的:某公司安装了电子门,要设计门禁系统。设计要求:(1) 公司的雇员可以凭借密码、卡号和指纹进入公司(2) 计算机根据雇员的验证方式对其身份进行验证(3) 管理员在监控室可以通过按钮直接开启电子门 (4) 访客可以按门铃请求进入,由管理员为其放行。按照上述要求用Java语言规范化编写代码

时间: 2023-12-31 20:03:44 浏览: 19
以下是门禁管理系统(DOS)的Java代码实现,其中包括员工类、管理员类、访客类和门禁系统类: ```java import java.util.HashMap; import java.util.Scanner; // 员工类 class Employee { private String name; private String password; private String cardNumber; private String fingerprint; public Employee(String name, String password, String cardNumber, String fingerprint) { this.name = name; this.password = password; this.cardNumber = cardNumber; this.fingerprint = fingerprint; } public String getName() { return name; } public String getPassword() { return password; } public String getCardNumber() { return cardNumber; } public String getFingerprint() { return fingerprint; } } // 管理员类 class Admin { private String password; public Admin(String password) { this.password = password; } public String getPassword() { return password; } } // 访客类 class Visitor { private String name; public Visitor(String name) { this.name = name; } public String getName() { return name; } } // 门禁系统类 class AccessControlSystem { private HashMap<String, Employee> employees = new HashMap<>(); private Admin admin; private Visitor visitor; public void addEmployee(Employee employee) { employees.put(employee.getCardNumber(), employee); } public void setAdmin(Admin admin) { this.admin = admin; } public void setVisitor(Visitor visitor) { this.visitor = visitor; } public void access(String verificationMethod) { if (verificationMethod.equals("password")) { Scanner scanner = new Scanner(System.in); System.out.print("请输入密码:"); String password = scanner.next(); for (Employee employee : employees.values()) { if (employee.getPassword().equals(password)) { System.out.println("欢迎回来," + employee.getName() + "!"); return; } } System.out.println("密码错误,无法进入公司!"); } else if (verificationMethod.equals("cardNumber")) { Scanner scanner = new Scanner(System.in); System.out.print("请输入卡号:"); String cardNumber = scanner.next(); if (employees.containsKey(cardNumber)) { System.out.println("欢迎回来," + employees.get(cardNumber).getName() + "!"); } else { System.out.println("卡号错误,无法进入公司!"); } } else if (verificationMethod.equals("fingerprint")) { Scanner scanner = new Scanner(System.in); System.out.print("请输入指纹:"); String fingerprint = scanner.next(); for (Employee employee : employees.values()) { if (employee.getFingerprint().equals(fingerprint)) { System.out.println("欢迎回来," + employee.getName() + "!"); return; } } System.out.println("指纹错误,无法进入公司!"); } else { System.out.println("验证方式错误!"); } } public void openDoor() { Scanner scanner = new Scanner(System.in); System.out.print("请输入管理员密码:"); String password = scanner.next(); if (admin.getPassword().equals(password)) { System.out.println("管理员已开启电子门!"); } else { System.out.println("管理员密码错误,无法开启电子门!"); } } public void letVisitorIn() { System.out.println("访客已进入公司!"); } } // 测试代码 public class Main { public static void main(String[] args) { AccessControlSystem accessControlSystem = new AccessControlSystem(); Employee employee1 = new Employee("张三", "123456", "0001", "001"); Employee employee2 = new Employee("李四", "654321", "0002", "002"); accessControlSystem.addEmployee(employee1); accessControlSystem.addEmployee(employee2); Admin admin = new Admin("admin"); accessControlSystem.setAdmin(admin); Visitor visitor = new Visitor("王五"); accessControlSystem.setVisitor(visitor); System.out.println("请选择验证方式:1.密码 2.卡号 3.指纹"); Scanner scanner = new Scanner(System.in); int choice = scanner.nextInt(); switch (choice) { case 1: accessControlSystem.access("password"); break; case 2: accessControlSystem.access("cardNumber"); break; case 3: accessControlSystem.access("fingerprint"); break; default: System.out.println("输入错误!"); } System.out.println("管理员是否开启电子门?1.是 2.否"); int choice2 = scanner.nextInt(); if (choice2 == 1) { accessControlSystem.openDoor(); } System.out.println("是否有访客请求进入?1.是 2.否"); int choice3 = scanner.nextInt(); if (choice3 == 1) { accessControlSystem.letVisitorIn(); } } } ``` 这是一个基本的门禁管理系统,可以根据不同的验证方式对员工进行身份验证,管理员可以通过密码开启电子门,访客需要管理员放行才能进入公司。注意,这个系统还有很多可以改进的地方,比如可以增加数据库存储员工信息、管理员密码加密等功能,读者可以根据自己的实际情况进行改进。

相关推荐

最新推荐

recommend-type

C语言程序设计实现门禁控制系统

系统将ID卡技术、计算机控制技术与电子门锁有机结合,用ID卡替代钥匙,配合计算机实现智能化门禁控制和管理,有效的解决了传统门锁的使用繁琐和无法信息记录等不足,利用数据控制器采集的数据实现数字化管理可为内部...
recommend-type

汽车电子中的电动汽车的系统级EMC设计

摘要:本文在分析整车EMC设计现状的基础上,以大量部件和整车的设计、测试经验为支撑,借鉴学习国外一些车型的先进设计思路,从EMC工程设计角度,提出了一种电动汽车系统级EMC开发方法。该方法成功应用于各研发车型...
recommend-type

基础电子中的DIY无极限:自己设计一款反馈式主动降噪耳机,其实很简单

 设备综述 同设计前馈式耳机一样,反馈式耳机也需要特定的设备,其中最重要的就是能够测量频率响应和相位响应的音频测量系统。 适合用来进行这些测量的音频设备包括Audio Precision、Bruel Soundcheck等。搭配...
recommend-type

电力电子技术-三相交流调压系统电路设计-课程设计.doc

本文为三相交流调压系统设计的具体内容,涉及MATLAB仿真以及电力电子技术的内容,希望对大家有所帮助
recommend-type

2020 年TI 杯大学生电子设计竞赛 E 题:放大器非线性失真研究装置

2020 年TI 杯大学生电子设计竞赛 E 题:放大器非线性失真研究装置 设计并制作一个放大器非线性失真研究装置,其组成如图1所示,图中的 和 为 1×2切换开关,晶体管放大器只允许有一个输入端口和一个输出端口。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SQL怎么实现 数据透视表

SQL可以通过使用聚合函数和GROUP BY子句来实现数据透视表。 例如,假设有一个销售记录表,其中包含产品名称、销售日期、销售数量和销售额等信息。要创建一个按照产品名称、销售日期和销售额进行汇总的数据透视表,可以使用以下SQL语句: ``` SELECT ProductName, SaleDate, SUM(SaleQuantity) AS TotalQuantity, SUM(SaleAmount) AS TotalAmount FROM Sales GROUP BY ProductName, SaleDate; ``` 该语句将Sales表按照ProductName和SaleDat
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。