java注册流程_java用户登录注册

本文介绍了使用Java实现用户登录注册的功能,包括欢迎界面、菜单选择、用户接口、登录注册的具体实现、数据存储以及注意事项,如对象序列化、IO流管理和HashMap与序列化的转换等。

用户登录注册

案例需求

48316ef5d276

用例图.png

涉及知识点

面向对象,接口,Java序列化,HashMap,IO流

欢迎界面

public class BootStrap {

public static void main(String[] args) {

System.out.println("欢迎来到自动售货系统,请选择:");

FrontMenu.showFirstLevelMeun();

}

}

一级目录

public class FrontMenu {

public static void showFirstLevelMeun() {

UserService userService = new UserServiceImp();

System.out.println("1、注册 2、登录");

Scanner sc = new Scanner(System.in);

String select = sc.nextLine();

//注册

if(select.equals("1")) {

System.out.println("请输入用户名:");

String username = sc.nextLine();

System.out.println("请输入密码:");

String password = sc.nextLine();

System.out.println("请再次输入密码:");

String password2 = sc.nextLine();

if(password.equals(password2)) {

boolean isExists = userService.isExists(username);

if(isExists) {

System.out.println("此用户名已存在");

showFirstLevelMeun();

}else {

System.out.println("请输入地址:");

String address = sc.nextLine();

userService.regist(username,password,address);

}

}else {

System.out.println("您输入的密码不一致");

showFirstLevelMeun();

}

}else if(select.equals("2")) {

//登录

System.out.println("请输入用户名:");

String username = sc.nextLine();

System.out.println("请输入密码:");

String password = sc.nextLine();

boolean success = userService.login(username,password);

if(success) {

System.out.println("登录成功");

}else {

System.out.println("用户名或者密码错误");

showFirstLevelMeun();

}

}else {

System.out.println("您输入的选项不正确");

showFirstLevelMeun();

}

}

}

登录注册功能交互

public interface UserService {

/*

* 判断用户名是否已经存在

*/

boolean isExists(String username);

/*

* 注册一个用户

*/

void regist(String username, String password,String address);

/*

* 登录

*/

boolean login(String username, String password); }

实现接口中的具体方法

public class UserServiceImp implements UserService{

UserDao userdao = new UserDaoImp();

/*

* 判断用户名是否存在

*/

@Override

public boolean isExists(String username) {

HashMap userMap = userdao.loadUserData();

return userMap.containsKey(username);

}

/**

* 注册

*/

@Override

public void regist(String username, String password,String address) {

User user = new User();

user.setUsername(username);

user.setPassword(password);

user.setAddress(address);

//调用dao将user数据添加到hashmap中

HashMap userMap = userdao.loadUserData();

//将新用户对象添加到userMap中

userMap.put(user.getUsername(), user);

//调用dao将添加后usermap保存到数据文件中

userdao.saveUserData(userMap);

System.out.println("注册成功");

FrontMenu.showFirstLevelMeun();

}

/*

* 登录

*/

@Override

public boolean login(String username, String password) {

//调用dao将user数据添加到hashmap中

HashMap userMap = userdao.loadUserData();

if(userMap.containsKey(username)) {

User user = userMap.get(username);

if(user.getPassword().equals(password)) {

return true;

}else {

return false;

}

}else {

return false;

}

}

}

程序中的用户数据与磁盘文件存储数据的接口

public interface UserDao {

/**

* 将数据文件中得数据读取到hashmap中

*/

HashMap loadUserData();

/**

* 将hashmap中的数据保存到数据文件中

*/ void saveUserData(HashMap userMap);

}

实现接口中的具体方法

public class UserDaoImp implements UserDao{ /**

* 将hashMap中的数据保存到用户数据文件中

*/

@Override

public HashMap loadUserData() {

File file = new File("D:/user.data");

try {

if(!file.exists()) {

HashMap userMap = new HashMap();

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));

oos.writeObject(userMap);

oos.close();

return userMap;

}

ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));

HashMap userMap = (HashMap)ois.readObject();

ois.close();

return userMap;

} catch (Exception e) {

System.out.println("文件里没有对象");

e.printStackTrace();

}

System.out.println(3);

return null;

}

/*

* 将hashMap中的数据保存文件中

*/

@Override public void saveUserData(HashMap userMap) {

try {

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:/user.data"));

oos.writeObject(userMap);

oos.flush();

oos.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

使用的user类

public class User implements Serializable{

private String username;

private String password;

private String address;

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 String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

}

注意事项

1.进行序列化的对象必须要实现Serializable接口

2.IO流的关流操作

3.HashMap的与序列化的相互转化细节,容易出现空指针异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值