A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小歪 中级黑马   /  2014-3-14 21:03  /  820 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小歪 于 2014-3-14 21:12 编辑

/*
  在各种应用系统中,可以看到很多用户登入程序的影子,模拟一个简单的用户登入程序:"学校进门刷卡登记程序"
  要求:卡种分2种(Teacher卡,Student 卡)
        老师刷卡成功提示 "Teacher 已签到"
        学生刷卡成功提示 "Student 已登记"
  为方便起见,使用初始化参数的方式输入用户名和密码,以下列两个账户举例:
   ---------------|------------
   用户名    |   密码
   ---------------|------------
   JShi      |  teacher  
   ---------------|------------
   XSheng    |  student
   ---------------|------------
*/  
public class Login
{
        public static void main(String[] args)
        {
                if(args.length!=2)
                {
                        System.out.println("输入数据错误 系统已关闭!");
                        System.out.println("cmd格式:java Login 用户名  密码");
                        System.exit(1);
                }
               
                String name=args[0];
                String password=args[1];
               
                if(name.equals("JShi")&&password.equals("teacher"))
                {
                 System.out.println("Teacher 已签到");
                }
            else if(name.equals("XSheng")&&password.equals("student"))
                {
                        System.out.println("Student 已登记");
                }
                else {
                        System.out.println("用户信息错误!");
                }
        }
}      


运行结果:


以上程序看似已完成基本功能,但在实际应用中刷卡与读卡器属于两个不同对象,主方法中编写了大量代码,而主方法就好比是一个客户端(及用户手中的卡),现在要由客户端自己比较,自己输出显然操作量太大,不适用于实际开发中面向对象概念。
所以对以上代码要做出修改,客户端只需提交数据,最终得到结果信息就可,而不关心里面是如何进行验证操作。

修改以上代码后:
class Cheak
{
        public boolean  cheak_Date(String name,String password)    //用于核对用户名和密码是否正确
        {
                if(name.equals("JShi")&&password.equals("teacher") || name.equals("XSheng")&&password.equals("student"))
                { return true;}
                else
                { return false;}
        }
}

class Fun
{
        private String info[];
        
        public Fun(String info[])
        {
                this.info=info;
        }
        
        public String login()             //对传入数据进行一系列操作
        {
                        
                if(this.info.length!=2)        //判断输入数据的格式是否异常,异常则退出
                {
                        System.out.println("输入数据错误 系统已关闭!");
                        System.out.println("cmd格式:java Login 用户名  密码");
                        System.exit(1);
                }
        
            String name=info[0];          //获取用户名
            String password=info[1];      //获取密码
            String end=null;              //定义end  用于装载最后返回信息
            Cheak chk=new Cheak();        //实例化Cheak类,准备调用其cheak_Date核对用户名和密码是否正确
            
if(chk.cheak_Date(name,password))            //核对用户名和密码是否正确
{
             if(name.equals("JShi")) { end="Teacher 已签到"; } //根据用户名获得相应信息
                else { end="Student 已登记";}
}
else                       //用户名和密码不正确                                    
        { end="用户信息错误!"; }
        
return end;   //返回信息
          }
        
}
public class Login
{
        public static void main(String[] args)
        {
        Fun user=new Fun(args);            //传入用户数据
        System.out.printf(user.login());   //输出最终信息
        }
}      
运行结果:


可看出程序运行结果与之前相似,但本程序有以下几个优点:

1、        主方法处只完成传入用户数据和获得结果,因为是客户端,方便客户使用。
2、        Cheak类的功能类似于验证数据库中的账号与密码是否正确。
3、        Fun类主要完成对Cheak类封装,通过一系列操作最终只将结果返回给调用处。

clip_image002.jpg (65.51 KB, 下载次数: 6)

clip_image002.jpg

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马