Java-->IO流類比實現使用者登入以及登入資訊,java--io

來源:互聯網
上載者:User

Java-->IO流類比實現使用者登入以及登入資訊,java--io

--> Test 測試類別

package com.dragon.java.hwlogin;import java.io.FileNotFoundException;import java.util.HashSet;import java.util.Scanner;import java.util.Set;/* * 類比使用者登陸,並記錄登陸日誌。 a:根據使用者的選擇是註冊使用者還是登陸使用者。    b:如果是使用者註冊把使用者註冊的使用者名稱和密碼儲存在檔案中,檔案可以記錄多組使用者名稱和密碼。     c:每個使用者每登陸一次都生產一個登陸記錄,把登陸記錄儲存在檔案中,形成登陸日誌。登陸記錄格式(使用者名稱, 密碼, 登陸時間): ==zhangsan, xxxxx, 2016年8月16日 13:20:20==   d:如果是用Admin管理員的身份登陸的,可以查看所有的使用者的登陸記錄。否則其他使用者只可以查看自己的登陸記錄。 */public class Test {    static Set<User> set = new HashSet<>();    @SuppressWarnings("resource")    public static void main(String[] args) throws FileNotFoundException {        Scanner scanner = new Scanner(System.in);        AdminUser adminUser = new AdminUser();        User thisUser = null;        // 首先將曾經的使用者資訊存入集合中        adminUser.splitFile(AdminUser.filePath2, set);        while (true) {            System.out.println("-----歡迎使用xxx系統-----");            System.out.println("1.註冊使用者           2.登入使用者");            System.out.println("3.管理員登入       4.退出");            System.out.println("請輸入序號:");            String name = null, password = null;            switch (scanner.nextInt()) {            case 1:                System.out.println("-----使用者註冊:-----");                System.out.println("請輸入使用者名稱:");                name = scanner.next();                System.out.println("請輸入密碼:");                password = scanner.next();                System.out.println("請確認密碼:");                if (!scanner.next().equals(password)) {                    System.out.println("兩次輸入的密碼不相同!");                    continue;                }                if (set.size() != 0) {                    if (adminUser.userExist(name, set) != null) {                        System.out.println("該使用者已存在!");                        break;                    } else {                        adminUser.userRegister(name, password, set);                    }                } else {                    adminUser.userRegister(name, password, set);                }                break;            case 2:                System.out.println("-----使用者登入:-----");                if (set.size() != 0) {                    System.out.println("請輸入使用者名稱:");                    name = scanner.next();                    System.out.println("請輸入密碼:");                    password = scanner.next();                    if ((thisUser = adminUser.userExist(name, set)) == null) {                        System.out.println("該使用者不存在!");                    } else if (!password.equals(thisUser.getPassword())) {                        System.out.println("密碼錯誤!");                    } else {                        System.out.println("親愛的" + thisUser.getName()                                + ",您的登入記錄為:");                        // 得到所有的使用者曾登入資訊並與目前使用者進行比較                        Set<User> setTime = new HashSet<>();                        adminUser.splitFile(AdminUser.filePath, setTime);                        for (User user : setTime) {                            if (thisUser.getName().equals(user.getName())) {                                System.out.println(user);                            }                        }                        System.out.println("您現於" + adminUser.loginTime()                                + "登入!");                        adminUser.userLogin(name, password,                                adminUser.loginTime(), set);                    }                } else {                    System.out.println("還沒有使用者註冊!");                    continue;                }                break;            case 3:                adminUser.readUser();                break;            case 4:                System.out.println("已退出!");                System.exit(0);            default:                System.out.println("輸入有誤!...");                continue;            }        }    }}

--> AdminUser 類對使用者登入進行控制以及錄入資訊

package com.dragon.java.hwlogin;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.IOException;import java.io.InputStream;import java.io.PrintStream;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;import java.util.Set;class AdminUser {    @SuppressWarnings("unused")    private static InputStream in = System.in;    private static PrintStream out = System.out;    private static PrintStream ps = null;    private static BufferedReader br = null;    static String filePath = "D:/workspace/08-16/src/com/dragon/java/hwlogin/login.txt";    static String filePath2 = "D:/workspace/08-16/src/com/dragon/java/hwlogin/users.txt";    /**     * 判斷user 是否存在     *      * @param name     * @param set     * @return     */    public User userExist(String name, Set<User> set) {        for (User user : set) {            if (name.equals(user.getName())) {                return user;            }        }        return null;    }    /**     * 使用者登入     *      * @param name     * @param password     * @param time     * @param set     */    public void userLogin(String name, String password, String time,            Set<User> set) {        User user = new User(name, password, time);        writeUser(ps, user, filePath, set);    }    /**     * 使用者註冊     *      * @param name     * @param password     * @param set     */    public void userRegister(String name, String password, Set<User> set) {        User user = new User(name, password);        writeUser(ps, user, filePath2, set);    }    /**     * 登入用的曾登入資訊,通過讀取當前的系統時間     *      * @return     */    public String loginTime() {        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(                "yyyy年MM月dd日  hh:mm:ss", Locale.CHINA);        Date date = new Date(System.currentTimeMillis());        String time = simpleDateFormat.format(date); // 當前系統時間        return time;    }    /**     * 讀取所有使用者的登入資訊     */    public void readUser() {        try {            br = new BufferedReader(new FileReader(filePath));            String line = null;            while ((line = br.readLine()) != null) {                System.out.println(line);            }        } catch (IOException e) {            System.out.println(e);        } finally {            try {                br.close();            } catch (IOException e) {                System.out.println(e);            }        }    }    /**     * 將使用者資訊(或登入資訊)寫入到檔案中     *      * @param ps     * @param user     * @param file     * @param set     */    public void writeUser(PrintStream ps, User user, String file, Set<User> set) {        set.add(user);        try {            // FileOutputStream(file,true) --> true表示確認檔案追加 --> 即不重新整理檔案            ps = new PrintStream(new FileOutputStream(file, true), true);            System.setOut(ps);            System.out.println(user);        } catch (FileNotFoundException e) {            System.out.println(e);        } finally {            // 重新設定"標準"輸出資料流到控制台            System.setOut(out);        }    }    /**     * 將儲存資訊的檔案分割得到使用者資料並存入集合     *      * @param file     * @param set     */    public void splitFile(String file, Set<User> set) {        try {            br = new BufferedReader(new FileReader(file));            String line = null;            while ((line = br.readLine()) != null) {                String[] strings = line.split(",");                User user = new User(strings[0].substring(11,                        strings[0].length()), strings[1].substring(10,                        strings[1].length()), strings[2].substring(6,                        strings[2].length()));                set.add(user);            }        } catch (IOException e) {            System.out.println(e);        } finally {            try {                br.close();            } catch (IOException e) {                System.out.println(e);            }        }    }}

--> User 類存放使用者的屬性

package com.dragon.java.hwlogin;class User {    private String name;    private String password;    private String time;    User() {        super();    }    User(String name, String password) {        super();        this.name = name;        this.password = password;    }    User(String name, String password, String time) {        this(name, password);        this.time = time;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public String getTime() {        return time;    }    public void setTime(String time) {        this.time = time;    }    @Override    public String toString() {        return "User [name=" + name + ", password=" + password + ", time="                + time + "]";    }}

--> 重新導向輸入輸出資料流之前要先儲存系統預設的輸入輸出資料流(即System.in 和 System.out),以便恢複...

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.