用io流模擬用戶登錄註冊

  • 創建本地文件, 寫入幾個用戶名密碼,以"," 分割

  • 模擬登錄, 啓動系統, 提示請您輸入用戶名密碼, 如果成功,提示登錄成功,

  • 如果用戶名不存在,提示用戶註冊, 輸入 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;
                            }
                        }
                    }                    
                }
                
            }
        }
    }
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章