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 ; } };