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

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

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 }
View Code

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

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 }
View Code

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 }
View Code

 

程序截图:

源码下载

点击下载

posted @ 2018-07-18 08:04  小a玖拾柒  阅读(1864)  评论(0编辑  收藏  举报