简单的学生管理系统(整理)

主程序:

package xsglxt;
import java.sql.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
//第一:做界面
//第二:做监听
//第三。
public class Xsglxt extends JFrame implements ActionListener {
	JPanel mb1,mb2;//最上面和最下面
	JLabel bq1;
	JTextField wbk1;
	JButton an1,an2,an3,an4;
	JTable bg1;
	JScrollPane gd1;
	Xsxx xsxx2;//删除时才创建的参数,并且把下面的所有的都
	
	//集合类
	Vector ziduan,jilu;
	PreparedStatement ps=null;
	Connection ct=null;
	ResultSet rs=null;
	
	public static void main(String[] args) {
		Xsglxt xs=new Xsglxt();
		
	}
	public Xsglxt() {
		mb1=new JPanel();
		bq1=new JLabel("请输入姓名:");
		wbk1=new JTextField(10);
		an1=new JButton("查询");
		an1.addActionListener(this);
		an1.setActionCommand("chaxun");
		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);
		
		ziduan=new Vector();
		ziduan.add("学号");
		ziduan.add("姓名");
		ziduan.add("性别");
		ziduan.add("年龄");
		ziduan.add("籍贯");
		ziduan.add("所在院系");
		
		jilu=new Vector();//记录必须从数据库中读
		try {
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=xsglxt","sa","123456789h");
			ps=ct.prepareStatement("select *from Xuesheng");
			rs=ps.executeQuery();
			while(rs.next()) {//一行一行读,一个行六个字段,然后把一行添加到记录里面
				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));
				jilu.add(hang);
				
				
			}
		}catch(Exception e) {}
		finally {
			try {
				if(rs!=null) {rs.close();}
				if(ct!=null) {rs.close();}
				
			}catch(Exception e1) {}
			//bg1=new JTable(jilu,ziduan);//将记录和字段添加到表中,JTable后面的括号是先记录后字段
			//删除时改了
			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);
			
			
		}
		
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getActionCommand().equals("chaxun")) {
			String xingming=this.wbk1.getText().trim();//这一句的意思就是取出文本框输入的内容,固定的
			String sql="select * from Xuesheng where xingming='"+xingming+"'";
			//第一个xingming是数据库里面的,第二个xingming是输入的姓名,上一句取出来的
			 xsxx2=new Xsxx(sql);
			bg1.setModel(xsxx2);//在表格1里面显示这个信息,在需要立即显示效果的时候用setModel
			
		}else if(e.getActionCommand().equals("tianjia")) {
			Tianjia tj=new Tianjia(this,"添加学生信息",true);
			//里面的三个参数是固定的,true是只能对添加窗口操作,无法对最初界面操作,flase是任意的窗口都可以动
			 xsxx2=new Xsxx();//
			bg1.setModel(xsxx2);//随时显示
			
		
		}else if(e.getActionCommand().equals("xiugai")) {
			int ii=this.bg1.getSelectedRow();
			if(ii==-1) {
				JOptionPane.showMessageDialog(this,"请选中要修改的行");
				return;
			}
			new xiugai(this,"修改学生信息",true,xsxx2,ii);
			xsxx2=new Xsxx();
			bg1.setModel(xsxx2);
			
		}else if(e.getActionCommand().equals("shanchu")) {
			int ii=this.bg1.getSelectedRow();//ii用来保存鼠标点中的那一行
			if(ii==-1) {
				JOptionPane.showMessageDialog(this,"请选中需要删除的一行");//一个消息框
				return;//回到按按钮之前的位置,等待下一次选中
			}
			String st=(String)xsxx2.getValueAt(ii,0);
			//选中鼠标选中的那一行,就是ii,后面的0代表的是第0列,也就是真正意思上的第一行,因为只有主键是不重复的
			//返回值是一个object类型。所以需要强制转换成string类型,
			PreparedStatement ps=null;
			Connection ct=null;
			ResultSet rs=null;
			Statement sm=null;
			try {
				Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
				ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=xsglxt","sa","123456789h");
				ps=ct.prepareStatement("delete from xuesheng where xuehao=?");
				ps.setString(1, st);//?赋值选中那一行的学号
				ps.executeUpdate();
				
			}catch(Exception e4) {}
			finally {
				try {
					if(ct!=null) ct.close();
					if(rs!=null) rs.close();
				}
				catch(Exception e5) {}
			}
			xsxx2=new Xsxx();
			bg1.setModel(xsxx2);
			//随时显示删除的结果,就是随时更新当前界面
		}
		
	}
	
	
	

}

查找:

package xsglxt;
import java.sql.*;
import java.util.Vector;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;

public class Xsxx extends AbstractTableModel{
	//集合类
		Vector ziduan,jilu;
		PreparedStatement ps=null;
		Connection ct=null;
		ResultSet rs=null;

	@Override
	public int getColumnCount() {
		// TODO Auto-generated method stub
		return this.ziduan.size();
	}

	@Override
	public int getRowCount() {
		// TODO Auto-generated method stub
		return this.jilu.size();
	}

	@Override
	public Object getValueAt(int hang, int lie) {
		// TODO Auto-generated method stub
		return ((Vector)this.jilu.get(hang)).get(lie);
	}
	public Xsxx() {
		this.sqlyi("select * from Xuesheng");
	}
	public Xsxx(String ss) {
		this.sqlyi(ss);
	}
	public String getColumnName(int e) {
		return (String)this.ziduan.get(e);
	}
	private void sqlyi(String sql) {
		// TODO Auto-generated method stub
		ziduan=new Vector();
		ziduan.add("学号");
		ziduan.add("姓名");
		ziduan.add("性别");
		ziduan.add("年龄");
		ziduan.add("籍贯");
		ziduan.add("所在院系");
		
		jilu=new Vector();//记录必须从数据库中读
		try {
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=xsglxt","sa","123456789h");
			ps=ct.prepareStatement(sql);
			rs=ps.executeQuery();
			while(rs.next()) {//一行一行读,一个行六个字段,然后把一行添加到记录里面
				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));
				jilu.add(hang);
				}
			}catch(Exception e1) {}
		finally {
			try {
				if(ct!=null) ct.close();
				if(rs!=null) rs.close();
			}catch(Exception e2) {}
		}
		
	}

}

添加:

package xsglxt;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import java.util.*;
public class Tianjia 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 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.setVisible(true);
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getActionCommand().equals("tianjia2")) {
			PreparedStatement ps=null;
			Connection ct=null;
			ResultSet rs=null;
			try {
				Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
				ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=xsglxt","sa","123456789h");
				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();
				
				
			}catch(Exception e3) {}
			finally {
				try {
					if(rs!=null) rs.close();
					if(ct!=null) ct.close();
					
				}catch(Exception e4) {}
			}
     this.dispose();//添加完关闭窗口
		}
		else if(e.getActionCommand().equals("quxiao")) {
			this.dispose();//关闭当前窗口
			
		}
		
	}
	

}

修改:

package xsglxt;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import java.util.*;
public 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;
	Xsxx xsxx2;
	
	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());//整型的数字toString()
		wbk5=new JTextField(5);
		wbk5.setText((String)xsxx2.getValueAt(hang, 0));
		wbk6=new JTextField(5);
		wbk6.setText((String)xsxx2.getValueAt(hang, 0));
		
		an1=new JButton("修改");
		an1.addActionListener(this);
		an1.setActionCommand("xiugai2");
		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.setVisible(true);
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getActionCommand().equals("xiugai2")) {
			PreparedStatement ps=null;
			Connection ct=null;
			ResultSet rs=null;
			try {
				Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
				ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=xsglxt","sa","123456789h");
				String ss= ("update xuesheng set xingming=?,xingbie=?,nianling=?,jiguan=?,yxmc=? 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();
				
				
			}catch(Exception e3) {}
			finally {
				try {
					if(rs!=null) rs.close();
					if(ct!=null) ct.close();
					
				}catch(Exception e4) {}
			}
     this.dispose();//添加完关闭窗口
		}
		else if(e.getActionCommand().equals("quxiao")) {
			this.dispose();//关闭当前窗口
			
		}
		
	}
	

}

 

运行结果:增删改查均可实现

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值