java学生信息管理系统MVC架构详解
程序员文章站
2024-04-03 18:04:40
本文实例为大家分享了java学生信息管理系统mvc架构,供大家参考,具体内容如下
一、项目结构
&nbs...
本文实例为大家分享了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); } }
三、运行效果(初始界面、添加界面、刷新界面)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: Java编程ssh整合常见错误解析
下一篇: fastjson 使用方法详细介绍