关键词搜索

源码搜索 ×
×

(Java)单人信息管理程序

发布2020-02-12浏览638次

详情内容

对前一个菜单程序进行扩充,要求增加一个人的完整信息,人的信息包括姓名和年龄。保存后也可以修改、删除、查询此信息。
可以使用对象序列化保存,需要增加文件操作类,专门负责保存和读取文件的内容,并修改 Operate 类,为其增加具体的操作:
在这里插入图片描述

一、增加文件操作类

package Chapter_9;

import java.io.*;

//此类专门用于保存和读取对象
public class FileOperate {
    private File file = null;//定义一个文件对象
    public FileOperate(String pathName){//通过构造方法传递文件路径
        this.file = new File(pathName);//实例化File对象
    }
    public boolean save(Object obj) throws Exception{//可以保存对象
        ObjectOutputStream oos = null;//对象输出流
        boolean flag = false;//定义操作标志位
        try{
            oos = new ObjectOutputStream(new FileOutputStream(this.file));//实例化对象输出流
            oos.writeObject(obj);//保存对象
            flag = true;
        }catch (Exception e){
            throw e;//有异常抛出
        }finally {
            if (oos != null){//判断对象输出流对象是否被实例化
                oos.close();//不管是否有异常都要关闭
            }
        }
        return flag;
    }
    public Object load()throws Exception{//读取对象
        Object obj = null;//接收保存的对象
        ObjectInputStream ois = null;//声明对象输入流
        try{
            ois = new ObjectInputStream(new FileInputStream(this.file));//实例化对象输入流
            obj = ois.readObject();//读取对象
        }catch (Exception e){
            throw e;
        }finally {
            if (ois !=null){//判断输入流是否被实例化
                ois.close();//关闭输入流
            }
        }
        return obj;
    }

}

    程序中的类的功能就是向程序中写入对象和读取对象,在操作时只需要传入一个路径即可

    二、 Person 类

    import java.io.*;
    
    public class Person implements Serializable {//此类的对象可以被序列化
        private String name;
        private int age;
        public Person(String name,int age){//通过构造方法设置属性内容
            this.name = name;
            this.age = age;
        }
        public String toString(){
            return "姓名:" + this.name + "; 年龄:" + this.age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    三、操作类

    package Chapter_9;
    
    public class Operate {
        public static void add(){//增加数据操作
            InputData input = new InputData();//实例化输入数据对象
            FileOperate fo = new FileOperate("D://test.txt");
            String name = input.getString("请输入姓名:");
            int age = input.getInt("请输入年龄:","年龄必须是数字!");
            Person per = new Person(name,age);//实例化 Person 对象
            try {
                fo.save(per);//保存对象
            }catch (Exception e){
                e.printStackTrace();
            }
            System.out.println("信息增加成功");
        }
        public static void delete(){//删除数据操作
            FileOperate fo = new FileOperate("D://test.txt");
            try{
                fo.save(null);//清除对象
            }catch (Exception e){
                e.printStackTrace();
            }
            System.out.println("信息删除成功!");
        }
        public static void update(){//修改数据操作
            InputData input = new InputData();//实例化输入数据对象
            FileOperate fo = new FileOperate("D:\\test.txt");
            Person per = null;
            try{
                per = (Person)fo.load();//读取数据
            }catch (Exception e1){
                e1.printStackTrace();
            }
            String name = input.getString("请输入新的姓名(原姓名:" + per.getName() + "):");
            int age = input.getInt("请输入是新的年龄(原年龄:" +
                    per.getAge() + ")","年龄必须是数字!");
            per = new Person(name,age);//重新实例化对象
            try{
                fo.save(per);//重新保存对象
            }catch (Exception e){
                e.printStackTrace();
            }
            System.out.println("信息更新成功");
        }
        public static void find(){
            FileOperate fo = new FileOperate("D:\\test.txt");
            Person per = null;
            try{
                per = (Person)fo.load();//读取对象
            }catch (Exception e1){
                e1.printStackTrace();
            }
            System.out.println(per);
        }
    }
    
    
      45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载