序列化与反序列化 ---密码

package xuliehua;

import java.io.Serializable;

//登录Enter 注册Enroll属性
public class EnrollAndEnter implements Serializable{
    private String name;
    private int vip;
    private String possword;
    
    
    /**
     * 无参构造方法
     */
    public EnrollAndEnter() {
    }
    
    

    /**
     * 有参构造方法
     * @param name
     * @param vip
     * @param possword
     */
    
    public EnrollAndEnter(String name,String possword) {
        this.name = name;
        this.possword = possword;
    }



    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }

    public int getVip() {
        return vip;
    }

    public void setVip(int vip) {
        this.vip = vip;
    }

    public String getPossword() {
        return possword;
    }

    public void setPossword(String possword) {
        this.possword = possword;
    }
    
    
}



package xuliehua;

import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

//创建注册的方法并序列化
public class ObjectIO {
    static Scanner input = new Scanner(System.in);
    EnrollAndEnter ele = new EnrollAndEnter();


    public void bigen() {
        do {
            System.out.println("请选择:1、注册    2、登录     3、退出");
            String str = input.next();
            switch(str) {
            case "1":
                //创建对象

                System.out.println("请输入账户名:");
                ele.setName(input.next());
                System.out.println("请输入密码:");
                ele.setPossword(input.next());
                System.out.println("注册成功");

                ObjectOutputStream oos = null;
                FileOutputStream fos = null;
                try {
                    //创建序列化对象
                    System.out.println(ele.getName());
                    fos = new FileOutputStream("d:/"+ele.getName()+".txt");
                    oos = new ObjectOutputStream(fos);
                    oos.writeObject(ele);
                    oos.flush();

                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    try {
                        oos.flush();
                        oos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                break;
            case "2":

                //创建反序列化对象
                ObjectInputStream ois = null;

                try {

                    System.out.println("您的账户名是:"+ele.getName()+",你的密码是:"+ele.getPossword());
                    System.out.println("请输入账户名:");
                    ele.setName(input.next());
                    System.out.println("请输入密码:");
                    ele.setPossword(input.next());
                    //反序列化
                    ois = new ObjectInputStream(new FileInputStream("d:/"+ele.getName()+".txt"));
                    EnrollAndEnter eae = (EnrollAndEnter)ois.readObject();
                    if(ele.getName().equals(eae.getName()) && ele.getPossword().equals(eae.getPossword())) {
                        System.out.println("登录成功");
                    }else {
                        System.out.println("账户名或者密码错误!");
                    }
                } catch (IOException e) {
//                    e.printStackTrace();
                    System.out.println("账户名或者密码错误!");
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }finally {
                    try {
                        if(ois!=null) {
                            ois.close();
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                break;
            case "3":
                System.out.println("谢谢使用");
                return;
            default :
                System.out.println("输入有误请重输:");
            }

            


        }while(true);
    }
}




package xuliehua;
//测试序列化
import java.util.Scanner;

public class ObjectIOText {
    public static void main(String[] args) {

        ObjectIO ot = new ObjectIO();
        ot.bigen();
    }    
}

 

posted @ 2019-03-09 14:25  zxbaoer  阅读(373)  评论(0编辑  收藏  举报