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

猜你喜欢

转载自blog.csdn.net/mfylove/article/details/81121797