设计题目:门禁管理系统(DOS)设计目的:某公司安装了电子门,要设计门禁系统。设计要求:(1) 公司的雇员可以凭借密码、卡号和指纹进入公司(2) 计算机根据雇员的验证方式对其身份进行验证(3) 管理员在监控室可以通过按钮直接开启电子门 (4) 访客可以按门铃请求进入,由管理员为其放行.请依据上述要求输出Java源代码
时间: 2023-07-16 09:13:54 浏览: 56
以下是一个简单的 Java 代码示例,实现了上述门禁系统的基本功能:
```java
import java.util.*;
public class DoorControlSystem {
// 定义雇员信息类
private static class Employee {
public String name; // 姓名
public String password; // 密码
public int cardID; // 卡号
public String fingerprint; // 指纹
public boolean isVisitor; // 是否为访客
public Employee(String name, String password, int cardID, String fingerprint, boolean isVisitor) {
this.name = name;
this.password = password;
this.cardID = cardID;
this.fingerprint = fingerprint;
this.isVisitor = isVisitor;
}
}
// 定义雇员列表和管理员密码
private static List<Employee> employeeList = new ArrayList<>();
private static final String ADMIN_PASSWORD = "admin123";
public static void main(String[] args) {
// 添加一些雇员信息
employeeList.add(new Employee("张三", "123456", 10001, "finger001", false));
employeeList.add(new Employee("李四", "654321", 10002, "finger002", false));
employeeList.add(new Employee("王五", "111111", 10003, "finger003", false));
// 进入门禁系统主循环
while (true) {
System.out.println("欢迎使用门禁管理系统,请选择验证方式:");
System.out.println("1. 密码验证");
System.out.println("2. 卡号验证");
System.out.println("3. 指纹验证");
System.out.println("4. 开启电子门");
System.out.println("5. 访客请求进入");
System.out.println("0. 退出系统");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
switch (choice) {
case 1: // 密码验证
System.out.print("请输入密码:");
String password = scanner.next();
if (verifyWithPassword(password))
System.out.println("验证通过,欢迎进入公司!");
else
System.out.println("验证失败,请重试!");
break;
case 2: // 卡号验证
System.out.print("请输入卡号:");
int cardID = scanner.nextInt();
if (verifyWithCardID(cardID))
System.out.println("验证通过,欢迎进入公司!");
else
System.out.println("验证失败,请重试!");
break;
case 3: // 指纹验证
System.out.print("请输入指纹:");
String fingerprint = scanner.next();
if (verifyWithFingerprint(fingerprint))
System.out.println("验证通过,欢迎进入公司!");
else
System.out.println("验证失败,请重试!");
break;
case 4: // 开启电子门(管理员权限)
System.out.print("请输入管理员密码:");
String adminPassword = scanner.next();
if (adminPassword.equals(ADMIN_PASSWORD)) {
System.out.println("管理员权限已验证通过,电子门已开启!");
} else {
System.out.println("管理员密码错误,无法开启电子门!");
}
break;
case 5: // 访客请求进入(管理员权限)
System.out.print("请输入管理员密码:");
adminPassword = scanner.next();
if (adminPassword.equals(ADMIN_PASSWORD)) {
System.out.println("请问访客姓名是什么?");
String name = scanner.next();
System.out.println("请问访客需要多长时间内进入公司(单位:分钟)?");
int duration = scanner.nextInt();
System.out.println("访客 " + name + " 已被允许进入公司,有效期为 " + duration + " 分钟!");
} else {
System.out.println("管理员密码错误,无法为访客放行!");
}
break;
case 0: // 退出系统
System.out.println("欢迎下次使用门禁管理系统!");
System.exit(0);
default:
System.out.println("无效的选择,请重试!");
break;
}
}
}
// 根据密码进行验证
private static boolean verifyWithPassword(String password) {
for (Employee employee : employeeList) {
if (!employee.isVisitor && employee.password.equals(password))
return true;
}
return false;
}
// 根据卡号进行验证
private static boolean verifyWithCardID(int cardID) {
for (Employee employee : employeeList) {
if (!employee.isVisitor && employee.cardID == cardID)
return true;
}
return false;
}
// 根据指纹进行验证
private static boolean verifyWithFingerprint(String fingerprint) {
for (Employee employee : employeeList) {
if (!employee.isVisitor && employee.fingerprint.equals(fingerprint))
return true;
}
return false;
}
}
```
上述代码中,我们使用 `Employee` 类来存储雇员信息,包括姓名、密码、卡号、指纹和是否为访客。在主循环中,我们通过 `Scanner` 来读取用户的选择,然后分别调用相应的验证方法进行身份验证。其中,在开启电子门和放行访客时需要管理员权限,因此需要先要求输入管理员密码进行验证。