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

本文介绍了一个基于Java MVC架构的学生信息管理系统实现。系统分为三层:学生模型、控制器和视图。Student类作为模型,实现了序列化接口;Cotroller类负责数据管理,包括增删查改和文件操作;StuView类展示数据,提供了添加、保存、刷新等界面操作。
摘要由CSDN通过智能技术生成

一、项目结构

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

0818b9ca8b590ca3270a3433284dd417.png

二、源码

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进行操作

* @Author nazi

* @version 1.0

* */

public class Cotroller {

//student数据集合

private ArrayList list;

public Cotroller(ArrayList l){

this.list =l;

}

/*

* rturn a ArrayList

* */

public ArrayList getList()

{

return list;

}

/*

* 初始化Student数组

* */

public void setList(ArrayList 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 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) 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());

//界面

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

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

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

}

}

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

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

为实现用户需求,从需求分析阶段的数据流图出发,根据小组讨论后确定的最佳方案。本系统主要包括两大功能模块:学生信息和成绩信息两个系统。其中学生信息系统划分为七个模块,学生成绩划分为四个模块。然后在需求分析阶段所确定的系统数据需求的基础上,进一步设计数据结构。在测试过程中,先对单个模块进行测试,然后把模块连接起来进行测试。测试完成后书写文档,最后小组成员和用户在一块审查和复审。 1、 课题陈述 一方面,在时下这个飞速发展的信息社会中,直到今天仍然没有一套完善可行的学生信息管理系统出现在学校里。每年,从大专生、本科生到硕士生、博士生,几千人的入学、升学、毕业,全要由教务处和各系老师人工管理。信息量之巨大,工作量之繁重,是难以想象的。因此,学校和各个系都要安排多名教师专门负责学生学籍管理,浪费了大量的人力资源。然而,即使这样,管理仍然谈不上井井有条。举一个最简单的真实例子,一个同学的姓名在花名册里印错了,就一错错了三年,一直没能改正。同学想去改,却不知道是应该找系里,还是去找教务处。还有,当学生的基本信息,比如家庭住址、电话等变更后,无法及时在档案中修改,使得老师与同学无法联系沟通。 另一方面,从社会这方面讲,随着计算机的普及,越来越多的学校利用计算机来处理日常事务。面对众多的数据资料,很多管理者常常感到无从下手。在数字化的今天,我们需要一个学生管理系统,使我们的整体管理水平上一个档次,与如今这个高科技的信息社会接轨。 因此,如何有效的管理学生信息,帮助学校和老师管理和掌握这些情况,这就是学生信息管理系统需要完成的任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值