我們采用分層的項目思想,將該系統分為前臺顯示層,后臺業務處理層,存儲層。

該系統程序中有Main Mnue Person PersonOperate FileOperate InputData

Menu屬于前臺顯示層,它列出管理系統的菜單

StudentOperate屬于后臺業務處理層, 它的主要作用是①接收數據②實例化對象③調用FileObject

FileOperate屬于存儲層,它應用IO進行讀寫操作

部分代碼如下: 

InputData

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

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

    }

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

    }

    publicfloat getFloat(){

    float f=0.0f;

    //如果輸入的不是數字,至少應該有一個提示,告訴用戶輸入錯了

    //可以使用正則表達式

    String str=null;

    boolean flag=true;

    while(flag){

        //輸入數據

        str=this.getString();

        if(!(str.matches("""d+?.""d{1,2}"))){

            //如果輸入的不是一個數字,則必須重新輸入

            System.out.print("輸入的內容必須是小數(小數點后兩位),請重新輸入:");

        }else{

            //輸入的是一個正確的數字,則可以進行轉換

            f=Float.parseFloat(str);

            //表述退出循環

            flag=false;

        }

    }

    return f;

    }

}

FileOperate

package com.dr.util;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

publicclass FileOperate {

    publicstaticfinal String FILENAME="E:""person.ser";

    //把對象保存在文件之中

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

    }

}

StudentOperate

package com.dr.op;

import com.dr.util.FileOperate;

import com.dr.util.InputData;

import com.dr.vo.Student;

publicclass StudentOperate {

       private InputData input=null;

       public StudentOperate(){

           this.input=new InputData();

       }

       publicvoid add(){

           //要使用輸入數據的類

           String name=null;

           int age=0;

           float score=0.0f;

           System.out.print("請輸入學生姓名:");

           name=this.input.getString();

           System.out.print("請輸入學生年齡:");

           age=this.input.getInt();

           System.out.print("請輸入學生成績:");

           score=this.input.getFloat();

           //生成Student對象,把對象保存在文件中

           Student s=new Student(name,age,score);

           try{

              new FileOperate().save(s); //io操作層

              System.out.println("數據保存成功!");

           }catch(Exception e){

           System.out.println("數據保存失敗!");

           }

       }

       publicvoid show(){

           //從文件中把內容讀進來

           Student s=null;

           try{

              s=(Student)new FileOperate().read();

           }catch(Exception e){

              System.out.println("顯示內容失敗,請確定數據是否存在!");

           }

           if(s!=null){

              System.out.println(s);

           }

       }

       publicvoid update(){

           //先將之前的信息查出來

           Student s=null;

           try{

              s=(Student)new FileOperate().read();

           }catch(Exception e){

              System.out.println("顯示內容失敗,請確定數據是否存在!");

           }

           if(s!=null){

              String name=null;

              int age=0;

              float score=0.0f;

              System.out.print("請輸入新的姓名(原姓名:"+s.getName()+"");

              name=this.input.getString();

              System.out.print("請輸入新的年齡(原年齡:"+s.getAge()+"");

              age=this.input.getInt();

              System.out.print("請輸入新的成績(原成績:"+s.getScore()+"");

              score=this.input.getFloat();

              //信息重新設置

              s.setName(name);

              s.setAge(age);

              s.setScore(score);

              try{

                  new FileOperate().save(s);

                  System.out.println("數據更新成功!");

              }catch(Exception e){

                  System.out.println("數據更新失敗!");

              }

             

           }

       }

    }

Menu

package com.dr.menu;

import com.dr.op.StudentOperate;

import com.dr.util.InputData;

publicclass Menu {

    InputData input=null;

    public Menu(){

       this.input=new InputData();

       //循環出現菜單

       while(true){

           this.show();

       }

    }

    //需要定義的菜單內容

    publicvoid show(){

       System.out.println("歡迎進入學生信息管理系統");

       System.out.println(""t"t"t1、增加學生信息");

       System.out.println(""t"t"t2、瀏覽學生信息");

       System.out.println(""t"t"t3、修改學生信息");

       System.out.println(""t"t"t4、退出系統");

       System.out.print(""n"n請選擇要使用的操作:");

       int temp=input.getInt();

       switch(temp){

       case 1:{//增加學生信息

           new StudentOperate().add();

           break;

       }

       case 2:{//瀏覽學生信息

           new StudentOperate().show();

           break;

       }

       case 3:{//修改學生信息

           new StudentOperate().update();

           break;

       }

       case 4:{//退出系統

           System.out.println("選擇的是退出系統");

           System.out.println("系統退出!");

           System.exit(1);

       }

    }

    }

   

}

Main類,對系統進行測試

package com.dr.main;

import com.dr.menu.Menu;

publicclass Main {

    publicstaticvoid main(String[] args) {

      

       new Menu();

    }

}

運行結果:

選擇1進行操作:


選擇2進行操作:


選擇3進行操作:

選擇4進行操作: