复杂的事情要简单做;   简单的事情要认真做;   认真的事情要重复做;   重复的事情要创造性地做。

信心 恒心 决心 创意 乐意

も军魂ミ 心系java

Java的魅力:跨平台、动态的Web、Internet计算 Java在Web、移动设备以及云计算方面前景广阔 我的java编程不是梦!!! 俗话说的好:“授人以鱼不如授人以渔”.
posts - 10, comments - 12, trackbacks - 0, articles - 5
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

按选项选择操作的io小程序


 


   1)、 在主程序中就调用一个Menu方法;
                              public class Main {
                                    public static void main(String[] args){
                                              new Menu();
                                         }
                                     }
   2)、在vo包里包装一个Person类,并实现Serializable接口, 且定义四个属性:姓名,学号,年龄,成绩;
  
   
   3)、在op包里建立两个类,分别为 FileOperateInputData,前者主要实现了文件的读、写即保存和输出;后者主要构建了两个方法,一个是字符串的输入 ,另一个是整数的输入,并判断输入的是否为真。 
                                  
 

public class FileOperate {
 public static final String FILENAME="d:\\person.ser";
 //把对象保存在文件之中
 public void save(Object obj){
  ObjectOutputStream out = null;
  try{
   out = new ObjectOutputStream(new FileOutputStream(new File(FILENAME)));
   //写入对象
   out.writeObject(obj);
  }catch(Exception e){
   try{
    throw e;
   }catch(Exception e1){}
  }
  finally{
   try{
    out.close();
   }catch(Exception e){}
  }
   }
 //把对象从文件中读出来
 public Object read() throws Exception{
  Object obj = null;
  ObjectInputStream input = null;
  try{
   input = new ObjectInputStream(new FileInputStream(new File(FILENAME)));
            obj = input.readObject();
  }catch(Exception e){
   throw e;                                     
  }
  finally{
   try{
    input.close();
   }catch(Exception e){}
  }
  return obj;
 }

}

public class InputData {
 private BufferedReader buf = null;
 //将字节的输入流量变为字符流,之后放入缓冲之中
 public InputData(){
       buf = new BufferedReader(new InputStreamReader(System.in));
 };
    public String getString(){
     String str = null;
     try{
      str=buf.readLine();
     }catch(IOException e){}
    
     return str;
    }
    
 public int getInt(){
  int temp=0;
  //如果输入的不是数字,至少应该有一个提示,告诉用户输入错了
  //可以使用正则验证
  String str = null;
  boolean flag = true;
  while(flag){
   //输入数据
   str = this.getString();
   if(!(str.matches("\\d+"))){
    //如果输入的不是一个数字,则必须重新输入
    System.out.print("输入的内容必须是整数,请你重新输入:");
   }
   else{
    //输入的是一个正确的数字,则可以进行转换
    temp=Integer.parseInt(str);
    //表示退出循环
    flag = false;
   }
  }
  return temp;
}
}
  


    4)、在Menu类里建立控制台的初始信息;                       
  public class Menu {
     InputData input = null ;
     public Menu(){
      this.input=new InputData();
      //循环出现菜单
      while(true){
      this.show();
      }
     }
  
    //需要定义的菜单内容
 public void show(){
  
  System.out.println("\t\t   1、增加人员信息");                                      
  System.out.println("\t\t   2、浏览人员信息");             ;
  System.out.println("\t\t   3、修改人员信息");
  System.out.println("\t\t   4、退出系统");
  System.out.print("\n请选择要使用的操作:");
  int temp = input.getInt();
  switch(temp){
   case 1:{
    new PersonOperate().add();
    break;
   }
   case 2:{
    new PersonOperate().show();
    break;
   }
   case 3:{
    new PersonOperate().update();
    break;
   }
   case 4:{
    System.out.println("选择的是退出系统");
    System.out.println("系统退出");
    System.exit(1);
   }
   default: {
    System.out.println("你输入的内容不正确");
    break;
   }
  }
 }

}

 
    5)、在PersonOperate类中进行数据的具体操作,完成最终结果的显示即核心

import com.dr.util.FileOperate;
import com.dr.util.InputData;
import com.dr.vo.Person;

public class PersonOperate {
 private InputData input =null;
 public PersonOperate(){
  this.input=new InputData();
 }
 //完成具体的Person对象操作
 public void add(){
  //要使用输入数据的类
  String name = null;
  String id = null;
  int age = 0;
  int score = 0;
  System.out.print("输入姓名为:");
  name = this.input.getString();
  System.out.print("输入学号为:");
  id = this.input.getString();
  System.out.print("输入年龄为:");
  age = this.input.getInt();
  System.out.print("输入成绩为:");
  score = this.input.getInt();
  //生成Person对象,把对象保存在文件中
  Person p = new Person(name,id,age,score);
  
  try{
   new FileOperate().save(p);  //io操作层
   System.out.println("数据保存成功!");
  }catch(Exception e){
   System.out.println("数据保存失败!");
  }
 }
 public void show(){
  //从文件中把内容读进来
  Person p = null;
  try{
   p = (Person) new FileOperate().read();
  }catch(Exception e){
   System.out.println("内容显示失败,请确定数据是否存在!");
  }
  if(p!=null){
   System.out.println(p);
  }
 }
 public void update(){
  //先将之前的信息查出来
  Person p = null;
  try{
   p = (Person) new FileOperate().read();
  }catch(Exception e){
   System.out.println("内容显示失败,请确定数据是否存在!");
  }
  if(p!=null){
   String name = null;
   String id= null;
   int age = 0;
   int score=0;
   System.out.print("请输入新的姓名(原姓名为:"+p.getName()+")");
   name = this.input.getString();
   System.out.print("请输入新的学号(原学号为:"+p.getId()+")");
      id = this.input.getString();
   System.out.print("请输入新的年龄(原年龄为:"+p.getAge()+")");
   age = this.input.getInt();
   System.out.print("请输入新的成绩(原成绩为:"+p.getScore()+")");
   score = this.input.getInt();
   
   //信息重新设置
   p.setName(name);
   p.setId(id);
   p.setAge(age);
   p.setScore(score);
   try{
    new FileOperate().save(p);
    System.out.println("数据更新成功!");
   }catch(Exception e){
    System.out.println("数据更新失败!");
   }
  }
  
 }

}

   
     6)、程序最后的运行结果及方式:

 最后希望大家给予点评,我好做修改!谢谢!

                                        

















只有注册用户登录后才能发表评论。


网站导航: