门禁系统

/*     
* 烟台大学计算机学院学生        
*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

奋斗有点小小的不如人意 可怜
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值