打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
java 韩顺平 迷你学生管理 awt swing sql 支持 linux
CREATE TABLE st
(
`stId` integer (255) NOT NULL AUTO_INCREMENT ,
 `stNname` varchar (20),
 `st s e x` varchar (100), // s e x 被和谐了
 `stAge` varchar (100),
 `stBorn` varchar (100),
 `stDept` varchar (100),
 PRIMARY KEY (`stId`)
)TYPE=MyISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci;
================================================================================
#方法1
================================================================================
package model_1;
//InsertStudent文件源代码:
import java.sql.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.table.*;
import javax.swing.event.*;
//添加学生的对话框类
public class InsertStudent extends JDialog implements ActionListener{
 private JLabel id, name, ***, age, address, dep;  //分别代表学生的学号,名字,性别,年龄,籍贯,系别
 private JTextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6; //用户输入的文本框,分别为学生的学号,名字,性别,年龄,籍贯,系别
 private JButton add, canel;  //分别为添加按钮和取消按钮
 private Panel panel1, panel2, panel3;
 
 public InsertStudent(Frame owner, String title, boolean model)
 {
  super(owner, title, model);  //实现与父类窗口对话
  System.out.println("我执行了");
  
  //窗体的西部的组件
  id = new JLabel("学号:");
  name = new JLabel("姓名:");
  *** = new JLabel("性别");
  age = new JLabel("年龄");
  address = new JLabel("籍贯");
  dep = new JLabel("系别:");
  //添加到panel1面板中
  panel1 = new Panel(new GridLayout(6, 1));
  panel1.add(id);
  panel1.add(name);
  panel1.add(***);
  panel1.add(age);
  panel1.add(address);
  panel1.add(dep);
  
  //窗体的东部组件
  jtf1 = new JTextField(10);
  jtf2 = new JTextField(10);
  jtf3 = new JTextField(10);
  jtf4 = new JTextField(10);
  jtf5 = new JTextField(10);
  jtf6 = new JTextField(10);
  //添加到第二个面板中
  panel2 = new Panel(new GridLayout(6, 1));
  panel2.add(jtf1);
  panel2.add(jtf2);
  panel2.add(jtf3);
  panel2.add(jtf4);
  panel2.add(jtf5);
  panel2.add(jtf6);
  
  //窗体北部的控件
  add = new JButton("添加");
  canel = new JButton("取消");
  
  //注册事件监听
  add.addActionListener(this);
  canel.addActionListener(this);
  
  //添加到panel3面板中
  panel3 = new Panel();
  panel3.add(add);
  panel3.add(canel);
  
  //将各个组件添加到窗体中
  this.add(panel1, BorderLayout.WEST);
  this.add(panel2, BorderLayout.CENTER);
  this.add(panel3, BorderLayout.SOUTH);
  
  //设置对话框属性
  this.setSize(300, 200);
  //设置对话框为可见
  this.setVisible(true);
 }
 
 
 public void actionPerformed(ActionEvent e)
 {
  //数据库
  Connection con = null;
  PreparedStatement ps = null;
  
  boolean result = true; //记录添加学生是否成功
  
  if(e.getSource() == add)
  {
   try
   {
    //加载jdbc驱动
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    //连接数据源
    con = DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:3306;databaseName=st", "feng", "1001001");
    //执行sql
    String sql = "insert into st values(?,?,?,?,?,?)";
    ps = con.prepareStatement(sql);
    
    ps.setString(1, jtf1.getText());
    ps.setString(2, jtf2.getText());
    ps.setString(3, jtf3.getText());
    ps.setString(4, jtf4.getText());
    ps.setString(5, jtf5.getText());
    ps.setString(6, jtf6.getText());
    
    ps.executeUpdate();
    
    //关闭对话框
    this.dispose();
   }
   catch(ClassNotFoundException e1)
   {
    result = false; //添加学生记录失败
    e1.printStackTrace();
   }
   catch(SQLException e1)
   {
    result = false;   //添加学生记录失败
    e1.printStackTrace();
   }
   finally
   {
    //关闭资源
    try
    {
     if(null != ps)
     {
      ps.close();
     }
     if(null != con)
     {
      con.close();
     }
    }
    catch(SQLException e1)
    {
     e1.printStackTrace();
    }  
   } 
   
   if(false == result)
   {
    JOptionPane.showMessageDialog(this, "失败信息:学号不能重复,性别只能为'男'或者'女',年龄大于0");
   }
  }
  
  else if(e.getSource() == canel)
  {
   //关闭对话框
   this.dispose();
  }
 }
}
================================================================================
package model_1;
//StModel文件源代码:
import java.util.*;
import java.sql.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.table.*;
import javax.swing.event.*;

public class StModel extends AbstractTableModel{ 
 Vector columNames = null;  //表的字段名称
  Vector rowDate = null;    //表的数据
 
 //数据库
 private Connection con = null;
 private PreparedStatement ps = null;
 private ResultSet rs = null;
/**********
//driver="org.gjt.mm.mysql.Driver";            
//url="jdbc:mysql://localhost:3306/st?characterEncoding=utf8";
//user="feng";
//passWord="1001001";  
//以上四行在对mysql操作时,支持linux环境。
************/

     private static final String driver="org.gjt.mm.mysql.Driver";
     private static final String url="jdbc:mysql://localhost:3306/st?characterEncoding=utf8";
     private static final String user="feng";
     private static final String passWord="1001001";  
 //对数据库进行查找
 public void insertDatabase(String sql)
 {
  columNames = new Vector();  //表的字段名称
  rowDate = new Vector();    //表的数据
  
  columNames.add("学号");
  columNames.add("名字");
  columNames.add("性别");
  columNames.add("年龄");
  columNames.add("籍贯");
  columNames.add("系别");
  
  try
  {
   //加载jdbc驱动
   Class.forName(driver);
   //连接数据源
   con = DriverManager.getConnection(url,user,passWord);
   //执行sql
   ps = con.prepareStatement(sql);
   rs = ps.executeQuery();
   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.getString(4));
    row.add(rs.getString(5));
    row.add(rs.getString(6));
    
    rowDate.add(row);  //将学生的一条记录(row)添加到rowDate中
   }  
  }
  catch(ClassNotFoundException e)
  {
   e.printStackTrace();
  }
  catch(SQLException e)
  {
   e.printStackTrace();
  }
  finally
  {
   //关闭数据库资源
   try
   {
    if(null != rs)
    {
     rs.close();
    }
    if(null != ps)
    {
     ps.close();
    }
    if(null != con)
    {
     con.close();
    }
   }
   catch(SQLException e)
   {
    e.printStackTrace();
   }
  }
 }
 
 
 @Override
 //返回列数
 public int getColumnCount() {
  // TODO Auto-generated method stub
  return this.columNames.size();
 }
 @Override
  //返回表的行数
 public int getRowCount() {
  // TODO Auto-generated method stub
  return this.rowDate.size();
 }
 @Override
 //得到某行某列的数据
 public Object getValueAt(int rowIndex, int columnIndex) {
  // TODO Auto-generated method stub
  return ((Vector)this.rowDate.get(rowIndex)).get(columnIndex);
 }
 //设置表的字段名
    public String getColumnName(int column)
    {
     return (String)this.columNames.get(column);
    }
}
================================================================================
package model_1;
//model1模式开发:
//StuMange文件源代码:
import java.util.*;
import java.sql.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
public class StuMange extends JFrame implements ActionListener {
 //定义用户界面用到的组件
 JLabel userName = null; //要查询的学生的名字
 JTextField textField = null; //用户输入的文本框
 JButton select = null;    //查询按钮
 JButton insert = null;    //添加按钮
 JButton update = null;    //修改按钮
 JButton delete  = null;  //删除按钮
 JTable table = null;      //用于显示数据库调出的数据的表
 Panel panel1 = null;    
 Panel panel2 = null;
 Panel panel3 = null;
 
 JScrollPane jscrollPane = null;
 
 StModel stModel = null;  //st表的模型
 private Object PreparedStatement;
 
 public static void main(String[] args) {
  StuMange window = new StuMange();
 }
 public StuMange()
 {
  //窗口显示的上部的组件
  userName = new JLabel("学生名:");
  textField = new JTextField(10);   //用户输入文本框限定为最多输入10个字符
  select = new JButton("查询");   //查询按钮
  //添加到第一个面板中
  panel1 = new Panel();
  panel1.add(userName);
  panel1.add(textField);
  panel1.add(select);
  
  //窗口下部的组件
  insert = new JButton("添加");
     delete = new JButton("删除");
     update = new JButton("修改");
     //添加到第三个个面板中
     panel3 = new Panel();
     panel3.add(insert);
     panel3.add(delete);
     panel3.add(update);
    
     //窗口中部的组件
       stModel = new StModel();
       stModel.insertDatabase("select * from st");
      table = new JTable(stModel);
      jscrollPane = new JScrollPane(table);
     
      //注册事件监听
      select.addActionListener(this);
      insert.addActionListener(this);
      update.addActionListener(this);
      delete.addActionListener(this);
     
    
   //将各个组件添加到窗体中
     this.add(panel1, BorderLayout.NORTH);
     this.add(jscrollPane, BorderLayout.CENTER);
     this.add(panel3, BorderLayout.SOUTH);
    
     //设置窗体属性
     this.setSize(400, 300);  //设置窗口大小
     this.setLocation(200, 200); //设置窗口显示的位置
     this.setTitle("mini学生信息管理系统");  //设置窗口标题
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //设置窗口关闭之后其后台程序同时关闭
     //this.setResizable(false); //设置窗口不可拉伸
     //设置窗口为可见
     this.setVisible(true);
    
 }
 
 public void actionPerformed(ActionEvent e)
 {
  //用户点击了查找按钮
  if(e.getSource() == select)
  {
   String paras = textField.getText().trim();
   stModel = new StModel();
   stModel.insertDatabase("select * from st where stNname='" paras "'");
   table.setModel(stModel);
  } 
  //用户点击了添加按钮
     else if(e.getSource() == insert)
  {
   InsertStudent insertStudent = new InsertStudent(this, "添加学生", true);
   
   //刷新窗口表的数据
   stModel = new StModel();
   stModel.insertDatabase("select * from st");
   table.setModel(stModel);
  }
  //用户点击了修改按钮
     else if(e.getSource() == update)
     {
      int row = this.table.getSelectedRow();  //用户选择的行数
      if(-1 == row) //如果用户没有选中行
      {
       JOptionPane.showMessageDialog(this, "请选择一行");
      }
      else
      {
       UpdateDatabase updateDatabase = new UpdateDatabase(this, "修改学生", true, stModel, row);
       //刷新窗口表的数据
       stModel =new StModel();
       stModel.insertDatabase("select * from st");
       table.setModel(stModel);
      }
     } 
  //用户点击了删除按钮
     else if(e.getSource() == delete)
     {
      //数据库
      Connection con = null;
      PreparedStatement ps = null;
     private static final String driver="org.gjt.mm.mysql.Driver";
     private static final String url="jdbc:mysql://localhost:3306/st?characterEncoding=utf8";
     private static final String user="feng";
     private static final String passWord="1001001";  
      
      int row = this.table.getSelectedRow();  //用户选择的行
      if(-1 == row)   //用户没有选中行
      {
       JOptionPane.showMessageDialog(this, "请选择一行");
      }
      else
      {
       try
       {
        //加载jdbc驱动
     Class.forName(driver);
     //连接数据源
     con = DriverManager.getConnection(url, user, passWord);
     //执行sql
     String sql = "delete from st where stId=?";
     String id = (String)(stModel.getValueAt(row, 0));  //获得用户选择的行的学生的学号
     ps = con.prepareStatement(sql);
     ps.setString(1, id);
     ps.executeUpdate();
     
     //刷新窗口
     stModel = new StModel();
     stModel.insertDatabase("select * from st");
     table.setModel(stModel);
     
       }
       catch(ClassNotFoundException e1)
       {
        e1.printStackTrace();
       }
       catch(SQLException e1)
       {
        e1.printStackTrace();
       }
       finally
       {
        //关闭资源
        try
        {
         if(null != ps)
         {
          ps.close();
         }
         if(null != con)
         {
          con.close();
         }
        }
        catch(SQLException e1)
        {
         e1.printStackTrace();
        }
       }
       
      }
     }
 }
}
================================================================================
package model_1;
//UpdateDatabase文件源代码
import java.sql.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.table.*;
import javax.swing.event.*;
public class UpdateDatabase extends JDialog implements ActionListener{
 JLabel id,name,***,age,address,dep;  //分别为学生的学号,学生的姓名,学生的性别,学生的年龄,学生的籍贯,学生的系别的标签
 JTextField jtf1, jtf2, jtf3, jtf4,jtf5, jtf6; //分别为学生的学号,姓名,性别,年龄,籍贯,系列的输入文本框
 JButton update,canel;  //分别为修改和取消按钮
 Panel panel1 ,panel2, panel3;
 
 public UpdateDatabase(Frame own, String title, boolean model, StModel stModel, int row)
 {
  super(own, title, model); //实现与父类窗口对话
  
  //窗体西部的组件
  id = new JLabel("学号");
  name = new JLabel("名字");
  *** = new JLabel("性别");
  age = new JLabel("年龄");
  address = new JLabel("地址");
  dep = new JLabel("系别");
  //添加到panel1中
  panel1 = new Panel(new GridLayout(6, 1));
  panel1.add(id);
  panel1.add(name);
  panel1.add(***);
  panel1.add(age);
  panel1.add(address);
  panel1.add(dep);
  
  //添加到窗体的东部的组件
  jtf1 = new JTextField(10);
  jtf1.setText((String)(stModel.getValueAt(row, 0)));
  jtf1.setEditable(false);//设置学号不可修改
  jtf2 = new JTextField(10);
  jtf2.setText((String)(stModel.getValueAt(row, 1)));
  jtf3 = new JTextField(10);
  jtf3.setText((String)(stModel.getValueAt(row, 2)));
  jtf4 = new JTextField(10);
  jtf4.setText((String)(stModel.getValueAt(row, 3)));
  jtf5 = new JTextField(10);
  jtf5.setText((String)(stModel.getValueAt(row, 4)));
  jtf6 = new JTextField(10);
  jtf6.setText((String)(stModel.getValueAt(row, 5)));
  //添加到第二个面板中
  panel2 = new Panel(new GridLayout(6, 1));
  panel2.add(jtf1);
  panel2.add(jtf2);
  panel2.add(jtf3);
  panel2.add(jtf4);
  panel2.add(jtf5);
  panel2.add(jtf6);
  
  //窗体南部的组件
  update = new JButton("修改");
  canel = new JButton("取消");
  panel3 = new Panel();
  panel3.add(update);
  panel3.add(canel);
  
  //注册事件监听
  update.addActionListener(this);
  canel.addActionListener(this);
  
  //添加组件到窗体中
  this.add(panel1, BorderLayout.WEST);
  this.add(panel2, BorderLayout.CENTER);
  this.add(panel3, BorderLayout.SOUTH);
  //设置窗体属性
  this.setSize(300, 200);
  //设置窗体为可见
  this.setVisible(true);
 }
 
 //响应用户操作
 public void actionPerformed(ActionEvent e)
 {
  //数据库
  Connection con = null;
  PreparedStatement ps = null;
  String driver="org.gjt.mm.mysql.Driver";
  String url="jdbc:mysql://localhost:3306/my_ddb?characterEncoding=utf8";
  String user="feng";
  String passWord="1001001";
  boolean result = true;   //记录修改学生是否成功
  
  if(e.getSource() == update)
  {
   try
   {
    //加载jdbc驱动
    Class.forName(driver);
    //连接数据源
    con = DriverManager.getConnection(url,user,passWord);
    //执行sql
    String sql = "update st set stNname=?, st***=?,stAge=?,stBorn=?,stDept=? where stId=? ";
    ps = con.prepareStatement(sql);
    //修改学生数据
    ps.setString(1, jtf2.getText());
    ps.setString(2, jtf3.getText());
    ps.setString(3, jtf4.getText());
    ps.setString(4, jtf5.getText());
    ps.setString(5, jtf6.getText());
    ps.setString(6, jtf1.getText());
    
    ps.executeUpdate();
    //关闭对话框
    this.dispose();
   }
   catch(ClassNotFoundException e1)
   {
    result = false;
    e1.printStackTrace();
   }
   catch(SQLException e1)
   {
    result = false;
    e1.printStackTrace();
   }
   finally
   {
    //关闭资源
    try
    {
     if(null != ps)
     {
      ps.close();
     }
     if(null != con)
     {
      con.close();
     }
    }
    catch(SQLException e1)
    {
     e1.printStackTrace();
    }
    if(false == result)
    {
     JOptionPane.showMessageDialog(this, "失败信息:学号不能重复,性别只能为'男'或者'女',年龄大于0");
    }
    
   }
  }
  else if(e.getSource() == canel)
  {
   this.dispose();//关闭对话框
  }
 }
}
================================================================================
#方法2
================================================================================
package model_2;
//AddStu文件源代码:

import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
import javax.swing.event.*;
public class AddStu extends JDialog implements ActionListener {
 private JLabel id, name, ***, age, address, dep;  //分别代表学生的学号,名字,性别,年龄,籍贯,系别
 private JTextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6; //用户输入的文本框,分别为学生的学号,名字,性别,年龄,籍贯,系别
 private JButton add, canel;  //分别为添加按钮和取消按钮
 private Panel panel1, panel2, panel3;
 
 public AddStu(Frame owner, String title, boolean model)
 {
  super(owner, title, model);  //实现与父类窗口对话
  System.out.println("我执行了");
  
  //窗体的西部的组件
  id = new JLabel("学号:");
  name = new JLabel("姓名:");
  *** = new JLabel("性别");
  age = new JLabel("年龄");
  address = new JLabel("籍贯");
  dep = new JLabel("系别:");
  //添加到panel1面板中
  panel1 = new Panel(new GridLayout(6, 1));
  panel1.add(id);
  panel1.add(name);
  panel1.add(***);
  panel1.add(age);
  panel1.add(address);
  panel1.add(dep);
  
  //窗体的东部组件
  jtf1 = new JTextField(10);
  jtf2 = new JTextField(10);
  jtf3 = new JTextField(10);
  jtf4 = new JTextField(10);
  jtf5 = new JTextField(10);
  jtf6 = new JTextField(10);
  //添加到第二个面板中
  panel2 = new Panel(new GridLayout(6, 1));
  panel2.add(jtf1);
  panel2.add(jtf2);
  panel2.add(jtf3);
  panel2.add(jtf4);
  panel2.add(jtf5);
  panel2.add(jtf6);
  
  //窗体北部的控件
  add = new JButton("添加");
  canel = new JButton("取消");
  
  //注册事件监听
  add.addActionListener(this);
  canel.addActionListener(this);
  
  //添加到panel3面板中
  panel3 = new Panel();
  panel3.add(add);
  panel3.add(canel);
  
  //将各个组件添加到窗体中
  this.add(panel1, BorderLayout.WEST);
  this.add(panel2, BorderLayout.CENTER);
  this.add(panel3, BorderLayout.SOUTH);
  
  //设置对话框属性
  this.setSize(300, 200);
  //设置对话框为可见
  this.setVisible(true);
 }
 //响应用户的操作
 public void actionPerformed(ActionEvent e)
 {
  //用户点击了添加按钮
  if(e.getSource() == add)
  {
   String sql = "insert into st values(?,?,?,?,?,?)";
   String[]paras = {jtf1.getText(),jtf2.getText(),jtf3.getText(),jtf4.getText(),jtf5.getText(),jtf6.getText()};
   
   //建立st表的数据模型
   StuModel stuModel = new StuModel();
         if(!stuModel.updateDatebase(sql, paras))
         {
          JOptionPane.showMessageDialog(this, "失败信息:学号不能重复,性别只能为'男'或者'女',年龄大于0");
         }
         else
         {
          //关闭对话框
          this.dispose();
         }
  }
  else if(e.getSource() == canel)
  {
      //关闭对话框
         this.dispose();
  }
 }
}
================================================================================
package model_2;
//SqlHelper 文件源代码:
import java.sql.*;
//后台数据库的类
public final class SqlHelper {
 //数据库
 Connection con = null;  
 PreparedStatement ps = null;
 ResultSet rs = null;
    private static final String driver="org.gjt.mm.mysql.Driver";
     private static final String url="jdbc:mysql://localhost:3306/my_ddb?characterEncoding=utf8";
     private static final String user="feng";
     private static final String password="1001001"; 
 //用户对数据库进行数据查询
 public ResultSet queryDatabase(String sql, String paras)
 {
  try
  {
   //加载jdbc驱动
   Class.forName(driver);
   //连接数据源
   con = DriverManager.getConnection(url, user, password);
   //执行sql
   ps = con.prepareStatement(sql);
   if(null != paras)
   {
    ps.setString(1, paras);
   }
   rs = ps.executeQuery();
   
  }
  catch(ClassNotFoundException e)
  {
   e.printStackTrace();
  }
  catch(SQLException e)
  {
   e.printStackTrace();
  }
  return rs;
 }
 
 //用户对数据库进行增删改的操作
 public boolean updateDatabase(String sql, String[] paras)
 {
  boolean result = true;  //记录对数据库的操作是否成功
  
  try
  {
   //加载jdbc驱动
   Class.forName(driver);
   //连接数据源
   con = DriverManager.getConnection(url, user, password);
   //执行sql
   ps = con.prepareStatement(sql);
      for(int i = 0; i < paras.length; i )
      {
       ps.setString(i 1, paras[i]);
      }
      ps.executeUpdate();
  }
  catch(ClassNotFoundException e)
  {
   result = false;
   e.printStackTrace();
  }
  catch(SQLException e)
  {
   result = false;
   e.printStackTrace();
  }
  finally
  {
   //关闭资源
    this.close();
  }
  return result; 
 }
 
 public void close()
 {
  //关闭资源
  try
  {
   if(null != ps)
   {
    ps.close();
   }
   if(null != con)
   {
    con.close();
   }
  }
  catch(SQLException e)
  {
   e.printStackTrace();
  }
 }
}
================================================================================
package model_2;
//model2模式开发:
//StuMange文件源代码:

import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
import javax.swing.event.*;
public class StuMange extends JFrame implements ActionListener {
 JLabel userName;  //学生名
 JTextField textField ;  //用户输入学生名字的文本框
 JButton select, insert, update, delete; //分别代表查询,添加修改,删除的按钮
 JTable table;  //用于显示数据的表
 
 Panel panel1, panel2;
 JScrollPane jscrollPane;
 
 StuModel stuModel = null; //st表的模型
 
 public static void main(String[] args) {
  StuMange stuMange = new StuMange();
 }
 
 //构造方法
 public StuMange()
 {
  //窗体上部的组件
  userName = new JLabel("学生名:");
  textField = new JTextField(10);
  select = new JButton("查询");
  panel1 = new Panel();
  //将组件添加到panel1面板中
  panel1.add(userName);
  panel1.add(textField);
  panel1.add(select);
  
  //窗体的中部组件
  stuModel = new StuModel();
      stuModel.queryDate("select * from st", null);
  table = new JTable(stuModel);
  jscrollPane = new JScrollPane(table);
  
  //船体的下部组件
  insert = new JButton("添加");
  update = new JButton("修改");
  delete = new JButton("删除");
  panel2 = new Panel();
  //将组件添加到panel2面板中
  panel2.add(insert);
  panel2.add(update);
  panel2.add(delete);
  
  //设置事件监听
  select.addActionListener(this);
  insert.addActionListener(this);
  update.addActionListener(this);
  delete.addActionListener(this);
  
  //将各个组件添加到窗体中
  this.add(panel1, BorderLayout.NORTH);
  this.add(jscrollPane, BorderLayout.CENTER);
  this.add(panel2, BorderLayout.SOUTH);
  
  //设置窗体属性
  this.setSize(400, 300);
  this.setLocation(200, 200);
  this.setTitle("mini学生信息管理系统");
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  //设置窗体为可见
  this.setVisible(true);
  
 }
 //响应用户的按键操作
 public void actionPerformed(ActionEvent e)
 {
  //用户点击了查询按钮
  if(e.getSource() == select)
  {
   String name = textField.getText().trim();
   String sql = "select * from st where stNname=?";
   stuModel = new StuModel();
   stuModel.queryDate(sql, name);
   
   //刷新窗口
   table.setModel(stuModel);
  }
  //用户点击了添加按钮
  else if(e.getSource() == insert)
  {
   AddStu  addStu = new AddStu (this, "添加学生", true);
   
   //刷新窗口
   stuModel = new StuModel();
   stuModel.queryDate("select * from st", null);
   table.setModel(stuModel);
  }
  //用户点击了修改的按钮
  else if(e.getSource() == update)
  {
   int row = this.table.getSelectedRow();//获得用户选中的行
   if(-1  == row)
   {
    JOptionPane.showMessageDialog(this, "请选择行");
   }
   else
   {
    UpdateStu updateStu = new UpdateStu(this, "修改学生", true, stuModel, row);
    
    //刷新窗口
    StuModel stModel = new StuModel();
    stModel.queryDate("select * from st", null);
    table.setModel(stModel);
   } 
  }
  //用户点击了删除按钮
  else if(e.getSource() == delete)
  {
   int row = this.table.getSelectedRow(); //获得用户选中的行
   String id = (String)stuModel.getValueAt(row, 0);
   String sql = "delete from st where stId=?";
   String[]paras = {id};
   stuModel.updateDatebase(sql, paras);
   
   //刷新窗口
   StuModel stuModel = new StuModel();
   stuModel.queryDate("select * from st", null);
   table.setModel(stuModel);
  }
  
 }
}
================================================================================
package model_2;
//StuModel文件源代码:
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import javax.swing.table.*;
import java.sql.*;
public class StuModel extends AbstractTableModel {
 Vector rowDate = null;  //记录表的记录
 Vector columnNames = null; //记录表的字段名
 SqlHelper sqlHelper = null;
 ResultSet rs = null;
 
 //用户对数据库进行查询的操作
 public void queryDate(String sql, String paras)
 {
  columnNames = new Vector();
  columnNames.add("学号");
  columnNames.add("名字");
  columnNames.add("性别");
  columnNames.add("年龄");
  columnNames.add("籍贯");
  columnNames.add("系别");
  
  rowDate = new Vector();
  sqlHelper = new SqlHelper();
  rs = sqlHelper.queryDatabase(sql, paras);
  try {
   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.getString(4));
    row.add(rs.getString(5));
    row.add(rs.getString(6));
    
    rowDate.add(row);  //将row添加到rowDate中。实现了读取数据库的记录
   }
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  finally
  {
   //关闭资源
   if(null != rs)
   {
    try {
     rs.close();
    } catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
   sqlHelper.close();
  }
 }
 
 //用户对数据库进行增删查的操作
 public boolean updateDatebase(String sql, String[] paras)
 {
  SqlHelper sqlHelper = new SqlHelper();
  return sqlHelper.updateDatabase(sql, paras);
 }
 @Override
 //返回表的列数
 public int getColumnCount() {
  // TODO Auto-generated method stub
  return this.columnNames.size();
 }
 @Override
 //返回表的行数
 public int getRowCount() {
  // TODO Auto-generated method stub
  return this.rowDate.size();
 }
 @Override
 //返回某行某列
 public Object getValueAt(int rowIndex, int columnIndex) {
  // TODO Auto-generated method stub
  return ((Vector)this.rowDate.get(rowIndex)).get(columnIndex);
 }
 
 //设置表的字段名
 public String getColumnName(int column)
 {
  return (String)this.columnNames.get(column);
 }
}
================================================================================
package model_2;
//UpdateStu文件源代码:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
import javax.swing.event.*;
public class UpdateStu extends JDialog implements ActionListener{
    JLabel id,name,***,age,address,dep;  //分别为学生的学号,学生的姓名,学生的性别,学生的年龄,学生的籍贯,学生的系别的标签
 JTextField jtf1, jtf2, jtf3, jtf4,jtf5, jtf6; //分别为学生的学号,姓名,性别,年龄,籍贯,系列的输入文本框
 JButton update,canel;  //分别为修改和取消按钮
 Panel panel1 ,panel2, panel3;
 
 public UpdateStu(Frame owner, String title, boolean model, StuModel stModel, int row)
 {
  super(owner, title, model);
  
  //窗体西部的组件
  id = new JLabel("学号");
  name = new JLabel("名字");
  *** = new JLabel("性别");
  age = new JLabel("年龄");
  address = new JLabel("地址");
  dep = new JLabel("系别");
  //添加到panel1中
  panel1 = new Panel(new GridLayout(6, 1));
  panel1.add(id);
  panel1.add(name);
  panel1.add(***);
  panel1.add(age);
  panel1.add(address);
  panel1.add(dep);
  
  //添加到窗体的东部的组件
  jtf1 = new JTextField(10);
  jtf1.setText((String)(stModel.getValueAt(row, 0)));
  jtf1.setEditable(false);//设置学号不可修改
  jtf2 = new JTextField(10);
  jtf2.setText((String)(stModel.getValueAt(row, 1)));
  jtf3 = new JTextField(10);
  jtf3.setText((String)(stModel.getValueAt(row, 2)));
  jtf4 = new JTextField(10);
  jtf4.setText((String)(stModel.getValueAt(row, 3)));
  jtf5 = new JTextField(10);
  jtf5.setText((String)(stModel.getValueAt(row, 4)));
  jtf6 = new JTextField(10);
  jtf6.setText((String)(stModel.getValueAt(row, 5)));
  //添加到第二个面板中
  panel2 = new Panel(new GridLayout(6, 1));
  panel2.add(jtf1);
  panel2.add(jtf2);
  panel2.add(jtf3);
  panel2.add(jtf4);
  panel2.add(jtf5);
  panel2.add(jtf6);
  
  //窗体南部的组件
  update = new JButton("修改");
  canel = new JButton("取消");
  panel3 = new Panel();
  panel3.add(update);
  panel3.add(canel);
  
  //注册事件监听
  update.addActionListener(this);
  canel.addActionListener(this);
  
  //添加组件到窗体中
  this.add(panel1, BorderLayout.WEST);
  this.add(panel2, BorderLayout.CENTER);
  this.add(panel3, BorderLayout.SOUTH);
  //设置窗体属性
  this.setSize(300, 200);
  //设置窗体为可见
  this.setVisible(true);
 }
 
 //响应用户操作
 public void actionPerformed(ActionEvent e)
 {
  if(e.getSource() == update)
  {
   String sql = "update st set stNname=?, st***=?,stAge=?,stBorn=?,stDept=? where stId=?";
   String[] paras = {jtf2.getText(),jtf3.getText(),jtf4.getText(),jtf5.getText(),jtf6.getText(),jtf1.getText()};
      //建立st表的模型
   StuModel stuModel = new StuModel();
   if(!stuModel.updateDatebase(sql, paras))
   {
    JOptionPane.showMessageDialog(this, "失败信息:学号不能重复,性别只能为'男'或者'女',年龄大于0");
   }
     else
          {
           //关闭对话框
           this.dispose();
          }
  }
  else if(e.getSource() == canel)
  {
      //关闭对话框
         this.dispose();
  }
 }
}
================================================================================
并修改。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JAVA文件加密器(收藏)
(总结)Swing组件的使用
数据插入null值时注意
Oracle如何和android Sqlite数据转换
宾馆客房管理系统的设计与实现
关于c#动态添加文本框及下拉框
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服