你的位置:首页 > Java教程

[Java教程]IO版的用户登录注册案例(Java)

2017-09-16

这是我在博客园的第一篇学习笔记。

Java小白,努力进阶中...

 

今天学的是用户登录注册功能。
4个包:
itcast.cn.user包 User.java 用户类,描述用户基本信息,包括成员变量,无参构造函数,带参构造(可有可无).get和set方法

 1 package itcast.cn.day22; 2 /* 3  * 用户基本描述包类 4 */ 5  6 public class User { 7  private int userName; 8  private int passWord; 9  public User(){10   super();11  }12  public User(int userName,int passWord){13   super();14   this.userName=userName;15   this.passWord=passWord;  16  }17  public int getUserName() {18   return userName;19  }20  public void setUserName(int userName) {21   this.userName = userName;22  }23  public int getPassWord() {24   return passWord;25  }26  public void setPassWord(int passWord) {27   this.passWord = passWord;28  }29 30 }

 

tcast.cn.uerDao包 UserDao.java 定义一个接口,声明登录注册功能

1 public interface UserDao { 2 2 public abstract boolean islogin( String userName, String passWord);3 3 public abstract void register(User user);4 4 }
View Code

 

itcast.cn.userDaoImpl包 UserDaoImpl.java 实现UserDao接口,具体描述登录注册方法。
需要注意的是:在登录方法中,返回值boolean flag = true 即登录成功

在实现过程中需要注意的一点是:全局变量br,bw的声明一定要放在try大括号外
IO版本实现方法代码如下:

 1 public class UserDaoImpl implements UserDao{ 2  3 @Override 4 public boolean islogin(String userName, String passWord) { 5 boolean flag = false; 6 BufferedReader br = null; 7 try { 8 br = new BufferedReader(new FileReader("user,txt")); 9 String line = null;10 11 while((line=br.readLine())!=null){12 String[] datas = line.split("=");13 if(datas[0].equals(userName)&&datas[1].equals(passWord)){14 flag = true;15 break;16 }17 }18 } 19 catch (FileNotFoundException e) {20 //e.printStackTrace();21 System.out.println("用户信息获取失败");22 }catch (IOException e) {23 //e.printStackTrace();24 System.out.println("用户登录失败");25 }26 if(br!=null){27 try {28 br.close();29 } catch (IOException e) {30 //e.printStackTrace();31 System.out.println("用户释放资源失败");32 }33 }34 return flag;35 }36 37 @Override38 public void register(User user) {39 BufferedWriter bw = null; 40 try {41 bw = new BufferedWriter(new FileWriter("user.txt"));42 bw.write(user.getUserName()+"="+user.getPassWord());43 bw.newLine();44 } catch (IOException e) {45 //e.printStackTrace();46 System.out.println("注册失败");47 }finally{48 if(bw!=null){49 try {50 bw.close();51 } catch (IOException e) {52 //e.printStackTrace();53 System.out.println("注册释放资源失败");54 }55 }56 }57}58 }

 


itcast.cn.usertest包 UserTest类 测试类

在这个类中,存在一个未解决的问题:
scanner函数无法一个一个的输入,另外构造方法中的(true)需要多看。

 1 package itcast.cn.day22; 2  3 import java.util.Scanner; 4  5 public class UserTest { 6 public static void main(String[] args) { 7 //欢迎界面 8 while(true){ 9 UserDao ud = new UserDaoImpl();10 System.out.println("*****欢迎进入*****");11 System.out.println("登录请输入1");12 System.out.println("注册请输入2");13 System.out.println("返回请输入3");14 15 System.out.println("请输入你的选择:");16 Scanner sc = new Scanner(System.in);17 int choice = sc.nextInt();18 switch(choice){19 case 1:20 System.out.println("*****登录界面*****************");21 //Scanner sc1 = new Scanner(System.in);22 System.out.println("请输入用户名:");23 String userName = sc.nextLine();24 System.out.println("请输入密码:");25 String passWord = sc.nextLine();26 27 boolean flag = ud.islogin(userName, passWord);28 if(flag){29 System.out.println("登录成功");30 break;31 }else{32 System.out.println("用户名或密码错误");33 }34 35 case 2:36 System.out.println("*****注册界面****************");37 System.out.println("请输入用户名:");38 String userName1 = sc.nextLine();39 System.out.println("请输入密码:");40 String passWord1 = sc.nextLine();41 42 User user = new User();43 user.getUserName();44 user.getPassWord();45 ud.register(user);46 System.out.println("注册成功");47 break;48 case 3:49 default:50 System.out.println("谢谢使用,欢迎下次再来");51 System.exit(0);52 break;53 }54 }55 }56 }