Java课程设计之 学生成绩管理系统「建议收藏」

Java课程设计之 学生成绩管理系统「建议收藏」实现内容:设计开发一个学生成绩管理系统(1)根据实现的功能,划分出合理的对象类,明确各个对象类之间的关系。为各个对象类设计正确的域和方法,为每个方法设计合理的方法体。同时,为对象类及内部的域和方法运用正确的修饰符。功能要求:(1)录入成绩(2)查询成绩(3)成绩排序(4)修改成绩(5)删除成绩(6)将数据保存在数据库表中该课程设计涉及MySQL数据库,建表操作,java操作SQL语句(JDBC数据库操作)以及JavaS

大家好,又见面了,我是你们的朋友全栈君。

实现内容:

更多Java学习资源尽在B站账号:清风学Java
https://space.bilibili.com/591988762
只做Java分享,欢迎个位小伙伴前来观看,更多优质学习资源持续更新中…

 设计开发一个学生成绩管理系统

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

本代码完全由个人实现: (仅做参考)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/156514.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号