Java实现--登录和注册案例(IO流实现)
来源:互联网 发布:年终总结数据分析 编辑:程序博客网 时间:2024/06/06 02:42
案例分析:
我们之前做过的登录注册案例是把用户信息存进集合里,要用IO流实现的话,就是要把用户信息存入文件中。登录注册两个功能的具体实现是在用户操作类中,所以我们只需要在用户操作类中把之前用户信息存进集合改为存进文件就可以了。
用到的类的详细分解:
(1)用户类(User):用户名,密码,邮箱,电话号码等等各种注册时会用到的东西。我们在实现这个登录和注册案例的时候只需要用户名和密码就够了。这是一个标准Java描述类。
package com.edu.domain;public class User { private String userName; private String passWord; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassWord() { return passWord; } public void setPassWoed(String passWord) { this.passWord = passWord; } public User(String userName, String passWord) { super(); this.userName = userName; this.passWord = passWord; } public User() { super(); // TODO Auto-generated constructor stub }}
(2)我们需要定义一个接口(UserDao)来定义注册和登录功能。接口就是对类的功能的一种扩展,它的本质是用来定义规则的。
package com.edu.dao;import java.io.IOException;import com.edu.domain.User;public interface UserDao { //定义两个功能 //注册功能 public abstract void regist(User user) throws IOException; //登录功能 public abstract boolean isLogin(String userName,String passWord);}
(3)用户操作类(UserDaoImpl),也就是之前定义的接口UserDao的实现类。
package com.edu.dao.impl;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import com.edu.dao.UserDao;import com.edu.domain.User;public class UserDaoImpl implements UserDao{ public static File file = new File("user.txt"); //静态代码块,随着类的加载而加载 static{ try{ file.createNewFile(); }catch(IOException e){ e.printStackTrace(); } } //注册功能 @Override public void regist(User user) throws IOException { try{ //把用户信息存进文件里 String info=user.getUserName()+"="+user.getPassWord(); //创建高效字符输出流来给文件写入数据,创建了一个可以追加写入的FileWriter,避免了文件中之前的用户信息被覆盖 BufferedWriter bw = new BufferedWriter(new FileWriter("user.txt",true)); bw.write(info); bw.newLine(); bw.flush(); bw.close(); }catch(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 对象
例如:我注册了三次,文件中就有了这三次存入的用户信息。
阅读全文
0 0
- Java实现--登录和注册案例(IO流实现)
- 【Java学习笔记】19.登录和注册案例(IO流实现)
- 登录注册案例(IO实现)
- IO流_登录注册案例IO版实现
- java案例-基于IO流的登录注册案例
- Java实现--登录和注册案例(把用户信息存进集合)
- 登录注册案例(集合实现)
- JAVA-14.2-登录注册案例分析(IO流版)
- Java Web 案例一 登录、注册功能实现
- 实现登录和注册
- 登陆注册案例——IO流实现
- 【Java学习笔记】15.登录注册案例的实现(集合篇)
- 集合实现用户登录注册案例
- Java登录界面的实现(注册、登录、背景图片)
- java 与数据库连接 实现用户的注册和登录
- Java+Tomcat+MySQL实现简单的网页注册和登录
- java 与数据库连接 实现用户的注册和登录
- 黑马程序员_集合实现控制台登录注册案例
- 我来了
- 头文件里面有什么,头文件的作用:大大提高了程序的编写效率!尤其再多文件效率提高中更为突出!
- 用for in反射来无限制的修改css
- 简单的四则运算答题系统(Java版)
- ROS总结——ROS消息发布和订阅
- Java实现--登录和注册案例(IO流实现)
- [BZOJ4830][HNOI2017]抛硬币-扩展Lucas定理
- 【NDN VANET】Vehicular Inter-Networking via Named Data 全文翻译
- 打开新窗口window.open
- Steve Jobs‘ Speach At Stanford University
- poj 1042 Gone Fishing
- Struts2_单文件上传
- 数据类型的一些测试
- Java程序猿学习当中各个阶段的建议