




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生管理系统V 1.0 基于java swing技术 (如有疑问请发送邮件至)本系统由:MainFrame类(主界面类),SqlHelper类(数据库操作类),StuModel类(表格模型类),StuAdd类(添加对话框类),StuUpdate类(修改对话框类)组成:功能:实现了基本的增加,修改,删除,查询功能系统需要使用的工具栏小图标:一:功能演示:1:主界面2:添加对话框3:修改对话框:5:查询功能:6:删除功能。二:完整代码1:MainFrame类(主界面类):package com.stusys;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFrame;import java.awt.*;import javax.swing.*;import java.awt.event.*;/* * 学生管理系统的主界面 * author * */public class MainFrame extends JFrame implements ActionListener /整个界面是BorderLayout布局,北部放工具栏和搜索相关控件,南部放操作按钮 private JPanel jpNorth,jpNorthTop,jpNorthBottom,jpSouth; /菜单栏相关控件 private JMenuBar jmb; private JMenu jm1,jm2; private JMenuItem jmi1,jmi2,jmi3; /工具栏相关空间 private JToolBar jtb; private JButton jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9,jb10; /最上部控件 private JLabel jlQuery; private JTextField jtfQuery; private JButton jbQuery; /中部表格区域相关控件 private JScrollPane jsp; private StuModel model; private JTable jtInfo; /最底部控件 private JButton jbAdd,jbUpdate,jbDelete; public MainFrame() this.setTitle(学生管理系统 V 1.0); /初始化各个面板 jpNorth=new JPanel(); jpNorth.setLayout(new BorderLayout(); jpNorthTop=new JPanel(); jpNorthBottom=new JPanel(); jpSouth=new JPanel(); /菜单栏 buildMenu(); /上层面板的上部工具栏组件,并添加到面板中 buildToolbar(); jpNorth.add(jpNorthTop,BorderLayout.NORTH); /上层面板的下部查询组件 jlQuery=new JLabel(输入名字:); jtfQuery=new JTextField(10); jbQuery=new JButton(查询); jbQuery.addActionListener(this); jpNorthBottom.add(jlQuery); jpNorthBottom.add(jtfQuery); jpNorthBottom.add(jbQuery); jpNorth.add(jpNorthBottom,BorderLayout.SOUTH); this.getContentPane().add(jpNorth,BorderLayout.NORTH); /中部的表格组件 model=new StuModel(); String sql=select *from tb_student where 1=?; String params=new String1; model.queryStudent(sql,params);/将查询到的数据放入表格模型 jtInfo=new JTable(model);/将表格模型放入表格中 jtInfo.setRowHeight(25); jsp=new JScrollPane(jtInfo); this.getContentPane().add(jsp,BorderLayout.CENTER); /下部的增加修改删除控件,并通过添加到面板 jbAdd=new JButton(添加); jbUpdate=new JButton(修改); jbDelete=new JButton(删除); jbAdd.addActionListener(this); jbUpdate.addActionListener(this); jbDelete.addActionListener(this); jpSouth.add(jbAdd); jpSouth.add(jbUpdate); jpSouth.add(jbDelete); this.getContentPane().add(jpSouth,BorderLayout.SOUTH); /整个主界面的属性设置 Toolkit toolkit=Toolkit.getDefaultToolkit(); Dimension screenSize=toolkit.getScreenSize(); this.setSize(screenSize.width,screenSize.height); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setVisible(true); /构建菜单相关控件 public void buildMenu() jmb=new JMenuBar(); jm1=new JMenu(管理); jm2=new JMenu(帮助); jmi1=new JMenuItem(添加); jmi2=new JMenuItem(修改); jmi3=new JMenuItem(删除); jmi1.addActionListener(this); jmi2.addActionListener(this); jmi3.addActionListener(this); jm1.add(jmi1); jm1.add(jmi2); jm1.add(jmi3); jmb.add(jm1); jmb.add(jm2); this.setJMenuBar(jmb); /构建工具栏控件的方法 public void buildToolbar() jtb=new JToolBar(); jtb.setLocation(0,20); jb1=new JButton(添加,new ImageIcon(pic/m01.gif); jb2=new JButton(修改,new ImageIcon(pic/m02.gif); jb3=new JButton(删除,new ImageIcon(pic/m03.gif); jb4=new JButton(添加,new ImageIcon(pic/m04.gif); /下面是用来拓展的工具,只实现界面,没有实现功能 jb5=new JButton(添加,new ImageIcon(pic/m05.gif); jb6=new JButton(添加,new ImageIcon(pic/m06.gif); jb7=new JButton(添加,new ImageIcon(pic/m07.gif); jb8=new JButton(添加,new ImageIcon(pic/m08.gif); jb9=new JButton(添加,new ImageIcon(pic/m09.gif); jb10=new JButton(添加,new ImageIcon(pic/m10.gif); jb1.addActionListener(this); jb2.addActionListener(this); jb3.addActionListener(this); jb4.addActionListener(this); jb5.addActionListener(this); jb6.addActionListener(this); jb7.addActionListener(this); jb8.addActionListener(this); jb9.addActionListener(this); jb10.addActionListener(this); jtb.add(jb1); jtb.add(jb2); jtb.add(jb3); jtb.add(jb4); jtb.add(jb5); jtb.add(jb6); jtb.add(jb7); jtb.add(jb8); jtb.add(jb9); jtb.add(jb10); jpNorthTop.add(jtb); /处理按钮事件public void actionPerformed(ActionEvent e) /处理查询按钮事件if(e.getSource()=jbQuery)String jtfValue=jtfQuery.getText().trim();/假如查询的时候输入的是空字符串if(jtfValue.equals()String sql=select *from tb_student where 1=?;String params=new String1;model=new StuModel();model.queryStudent(sql, params);jtInfo.setModel(model);else/假如查询的时候输入了字符串String sql=select *from tb_student where stuName=?;String params=new StringjtfValue;model=new StuModel();model.queryStudent(sql, params);jtInfo.setModel(model);/处理添加按钮事件else if(e.getSource()=jbAdd|e.getSource()=jmi1|e.getSource()=jb1)StuAdd add=new StuAdd(this,添加学生,true); model=new StuModel(); String sql=select *from tb_student where 1=?; String params=new String1; model.queryStudent(sql, params); jtInfo.setModel(model);else if(e.getSource()=jbUpdate|e.getSource()=jmi2|e.getSource()=jb2)int rowNum=this.jtInfo.getSelectedRow();if(rowNum=-1)JOptionPane.showMessageDialog(this, 请选择一行修改);return;elseStuUpdate stuUpdate=new StuUpdate(this,修改学生,true,model,rowNum); model=new StuModel();String sql=select *from tb_student where 1=?;String params=new String1;model.queryStudent(sql, params);jtInfo.setModel(model);/处理删除按钮的事件else if(e.getSource()=jbDelete|e.getSource()=jmi3|e.getSource()=jb3)int rowNum=this.jtInfo.getSelectedRow();if(rowNum=-1)JOptionPane.showMessageDialog(this, 请选择一行删除);return;elseString sql=delete from tb_student where stuId=?;String stuId=(String)this.jtInfo.getValueAt(rowNum, 0);String params=new StringstuId;StuModel myModel=new StuModel();myModel.updateStu(sql, params);/重新获得新的数据模型model=new StuModel();String sql2=select *from tb_student where 1=?;String params2=new String1;model.queryStudent(sql2, params2);jtInfo.setModel(model);public static void main(String args) new MainFrame();2:SqlHelper类:package com.stusys;import java.sql.*;import javax.sql.*;public class SqlHelper /连接数据库的信息private String driver=com.mysql.jdbc.Driver;private String url=jdbc:mysql:/localhost:3306/javaproject;private String username=root;private String password=123;/操作数据库的类private Connection conn=null;private PreparedStatement ps=null;private ResultSet rs=null;/根据无参数的sql语句获取结果集public ResultSet queryResult(String sql)try Class.forName(driver);conn=DriverManager.getConnection(url,username,password); ps=conn.prepareStatement(sql); rs=ps.executeQuery(); catch (SQLException e) e.printStackTrace(); catch (ClassNotFoundException e) e.printStackTrace();finallyreturn rs;/根据sql语句与参数集合获取结果集public ResultSet queryResult(String sql,String params)try Class.forName(driver);conn=DriverManager.getConnection(url,username,password); ps=conn.prepareStatement(sql); for(int i=0;iparams.length;i+) ps.setString(i+1, paramsi); rs=ps.executeQuery(); catch (SQLException e) e.printStackTrace(); catch (ClassNotFoundException e) e.printStackTrace();finallyreturn rs;/执行增加,修改,删除语句的方法public boolean isUpdate(String sql,String params)boolean b=true;try Class.forName(driver);conn=DriverManager.getConnection(url,username,password); ps=conn.prepareStatement(sql); for(int i=0;iparams.length;i+) ps.setString(i+1, paramsi); int i= ps.executeUpdate(); if(i!=1) b=false; else b=true; catch (SQLException e) e.printStackTrace(); catch (ClassNotFoundException e) e.printStackTrace();finallythis.close();return b;/关闭数据库各种资源public void close()tryif(rs!=null) rs.close();rs=null;if(ps!=null)ps.close();ps=null;if(conn!=null)conn.close();conn=null;catch(Exception e)e.printStackTrace();3:StuModel类:package com.stusys;import javax.swing.table.AbstractTableModel;import java.awt.*;import java.util.*;import java.sql.*;public class StuModel extends AbstractTableModel /构建dao对象和相关资源 private SqlHelper sqlHelper; private ResultSet rs=null; /创建表格的数据相关 private Vector rowDatas,columnNames; public StuModel() /执行更新,删除,修改操作 public boolean updateStu(String sql,String params) sqlHelper=new SqlHelper(); return sqlHelper.isUpdate(sql, params); /获取查询的数据 public void queryStudent(String sql,String params) columnNames=new Vector(); columnNames.add(学号); columnNames.add(姓名); columnNames.add(性别); columnNames.add(年龄); columnNames.add(所属部门); columnNames.add(住址); rowDatas=new Vector(); try sqlHelper=new SqlHelper(); rs=sqlHelper.queryResult(sql, params);while(rs.next()Vector row=new Vector();row.add(rs.getString(1);row.add(rs.getString(2);row.add(rs.getString(3);row.add(rs.getInt(4);row.add(rs.getString(5);row.add(rs.getString(6);rowDatas.add(row); catch (SQLException e) e.printStackTrace();finallysqlHelper.close(); public int getColumnCount() return this.columnNames.size();public int getRowCount() return this.rowDatas.size();public Object getValueAt(int rowIndex, int columnIndex) return (Vector)this.rowDatas.get(rowIndex).get(columnIndex);public String getColumnName(int column) return (String)this.columnNames.get(column);4:StuAdd类:package com.stusys;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JDialog;import java.awt.*;import java.awt.event.*;import javax.swing.*;/添加对话框public class StuAdd extends JDialog implements ActionListener /定义添加对话框的各个控件 private JPanel jp1,jp2,jp3; private JLabel jl1,jl2,jl3,jl4,jl5,jl6; private JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6; private JButton jb1,jb2; / Frame为父窗口,也就是对话框所处的父窗口中,title第二个为标题, /modal为是否模式,如果是模式的,则必须相应对话框,否则无法操作父窗口。 public StuAdd(Frame owner,String title,boolean modal) super(owner,title,modal); /第一个面板为GridLayout添加各个标签 jp1=new JPanel(); jp1.setLayout(new GridLayout(6,1); jl1=new JLabel(学号); jl2=new JLabel(姓名); jl3=new JLabel(性别); jl4=new JLabel(年龄); jl5=new JLabel(部门); jl6=new JLabel(地址); jp1.add(jl1); jp1.add(jl2); jp1.add(jl3); jp1.add(jl4); jp1.add(jl5); jp1.add(jl6); this.getContentPane().add(jp1,BorderLayout.WEST); /第二个面板为GridLayout,添加各个文本框 jp2=new JPanel(); jp2.setLayout(new GridLayout(6,1); jtf1=new JTextField(); jtf2=new JTextField(); jtf3=new JTextField(); jtf4=new JTextField(); jtf5=new JTextField(); jtf6=new JTextField(); jp2.add(jtf1); jp2.add(jtf2); jp2.add(jtf3); jp2.add(jtf4); jp2.add(jtf5); jp2.add(jtf6); this.getContentPane().add(jp2,BorderLayout.CENTER); /第三个面板,添加两个按钮 jp3=new JPanel(); jb1=new JButton(确定); jb2=new JButton(取消); jb1.addActionListener(this); jb2.addActionListener(this); jp3.add(jb1); jp3.add(jb2); this.getContentPane().add(jp3,BorderLayout.SOUTH); /定义整个对话框的属性 Toolkit toolkit=Toolkit.getDefaultToolkit(); Dimension screenSize=toolkit.getScreenSize(); this.setSize(200,300); this.setLocation(screenSize.width-this.getWidth()/2, (screenSize.height-this.getHeight()/2); this.setVisible(true); public void actionPerformed(ActionEvent e) if(e.getSource()=jb1)/如果按下的是确定按钮,执行插入sql语句StuModel model=new StuModel();String sql=insert tb_student values(?,?,?,?,?,?);Stringparams=new Stringjtf1.getText().trim(),jtf2.getText().trim(),jtf3.getText().trim(),jtf4.getText().trim(),jtf5.getText().trim(),jtf5.getText().trim();model.updateStu(sql, params);this.dispose();/关闭对话框else if(e.getSource()=jb2)/如果按下的取消按钮,则关闭对话框this.dispose();5:StuUpdate类:package com.stusys;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import java.awt.*;import java.awt.event.*;import javax.swing.*;/定义修改对话框public class StuUpdate extends JDialog implements ActionListener /定义各个控件 private JPanel jp1,jp2,jp3; private JLabel jl1,jl2,jl3,jl4,jl5,jl6; private JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6; private JButton jb1,jb2; /注意这个构造方法,最后有rowNum这个被表格选定的行,以方便获取数据public StuUpdate(Frame owner,String title,boolean modal,StuModel model,int rowNum)super(owner,title,modal); /第一个面板放置标签 jp1=new JPanel(); jp1.setLayout(new GridLayout(6,1); jl1=new JLabel(学号); jl2=new JLabel(姓名); jl3=new JLabel(性别); jl4=new JLabel(年龄); jl5=new JLabel(部门); jl6=new JLabel(地址); jp1.add(jl1); jp1.add(jl2); jp1.add(jl3); jp1.add(jl4); jp1.add(jl5); jp1.add(jl6); this.getContentPane().add(jp1,BorderLayout.WEST); /第二个面板放置文本框 jp2=new JPanel(); jp2.setLayout(new GridLayout(6,1); jtf1=new JTextField(String)model.getValueAt(rowNum, 0); jtf1.setEditable(false); jtf2=new JTextField(String)model.getValueAt(rowNum, 1); jtf3=new JTextFi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 监理劳动合同合同(标准版)
- 商业地产出租合同管理协议
- 双方无偿赠与合同6篇
- 细茶窝荒山承包合同8篇
- 商标设计委托合同书6篇
- 泰山护理技能考试题库及答案解析
- 2026届江苏省滨淮七年级数学第一学期期末教学质量检测试题含解析
- 江苏省无锡市新吴区2026届八年级数学第一学期期末考试模拟试题含解析
- 农业机车安全操作培训课件
- 农业大棚安全培训计划课件
- 《餐饮点菜》课件
- 公司财务知到智慧树章节测试课后答案2024年秋北京第二外国语学院
- 工厂交叉作业安全管理协议书(2篇)
- 中考英语完型填空常用短语
- 宣传物料技术服务方案设计
- 暴聋(突发性耳聋)中医临床路径及入院标准2020版
- 部编高教版2023·职业模块 中职语文 2.《宁夏闽宁镇:昔日干沙滩今日金沙滩》 课件
- 【MOOC】生命的教育-浙江大学 中国大学慕课MOOC答案
- 高血压个案护理案例
- 四川省三级综合医院评审标准实施细则(2023年版)
- 心肺复苏术课件2024新版
评论
0/150
提交评论