资源描述
学习 - 好资料/* 功能 :简易学生管理系统* 1. 能过姓名查询 ;* 2. 增 .删 .改学生信息*/public class StuManageSystemVersion1 extends JFrame implements ActionListener/ 定义组件 , 界面由三部分组成, 上部是姓名查询部分, 为一个 JPanel,中间是一个JScorllPane,底部也是一个JPanel,放了三个按钮JPanel top,bottom;JScrollPane jsp;JTable jt;JButton search,add,delete,update;JLabel name;JTextField jtf;StuModel sm=null;public StuManageSystemVersion1()/创建组件/Top 组件top=new JPanel();name=new JLabel( 请输入姓名 );jtf=new JTextField(22);search=new JButton( 查询 );search.addActionListener(this);更多精品文档学习 - 好资料top.add(name);top.add(jtf);top.add(search);sm=new StuModel();sm.queryStu(select * from stus, null);jt=new JTable(sm);jt.setSelectionBackground(Color.RED);jsp=new JScrollPane(jt);/底部组件bottom=new JPanel();add=new JButton( 增加 );add.addActionListener(this);delete=new JButton( 删除 );delete.addActionListener(this);update=new JButton( 修改 );update.addActionListener(this);bottom.add(add);bottom.add(delete);bottom.add(update);/添加组件this.add(top,BorderLayout.NORTH);this.add(jsp,BorderLayout.CENTER);this.add(bottom,BorderLayout.SOUTH);/设置窗体属性this.setSize(400,300);this.setTitle( 学生管理系统);int w=Toolkit.getDefaultToolkit().getScreenSize().width;int h=Toolkit.getDefaultToolkit().getScreenSize().height;this.setLocation(w/2-200, h/2-150);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);更多精品文档学习 - 好资料public static void main(String args) / TODO Auto-generated method stub new StuManageSystemVersion1();/更新数据模型public void updStuModel()sm=new StuModel();sm.queryStu(select * from stus, null);jt.setModel(sm);Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stub if(e.getSource()=search)String s=jtf.getText().trim(); String name=s;String sql=;if(s.length()!=0)sql=select * from Stus where StuName=?;else if(s.length()=0)sql=select * from Stus;name=null;sm=new StuModel();sm.queryStu(sql, name);jt.setModel(sm);jtf.setText();else if(e.getSource()=add)Boolean flag=true;while(flag)AddNewStu ans=new AddNewStu(this, 添加新学生 , true);/更新数据模型this.updStuModel();/确认是否添加新的学生inti=JOptionPane.showConfirmDialog(this,是否继续添加学生?,JOptionPane.YES_NO_OPTION);更多精品文档学习 - 好资料if(i=JOptionPane.NO_OPTION)flag=false;else if(e.getSource()=delete)if(jt.getSelectedRow()=-1)JOptionPane.showMessageDialog(this, 请先选择一行数据 ); return;elseint selectID=jt.getSelectedRow();String stuID=jt.getValueAt(selectID, 0).toString();String sql=delete from stus where stuID=?;sm=new StuModel();sm.updStu(sql, stuID);/更新数据模型this.updStuModel();else if(e.getSource()=update)if(jt.getSelectedRow()=-1)JOptionPane.showMessageDialog(this, 请先选择一行数据 ); return;elseint id=jt.getSelectedRow();sm=new StuModel();sm.queryStu(select * from stus, null);UpdateStu us=new UpdateStu(this, 修改学生信息, true,sm,id);/更新数据模型this.updStuModel();更多精品文档学习 - 好资料/* 这是我的一个 Stu 表的模型*/public class StuModel extends AbstractTableModel ResultSet rs;Vector cloumn;Vector row;SqlHelper sh;/ 查询数据public void queryStu(String sql, String args) / 中间的显示组件cloumn = new Vector();cloumn.add( 学生 ID);cloumn.add( 姓名 );cloumn.add( 年龄 );cloumn.add( 性别 );cloumn.add( 系别 );row = new Vector();sh = new SqlHelper();rs = sh.query(sql, args);try while (rs.next() Vector hang = new Vector();hang.add(rs.getInt(1);hang.add(rs.getString(2);hang.add(rs.getInt(3);hang.add(rs.getString(4);更多精品文档学习 - 好资料hang.add(rs.getString(5);row.add(hang); catch (Exception e) / TODO: handle exceptionsh.close();/ 增.删 .改操作public boolean updStu(String sql, String args) sh = new SqlHelper();return sh.updSQL(sql, args);Override/ 得到共有多少列public int getColumnCount() /Override/ 得到共有多少行public int getRowCount() /Override/ 得到某行某列的值public Object getValueAt(int rowIndex, int columnIndex) / TODO Auto-generated method stubOverridepublic String getColumnName(int index) /更多精品文档学习 - 好资料public class AddNewStu extends JDialog implements ActionListener / 定义 swing 组件JPanel top, bottom, left;JLabel stuID, stuName, stuAge, stuSex, stuDepart;JTextField id, name, age, sex, depart;JButton save, cancel;StuModel sm = null;/ 构造函数public AddNewStu(JFrame owner, String title, boolean modal) super(owner, title, modal);/ 创建组件top = new JPanel(new GridLayout(5, 1);left = new JPanel(new GridLayout(5, 1);stuID = new JLabel( 学生 ID, JLabel.CENTER);stuName = new JLabel( 姓名 , JLabel.CENTER);stuAge = new JLabel( 年龄 , JLabel.CENTER);stuSex = new JLabel( 性别 , JLabel.CENTER);stuDepart = new JLabel( 系别 , JLabel.CENTER);id = new JTextField(15);name = new JTextField(15);age = new JTextField(15);sex = new JTextField(15);depart = new JTextField(15);top.add(stuID);top.add(stuName);top.add(stuAge);top.add(stuSex);top.add(stuDepart);left.add(id);left.add(name);更多精品文档学习 - 好资料left.add(age);left.add(sex);left.add(depart);bottom = new JPanel();save = new JButton( 保存 );save.addActionListener(this);cancel = new JButton( 取消 );cancel.addActionListener(this);bottom.add(save);bottom.add(cancel);this.add(top, BorderLayout.CENTER);this.add(left, BorderLayout.EAST);this.add(bottom, BorderLayout.SOUTH);/ 设置窗体属性this.setSize(230, 200);this.setLocation(1000, 300);this.setVisible(true);Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stub if (e.getSource() = save) String values = id.getText().trim(), name.getText().trim(), age.getText().trim(), sex.getText().trim(), depart.getText().trim() ;String sql = insert into stus values(?,?,?,?,?);sm = new StuModel();sm.updStu(sql, values);this.dispose();else if(e.getSource()=cancel)this.dispose();更多精品文档学习 - 好资料public class UpdateStu extends JDialog implements ActionListener / 定义 swing 组件JPanel top, bottom, left;JLabel stuID, stuName, stuAge, stuSex, stuDepart;JTextField id, name, age, sex, depart;JButton save, cancel;StuModel sm = null;String values;/ 构造函数public UpdateStu(JFrame owner, String title, boolean modal, StuModel sm, int idValue) super(owner, title, modal);/ 创建组件top = new JPanel(new GridLayout(5, 1);left = new JPanel(new GridLayout(5, 1);stuID = new JLabel( 学生 ID, JLabel.CENTER);stuName = new JLabel( 姓名 , JLabel.CENTER);stuAge = new JLabel( 年龄 , JLabel.CENTER);stuSex = new JLabel( 性别 , JLabel.CENTER);stuDepart = new JLabel( 系别 , JLabel.CENTER);id = new JTextField(15);id.setText(sm.getValueAt(idValue, 0).toString();id.setEditable(false);name = new JTextField(15);name.setText(sm.getValueAt(idValue, 1).toString();更多精品文档学习 - 好资料age = new JTextField(15);age.setText(sm.getValueAt(idValue, 2).toString();sex = new JTextField(15);sex.setText(sm.getValueAt(idValue, 3).toString();depart = new JTextField(15);depart.setText(sm.getValueAt(idValue, 4).toString();top.add(stuID);top.add(stuName);top.add(stuAge);top.add(stuSex);top.add(stuDepart);left.add(id);left.add(name);left.add(age);left.add(sex);left.add(depart);bottom = new JPanel();save = new JButton( 保存 );save.addActionListener(this);cancel = new JButton( 取消 );cancel.addActionListener(this);bottom.add(save);bottom.add(cancel);this.add(top, BorderLayout.CENTER);this.add(left, BorderLayout.EAST);this.add(bottom, BorderLayout.SOUTH);/ 设置窗体属性this.setSize(230, 200);this.setLocation(1000, 300);this.setVisible(true);Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stub更多精品文档学习 - 好资料if (e.getSource() = save) String values = name.getText().trim(), age.getText().trim(),sex.getText().trim(), depart.getText().trim(),id.getText().trim() ;String sql = update stus set stuName=?,stuAge=?,stuSex=?,stuDepart=? wherestuID=?;sm = new StuModel();sm.updStu(sql, values);this.dispose();else if(e.getSource()=cancel)this.dispose();更多精品文档学习 - 好资料/* 功能 :数据库操作模型*/public class SqlHelper / 连接数据库的组件Connection con;ResultSet rs;/ 构造函数 ,在调用 SqlHelper 类时 ,就自动建立连接public SqlHelper() / 建立数据库连接try Class.forName(DRIVER); catch (ClassNotFoundException e) / TODO Auto-generated catch block e.printStackTrace();try con = DriverManager.getConnection(DBURL, DBUSRER, DBPWD); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();/ 增.删 .改public boolean updSQL(String sql, String args) boolean b = true;try ps = con.prepareStatement(sql);更多精品文档学习 - 好资料for (int i = 0; i args.length; i+) ps.setString(i + 1), argsi);ps.executeUpdate(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();this.close();return b;/ 查询public ResultSet query(String sql, String args) try ps = con.prepareStatement(sql);if (args = null) rs = ps.executeQuery(); else for (int i = 0; i args.length; i+) ps.setString(i + 1), argsi);rs = ps.executeQuery(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return rs;/ 关闭资源public void close() try if (rs != null)rs.close();更多精品文档学习 - 好资料if (ps != null)ps.close();if (con != null)con.close(); catch (SQLException e) e.printStackTrace();/ TODO: handle exception更多精品文档
展开阅读全文