学生管理系统
目录
视频1
1.先建立GUI界面
视频二
1.executeQuery();
2.java将文本写入文件
3.java从文本读取数据
4.java获取键盘值的方法
5.java如何将String转为int
6.java中获取gui界面文本框内容
7.append();
8.java在主函数中调用函数的方法
9.getText().trim()的作用
10.setModel();立即显示效果的时候
11.主函数代码
12.newxsxx.java学生信息类代码——查询功能
视频三.实现添加功能
1.JDialog对话框
2.this.dispose();/关闭当前窗口
3.主函数tianjia按钮的监听器新增内容
4.newtianjia.java 添加类代码
视频四.实现删除功能(直接在主函数中增添代码)
1.获取页面中选的行和和的内容
2.gui弹出对话框
3.调用数据库时命令的设置
4.主函数——删除功能代码
视频五.修改功能
1.getValueAt(hang,lie);//获取数值
2.tf1.setEditable(false);//不可更改
3.数据库语句
4.主函数修改的监听器代码
5.修改功能的类的代码
六.总代码
1.学生信息.java=newxsxx.java
2.添加.java=newtianjia.java
3.修改.java=newxiugai.java
4.主函数.java=newa.java
视频一.先建立GUI界面,将数据库中的信息获取在GUI页面中,并以表格方式呈现。(调用数据库需要添加mysql的jar包)
1 package stumana; 2 3 import java.awt.*; 4 import java.sql.*; 5 import java.util.*; 6 7 import javax.swing.*; 8 9 public class newa extends JFrame{ 10 11 JPanel jp1,jp2; 12 JLabel jlb1; 13 JTextField jtf1; 14 JButton jb1,jb2,jb3,jb4; 15 JTable jt1; 16 JScrollPane jsp1; 17 18 //Vector集合类 字段(横着) 记录(竖着) 19 Vector ziduan,jilu; 20 21 //数据库所用到的连接 22 PreparedStatement ps=null; 23 Connection ct=null; 24 ResultSet rs=null; 25 26 public static void main(String[] args){ 27 xsglxt xs=new xsglxt(); 28 } 29 30 public newa(){ 31 this.setSize(500,500); 32 this.setLocation(100,100); 33 this.setLayout(new BorderLayout()); 34 //面板 35 jp1=new JPanel(); 36 jlb1=new JLabel("请输入姓名"); 37 jtf1=new JTextField(10); 38 jb1=new JButton("查询"); 39 jp1.add(jlb1);jp1.add(jtf1);jp1.add(jb1); 40 41 jp2=new JPanel(); 42 jb2=new JButton("添加"); 43 jb3=new JButton("修改"); 44 jb4=new JButton("删除"); 45 jp2.add(jb2);jp2.add(jb3);jp2.add(jb4); 46 47 ziduan=new Vector(); 48 ziduan.add("学号"); 49 ziduan.add("姓名"); 50 ziduan.add("性别"); 51 ziduan.add("年龄"); 52 ziduan.add("籍贯"); 53 ziduan.add("所在院系"); 54 55 jilu=new Vector();//记录必须从数据库里读 56 57 try{ 58 Class.forName("com.mysql.jdbc.Driver"); 59 ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","123456"); 60 ps=ct.prepareStatement("select * from xuesheng"); 61 rs=ps.executeQuery(); 62 /* 63 使用JDBC连接数据库需要四步,第一步加载驱动程序;第二步,连接数据库;第三步,访问数据库;第四步,执行查询;其中在第四步执行查询时,要用statement类的executeQuery()方法来下达select指令以查询数据库,executeQuery()方法会把数据库响应的查询结果存放在ResultSet类对象中供我们使用。即语句:String sql="select * from"+tableName; ResultSet rs=s.executeQuery(sql); 64 */ 65 while(rs.next()){ //把每个数据添加到行里 六个字段 66 Vector hang=new Vector(); 67 hang.add(rs.getString(1)); 68 hang.add(rs.getString(2)); 69 hang.add(rs.getString(3)); 70 hang.add(rs.getInt(4)); 71 hang.add(rs.getString(5)); 72 hang.add(rs.getString(6)); 73 jilu.add(hang); } 74 }catch(SQLException e){ 75 System.out.println("SQL is not exist!"); 76 e.printStackTrace(); 77 }catch(Exception e1){ 78 e1.printStackTrace(); 79 }finally{ 80 try{ 81 if(rs!=null){ 82 rs.close(); 83 } 84 if(ps!=null){ 85 ps.close(); 86 } 87 if(ct!=null){ 88 ct.close(); 89 } 90 }catch(Exception e){} 91 } 92 //JTable后面的括号里先是记录,后字段 93 jt1=new JTable(jilu,ziduan); 94 jsp1=new JScrollPane(jt1); 95 this.add(jsp1); 96 this.add(jp1,BorderLayout.NORTH); 97 this.add(jp2,BorderLayout.SOUTH); 98 this.setTitle("学生管理系统"); 99 //让它大小不能改变 100 this.setResizable(false); 101 this.setDefaultCloseOperation(xsglxt.EXIT_ON_CLOSE); 102 this.setVisible(true); 103 } 104 }
视频二.给按钮添加侦听器
1.executeQuery();
使用JDBC连接数据库需要四步,第一步加载驱动程序;第二步,连接数据库;第三步,访问数据库;第四步,执行查询;其中在第四步执行查询时,要用statement类的executeQuery()方法来下达select指令以查询数据库,executeQuery()方法会把数据库响应的查询结果存放在ResultSet类对象中供我们使用。
Class.forName("com.mysql.jdbc.Driver"); ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","123456"); ps=ct.prepareStatement("select * from xuesheng"); rs=ps.executeQuery();
2.java将文本写入文件
void getJtf() throws IOException{ String t; t=jtf1.getText(); //System.out.println(t); write(t,0,t.length()); } public void write(String str,int off,int len) throws IOException{ String path="F://mytext.txt"; FileOutputStream fs=new FileOutputStream(path); OutputStreamWriter opsw=new OutputStreamWriter(fs); opsw.write(str); opsw.close(); fs.close(); }
3.java从文本读取数据
public void readaa(String filepath) throws IOException{ InputStreamReader ir=new InputStreamReader(new FileInputStream(filepath)); BufferedReader ipsw=new BufferedReader(ir); String lineTxt = null; StringBuffer sb=new StringBuffer(); while((lineTxt = ipsw.readLine()) != null){ System.out.println(lineTxt); //lineTxt.append(lineTxt); sb.append(lineTxt); } System.out.println(sb+"readaa"); ir.close(); }
4.java获取键盘值的方法
程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!
Java没有提供这样的函数也不代表遇到这种情况我们就束手无策,请你看以下三种解决方法吧:
1)方法一:从控制台接收一个字符,然后将其打印出来
public static void main(String [] args) throws IOException{ System.out.print(“Enter a Char:”); char i = (char) System.in.read(); System.out.println(“your char is :”+i); } }
虽然此方式实现了从键盘获取输入的字符,但是System.out.read()只能针对一个字符的获取,同时,获取进来的变量的类型只能是char,当我们输入一个数字,希望得到的也是一个整型变量的时候,我们还得修改其中的变量类型,这样就显得比较麻烦。
2)方法二:从控制台接收一个字符串,然后将其打印出来。在这个题目中,我们需要用到BufferedReader类和InputStreamReader类
public static void main(String [] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = null; System.out.println(“Enter your value:”); str = br.readLine(); System.out.println(“your value is :”+str); }
这样我们就能获取我们输入的字符串。
3)方法三:这种方法我认为是最简单,最强大的,就是用Scanner类
public static void main(String [] args) { Scanner sc = new Scanner(System.in); System.out.println(“请输入你的姓名:”); String name = sc.nextLine(); System.out.println(“请输入你的年龄:”); int age = sc.nextInt(); System.out.println(“请输入你的工资:”); float salary = sc.nextFloat(); System.out.println(“你的信息如下:”); System.out.println(“姓名:”+name+“\n”+“年龄:”+age+“\n”+“工资:”+salary); }
这段代码已经表明,Scanner类不管是对于字符串还是整型数据或者float类型的变量,只需做一点小小的改变,就能够实现功能!无疑他是最强大的。
5.java如何将String转为int
在java中要将String类型转化为int类型时,需要使用Integer类中的parseInt()方法或者valueOf()方法进行转换。
例1:
String str = "123"; try { int a = Integer.parseInt(str); } catch (NumberFormatException e) { e.printStackTrace(); }
例2:
String str = "123"; try { int b = Integer.valueOf(str).intValue() } catch (NumberFormatException e) { e.printStackTrace(); }
在转换过程中需要注意,因为字符串中可能会出现非数字的情况,所以在转换的时候需要捕捉处理异常。
6.java中获取gui界面文本框内容
JTextField textField = new JTextField();//文本框 String s=textField.getText().toString();//获得文本框的内容
7.append()
//创建追加可变字符串 StringBuffer appendSB = new StringBuffer("abc"); appendSB.append("123"); appendSB.append('2'); appendSB.append(true); appendSB.append(" abc") .append("def") .append("****") .append(1221); System.out.println("appendSB:" + appendSB); //使用StringBuffer创建完全可视化的SQL语句 StringBuffer querySB = new StringBuffer(); querySB.append("SELECT studentid, NAME, gender, age, telephone, address, addedtime ") .append(" FROM student_info ") .append(" WHERE studentid=1 AND gender=1 ")
8.java在主函数中调用函数的方法
调用方法:先生成一个对象,用“对象.方法()”的方式调用。
调用说明:java中的main方法是静态的,用于程序的入口,在静态方法中无法调用非静态方法,只能调用静态方法。想调用静态方法的话就要先生成该类的一个对象,通过对象调用非静态方法。
调用举例:
public class A{ public static void main(String[] args){ A a = new A(); a.aaa(); } public void aaa(){} }
9.getText().trim()的作用
trim()的作用是:去掉字符串左右的空格
10.setModel();立即显示效果的时候
11.主函数代码
1 package stumana; 2 import java.awt.*; 3 import java.awt.event.ActionEvent; 4 import java.awt.event.ActionListener; 5 import java.io.IOException; 6 import java.sql.*; 7 import java.util.*; 8 import javax.swing.*; 9 public class newa extends JFrame implements ActionListener{ 10 11 JPanel jp1,jp2; 12 JLabel jlb1; 13 JTextField jtf1; 14 JButton jb1,jb2,jb3,jb4; 15 JTable jt1; 16 JScrollPane jsp1; 17 18 //Vector集合类 字段(横着) 记录(竖着) 19 Vector ziduan,jilu; 20 21 //数据库所用到的连接 22 PreparedStatement ps=null; 23 Connection ct=null; 24 ResultSet rs=null; 25 26 public static void main(String[] args){ 27 newa xs=new newa(); 28 } 29 30 public newa() { 31 this.setSize(500,500); 32 this.setLocation(100,100); 33 this.setLayout(new BorderLayout()); 34 //面板 35 jp1=new JPanel(); 36 jlb1=new JLabel("请输入姓名"); 37 jtf1=new JTextField(10); 38 jb1=new JButton("查询"); 39 jb1.addActionListener(this); 40 jb1.setActionCommand("chaxun"); 41 jp1.add(jlb1);jp1.add(jtf1);jp1.add(jb1); 42 43 jp2=new JPanel(); 44 jb2=new JButton("添加"); 45 jb2.addActionListener(this); 46 jb2.setActionCommand("tianjia");//Command的设置 47 jb3=new JButton("修改"); 48 jb3.addActionListener(this); 49 jb3.setActionCommand("xiugai"); 50 jb4=new JButton("删除"); 51 jb4.addActionListener(this); 52 jb4.setActionCommand("shanchu"); 53 jp2.add(jb2);jp2.add(jb3);jp2.add(jb4); 54 55 ziduan=new Vector(); 56 ziduan.add("学号"); 57 ziduan.add("姓名"); 58 ziduan.add("性别"); 59 ziduan.add("年龄"); 60 ziduan.add("籍贯"); 61 ziduan.add("所在院系"); 62 63 jilu=new Vector();//记录必须从数据库里读 64 65 try{ 66 Class.forName("com.mysql.jdbc.Driver"); 67 ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","123456"); 68 ps=ct.prepareStatement("select * from xuesheng"); 69 rs=ps.executeQuery(); 70 /* 71 使用JDBC连接数据库需要四步,第一步加载驱动程序;第二步,连接数据库;第三步,访问数据库;第四步,执行查询;其中在第四步执行查询时,要用statement类的executeQuery()方法来下达select指令以查询数据库,executeQuery()方法会把数据库响应的查询结果存放在ResultSet类对象中供我们使用。即语句:String sql="select * from"+tableName; ResultSet rs=s.executeQuery(sql); 72 */ 73 while(rs.next()){ //把每个数据添加到行里 六个字段 74 Vector hang=new Vector(); 75 hang.add(rs.getString(1)); 76 hang.add(rs.getString(2)); 77 hang.add(rs.getString(3)); 78 hang.add(rs.getInt(4)); 79 hang.add(rs.getString(5)); 80 hang.add(rs.getString(6)); 81 jilu.add(hang); } 82 }catch(SQLException e){ 83 System.out.println("SQL is not exist!"); 84 e.printStackTrace(); 85 }catch(Exception e1){ 86 e1.printStackTrace(); 87 }finally{ 88 try{ 89 if(rs!=null){ 90 rs.close(); 91 } 92 if(ps!=null){ 93 ps.close(); 94 } 95 if(ct!=null){ 96 ct.close(); 97 } 98 }catch(Exception e){} 99 } 100 //JTable后面的括号里先是记录,后字段 101 jt1=new JTable(jilu,ziduan); 102 jsp1=new JScrollPane(jt1); 103 this.add(jsp1); 104 this.add(jp1,BorderLayout.NORTH); 105 this.add(jp2,BorderLayout.SOUTH); 106 this.setTitle("学生管理系统"); 107 //让它大小不能改变 108 this.setResizable(false); 109 this.setDefaultCloseOperation(newa.EXIT_ON_CLOSE); 110 this.setVisible(true); 111 } 112 @Override 113 public void actionPerformed(ActionEvent e) { 114 // TODO Auto-generated method stub 115 if(e.getActionCommand().equals("chaxun")){ 116 String xingming=this.jtf1.getText().trim(); 117 String sql="select * from xuesheng where name='"+xingming+"'"; 118 newxsxx xsxx2=new newxsxx(sql); 119 jt1.setModel(xsxx2);//在表格中显示 120 System.out.println("aaa"); 121 }else if(e.getActionCommand().equals("tianjia")){ 122 System.out.println("bbb"); 123 }else if(e.getActionCommand().equals("xiugai")){ 124 System.out.println("ccc"); 125 }else if(e.getActionCommand().equals("shanchu")){ 126 System.out.println("ddd"); 127 } 128 } 129 }
12.newxsxx.java学生信息类代码——查询功能
1 package stumana; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 import java.util.Vector; 9 10 import javax.swing.table.AbstractTableModel; 11 12 public class newxsxx extends AbstractTableModel{ 13 Vector ziduan,jilu; 14 PreparedStatement ps=null; 15 Connection ct=null; 16 ResultSet rs=null; 17 @Override 18 public int getRowCount() { 19 // TODO Auto-generated method stub 20 return this.jilu.size(); 21 } 22 23 @Override 24 public int getColumnCount() { 25 // TODO Auto-generated method stub 26 return this.ziduan.size(); 27 } 28 29 @Override 30 public Object getValueAt(int rowIndex, int columnIndex) { 31 // TODO Auto-generated method stub 32 return ((Vector)this.jilu.get(rowIndex)).get(columnIndex); 33 } 34 35 public newxsxx(){//构造函数 36 this.sqlyj("select * from xuesheng"); 37 } 38 public newxsxx(String ss){ 39 this.sqlyj(ss); 40 } 41 public String getColumnName(int e){ 42 return (String)this.ziduan.get(e); 43 } 44 public void sqlyj(String sql){ 45 ziduan=new Vector(); 46 ziduan.add("学号"); 47 ziduan.add("姓名"); 48 ziduan.add("性别"); 49 ziduan.add("年龄"); 50 ziduan.add("籍贯"); 51 ziduan.add("所在院系"); 52 jilu=new Vector(); 53 //读取和查询都需要 54 try{ 55 Class.forName("com.mysql.jdbc.Driver"); 56 ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","123456"); 57 ps=ct.prepareStatement(sql); 58 rs=ps.executeQuery(); 59 while(rs.next()){ //把每个数据添加到行里 六个字段 60 Vector hang=new Vector(); 61 hang.add(rs.getString(1)); 62 hang.add(rs.getString(2)); 63 hang.add(rs.getString(3)); 64 hang.add(rs.getInt(4)); 65 hang.add(rs.getString(5)); 66 hang.add(rs.getString(6)); 67 jilu.add(hang); 68 } 69 }catch(SQLException e){ 70 System.out.println("SQL is not exist a!"); 71 e.printStackTrace(); 72 }catch(Exception e1){ 73 e1.printStackTrace(); 74 }finally{ 75 try{ 76 if(rs!=null){ 77 rs.close(); 78 } 79 if(ps!=null){ 80 ps.close(); 81 } 82 if(ct!=null){ 83 ct.close(); 84 } 85 }catch(Exception e){} 86 } 87 } 88 89 }
视频三.实现添加功能
1.JDialog对话框与JFrame框架有一些类似,但它一般是一个临时的窗口,主要用于显示提示信息或接受用户输入。所以,在对话框中一般不需要菜单条,也不需要改变窗口大小。此外,在对话框出现时,可以设定禁止其他窗口的输入,直到这个对话框被关闭。对话框是由 JDialog 类实现的,JDialog 类的构造方法有多种:
2.this.dispose();/关闭当前窗口
3.主函数tianjia按钮的监听器新增内容
1 newtianjia tj=new newtianjia(this,"添加学生信息",true); 2 3 //让它添加显示在页面 4 newxsxx xsxx2=new newxsxx(); 5 jt1.setModel(xsxx2);
4.newtianjia.java 添加类代码
1 package stumana; 2 3 import java.awt.BorderLayout; 4 import java.awt.Frame; 5 import java.awt.GridLayout; 6 import java.awt.event.ActionEvent; 7 import java.awt.event.ActionListener; 8 import java.sql.Connection; 9 import java.sql.DriverManager; 10 import java.sql.PreparedStatement; 11 import java.sql.ResultSet; 12 import java.sql.SQLException; 13 14 import javax.swing.JButton; 15 import javax.swing.JDialog; 16 import javax.swing.JLabel; 17 import javax.swing.JPanel; 18 import javax.swing.JTextField; 19 20 import com.mysql.jdbc.Statement; 21 22 //JDialog派生出窗口 23 public class newtianjia extends JDialog implements ActionListener{ 24 25 JLabel lb1,lb2,lb3,lb4,lb5,lb6; 26 JTextField tf1,tf2,tf3,tf4,tf5,tf6; 27 JButton b1,b2; 28 JPanel p1,p2,p3,p4; 29 30 public newtianjia(Frame fck,String ckm,Boolean msck){ 31 super(fck,ckm,msck); 32 lb1=new JLabel(" 学号 "); 33 lb2=new JLabel(" 姓名 "); 34 lb3=new JLabel(" 性别 "); 35 lb4=new JLabel(" 年龄 "); 36 lb5=new JLabel(" 籍贯 "); 37 lb6=new JLabel(" 院系 "); 38 39 tf1=new JTextField(5); 40 tf2=new JTextField(5); 41 tf3=new JTextField(5); 42 tf4=new JTextField(5); 43 tf5=new JTextField(5); 44 tf6=new JTextField(5); 45 46 b1=new JButton("添加"); 47 b1.addActionListener(this); 48 b1.setActionCommand("tianjia2"); 49 b2=new JButton("取消"); 50 b2.addActionListener(this); 51 b2.setActionCommand("quxiao"); 52 53 p1=new JPanel(); 54 p2=new JPanel(); 55 p3=new JPanel(); 56 p4=new JPanel(); 57 58 p1.setLayout(new GridLayout(6,1)); 59 p2.setLayout(new GridLayout(6,1)); 60 61 p1.add(lb1);p1.add(lb2);p1.add(lb3); 62 p1.add(lb4);p1.add(lb5);p1.add(lb6); 63 64 p2.add(tf1);p2.add(tf2);p2.add(tf3); 65 p2.add(tf4);p2.add(tf5);p2.add(tf6); 66 67 p3.add(b1);p3.add(b2); 68 69 this.add(p1,BorderLayout.WEST); 70 this.add(p2); 71 this.add(p3,BorderLayout.SOUTH); 72 this.add(p4,BorderLayout.EAST); 73 74 this.setSize(370,270); 75 this.setLocation(250,250); 76 this.setResizable(false); 77 this.setVisible(true); 78 79 } 80 81 @Override 82 public void actionPerformed(ActionEvent e) { 83 // TODO Auto-generated method stub 84 if(e.getActionCommand().equals("tianjia2")){ 85 PreparedStatement ps=null; 86 Connection ct=null; 87 ResultSet rs=null; 88 Statement sm=null; 89 try{ 90 Class.forName("com.mysql.jdbc.Driver"); 91 ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","123456"); 92 String ss=("insert into xuesheng values(?,?,?,?,?,?)"); 93 ps=ct.prepareStatement(ss); 94 ps.setString(1, tf1.getText()); 95 ps.setString(2, tf2.getText()); 96 ps.setString(3, tf3.getText()); 97 ps.setString(4, tf4.getText()); 98 ps.setString(5, tf5.getText()); 99 ps.setString(6, tf6.getText()); 100 ps.executeUpdate(); 101 this.dispose(); 102 103 }catch(SQLException e5){ 104 System.out.println("SQL is not exist!"); 105 e5.printStackTrace(); 106 }catch(Exception e1){ 107 e1.printStackTrace(); 108 }finally{ 109 try{ 110 if(rs!=null){ 111 rs.close(); 112 } 113 if(ps!=null){ 114 ps.close(); 115 } 116 if(ct!=null){ 117 ct.close(); 118 } 119 }catch(Exception e4){} 120 } 121 122 }else if(e.getActionCommand().equals("quxiao")){ 123 this.dispose();//关闭当前窗口 124 } 125 } 126 127 }
视频四.实现删除功能(直接在主函数中增添代码)
1.获取页面中选的行和和的内容
int li=this.jt1.getSelectedRow();//获取界面选中的行 String st=(String)xsxx2.getValueAt(li,0);//获取li行0列内容
2.gui弹出对话框
if(li==-1){ JOptionPane.showMessageDialog(this,"请选中要删除的行"); return;}
3.调用数据库时命令的设置
ps=ct.prepareStatement("delete from xuesheng where xuehao=?"); ps.setString(1,st);
4.主函数——删除功能代码
if(e.getActionCommand().equals("shanchu")){ int li=this.jt1.getSelectedRow();//获取界面选中的行 if(li==-1){ JOptionPane.showMessageDialog(this,"请选中要删除的行"); return; } xsxx2=new newxsxx(); String st=(String)xsxx2.getValueAt(li,0); try{ Class.forName("com.mysql.jdbc.Driver"); ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","123456"); ps=ct.prepareStatement("delete from xuesheng where xuehao=?"); ps.setString(1,st); ps.executeUpdate(); }catch(SQLException ee){ System.out.println("SQL is not exist!"); ee.printStackTrace(); }catch(Exception e1){ e1.printStackTrace(); }finally{ try{ if(rs!=null){ rs.close(); } if(ps!=null){ ps.close(); } if(ct!=null){ ct.close(); } }catch(Exception er){} } xsxx2=new newxsxx(); jt1.setModel(xsxx2); //System.out.println("ddd"); }
视频五.修改功能
1.getValueAt(hang,lie);//获取数值
2.tf1.setEditable(false);//不可更改
3.数据库语句
(update xuesheng set name=?,sex=?,age=?,jiguan=?,suozaiyuanxi=? where xuehao=?)
(insert into xuesheng values(?,?,?,?,?,?))
(delete from xuesheng where xuehao=?)
4.主函数修改的监听器代码
if(e.getActionCommand().equals("xiugai")){ int li=this.jt1.getSelectedRow();//获取界面选中的行 if(li==-1){ JOptionPane.showMessageDialog(this,"请选中要修改的行"); return; } new newxiugai(this,"修改学生信息",true,xsxx2,li); xsxx2=new newxsxx(); jt1.setModel(xsxx2); }
5.修改功能的类的代码
1 package stumana; 2 3 import java.awt.BorderLayout; 4 import java.awt.Frame; 5 import java.awt.GridLayout; 6 import java.awt.event.ActionEvent; 7 import java.awt.event.ActionListener; 8 import java.sql.Connection; 9 import java.sql.DriverManager; 10 import java.sql.PreparedStatement; 11 import java.sql.ResultSet; 12 import java.sql.SQLException; 13 14 import javax.swing.JButton; 15 import javax.swing.JDialog; 16 import javax.swing.JLabel; 17 import javax.swing.JOptionPane; 18 import javax.swing.JPanel; 19 import javax.swing.JTextField; 20 21 import com.mysql.jdbc.Statement; 22 23 public class newxiugai extends JDialog implements ActionListener{ 24 25 26 JLabel lb1,lb2,lb3,lb4,lb5,lb6; 27 JTextField tf1,tf2,tf3,tf4,tf5,tf6; 28 JButton b1,b2; 29 JPanel p1,p2,p3,p4; 30 31 public newxiugai(Frame fck,String ckm,Boolean msck,newxsxx xsxx2,int hang){ 32 super(fck,ckm,msck); 33 lb1=new JLabel(" 学号 "); 34 lb2=new JLabel(" 姓名 "); 35 lb3=new JLabel(" 性别 "); 36 lb4=new JLabel(" 年龄 "); 37 lb5=new JLabel(" 籍贯 "); 38 lb6=new JLabel(" 院系 "); 39 40 41 tf1=new JTextField(5); 42 tf1.setText((String)xsxx2.getValueAt(hang,0)); 43 tf1.setEditable(false); 44 tf2=new JTextField(5); 45 tf2.setText((String)xsxx2.getValueAt(hang,1)); 46 tf3=new JTextField(5); 47 tf3.setText((String)xsxx2.getValueAt(hang,2)); 48 tf4=new JTextField(5); 49 tf4.setText((String)xsxx2.getValueAt(hang,3).toString()); 50 tf5=new JTextField(5); 51 tf5.setText((String)xsxx2.getValueAt(hang,4)); 52 tf6=new JTextField(5); 53 tf6.setText((String)xsxx2.getValueAt(hang,5)); 54 55 b1=new JButton("修改"); 56 b1.addActionListener(this); 57 b1.setActionCommand("xiugai"); 58 b2=new JButton("取消"); 59 b2.addActionListener(this); 60 b2.setActionCommand("quxiao"); 61 62 p1=new JPanel(); 63 p2=new JPanel(); 64 p3=new JPanel(); 65 p4=new JPanel(); 66 67 p1.setLayout(new GridLayout(6,1)); 68 p2.setLayout(new GridLayout(6,1)); 69 70 p1.add(lb1);p1.add(lb2);p1.add(lb3); 71 p1.add(lb4);p1.add(lb5);p1.add(lb6); 72 73 p2.add(tf1);p2.add(tf2);p2.add(tf3); 74 p2.add(tf4);p2.add(tf5);p2.add(tf6); 75 76 p3.add(b1);p3.add(b2); 77 78 this.add(p1,BorderLayout.WEST); 79 this.add(p2); 80 this.add(p3,BorderLayout.SOUTH); 81 this.add(p4,BorderLayout.EAST); 82 83 this.setSize(370,270); 84 this.setLocation(250,250); 85 this.setResizable(false); 86 this.setVisible(true); 87 88 } 89 @Override 90 public void actionPerformed(ActionEvent e) { 91 // TODO Auto-generated method stub 92 if(e.getActionCommand().equals("xiugai")){ 93 PreparedStatement ps=null; 94 Connection ct=null; 95 ResultSet rs=null; 96 Statement sm=null; 97 try{ 98 Class.forName("com.mysql.jdbc.Driver"); 99 ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","123456"); 100 String ss=("update xuesheng set name=?,sex=?,age=?,jiguan=?,suozaiyuanxi=? where xuehao=?"); 101 ps=ct.prepareStatement(ss); 102 ps.setString(1, tf2.getText()); 103 ps.setString(2, tf3.getText()); 104 ps.setString(3, tf4.getText()); 105 ps.setString(4, tf5.getText()); 106 ps.setString(5, tf6.getText()); 107 ps.setString(6, tf1.getText()); 108 ps.executeUpdate(); 109 this.dispose(); 110 111 }catch(SQLException e5){ 112 System.out.println("SQL is not exist!"); 113 e5.printStackTrace(); 114 }catch(Exception e1){ 115 e1.printStackTrace(); 116 }finally{ 117 try{ 118 if(rs!=null){ 119 rs.close(); 120 } 121 if(ps!=null){ 122 ps.close(); 123 } 124 if(ct!=null){ 125 ct.close(); 126 } 127 }catch(Exception e4){} 128 } 129 130 }else if(e.getActionCommand().equals("quxiao")){ 131 this.dispose();//关闭当前窗口 132 } 133 } 134 135 }
六.总代码
1.学生信息.java=newxsxx.java
1 package stumana; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 import java.util.Vector; 9 10 import javax.swing.table.AbstractTableModel; 11 12 public class newxsxx extends AbstractTableModel{ 13 Vector ziduan,jilu; 14 PreparedStatement ps=null; 15 Connection ct=null; 16 ResultSet rs=null; 17 @Override 18 public int getRowCount() { 19 // TODO Auto-generated method stub 20 return this.jilu.size(); 21 } 22 23 @Override 24 public int getColumnCount() { 25 // TODO Auto-generated method stub 26 return this.ziduan.size(); 27 } 28 29 @Override 30 public Object getValueAt(int rowIndex, int columnIndex) { 31 // TODO Auto-generated method stub 32 return ((Vector)this.jilu.get(rowIndex)).get(columnIndex); 33 } 34 35 public newxsxx(){//构造函数 36 this.sqlyj("select * from xuesheng"); 37 } 38 public newxsxx(String ss){ 39 this.sqlyj(ss); 40 } 41 public String getColumnName(int e){ 42 return (String)this.ziduan.get(e); 43 } 44 public void sqlyj(String sql){ 45 ziduan=new Vector(); 46 ziduan.add("学号"); 47 ziduan.add("姓名"); 48 ziduan.add("性别"); 49 ziduan.add("年龄"); 50 ziduan.add("籍贯"); 51 ziduan.add("所在院系"); 52 jilu=new Vector(); 53 //读取和查询都需要 54 try{ 55 Class.forName("com.mysql.jdbc.Driver"); 56 ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","123456"); 57 ps=ct.prepareStatement(sql); 58 rs=ps.executeQuery(); 59 while(rs.next()){ //把每个数据添加到行里 六个字段 60 Vector hang=new Vector(); 61 hang.add(rs.getString(1)); 62 hang.add(rs.getString(2)); 63 hang.add(rs.getString(3)); 64 hang.add(rs.getInt(4)); 65 hang.add(rs.getString(5)); 66 hang.add(rs.getString(6)); 67 jilu.add(hang); 68 } 69 }catch(SQLException e){ 70 System.out.println("SQL is not exist a!"); 71 e.printStackTrace(); 72 }catch(Exception e1){ 73 e1.printStackTrace(); 74 }finally{ 75 try{ 76 if(rs!=null){ 77 rs.close(); 78 } 79 if(ps!=null){ 80 ps.close(); 81 } 82 if(ct!=null){ 83 ct.close(); 84 } 85 }catch(Exception e){} 86 } 87 } 88 89 }
2.添加.java=newtianjia.java
1 package stumana; 2 3 import java.awt.BorderLayout; 4 import java.awt.Frame; 5 import java.awt.GridLayout; 6 import java.awt.event.ActionEvent; 7 import java.awt.event.ActionListener; 8 import java.sql.Connection; 9 import java.sql.DriverManager; 10 import java.sql.PreparedStatement; 11 import java.sql.ResultSet; 12 import java.sql.SQLException; 13 14 import javax.swing.JButton; 15 import javax.swing.JDialog; 16 import javax.swing.JLabel; 17 import javax.swing.JPanel; 18 import javax.swing.JTextField; 19 20 import com.mysql.jdbc.Statement; 21 22 //JDialog派生出窗口 23 public class newtianjia extends JDialog implements ActionListener{ 24 25 JLabel lb1,lb2,lb3,lb4,lb5,lb6; 26 JTextField tf1,tf2,tf3,tf4,tf5,tf6; 27 JButton b1,b2; 28 JPanel p1,p2,p3,p4; 29 30 public newtianjia(Frame fck,String ckm,Boolean msck){ 31 super(fck,ckm,msck); 32 lb1=new JLabel(" 学号 "); 33 lb2=new JLabel(" 姓名 "); 34 lb3=new JLabel(" 性别 "); 35 lb4=new JLabel(" 年龄 "); 36 lb5=new JLabel(" 籍贯 "); 37 lb6=new JLabel(" 院系 "); 38 39 tf1=new JTextField(5); 40 tf2=new JTextField(5); 41 tf3=new JTextField(5); 42 tf4=new JTextField(5); 43 tf5=new JTextField(5); 44 tf6=new JTextField(5); 45 46 b1=new JButton("添加"); 47 b1.addActionListener(this); 48 b1.setActionCommand("tianjia2"); 49 b2=new JButton("取消"); 50 b2.addActionListener(this); 51 b2.setActionCommand("quxiao"); 52 53 p1=new JPanel(); 54 p2=new JPanel(); 55 p3=new JPanel(); 56 p4=new JPanel(); 57 58 p1.setLayout(new GridLayout(6,1)); 59 p2.setLayout(new GridLayout(6,1)); 60 61 p1.add(lb1);p1.add(lb2);p1.add(lb3); 62 p1.add(lb4);p1.add(lb5);p1.add(lb6); 63 64 p2.add(tf1);p2.add(tf2);p2.add(tf3); 65 p2.add(tf4);p2.add(tf5);p2.add(tf6); 66 67 p3.add(b1);p3.add(b2); 68 69 this.add(p1,BorderLayout.WEST); 70 this.add(p2); 71 this.add(p3,BorderLayout.SOUTH); 72 this.add(p4,BorderLayout.EAST); 73 74 this.setSize(370,270); 75 this.setLocation(250,250); 76 this.setResizable(false); 77 this.setVisible(true); 78 79 } 80 81 @Override 82 public void actionPerformed(ActionEvent e) { 83 // TODO Auto-generated method stub 84 if(e.getActionCommand().equals("tianjia2")){ 85 PreparedStatement ps=null; 86 Connection ct=null; 87 ResultSet rs=null; 88 Statement sm=null; 89 try{ 90 Class.forName("com.mysql.jdbc.Driver"); 91 ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","123456"); 92 String ss=("insert into xuesheng values(?,?,?,?,?,?)"); 93 ps=ct.prepareStatement(ss); 94 ps.setString(1, tf1.getText()); 95 ps.setString(2, tf2.getText()); 96 ps.setString(3, tf3.getText()); 97 ps.setString(4, tf4.getText()); 98 ps.setString(5, tf5.getText()); 99 ps.setString(6, tf6.getText()); 100 ps.executeUpdate(); 101 this.dispose(); 102 103 }catch(SQLException e5){ 104 System.out.println("SQL is not exist!"); 105 e5.printStackTrace(); 106 }catch(Exception e1){ 107 e1.printStackTrace(); 108 }finally{ 109 try{ 110 if(rs!=null){ 111 rs.close(); 112 } 113 if(ps!=null){ 114 ps.close(); 115 } 116 if(ct!=null){ 117 ct.close(); 118 } 119 }catch(Exception e4){} 120 } 121 122 }else if(e.getActionCommand().equals("quxiao")){ 123 this.dispose();//关闭当前窗口 124 } 125 } 126 127 }
3.修改.java=newxiugai.java
1 package stumana; 2 3 import java.awt.BorderLayout; 4 import java.awt.Frame; 5 import java.awt.GridLayout; 6 import java.awt.event.ActionEvent; 7 import java.awt.event.ActionListener; 8 import java.sql.Connection; 9 import java.sql.DriverManager; 10 import java.sql.PreparedStatement; 11 import java.sql.ResultSet; 12 import java.sql.SQLException; 13 14 import javax.swing.JButton; 15 import javax.swing.JDialog; 16 import javax.swing.JLabel; 17 import javax.swing.JOptionPane; 18 import javax.swing.JPanel; 19 import javax.swing.JTextField; 20 21 import com.mysql.jdbc.Statement; 22 23 public class newxiugai extends JDialog implements ActionListener{ 24 25 26 JLabel lb1,lb2,lb3,lb4,lb5,lb6; 27 JTextField tf1,tf2,tf3,tf4,tf5,tf6; 28 JButton b1,b2; 29 JPanel p1,p2,p3,p4; 30 31 public newxiugai(Frame fck,String ckm,Boolean msck,newxsxx xsxx2,int hang){ 32 super(fck,ckm,msck); 33 lb1=new JLabel(" 学号 "); 34 lb2=new JLabel(" 姓名 "); 35 lb3=new JLabel(" 性别 "); 36 lb4=new JLabel(" 年龄 "); 37 lb5=new JLabel(" 籍贯 "); 38 lb6=new JLabel(" 院系 "); 39 40 41 tf1=new JTextField(5); 42 tf1.setText((String)xsxx2.getValueAt(hang,0)); 43 tf1.setEditable(false); 44 tf2=new JTextField(5); 45 tf2.setText((String)xsxx2.getValueAt(hang,1)); 46 tf3=new JTextField(5); 47 tf3.setText((String)xsxx2.getValueAt(hang,2)); 48 tf4=new JTextField(5); 49 tf4.setText((String)xsxx2.getValueAt(hang,3).toString()); 50 tf5=new JTextField(5); 51 tf5.setText((String)xsxx2.getValueAt(hang,4)); 52 tf6=new JTextField(5); 53 tf6.setText((String)xsxx2.getValueAt(hang,5)); 54 55 b1=new JButton("修改"); 56 b1.addActionListener(this); 57 b1.setActionCommand("xiugai"); 58 b2=new JButton("取消"); 59 b2.addActionListener(this); 60 b2.setActionCommand("quxiao"); 61 62 p1=new JPanel(); 63 p2=new JPanel(); 64 p3=new JPanel(); 65 p4=new JPanel(); 66 67 p1.setLayout(new GridLayout(6,1)); 68 p2.setLayout(new GridLayout(6,1)); 69 70 p1.add(lb1);p1.add(lb2);p1.add(lb3); 71 p1.add(lb4);p1.add(lb5);p1.add(lb6); 72 73 p2.add(tf1);p2.add(tf2);p2.add(tf3); 74 p2.add(tf4);p2.add(tf5);p2.add(tf6); 75 76 p3.add(b1);p3.add(b2); 77 78 this.add(p1,BorderLayout.WEST); 79 this.add(p2); 80 this.add(p3,BorderLayout.SOUTH); 81 this.add(p4,BorderLayout.EAST); 82 83 this.setSize(370,270); 84 this.setLocation(250,250); 85 this.setResizable(false); 86 this.setVisible(true); 87 88 } 89 @Override 90 public void actionPerformed(ActionEvent e) { 91 // TODO Auto-generated method stub 92 if(e.getActionCommand().equals("xiugai")){ 93 PreparedStatement ps=null; 94 Connection ct=null; 95 ResultSet rs=null; 96 Statement sm=null; 97 try{ 98 Class.forName("com.mysql.jdbc.Driver"); 99 ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","123456"); 100 String ss=("update xuesheng set name=?,sex=?,age=?,jiguan=?,suozaiyuanxi=? where xuehao=?"); 101 ps=ct.prepareStatement(ss); 102 ps.setString(1, tf2.getText()); 103 ps.setString(2, tf3.getText()); 104 ps.setString(3, tf4.getText()); 105 ps.setString(4, tf5.getText()); 106 ps.setString(5, tf6.getText()); 107 ps.setString(6, tf1.getText()); 108 ps.executeUpdate(); 109 this.dispose(); 110 111 }catch(SQLException e5){ 112 System.out.println("SQL is not exist!"); 113 e5.printStackTrace(); 114 }catch(Exception e1){ 115 e1.printStackTrace(); 116 }finally{ 117 try{ 118 if(rs!=null){ 119 rs.close(); 120 } 121 if(ps!=null){ 122 ps.close(); 123 } 124 if(ct!=null){ 125 ct.close(); 126 } 127 }catch(Exception e4){} 128 } 129 130 }else if(e.getActionCommand().equals("quxiao")){ 131 this.dispose();//关闭当前窗口 132 } 133 } 134 135 }
4.主函数.java=newa.java
1 package stumana; 2 import java.awt.*; 3 import java.awt.event.ActionEvent; 4 import java.awt.event.ActionListener; 5 import java.io.IOException; 6 import java.sql.*; 7 import java.util.*; 8 import javax.swing.*; 9 public class newa extends JFrame implements ActionListener{ 10 11 JPanel jp1,jp2; 12 JLabel jlb1; 13 JTextField jtf1; 14 JButton jb1,jb2,jb3,jb4; 15 JTable jt1; 16 JScrollPane jsp1; 17 newxsxx xsxx2; 18 19 //Vector集合类 字段(横着) 记录(竖着) 20 Vector ziduan,jilu; 21 22 //数据库所用到的连接 23 PreparedStatement ps=null; 24 Connection ct=null; 25 ResultSet rs=null; 26 27 public static void main(String[] args){ 28 newa xs=new newa(); 29 } 30 31 public newa() { 32 this.setSize(500,500); 33 this.setLocation(100,100); 34 this.setLayout(new BorderLayout()); 35 //面板 36 jp1=new JPanel(); 37 jlb1=new JLabel("请输入姓名"); 38 jtf1=new JTextField(10); 39 jb1=new JButton("查询"); 40 jb1.addActionListener(this); 41 jb1.setActionCommand("chaxun"); 42 jp1.add(jlb1);jp1.add(jtf1);jp1.add(jb1); 43 44 jp2=new JPanel(); 45 jb2=new JButton("添加"); 46 jb2.addActionListener(this); 47 jb2.setActionCommand("tianjia");//Command的设置 48 jb3=new JButton("修改"); 49 jb3.addActionListener(this); 50 jb3.setActionCommand("xiugai"); 51 jb4=new JButton("删除"); 52 jb4.addActionListener(this); 53 jb4.setActionCommand("shanchu"); 54 jp2.add(jb2);jp2.add(jb3);jp2.add(jb4); 55 56 ziduan=new Vector(); 57 ziduan.add("学号"); 58 ziduan.add("姓名"); 59 ziduan.add("性别"); 60 ziduan.add("年龄"); 61 ziduan.add("籍贯"); 62 ziduan.add("所在院系"); 63 64 jilu=new Vector();//记录必须从数据库里读 65 66 try{ 67 Class.forName("com.mysql.jdbc.Driver"); 68 ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","123456"); 69 ps=ct.prepareStatement("select * from xuesheng"); 70 rs=ps.executeQuery(); 71 /* 72 使用JDBC连接数据库需要四步,第一步加载驱动程序;第二步,连接数据库;第三步,访问数据库;第四步,执行查询;其中在第四步执行查询时,要用statement类的executeQuery()方法来下达select指令以查询数据库,executeQuery()方法会把数据库响应的查询结果存放在ResultSet类对象中供我们使用。即语句:String sql="select * from"+tableName; ResultSet rs=s.executeQuery(sql); 73 */ 74 while(rs.next()){ //把每个数据添加到行里 六个字段 75 Vector hang=new Vector(); 76 hang.add(rs.getString(1)); 77 hang.add(rs.getString(2)); 78 hang.add(rs.getString(3)); 79 hang.add(rs.getInt(4)); 80 hang.add(rs.getString(5)); 81 hang.add(rs.getString(6)); 82 jilu.add(hang); } 83 }catch(SQLException e){ 84 System.out.println("SQL is not exist!"); 85 e.printStackTrace(); 86 }catch(Exception e1){ 87 e1.printStackTrace(); 88 }finally{ 89 try{ 90 if(rs!=null){ 91 rs.close(); 92 } 93 if(ps!=null){ 94 ps.close(); 95 } 96 if(ct!=null){ 97 ct.close(); 98 } 99 }catch(Exception e){} 100 } 101 //JTable后面的括号里先是记录,后字段 102 jt1=new JTable(jilu,ziduan); 103 jsp1=new JScrollPane(jt1); 104 this.add(jsp1); 105 this.add(jp1,BorderLayout.NORTH); 106 this.add(jp2,BorderLayout.SOUTH); 107 this.setTitle("学生管理系统"); 108 //让它大小不能改变 109 this.setResizable(false); 110 this.setDefaultCloseOperation(newa.EXIT_ON_CLOSE); 111 this.setVisible(true); 112 } 113 @Override 114 public void actionPerformed(ActionEvent e) { 115 // TODO Auto-generated method stub 116 if(e.getActionCommand().equals("chaxun")){ 117 String xingming=this.jtf1.getText().trim(); 118 String sql="select * from xuesheng where name='"+xingming+"'"; 119 120 121 xsxx2=new newxsxx(sql); 122 jt1.setModel(xsxx2);//在表格中显示 123 //System.out.println("aaa"); 124 }else if(e.getActionCommand().equals("tianjia")){ 125 126 //newtianjia xsxx3=new newtianjia(sql1); 127 newtianjia tj=new newtianjia(this,"添加学生信息",true); 128 129 //让它添加显示在页面 130 xsxx2=new newxsxx(); 131 jt1.setModel(xsxx2); 132 //System.out.println("bbb"); 133 }else if(e.getActionCommand().equals("xiugai")){ 134 int li=this.jt1.getSelectedRow();//获取界面选中的行 135 if(li==-1){ 136 JOptionPane.showMessageDialog(this,"请选中要修改的行"); 137 return; 138 } 139 xsxx2=new newxsxx(); 140 new newxiugai(this,"修改学生信息",true,xsxx2,li); 141 xsxx2=new newxsxx(); 142 jt1.setModel(xsxx2); 143 144 //System.out.println("ddd"); 145 146 147 148 //System.out.println("ccc"); 149 }else if(e.getActionCommand().equals("shanchu")){ 150 151 int li=this.jt1.getSelectedRow();//获取界面选中的行 152 if(li==-1){ 153 JOptionPane.showMessageDialog(this,"请选中要删除的行"); 154 return; 155 } 156 xsxx2=new newxsxx(); 157 String st=(String)xsxx2.getValueAt(li,0); 158 try{ 159 Class.forName("com.mysql.jdbc.Driver"); 160 ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","123456"); 161 ps=ct.prepareStatement("delete from xuesheng where xuehao=?"); 162 ps.setString(1,st); 163 ps.executeUpdate(); 164 165 }catch(SQLException ee){ 166 System.out.println("SQL is not exist!"); 167 ee.printStackTrace(); 168 }catch(Exception e1){ 169 e1.printStackTrace(); 170 }finally{ 171 try{ 172 if(rs!=null){ 173 rs.close(); 174 } 175 if(ps!=null){ 176 ps.close(); 177 } 178 if(ct!=null){ 179 ct.close(); 180 } 181 }catch(Exception er){} 182 } 183 xsxx2=new newxsxx(); 184 jt1.setModel(xsxx2); 185 186 //System.out.println("ddd"); 187 } 188 } 189 }