Java实例---简单的个人管理系统
代码分析
FileOperate.java
1 package com.ftl.testperson; 2 import java.io.File ; 3 import java.io.FileInputStream ; 4 import java.io.FileOutputStream ; 5 import java.io.ObjectInputStream ; 6 import java.io.ObjectOutputStream ; 7 public class FileOperate{ // 此类专门用于保存和读取 8 private File file = null ; // 定义文件对象 9 public FileOperate(String pathName){ // 通过 构造传递文件路径 10 this.file = new File(pathName) ; 11 } 12 public boolean save(Object obj) throws Exception{ // 保存对象 13 ObjectOutputStream oos = null ; // 对象输出流 14 boolean flag = false ; // 定义操作标志位 15 try{ 16 oos = new ObjectOutputStream(new FileOutputStream(this.file)) ; // 实例化对象输出流 17 oos.writeObject(obj) ; // 写入对象 18 flag = true ; 19 }catch(Exception e){ 20 throw e ; // 有异常交给被调用处处理 21 }finally{ 22 if(oos!=null){ 23 oos.close() ; 24 } 25 } 26 return flag ; 27 } 28 public Object load() throws Exception{ // 读取对象 29 Object obj = null ; // 接收读取的内容 30 ObjectInputStream ois = null ; 31 try{ 32 ois = new ObjectInputStream(new FileInputStream(this.file)) ; // 实例化对象输入流 33 obj = ois.readObject() ; // 读取对象 34 }catch(Exception e){ 35 throw e ; 36 }finally{ 37 if(ois!=null){ 38 ois.close() ; // 关闭 39 } 40 } 41 return obj ; 42 } 43 };
InputData.java
1 package com.ftl.testperson; 2 3 import java.io.* ; 4 import java.util.* ; 5 import java.text.* ; 6 public class InputData{ 7 private BufferedReader buf = null ; 8 public InputData(){// 只要输入数据就要使用此语句 9 this.buf = new BufferedReader(new InputStreamReader(System.in)) ; 10 } 11 public String getString(String info){ // 得到字符串信息 12 String temp = null ; 13 System.out.print(info) ; // 打印提示信息 14 try{ 15 temp = this.buf.readLine() ; // 接收数据 16 }catch(IOException e){ 17 e.printStackTrace() ; 18 } 19 return temp ; 20 } 21 public int getInt(String info,String err){ // 得到一个整数的输入数据 22 int temp = 0 ; 23 String str = null ; 24 boolean flag = true ; // 定义一个标记位 25 while(flag){ 26 str = this.getString(info) ; // 接收数据 27 if(str.matches("^\\d+$")){ // 判断是否由数字组成 28 temp = Integer.parseInt(str) ; // 转型 29 flag = false ; // 结束循环 30 }else{ 31 System.out.println(err) ; // 打印错误信息 32 } 33 } 34 return temp ; 35 } 36 public float getFloat(String info,String err){ // 得到一个小数的输入数据 37 float temp = 0 ; 38 String str = null ; 39 boolean flag = true ; // 定义一个标记位 40 while(flag){ 41 str = this.getString(info) ; // 接收数据 42 if(str.matches("^\\d+.?\\d+$")){ // 判断是否由数字组成 43 temp = Float.parseFloat(str) ; // 转型 44 flag = false ; // 结束循环 45 }else{ 46 System.out.println(err) ; // 打印错误信息 47 } 48 } 49 return temp ; 50 } 51 public Date getDate(String info,String err){ // 得到一个小数的输入数据 52 Date temp = null ; 53 String str = null ; 54 boolean flag = true ; // 定义一个标记位 55 while(flag){ 56 str = this.getString(info) ; // 接收数据 57 if(str.matches("^\\d{4}-\\d{2}-\\d{2}$")){ // 判断是否由数字组成 58 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ; 59 try{ 60 temp = sdf.parse(str) ; // 将字符串变为Date型数据 61 }catch(Exception e){} 62 flag = false ; // 结束循环 63 }else{ 64 System.out.println(err) ; // 打印错误信息 65 } 66 } 67 return temp ; 68 } 69 };
Menu.java
1 package com.ftl.testperson; 2 3 public class Menu 4 { 5 public void start(){ 6 while(true){ 7 try { 8 Menu.show(); 9 } catch (Exception e) { 10 // TODO 自动生成的 catch 块 11 e.printStackTrace(); 12 } 13 } 14 } 15 public static void show() throws Exception 16 { 17 System.out.println("===================个人系统==================="); 18 System.out.println(" 【1】、增加数据 "); 19 System.out.println(" 【2】、删除数据 "); 20 System.out.println(" 【3】、修改数据 "); 21 System.out.println(" 【4】、查看数据 "); 22 System.out.println(" 【0】、退出系统 "); 23 InputData input = new InputData(); 24 int i = input.getInt("请选择:", "请输入正确的选项!"); 25 switch(i) 26 { 27 case 1: 28 { 29 Operate.add(); 30 break; 31 } 32 case 2: 33 { 34 Operate.delete(); 35 break; 36 } 37 case 3: 38 { 39 Operate.update(); 40 break; 41 } 42 case 4: 43 { 44 Operate.find(); 45 break; 46 } 47 case 0: 48 { 49 System.exit(1); 50 break; 51 } 52 default: 53 { 54 System.out.println("请输入正确的操作!!!"); 55 } 56 } 57 } 58 }
Operate.java
1 package com.ftl.testperson; 2 public class Operate{ 3 public static void add(){ // 增加操作 4 InputData input = new InputData() ; // 实例化输入数据对象 5 FileOperate fo = new FileOperate("E:\\ test.txt") ; 6 String name = input.getString("请输入姓名:") ; 7 int age = input.getInt("请输入年龄:" , "年龄必须是数字!") ; 8 Person per = new Person(name,age) ; // 实例化Person对象 9 try{ 10 fo.save(per) ; // 保存对象 11 }catch(Exception e){ 12 e.printStackTrace() ; 13 } 14 System.out.println("信息增加成功!") ; 15 } 16 public static void delete(){ // 删除操作 17 FileOperate fo = new FileOperate("d:\\test.per") ; 18 try{ 19 fo.save(null) ; // 保存对象 20 }catch(Exception e){ 21 e.printStackTrace() ; 22 } 23 System.out.println("信息删除成功!") ; 24 } 25 public static void update(){ // 更新操作 26 InputData input = new InputData() ; // 实例化输入数据对象 27 FileOperate fo = new FileOperate("d:\\test.per") ; 28 Person per = null ; 29 try{ 30 per = (Person)fo.load() ; // 读取对象 31 }catch(Exception e){ 32 e.printStackTrace() ; 33 } 34 String name = input.getString("请输入姓名(原姓名:"+per.getName()+"):") ; 35 int age = input.getInt("请输入年龄(原年龄:"+per.getAge()+"):" , "年龄必须是数字!") ; 36 per = new Person(name,age) ; // 实例化Person对象 37 try{ 38 fo.save(per) ; // 保存对象 39 }catch(Exception e){ 40 e.printStackTrace() ; 41 } 42 System.out.println("信息修改成功!") ; 43 } 44 public static void find(){ // 查看操作 45 FileOperate fo = new FileOperate("d:\\test.per") ; 46 Person per = null ; 47 try{ 48 per = (Person)fo.load() ; // 读取对象 49 }catch(Exception e){ 50 e.printStackTrace() ; 51 } 52 System.out.println(per) ; 53 } 54 };
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 }
MainTest.java
1 package com.ftl.testperson; 2 3 public class MainTest { 4 public static void main(String[] args) throws Exception { 5 Menu menu = new Menu(); 6 menu.start(); 7 } 8 }
程序截图:
源码下载
作者:小a玖拾柒
-------------------------------------------
个性签名: 所有的事情到最後都是好的,如果不好,那說明事情還沒有到最後~
本文版权归作者【小a玖拾柒】和【博客园】共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利!