广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java基于IO流实现登录和注册功能
  • 167
分享到

Java基于IO流实现登录和注册功能

2024-04-02 19:04:59 167人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

案例分析: 我们之前做过的登录注册案例是把用户信息存进集合里,要用io流实现的话,就是要把用户信息存入文件中。登录注册两个功能的具体实现是在用户操作类中,所以我们只需要在用户操作类中

案例分析:

我们之前做过的登录注册案例是把用户信息存进集合里,要用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 对象

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

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

--结束END--

本文标题: Java基于IO流实现登录和注册功能

本文链接: https://www.lsjlt.com/news/147199.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java基于IO流实现登录和注册功能
    案例分析: 我们之前做过的登录注册案例是把用户信息存进集合里,要用IO流实现的话,就是要把用户信息存入文件中。登录注册两个功能的具体实现是在用户操作类中,所以我们只需要在用户操作类中...
    99+
    2022-11-13
  • 基于Spring5实现登录注册功能
    本文实例为大家分享了Spring5实现登录注册功能的具体代码,供大家参考,具体内容如下 准备: 根据分析用户注册登录都需要的信息为①username(String)②userid(I...
    99+
    2022-11-13
  • Android基于Sqlite实现注册和登录功能
    Android中基于Sqlite实现注册和登录功能,供大家参考,具体内容如下 前言 写这篇博客主要是为了巩固一下学的Sqlite知识以及梳理一下这个项目的逻辑 实现逻辑 项目的图片...
    99+
    2022-11-13
  • 基于Java怎么实现QQ登录注册功能
    这篇文章主要介绍“基于Java怎么实现QQ登录注册功能”,在日常操作中,相信很多人在基于Java怎么实现QQ登录注册功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”基于Java怎么实现QQ登录注册功能”的疑...
    99+
    2023-06-30
  • 基于struts2和hibernate实现登录和注册功能
    本文实例为大家分享了struts2和hibernate实现登录和注册功能,供大家参考,具体内容如下该项目使用MySQL数据库,数据库名为test,表名info,如图所示: 2、配置web.xml(Struts2使用) &...
    99+
    2023-05-30
    struts2 hibernate 登录
  • Android基于Sqlite怎么实现注册和登录功能
    本篇内容主要讲解“Android基于Sqlite怎么实现注册和登录功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android基于Sqlite怎么实现注册和登录功能”吧!实现逻辑项目的图片结...
    99+
    2023-06-30
  • 基于IO版的用户登录注册实例(Java)
    今天学的是用户登录注册功能。4个包:itcast.cn.user包 User.java 用户类,描述用户基本信息,包括成员变量,无参构造函数,带参构造(可有可无).get和set方法package itcast.cn.day22;publi...
    99+
    2023-05-31
    java 用户 登录
  • 基于Java实现QQ登录注册功能的示例代码
    目录前言实现代码登录页面注册页面效果展示前言 本文主要应用的技术有:GUI、JDBC、多线程 实现的功能具体如下: 1、登录功能 2、注册功能 3、是否隐藏密码的选择以及实现功能 4...
    99+
    2022-11-13
  • java+mysql实现登录和注册功能
    初学JAVA  EE,老师留下一小作业,用JAVA实现与服务器端交互,实现登录和注册功能,初学一种专业课很多老师都会留下一种让学生实现登录和注册的作业。 下面是记录的实现步...
    99+
    2022-11-13
  • Pythontkinter库实现登录注册基本功能
    目录一、各种组件的布局二、制作过程中的理解三、制作过程中遇到的难点四、解决问题的方法tkinter库作为python的标准库之一,它的功能性十分强大,下面我将使用tkinter库制作...
    99+
    2022-12-30
    Python tkinter登录注册 Python tkinter Python登录注册
  • java注册登录功能如何实现
    Java注册登录功能可以通过以下步骤来实现:1. 创建数据库表:- 创建一个用户表,包括用户ID(主键),用户名,密码等字段。2. ...
    99+
    2023-08-11
    java
  • java+mysql怎么实现登录和注册功能
    本篇内容主要讲解“java+mysql怎么实现登录和注册功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java+mysql怎么实现登录和注册功能”吧!1、首先是账号密码输入框和按钮:登录:&...
    99+
    2023-06-30
  • Python实现注册登录功能
    用Python写个注册登录功能,供大家参考,具体内容如下 本文是用Python写一个注册登录功能,难度不大,很适合练手主要就是用列表和字典,以及逻辑判断用到的第3方库模块是time模...
    99+
    2022-11-13
  • Node.js实现登录注册功能
    本文实例为大家分享了Node.js实现登录注册功能的具体代码,供大家参考,具体内容如下 目录结构 注册页面: reg.html <!DOCTYPE html> <...
    99+
    2022-11-13
  • Android实现登录注册功能
    本文实例为大家分享了Android实现登录注册功能的具体代码,供大家参考,具体内容如下 运行环境 Android Studio 总体效果图 一、 设计注册页面的布局 二、完成注册...
    99+
    2022-11-13
  • Java-web实现用户登录、注册功能
    源码在资源里 目录 环境搭建数据库 用户登录需求分析代码实现编写UserMapper类编写User类编写loginServlet类编写login.html编写login.css ...
    99+
    2023-10-10
    java 前端 servlet
  • jsp怎么实现登录和注册功能
    要实现登录和注册功能,可以按照以下步骤进行:1. 创建一个登录页面(login.jsp)和一个注册页面(register.jsp)。...
    99+
    2023-08-09
    jsp
  • python实现登录与注册功能
    本文实例为大家分享了python实现登录与注册的具体代码,供大家参考,具体内容如下 1. 案例介绍 本例设计一个用户登录和注册模块,使用 Tkinter 框架构建界面,主要用到画布、...
    99+
    2022-11-12
  • NodeJs+MySQL实现注册登录功能
    本文实例为大家分享了NodeJs+MySQL实现注册登录功能的具体代码,供大家参考,具体内容如下 之前写过一个没有连接数据库的注册与登陆的实现,这次加上了数据库 刚刚接触后端,很多不...
    99+
    2022-11-13
  • 基于SpringBoot和Vue3的博客平台的用户注册与登录功能实现
    目录1. 后端Spring Boot实现1.1 创建Spring Boot项目1.2 配置application.yml1.3 实现后端API1.3.1 创建User实体类1.3.2...
    99+
    2023-05-15
    基于SpringBoot和Vue3的用户注册与登录功能实现 基于Spring Boot和Vue3的用户注册 基于Spring Boot和Vue3的用户登录
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作