--> Test 測試類java
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 類對用戶登陸進行控制以及錄入信息ide
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),以便恢復...this