java登陆功能,java登录流程

  java登陆功能,java登录流程

  

案例分析:

我们之前做过的登录注册案例是把用户信息存进集合里,要用超正析象管(图片Orthicon)流实现的话,就是要把用户信息存入文件中。登录注册两个功能的具体实现是在用户操作类中,所以我们只需要在用户操作类中把之前用户信息存进集合改为存进文件就可以了。

 

  用到的类的详细分解:

  (1)用户类(用户):用户名,密码,邮箱,电话号码等等各种注册时会用到的东西。我们在实现这个登录和注册案例的时候只需要用户名和密码就够了。这是一个标准爪哇描述类。

  包com。edu。域;公共类用户{私有字符串用户名;私有字符串密码;公共字符串get userName(){返回用户名;} public void set userName(字符串用户名){ this。用户名=用户名;}公共字符串get passWord(){返回密码;} public void setPassWoed(字符串密码){ this。密码=密码;}公共用户(字符串用户名,字符串密码){ super();this .用户名=用户名;this.passWord=密码;} public User(){ super();//TODO自动生成的构造函数存根}}(2)我们需要定义一个接口(UserDao)来定义注册和登录功能。接口就是对类的功能的一种扩展,它的本质是用来定义规则的。

  包com。edu。道;导入Java。io。io异常;导入com。edu。域。用户;公共接口UserDao { //定义两个功能//注册功能公共抽象无效注册(用户用户)抛出IOException//登录功能公共抽象布尔isLogin(字符串用户名,字符串密码);}(3)用户操作类(UserDaoImpl),也就是之前定义的接口数据层的实现类。

  包com。edu。道。impl导入Java。io。缓冲阅读器;导入Java。io。缓冲编写器;导入Java。io。文件;导入Java。io。filereader导入Java。io。filewriter导入Java。io。io异常;导入com。edu。道。userdao导入com。edu。域。用户;公共类实现类实现UserDao{公共静态文件文件=新文件(用户。txt’);//静态代码块,随着类的加载而加载静态{尝试{文件。创建新文件();} catch(io异常e){ e . printstacktrace();} } //注册功能@覆盖公共void注册表(用户用户)抛出IOException { try{ //把用户信息存进文件里字符串信息=用户。get username()=用户。获取密码();//创建高效字符输出流来给文件写入数据,创建了一个可以追加写入的FileWriter,避免了文件中之前的用户信息被覆盖缓冲编写器bw=新缓冲编写器(新文件编写器(用户。txt ,true));bw。写(信息);bw。newline();bw。flush();bw。close();}c

  atch(IOException e){            e.printStackTrace();        }    }    //登录功能    @Override    public boolean isLogin(String userName, String passWord) {        boolean flag=false;        try{            //创建高效字符输入流来读取数据            BufferedReader br = new BufferedReader(new FileReader("user.txt"));            String line;            while ((line=br.readLine())!=null) {                String[] s=line.split("=");                if (s[0].equals(userName)&&s[1].equals(passWord)) {                    flag=true;                }            }        }catch(IOException e){            e.printStackTrace();        }        return flag;    }}(4)在用户完成注册登录后,我们可以实现某种功能了,例如:猜数字小游戏。再建一个游戏类(GuessNumber)。

  

package com.edu.game;import java.util.Scanner;public class GuessNumber {    public static void playGame(){        //获取一个1到100的随机数        int random = (int)(Math.random()*100+1);        //键盘录入        Scanner sc = new Scanner(System.in);        //给出提示        System.out.println("请输入所猜的数字");        int number = sc.nextInt();        while(true){            if(number==random){                System.out.println("恭喜你猜对了!");                break;            }else if(number>random){                System.out.println("大了,请继续输入:");                number=sc.nextInt();            }else if(number<random){                System.out.println("小了,请继续输入:");                number=sc.nextInt();            }        }    }}

(5)测试类(Test)。

 

  

package com.edu.test;import java.io.IOException;import java.util.Scanner;import com.edu.dao.impl.UserDaoImpl;import com.edu.domain.User;import com.edu.game.GuessNumber;public class Test {    public static void main(String[] args) throws IOException {        while (true) {            //创建键盘录入对象,获取键盘录入信息            Scanner sc = new Scanner(System.in);            System.out.println("欢迎来到注册登录界面!");            System.out.println("1.注册");            System.out.println("2.登录");            System.out.println("3.退出");            String choice = sc.nextLine();            //创建一个用户操作类            UserDaoImpl udi = new UserDaoImpl();            //利用switch循环对选择进行操作            switch(choice){            case "1":                System.out.println("欢迎来到注册界面!");                System.out.println("请输入用户名:");                String userName = sc.nextLine();                System.out.println("请输入密码:");                String passWord = sc.nextLine();                User user = new User(userName,passWord);                udi.regist(user);                System.out.println("注册成功!");                break;            case "2":                System.out.println("欢迎来到登录界面!");                System.out.println("请输入用户名:");                String inputUserName = sc.nextLine();                System.out.println("请输入密码:");                String InputPassWord = sc.nextLine();                if (udi.isLogin(inputUserName,InputPassWord)) {                    System.out.println("登陆成功!可以玩游戏了!");                    GuessNumber.playGame();                }else{                    System.out.println("登录失败!");                }                break;            case "3":            default:                //对于3或者其他数字的选择,都直接退出系统                System.exit(0);                break;            }        }    }}

运行结果:

 

  登录的注册的运行结果:

  

 

  猜数字游戏后退出系统:

  

 

  案例实现过程中遇到的小问题:

  如果用下面这个构造来创建高效字符输出流对象,程序每运行一次,新输入的用户信息会把之前的用户信息覆盖掉,文件中只有最近一次存入的用户信息。

  

BufferedWriter bw = new BufferedWriter(new FileWriter("user.txt");

如何解决这个问题:

 

  我们用下面这个构造来创建高效字符输出流来给文件写入数据,创建了一个可以追加写入的FileWriter,避免了文件中之前的用户信息被覆盖。

  

BufferedWriter bw = new BufferedWriter(new FileWriter("user.txt",true));

参考:

 

  

FileWriter(String fileName, boolean append)//根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象

例如:我注册了三次,文件中就有了这三次存入的用户信息。

 

  

 

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: