黑马程序员技术交流社区

标题: 序列化&反序列化 [打印本页]

作者: _J2EE_LiXiZhen    时间: 2017-11-20 22:26
标题: 序列化&反序列化
有学生类包含学号,姓名,省份证号,Java成绩,数学成绩,英语成绩等成员变量,提供构造方法和setter和getter方法。
要求:
        * 学生信息及成绩保存到C盘的save.txt文件中
        * 学生身份证号码不能保存到文件中。
        * 程序运行时如果save.txt不存在,则
从键盘录入1个学生信息,信息录入格式如下:
        ***** 录入学生信息 *****
        请输入学号:9527
        请输入姓名:华安
        请输入身份证号:2203919831234543
        请输入Java成绩:90
        请输入数学成绩:80
        请输入英语成绩:88

        根据录入的信息创建学生对象并将学生对象保存到C盘下的save.txt文件中。
        * 如果程序运行时,save.txt文件已经存在,则显示学生信息。格式如下:
        **** 学生基本信息 *****
        学号  姓名 省份证号  Java成绩  数学成绩  英语成绩
        9527  华安   null      90        80        88

[Java] 纯文本查看 复制代码
public class Test1 {
        public static void main(String[] args) throws IOException, ClassNotFoundException {
                File file = new File("save.txt");
                // 判断文件是否存在
                if (file.exists()) {
                        // 存在就显示学生信息
                        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
                        System.out.println("**** 学生基本信息 *****");
                        System.out.println("学号\t姓名\t身份证号\tJava成绩\t数学成绩\t英语成绩");
                        // 读取学生对象
                        Student stu = (Student) ois.readObject();
                        StringBuilder sb = new StringBuilder();
                        sb.append(stu.getCode()).append("\t").append(stu.getName()).append("\t");
                        sb.append(stu.getCard()).append("\t").append(stu.getJavaScore()).append("\t");
                        sb.append(stu.getMathScore()).append("\t").append(stu.getEngScore()).append("\t");
                        System.out.println(sb.toString());
                } else {
                        //如果不存在,就创建学生对象并写入save.txt文本中
                        Scanner sc = new Scanner(System.in);
                        System.out.println("请输入学生学号:");
                        String code = sc.next();
                        System.out.println("请输入学生姓名:");
                        String name = sc.next();
                        System.out.println("请输入学生身份证号:");
                        String card = sc.next();
                        System.out.println("请输入学生Java成绩:");
                        int javaScore = sc.nextInt();
                        System.out.println("请输入学生数学成绩:");
                        int mathScore = sc.nextInt();
                        System.out.println("请输入学生英语成绩:");
                        int engScore = sc.nextInt();
                       
                        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("save.txt"));
                        oos.writeObject(new Student(code,name,card,javaScore,mathScore,engScore));
                        oos.close();
                }
        }
}

public class Student implements Serializable{
        //学号
        private String code;
        //姓名
        private String name;
        //身份证
        private transient String card;
        //java成绩
        private int javaScore;
        //数学成绩
        private int mathScore;
        //英语成绩
        private int engScore;
       
        public Student() {
                super();
        }

        public Student(String code, String name, String card, int javaScore, int mathScore, int engScore) {
                super();
                this.code = code;
                this.name = name;
                this.card = card;
                this.javaScore = javaScore;
                this.mathScore = mathScore;
                this.engScore = engScore;
        }

        public String getCode() {
                return code;
        }

        public void setCode(String code) {
                this.code = code;
        }

        public String getName() {
                return name;
        }

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

        public String getCard() {
                return card;
        }

        public void setCard(String card) {
                this.card = card;
        }

        public int getJavaScore() {
                return javaScore;
        }

        public void setJavaScore(int javaScore) {
                this.javaScore = javaScore;
        }

        public int getMathScore() {
                return mathScore;
        }

        public void setMathScore(int mathScore) {
                this.mathScore = mathScore;
        }

        public int getEngScore() {
                return engScore;
        }

        public void setEngScore(int engScore) {
                this.engScore = engScore;
        }
       
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2