zoukankan      html  css  js  c++  java
  • 循环注册十个账号,保证程序重启之后,使用这十个账号都能登录成功

     

    用户模板

    import java.io.Serializable;
    
    public class User implements Serializable{
    
        
        //账号
        private String id;
        
        
        //密码
        private String password;
    
    
        public User(String id, String password) {
            super();
            this.id = id;
            this.password = password;
        }
    
    
        public String getId() {
            return id;
        }
    
    
        public void setId(String id) {
            this.id = id;
        }
    
    
        public String getPassword() {
            return password;
        }
    
    
        public void setPassword(String password) {
            this.password = password;
        }
        
        
        public static void main(String[] args) {
        
        }
        
    }
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    
    public class Zuoye02 {
    
        
        static Scanner sc = new Scanner(System.in);
        public static Map<String,String> map = new HashMap();
        static String choose = null;
        public static void logo() {
            
            
            //注册 
            System.out.println("注册:");
            System.out.println("请输入您要注册的账号:");
            String id = sc.next();
            
            System.out.println("请输入您要注册账号的密码:");
            String password = sc.next();
            
            
            map.put(id,password);
            
            
            
            
        }
        
        public static void main(String[] args) {
            
            
            //写一个集合
            
            //需求:
            //循环注册十个账号,保证程序重启之后,使用这十个账号都能登录成功
            
        
            //调用注册方法:
            
            
                logo();
                System.out.println("注冊成功!");
                start:while(true) {
                System.out.println("是否继续注册(y/n)");
                String choose = sc.next();
                
                if(choose.equalsIgnoreCase("y")) {
                    
                    logo();
                    
                }else {
                    
                    break start;
                }
                }
        
    
            //要保证系统重启后再使用账号也能登录成功,那么就要把程序(注册好的账号)=>文件夹
            //而这里是把对象给对象流化了  可以用序列化和反序列化
            
            
            
            //1 地址   2 输出: 调用FileOutStra..  ObjectOutStr.. 两个类  write
        
                FileOutputStream fos = null;
                ObjectOutputStream ops = null;
            
            //再输入 读取  read  FileIn.....   ObjectRead
                    FileInputStream fis = null;
                    ObjectInputStream ois = null;
                    
            
            try {
                fos = new FileOutputStream("C:/User/User.txt");
                fis = new FileInputStream("C:/User/User.txt");
                
                try {
                    ops = new ObjectOutputStream(fos);
                    ois = new ObjectInputStream(fis);
                    
                    ops.writeObject(map);
                    
                    System.out.println("注册成功!");
                    ops.flush();
                    ops.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Map<String, String> userIn = null;
            System.out.println("用户登录:");
            System.out.println("请输入用户账号:");
            try {
                 try {
                    userIn = (Map<String,String>)ois.readObject();
                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                    //登录
                String id = sc.next();
                System.out.println("请输入密码:");
                String password = sc.next();
                
                User in = new User(id,password);
                if(userIn.containsKey(in.getId())&&userIn.containsValue(in.getPassword())) {
                    
                    
                    System.out.println("登录成功!");
                    
                    
                    
                }else if(!userIn.containsKey(in.getId())||!userIn.containsValue(in.getPassword())){
                    System.out.println("密码输入错误");
                    
                    
                }else {
                    
                    
                    System.out.println("登录失败!");
                    
                    
                }
                
    //        } catch (ClassNotFoundException e) {
    //            // TODO Auto-generated catch block
    //            e.printStackTrace();
    //    } catch (IOException e) {
    //            // TODO Auto-generated catch block
    //            e.printStackTrace();
            }finally {
                
                try {
                    fis.close();
                    ois.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
                
                
            }
        
            
            
        }
    
        
        
    }
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.Reader;
    import java.util.HashMap;
    import java.util.Map;
    
    //测试读取 文本类是否保存了我们注册好的账号
    public class Demo {
        
        public static void main(String[] args) {
            
            //读取  用反序列化  输入
             Map<String,String> map1 = new HashMap();
            
            FileInputStream fis = null;
            
            ObjectInputStream ois = null;
            
            
            try {
                fis = new FileInputStream("C:/User/User.txt");
                try {
                    ois = new ObjectInputStream(fis);
                    try {
                        Map<String,String>  user = (Map<String,String>)ois.readObject();
                        
                        for (Map.Entry<String, String> demo : user.entrySet()) {
                            
                            System.out.println("用户账号是:"+demo.getKey()+"用户密码是:"+demo.getValue());
                    }
                    
                        
                        
                    } catch (ClassNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            finally{
                
                try {
                    ois.close();
                    fis.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
                
            }
    
            
            
        }
        
    
    }

    测试结果  先测在程序中注册成功后是否能登录成功(没重启的)

     看文本是否被程序传进了东西

     发现有被存入内容后,测试一下是不是我们刚刚注册好的账号:

     这里我就发现一个BUG 明明注册三个但却只显示两个但这个在后面才知道这个是正确的 (因为Map集合就是为了确保账号的唯一性)  是在注册那里少加了条件   

    经过我的一番独自思考,才发现是在注册的时候少加了条件

    本来我用Map集合就是为了确保账号的唯一性 但后面做着做着却完记了

    于是我就是在注册的那边的代码进行了修改(开闭原则)

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    
    public class Zuoye02 {
    
        static Scanner sc = new Scanner(System.in);
        public static Map<String, String> map = new HashMap();
        static String choose = null;
    
        public static void logo() {
    
            // 注册
            System.out.println("注册:");
            System.out.println("请输入您要注册的账号:");
            String id = sc.next();
            System.out.println("请输入您要注册账号的密码:");
            String password = sc.next();

    //以下为修改内容:
    for (Map.Entry<String, String> entry : map.entrySet()) { if (id.equalsIgnoreCase(entry.getKey())) { System.out.println("用户已存在!"); return; } } //这里结束 map.put(id, password); }

    我加入判断后再输出的结果:

     原来输入可以正确的,因为用户已存在 则就没有将其存入文本这样再输出:

     

    就是只能输出用户账号唯一的用户,确保了用户账号的唯一性  但有时也要看需求而定

    本答案仅供参考

  • 相关阅读:
    sklearn—支持向量机
    sklearn—LinearRegression,Ridge,RidgeCV,Lasso线性回归模型简单使用
    技术文档翻译-------glove readme(1)
    python jieba分词(结巴分词)、提取词,加载词,修改词频,定义词库 -转载
    Word2Vec模型参数 详解
    aws ec2 硬盘扩容
    记一个python requests模块请求的报错
    ubuntu安装mysql, 修改初始密码一条龙服务
    mysql 创建用户, 分配权限, 删除用户
    sqlite删除数据
  • 原文地址:https://www.cnblogs.com/bichen-01/p/11295006.html
Copyright © 2011-2022 走看看