Java課程設計---瀏覽學生(實現根據姓名查詢)


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();
					}
				}
			});

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM