1.1.1 系统登录

在各个应用系统中,都可以看到用户登录程序的影子,下面就模拟一个简单的用户登录程序。

程序分析:

用初始化参数的方式输入用户名和密码,所以在程序运行之前首先必须判断输入的参数个数是否合法,如果不合法,则必须提示用户的程序执行错误,并退出程序,如果用户已经正确地输入了参数,则可以进行用户名及密码的验证。如果信息正确则显示“”,否则显示“错误的用户名及密码”。

实现一:基本功能实现

class LoginDemo01{

public static void main(String[] args) {

String[] login = {"LHB","123"};

if (login.length != 2) {

System.out.println("输入的参数不正确,系统退出。");

System.out.println("格式:用户名 密码");

System.exit(1);

}

String name = login[0];

String pwd = login[1];

if (name.equals("LHB") && pwd.equals("123")) {

System.out.println("欢迎" + name + "光临");

}else {

System.out.println("用户名密码输入错误!");

}

}

}

更改login数组内的值,分别得到不同的结果。

以上程序并不是一个很好的程序,程序在主方法中编写了大量的代码,而主方法就好比是一个客户端,现在要求客户端自己比较、自己输出显然不合理,最简单的做法是:客户端只要得到最终的结果集合,至于中间是如何判断的,它根本就没有必要去关心,就好比进楼门要刷卡一样,用户只需要返回刷卡成功或刷卡失败的信息,而不用关系里面如何去运算的。刷卡流程:

 

修改以上程序,将信息的判断过程形成若干类:

class Check{

public boolean validate(String name,String pwd){

if (name.equals("LHB") && pwd.equals("123")) {

return true;

}else {

return false;

}

}

}

class Operate{

private String[] info = {"LHB","123"};

public String login(){

this.isExit();

String name = info[0];

String pwd = info[1];

String str = null;

Check check = new Check();

if (check.validate(name, pwd)) {

str = "欢迎" + name + "光临";

}else {

str = "用户名密码输入错误";

}

return str;

}

public void isExit(){

if (info.length != 2) {

System.out.println("输入的参数不正确,系统退出。");

System.out.println("格式:用户名 密码");

System.exit(1);

}

}

}

class LoginDemo02{

public static void main(String[] args) {

System.out.println(new Operate().login());

}

}

修改info数组中元素的值,可看到不同的结果。

从程序中可以发现:

1.主方法处代码较少,因为是客户端,所以要方便客户使用。

2.Check类的主要功能就是验证操作,只需要传入用户名和密码即可完成验证。

3.Operate类的主要功能就是封装Check类的操作,并把Check的信息返回给调用处。

如图:

 

怎么去开发一个程序:

代码的开发是一个基础熟练过程的积累,所有的基础知识运用得越熟练,代码的开发速度越快,代码开发多了,思路也就有了。而且拿到一个问题之后,如果觉得分析类有困难,可以先暂时不分析,先把基本的功能做完,做完之后对一些输入的数据进行验证,再把主方法中的代码尽可能减少,然后再去考虑代码的可重用性,几次下来之后代码就会更好一些。

类的开发是一个渐进的过程,当方法代码中重复地进行赋值/粘贴时,就可以考虑将之形成一个类调用。

——李兴华老师赠