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

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

一、项目结构

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

二、源码

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);
    } 

}

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

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

(0)

相关推荐

  • 图书管理系统java版

    本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出版日期.书号.价格字段.设计一个GUI界面进行书目管理.在该界面上有四个选项卡,分别是查询.插入.删除.修改.点击查询选项卡,出现的界面上有书名.作者.出版社.书号四个文本框,一个按钮和一个只读文本区.文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的"查询"按钮,可以在界面

  • 一个简陋的java图书管理系统

    本文代码为原创一个简陋的管理系统,只做功能的测试.并没有去完善所有应有的功能,只做了输入输出查找,仅供参考! 菜单部分: import java.util.Scanner; public class Menu { int Min = 1; int Max = 3; public void getMenu(){ System.out.println("1.显示/2.输入/3.查找"); } public void getFindMenu(){ System.out.println(&qu

  • java学生信息管理系统设计

    本例的学生信息添加进入数据库的事务(可以提交事务,事务回滚,用本地线程完善) 主页面index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <htm

  • java学生信息管理系统设计(2)

    本例的学生信息添加进入数据库的事务(可以提交事务,事务回滚,用本地线程完善) 主页面index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <htm

  • Java学生信息管理系统设计(数据库版)

    本文实例为大家分享了数据库版的Java学生信息管理系统,供大家参考,具体内容如下 package Student_system; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import

  • 简单实现Java版学生管理系统

    本文实例为大家分享了Java实现学生管理系统的具体代码,供大家参考,具体内容如下 package BookDemo_1; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Test { public static void main(String[] args) { StudentSys stuSys=new StudentSys("学生管理系统"); stuSys.initWi

  • Java+MySQL实现学生信息管理系统源码

    基于Java swing+MySQL实现学生信息管理系统:主要实现JDBC对学生信息进行增删改查,应付一般课设足矣,分享给大家.(由于篇幅原因,代码未全部列出,如有需要留下邮箱) 鉴于太多同学要源码,实在发不过来,上传到github上 https://github.com/ZhuangM/student.git 1. 开发环境:jdk7+MySQL5+win7 代码结构:model-dao-view 2. 数据库设计--建库建表语句: CREATE DATABASE student; DROP

  • 学生信息管理系统java版

    本文为大家分享了java学生信息管理系统的源代码,供大家参考,具体内容如下 /*学生信息管理系统,实现学生信息: *增加 int[] a=new int[9] *删除 *查找 *更改 */ import java.util.Scanner;//导入java输入流 import java.lang.*; import java.io.*; class Student { private static Student[] s=new Student[2]; int n=0; private Stri

  • Java+Mysql学生管理系统源码

    最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具:eclipse 开发此案例,首先得在电脑上有java开发环境和Mysql, java开发环境与Mysql的搭建,就不再叙述了,如果需要,请联系我最下面的联系方式:dingyelf@aliyun.com 此次系统比较简易:数据库中只有一个表:stu;功能:能够对学生增加.删除.修改. 开发步骤:  

  • java(swing)+ mysql实现学生信息管理系统源码

    本文实例为大家分享了java实现学生信息管理系统源码,供大家参考,具体内容如下 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import

随机推荐