本帖最后由 小歪 于 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类封装,通过一系列操作最终只将结果返回给调用处。
|
|