zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然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 ;
        }
    };
  • 相关阅读:
    606. Construct String from Binary Tree
    696. Count Binary Substrings
    POJ 3255 Roadblocks (次短路)
    POJ 2823 Sliding Window (单调队列)
    POJ 1704 Georgia and Bob (博弈)
    UVa 1663 Purifying Machine (二分匹配)
    UVa 10801 Lift Hopping (Dijkstra)
    POJ 3281 Dining (网络流之最大流)
    UVa 11100 The Trip, 2007 (题意+贪心)
    UVaLive 4254 Processor (二分+优先队列)
  • 原文地址:https://www.cnblogs.com/tszr/p/12161999.html
Copyright © 2011-2022 走看看