欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java学生信息管理系统MVC架构详解

程序员文章站 2024-04-03 18:04:40
本文实例为大家分享了java学生信息管理系统mvc架构,供大家参考,具体内容如下 一、项目结构      &nbs...

本文实例为大家分享了java学生信息管理系统mvc架构,供大家参考,具体内容如下

一、项目结构

        学生信息管理系统分三层进行实现。student.java主要提供数据,cotroller.java的功能是绑定试图和计算数据。stuview.java用于单一的用来显示数据。

java学生信息管理系统MVC架构详解

二、源码

1.1、student 类

/* 
 * @filename: student.class 
 * @version:1.0 
 * @author:nazi 
 * 描述:模型层 
 * */ 
import java.io.serializable; 
 
/* 
 * summary: student类实现序列化接口,用于对象的保存 
 * @author:nazi 
 * @version:1.0 
 * */ 
public class student implements serializable { 
  //序列化id 
  private static final long serialversionuid = 9088453456517873574l; 
  int num; 
  string name; 
  string sex; 
  int age; 
  float grade; 
   
  public student(int num ,string namestring,string sexstring,int g,float f){ 
    this.num =num; 
    name = namestring; 
    sex =sexstring; 
    age =g; 
    grade =f; 
  } 
   
   
  public int getnum(){ 
    return num; 
  } 
 
  public string getname(){ 
    return name; 
  } 
 
  public string getsex(){ 
    return sex; 
  } 
 
  public int getage(){ 
    return age; 
  } 
 
  public float getgrades(){ 
    return grade; 
  } 
   
  public string tostring(){ 
    return "姓名:"+name+"学号:"+num+"性别:"+sex+"年龄:"+age+"成绩:"+grade; 
     
  } 
 
} 

1.2、cotroller类

/* 
 * 文件名: cotroller.java 
 * 描述:mvc中的c,用来管理模型层的数据 
 * @authur:nazi 
 * function :增、删、改、查、保存、更新 
 * */ 
import java.io.fileinputstream; 
import java.io.filenotfoundexception; 
import java.io.fileoutputstream; 
import java.io.ioexception; 
import java.io.objectinputstream; 
import java.io.objectoutputstream; 
import java.util.arraylist; 
import java.util.iterator; 
 
 
/* 
 * cotroller类集中对arraylist<student>进行操作 
 * @author nazi 
 * @version 1.0 
 * */ 
public class cotroller { 
   
  //student数据集合 
  private arraylist<student> list; 
   
  public cotroller(arraylist<student> l){ 
    this.list =l; 
  } 
   
  /* 
   * rturn a arraylist<student> 
   * */ 
  public arraylist<student> getlist() 
  { 
    return list; 
  } 
   
  /* 
   * 初始化student数组 
   * */ 
  public void setlist(arraylist<student> list) 
  { 
    this.list = list; 
  } 
   
  /* 
   * add a student to the list 
   * */ 
  public void add(student s) 
  { 
    list.add(s); 
  } 
   
  /* 
   * remove the student from list 
   * */ 
  public void remove(int id) 
  { 
    for(iterator<student> iter = list.iterator(); iter.hasnext();) 
    { 
      student s = iter.next(); 
       
      if(s.getnum() == id) 
      { 
        list.remove(s); 
      } 
    } 
  } 
 
  /* 
   * print the specific student 
   * */ 
  public string printall(int i) { 
     return list.get(i).tostring(); 
  } 
   
  /* 
   * 功能简述:将实现序列化后的对象写入到文件中。 
   * 文件输出地址:"/home/nazi/2.txt" 文件地址可以更改 
   * */ 
  public void fileot() throws filenotfoundexception{ 
    fileoutputstream fo = new fileoutputstream("/home/nazi/2.txt"); 
    try { 
      objectoutputstream so = new objectoutputstream(fo); 
      so.writeobject(list); 
      so.close(); 
    } catch (ioexception e) { 
      e.printstacktrace(); 
    } 
     
  } 
 
  /* 
   * function: 从指定路径读取文件,然后将对象状态进行赋值使用 
   * 
   * */ 
  @suppresswarnings("unchecked") 
  public void filein() throws filenotfoundexception{ 
    fileinputstream fi = new fileinputstream("/home/nazi/2.txt"); 
    try { 
      objectinputstream si = new objectinputstream(fi); 
      list = (arraylist<student>) si.readobject(); 
      si.close(); 
    } catch (ioexception e) { 
      // todo auto-generated catch block 
      e.printstacktrace(); 
    } catch (classnotfoundexception e) { 
      // todo auto-generated catch block 
      e.printstacktrace(); 
    } 
  } 
   
   
   
 
} 

1.3、stuview类

/* 
 * filename:stuview.class 
 * 描述:以特定的方式展示数据 
 * @atuthor:nazi 
 * @version:1.0 
 * */ 
import java.awt.font; 
import java.awt.event.actionevent; 
import java.awt.event.actionlistener; 
import java.io.filenotfoundexception; 
import java.util.arraylist; 
import javax.swing.jbutton; 
import javax.swing.jframe; 
import javax.swing.jlabel; 
import javax.swing.jtextarea; 
import javax.swing.jtextfield; 
 
 
/* 
 * stuview 类用于展示数据 
 * @author:nazi 
 * @version:1.0 
 * */ 
public class stuview {  
  private static cotroller cotroller; 
  public static void main(string args[]){ 
    //创建管理者 
    cotroller = new cotroller(new arraylist<student>()); 
    //界面 
    initframe(); 
  } 
   
  /* 
   * initframe()中含有各种类型的控件,以及控件所对应的事件处理步骤 
   * */ 
  protected static void initframe(){ 
      jframe frame = new jframe("学生信息管理系统"); 
      frame.setsize(600,600); 
      frame.setlocation(500, 100); 
      frame.setlayout(null); 
      //生成组件 
      final jtextfield name = new jtextfield(); 
      name.setbounds(79, 10, 103, 25); 
      final jtextfield num = new jtextfield(); 
      num.setbounds(79, 53, 103, 25); 
      final jtextfield sex = new jtextfield(); 
      sex.setbounds(79, 101, 103, 25); 
      final jtextfield age = new jtextfield(); 
      age.setbounds(79, 161, 103, 25); 
      final jtextfield g1 = new jtextfield(); 
      g1.setbounds(79, 216, 103, 25); 
 
      final jtextarea show = new jtextarea(); 
      show.setbounds(194, 12, 388, 274); 
      frame.add(show); 
      show.setfont(new font("serif",font.bold,18)); 
     
       
       
      frame.add(show); 
      frame.add(name); 
      frame.add(num); 
      frame.add(sex); 
      frame.add(age); 
      frame.add(g1); 
      frame.add(show); 
       
      jlabel label = new jlabel("学号:"); 
      label.setbounds(12, 55, 63, 13); 
      frame.getcontentpane().add(label); 
       
      jlabel label_1 = new jlabel("姓名:"); 
      label_1.setbounds(12, 10, 63, 13); 
      frame.getcontentpane().add(label_1); 
       
      jlabel label_2 = new jlabel("性别:"); 
      label_2.setbounds(12, 110, 63, 13); 
      frame.getcontentpane().add(label_2); 
       
      jlabel label_3 = new jlabel("年龄:"); 
      label_3.setbounds(12, 167, 63, 13); 
      frame.getcontentpane().add(label_3); 
       
      jlabel label_4 = new jlabel("成绩:"); 
      label_4.setbounds(12, 226, 70, 13); 
      frame.getcontentpane().add(label_4); 
       
       
       
      //添加学生 
      jbutton btnadd =new jbutton("添加"); 
      btnadd.setbounds(12, 362, 104, 23); 
      frame.add(btnadd); 
      btnadd.addactionlistener(new actionlistener() { 
        public void actionperformed(actionevent arg0) { 
          student s1 = new student(integer.parseint(num.gettext()),name.gettext(), sex.gettext(),integer.parseint(age.gettext()),integer.parseint(g1.gettext())); 
          //放到集合 
          cotroller.getlist().add(s1); 
          //打印 
          for(int i = 0;i<cotroller.getlist().size();i++){ 
            show.append("\n"); 
            show.append(cotroller.printall(i)); 
          } 
           
           
        } 
      }); 
       
      //保存为文件 
      jbutton btnsave =new jbutton("保存");; 
      btnsave.setbounds(478, 362, 104, 23); 
      frame.add(btnsave); 
      btnsave.addactionlistener(new actionlistener() { 
        public void actionperformed(actionevent arg0) { 
          try { 
            cotroller.fileot(); 
          } catch (filenotfoundexception e) { 
            // todo auto-generated catch block 
            e.printstacktrace(); 
          } 
        } 
      }); 
       
      //刷新 
      jbutton btnrefresh = new jbutton("刷新"); 
      btnrefresh.setbounds(327, 362, 104, 23); 
      frame.add(btnrefresh); 
      btnrefresh.addactionlistener(new actionlistener() { 
         
        @override 
        public void actionperformed(actionevent arg0) { 
          try { 
            cotroller.filein(); 
          } catch (filenotfoundexception e) { 
            // todo auto-generated catch block 
            e.printstacktrace(); 
          } 
          //打印 
          for(int i = 0;i<cotroller.getlist().size();i++){ 
            show.append("\n"); 
            show.append(cotroller.printall(i)); 
          } 
           
        } 
      }); 
       
      //删除 
      jbutton button_1 = new jbutton("删除"); 
      button_1.setbounds(169, 362, 104, 23); 
      button_1.addactionlistener(new actionlistener() { 
         
        @override 
        public void actionperformed(actionevent arg0) { 
          // todo auto-generated method stub 
           
        } 
      }); 
      frame.add(button_1); 
      frame.setdefaultcloseoperation(jframe.exit_on_close); 
      frame.setvisible(true);  
    } 
 
} 

三、运行效果(初始界面、添加界面、刷新界面)

java学生信息管理系统MVC架构详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。