本次代码仅面向大一刚入门Java面向对象编程的练习,本次代码仅作基础练习故没采用mvc架构(ps:后面会更一期mvc架构)
这是整个项目的目录结构
下面我按照从底层开始构建的代码顺序来发
Computer类
package com.handson.sys;
import com.handson.validate.CardVld;
import com.handson.validate.FingerVld;
import com.handson.validate.PasswordVld;
import com.handson.validate.Validate;
public class Computer {
private String[] pwds =new String[100];
private String[] cards =new String[100];
private String[] fingerMarks =new String[100];
public Computer() {
pwds[0]="2222";
cards[0]="accp";
fingerMarks[0]="accp";
}
public boolean validate(String inputMsg) {
boolean bn=false;
Validate validate=null;
if(inputMsg.length()>2) {
String prefix=inputMsg.substring(0,2);
if(prefix.equals("pa")) {
validate =new PasswordVld();
bn = validate.check(pwds, inputMsg);
}
else if(prefix.equals("ca")) {
validate =new CardVld();
bn = validate.check(cards, inputMsg);
}
else if(prefix.equals("fi")) {
validate =new FingerVld();
bn = validate.check(fingerMarks, inputMsg);
}
}
return bn;
}
public String[] getPwds() {
return pwds;
}
public String[] getCards() {
return cards;
}
public String[] getFingerMarks() {
return fingerMarks;
}
}
Door类
package com.handson.sys;
public class Door {
public final static String OPEN="门已开启";
public final static String CLOSE="门已关闭";
private String state =CLOSE;
private boolean bellState =false;
public Door() {
this.setState(CLOSE);
}
public void open() {
this.setState(OPEN);
}
public void close() {
this.setState(CLOSE);
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public boolean isBellState() {
return bellState;
}
public void setBellState(boolean bellState) {
this.bellState = bellState;
}
public static String getOpen() {
return OPEN;
}
public static String getClose() {
return CLOSE;
}
}
Guest类
package com.handson.user;
import java.util.Scanner;
import com.handson.sys.Door;
public class Guest {
private String name;
public Guest() {}
public Guest(String name) {
this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void pressRing(Door door) {
Scanner scanner=new Scanner(System.in);
System.out.print("访客("+this.getName()+")按门铃?[y/n]");
String btn=scanner.nextLine();
if(btn.equals("y")) {
door.setBellState(true);
System.out.print("访客("+this.getName()+")按下门铃");
}
else if(btn.equals("n")) {
return;
}
}
}
Employee类
package com.handson.user;
import java.util.Scanner;
public class Employee extends Guest{
public Employee() {
super();
}
public Employee(String name) {
super(name);
}
public String input() {
Scanner scanner=new Scanner(System.in);
System.out.print("身份验证 \n");
//修改
return scanner.nextLine();
}
}
Admin类
package com.handson.user;
import java.util.Scanner;
import com.handson.sys.Door;
public class Admin extends Employee{
public Admin() {
super();
}
public Admin(String name) {
super(name);
}
public boolean work(Door door) {
boolean bn =false;
Scanner scanner=new Scanner(System.in);
System.out.print("管理员("+this.getName()+")按开门按钮?[y/n]:");
String btn=scanner.nextLine();
// System.out.print("22222"+btn);
if(btn.equals("y")) {
System.out.print("管理员("+this.getName()+")按下开门按钮 \n");
bn=true;
}else {
System.out.print("---管理员("+this.getName()+")拒绝开门 \n");
}
return bn;
}
public boolean work(Door door,Guest guest) {
boolean bn=false;
if(door.isBellState()) {
bn=this.work(door);
door.setBellState(false);
}
return bn;
}
}
Validate接口
package com.handson.validate;
public interface Validate {
public boolean check(String[] srcContent,String inputMsg);
}
CardVld接口实现
package com.handson.validate;
public class CardVld implements Validate{
@Override
public boolean check(String[] srcContent, String inputMsg) {
boolean bn =false;
for(int i=0;i<srcContent.length;i++) {
if(inputMsg.substring(2).equals(srcContent[i])) {
bn=true;
break;
}
}
return bn;
}
}
FingerVld接口实现
package com.handson.validate;
public class FingerVld implements Validate{
@Override
public boolean check(String[] srcContent, String inputMsg) {
boolean bn =false;
for(int i=0;i<srcContent.length;i++) {
if(inputMsg.substring(2).equals(srcContent[i])) {
bn=true;
break;
}
}
return bn;
}
}
PasswordVld接口实现
package com.handson.validate;
public class PasswordVld implements Validate{
@Override
public boolean check(String[] srcContent, String inputMsg) {
boolean bn =false;
for(int i=0;i<srcContent.length;i++) {
if(inputMsg.substring(2).equals(srcContent[i])) {
bn=true;
break;
}
}
return bn;
}
}
以下为三个测试类加运行截图:
AdminTest类
package com.handson.test;
import com.handson.sys.Door;
import com.handson.user.Admin;
public class AdminTest {
public static void main(String[] args) {
System.out.println("门禁系统使用方法\n"+
"1.模拟输入密码:以'pa'开头,后跟密码\n"+
"2.模拟刷卡:以'ca',后跟卡号\n"+
"3.模拟取指纹:以'fi'开头,后跟表示指纹的字符串\n"+
"4.模拟管理员按下开门按钮:输入'y'");
System.out.println("********************************");
System.out.println("门禁系统启动");
System.out.println("门禁系统---管理员测试");
System.out.println("********************************");
Admin admin=new Admin("张三");
Door door=new Door();
while (true) {
boolean bn=admin.work(door);
System.out.print("111111"+bn);
if(bn) {
door.open();
System.out.println("-----管理员"+admin.getName()+"开启电子门");
}
if(door.getState().equals(Door.OPEN)) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
}
door.close();
System.out.println("电子门5秒后关闭");
}
}
}
}
EmployeeTest类
package com.handson.test;
import com.handson.sys.Computer;
import com.handson.sys.Door;
import com.handson.user.Employee;
public class EmployeeTest {
public static void main(String[] args) {
System.out.println("雇员门禁系统使用方法\n"+
"1.模拟输入密码:以'pa'开头,后跟密码\n"+
"2.模拟刷卡:以'ca',后跟卡号\n"+
"3.模拟取指纹:以'fi'开头,后跟表示指纹的字符串\n"+
"4.模拟管理员按下开门按钮:输入'y'");
System.out.println("********************************");
System.out.println("门禁系统启动");
System.out.println("门禁系统---员工测试");
System.out.println("********************************");
Employee emp=new Employee("员工李四");
Computer conputer=new Computer();
Door door=new Door();
while (true) {
String inputMsg =emp.input();
boolean bn =conputer.validate(inputMsg);
System.out.print(bn);
if(bn) {
door.open();
System.out.println("<身份验证成功"+emp.getName()+"通过电子门>");
if(door.getState().equals(Door.OPEN));
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
System.out.print(e.getMessage());
}
door.close();
System.out.println("电子门5秒后关闭");
}else {
System.out.println("身份验证失败");
}
}
}
}
GuestTest类
package com.handson.test;
import com.handson.sys.Door;
import com.handson.user.Admin;
import com.handson.user.Guest;
public class GuestTest {
public static void main(String[] args) {
System.out.println("雇员门禁系统使用方法\n"+
"1.模拟输入密码:以'pa'开头,后跟密码\n"+
"2.模拟刷卡:以'ca',后跟卡号\n"+
"3.模拟取指纹:以'fi'开头,后跟表示指纹的字符串\n"+
"4.模拟管理员按下开门按钮:输入'y'");
System.out.println("********************************");
System.out.println("门禁系统启动");
System.out.println("门禁系统---访客测试");
System.out.println("********************************");
Guest guest =new Guest("赵强");
Admin admin =new Admin("王石夈");
Door door=new Door();
while(true) {
guest.pressRing(door);
boolean bn =admin.work(door, guest);
if(bn) {
door.open();
System.out.println("------管理员"+admin.getName()+"开启电子门");
}
if(door.getState().equals(Door.OPEN)) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
System.out.print(e.getMessage());
}
door.close();
System.out.println("电子门5秒后关闭");
}
}
}
}
本次分享到此结束,主要是学习面向对象的过程,继承,接口的实现,还有构造方法,代码没有难度,感谢观看