java io写一个登陆界面_Java实现用户登录注册案例(IO版)

需求:用户登录注册案例(IO版本)

分析:大部分的分析在我的上一个文章里面有,这次在上次的基础上,改动一下,变为IO流版本

图片展示:

a52569db609e2a481a424ed23d703365.png

9bc379a8e6b6b2d0066d0855e87bf586.png

2e35978df33fe054aaf54a5a095794d9.png

87e3c929b2cd4c548c0c0459532d6d58.png

这里用的写入文件存储注册信息,然后判断也是读取文件信息

因为写入文件,所以用的自负缓冲输出流 (BufferWriter)

因为读取文件,所以用的高效字节输入流

(BufferReader)

下面是源代码:

cn.itcast.dao

package cn.itcast.dao;

import cn.itcast.pojo.User;

/**

* 这是针对用户进行操作的接口

*

* @author 徐文

* @version v1.1

* */

public interface UserDao {

/**

* 这是用户登录功能

* @param username 用户名

* @param password 密码

* @return 返回登录是否成功

* */

public abstract boolean isLogin(String username,String password);

/**

* 这是用户注册功能

* @param user 需注册的用户信息

* */

public abstract void regist(User user);

}

cn.itcast.dao.impl

package cn.itcast.dao.impl;

import cn.itcast.dao.UserDao;

import cn.itcast.pojo.User;

import java.io.*;

/**

* 这是用户操作的具体实现类(IO版)

*

* @author 徐文

* @version v1.1

* */

public class UserDaoImpl implements UserDao {

private static File file = new File("user.txt");

static {

try {

file.createNewFile();

} catch (IOException e) {

System.out.println("创建文件失败");

//e.printStackTrace();

}

}

@Override

public boolean isLogin(String username, String password) {

boolean flag = false;

BufferedReader br = null;

try {

br = new BufferedReader(new FileReader("user.txt"));

String line = null;

while ((line=br.readLine())!=null){

//用户名=密码

String[] datas = line.split("=");

if(datas[0].equals(username) && datas[1].equals(password)){

flag = true;

}

}

} catch (FileNotFoundException e) {

System.out.println("登录找不到信息所在的文件");

//e.printStackTrace();

}catch(IOException e){

System.out.println("用户登录失败");

}finally {

if (br != null) {

try {

br.close();

} catch (IOException e) {

System.out.println("用户登录释放资源失败");

//e.printStackTrace();

}

}

}

return flag;

}

@Override

public void regist(User user) {

/*

* 为了让注册的数据能够有一定的规则,我就自己定义了一个规则:

* 用户名=密码

* */

BufferedWriter bw = null;

try {

//bw=new BufferedWriter(new FileWriter(file));

//为了保证数据是追加写入,后面必须加true

bw=new BufferedWriter(new FileWriter(file,true));

bw.write(user.getUsername()+"="+user.getPassword());

bw.newLine();

bw.flush();

} catch (IOException e) {

System.out.println("用户注册失败");

//e.printStackTrace();

} finally {

if (bw != null) {

try {

bw.close();

} catch (IOException e) {

System.out.println("用户注册释放资源失败");

//e.printStackTrace();

}

}

}

}

}

cn.itcast.game

package cn.itcast.game;

import java.util.Scanner;

/**

* 这是猜数字小游戏

*

* @author 徐文

* @version v1.1

*

* */

public class GuessNumber {

private GuessNumber(){}

public static void start(){

System.out.println("--------------欢迎进入猜数字小游戏--------------");

//产生一个随机数

int number = (int) (Math.random()*100)+1;

//定义一个统计变量

int count = 0;

while (true) {

//键盘录入一个数据

Scanner sc = new Scanner(System.in);

System.out.println("请输入数据(1-100):");

int guessNumber = sc.nextInt();

count++;

//判断

if (guessNumber > number) {

System.out.println("你猜的数据" + guessNumber + "大了");

} else if (guessNumber < number) {

System.out.println("你猜的数据" + guessNumber + "小了");

} else {

System.out.println("恭喜你"+count+"次就猜中了");

break;

}

}

}

}

cn.itcast.pojo

package cn.itcast.pojo;

/**

* 这是用户基本描述类

*

* @author 徐文

* @version v1.1

* */

public class User {

//用户名

private String username;

//密码

private String password;

public User() {

}

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;

}

}

cn.itcast.test

package cn.itcast.test;

import cn.itcast.dao.UserDao;

import cn.itcast.dao.impl.UserDaoImpl;

import cn.itcast.game.GuessNumber;

import cn.itcast.pojo.User;

import java.util.Scanner;

/**

* 用户测试类

*

* @author 徐文

* @version v1.1

* */

public class UserTest {

public static void main(String[] args) {

//为了能够回来

while (true) {

//欢迎界面,给出选择项

System.out.println("--------------欢迎光临--------------");

System.out.println("1 登录");

System.out.println("2 注册");

System.out.println("3 退出");

System.out.println("请输入您的选择");

//键盘录入选择,根据选择做不同的操作

Scanner sc = new Scanner(System.in);

//为了后面的录入信息的方便,我所有的数据录入全部用字符串接受

String choiceString = sc.nextLine();

//swich语句多个地方要使用,我就定义到外面

UserDao ud = new UserDaoImpl();

//经过简单的思考,我选择了swich

switch (choiceString) {

case "1":

//登录界面,请输入用户名和密码

System.out.println("--------------登录界面--------------");

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

String username = sc.nextLine();

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

String password = sc.nextLine();

//调用登录功能

//UserDao ud = new UserDaoImpl();

boolean flag = ud.isLogin(username, password);

if (flag) {

System.out.println("登陆成功,可以选择是否开始玩游戏了");

System.out.println("您玩猜数字小游戏吗?y/n");

while (true) {

String resultString = sc.nextLine();

if (resultString.equalsIgnoreCase("y")) {

//玩游戏

GuessNumber.start();

System.out.println("您还玩吗?y/n");

} else {

break;

}

}

System.exit(0);

//break;//这里写break,结束的是swich

} else {

System.out.println("用户名或者密码有误,登陆失败");

}

break;

case "2":

//欢迎界面,请输入用户名和密码

System.out.println("--------------注册界面--------------");

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

String newUsername = sc.nextLine();

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

String newPassword = sc.nextLine();

//把用户名和密码封装到一个对象中

User user = new User();

user.setUsername(newUsername);

user.setPassword(newPassword);

//调用注册功能

//多态

//UserDao ud = new UserDaoImpl();

//具体类使用

//UserDaoImpl udi = new UserDaoImpl();

ud.regist(user);

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

break;

case "3":

default:

System.out.println("谢谢使用,欢迎下次再来");

System.exit(0);

break;

}

}

}

}

标签:Java,String,登录,System,IO,println,itcast,cn,out

来源: https://blog.csdn.net/weixin_46316012/article/details/105641637

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值