最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java基于IO流實現(xiàn)登錄和注冊功能

 更新時間:2022年04月25日 18:28:29   作者:yangruxi  
這篇文章主要為大家詳細介紹了Java基于IO流實現(xiàn)登錄和注冊功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

案例分析:

我們之前做過的登錄注冊案例是把用戶信息存進集合里,要用IO流實現(xiàn)的話,就是要把用戶信息存入文件中。登錄注冊兩個功能的具體實現(xiàn)是在用戶操作類中,所以我們只需要在用戶操作類中把之前用戶信息存進集合改為存進文件就可以了。

用到的類的詳細分解:

(1)用戶類(User):用戶名,密碼,郵箱,電話號碼等等各種注冊時會用到的東西。我們在實現(xiàn)這個登錄和注冊案例的時候只需要用戶名和密碼就夠了。這是一個標(biāo)準(zhǔn)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)來定義注冊和登錄功能。接口就是對類的功能的一種擴展,它的本質(zhì)是用來定義規(guī)則的。

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的實現(xiàn)類。

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");

? ? //靜態(tài)代碼塊,隨著類的加載而加載
? ? static{
? ? ? ? try{
? ? ? ? ? ? file.createNewFile();
? ? ? ? }catch(IOException e){
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }

? ? //注冊功能
? ? @Override
? ? public void regist(User user) throws IOException {
? ? ? ? try{
? ? ? ? ? ? //把用戶信息存進文件里
? ? ? ? ? ? String info=user.getUserName()+"="+user.getPassWord();
? ? ? ? ? ? //創(chuàng)建高效字符輸出流來給文件寫入數(shù)據(jù),創(chuàng)建了一個可以追加寫入的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{
? ? ? ? ? ? //創(chuàng)建高效字符輸入流來讀取數(shù)據(jù)
? ? ? ? ? ? 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)在用戶完成注冊登錄后,我們可以實現(xiàn)某種功能了,例如:猜數(shù)字小游戲。再建一個游戲類(GuessNumber)。

package com.edu.game;

import java.util.Scanner;

public class GuessNumber {
? ? public static void playGame(){
? ? ? ? //獲取一個1到100的隨機數(shù)
? ? ? ? int random = (int)(Math.random()*100+1);

? ? ? ? //鍵盤錄入
? ? ? ? Scanner sc = new Scanner(System.in);
? ? ? ? //給出提示
? ? ? ? System.out.println("請輸入所猜的數(shù)字");
? ? ? ? int number = sc.nextInt();

? ? ? ? while(true){
? ? ? ? ? ? if(number==random){
? ? ? ? ? ? ? ? System.out.println("恭喜你猜對了!");
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }else if(number>random){
? ? ? ? ? ? ? ? System.out.println("大了,請繼續(xù)輸入:");
? ? ? ? ? ? ? ? number=sc.nextInt();
? ? ? ? ? ? }else if(number<random){
? ? ? ? ? ? ? ? System.out.println("小了,請繼續(xù)輸入:");
? ? ? ? ? ? ? ? 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) {
? ? ? ? ? ? //創(chuàng)建鍵盤錄入對象,獲取鍵盤錄入信息
? ? ? ? ? ? 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();

? ? ? ? ? ? //創(chuàng)建一個用戶操作類
? ? ? ? ? ? UserDaoImpl udi = new UserDaoImpl();

? ? ? ? ? ? //利用switch循環(huán)對選擇進行操作
? ? ? ? ? ? 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或者其他數(shù)字的選擇,都直接退出系統(tǒng)
? ? ? ? ? ? ? ? System.exit(0);
? ? ? ? ? ? ? ? break;

? ? ? ? ? ? }

? ? ? ? }

? ? }

}

運行結(jié)果:

登錄的注冊的運行結(jié)果:

猜數(shù)字游戲后退出系統(tǒng):

案例實現(xiàn)過程中遇到的小問題:

如果用下面這個構(gòu)造來創(chuàng)建高效字符輸出流對象,程序每運行一次,新輸入的用戶信息會把之前的用戶信息覆蓋掉,文件中只有最近一次存入的用戶信息。

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

如何解決這個問題:

我們用下面這個構(gòu)造來創(chuàng)建高效字符輸出流來給文件寫入數(shù)據(jù),創(chuàng)建了一個可以追加寫入的FileWriter,避免了文件中之前的用戶信息被覆蓋。

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

參考:

FileWriter(String fileName, boolean append)
//根據(jù)給定的文件名以及指示是否附加寫入數(shù)據(jù)的 boolean 值來構(gòu)造 FileWriter 對象

例如:我注冊了三次,文件中就有了這三次存入的用戶信息。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • redisson 實現(xiàn)分布式鎖的源碼解析

    redisson 實現(xiàn)分布式鎖的源碼解析

    這篇文章主要介紹了redisson 實現(xiàn)分布式鎖的源碼解析,通過模擬一個商品秒殺的場景結(jié)合示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Spring?Boot整合Bootstrap的超詳細步驟

    Spring?Boot整合Bootstrap的超詳細步驟

    之前做前端開發(fā),在使用bootstrap的時候都是去官網(wǎng)下載,然后放到項目中,在頁面引用,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot整合Bootstrap的超詳細步驟,需要的朋友可以參考下
    2023-05-05
  • SpringBoot靜態(tài)視頻實時播放的實現(xiàn)代碼

    SpringBoot靜態(tài)視頻實時播放的實現(xiàn)代碼

    這篇文章主要介紹了SpringBoot靜態(tài)視頻實時播放的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • SpringBoot使用Caffeine實現(xiàn)緩存的示例代碼

    SpringBoot使用Caffeine實現(xiàn)緩存的示例代碼

    本文主要介紹了SpringBoot使用Caffeine實現(xiàn)緩存的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java運算符的常見問題與用法小結(jié)

    Java運算符的常見問題與用法小結(jié)

    這篇文章主要介紹了Java運算符,結(jié)合實例形式總結(jié)分析了Java各種常見運算符,包括算術(shù)運算符、比較運算符、邏輯運算符、位運算符等相關(guān)功能、原理與使用技巧,需要的朋友可以參考下
    2020-04-04
  • BeanUtils.copyProperties()所有的空值不復(fù)制問題

    BeanUtils.copyProperties()所有的空值不復(fù)制問題

    這篇文章主要介紹了BeanUtils.copyProperties()所有的空值不復(fù)制問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java數(shù)據(jù)結(jié)構(gòu)之圖的路徑查找算法詳解

    Java數(shù)據(jù)結(jié)構(gòu)之圖的路徑查找算法詳解

    這篇文章主要為大家詳細介紹了java數(shù)據(jù)結(jié)構(gòu)中圖的路徑查找算法,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-11-11
  • Java Socket編程實現(xiàn)簡單的問候服務(wù)

    Java Socket編程實現(xiàn)簡單的問候服務(wù)

    這篇文章主要為大家介紹了Java Socket編程實現(xiàn)簡單的問候服務(wù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Spring創(chuàng)建bean的幾種方式及使用場景

    Spring創(chuàng)建bean的幾種方式及使用場景

    本文主要介紹了Spring創(chuàng)建bean的幾種方式及使用場景,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Java線程的生命周期和狀態(tài)控制_動力節(jié)點Java學(xué)院整理

    Java線程的生命周期和狀態(tài)控制_動力節(jié)點Java學(xué)院整理

    這篇文章主要介紹了Java線程的生命周期和狀態(tài)控制,需要的朋友可以參考下
    2017-05-05

最新評論

鸡西市| 石棉县| 桐柏县| 凤山市| 云梦县| 区。| 仁布县| 奉节县| 高唐县| 健康| 扎兰屯市| 新郑市| 赤峰市| 西畴县| 长兴县| 通化市| 河南省| 武功县| 五峰| 铁力市| 卢龙县| 郓城县| 万安县| 寿光市| 民权县| 汽车| 武邑县| 寿阳县| 津南区| 营口市| 绥芬河市| 云霄县| 辽阳县| 湖南省| 益阳市| 法库县| 秭归县| 尚志市| 湟中县| 界首市| 丹东市|