------- <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>、期待与您交流! ----------