• 序列化与反序列化


    package 学生管理系统;
    
    import java.io.*;
    import java.util.Arrays;
    import java.util.Comparator; 
    import java.util.ArrayList;
    import java.util.Scanner;
    
    class Student implements Serializable{
        public int num;
        public String name,sex,obj;
        
        Student()
        {
            this.num = 0;
            this.name = "";
            this.sex = "";
            this.obj = "";
        }
        
        Student(int _num  ,String _name,String _sex,String _obj){
            this.num = _num;
            this.name = _name;
            this.sex = _sex;
            this.obj = _obj;    
        }
        
        void print(){
            System.out.println("学号:"+num+"     姓名:"+name+"     性别:"+sex+"     专业:"+obj);
        }
        
    }
    
    public class StudentMIS {
    
        /**
         * @param args
         */
        
        //保存  序列化
        public static void save(ArrayList<Student> student){
            try{
                ObjectOutputStream os = new ObjectOutputStream(
                        new FileOutputStream("F:\输入输出\student.dat"));
                
                os.writeObject(student);
                os.close();
                System.out.println("写入成功.");
            }
            catch (Exception e){
                System.out.println("发生异常"+e);
                e.printStackTrace();
            }
    
        }
        
        //显示 反序列化
        public static ArrayList<Student> read(){
            File f = new File("F:\输入输出\student.dat");
            if(f.exists()){    
                try{
                    ObjectInputStream ois = new ObjectInputStream(new FileInputStream(f));
        
                    ArrayList<Student> student = (ArrayList<Student>)ois.readObject();
                                
                    ois.close();
                    
                    System.out.println("读取成功.");
                    return student;
                }
                catch(IOException e){
                    System.out.println("发生异常1"+e);
                    e.printStackTrace();
                }
                catch(ClassNotFoundException e){
                    System.out.println("发生异常2"+e);
                    e.printStackTrace();
                }
                
            }    
            
            return null;
        }
        
        
        public static void main(String[] args){
                ArrayList<Student> student = new ArrayList<Student>(0);
                student = read();//反序列化
        
                int choose = 0;
                
                int num;
                String name,sex,obj;
                
                Scanner in = new Scanner(System.in);        
                do{
                    System.out.println("1.增加        2.删除        3.显示        4.修改        5.保存        6.退出");
                    choose = in.nextInt();
                    switch(choose){
                    case 1:
                        Student temp = new Student();
                        System.out.println("请输入学号:");
                        temp.num = in.nextInt();
                        System.out.println("请输入姓名:");
                        temp.name = in.next();
                        System.out.println("请输入性别:");
                        temp.sex = in.next();
                        System.out.println("请输入专业:");
                        temp.obj = in.next();
                        
                        
                        student.add(temp);        
                        break;
                        
                    case 2:
                        System.out.print("请输入你要删除的学号");
                        num = in.nextInt();
                        for(int i=0;i<student.size();i++){
                            if(student.get(i).num == num){
                                student.remove(i);
                            }
                        }
                        break;
                        
                    case 3:
                        for(int i=0;i<student.size();i++){
                            student.get(i).print();
                        }
                        break;
                        
                    case 4:
                        System.out.print("请输入你要修改的学生学号");
                        num = in.nextInt();
                        int i;
                        for(i=0;i<student.size();i++){
                            if(student.get(i).num == num){
                                System.out.println("请输入新的学号:");
                                student.get(i).num = in.nextInt();
                                System.out.println("请输入姓名:");
                                student.get(i).name = in.next();
                                System.out.println("请输入性别:");
                                student.get(i).sex = in.next();
                                System.out.println("请输入专业:");
                                student.get(i).obj = in.next();
                                
                                System.out.println("修改成功.");
                            }
                        }
                        
                        if(i == student.size()){
                            System.out.println("无该学生!");
                        }
                        break;
                        
                        
                    case 5:
                        save(student);
                        break;
                    
                    case 6:
                        choose = 7;
                        break;
                    }
                }while(choose >= 1 && choose <= 6 );
        }
    }
  • 相关阅读:
    斯特林反演
    子集计数
    快速求斯特林数总结(洛谷模板题解)
    min-25筛总结
    数学笔记
    [WC2018]即时战略(LCT,splay上二分)
    [WC2018]通道(乱搞,迭代)
    Python requests 多线程抓取 出现HTTPConnectionPool Max retires exceeded异常
    Python监控服务器利器--psutil
    gevent
  • 原文地址:https://www.cnblogs.com/xiaochi/p/4934124.html
Copyright © 2020-2023  润新知