我们采用分层的项目思想,将该系统分为前台显示层,后台业务处理层,存储层。

该系统程序中有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进行操作: