• 吴裕雄--天生自然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 ;
        }
    };
  • 相关阅读:
    case when in sql server's stored procedure
    Hadoop-2.2.0中国文献—— MapReduce 下一代 -- 公平调度
    cocos2d-x游戏循环和日程安排
    归并+高速分拣
    【Nginx】启动过程
    IOS线程操作(3)
    Android最方便的数据库--LitePal
    Android采用Application总结一下
    POJ 2151 Check the difficulty of problems (动态规划-可能DP)
    乞讨N!到底有多少0
  • 原文地址:https://www.cnblogs.com/tszr/p/12161999.html
Copyright © 2020-2023  润新知