1. 程式人生 > >Java用IO流製作一個簡單的使用者登陸註冊程式

Java用IO流製作一個簡單的使用者登陸註冊程式

使用者操作的介面類

public interface UserDao {

    /**
     * 這是使用者登入功能
     * 
     * @param username
     *            登入的使用者名稱
     * @param password
     *            登入的使用者密碼
     * @return 返回的是使用者是否成功,true,成功;false,失敗
     */
    public abstract boolean isLogin(String username, String password);

    /**
     * 這是使用者註冊功能
     * 
     * @param
user * 需要註冊的使用者 */
public abstract void register(User user); }

使用者操作的介面的實現類

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public
class UserDaoImpl implements UserDao { // 為保證user.txt在載入類之前已經被建立了,將建立檔案寫成靜態的 private static File file = new File("user.txt"); static { if (file != null) { try { file.createNewFile(); } catch (IOException e) { System.out.println("建立檔案失敗..."
); } } } // 登入 @Override public boolean isLogin(String username, String password) { // 定義最終值 boolean flag = false; // 使用字元緩衝輸入流讀取user.txt檔案中的內容 BufferedReader br = null; try { br = new BufferedReader(new FileReader(file)); // 一次讀取一行 String line = null; while ((line = br.readLine()) != null) { // 字串的分割功能 String[] datas = line.split("="); // 判斷 if (datas[0].equals(username) && datas[1].equals(password)) { flag = true; break; } } } catch (FileNotFoundException e) { System.out.println("找不到檔案"); } catch (IOException e) { System.out.println("登入失敗"); } finally { if (br != null) { try { // 釋放資源 br.close(); } catch (IOException e) { System.out.println("登入時釋放資源失敗"); } } } return flag; } // 註冊功能 @Override public void register(User user) { // 定義的規則:使用者名稱=密碼 // 建立字元緩衝輸出流 BufferedWriter bw = null; try { // 在檔案末尾自動追加 bw = new BufferedWriter(new FileWriter(file, true)); // 寫資料 bw.write(user.getUsername() + "=" + user.getPassword()); bw.newLine(); bw.flush(); } catch (IOException e) { System.out.println("使用者註冊失敗..."); } finally { // 釋放資源 if (bw != null) { try { bw.close(); } catch (IOException e) { System.out.println("註冊時釋放的資源失敗"); } } } } }

使用者實體類

public class User {

    private String username;
    private String password;

    public User() {
        super();
    }

    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;
    }

}

使用者登入註冊的測試類

import java.util.Scanner;

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

            // 建立鍵盤錄入物件
            @SuppressWarnings("resource")
            Scanner sc = new Scanner(System.in);

            // 錄入資料
            String choice = sc.nextLine();
            // 登入和註冊都會使用介面實現類中的功能所以將 物件建立在主執行緒
            UserDao ud = new UserDaoImpl();

            // 使用switch語句
            switch (choice) {
            case "1":
                // 登入
                System.out.println("登陸:");
                System.out.println("請輸入使用者名稱:");
                String username = sc.nextLine();
                System.out.println("請輸入密碼:");
                String password = sc.nextLine();
                // 呼叫登入功能
                boolean flag = ud.isLogin(username, password);
                if (flag) {
                    System.out.println("恭喜您,登入成功");
                    System.exit(0);// 退出
                } else {
                    // 登入失敗
                    System.out.println("使用者名稱或者密碼輸入錯誤");
                }
                break;
            case "2":
                // 註冊
                System.out.println("註冊:");
                System.out.println("請輸入使用者名稱:");
                String newUserName = sc.nextLine();
                System.out.println("請輸入密碼:");
                String newPwd = sc.nextLine();

                // 將使用者名稱和密碼封裝User物件
                User user = new User();
                user.setUsername(newUserName);
                user.setPassword(newPwd);

                // 呼叫註冊功能
                ud.register(user);
                System.out.println("註冊成功...");
                break;
            case "3":
                System.out.println("謝謝使用,下次再來");
                System.exit(0);
            default:
                System.out.println("輸入有誤請重試");
                break;
            }
        }

    }
}

測試結果

請輸入您的選擇:
1 登入
2 註冊
3 退出
a
輸入有誤請重試
請輸入您的選擇:
1 登入
2 註冊
3 退出
2
註冊:
請輸入使用者名稱:
aaa
請輸入密碼:
sss
註冊成功...
請輸入您的選擇:
1 登入
2 註冊
3 退出
1
登陸:
請輸入使用者名稱:
aaa
請輸入密碼:
sss
恭喜您,登入成功

這裡寫圖片描述