-
創建本地文件, 寫入幾個用戶名密碼,以"," 分割
-
模擬登錄, 啓動系統, 提示請您輸入用戶名密碼, 如果成功,提示登錄成功,
-
如果用戶名不存在,提示用戶註冊, 輸入 y 進入註冊, 請用戶輸入用戶名密碼,對比本地文件,如果用戶名不重複則註冊成功,否則提示失敗,並重新註冊
-
如果是密碼錯誤,提示用戶重置密碼, 輸入y, 進入修改密, 兩次密碼一致, 表示修改成功,並保存到本地文件
因爲map集合不可以存重複的鍵,剛好可以將用戶名作爲鍵,密碼作爲值.修改密碼時剛好可以把原鍵值對覆蓋
最後可以遍歷集合將元素保存到本地文件
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
public class Test {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new FileReader("user"));
HashMap<String, String> map = new HashMap<>();
String str;
while((str=br.readLine())!=null){
map.put(str.split(",")[0], str.split(",")[1]);
}
br.close();
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("請輸入用戶名和密碼");
System.out.println("用戶名:");
String username = sc.next();
//註冊賬號
if(!map.containsKey(username)){
System.out.println("用戶名不存在,Y註冊N停止其他繼續");
String pd = sc.next();
if("n".equals(pd)||"N".equals(pd)){
return;
}else if("y".equals(pd)||"Y".equals(pd)){
w:while(true){
System.out.println("開始註冊賬號");
System.out.println("請輸入用戶名:");
username = sc.next();
System.out.println("請輸入密碼");
String password = sc.next();
if(map.containsKey(username)){
System.out.println("用戶名已存在,請重新註冊");
continue w;
}else{
map.put(username, password);
System.out.println("註冊成功");
Set<String> set = map.keySet();
BufferedWriter bw = new BufferedWriter(new FileWriter("user"));
for(String st : set){
bw.write(st);
bw.write(",");
bw.write(map.get(st));
bw.newLine();
}
bw.close();
return;
}
}
}
}
//修改密碼
else{
System.out.println("請輸入密碼");
String password = sc.next();
if(map.get(username).equals(password)){
System.out.println("登陸成功");
return;
}else{
System.out.println("是否修改密碼,y修改密碼其他停止");
String mm = sc.next();
m: while(true){
if("y".equals(mm)||"Y".equals(mm)){
System.out.println("輸入修改後的密碼");
String mm1 =sc.next();
System.out.println("請再輸入一次密碼");
String mm2 =sc.next();
if(mm1.equals(mm2)){
map.put(username, mm1);
System.out.println("密碼修改成功");
Set<String> set = map.keySet();
BufferedWriter bw = new BufferedWriter(new FileWriter("user"));
for(String st : set){
bw.write(st);
bw.write(",");
bw.write(map.get(st));
bw.newLine();
}
bw.close();
return;
}else{
System.out.println("密碼不一致,請重新修改密碼");
continue m;
}
}
}
}
}
}
}
}