




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、package xsgl;import java.awt.*;import java.awt.event.*;import java.sql.*;import java.util.*;import javax.swing.*;import java.util.Vector;import javax.swing.table.*;import java.awt.event.*;public class Xsglxt extends JFrame implements ActionListener/继承JFrame 并实现接口ActionListenerJPanel mb1,mb2;JLabel b
2、q1;JTextField wbk1;JButton an1,an2,an3,an4; JTable bg1; /定义表格对象JScrollPane gd1;Xsxx xsxx2; /定义Xsxx类的一个对象xsxx2public static void main(String args) Xsglxt xs=new Xsglxt();public Xsglxt() /XSGLXT构造方法,用于对象初始化。mb1=new JPanel();bq1=new JLabel(请输入姓名);wbk1=new JTextField(10);an1=new JButton(查询);an1.addActio
3、nListener(this); /对按钮1添加监听an1.setActionCommand(chaxun); /设置按钮1的监听信息mb1.add(bq1); mb1.add(wbk1); mb1.add(an1);mb2=new JPanel();an2=new JButton(添加);an2.addActionListener(this);an2.setActionCommand(tianjia);an3=new JButton(修改);an3.addActionListener(this);an3.setActionCommand(xiugai);an4=new JButton(删除)
4、;an4.addActionListener(this);an4.setActionCommand(shanchu);mb2.add(an2); mb2.add(an3); mb2.add(an4);xsxx2=new Xsxx();bg1=new JTable(xsxx2);gd1=new JScrollPane(bg1);this.add(gd1);this.add(mb1,North);this.add(mb2,South);this.setTitle(学生管理系统);this.setSize(500,400);this.setLocation(201,181);this.setResi
5、zable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);public void actionPerformed(ActionEvent e) /实现接口ActionListener中的actionPerformed抽象方法if(e.getActionCommand().equals(chaxun) /判断监听到的组件信息是不是chaxun(是不是查询按钮)String xingming=this.wbk1.getText().trim(); /将本窗口的文本框1中文本取出,忽略
6、前后空格后赋给变量xingmingString sql=select * from xuesheng where xingming=+xingming+; /将SQL语句赋给String类型变量sqlxsxx2=new Xsxx(sql); /将String类型变量sql作为参数NEW一个Xsxx类的对象xsxx2bg1.setModel(xsxx2); /将表bg1的数据模型设为 newModel,并向其注册以获取来自新数据模型的侦听器通知。else if(e.getActionCommand().equals(tianjia)Tianjia tj=new Tianjia(this,添加学生
7、信息,true);xsxx2=new Xsxx(); /无参数传递的NEW一个Xsxx类的对象xsxx2bg1.setModel(xsxx2);else if(e.getActionCommand().equals(xiugai)int ii=this.bg1.getSelectedRow(); /使用getSelectedRow()方法返回第一个选定行的索引;如果没有选定的行,则返回 -1。 if(ii=-1)JOptionPane.showMessageDialog(this,请选中要修改的行); /显示一个错误对话框return;new Xiugai(this,修改学生信息,true,x
8、sxx2,ii); /NEW一个修改类对象并附上相关参数,true指定对话框在显示时是否阻塞用户向其他顶层窗口输入xsxx2=new Xsxx();bg1.setModel(xsxx2);else if(e.getActionCommand().equals(shanchu)int ii=this.bg1.getSelectedRow();if(ii=-1)JOptionPane.showMessageDialog(this,请选中要删除的行);return; String st=(String)xsxx2.getValueAt(ii,0); /使用getValueAt(ii,0)方法返回第i
9、i行的第0字段数据并强转为字符串型数据 PreparedStatement ps=null; /定义一个PreparedStatement对象ps;SQL 语句被预编译并存储在 PreparedStatement 对象中 Connection ct=null;/定义一个Connection对象ct;用来与特定数据库的连接。 ResultSet rs=null; /定义一个ResultSet对象rs;表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。 Statement sm=null; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);
10、/返回与带有给定字符串名的类或接口相关联的 Class 对象。 ct=DriverManager.getConnection(jdbc:odbc:123,sa,123456); /DriverManager:管理一组 JDBC 驱动程序的基本服务。getConnection方法试图建立到给定数据库 URL 的连接。 ps=ct.prepareStatement(delete from xuesheng where xuehao=?); /prepareStatement()方法是创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。 ps.setString
11、(1,st); /设置prepareStatement中SQL语句中第一个?位置为st中的字符串 ps.executeUpdate(); /在此 PreparedStatement 对象中执行 SQL 语句。 catch (Exception e2) finally try if(rs!=null)rs.close(); if(ps!=null)ps.close();if(ct!=null)ct.close(); catch (Exception e3) xsxx2=new Xsxx(); bg1.setModel(xsxx2);class Xsxx extends AbstractTable
12、Model Vector ziduan,jilu;PreparedStatement ps=null; Connection ct=null; ResultSet rs=null; public int getRowCount() / AbstractTableModel抽象类中的一个抽象方法(子类中必须实现),返回该模型中的行数。JTable 使用此方法来确定它应该显示多少行。return this.jilu.size(); public int getColumnCount() /返回该模型中的列数。JTable 使用此方法来确定在默认情况下它应该创建并显示多少列。 return this
13、.ziduan.size();public Object getValueAt(int hang, int lie) /返回指定行和列对应位置的单元格值。return (Vector)this.jilu.get(hang).get(lie);public Xsxx()this.sqlyj(select * from xuesheng);public Xsxx(String ss)this.sqlyj(ss);public String getColumnName(int e) /返回 e 位置的列的名称.return (String)this.ziduan.get(e);public void
14、 sqlyj(String sql)ziduan=new Vector();ziduan.add(学号);ziduan.add(姓名);ziduan.add(性别);ziduan.add(年龄);ziduan.add(籍贯);ziduan.add(所在院系); jilu=new Vector();try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); ct=DriverManager.getConnection(jdbc:odbc:123,sa,123456); ps=ct.prepareStatement(sql); rs=ps.executeQue
15、ry(); /executeQuery()方法是在此 PreparedStatement 对象ps中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。 while(rs.next() Vector hang=new Vector();hang.add(rs.getString(1); /以 Java 编程语言中 String 的形式获取此 ResultSet 对象的当前行中指定列的值。hang.add(rs.getString(2);hang.add(rs.getString(3);hang.add(rs.getInt(4);hang.add(rs.getString(5);h
16、ang.add(rs.getString(6);jilu.add(hang); catch (Exception e) finally try if(rs!=null)rs.close(); if(ps!=null)ps.close();if(ct!=null)ct.close(); catch (Exception e) class Xiugai extends JDialog implements ActionListener /JDialog是创建对话框窗口的主要类 JLabel bq1,bq2,bq3,bq4,bq5,bq6; JTextField wbk1,wbk2,wbk3,wbk
17、4,wbk5,wbk6; JButton an1,an2; JPanel mb1,mb2,mb3,mb4; public Xiugai(Frame fck,String ckm,Boolean msck,Xsxx xsxx2,int hang) super(fck,ckm,msck); bq1=new JLabel( 学号 ); bq2=new JLabel( 姓名 ); bq3=new JLabel( 性别 ); bq4=new JLabel( 年龄 ); bq5=new JLabel( 籍贯 ); bq6=new JLabel( 院系 ); wbk1=new JTextField(5);
18、wbk1.setText(String)xsxx2.getValueAt(hang,0); wbk1.setEditable(false); wbk2=new JTextField(5); wbk2.setText(String)xsxx2.getValueAt(hang,1); wbk3=new JTextField(5); wbk3.setText(String)xsxx2.getValueAt(hang,2); wbk4=new JTextField(5); wbk4.setText(String)xsxx2.getValueAt(hang,3).toString(); wbk5=new
19、 JTextField(5); wbk5.setText(String)xsxx2.getValueAt(hang,4); wbk6=new JTextField(5); wbk6.setText(String)xsxx2.getValueAt(hang,5); an1=new JButton(修改); an1.addActionListener(this); an1.setActionCommand(xiugai1); an2=new JButton(取消); an2.addActionListener(this); an2.setActionCommand(quxiao); mb1=new
20、 JPanel(); mb2=new JPanel(); mb3=new JPanel(); mb4=new JPanel(); mb1.setLayout(new GridLayout(6,1); mb2.setLayout(new GridLayout(6,1); mb1.add(bq1); mb1.add(bq2); mb1.add(bq3); mb1.add(bq4); mb1.add(bq5); mb1.add(bq6); mb2.add(wbk1); mb2.add(wbk2); mb2.add(wbk3); mb2.add(wbk4); mb2.add(wbk5); mb2.ad
21、d(wbk6); mb3.add(an1); mb3.add(an2); this.add(mb1,BorderLayout.WEST); this.add(mb2); this.add(mb3,BorderLayout.SOUTH); this.add(mb4,BorderLayout.EAST); this.setSize(370,270);this.setLocation(401,281);this.setResizable(false);this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);this.setVisible(true
22、); public void actionPerformed(ActionEvent e) if(e.getActionCommand().equals(xiugai1) PreparedStatement ps=null; Connection ct=null; ResultSet rs=null; Statement sm=null; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); ct=DriverManager.getConnection(jdbc:odbc:123,sa,123456);String ss=(update xueshe
23、ng set xingming=?,xingbie=?,nianling=?,jiguan=?,yuanxi=? where xuehao=?); ps=ct.prepareStatement(ss); ps.setString(1,wbk2.getText(); ps.setString(2,wbk3.getText(); ps.setString(3,wbk4.getText(); ps.setString(4,wbk5.getText(); ps.setString(5,wbk6.getText(); ps.setString(6,wbk1.getText(); ps.executeUp
24、date(); this.dispose(); catch (Exception e2) finally try if(rs!=null)rs.close(); if(ps!=null)ps.close();if(ct!=null)ct.close(); catch (Exception e3) else if(e.getActionCommand().equals(quxiao) this.dispose();/关闭当前窗口 class Tianjia extends JDialog implements ActionListener JLabel bq1,bq2,bq3,bq4,bq5,b
25、q6; JTextField wbk1,wbk2,wbk3,wbk4,wbk5,wbk6; JButton an1,an2; JPanel mb1,mb2,mb3,mb4; public Tianjia(Frame fck,String ckm,Boolean msck) super(fck,ckm,msck); bq1=new JLabel( 学号 ); bq2=new JLabel( 姓名 ); bq3=new JLabel( 性别 ); bq4=new JLabel( 年龄 ); bq5=new JLabel( 籍贯 ); bq6=new JLabel( 院系 ); wbk1=new J
26、TextField(5); wbk2=new JTextField(5); wbk3=new JTextField(5); wbk4=new JTextField(5); wbk5=new JTextField(5); wbk6=new JTextField(5); an1=new JButton(添加); an1.addActionListener(this); an1.setActionCommand(tianjia2); an2=new JButton(取消); an2.addActionListener(this); an2.setActionCommand(quxiao); mb1=
27、new JPanel(); mb2=new JPanel(); mb3=new JPanel(); mb4=new JPanel(); mb1.setLayout(new GridLayout(6,1); mb2.setLayout(new GridLayout(6,1); mb1.add(bq1); mb1.add(bq2); mb1.add(bq3); mb1.add(bq4); mb1.add(bq5); mb1.add(bq6); mb2.add(wbk1); mb2.add(wbk2); mb2.add(wbk3); mb2.add(wbk4); mb2.add(wbk5); mb2.add(wbk6); mb3.add(an1); mb3.add(an2); this.add(mb1,BorderLayout.WEST); this.add(mb2); this.add(mb3,BorderLayout.SOUTH); this.add(mb4,BorderLayout.EAST)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年人力资源管理专业毕业生招聘考试模拟题集
- 淮南沥青砼施工方案报价
- 主题二 身边的厨余垃圾说课稿-2025-2026学年小学综合实践活动辽师大版五年级上册-辽师大版
- 第三单元《第11课 有序的世界》教学设计教学反思-2023-2024学年小学信息技术浙教版(2023)四年级上册
- 花园管理装修方案范本
- 理石台面更换施工方案
- 仓库监控改造方案范本
- 2025年中国移动校招通信知识笔试模拟题
- 江西省宜春市2025年-2026年小学六年级数学期末考试(下学期)试卷及答案
- 河北省保定市2025年-2026年小学六年级数学期末考试(上学期)试卷及答案
- 热电偶及热电阻知识培训
- 脐带、胎盘蜕膜干细胞制备与储存协议
- 人工智能产业分类目录
- 工务系统(普速部分)安全隐患问题分类(甲I类、甲II类、乙类、丙类)
- 计数型MSA的模板
- 工程初验申请表完整
- 压 实 度 试 验 记 录 表
- 初等数论简介课件
- 消防技术装备培训课件
- 粉末压制成形原理课件
- 北京银行基于云技术的开发测试环境建设实践
评论
0/150
提交评论