资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二层,第三层,第四层,第五层,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二层,第三层,第四层,第五层,#,软件二班第9组,面向对象程序设计,课程设计答辩,制作者:刘昌周,答辩流程,1.,问题分析,3,.,主要类设计,5,.,测试及运行,2.思路与理念,4,.,方法实现与设计,6.,自我评价,问题描述:,某公司安装了电子门,要设计门禁系统:,公司的雇员可以凭借密码、胸卡或指纹进入公司,计算机根据雇员的验证方式对其身份进行验证,管理员在监控室可以通过按钮直接开启电子门,访客可以按门铃请求进入,由管理员为其放行,管理员可以为新职员设置密码,问题分析:,门禁系统的应用需求,出入口管理的需要,出入口安全的需要,设计思路与理念:,管理员,雇员,访客,e,xtends,extends,只能按门铃,可以输入验证信息,可以直接开启电子门,监控门铃、添加用户,应用对象:,门,禁系统包括:,电子门、计算机、输入设备,门禁系统使用者包括:,管理员、雇员、访客,验证身份有,3,种方法:,密码验证、胸卡验证、指纹验证,系统所用包:,frame包:放置主窗体的类,sys,包:放置门禁系统相关类,user,包:放置访客、雇员、管理员类,validate,包:放置验证身份的接口及其实 现类,test,包:放置测试类,导入日志包,门禁系统工作分,3,步:,如果有输入且输入信息存在,开启电子门,输入是否正确由计算机类调用验证接口的相关方法判断,如果收到开门信号,开启电子门,/,如果电子门已开启,维持,5,秒,关闭电子门,java.lang.Thread.sleep(5000);,/,程序暂停,5000,毫秒,第一步:检查输入的输入缓存,第二步:检查开门信号,第三步:电子门开启状态维持,5,秒后关闭电子门,sys,包中的类:,电子门类:,Door.java,计算机类:,Computer.java,门禁系统类:,ControlSys.java,对电子门的开启,用于存储和验证密码,胸卡,指纹。,且可以增加密码,胸卡,指纹,包含计算机,电子门,输入设备,门铃,开门信号,日志,使用,LOG4J,输入,记录日志信息,user,包中的类:,访客类:,Guest.java,雇员类:Employee,.java,管理员类:,Admin.java,访客有姓名属性,按门铃方法,继承自访客,增加了输入验证信息的方法,该方法需要使用输入设备的输入方法,1.,继承自雇员,增加,3,个方法。,2.,管理员可以向门禁发出开门信号。,3.,监听门铃:该方法将调用管理员通过监控室按钮开门的方法,,4.,添加验证信息:,valType,为,pa,ca,fi,。,valStr,为验证信息,,2,3,4,分别调用计算机类的,work(),方法的参数为,1,,,2,,,3,个的,validate,包中的类:,验证接口:,Validate.java,实现接口:,GenericValidate.java,密码验证:,PassWordVld.java,胸卡验证:,CardVld.java,指纹验证:,FingerMarkVld.java,定义一个验证方法,默认实现验证接口中的验证方法,,验证密码是否正确,验证胸卡是否正确,验证指纹是否正确,test,包中的类:,雇员验证:,EmployeeTest.java,管理员验证:,AdminTest.java,访客验证:,GuesTest.java,用于测试门禁系统的雇员验证是否正常运行,用于测试门禁系统的管理员验证是否正常运行,用于测试门禁系统的访客验证是否正常运行,日志包:,用于记录日志,基本日志信息包括电子门开启、关闭、谁通过电子门、验证成功或失败。在有必要记录日志的地方,尽可能的多地输出想要保存的信息。,对象关系,管理员,雇员,访客,验证接口,默认实现,指纹识别,密码验证,胸卡验证,extends,门禁系统包含:电子门、输入设备、计算机,implements,extends,extends,extends,主要方法设计与实现:,public GuestTest(),label1=new Label(,请选择:,);,btn1=new Button(,按铃,);,btn2=new Button(,不按铃,);,label1.setBounds(0,0,250,30);,label1.setBackground(Color.red);,btn1.setBounds(40,60,50,30);,btn1.setBackground(Color.green);,btn2.setBounds(160,60,50,30);,btn2.setBackground(Color.green);,this.setLayout(null);,this.add(label1);,this.add(btn1);,this.add(btn2);,btn1.addActionListener(this);,btn2.addActionListener(this);,public void actionPerformed(ActionEvent e),if(e.getSource()=btn1),logger.info(,您的选择是访客,);,GuestTest guesttest=new GuestTest();/,这个,extendsJFrame,guesttest.GuestMain();,else if(e.getSource()=btn2),logger.info(,您选择的是雇员,);,new EmployeeTest();,else if(e.getSource()=btn3),logger.info(,您选择的是管理员,);,new AdminTest();,public void work(),if(this.getOpenSign()=1),door.open();,logger.info(,管理员开启了电子门,);/,开启电子门,this.setOpenSign(0);/,电子门开门信号归零,/*,电子门开启状态将维持,5,秒后关闭*,/,if(door.getState().equals(Door.OPEN),try,Thread.sleep(5000);/,让电子门开启状态维持,5,秒,JOptionPane.showMessageDialog(null,门已关闭,提示,JOptionPane.INFORMATION_MESSAGE);,logger.info(,门已经关闭,);,catch(InterruptedException e),logger.info(,出现异常错误,);,JOptionPane.showMessageDialog(null,出现异常错误,警告,JOptionPane.WARNING_MESSAGE);,door.close();/,关闭电子门,logger.info(,已经通过电子门!,);,public boolean validate(String passStr),Validate validate=null;,String prefix=passStr.substring(0,1);,/*,验证密码*,/,if(prefix.equals(p),logger.info(,正在验证密码:,);,validate=new PassWordVld(passWord,passStr);,boolean a=validate.Check();,return a;,/*,验证胸卡*,/,else if(prefix.equals(c),logger.info(,正在验证胸卡:,);,validate=new CardVld(card,passStr);,return validate.Check();,/*,验证指纹*,/,else if(prefix.equals(f),logger.info(,正在验证指纹:,);,validate=new FingerMarkVld(fingerMark,passStr);,return validate.Check();,else,return false;,this.setTitle(,访客测试,);,this.setBounds(350,400,250,150);,this.setResizable(false);,this.setVisible(true);,this.addActionListener(this);,this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);,运行情况:,自我评价:,特色:,1.管理员可以控制是否允许访客进入,2.管理员可以添加和查看新的密码、胸卡、指纹,3.能够在日志里显示每一步操作,包括录入的信息,4.可以有选择的进行测试,不足:,1.界面不是很友好,需要进一步改进。,2.文本框如果没有录入会有错误,3.,文本框没有回车响应,4.,门,5,秒关闭是在按下确定之后开始计时,不是在按下开 门之后,2012.6.10,软件技术专2第9组,谢谢观看,
展开阅读全文