/*
* 烟台大学计算机学院学生
*All right reserved.
*文件名称:java
*作者:孔云
*完成日期:2014年12月3日
*版本号:v1.0
*对任务及求解方法的描述部分:综合运用。
*我的程序:
*/
package com.handson.test;
import java.util.Scanner;
import com.handson.sys.Computer;
import com.handson.sys.Door;
import com.handson.user.Admin;
import com.handson.user.Employee;
import com.handson.user.Guest;
public class Test {
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("1-管理员,2-工作人员,3-访客,4-退出");
Scanner in =new Scanner(System.in);
int num=in.nextInt();
while(num!=4){
switch(num){
case 1:
Admin admin=new Admin("管理员");
Door door=new Door();
admin.work(door);
break;
case 2:
Computer c=new Computer();
Employee zhangsan=new Employee("张三");
String input=zhangsan.input();
door=new Door();
boolean bn=c.validate(input);
if(bn){
door.open();
System.out.println("门已开,请稍等");
System.out.println("请注意,5秒后门将自动关闭!");
}
else{
System.out.println("输入信息错误");
}
break;
case 3:
door=new Door();
Guest guest=new Guest("张三");
guest.pressRing(door);
admin=new Admin("管理员");
bn= admin.work(door,guest);
if(bn==true){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("门已关");
door.close();
}
break;
default:
System.out.println("输入有误");
}
System.out.println("1-管理员,2-工作人员,3-访客,4-退出");
num=in.nextInt();
}
}
}
package com.handson.sys;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
import com.handson.validate.CardVId;
import com.handson.validate.FingerVId;
import com.handson.validate.PasswordVId;
import com.handson.validate.Validate;
public class Computer {
private String[]pwds=new String[100];
private ArrayList cards=new ArrayList();
private HashMap fingers=new HashMap();
public Computer(){
pwds[0]="pa1111";
pwds[1]="pa2222";
cards.add("ca3333");
cards.add("ca4444");
fingers.put(1, "fi5555");
fingers.put(2, "fi6666");
}
public boolean validate(String inputMsg){
boolean result=false;
System.out.println("请输入验证方式:1-卡号,2-指纹,3-密码");
Scanner in=new Scanner(System.in);
int choose=in.nextInt();
Validate vli;
switch(choose){
case 1:
vli=new CardVId();
result=vli.check(cards,inputMsg);
break;
case 2:
vli=new FingerVId();
result=vli.check(fingers, inputMsg);
break;
case 3:
vli=new PasswordVId();
result=vli.check(pwds,inputMsg);
break;
default:System.out.println("输入有误、、、");
}
return result;
}
}
package com.handson.sys;
public class Door {
final String OPEN="门已开启";
final String CLOSE="门已关闭";
private String state;
private boolean bellstate;
public Door(){
}
public Door(String state){
this.state=state;
}
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 void open(){
System.out.println(OPEN);
}
public void close(){
System.out.println(CLOSE);
}
}
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 flag = false;
System.out.println("管理员" + this.getName() + "按门铃了吗?y/n");
Scanner in = new Scanner(System.in);
String input = in.nextLine();
if (input.equalsIgnoreCase("y")) {
System.out.println("管理员" + this.getName() + "已按下门铃。。。。");
flag = true;
door.open();
} else {
System.out.println("管理员拒绝开门!");
}
return flag;
}
public boolean work(Door door,Guest guest){
boolean flag=false;
if(door.isBellstate()){
flag=work(door);
door.setBellstate(false);
}
return flag;
}
}
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(){
System.out.println("请输入验证信息:");
Scanner in=new Scanner(System.in);
String input=in.nextLine();
return input;
}
}
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) {
System.out.println("访客" + this.getName() + "来访,按门铃了吗?y/n");
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
if (input.equalsIgnoreCase("y")) {
door.setBellstate(true);
System.out.println("访客" + this.getName() + "已按门铃");
}
}
}
package com.handson.validate;
import java.util.ArrayList;
public class CardVId implements Validate{
public boolean check(Object obj,String inputMsg){
boolean bn=false;
ArrayList list=(ArrayList)obj;
for(int i = 0;i<list.size();i++){
if(list.get(i).equals(inputMsg)){
bn=true;
break;
}
}
return bn;
}
}
package com.handson.validate;
import java.util.ArrayList;
import java.util.HashMap;
public class FingerVId implements Validate{
public boolean check(Object obj, String inputMsg) {
// TODO Auto-generated method stub
HashMap map=(HashMap)obj;
boolean bn=false;
for(int i=1;i<map.size();i++){
if(map.get(i).equals(inputMsg))
{
bn=true;
break;
}
}
return bn;
}
}
package com.handson.validate;
public class PasswordVId implements Validate{
public boolean check(Object obj, String inputMsg) {
// TODO Auto-generated method stub
String []src=(String[])obj;
boolean bn=false;
for(int i=0;i<src.length-1;i++){
if(src[i]==null){
break;
}
if(src[i].equals(inputMsg))
{
bn=true;
break;
}
}
return bn;
}
}
package com.handson.validate;
public interface Validate {
boolean check(Object obj,String inputMsg);
}
门禁系统的使用方法:
1.模拟输入密码:以“pa”开头,后跟密码
2.模拟刷卡:以“ca”开头,后跟卡号
3.模拟取指纹:以“fi”开头,后跟表示指纹的字符串
4.模拟管理员按下开门按钮:输入“y”
***************************************************
门禁系统启动
***************************************************
1-管理员,2-工作人员,3-访客,4-退出
1
管理员管理员按门铃了吗?y/n
y
管理员管理员已按下门铃。。。。
门已开启
1-管理员,2-工作人员,3-访客,4-退出
2
请输入验证信息:
ca1111
请输入验证方式:1-卡号,2-指纹,3-密码
1
输入信息错误
1-管理员,2-工作人员,3-访客,4-退出
4
![奋斗](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
![可怜](http://static.blog.csdn.net/xheditor/xheditor_emot/default/cute.gif)