zoukankan      html  css  js  c++  java
  • Java基础知识强化之IO流笔记56:IO流练习之 登录注册IO版

    1.  登录注册IO版的Java项目框架,如下:

    2. 具体代码实现:

    (1)User.java(cn.itcast.game):

     1 package cn.itcast.pojo;
     2 
     3 /**
     4  * 这是用户基本描述类
     5  * 
     6  * @author 风清扬
     7  * @version V1.1
     8  * 
     9  */
    10 public class User {
    11     // 用户名
    12     private String username;
    13     // 密码
    14     private String password;
    15 
    16     public User() {
    17     }
    18 
    19     public String getUsername() {
    20         return username;
    21     }
    22 
    23     public void setUsername(String username) {
    24         this.username = username;
    25     }
    26 
    27     public String getPassword() {
    28         return password;
    29     }
    30 
    31     public void setPassword(String password) {
    32         this.password = password;
    33     }
    34 }

    (2)UserDao.java(cn.itcast.dao):

     1 package cn.itcast.dao;
     2 
     3 import cn.itcast.pojo.User;
     4 
     5 /**
     6  * 这是针对用户进行操作的接口
     7  * 
     8  * @author 风清扬
     9  * @version V1.1
    10  * 
    11  */
    12 public interface UserDao {
    13     /**
    14      * 这是用户登录功能
    15      * 
    16      * @param username
    17      *            用户名
    18      * @param password
    19      *            密码
    20      * @return 返回登录是否成功
    21      */
    22     public abstract boolean isLogin(String username, String password);
    23 
    24     /**
    25      * 这是用户注册功能
    26      * 
    27      * @param user
    28      *            要注册的用户信息
    29      */
    30     public abstract void regist(User user);
    31 }

    (3)UserDaoImpl.java(cn.itcast.dao.impl):

     1 package cn.itcast.dao.impl;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.BufferedWriter;
     5 import java.io.File;
     6 import java.io.FileNotFoundException;
     7 import java.io.FileReader;
     8 import java.io.FileWriter;
     9 import java.io.IOException;
    10 
    11 import cn.itcast.dao.UserDao;
    12 import cn.itcast.pojo.User;
    13 
    14 /**
    15  * 这是用户操作的具体实现类(IO版)
    16  * 
    17  * @author 风清扬
    18  * @version V1.1
    19  * 
    20  */
    21 public class UserDaoImpl implements UserDao {
    22     // 为了保证文件一加载就创建
    23     private static File file = new File("user.txt");
    24 
    25     static {
    26         try {
    27             file.createNewFile();
    28         } catch (IOException e) {
    29             System.out.println("创建文件失败");
    30             // e.printStackTrace();
    31         }
    32     }
    33 
    34     @Override
    35     public boolean isLogin(String username, String password) {
    36         boolean flag = false;
    37 
    38         BufferedReader br = null;
    39         try {
    40             // br = new BufferedReader(new FileReader("user.txt"));
    41             br = new BufferedReader(new FileReader(file));
    42             String line = null;
    43             while ((line = br.readLine()) != null) {
    44                 // 用户名=密码
    45                 String[] datas = line.split("=");
    46                 if (datas[0].equals(username) && datas[1].equals(password)) {
    47                     flag = true;
    48                     break;
    49                 }
    50             }
    51         } catch (FileNotFoundException e) {
    52             System.out.println("用户登录找不到信息所在的文件");
    53             // e.printStackTrace();
    54         } catch (IOException e) {
    55             System.out.println("用户登录失败");
    56             // e.printStackTrace();
    57         } finally {
    58             if (br != null) {
    59                 try {
    60                     br.close();
    61                 } catch (IOException e) {
    62                     System.out.println("用户登录释放资源失败");
    63                     // e.printStackTrace();
    64                 }
    65             }
    66         }
    67 
    68         return flag;
    69     }
    70 
    71     @Override
    72     public void regist(User user) {
    73         /*
    74          * 为了让注册的数据能够有一定的规则,我就自己定义了一个规则: 用户名=密码
    75          */
    76         BufferedWriter bw = null;
    77         try {
    78             // bw = new BufferedWriter(new FileWriter("user.txt"));
    79             // bw = new BufferedWriter(new FileWriter(file));
    80             // 为了保证数据是追加写入,必须加true
    81             bw = new BufferedWriter(new FileWriter(file, true));
    82             bw.write(user.getUsername() + "=" + user.getPassword());
    83             bw.newLine();
    84             bw.flush();
    85         } catch (IOException e) {
    86             System.out.println("用户注册失败");
    87             // e.printStackTrace();
    88         } finally {
    89             if (bw != null) {
    90                 try {
    91                     bw.close();
    92                 } catch (IOException e) {
    93                     System.out.println("用户注册释放资源失败");
    94                     // e.printStackTrace();
    95                 }
    96             }
    97         }
    98     }
    99 }

    (4)GuessNumber.java(cn.itcast.game):

     1 package cn.itcast.game;
     2 
     3 import java.util.Scanner;
     4 
     5 /**
     6  * 这是猜数字小游戏
     7  * 
     8  * @author 风清扬
     9  * @version V1.1
    10  * 
    11  */
    12 public class GuessNumber {
    13     private GuessNumber() {
    14     }
    15 
    16     public static void start() {
    17         // 产生一个随机数
    18         int number = (int) (Math.random() * 100) + 1;
    19 
    20         // 定义一个统计变量
    21         int count = 0;
    22 
    23         while (true) {
    24             // 键盘录入一个数据
    25             Scanner sc = new Scanner(System.in);
    26             System.out.println("请输入数据(1-100):");
    27             int guessNumber = sc.nextInt();
    28 
    29             count++;
    30 
    31             // 判断
    32             if (guessNumber > number) {
    33                 System.out.println("你猜的数据" + guessNumber + "大了");
    34             } else if (guessNumber < number) {
    35                 System.out.println("你猜的数据" + guessNumber + "小了");
    36             } else {
    37                 System.out.println("恭喜你," + count + "次就猜中了");
    38                 break;
    39             }
    40         }
    41     }
    42 }

    (5)测试类UserTest.java(cn.itcast.test):

      1 package cn.itcast.test;
      2 
      3 import java.util.Scanner;
      4 
      5 import cn.itcast.dao.UserDao;
      6 import cn.itcast.dao.impl.UserDaoImpl;
      7 import cn.itcast.game.GuessNumber;
      8 import cn.itcast.pojo.User;
      9 
     10 /**
     11  * 用户测试类
     12  * 
     13  * @author 风清扬
     14  * @version V1.1
     15  * 
     16  */
     17 public class UserTest {
     18     public static void main(String[] args) {
     19         // 为了能够回来
     20         while (true) {
     21             // 欢迎界面,给出选择项
     22             System.out.println("--------------欢迎光临--------------");
     23             System.out.println("1 登录");
     24             System.out.println("2 注册");
     25             System.out.println("3 退出");
     26             System.out.println("请输入你的选择:");
     27             // 键盘录入选择,根据选择做不同的操作
     28             Scanner sc = new Scanner(System.in);
     29             // 为了后面的录入信息的方便,我所有的数据录入全部用字符接收
     30             String choiceString = sc.nextLine();
     31 
     32             // switch语句的多个地方要使用,我就定义到外面
     33             UserDao ud = new UserDaoImpl();
     34 
     35             // 经过简单的思考,我选择了switch
     36             switch (choiceString) {
     37             case "1":
     38                 // 登录界面,请输入用户名和密码
     39                 System.out.println("--------------登录界面--------------");
     40                 System.out.println("请输入用户名:");
     41                 String username = sc.nextLine();
     42                 System.out.println("请输入密码:");
     43                 String password = sc.nextLine();
     44 
     45                 // 调用登录功能
     46                 // UserDao ud = new UserDaomImpl();
     47 
     48                 boolean flag = ud.isLogin(username, password);
     49                 if (flag) {
     50                     System.out.println("登录成功,可以开始玩游戏了");
     51 
     52                     System.out.println("你玩吗?y/n");
     53                     while (true) {
     54                         String resultString = sc.nextLine();
     55                         if (resultString.equalsIgnoreCase("y")) {
     56                             // 玩游戏
     57                             GuessNumber.start();
     58                             System.out.println("你还玩吗?y/n");
     59                         } else {
     60                             break;
     61                         }
     62                     }
     63                     System.out.println("谢谢使用,欢迎下次再来");
     64                     System.exit(0);
     65                     // break; //这里写break,结束的是switch
     66                 } else {
     67                     System.out.println("用户名或者密码有误,登录失败");
     68                 }
     69                 break;
     70             case "2":
     71                 // 欢迎界面,请输入用户名和密码
     72                 System.out.println("--------------注册界面--------------");
     73                 System.out.println("请输入用户名:");
     74                 String newUsername = sc.nextLine();
     75                 System.out.println("请输入密码:");
     76                 String newPassword = sc.nextLine();
     77 
     78                 // 把用户名和密码封装到一个对象中
     79                 User user = new User();
     80                 user.setUsername(newUsername);
     81                 user.setPassword(newPassword);
     82 
     83                 // 调用注册功能
     84                 // 多态
     85                 // UserDao ud = new UserDaoImpl();
     86                 // 具体类使用
     87                 // UserDaoImpl udi = new UserDaoImpl();
     88 
     89                 ud.regist(user);
     90                 System.out.println("注册成功");
     91                 break;
     92             case "3":
     93             default:
     94                 System.out.println("谢谢使用,欢迎下次再来");
     95                 System.exit(0);
     96                 break;
     97             }
     98         }
     99     }
    100 }

    运行效果,如下:

  • 相关阅读:
    csp 初赛 (不懂的地方)
    4月11日晚科目一练习(95分)
    在博客园利用 MathJax 建支持 $\LaTeX$ 的博客
    4月9日科目一练习(88分)
    阿狸的故事
    4月10日晚科目一练习(95分)
    复变函数自身运动的三个节点
    4月11日科目一练习(97分)
    4月10日科目一练习(92分)
    极限题(4.5)
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4871048.html
Copyright © 2011-2022 走看看