资源描述
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 并实现接口ActionListener
{
JPanel mb1,mb2;
JLabel bq1;
JTextField wbk1;
JButton an1,an2,an3,an4;
JTable bg1; //定义表格对象
JScrollPane gd1;
Xsxx xsxx2; //定义Xsxx类的一个对象xsxx2
public 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。addActionListener(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("删除”);
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.setResizable(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中文本取出,忽略前后空格后赋给变量xingming
String sql=”select * from xuesheng where xingming=’"+xingming+”’";
//将SQL语句赋给String类型变量sql
xsxx2=new Xsxx(sql); //将String类型变量sql作为参数NEW一个Xsxx类的对象xsxx2
bg1。setModel(xsxx2);
//将表bg1的数据模型设为 newModel,并向其注册以获取来自新数据模型的侦听器通知。
}
else if(e.getActionCommand().equals("tianjia”))
{
Tianjia tj=new Tianjia(this,”添加学生信息”,true);
xsxx2=new Xsxx(); //无参数传递的NEW一个Xsxx类的对象xsxx2
bg1.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,xsxx2,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)方法返回第ii行的第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”);
//返回与带有给定字符串名的类或接口相关联的 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(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 AbstractTableModel
{
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.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 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.executeQuery();
//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));
hang.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,wbk4,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);
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 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 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);
this。setSize(370,270);
this.setLocation(401,281);
this。setResizable(false);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setVisible(true);
}
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 xuesheng 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.executeUpdate();
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,bq6;
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 JTextField(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=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);
this.setSize(370,270);
this。setLocation(401,281);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame。DISPOSE_ON_CLOSE);
this。setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand()。equals("tianjia2”))
{
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=("insert into xuesheng values(?,?,?,?,?,?)”);
ps=ct。prepareStatement(ss);
ps.setString(1,wbk1.getText());
ps.setString(2,wbk2。getText());
ps.setString(3,wbk3。getText());
ps。setString(4,wbk4。getText());
ps。setString(5,wbk5。getText());
ps。setString(6,wbk6。getText());
ps。executeUpdate();
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();
}
}
}
展开阅读全文