黑马程序员—java技术blog—第十一篇java基础应用命令行模拟登陆注册

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

模拟登陆注册功能

 应用到Scanner类、接口、面向对象、IO流-----可以很好地把以前学的基础练习起来应用到这个案例中

同时可以很好地感受到实际开发中对面向对象,与接口的应用可以很方便的使我们实现各种功能,使一个综合性很好地案例,看完这个案例感觉非常的受益匪浅,有一种豁然开朗的感觉。

启动程序的类

 * 
 * ---------欢迎来到 XXX 网站----------- 
 * 1, 用户登录 
 * 2, 用户注册 
 * 3, 退出系统 

 * 请选择【1-3】功能项:


 * 
 */
public class MainApp {
public static void main(String[] args) {
while(true){
System.out.println("---------欢迎来到 XXX 网站-----------");
System.out.println("\t 1, 用户登录");
System.out.println("\t 2, 用户注册");
System.out.println("\t 3, 退出系统");
System.out.print("请选择【1-3】功能项:");


// --------------------
// 键盘输入: 请选择【1-3】功能项
String item = new Scanner(System.in).nextLine();


// -------------------
UserOperator operator = new UserOperatorImpl();//多态
// 根据输入项,执行对应的功能
switch (item) {
case "1":
//输入用户名密码
System.out.println("请输入用户名:");
String username = new Scanner(System.in).nextLine();
System.out.println("请输入密码:");
String password = new Scanner(System.in).nextLine();
//调用用户登录功能
boolean login = operator.isLogin(username, password);
System.out.println("login =" + login);
break;
case "2":
//填写注册用户信息,封装成User对象
//输入用户名密码
System.out.println("请输入用户名:");
String newUsername = new Scanner(System.in).nextLine();
System.out.println("请输入密码:");
String newPassword = new Scanner(System.in).nextLine();

User user = new User(newUsername, newPassword);
//调用用户注册功能
boolean register = operator.isRegister(user);
System.out.println("register = " + register);
break;
case "3":
//退出系统
System.out.println("您已退出系统");
System.exit(0);
break;
default:
break;
}
}
}

}

定义User类

public class User {
private String username;
private String password;


public User() {
super();
}


public User(String username, String password) {
super();
this.username = username;
this.password = password;
}


public String getUsername() {
return username;
}


public void setUsername(String username) {
this.username = username;
}


public String getPassword() {
return password;
}


public void setPassword(String password) {
this.password = password;
}


}

定义接口

public abstract boolean isLogin(String username, String password);

/**
* 注册功能
* @param user 要注册的用户
* @return 注册是否成功
*/
public abstract boolean isRegister(User user);

}

定义实现接口的类

public class UserOperatorImpl implements UserOperator {


/**
* 登录功能
* @param username 用户名
* @param password 密码
* @return 登录是否成功
*/
@Override
public boolean isLogin(String username, String password) {
//1,获取到UserInfo.txt中每个用户的信息
String userInfo = null;
boolean flag = false;// 返回是否登录成功

try {
BufferedReader br = new BufferedReader(new FileReader("UserInfo.txt"));
while ((userInfo = br.readLine()) != null) {
//获取userInfo中包含的用户名与密码, 通过字符串分割来实现
String[] userInfoArray = userInfo.split("=");
//0角标, 是用户名 ;  1角标,是密码
//使用每个用户与 键盘输入的用户名密码匹配
if (username.equals(userInfoArray[0]) && password.equals(userInfoArray[1]) ) {
//是: 登录成功
flag = true;
}
}
} catch (IOException e) {
e.printStackTrace();
}
//如果与所有的用户信息都不匹配,返回登录失败
return flag;
}



/**
* 注册功能
* @param user 要注册的用户
* @return 注册是否成功
*/
@Override
public boolean isRegister(User user) {
//把user的信息 写入到 UserInfo.txt文件中
//获取当前注册用户信息
String username = user.getUsername();
String password = user.getPassword();
//把用户信息 写入到文件中
try {
BufferedWriter bw = new BufferedWriter(new FileWriter("UserInfo.txt", true));//追加数据
bw.write(username + "=" + password);
bw.newLine();
bw.flush();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}

}

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值