Java课程设计---浏览学生(实现根据姓名查询)

时间:2024-03-02 13:43:26

1、修改窗口

 

  

2、在StudentDao中增加根据姓名查找的方法

	public List<Student> getStudent(String name)throws SQLException{
		DbUtil dbUtil = new DbUtil();
		String sql="select * from tb_student where name LIKE \'"+name+"%\'";
		System.out.println(sql);
		List<Student> list = new ArrayList<Student>();
		ResultSet rs=dbUtil.executeQuery(sql);
		while(rs.next()){
			Student student = new Student();
			student.setId(rs.getInt("id"));
			student.setName(rs.getString("name"));
			student.setSex(rs.getString("sex"));
			student.setSno(rs.getString("sno"));
			student.setClassName(rs.getString("classname"));
			list.add(student);
		}
		return list;
	}

3、在StudentService中增加服务

	/**
	 * 根据姓名模糊查找
	 * @param name
	 * @return
	 * @throws SQLException
	 */
	public List<Student> getStudent(String name) throws SQLException {
		StudentDao studentDao = new StudentDao();
		return studentDao.getStudent(name);
}

4、将窗口和服务绑定

   (1)将表格数据装载分离出来

  fillTable方法

public void fillTable(List<Student> list) {
		// 将默认的加载数据去掉,重新定义个表头
		String[] head = new String[] { "序号", "学号", "姓名", "性别", "班级" };
		// 创建一个二维数组,5表示列数
		Object[][] data = new Object[list.size()][5];
		// 遍历
		for (int i = 0; i < list.size(); i++) {
			data[i][0] = list.get(i).getId();
			data[i][1] = list.get(i).getSno();
			data[i][2] = list.get(i).getName();
			data[i][3] = list.get(i).getSex();
			data[i][4] = list.get(i).getClassName();
		}
		// 将数据和表头封装
		DefaultTableModel datamoModel = new DefaultTableModel(data, head);
		// 将封装好的数据加载
		table.setModel(datamoModel);
	}

  修改后的完整代码

package com.student.view;

import java.awt.EventQueue;
import java.sql.SQLException;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;

import com.student.model.Student;
import com.student.service.StudentService;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;

/*
 * 项目名称: 
 * 
 * 文件名称为:ShowStudent.java
 * 文件创建人:daxiang
 * 
 * @author daxiang
 * @version 
 * @time  2018年6月22日 上午8:03:24
 * @copyright daxiang
 */
public class ShowStudent extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTable table;
	private JTextField textField;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					ShowTable frame = new ShowTable();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public ShowStudent() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 724, 481);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		// 设置无布局
		contentPane.setLayout(null);
		// 创建滚动面板
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(27, 74, 603, 221);
		contentPane.add(scrollPane);
		// 创建表格
		table = new JTable();
		// 将表格加载到滚动面板
		scrollPane.setViewportView(table);
		try {
			// 创建服务
			StudentService service = new StudentService();
			// 查询出所有学生
			List<Student> list = service.getStudent();
			// 装载数据
			fillTable(list);

			JLabel label = new JLabel("请输入学生姓名");
			label.setBounds(53, 43, 123, 18);
			contentPane.add(label);
textField = new JTextField(); textField.setBounds(190, 40, 169, 24); contentPane.add(textField); textField.setColumns(10);
JButton button = new JButton("查 找"); button.setBounds(394, 39, 113, 27); contentPane.add(button); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }
          setVisible(true); } /** * 表格装载数据 * * @param list */ public void fillTable(List<Student> list) { // 将默认的加载数据去掉,重新定义个表头 String[] head = new String[] { "序号", "学号", "姓名", "性别", "班级" }; // 创建一个二维数组,5表示列数 Object[][] data = new Object[list.size()][5]; // 遍历 for (int i = 0; i < list.size(); i++) { data[i][0] = list.get(i).getId(); data[i][1] = list.get(i).getSno(); data[i][2] = list.get(i).getName(); data[i][3] = list.get(i).getSex(); data[i][4] = list.get(i).getClassName(); } // 将数据和表头封装 DefaultTableModel datamoModel = new DefaultTableModel(data, head); // 将封装好的数据加载 table.setModel(datamoModel); } }

  (2)具体实现

  

 按钮操作代码

			button.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					try {
						//获取查询数据
						//textField.getText().trim()获取文本框数据并且去掉空格
						List<Student> list1=service.getStudent(textField.getText().trim());
						//装载到表格
						fillTable(list1);
					} catch (SQLException e1) {
						e1.printStackTrace();
					}
				}
			});