代码分析
FileOperate.java
1 package singleperson; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.io.ObjectInputStream; 9 import java.io.ObjectOutputStream; 10 import java.io.Serializable; 11 12 public class FileOperate implements Serializable { 13 /** 14 * 15 */ 16 private static final long serialVersionUID = -4304337775560097887L; 17 private File file; 18 private String path; 19 20 public FileOperate(String path) 21 { 22 this.path = path; 23 this.file = new File(this.path); 24 } 25 26 /** 27 * 保持文件 28 * @param obj 29 * @return 30 */ 31 public boolean save(Object obj){ 32 boolean flag = false; 33 ObjectOutputStream oos = null; 34 try { 35 oos = new ObjectOutputStream(new FileOutputStream(this.file)); 36 oos.writeObject(obj); 37 } catch (Exception e) { 38 e.printStackTrace(); 39 } finally{ 40 if(oos!=null) 41 { 42 try { 43 oos.close(); 44 } catch (IOException e) { 45 // TODO 自动生成的 catch 块 46 e.printStackTrace(); 47 } 48 } 49 } 50 51 return flag; 52 } 53 54 /** 55 * 读取文件 56 * @return 57 */ 58 public Object load(){ 59 Object obj = null; 60 ObjectInputStream ois = null; 61 try { 62 ois = new ObjectInputStream(new FileInputStream(this.file)); 63 obj = ois.readObject(); 64 } catch (Exception e) { 65 // TODO 自动生成的 catch 块 66 e.printStackTrace(); 67 }finally{ 68 if(ois!=null) 69 { 70 try { 71 ois.close(); 72 } catch (IOException e) { 73 // TODO 自动生成的 catch 块 74 e.printStackTrace(); 75 } 76 } 77 } 78 79 return obj; 80 } 81 }
InputData.java
1 package singleperson; 2 3 import java.io.BufferedReader; 4 import java.io.FileInputStream; 5 import java.io.InputStreamReader; 6 import java.text.ParseException; 7 import java.text.SimpleDateFormat; 8 import java.util.Date; 9 10 public class InputData { 11 private BufferedReader buf; 12 13 public InputData() 14 { 15 this.buf = new BufferedReader(new InputStreamReader(System.in)); 16 } 17 18 public String getString(String info){ 19 20 String str = null; 21 System.out.println(info); 22 try { 23 str = this.buf.readLine(); 24 25 } catch (Exception e) { 26 // TODO 自动生成的 catch 块 27 e.printStackTrace(); 28 } 29 return str; 30 }; 31 32 public int getInt(String info, String error) 33 { 34 int temp = 0; 35 String str = null; 36 boolean flag = true; 37 while(flag) 38 { 39 try { 40 str = this.getString(info); 41 if(str.matches("\\d+")) 42 { 43 temp = Integer.parseInt(str); 44 flag = false; 45 }else{ 46 System.out.println(error); 47 } 48 49 } catch (Exception e) { 50 // TODO: handle exception 51 } 52 } 53 54 return temp; 55 } 56 57 public float getFloat(String info, String error) 58 { 59 float temp = 0; 60 String str = null; 61 boolean flag = true; 62 while(flag) 63 { 64 str = this.getString(info); 65 if(str.matches("\\d+.?\\d+")) 66 { 67 temp = Float.parseFloat(str); 68 flag = false; 69 }else 70 { 71 System.out.println(error);; 72 } 73 } 74 return temp; 75 } 76 77 public Date getDate(String info, String error) 78 { 79 Date date = null; 80 String str = null; 81 boolean flag = true; 82 while(flag){ 83 if(str.matches("\\d{4}-\\d{2}-\\d{2}")){ 84 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 85 try { 86 date = sdf.parse(str); 87 } catch (ParseException e) { 88 // TODO 自动生成的 catch 块 89 e.printStackTrace(); 90 } 91 }else 92 { 93 System.out.println(error);; 94 } 95 96 } 97 return date; 98 } 99 100 };
Menu.java
1 package singleperson; 2 3 public class Menu { 4 public Menu() 5 { 6 while(true) 7 { 8 this.show(); 9 } 10 } 11 12 public void show() 13 { 14 System.out.println("===== FTL个人管理系统 =====") ; 15 System.out.println(" [1]、增加数据") ; 16 System.out.println(" [2]、删除数据") ; 17 System.out.println(" [3]、修改数据") ; 18 System.out.println(" [4]、查看数据") ; 19 System.out.println(" [0]、系统退出\n"); 20 InputData input = new InputData(); 21 int i = input.getInt("请选择:", "请重新选择:"); 22 switch (i) { 23 case 1: 24 { 25 Operate.add(); 26 break; 27 } 28 29 case 2: 30 { 31 Operate.delete(); 32 break; 33 } 34 case 3: 35 { 36 Operate.update(); 37 break; 38 } 39 case 4: 40 { 41 Operate.find(); 42 break; 43 } 44 default:{ 45 System.out.println("请选择正确的操作!") ; 46 } 47 48 } 49 50 51 } 52 53 }
Operate.java
1 package singleperson; 2 3 import java.io.File; 4 5 public class Operate { 6 7 public static void add(){ 8 InputData input = new InputData(); 9 FileOperate file = new FileOperate("E:" + File.pathSeparator + "hhh.txt"); 10 String name = input.getString("请输入姓名:"); 11 int age = input.getInt("请输入年龄:", "年龄必须是整数"); 12 Person per = new Person(name,age); 13 file.save(per); 14 System.out.println("添加信息成功"); 15 }; 16 17 public static void delete(){ 18 FileOperate file = new FileOperate("E:" + File.pathSeparator + "hhh.txt"); 19 file.save(null); 20 System.out.println("删除信息成功"); 21 }; 22 23 public static void update(){ 24 InputData input = new InputData(); 25 FileOperate file = new FileOperate("E:" + File.pathSeparator + "hhh.txt"); 26 Person per = null; 27 per = (Person) file.load(); 28 String name = input.getString("请输入姓名(原姓名:"+per.getName()+"):") ; 29 int age = input.getInt("请输入年龄(原年龄:"+per.getAge()+"):" , "年龄必须是数字!") ; 30 Person per1 = new Person(name,age); 31 file.save(per1); 32 System.out.println("更新信息成功"); 33 34 }; 35 36 public static void find(){ 37 FileOperate file = new FileOperate("E:" + File.pathSeparator + "hhh.txt"); 38 Person per = null; 39 per = (Person)file.load(); 40 System.out.println(per); 41 42 }; 43 }
Person.java
1 package singleperson; 2 3 import java.awt.event.ActionEvent; 4 import java.awt.event.ActionListener; 5 import java.io.Serializable; 6 7 import javax.swing.JFrame; 8 9 public class Person implements Serializable { 10 private String name; 11 private int age; 12 @Override 13 public String toString() { 14 return "姓名:" + this.getName() + "\t " + "年龄:" + this.getAge() + "\n"; 15 } 16 public Person(String name, int age) { 17 super(); 18 this.name = name; 19 this.age = age; 20 } 21 public String getName() { 22 return name; 23 } 24 public void setName(String name) { 25 this.name = name; 26 } 27 public int getAge() { 28 return age; 29 } 30 public void setAge(int age) { 31 this.age = age; 32 } 33 }
Test.java
1 package singleperson; 2 3 public class Test { 4 public static void main(String[] args) { 5 6 new Menu(); 7 } 8 }
程序截图: