1. 程式人生 > 其它 >Java課程設計之 學生成績管理系統

Java課程設計之 學生成績管理系統

技術標籤:Java課程設計javasqlmysql資料庫

實現內容:
設計開發一個學生成績管理系統
(1)根據實現的功能,劃分出合理的物件類,明確各個物件類之間的關係。為
各個物件類設計正確的域和方法,為每個方法設計合理的方法體。同時,為物件類及內部的域和方法運用正確的修飾符。
功能要求:
(1)錄入成績 (2) 查詢成績
(3) 成績排序 (4) 修改成績
(5) 刪除成績 (6) 將資料儲存在資料庫表中

該課程設計涉及MySQL資料庫,建表操作,java操作SQL語句(JDBC資料庫操作)以及JavaSwing與事件處理。
在這裡插入圖片描述
源程式(僅做參考):

//**學生類**
public class
Student { String id; // 學號 String name; // 姓名 float math; //數學成績 float physics; //物理成績 float english; //英語成績 public Student() {} public Student(String id, String name, float math, float physics, float english) { //定義帶參的建構函式 super(); //呼叫父類的無參的建構函式 this.id = id; this.name = name; this.math =
math; this.physics = physics; this.english = english; } //定義一個方法設定個變數的值 public void set(String id,String name,float math,float physics,float english) { this.id = id; this.name = name; this.math = math; this.physics = physics; this.english = english; } public String getId() { //定義一個方法獲取學號
return id; } public String getName() { //定義一個方法獲取姓名 return name; } public float getMath() { //定義一個方法獲取數學成績 return math; } public float getPhysics() { //定義一個方法獲取物理成績 return physics; } public float getEnglish() { //定義一個方法獲取英語成績 return english; } //重寫toString方法 使其輸出指定的格式 @Override public String toString() { // TODO Auto-generated method stub return "[ 學號: "+id+" 姓名: "+name+" 數學成績: "+math+" 物理成績: "+physics+" 英語成績: "+english+"]"; } }
//測試類
import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JTabbedPane;

class mySwing {
	JFrame frame;  //定義一個視窗
	JTabbedPane tabbedPane;  //定義一個選項卡窗格
	
	public void init() {  //定義一個方法來對選項卡窗格進行操作
		tabbedPane = new JTabbedPane();  //例項化選項卡窗格
		tabbedPane.add("錄入成績",new addPanel().panel);  //向選項卡窗格中新增”錄入成績“窗格
		tabbedPane.add("查詢成績",new checkPanel().panel2); //向選項卡窗格中新增”查詢成績“窗格
		tabbedPane.add("排序成績",new sortPanel().panel3);  //向選項卡窗格中新增”排序成績“窗格
		tabbedPane.add("修改成績",new modifyPanel().panel4);  //向選項卡窗格中新增”修改成績“窗格
		tabbedPane.add("刪除記錄",new deletePanel().panel5);  //向選項卡窗格中新增”刪除記錄“窗格
	}
	
	//先建立一個視窗
	public mySwing() {  //建立一個無參的構造方法由於初始化窗體
		frame = new JFrame("XXX學校學生成績管理系統");  //例項化視窗
		init();  //呼叫init方法
		frame.add(tabbedPane,BorderLayout.NORTH);  //向視窗中新增選項卡窗格
		frame.setVisible(true);  //設定視窗可見
		frame.setSize(500, 580);  //設定視窗的大小
		frame.setLocationRelativeTo(null);  //設定視窗的位置為桌面中心
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //設定單擊視窗的關閉按鈕後程序自動停止執行
	}
}


public class myText {

	public static void main(String[] args) {
		new mySwing();  //通過匿名物件呼叫
	}
}
//新增資料實現
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class addPanel{
	MyDBUtil dbUtil = new MyDBUtil();  //建立自己寫的資料庫物件
	JPanel panel;  //定義一個面板引用

	//錄入成績 視窗元件設定
	JPanel p1,p2,p3,p4;  //定義4個面板引用
	Box boxH1,boxH2;   //建立兩個行式盒。
	Box box1,box2,box3,box4;  //建立四個列式盒
	JButton button;  //定義一個按鈕
	JTextField textField1,textField2,textField3,textField4,textField5;  //定義五個單行文字框
	JTextArea area;  //定義一個多行文字框
		
	//錄入成績視窗
	public addPanel() {  //建立無參的建構函式
		boxH1 = Box.createHorizontalBox();  //例項化行式盒 boxH1
		boxH2 = Box.createHorizontalBox();  //例項化行式盒 boxH2
		
		box1 = Box.createVerticalBox(); //例項化列式盒 box1
		box1.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		box1.add(new JLabel("學號")); //向列式盒中新增  "學號" 標籤
		box1.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		box1.add(new JLabel("數學成績")); //向列式盒中新增  "數學成績" 標籤
		box1.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		box1.add(new JLabel("英語成績"));  //向列式盒中新增  "英語成績" 標籤
		boxH1.add(box1); //向行式盒中新增列式盒box1
		boxH1.add(Box.createHorizontalStrut(55));  //在行式盒中設定一個不可見的長為55的水平Strut物件

		box2 = Box.createVerticalBox();//例項化列式盒 box2
		textField1 = new JTextField(12); //例項化單行文字框
		textField2 = new JTextField(12);//例項化單行文字框
		textField3 = new JTextField(12);//例項化單行文字框
		box2.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		box2.add(textField1);  //向列式盒中新增單行文字框
		box2.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		box2.add(textField2); //向列式盒中新增單行文字框
		box2.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		box2.add(textField3); //向列式盒中新增單行文字框
		boxH1.add(box2); //向行式盒中新增列式盒box2

		box3 = Box.createVerticalBox(); //例項化列式盒 box3
		box3.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		box3.add(new JLabel("姓名")); //向列式盒中新增  "姓名" 標籤
		box3.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		box3.add(new JLabel("物理成績")); //向列式盒中新增 "物理成績" 標籤
		boxH2.add(box3); //向行式盒中新增列式盒box3
		boxH2.add(Box.createHorizontalStrut(55));  //在行式盒中設定一個不可見的長為55的水平Strut物件
		
		box4 = Box.createVerticalBox();//例項化列式盒 box3
		box4.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		textField4 = new JTextField(12); //例項化單行文字框
		textField5 = new JTextField(12); //例項化單行文字框
		box4.add(textField4);//向列式盒中新增單行文字框
		box4.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		box4.add(textField5);//向列式盒中新增單行文字框
		boxH2.add(box4); //向行式盒中新增列式盒box4
		
		button =new JButton("錄入");  //例項化按鈕物件
		button.addActionListener(new ActionListener() {  //事件處理 , 給按鈕新增監視器
			
			@Override
			public void actionPerformed(ActionEvent e) {
				//例項化Student類物件並傳值
				try {
					Student student = new Student(textField1.getText(), textField4.getText(), Float.parseFloat(textField2.getText()), Float.parseFloat(textField5.getText()), Float.parseFloat(textField3.getText()));
					dbUtil.add(student); //呼叫MyDBUtil類中的add方法,並把student作為值傳入
					area.setText("你輸入的資訊新增成功!!"+"\r\n"+"你可以通過查詢成績來檢視相關資訊!!"); //新增成功後設置area中的資訊提示
					//執行上面的方法後將文字框中的值清除
					textField1.setText("");
					textField2.setText("");
					textField3.setText("");
					textField4.setText("");
					textField5.setText("");
				} catch (NumberFormatException e1) {
					// TODO Auto-generated catch block
					area.setText("溫馨提示!!"+"\r\n"+"新增成績失敗,請重新進行操作!!");//新增失敗後設置area中的資訊提示
					textField1.setText("");
					textField2.setText("");
					textField3.setText("");
					textField4.setText("");
					textField5.setText("");
				}
				 
			}
		});
		p3 = new JPanel(); //例項化面板物件
		p3.setLayout(new FlowLayout(FlowLayout.CENTER,5,100));  //設定p3面板的佈局為FlowLayout佈局,並設定水平和垂直間距
		p3.add(button);   //將按鈕新增到p3面板中
		
		p1 = new JPanel();  //例項化面板物件
		p1.add(boxH1); //向p1面板裡新增boxH1
		p2 = new JPanel();  //例項化面板物件
		p2.add(boxH2);  //向p2面板中新增boxH2物件
		
		p4 = new JPanel(); //例項化面板物件
		area = new JTextArea("請在下面輸入你想存入的相關的資訊!!!",3,30); //例項化多行文字框並做初值的設定
		p4.add(area);  //向p4面板中新增area
		
		panel = new JPanel();  //例項化面板物件
		panel.setLayout(new BorderLayout()); //設定panel面板的佈局為BorderLayout佈局
		panel.add(p1,BorderLayout.WEST);  //向panel面板的西邊新增p1面板
		panel.add(p2); //向panel面板中新增p2面板
		panel.add(p3,BorderLayout.SOUTH); //向panel面板的南面新增p3面板
		panel.add(p4,BorderLayout.NORTH); //向panel面板的北面新增p4面板				
	}
}
//查詢資料實現
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;


public class checkPanel implements ActionListener{
	JTable table; //定義一個表格引用
	Object name[]={"學號","姓名","數學成績","物理成績","英語成績"}; //定義一個姓名陣列
	Object a[][];  //定義一個a陣列
	ResultSet rs=null;
	MyDBUtil dbUtil = new MyDBUtil(); //建立一個MyDBUtil物件
	LinkedList <Student>list=null;  //定義一個LinkedList集合物件
	
	JPanel panel2;  //定義一個面板
	JButton button1;  //定義一個按鈕
	//查詢成績視窗設定
	
	public void setList(){  //定義一個方法獲取資料並將資料存入集合中
			
			rs= dbUtil.checkAll(); //呼叫MyDBUtil類中的checkAll方法。
			list=new LinkedList<Student>(); //例項化集合物件
			if(rs!=null){
				try {
					while(rs.next()){  //通過迴圈將資料存入集合中
						list.add(new Student(rs.getString(1),rs.getString(2),rs.getFloat(3),rs.getFloat(4),rs.getFloat(5)));
	
					}
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	public void setTable() {  //定義一個方法設定表格
		setList();  //呼叫setlist方法
		a=new Object[list.size()][name.length];  //例項化陣列a,並設定其行和列的大小
		for(int i=0;i<list.size();i++){  //通過迴圈向陣列中存入資料以放入表格中
			Student s=list.get(i); //拿到集合的第i個位置的元素並傳給Student物件
			//通過Student物件的get方法獲取相應的值
			a[i][0]=s.getId();
			a[i][1]=s.getName();
			a[i][2]=s.getMath();
			a[i][3]=s.getPhysics();
			a[i][4]=s.getEnglish();
		}
	    panel2.removeAll();   //使其面板重新整理
	    
	    button1 = new JButton("重新整理");  //例項化按鈕物件
	    button1.addActionListener(this);  //給按鈕新增監視器
	    table=new JTable(a, name); //例項化表格
	    
	    panel2.add(button1,BorderLayout.SOUTH); //向面板中新增按鈕
		panel2.add(new JScrollPane(table),BorderLayout.NORTH);  //向面板中新增表格
	}

	public checkPanel() {  //定義一個無參的建構函式
		
		panel2 = new JPanel(); //例項化面板物件
		panel2.setLayout(new BorderLayout()); //設定面板的佈局為BorderLayout()佈局。
		
		setTable();  //呼叫setTable方法
	}
	@Override
	public void actionPerformed(ActionEvent e) {  //新增事件
		setTable();  //呼叫上面的setTable方法
		
	}
}
// 排序實現
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class sortPanel implements ActionListener {

	JTable table;  //定義一個表格引用
	Object name[]={"學號","姓名","數學成績","物理成績","英語成績"};  //定義一個姓名陣列
	Object aa[][]; //定義一個aa陣列
	ResultSet rs=null;
	MyDBUtil dbUtil = new MyDBUtil();  //建立一個MyDBUtil物件
	LinkedList <Student>list=null;  //定義一個LinkedList集合物件
	
	JPanel panel3,p1,p2;  //定義三個面板
	JTextField field;  //定義一個單行文字框
	JTextArea area;  //定義一個多行文字框
	JButton b1,b2; //定義兩個按鈕
	
	public void setList(){ //定義一個方法獲取資料並將資料存入集合中
		
		rs= dbUtil.checkAll();  //呼叫MyDBUtil類中的checkAll方法。
		list=new LinkedList<Student>(); //例項化集合物件
		if(rs!=null){
			try {
				while(rs.next()){  //通過迴圈向集合中新增元素
					list.add(new Student(rs.getString(1),rs.getString(2),rs.getFloat(3),rs.getFloat(4),rs.getFloat(5)));
	
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public void setList1(String grade,String sort){ //定義一個方法獲取資料並將資料存入集合中 , 並設定指定的引數
		
		rs= dbUtil.checkAll(grade,sort);  //呼叫MyDBUtil中的帶引數的checkAll方法
		list=new LinkedList<Student>();  //例項化集合物件
		if(rs!=null){
			try {
				while(rs.next()){   //通過迴圈向集合中新增元素
					list.add(new Student(rs.getString(1),rs.getString(2),rs.getFloat(3),rs.getFloat(4),rs.getFloat(5)));
	
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public void setTable() { //定義一個方法設定表格
		setList();   //初始情況下先呼叫setList方法
		aa=new Object[list.size()][name.length];  //例項化陣列aa,並設定其行和列的大小
		for(int i=0;i<list.size();i++){  //通過迴圈向陣列中存入資料以放入表格中
			Student s=list.get(i);  //拿到集合的第i個位置的元素並傳給Student物件
			//通過Student物件的get方法獲取相應的值
			aa[i][0]=s.getId();
			aa[i][1]=s.getName();
			aa[i][2]=s.getMath();
			aa[i][3]=s.getPhysics();
			aa[i][4]=s.getEnglish();
		}
	    panel3.removeAll();  //使其面板重新整理
	    
	    b1 = new JButton("升序");   //例項化按鈕物件
	    b1.addActionListener(this);  //給按鈕新增監視器
	    b2 = new JButton("降序");  //例項化按鈕物件
	    b2.addActionListener(this);  //給按鈕新增監視器
	   
	    area = new JTextArea("請按表格輸入你想排序的資訊。如: 數學成績!!",2,15); //例項化多行文字框
	    field = new JTextField(16);   //例項化單行文字框
	    p1 = new JPanel();  //例項化面板物件
	    p1.add(field);  //向面板中新增文字框
	    p1.add(b1);  //向面板中新增按鈕
	    p1.add(b2);  //向面板中新增按鈕
	    
	    p2 = new JPanel();  //例項化面板物件
	    p2.setLayout(new BorderLayout());  //設定面板的佈局為BorderLayout佈局
	    p2.add(p1,BorderLayout.SOUTH);  //向p2面板中新增p1面板
	    p2.add(area);  //向p2面板中新增area
	    
	    table=new JTable(aa, name);  //例項化表格
	    panel3.add(p2);  //向panel3面板中新增p1面板
	    panel3.add(new JScrollPane(table),BorderLayout.NORTH);   //向panel3面板中新增表格
	}
	
	public sortPanel() {
			
			panel3 = new JPanel();   //例項化面板物件
			panel3.setLayout(new BorderLayout());  //設定面板的佈局為BorderLayout佈局
			
			setTable();  //呼叫setTable方法。
		}
		@Override
		public void actionPerformed(ActionEvent e) {   //新增事件
			//通過條件語句判斷輸入的資訊是否符合要求
			if("學號".equals(field.getText())||"姓名".equals(field.getText())||"數學成績".equals(field.getText())||"物理成績".equals(field.getText())||"英語成績".equals(field.getText())) {   
				if ("升序".equals(e.getActionCommand())) {  //判斷字元是否相等
					setList1(field.getText(),"asc");   //條件成立的情況下設定參
					aa=new Object[list.size()][name.length];  //例項化陣列aa,並設定其行和列的大小
					for(int i=0;i<list.size();i++){  //通過迴圈向陣列中存入資料以放入表格中
						Student s=list.get(i);  //拿到集合的第i個位置的元素並傳給Student物件
						//通過Student物件的get方法獲取相應的值
						aa[i][0]=s.getId();
						aa[i][1]=s.getName();
						aa[i][2]=s.getMath();
						aa[i][3]=s.getPhysics();
						aa[i][4]=s.getEnglish();
					}
					panel3.removeAll();  //使其面板重新整理
					
					b1 = new JButton("升序");  //例項化按鈕物件
					b1.addActionListener(this); //給按鈕新增監視器
					b2 = new JButton("降序");  //例項化按鈕物件
					b2.addActionListener(this); //給按鈕新增監視器
					
					area = new JTextArea(field.getText()+"的升序如表格所示!!",2,15); //例項化多行文字框
				    field = new JTextField(16);   //例項化單行文字框
				    p1 = new JPanel();  //例項化面板物件
				    p1.add(field);  //向面板中新增文字框
				    p1.add(b1);  //向面板中新增按鈕
				    p1.add(b2);  //向面板中新增按鈕
				    
				    p2 = new JPanel();  //例項化面板物件
				    p2.setLayout(new BorderLayout());  //設定面板的佈局為BorderLayout佈局
				    p2.add(p1,BorderLayout.SOUTH);  //向p2面板中新增p1面板
				    p2.add(area);  //向p2面板中新增area
				    
				    table=new JTable(aa, name);  //例項化表格
				    panel3.add(p2);  //向panel3面板中新增p1面板
				    panel3.add(new JScrollPane(table),BorderLayout.NORTH);   //向panel3面板中新增表格
					
			 }
			 if ("降序".equals(e.getActionCommand())) {  //判斷獲取的字元是否相等
				 setList1(field.getText(),"desc");  //條件成立的情況下設定引數
					aa=new Object[list.size()][name.length];  //例項化陣列aa,並設定其行和列的大小
					for(int i=0;i<list.size();i++){   //通過迴圈向陣列中存入資料以放入表格中
						Student s=list.get(i);  //拿到集合的第i個位置的元素並傳給Student物件
						//通過Student物件的get方法獲取相應的值
						aa[i][0]=s.getId();
						aa[i][1]=s.getName();
						aa[i][2]=s.getMath();
						aa[i][3]=s.getPhysics();
						aa[i][4]=s.getEnglish();
					}
				    panel3.removeAll();  //使其面板重新整理
				    
				    b1 = new JButton("升序");  //例項化按鈕物件
				    b1.addActionListener(this); //給按鈕新增監視器
				    b2 = new JButton("降序");  //例項化按鈕物件
				    b2.addActionListener(this); //給按鈕新增監視器
				    
				    area = new JTextArea(field.getText()+"的降序如表格所示!!",2,15); //例項化多行文字框
				    field = new JTextField(16);   //例項化單行文字框
				    p1 = new JPanel();  //例項化面板物件
				    p1.add(field);  //向面板中新增文字框
				    p1.add(b1);  //向面板中新增按鈕
				    p1.add(b2);  //向面板中新增按鈕
				    
				    p2 = new JPanel();   //例項化面板物件
				    p2.setLayout(new BorderLayout());  //設定面板的佈局為BorderLayout佈局
				    p2.add(p1,BorderLayout.SOUTH);  //向p2面板中新增p1面板
				    p2.add(area);  //向p2面板中新增area
				    
				    table=new JTable(aa, name);  //例項化表格
				    panel3.add(p2);  //向panel3面板中新增p1面板
				    panel3.add(new JScrollPane(table),BorderLayout.NORTH);   //向panel3面板中新增表格
			 }
		}else {
			setList();   //初始情況下先呼叫setList方法
			aa=new Object[list.size()][name.length];  //例項化陣列aa,並設定其行和列的大小
			for(int i=0;i<list.size();i++){  //通過迴圈向陣列中存入資料以放入表格中
				Student s=list.get(i);  //拿到集合的第i個位置的元素並傳給Student物件
				//通過Student物件的get方法獲取相應的值
				aa[i][0]=s.getId();
				aa[i][1]=s.getName();
				aa[i][2]=s.getMath();
				aa[i][3]=s.getPhysics();
				aa[i][4]=s.getEnglish();
			}
		    panel3.removeAll();  //使其面板重新整理
		    
		    b1 = new JButton("升序");   //例項化按鈕物件
		    b1.addActionListener(this);  //給按鈕新增監視器
		    b2 = new JButton("降序");  //例項化按鈕物件
		    b2.addActionListener(this);  //給按鈕新增監視器
		   
		    area = new JTextArea("溫馨提示!!"+"\r\n"+"你輸入的資訊有誤,請按表格輸入你想排序的資訊!!",2,15); //例項化多行文字框
		    field = new JTextField(16);   //例項化單行文字框
		    p1 = new JPanel();  //例項化面板物件
		    p1.add(field);  //向面板中新增文字框
		    p1.add(b1);  //向面板中新增按鈕
		    p1.add(b2);  //向面板中新增按鈕
		     
		    p2 = new JPanel();  //例項化面板物件
		    p2.setLayout(new BorderLayout());  //設定面板的佈局為BorderLayout佈局
		    p2.add(p1,BorderLayout.SOUTH);  //向p2面板中新增p1面板
		    p2.add(area);  //向p2面板中新增area
		    
		    table=new JTable(aa, name);  //例項化表格
		    panel3.add(p2);  //向panel3面板中新增p1面板
		    panel3.add(new JScrollPane(table),BorderLayout.NORTH);   //向panel3面板中新增表格
		}
	}
}
// 修改資料實現
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class modifyPanel {
	MyDBUtil dbUtil = new MyDBUtil();  //建立MyDBUtil類的物件
	JPanel panel4;  //建立一個面板
	
	//修改成績視窗元件設定
	JPanel p1,p2,p3,p4;  //定義四個面板
	Box boxH1,boxH2;  //定義兩個行式盒
	Box box1,box2,box3,box4; //定義四個列式盒
	JButton button1;  //定義一個按鈕
	JTextField t1,t2,t3,t4,t5,t6;  //定義六個單號文字框
	JTextArea area;
	
	public modifyPanel() {  //定義一個無參的建構函式
		//例項化行式盒
		boxH1 = Box.createHorizontalBox();
		boxH2 = Box.createHorizontalBox();
		
		box1 = Box.createVerticalBox(); //例項化列式盒
		box1.add(Box.createVerticalStrut(50)); //向列式盒中新增不可見的垂直Strut物件
		box1.add(new JLabel("學號"));  //向列式盒中新增 “學號” 標籤
		box1.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		box1.add(new JLabel("數學成績"));  //向列式盒中新增 “數學成績” 標籤
		box1.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		box1.add(new JLabel("英語成績"));  //向列式盒中新增 “英語成績” 標籤
		boxH1.add(box1);  //向行式盒boxH1中新增列式盒box1
		boxH1.add(Box.createHorizontalStrut(50));   //在行式盒boxH1中設定一個水平為50的不可見的Strut物件。
		
		box2 = Box.createVerticalBox();  //例項化列式盒
		box2.add(Box.createVerticalStrut(50)); //向列式盒中新增不可見的垂直Strut物件
		//例項化單行文字框
		t1 = new JTextField(12);   
		t2 = new JTextField(12);  
		t3 = new JTextField(12);  
		//向列式盒中新增單行文字框
		box2.add(t1);
		box2.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		box2.add(t2);
		box2.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		box2.add(t3);
		boxH1.add(box2);  //向行式盒中新增列式盒
		
		box3 = Box.createVerticalBox(); //例項化列式盒
		box3.add(Box.createVerticalStrut(50)); //向列式盒中新增不可見的垂直Strut物件
		box3.add(new JLabel("姓名"));  //向列式盒中新增 “姓名” 標籤
		box3.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		box3.add(new JLabel("物理成績")); //向列式盒中新增 “物理成績” 標籤
		boxH2.add(box3);  //向行式盒中新增列式盒
		boxH2.add(Box.createHorizontalStrut(70));  //在行式盒boxH2中設定一個水平為50的不可見的Strut物件
		
		box4 = Box.createVerticalBox(); //例項化列式盒
		box4.add(Box.createVerticalStrut(50)); //向列式盒中新增不可見的垂直Strut物件
		//例項化單行文字框
		t4 = new JTextField(12);
		t5 = new JTextField(12);
		//向列式盒中新增單行文字框
		box4.add(t4);
		box4.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		box4.add(t5);
		boxH2.add(box4);  //向行式盒中新增列式盒
		
		p2 = new JPanel();   //例項化面板物件
		p2.add(boxH1);  //向p2面板中新增行式盒boxH1
		p3 = new JPanel();  //例項化面板物件
		p3.add(boxH2);   //向p3面板中新增行式盒boxH2
		
		t6 = new JTextField(10); //例項化一個單行文字框
		button1 = new JButton("修改");   //例項化一個按鈕物件
		button1.addActionListener(new ActionListener() {  //給按鈕新增監視器處理事件
			
			@Override
			public void actionPerformed(ActionEvent e) {
				try {  //異常情況處理
					if(t1.getText().equals(t6.getText())) {   //通過條件判斷語句判斷輸入的資訊是否符合要求
						//獲取到文字框中的內容傳給Student類
						Student student = new Student(t1.getText(), t4.getText(), Float.parseFloat(t2.getText()), Float.parseFloat(t5.getText()), Float.parseFloat(t3.getText()));    
						dbUtil.modify(student);  //呼叫MyDBUtil類中的modify類
						area.setText("成績資訊修改成功,你可以通過查詢成績來檢視相關資訊!!!"); //給多行文字框設值
						//執行之後設定文字框的值為空
						t1.setText("");
						t2.setText("");
						t3.setText("");
						t4.setText("");
						t5.setText("");
						t6.setText("");
					}else {
						area.setText("溫馨提示!!"+"\r\n"+"由於兩處學號資訊不一致,無法進行修改.."+"\r\n"+"請重新輸入你想修改的資訊!!"); //給多行文字框設值
						//執行之後設定文字框的值為空
						t1.setText("");
						t2.setText("");
						t3.setText("");
						t4.setText("");
						t5.setText("");
						t6.setText("");
					}
				} catch (NumberFormatException e1) {  //異常情況處理
					// TODO Auto-generated catch block
					area.setText("溫馨提示!!"+"\r\n"+"輸入的成績不符合要求,修改失敗,請重新進行操作!!");//修改失敗後設置area中的資訊提示
					//執行之後設定文字框的值為空
					t1.setText("");
					t2.setText("");
					t3.setText("");
					t4.setText("");
					t5.setText("");
					t6.setText("");
				}
			}
		});
		p4 = new JPanel();  //例項化面板物件
		p4.add(new JLabel("輸入學號: "));  //向p4面板中新增標籤
		p4.add(t6);  //向p4面板中新增t6文字框
		p4.add(button1);  //向p4面板新增按鈕
		
		area = new JTextArea("請按標籤資訊輸入你想修改的資訊!!",5,30);  //例項化多行文字框
		p1 = new JPanel();  //例項化面板
		p1.add(area);  //向面板中新增area
		
		panel4 = new JPanel();  //例項化面板物件
		panel4.setLayout(new BorderLayout());  //設定panel4面板的佈局為BorderLayout佈局
		panel4.add(p2,BorderLayout.WEST); //向panel4面板中新增p2面板並放在panel4的西面。
		panel4.add(p3);  //向panel4面板中新增p3面板
		panel4.add(p4,BorderLayout.SOUTH); //向panel4面板中新增p4面板並放在panel4的南面。
		panel4.add(p1,BorderLayout.NORTH);  //向panel4面板中新增p1面板並放在panel4的北面。
		
	}
}
// 刪除資料實現
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class deletePanel {
	MyDBUtil dbUtil = new MyDBUtil();   //建立MyDBUtil類的物件
	JPanel panel5;  //定義一個面板物件
	
	JPanel p1,p2,p3,p4;   //定義四個面板物件
	Box boxH1,boxH2;  //定義兩個行式盒
	Box boxV1,boxV2,boxV3,boxV4;  //定義四個列式盒
	JButton button1;  //定義一個按鈕
	JTextField te1,te2,te3,te4,te5,te6;  //定義六個單行文字框
	JTextArea area;  //定義一個多行文字框
	
	public deletePanel() {  //定義一個無參的建構函式
		//例項化行式盒
		boxH1 = Box.createHorizontalBox();
		boxH2 = Box.createHorizontalBox();
		
		boxV1 = Box.createVerticalBox(); //例項化列式盒
		boxV1.add(Box.createVerticalStrut(50)); //向列式盒中新增不可見的垂直Strut物件
		boxV1.add(new JLabel("學號"));  //向列式盒中新增 “學號” 標籤
		boxV1.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		boxV1.add(new JLabel("數學成績"));  //向列式盒中新增 “數學成績” 標籤
		boxV1.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		boxV1.add(new JLabel("英語成績"));  //向列式盒中新增 “英語成績” 標籤
		boxH1.add(boxV1);  //向行式盒boxH1中新增列式盒boxV1
		boxH1.add(Box.createHorizontalStrut(50));  //在行式盒boxH1中設定一個水平為50的不可見的Strut物件。
		
		boxV2 = Box.createVerticalBox(); //例項化列式盒
		boxV2.add(Box.createVerticalStrut(50)); //向列式盒中新增不可見的垂直Strut物件
		//例項化單行文字框
		te1 = new JTextField(12);
		te2 = new JTextField(12);
		te3 = new JTextField(12);
		//向列式盒中新增單行文字框
		boxV2.add(te1);
		boxV2.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		boxV2.add(te2);
		boxV2.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		boxV2.add(te3);
		boxH1.add(boxV2); //向行式盒中新增列式盒
		
		boxV3 = Box.createVerticalBox();  //例項化列式盒
		boxV3.add(Box.createVerticalStrut(50)); //向列式盒中新增不可見的垂直Strut物件
		boxV3.add(new JLabel("姓名"));  //向列式盒中新增 “姓名” 標籤
		boxV3.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		boxV3.add(new JLabel("物理成績"));  //向列式盒中新增 “物理成績” 標籤
		boxH2.add(boxV3);  //向行式盒中新增列式盒
		boxH2.add(Box.createHorizontalStrut(70));  //在行式盒boxH2中設定一個水平為50的不可見的Strut物件
		
		boxV4 = Box.createVerticalBox();  //例項化列式盒
		boxV4.add(Box.createVerticalStrut(50)); //向列式盒中新增不可見的垂直Strut物件
		//例項化單行文字框
		te4 = new JTextField(12);
		te5 = new JTextField(12);
		//向列式盒中新增單行文字框
		boxV4.add(te4);
		boxV4.add(Box.createVerticalStrut(35)); //向列式盒中新增不可見的垂直Strut物件
		boxV4.add(te5);
		boxH2.add(boxV4);  //向行式盒中新增列式盒
		
		p1 = new JPanel();  //例項化面板物件
		p1.add(boxH1);  //向p1面板中新增行式盒boxH1
		p2 = new JPanel();   //例項化面板物件
		p2.add(boxH2);  //向p2面板中新增行式盒boxH2
		
		te6 = new JTextField(10);  //例項化一個單行文字框
		button1 = new JButton("刪除");  //例項化一個按鈕物件
		button1.addActionListener(new ActionListener() {  //給按鈕新增監視器處理事件
			
			@Override
			public void actionPerformed(ActionEvent e) {
				try {  //異常處理
					if(te1.getText().equals(te6.getText())) {   //通過條件判斷語句判斷輸入的資訊是否符合要求
						//獲取到文字框中的內容傳給Student類
						Student student = new Student();    
						student.set(te1.getText(), te4.getText(), Float.parseFloat(te2.getText()), Float.parseFloat(te5.getText()), Float.parseFloat(te3.getText()));
						dbUtil.delete(student); //呼叫MyDBUtil類中的modify類
						area.setText("成績資訊刪除成功,你可以通過查詢成績來檢視相關資訊!!!");  //給多行文字框設值
						//執行之後設定文字框的值為空
						te1.setText("");
						te2.setText("");
						te3.setText("");
						te4.setText("");
						te5.setText("");
						te6.setText("");
					}else {
						area.setText("溫馨提示!!"+"\r\n"+"由於兩處學號資訊不一致,無法進行刪除.."+"\r\n"+"請重新輸入你想刪除的資訊!!"); //給多行文字框設值
						//執行之後設定文字框的值為空
						te1.setText("");
						te2.setText("");
						te3.setText("");
						te4.setText("");
						te5.setText("");
						te6.setText("");
					}
				}catch (NumberFormatException e1) {
					// TODO Auto-generated catch block
					area.setText("溫馨提示!!"+"\r\n"+"輸入的成績不符合要求,刪除失敗,請重新進行操作!!!");  //刪除失敗後設置area中的資訊提示
					//執行之後設定文字框的值為空
					te1.setText("");
					te2.setText("");
					te3.setText("");
					te4.setText("");
					te5.setText("");
					te6.setText("");
				}
			}
		});
		p3 = new JPanel();   //例項化面板物件
		p3.add(new JLabel("輸入學號: "));   //向p3面板中新增標籤
		p3.add(te6);  //向p3面板中新增t6文字框
		p3.add(button1);  //向p3面板新增按鈕
		
		area = new JTextArea("請按標籤資訊輸入你想刪除的資訊!!",5,30); //例項化多行文字框
		p4 = new JPanel();  //例項化面板
		p4.add(area); //向面板中新增area
		
		panel5 = new JPanel();  //例項化面板物件
		panel5.setLayout(new BorderLayout());  //設定panel5面板的佈局為BorderLayout佈局
		panel5.add(p1,BorderLayout.WEST);  //向panel5面板中新增p1面板並放在panel5的西面
		panel5.add(p2);  //向panel5面板中新增p2面板
		panel5.add(p3,BorderLayout.SOUTH);  //向panel5面板中新增p3面板並放在panel5的南面。
		panel5.add(p4,BorderLayout.NORTH);  //向panel5面板中新增p4面板並放在panel5的北面。
	}
}
// 資料庫操作實現
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class MyDBUtil {

	    //先單獨寫一個方法,獲取連線
		public Connection getCon() {
			Connection con=null;  //定義一個連線資料庫的變數
			
			try {
				//在java檔案中載入驅動類
				Class.forName("com.mysql.cj.jdbc.Driver");
				//連線資料庫
				con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?user=root&password=root&useSSL=true&serverTimezone=GMT%2B8");
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return con;  //返回連線
		}
		
		//查詢所有記錄
		public ResultSet checkAll() {
			Connection con = getCon(); //獲取上面的連線
			Statement statement=null;
			ResultSet rs=null;
			try {
				if (con!=null) {
					//建立查詢語句
					statement = con.createStatement();
					//使用查詢語句獲取結果
					rs=statement.executeQuery("select * from student");
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return rs;
		}

		//查詢所有記錄並按某一成績進行排序(升序或降序)
		public ResultSet checkAll(String grade,String sort) {
			Connection con = getCon(); //獲取上面的連線
			Statement statement=null;
			ResultSet rs=null;
			try {
				if (con!=null) {
					//建立查詢語句
					statement = con.createStatement();
					//使用查詢語句獲取結果
					rs=statement.executeQuery("select * from student order by "+grade+" "+sort+"");
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			return rs;
		}
	
		//新增記錄
		public void add(Student stu) {  //單獨定義一個方法向資料庫中新增資料。
			Connection con = getCon(); //拿到連線
			PreparedStatement pst = null; //建立預處理物件
			try {
				if (con!=null) {
					pst=con.prepareStatement("insert into student values(?,?,?,?,?)");  //使用預處理語句提高效率
					pst.setString(1, stu.getId()); //給第一個問號處設值
					pst.setString(2,stu.getName()); //給第二個問號處設值
					pst.setDouble(3, stu.getMath()); //給第三個問號處設值
					pst.setDouble(4, stu.getPhysics());  //給第四個問號處設值
					pst.setDouble(5, stu.getEnglish());  //給第五個問號處設值
					pst.executeUpdate();  //由於使用了預處理語句,執行時就不用傳入執行語句。
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally {  //關閉資源  原則: 先開啟的後關閉,後開啟的先關閉。 異常最好各處理各的。
				if (pst!=null) {
					try {
						pst.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				if (con!=null) {
					try {
						con.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		}
		
		//刪除記錄
		public void delete(Student stu) {
			Connection con = getCon(); //拿到連線
			PreparedStatement pst = null; //定義預處理變數
			try {
				if (con!=null) {
					String sql = "delete from student where 學號 = ?"; //設定查詢語句
					pst = con.prepareStatement(sql); //使用預處理語句
					pst.setString(1, stu.getId());  //給問號設定值
					pst.execute();  //執行查詢語句
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally {
				if (pst!=null) {
					try {
						pst.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				if (con!=null) {
					try {
						con.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		}
		
		//修改記錄
		public void modify(Student stu) { 		
			Connection con = getCon();  //拿到連線
			PreparedStatement pst = null; //預處理語句
			try {
				if (con!=null) {
					String sql = "update student set 姓名=?,數學成績=?,物理成績=?,英語成績=? where 學號=?"; //設定查詢語句
					pst = con.prepareStatement(sql);  //建立查詢語句的時候就把sql語句傳遞進去。
					pst.setString(1, stu.getName());  //給第一處問號設值
					pst.setFloat(2, stu.getMath());  //給第二處問號設值
					pst.setFloat(3, stu.getPhysics());  //給第三處問號設值
					pst.setFloat(4, stu.getEnglish());  //給第四處問號設值
					pst.setString(5, stu.getId());  //給第五處問號設值
					pst.execute();  //執行的時候就不傳入sql語句了。
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally {
				if(pst!=null) {
					try {
						pst.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				if(con!=null) {
					try {
						con.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		}
}

本程式碼完全由個人實現: (僅做參考)