吴裕雄--天生自然JAVAIO操作学习笔记:单人信息管理程序

import java.io.* ;
public class ExecDemo03{
    public static void main(String args[]) throws Exception{
        new Menu() ;
    }
};
import java.io.File ;
import java.io.FileInputStream ;
import java.io.FileOutputStream ;
import java.io.ObjectInputStream ;
import java.io.ObjectOutputStream ;
public class FileOperate{    // 此类专门用于保存和读取
    private File file = null ;    // 定义文件对象
    public FileOperate(String pathName){    // 通过    构造传递文件路径
        this.file = new File(pathName) ;
    }
    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 ;
    }
};
import java.io.* ;
import java.util.* ;
import java.text.* ;
public class InputData{
    private BufferedReader buf = null ;
    public InputData(){// 只要输入数据就要使用此语句
        this.buf = new BufferedReader(new InputStreamReader(System.in)) ;
    }
    public String getString(String info){    // 得到字符串信息
        String temp = null ;
        System.out.print(info) ;    // 打印提示信息
        try{
            temp = this.buf.readLine() ;    // 接收数据
        }catch(IOException e){
            e.printStackTrace() ;
        }
        return temp ;
    }
    public int getInt(String info,String err){    // 得到一个整数的输入数据
        int temp = 0 ;
        String str = null ;
        boolean flag = true ;    // 定义一个标记位
        while(flag){
            str = this.getString(info) ;    // 接收数据
            if(str.matches("^\d+$")){    // 判断是否由数字组成
                temp = Integer.parseInt(str) ;    // 转型
                flag = false ;    // 结束循环
            }else{
                System.out.println(err) ;    // 打印错误信息
            }
        }
        return temp ;
    }
    public float getFloat(String info,String err){    // 得到一个小数的输入数据
        float temp = 0 ;
        String str = null ;
        boolean flag = true ;    // 定义一个标记位
        while(flag){
            str = this.getString(info) ;    // 接收数据
            if(str.matches("^\d+.?\d+$")){    // 判断是否由数字组成
                temp = Float.parseFloat(str) ;    // 转型
                flag = false ;    // 结束循环
            }else{
                System.out.println(err) ;    // 打印错误信息
            }
        }
        return temp ;
    }
    public Date getDate(String info,String err){    // 得到一个小数的输入数据
        Date temp = null ;
        String str = null ;
        boolean flag = true ;    // 定义一个标记位
        while(flag){
            str = this.getString(info) ;    // 接收数据
            if(str.matches("^\d{4}-\d{2}-\d{2}$")){    // 判断是否由数字组成
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;
                try{
                    temp = sdf.parse(str) ;    // 将字符串变为Date型数据
                }catch(Exception e){}
                flag = false ;    // 结束循环
            }else{
                System.out.println(err) ;    // 打印错误信息
            }
        }
        return temp ;
    }
};
public class Menu{
    public Menu(){
        while(true){
            this.show() ;        // 无限制调用菜单的显示
        }
    }
    public void show(){
        System.out.println("===== Xxx系统 =====") ;
        System.out.println("    [1]、增加数据") ;
        System.out.println("    [2]、删除数据") ;
        System.out.println("    [3]、修改数据") ;
        System.out.println("    [4]、查看数据") ;
        System.out.println("    [0]、系统退出
") ;
        InputData input = new InputData() ;
        int i = input.getInt("请选择:","请输入正确的选项!") ;
        switch(i){
            case 1:{
                Operate.add() ;        // 调用增加操作
                break ;
            }
            case 2:{
                Operate.delete() ;    // 调用删除操作
                break ;
            }
            case 3:{
                Operate.update() ;    // 调用更新操作
                break ;
            }
            case 4:{
                Operate.find() ;        // 调用查看操作
                break ;
            }
            case 0:{
                System.exit(1) ;        // 系统退出
                break ;
            }
            default:{
                System.out.println("请选择正确的操作!") ;
            }
        }
    }
};
public class Operate{
    public static void add(){    // 增加操作
        InputData input = new InputData() ;        // 实例化输入数据对象
        FileOperate fo = new FileOperate("d:\test.per") ;
        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.per") ;
        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.per") ;
        Person per = null ;
        try{
            per = (Person)fo.load() ;    // 读取对象
        }catch(Exception e){
            e.printStackTrace() ;
        }
        String name = input.getString("请输入姓名(原姓名:"+per.getName()+"):") ;
        int age = input.getInt("请输入年龄(原年龄:"+per.getAge()+"):" , "年龄必须是数字!") ;
        per = new Person(name,age) ;    // 实例化Person对象
        try{
            fo.save(per) ;    // 保存对象
        }catch(Exception e){
            e.printStackTrace() ;
        }
        System.out.println("信息修改成功!") ;
    }
    public static void find(){    // 查看操作
        FileOperate fo = new FileOperate("d:\test.per") ;
        Person per = null ;
        try{
            per = (Person)fo.load() ;    // 读取对象
        }catch(Exception e){
            e.printStackTrace() ;
        }
        System.out.println(per) ;
    }
};
import java.io.Serializable ;
public class Person implements Serializable{
    private String name ;        // 定义name属性    
    private int age ;            // 定义age属性
    public Person(String name,int age){
        this.name = name; 
        this.age = age ;
    }
    public String toString(){
        return "姓名:" + this.name + ";年龄:" + this.age ;
    }
    public void setName(String name){
        this.name = name ;
    }
    public void setAge(int age){
        this.age = age ;
    }
    public String getName(){
        return this.name ;
    }
    public int getAge(){
        return this.age ;
    }
};
原文地址:https://www.cnblogs.com/tszr/p/12161999.html