学生管理系统3

package SMS_4;
/*
 * 功能:
 * 完成迷你版的学生管理系统
 * 
 */
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.*;
import java.sql.*;
import java.util.*;
import java.beans.*;
import SMS_5.*;
public class SMS_3<sm> extends JFrame implements ActionListener{
//定义一些控件
    JPanel jp1,jp2;
    JLabel jl1;
    JButton jb1,jb2,jb3,jb4;
    JTable jt;
    JScrollPane jsp;
    JTextField jtf;
    StuModel2 sm;
      
      
      
    
    public static void main(String[] args) {
        SMS_3 test3=new  SMS_3();
 
    }
 
    //构造函数
    public  SMS_3()
    {
        jp1=new JPanel();
        jtf=new JTextField(10);
        jb1=new JButton("查询");
        jb1.addActionListener(this);//添加监听
        
        jl1=new JLabel("请输入名字:");
        
        //把各个控件加入jp1
        jp1.add(jl1);
        jp1.add(jtf);
        jp1.add(jb1);
        
        jp2=new JPanel();
        
        jb2=new JButton("添加");
        jb2.addActionListener(this);
        jb3=new JButton("修改");
        jb3.addActionListener(this);
        jb4=new JButton("删除");
        jb4.addActionListener(this);
        
        //把各个按钮加入到jp2
        jp2.add(jb2);
        jp2.add(jb3);
        jp2.add(jb4);
        
        //中间
        
        //创建一个数据模型对象
        sm=new  StuModel2();
        String []paras={"1"};
        sm.queryStu("select * from stu where 1=?", paras);
        
        //初始化JTable
        jt=new JTable(sm);
        
        //初始化jsp JScrollPane
        jsp=new JScrollPane(jt);
        
        //把jsp放入到jframe
        this.add(jsp);
        this.add(jp1,"North");
        this.add(jp2,"South");
        
        this.setSize(400,300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
        
    }
 
    @Override
    public void actionPerformed(ActionEvent e) {
        //判断是哪个按钮被点击
        if(e.getSource()==jb1)
        {
            //对用户点击添加按钮的响应动作
            System.out.println("用户想查询!");
            //...
            //查询数据库,更新JTable,这样大量的代码重复,解决办法:
            //把对表操作封装成一个类,可以完成对表的操作
            //把对表的数据装到StuModel中,就可以比较简单的完成查询
            String name=this.jtf.getText().trim();
            //写一个sql语句
            String sql="select * from stu where stuName=?";
            String paras[]={name};
            //构建新的数据模型类,并更新
            sm=new StuModel2();
            
            sm.queryStu(sql, paras);
            //更新JTable
            jt.setModel(sm);
        }
        //当用户点击添加
        else if(e.getSource()==jb2)
        {
            StuAddDialog sa=new StuAddDialog(this,"添加学生",true);
            
            //重新再获得新的数据模型
            sm=new StuModel2();
            String []paras2={"1"};
            sm.queryStu("select * from stu where 1=?", paras2);
            //更新JTable
            jt.setModel(sm);
        }
        else if(e.getSource()==jb3)
        {
            //用户希望修改
            int rowNum=this.jt.getSelectedRow();
            if(rowNum==-1)
            {
                //提示
                JOptionPane.showMessageDialog(this, "请选择一行");
                return ;
            }
            //显示修改对话框
            new StuUpateDialog(this,"修改学生",true,sm,rowNum);
            
            //重新再获得新的数据模型
            sm=new StuModel2();
            //更新JTable
            String []paras2={"1"};
            sm.queryStu("select * from stu where 1=?", paras2);
            jt.setModel(sm);
        }
        
        else if(e.getSource()==jb4)
        {
            //说明用户希望删除记录
            //1.得到该学生的id
            int rowNum=this.jt.getSelectedRow();//返回用户点中的行,如果没有选返返-1
            if(rowNum==-1)
            {
                //提示
                JOptionPane.showMessageDialog(this,"请选择一行");
                return ;
            }
            //得到学生编号
            String stuId=(String)sm.getValueAt(rowNum, 0);
            //System.out.println("id="+stuId);
            
            //创建一个sql语句
            String sql="delete from stu where stuId=?";
            String []paras={stuId};
            StuModel2 temp=new StuModel2();
            temp.updStu(sql,paras);
            
            //更新数据模型
            sm=new StuModel2();
            String []paras2={"1"};
            sm.queryStu("select * from stu where 1=?", paras2);
            //更新JTable
            jt.setModel(sm);
        }
    }

}




package SMS_4;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;


import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;


public class StuAddDialog extends JDialog implements ActionListener {
//
JLabel jl1,jl2,jl3,jl4,jl5,jl6;
JButton jb1,jb2;
JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;
JPanel jp1,jp2,jp3;
//owner他的父窗口
//title窗口名
//modal指定模式窗口,还是非模式窗口
public StuAddDialog(Frame owner,String title,boolean modal){
super(owner,title,modal);//调用父类构造方法,达到模式对话框效果
jl1=new JLabel("学号");
jl2=new JLabel("姓名");
jl3=new JLabel("性别");
jl4=new JLabel("年龄");
jl5=new JLabel("籍贯");
jl6=new JLabel("系名");


jtf1=new JTextField();
jtf2=new JTextField();
jtf3=new JTextField();
jtf4=new JTextField();
jtf5=new JTextField();
jtf6=new JTextField();

jb1=new JButton("添加");
jb1.addActionListener(this);
jb2=new JButton("取消");

jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();

//设置布局
jp1.setLayout(new GridLayout(6,1));
jp2.setLayout(new GridLayout(6,1));
//
//添加组件
jp1.add(jl1);
jp1.add(jl2);
jp1.add(jl3);
jp1.add(jl4);
jp1.add(jl5);
jp1.add(jl6);

jp2.add(jtf1);
jp2.add(jtf2);
jp2.add(jtf3);
jp2.add(jtf4);
jp2.add(jtf5);
jp2.add(jtf6);

jp3.add(jb1);
jp3.add(jb2);

this.add(jp1,BorderLayout.WEST);
this.add(jp2,BorderLayout.CENTER);
this.add(jp3,BorderLayout.SOUTH);

//展现对话框
        this.setSize(300,200);
       // this.setDefaultCloseOperation(operation);
        this.setVisible(true);



}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
StuModel2 temp=new StuModel2();
String sql="insert into stu values(?,?,?,?,?,?)";
String [] paras={jtf1.getText(),jtf2.getText(),jtf3.getText(),jtf4.getText(),jtf5.getText(),
jtf6.getText()};

if(!temp.updStu(sql, paras))
{
JOptionPane.showMessageDialog(this,"添加失败");
}
this.dispose();
}

}



/*
 * 这是我的一个stu表的模型
 * model2模式
 * 可以把对student的表的各种操作封装到该模型中
 */
package SMS_4;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;


import javax.swing.table.AbstractTableModel;


import SMS_5.SqlHelper;


public class StuModel2 extends AbstractTableModel {
//定义操作数据库需要的变量
Vector columnNames=null;
Vector rowData=null;
//初始化连接数据库,查询,查询的本质就是初始化
   public void queryStu(String sql,String []paras)
   {
       SqlHelper sqlHelper=null;
       //中间
       columnNames=new Vector();
       //设置列名
       columnNames.add("学号");
       columnNames.add("名字");
       columnNames.add("性别");
       columnNames.add("年龄");
       columnNames.add("籍贯");
       columnNames.add("系别");
       
       rowData=new Vector();
       try {
           sqlHelper=new SqlHelper();
           ResultSet rs=sqlHelper.queryExectue(sql, paras);
           
           while(rs.next())
           {
               //rowData可以存放多行
               Vector hang=new Vector();
               hang.add(rs.getString(1));
               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));
               
               //加入到rowData
               rowData.add(hang);
           }
           
       } catch (Exception e) {
           e.printStackTrace();
       }finally
       {
           //关闭资源
           sqlHelper.close();
       }
   }
   //更新学生,添加学生(增、删、改)
 
   public boolean updStu(String sql,String []paras)//通过函数传入参数解决
   {
       //根据用户输入的sql语句,完成添加...
       //创建SqlHelper(如果程序并发性不考虑,可以把SqlHelper做成static)
       SqlHelper sqlHelper=new SqlHelper();
       return sqlHelper.updExecute(sql, paras);
   }
   
   //做一个构造函数,用于初始化我们的数据模型
   public  StuModel2()
   {
       
   }
   
   @Override //得到共有多少列
   public int getColumnCount() {
       //System.out.println("getColumncount");
       return this.columnNames.size();
   }
 
   @Override //得到共有多少行
   public int getRowCount() {
       //
       return this.rowData.size();
   }
 
   @Override //得到某行某列的数据
   public Object getValueAt(int rowIndex, int columnIndex) {
       //return null;
       return ((Vector)this.rowData.get(rowIndex)).get(columnIndex);
   }
 
   @Override
   public String getColumnName(int column) {
       // 重写这个方法,修改默认的列名
       return (String)this.columnNames.get(column);
   }




}



package SMS_4;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;


import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;


public class StuUpateDialog extends JDialog implements ActionListener {
//
JLabel jl1,jl2,jl3,jl4,jl5,jl6;
JButton jb1,jb2;
JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;
JPanel jp1,jp2,jp3;
//owner他的父窗口
//title窗口名
//modal指定模式窗口,还是非模式窗口
public StuUpateDialog(Frame owner,String title,boolean modal,StuModel2 sm,int rowName){
super(owner,title,modal);//调用父类构造方法,达到模式对话框效果
jl1=new JLabel("学号");
jl2=new JLabel("姓名");
jl3=new JLabel("性别");
jl4=new JLabel("年龄");
jl5=new JLabel("籍贯");
jl6=new JLabel("系名");


jtf1=new JTextField();
jtf1.setText((String)sm.getValueAt(rowName,0));
jtf1.setEditable(false );
jtf2=new JTextField();
jtf2.setText((String)sm.getValueAt(rowName,1));
jtf3=new JTextField();
jtf3.setText((String)sm.getValueAt(rowName,2));
jtf4=new JTextField();
jtf4.setText(sm.getValueAt(rowName,3).toString());
jtf5=new JTextField();
jtf5.setText((String)sm.getValueAt(rowName,4));
jtf6=new JTextField();
jtf6.setText((String)sm.getValueAt(rowName,5));

jb1=new JButton("确定");
jb1.addActionListener(this);
jb2=new JButton("取消");

jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();

//设置布局
jp1.setLayout(new GridLayout(6,1));
jp2.setLayout(new GridLayout(6,1));
//
//添加组件
jp1.add(jl1);
jp1.add(jl2);
jp1.add(jl3);
jp1.add(jl4);
jp1.add(jl5);
jp1.add(jl6);

jp2.add(jtf1);
jp2.add(jtf2);
jp2.add(jtf3);
jp2.add(jtf4);
jp2.add(jtf5);
jp2.add(jtf6);

jp3.add(jb1);
jp3.add(jb2);

this.add(jp1,BorderLayout.WEST);
this.add(jp2,BorderLayout.CENTER);
this.add(jp3,BorderLayout.SOUTH);

//展现对话框
        this.setSize(300,200);
       // this.setDefaultCloseOperation(operation);
        this.setVisible(true);



}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

String sql="update stu set stuName=?,"+"stuSex=?,"+"stuAge=?,"+"stuJg=?,"+"stuDept=?"+" where stuId=?";
String [] paras={jtf2.getText(),jtf3.getText(),jtf4.getText(),jtf5.getText(),
jtf6.getText(),jtf1.getText()};
StuModel2 temp=new StuModel2();
if(!temp.updStu(sql, paras))
{
JOptionPane.showMessageDialog(this,"数据更新失败");
}
//关闭对话框
this.dispose();
}

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值