java+SQL server2008 学生信息管理系统


1、StudetManage类(主界面)

package com.sms3;

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class StudentManage extends JFrame implements ActionListener 
{
	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub
		new StudentManage();
	}

	//========面板控件
	private JLabel queryLab = null;
	private JTextField queryTxt = null;
	private JButton queryBtn = null;
	private JButton allBtn = null;
	private JTable resultTb = null;
	private JScrollPane jsp = null;
	private JButton addBtn = null;
	private JButton deleteBtn = null;
	private JButton updateBtn = null;
	private JPanel top = null;
	private JPanel bottom = null;
	//========
	private StuModel sm = null;
	
	//构造函数
	public StudentManage()
	{
		/***************************初始化面板控件***********************/
		//========查询栏
		queryLab = new JLabel("请输入姓名:");
		queryTxt = new JTextField(10);
		queryBtn = new JButton("查询");
		allBtn = new JButton("全部");
		//......添加查询栏监听
		queryBtn.addActionListener(this);
		queryBtn.setActionCommand("query");
		allBtn.addActionListener(this);
		allBtn.setActionCommand("all");
		//========增删改栏
		addBtn = new JButton("添加");
		deleteBtn = new JButton("删除");
		updateBtn = new JButton("修改");
		//......添加增删改栏监听
		addBtn.addActionListener(this);
		addBtn.setActionCommand("add");
		deleteBtn.addActionListener(this);
		deleteBtn.setActionCommand("delete");
		updateBtn.addActionListener(this);
		updateBtn.setActionCommand("update");
		//========创建窗口整体布局
		//......顶层查询栏
		top = new JPanel();
		top.add(queryLab);
		top.add(queryTxt);
		top.add(queryBtn);
		top.add(allBtn);
		//......底层增删改栏
		bottom = new JPanel();
		bottom.add(addBtn);
		bottom.add(deleteBtn);
		bottom.add(updateBtn);
		//......中间层显示栏
		sm = new StuModel();
		String sql = "select * from stu";
		sm.queryStu(sql, null);
		resultTb = new JTable(sm);
		jsp = new JScrollPane(resultTb);
		//......构建整体布局
		this.add(top,BorderLayout.NORTH);
		this.add(jsp,BorderLayout.CENTER);
		this.add(bottom,BorderLayout.SOUTH);
		//========设置窗口属性
		this.setSize(400, 300);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setResizable(false);
	}
	
	//监听
	@Override
	public void actionPerformed(ActionEvent e)
	{
		// TODO Auto-generated method stub
		if(e.getActionCommand().equals("query")) {
			/*********************查询***********************/
			//========获取输入学生的姓名
			String name = queryTxt.getText().trim();
			if(name.length() != 0) {
				//========姓名输入有效时,执行查询
				//......定义参数
				String sql = "select * from stu where stuName=?";
				String []paras = {name};
				//......更新模型
				jtableUpdate(sql, paras);
			} else {
				//========姓名为空时,设置提醒
				JOptionPane.showMessageDialog(this, "姓名输入不能为空");
			}
		} else if(e.getActionCommand().equals("add")) {
			/*********************添加***********************/
			new StuAddDialog(this, "添加学生信息", true);
			String sql = "select * from stu";
			jtableUpdate(sql, null);
		} else if(e.getActionCommand().equals("all")) {
			/*********************全部显示***********************/
			String sql = "select * from stu";
			jtableUpdate(sql, null);
		} else if(e.getActionCommand().equals("delete")) {
			/*********************删除***********************/
			//========获取选择行号
			int rowNum = this.resultTb.getSelectedRow();
			if(rowNum == -1) {
				JOptionPane.showMessageDialog(this, "请选择一行");
				return ;
			}
			//========获取学生ID号
			String stuId = (String)sm.getValueAt(rowNum, 0);
			//========删除学生
			String sql = "delete from stu where stuId=?";
			String []paras = {stuId};
			StuModel tmp = new StuModel();
			tmp.cudStu(sql, paras);
			//========更新模型
			sql = "select * from stu";
			jtableUpdate(sql, null);
		} else if(e.getActionCommand().equals("update")) {
			/*********************修改***********************/
			//========获取选择行号
			int rowNum = this.resultTb.getSelectedRow();
			if(rowNum == -1) {
				JOptionPane.showMessageDialog(this, "请选择一行");
				return ;
			}
			new StuUpdateDialog(this, "修改学生信息", true, sm, rowNum);
			String sql = "select * from stu";
			jtableUpdate(sql, null);
		}
	}
	
	//========更新JTable内数据
	public void jtableUpdate(String sql, String[] paras)
	{
		//......创建模型
		sm = new StuModel();
		sm.queryStu(sql, paras);
		//......更新显示
		resultTb.setModel(sm);
	}

}

2、StuModel类(学生数据库模型)

package com.sms3;

import java.sql.ResultSet;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;

public class StuModel extends AbstractTableModel{
	private Vector columnNames;
	private Vector rowDates;
	
	//
	public StuModel()
	{
		String sql = "select * from stu";
		String []paras = {};
		
	}
	
	//========增删改学生
	public boolean cudStu(String sql, String []paras)
	{
		return new SqlHelper().cudExecute(sql, paras);
	}
	
	//========查询学生
	public void queryStu(String sql, String []paras)
	{
		SqlHelper sqlHelper = null;
		//========初始化JTable信息
		columnNames = new Vector();
		rowDates = new Vector();
		columnNames.add("学号"); columnNames.add("名字");
		columnNames.add("性别"); columnNames.add("年龄");
		columnNames.add("籍贯"); columnNames.add("系别");
		
		try {
			sqlHelper = new SqlHelper();
			ResultSet rs = sqlHelper.queryExecute(sql, paras);
			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));
				rowDates.add(row);
			}
		} catch (Exception e) {
			// TODO: handle exception
		} finally {
			sqlHelper.close();
		}
		
	}

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

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

	@Override
	public Object getValueAt(int row, int col) {
		// TODO Auto-generated method stub
		if(!rowDates.isEmpty())
			return ((Vector)this.rowDates.get(row)).get(col);
		else
			return null;
	}

	
	@Override
	public String getColumnName(int column) {
		// TODO Auto-generated method stub
		return (String)this.columnNames.get(column);
	}

	
}

3、StuAddDialog类(添加学生信息子界面)

package com.sms3;

import java.awt.BorderLayout;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class StuAddDialog extends JDialog implements ActionListener{
	//=========面板控件
	//......左侧标题栏
	private JLabel idLab,nameLab,sexLab,ageLab,jgLab,deptLab;
	//......右侧信息选择填写栏
	private JTextField idTxt,nameTxt,sexTxt,ageTxt,jgTxt,deptTxt;
	//......添加和取消按钮
	private JButton addBtn,cancelBtn;
	//......布局控件
	private JPanel left,center,bottom;
	
	//构造函数
	public StuAddDialog(Frame owner, String title, boolean modal) 
	{
		//========重写父类方法
		super(owner, title, modal);
		//========左侧标签栏
		idLab = new JLabel("学号: ");
		nameLab = new JLabel("姓名: ");
		sexLab = new JLabel("性别: ");
		ageLab = new JLabel("年龄: ");
		jgLab = new JLabel("籍贯: ");
		deptLab = new JLabel("系别: ");
		//========右侧信息填写栏
		idTxt = new JTextField();
		nameTxt = new JTextField();
		sexTxt = new JTextField();
		ageTxt = new JTextField();
		jgTxt = new JTextField();
		deptTxt = new JTextField();
		//========添加和取消按钮
		addBtn = new JButton("添加");
		cancelBtn = new JButton("取消");
		//......添加监听
		addBtn.addActionListener(this);
		addBtn.setActionCommand("add");
		cancelBtn.addActionListener(this);
		cancelBtn.setActionCommand("cancel");
		//========创建布局
		//......创建左边栏
		left = new JPanel();
		left.setLayout(new GridLayout(6, 1));
		left.add(idLab);  left.add(nameLab); 
		left.add(sexLab); left.add(ageLab); 
		left.add(jgLab);  left.add(deptLab); 
		//......创建右边栏
		center = new JPanel();
		center.setLayout(new GridLayout(6, 1));
		center.add(idTxt);  center.add(nameTxt);
		center.add(sexTxt); center.add(ageTxt);
		center.add(jgTxt);  center.add(deptTxt);
		//========底层添加和取消按钮
		bottom = new JPanel();
		bottom.add(addBtn);
		bottom.add(cancelBtn);
		//========整体布局
		this.add(left,BorderLayout.WEST);
		this.add(center,BorderLayout.CENTER);
		this.add(bottom,BorderLayout.SOUTH);
		//========设置窗口属性
		
		this.setSize(300, 250);
		this.setResizable(false);
		this.setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) 
	{
		// TODO Auto-generated method stub
		if(e.getActionCommand().equals("add")) {
			/***********************添加学生信息**************************/
			StuModel tmp = new StuModel();
			String sql = "insert into stu values(?,?,?,?,?,?)";
			String []paras = {idTxt.getText(),nameTxt.getText(),sexTxt.getText(),
							ageTxt.getText(),jgTxt.getText(),deptTxt.getText()};
			if(!tmp.cudStu(sql, paras))
				JOptionPane.showMessageDialog(this, "添加学生信息失败");
			//========关闭窗口
			this.dispose();
		} else if(e.getActionCommand().equals("cancel")) {
			//========关闭窗口
			this.dispose();
		}
	}
}

4、StuUpdateDialog类(修改学生信息子界面)

package com.sms3;

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.table.AbstractTableModel;

public class StuUpdateDialog extends JDialog implements ActionListener{
	//=========面板控件
	//......左侧标题栏
	private JLabel idLab,nameLab,sexLab,ageLab,jgLab,deptLab;
	//......右侧信息选择填写栏
	private JTextField idTxt,nameTxt,sexTxt,ageTxt,jgTxt,deptTxt;
	//......添加和取消按钮
	private JButton addBtn,cancelBtn;
	//......布局控件
	private JPanel left,center,bottom;
	
	//构造函数
	public StuUpdateDialog(Frame owner, String title, boolean modal, StuModel sm, int rowNum) 
	{
		//========重写父类方法
		super(owner, title, modal);
		//========左侧标签栏
		idLab = new JLabel("学号: ");
		nameLab = new JLabel("姓名: ");
		sexLab = new JLabel("性别: ");
		ageLab = new JLabel("年龄: ");
		jgLab = new JLabel("籍贯: ");
		deptLab = new JLabel("系别: ");
		//========右侧信息填写栏
		idTxt = new JTextField();	
		idTxt.setText((String)sm.getValueAt(rowNum, 0));
		idTxt.setEditable(false);
		nameTxt = new JTextField();
		nameTxt.setText((String)sm.getValueAt(rowNum, 1));
		sexTxt = new JTextField();
		sexTxt.setText((String)sm.getValueAt(rowNum, 2));
		ageTxt = new JTextField();
		ageTxt.setText((String)sm.getValueAt(rowNum, 3));
		jgTxt = new JTextField();
		jgTxt.setText((String)sm.getValueAt(rowNum, 4));
		deptTxt = new JTextField();
		deptTxt.setText((String)sm.getValueAt(rowNum, 5));
		//========添加和取消按钮
		addBtn = new JButton("修改");
		cancelBtn = new JButton("取消");
		//......添加监听
		addBtn.addActionListener(this);
		addBtn.setActionCommand("update");
		cancelBtn.addActionListener(this);
		cancelBtn.setActionCommand("cancel");
		//========创建布局
		//......创建左边栏
		left = new JPanel();
		left.setLayout(new GridLayout(6, 1));
		left.add(idLab);  left.add(nameLab); 
		left.add(sexLab); left.add(ageLab); 
		left.add(jgLab);  left.add(deptLab); 
		//......创建右边栏
		center = new JPanel();
		center.setLayout(new GridLayout(6, 1));
		center.add(idTxt);  center.add(nameTxt);
		center.add(sexTxt); center.add(ageTxt);
		center.add(jgTxt);  center.add(deptTxt);
		//========底层添加和取消按钮
		bottom = new JPanel();
		bottom.add(addBtn);
		bottom.add(cancelBtn);
		//========整体布局
		this.add(left,BorderLayout.WEST);
		this.add(center,BorderLayout.CENTER);
		this.add(bottom,BorderLayout.SOUTH);
		//========设置窗口属性
		
		this.setSize(300, 250);
		this.setResizable(false);
		this.setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getActionCommand().equals("update")) {
		/***********************修改学生信息**************************/
			StuModel tmp = new StuModel();
			String sql = "update stu set stuName=?,stuSex=?,stuAge=?,stuJg=?,stuDept=? where stuId=?";
			String []paras = {nameTxt.getText(),sexTxt.getText(),ageTxt.getText(),
							jgTxt.getText(),deptTxt.getText(),idTxt.getText()};
			if(!tmp.cudStu(sql, paras))
				JOptionPane.showMessageDialog(this, "修改学生信息失败");
			//========关闭窗口
			this.dispose();
		} else if(e.getActionCommand().equals("cancel")) {
			//========关闭窗口
			this.dispose();
		}
	}
}

5、SqlHelper类(最底层数据库类)

package com.sms3;

import java.sql.*;

public class SqlHelper {
	//========数据库
	private Connection ct = null;
	private PreparedStatement ps = null;
	private ResultSet rs = null;
	private String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
	private String url = "jdbc:sqlserver://127.0.0.1:1433;database=studentMan";
	private String user = "sa";
	private String passwd = "****";
	
	//========查询
	public ResultSet queryExecute(String sql, String []paras)
	{
		try {
			//========1、加载驱动
			Class.forName(driver);
			//========2、连接
			ct = DriverManager.getConnection(url, user, passwd);
			//========3、创建PreparedStatement
			ps = ct.prepareStatement(sql);
			//========4、给问号赋值
			if(paras != null) {
				for(int i = 0; i < paras.length; i++) {
					ps.setString(i + 1, paras[i]);
				}
			}
			//========5、执行
			rs = ps.executeQuery();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		} finally {
			//this.close();
		}
		//========返回值
		return rs;
	}
	
	//========增删改
	public boolean cudExecute(String sql, String []paras)
	{
		boolean b = true;
		try {
			//========1、加载驱动
			Class.forName(driver);
			//========2、连接
			ct = DriverManager.getConnection(url, user, passwd);
			//========3、创建PreparedStatement
			ps = ct.prepareStatement(sql);
			//========4、给问号赋值
			for(int i = 0; i < paras.length; i++) {
				ps.setString(i + 1, paras[i]);
			}
			//========5、执行
			if(ps.executeUpdate() != 1) b = false;
		} catch (Exception e) {
			// TODO: handle exception
			b = false;
			e.printStackTrace();
		} finally {
			this.close();
		}
		//========返回值
		return b;
	}
	
	//========关闭资源
 	public void close()
	{
		try {
			if(rs!=null) rs.close();
			if(ps!=null) ps.close();
			if(ct!=null) ct.close();
		} catch (Exception e2) {
			// TODO: handle exception
			e2.printStackTrace();
		}
	}
	
}




主界面




添加学生信息界面



修改学生信息界面




  • 35
    点赞
  • 266
    收藏
    觉得还不错? 一键收藏
  • 30
    评论
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值