栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java期末大作业补救基地~ 谁还不会点JDBC?【Java Swing 和 Mysql】历时三天三夜的代码&&直接白拿

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java期末大作业补救基地~ 谁还不会点JDBC?【Java Swing 和 Mysql】历时三天三夜的代码&&直接白拿

Java期末大作业补救基地~ 谁还不会点JDBC?【Java Swing 和 Mysql】历时三天三夜的代码&&直接白拿
QQ群源码:749949544

视频讲解地址:B站

项目结构
  • 1.代码结构
    • 1.1图片Logo
    • 1.2主页面
    • 1.3JDBC操作
    • 1.4学生页面
    • 1.5老师页面
  • 2.页面展示&代码
    • 2.1主页面
      • 2.1.1主页面(登录&注册)
      • 2.1.1登录和注册验证(逻辑)
    • 2.2学生页面
      • 2.2.1学生查询成绩页面
      • 2.2.1具体JDBC
    • 2.3老师页面
      • 2.3.1班级管理页面
      • 2.3.1具体JDBC
      • 2.3.2课程管理页面
      • 2.3.2具体JDBC
      • 2.3.3学生管理页面
      • 2.3.3具体JDBC
      • 2.3.4成绩管理页面
      • 2.3.4具体JDBC
    • 2.4具体添加,删除,修改
      • 2.4.1四个页面的添加
      • 2.4.1四个页面的删除
      • 2.4.1四个页面的修改
  • 3.数据库表

1.代码结构

1.1图片Logo


图片logo

1.2主页面


主页面:登录和注册页面

1.3JDBC操作


主要是JDBC操作
baseOperate:主要是班级管理,学生管理,成绩管理,课程管理的添加,删除,修改操作
student_inquire:获取学生的成绩(查询)。
teacher_inqure:获取班级管理,学生管理,成绩管理,课程管理的具体信息(查询)
verification:登录&注册的逻辑验证

1.4学生页面


first_web:学生页面大概框架
second_web:学生页面具体实现

1.5老师页面


first_web:大体框架
second_web:具体实现

2.页面展示&代码 2.1主页面 2.1.1主页面(登录&注册)

package index;

import java.awt.Color;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import Mysql.verification.Login_register_verification;
import student.first_web.Student_Main;
import teacher.first_web.Teacher_Main;

public class Main 
{
	public static String u = null;
	public static void FirstPage()
	{
		//创建窗口
		JFrame f = new JFrame("学生管理系统");
		//设置窗口大小
		Dimension d = new Dimension();
		d.setSize(510, 580);//510 580
		f.setSize(d);
//				//窗口背景颜色(无效果)
//				f.setBackground(Color.red);
		//窗口显示位置
		f.setLocationRelativeTo(null);
		//设置布局方式:绝对定位
		f.setLayout(null);
		//字体大小
		Font font = new Font("login_web", Font.BOLD, 20);
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@账号&密码&账号登录身份@@@@@@@@@@@@@@@@@
		//实例化
		JLabel username = new JLabel("用户名:");
		JLabel password = new JLabel("密码:");
		JLabel identity = new JLabel("账号登录身份:");
		//设置字体样式
		username.setFont(font);
		password.setFont(font);
		identity.setFont(font);
		//设置字体颜色
		username.setForeground(Color.blue);
		password.setForeground(Color.blue);
		identity.setForeground(Color.blue);
		//设置绝对定位
		username.setBounds(100, 225, 150, 30);
		password.setBounds(100, 275, 150, 30);
		identity.setBounds(100, 325, 150, 30);
		f.add(username);
		f.add(password);
		f.add(identity);
		//@@@@@@@@@@@@@@@@@@@@@@@@top学校logo@@@@@@@@@@@@@@@@@
		//实例化
		Icon schoolimg = new ImageIcon("src/img/logo.jpg");
		JLabel school_Image = new JLabel(schoolimg,JLabel.CENTER);
		//设置绝对定位
		school_Image.setBounds(0, 0, 500,200);
		f.add(school_Image);

		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@登录&注册按钮@@@@@@@@@@@@@@@@@@@@
		//实例化
		JButton login_but = new JButton("登录");
		JButton register_but = new JButton("注册");
		//设置绝对定位
		login_but.setBounds(140, 400, 90, 50);
		register_but.setBounds(260, 400, 90, 50);
		//字体样式
		login_but.setFont(font);
		register_but.setFont(font);
		//字体颜色
		login_but.setForeground(Color.red);
		register_but.setForeground(Color.red);
		f.add(login_but);
		f.add(register_but);
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@文本框@@@@@@@@@@@@@@@@@@
		JTextField name = new JTextField(30);
		//JTextField pass = new JTextField(30);
		JPasswordField pass =new JPasswordField(30);
		//pass.setEchoChar('X');
		String types[]= {"老师","学生"};
		JComboBox jbox = new JComboBox(types);
		//位置:
		name.setBounds(200, 225, 150, 30);
		pass.setBounds(200, 275, 150, 30);
		jbox.setBounds(250, 325, 100, 30);
		f.add(name);
		f.add(pass);
		f.add(jbox);
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@点击登录@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		login_but.addActionListener(new ActionListener() 
		{
			
			public void actionPerformed(ActionEvent e) 
			{
				//判断触发源是不是 按钮
				if(e.getSource()==login_but)
				{
					System.out.println(name.getText()+"t"+new String(pass.getPassword())+"t"+(String)jbox.getSelectedItem());
					try 
					{
						//存在此用户==》登陆成功
						if(Login_register_verification.login_verification(name.getText(), new String(pass.getPassword()),(String)jbox.getSelectedItem()))
						{
							u = name.getText();
							System.out.println(u);
							//打开老师页面
							if((jbox.getSelectedItem().equals("老师")))
							{
								f.dispose();
								Teacher_Main.login();
							}
							//打开学生页面
							else 
							{
								f.dispose();
								Student_Main.login();
							}
						}
						//登陆失败
						else 
						{
							name.setText("");
							pass.setText("");
							JOptionPane.showMessageDialog(null, "账号或密码错误,请重新输入!!n或身份选择错误!!!!n如果没有注册过,请先注册!!!");
						}
					} 
					catch (Exception e1) 
					{
						e1.printStackTrace();
					}
				}
			}
		});
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@点击注册@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		register_but.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e) 
			{
				System.out.println(name.getText()+"t"+new String(pass.getPassword())+"t"+(String)jbox.getSelectedItem());
				//判断触发源是不是 按钮
				if(e.getSource()==register_but)
				{
					try 
					{
						//用户名或密码 空
						if(name.getText().isEmpty() || new String(pass.getPassword()).isEmpty())
						{
							JOptionPane.showMessageDialog(null, "用户名or密码不能为空!");
						}
						else
						{
							//成功注册
							if(Login_register_verification.register_verification(name.getText(), new String(pass.getPassword()),(String)jbox.getSelectedItem()))
							{
								name.setText("");
								pass.setText("");
								JOptionPane.showMessageDialog(null, "注册成功!请登录~~");
							}
							//注册失败
							else
							{
								JOptionPane.showMessageDialog(null, "用户名存在,注册失败!!!");
							}
						}
					}
					catch (Exception e2) 
					{
						e2.printStackTrace();
					}
					
				}
			}
		});
		f.addWindowListener(new WindowAdapter() 
		{
			public void windowClosing(WindowEvent e)
			{
				//测试
				//System.out.println("点击退出了!!");
				System.exit(1);
			}
		});
		//显示窗口
		f.setVisible(true);

	}
	
	public static void main(String[] args) 
	{
			FirstPage();	
	}

}

2.1.1登录和注册验证(逻辑)
package Mysql.verification;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;


public class Login_register_verification 
{
	public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
	public static final String DBURL = "jdbc:mysql://localhost:3306/student";
	public static final String DBUSER = "root";
	public static final String DBPASS = "写自己的密码";	
	
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@登录(是否存在用户&密码&类型)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	public static boolean login_verification(String username,String password,String type) throws Exception
	{		
		Class.forName(DBDRIVER);
		String sql = "select username,password,type from user where username = ? and password = ? and type = ?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, username);
		pstmt.setString(2, password);
		pstmt.setString(3,type);
		ResultSet rs = pstmt.executeQuery();
		
		if(rs.next())//存在
		{
			conn.close();
			return true; 
		}
		else//不存在
		{
			conn.close();
			return false;
		}
	}
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@注册(用户名是否被注册过)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	public static boolean register_verification(String username,String password,String type) throws Exception
	{		
		Class.forName(DBDRIVER);
		String sql = "select username from user where username = ?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, username);
		ResultSet rs = pstmt.executeQuery();
		
		if(rs.next())//存在-->失败
		{
			conn.close();
			return false; 
		}
		else//不存在-->注册成功
		{
			String sql1 = "insert into user(username,password,type) values(?,?,?)";
			PreparedStatement pstmt1 = conn.prepareStatement(sql1);
			pstmt1.setString(1, username);
			pstmt1.setString(2, password); 
			pstmt1.setString(3,type);
			pstmt1.executeUpdate();
			conn.close();
			return true;
		}
	}	
}

2.2学生页面 2.2.1学生查询成绩页面

package student.first_web;

import javax.swing.JFrame;

import student.second_web.Student_grade_web;
public class Student_Main 
{
	public static void login() throws Exception
	{
		JFrame f = new JFrame("学生-主页");
		f.setSize(900,600);
		f.setLocationRelativeTo(null);
		//加入页面
		f.add(Student_grade_web.getweb());
		f.setVisible(true);
	}

}

package student.second_web;

import java.awt.BorderLayout;
import java.awt.Color;
import java.util.Vector;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import Mysql.student_inquire.Grade_Inquire;
import index.*;
public class Student_grade_web 
{

	public static JPanel getweb() throws Exception
	{
		JPanel pan1 = new JPanel();
		pan1.setBackground(Color.DARK_GRAY);
		//创建JScrollPane(滚动面板)
		final JScrollPane scrollPane = new JScrollPane();
		pan1.add(scrollPane,BorderLayout.CENTER);
		
		//设置JTable中的列名
		Vector columnNames =  Grade_Inquire.gettitle();
		//设置JTable的表格数据
		Vector> tableValues =  Grade_Inquire.getcontent(Main.u);

		
		//创建JTable (表格)
		JTable table = new JTable();
		//创建表格模型	
		DefaultTableModel defaultTableModel = new DefaultTableModel(tableValues, columnNames);	
		//设置JTable的表格模型	
		table.setModel(defaultTableModel);
		table.setEnabled(false);
		//#########################将JTable添加到JScrollPane中######################
		scrollPane.setViewportView(table);//将组件放入滚动面板		
		return pan1;
	}
}


2.2.1具体JDBC
package Mysql.student_inquire;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

public class Grade_Inquire
{
	public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
	public static final String DBURL = "jdbc:mysql://localhost:3306/student";
	public static final String DBUSER = "root";
	public static final String DBPASS = "dyh20011022";
	
	//学生成绩查询【标题】
	public static Vector gettitle() throws Exception
	{
		//title
		Vector title = new Vector();
		title.add("姓名");
		title.add("课程");
		title.add("分数");	

		return title;
	}
	//学生成绩查询【内容】
	public static  Vector< Vector > getcontent(String sno) throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "select a.sname,b.cname,c.grade from student_mg a,course_mg b,grade_mg c where a.sno=c.sno and b.cno = c.cno and a.sno=?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1,sno);
		ResultSet rs = pstmt.executeQuery();
		Vector< Vector > content = new Vector>();
		while(rs.next())
		{
			String sname = rs.getString(1);
			String cname = rs.getString(2);
			int grade = rs.getInt(3);
			Vector d = new Vector();
			d.add(sname);
			d.add(cname);
			d.add(grade);
			content.add(d);
		}
		
		rs.close();
		pstmt.close();
		conn.close();
		
		return content;
	}
}

 
2.3老师页面 
2.3.1班级管理页面 

package teacher.first_web;

import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import teacher.second_web.Class_mg_web;
import teacher.second_web.Course_mg_web;
import teacher.second_web.Grade_mg_web;
import teacher.second_web.Student_mg_web;
public class Teacher_Main
{

	
	public static void login() throws Exception
	{
        //Jframe
        JFrame f = new JFrame("老师-主页");
		f.setSize(1000,600);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setLocationRelativeTo(null);
		//JTabbedPane
		JTabbedPane tab = new JTabbedPane();
		tab.setForeground(Color.blue);
				
		tab.addTab("班级管理", Class_mg_web.getweb());
		tab.addTab("课程管理", Course_mg_web.getweb());
		tab.addTab("学生管理", Student_mg_web.getweb());
		tab.addTab("成绩管理", Grade_mg_web.getweb());
		
		f.add(tab);
		f.setVisible(true);
	}
}

package teacher.second_web;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import index.*;
import Mysql.baseOperate.*;
import Mysql.teacher_inquire.Class_mg_sql;
public class Class_mg_web
{
	//选择行
	static int selectedRow ;
	//创建JTable (表格)
	static JTable table = new JTable();
	static DefaultTableModel defaultTableModel ;
	public static void update()throws Exception
	{
		//设置JTable中的列名
		Vector columnNames =  Class_mg_sql.gettitle();
		//设置JTable的表格数据
		Vector> tableValues =  Class_mg_sql.getcontent(Main.u);
		//创建表格模型	
		defaultTableModel = new DefaultTableModel(tableValues, columnNames);	
		//设置JTable的表格模型	
		table.setModel(defaultTableModel);
	}
	
	public static JPanel getweb() throws Exception
	{
		JPanel pan1 = new JPanel();
		pan1.setBackground(Color.DARK_GRAY);
		//单行文本框	
		JTextField aTextField;
		JTextField bTextField;
		JTextField cTextField;
		//创建JScrollPane(滚动面板)
		final JScrollPane scrollPane = new JScrollPane();
		pan1.add(scrollPane,BorderLayout.CENTER);
		
		update();
//		//设置JTable中的列名
//		Vector columnNames =  new Class_mg_sql().gettitle();
//		//设置JTable的表格数据
//		Vector> tableValues =  new Class_mg_sql().getcontent(Main.u);
//		//创建表格模型	
//		DefaultTableModel defaultTableModel = new DefaultTableModel(tableValues, columnNames);	
//		
//		//设置JTable的表格模型	
//		table.setModel(defaultTableModel);
	
		//#########################将JTable添加到JScrollPane中######################
		scrollPane.setViewportView(table);//将组件放入滚动面板
		final JPanel panel = new JPanel();	
		panel.setBackground(Color.lightGray);
		pan1.add(panel,BorderLayout.SOUTH);
		
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   文本框      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		//第一个文本框
		panel.add(new JLabel("教师编码: "));	
		aTextField = new JTextField("teacherId",10);
		panel.add(aTextField);	
		//第二个文本框
		panel.add(new JLabel("班级号:"));
		bTextField = new JTextField("classNum", 10);	
		panel.add(bTextField);
		//第三个文本框
		panel.add(new JLabel("班级名称: "));	
		cTextField = new JTextField("className", 10);	
		panel.add(cTextField);	
		
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  按钮         @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		JButton insertButton = new JButton("添加");	
		JButton deleteButton = new JButton("删除");	
		JButton updateButton = new JButton("修改");	
		insertButton.setSize(50, 40);
		panel.add(insertButton);	
		panel.add(deleteButton);	
		panel.add(updateButton);
		
		
		//设置表格的选择模式---为单选模式
		table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		
		//@@@@@@@@@@@@@@@@@@@@@@点击JScrollPane滚动面板,取消选中的行@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		scrollPane.addMouseListener(new MouseAdapter()
		{	
			public void mouseClicked(MouseEvent e) 
			{	
				//取消掉选中行,但是选中行的索引值还是在的,没有取消掉	
				table.clearSelection();	
				//显示选中行的索引值。	
				System.out.println("点击空白处:"+selectedRow);	
				//设置JTextField的默认值	
				aTextField.setText("teacherId");	
				bTextField.setText("classNum");	
				cTextField.setText("className");
			}
		});
		
		//@@@@@@@@@@@@@@@@@ 将选中的JTable行的的信息传递给--aTestField、bTextField、cTextField@@@@@@@@@@@@@@@@@@@@@@
		
		table.addMouseListener(new MouseAdapter()
		{
			public void mouseClicked(MouseEvent e) 
			{
				//获取到JTable中选定行的---索引值
				selectedRow = table.getSelectedRow();
				//获取到指定单元格的值
				Object oa = defaultTableModel.getValueAt(selectedRow, 0);
				Object ob = defaultTableModel.getValueAt(selectedRow, 1);
				Object oc = defaultTableModel.getValueAt(selectedRow, 2);

				//将获取去到的DefaultTableModel中指定单元格的值,传递给JTextField
				aTextField.setText(oa.toString());
				bTextField.setText(ob.toString());
				cTextField.setText(oc.toString());
				
			}
		});
		//@@@@@@@@@@@@@@@@@@@@@@@@@添加@@@@@@@@@@@@@@@@@@@@@@@@@
		insertButton.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) 
			{
				System.out.println("添加");
				//设置要添加到DefaultTableModel中的---行数据内容
//				String[] rowValues = {
//						aTextField.getText(),
//						bTextField.getText(),
//						cTextField.getText()
//						};
				//是自己的教师编码
				if(Main.u.equals(aTextField.getText())) 
				{	
					System.out.println(Main.u);
					try 
					{
						if(Add.isRepeat(bTextField.getText()))
						{
							JOptionPane.showMessageDialog(null, "已经输入过该班级号!!");
						}
						else
						{	
							//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ add_mysql  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$
							Add.class_mg(aTextField.getText(), bTextField.getText(), cTextField.getText());
							update();
						}
					}
					catch (Exception e1) 
					{
						e1.printStackTrace();
					}
				}
				//不是自己的教师编码
				else 
				{
					JOptionPane.showMessageDialog(null, "您的教师编码不对!!");
				}
				
				
				//设置JTextField的默认值
				aTextField.setText("teacherId");
				bTextField.setText("classNum");
				cTextField.setText("className");
			}
		});
		//##########################删除####################################
		deleteButton.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e)
			{	
				System.out.println("删除");
				//获取到JTable中选定行的---索引值	
				selectedRow = table.getSelectedRow();
				//选中行
				if(selectedRow!=-1) 
				{
					try 
					{
						//$$$$$$$$$$$$$$$$$$$$$$  delete_mysql  $$$$$$$$$$$$$$$$$$$$$$$$$$$$
						Delete.class_mg(aTextField.getText(), bTextField.getText(), cTextField.getText());
						update();
					}
					catch (Exception e2)
					{
						e2.printStackTrace();
					}
					
					System.out.println("delete_btn:"+selectedRow);		
				}
				else 
				{
					JOptionPane.showMessageDialog(null, "没有选中删除的单元格!!");	
				}
				
			}
		});
		
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@修改@@@@@@@@@@@@@@@@@@@@@@@
		updateButton.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e) 
			{
				//获取到JTable中选定行的---索引值
				selectedRow = table.getSelectedRow();
				System.out.println("修改");
				System.out.println("修改行数:"+selectedRow);
				
				//JTable中行的索引值是从0,1,2.3...开始的,
				//只有选中行时,才能修改内容
				if(selectedRow!=-1)
				{
					//获取记录唯一ID
					int id = (int) table.getValueAt(selectedRow, 3);
					System.out.println("选中行的唯一记录ID:"+id);
					
					//修改后 还是自己的教师编码
					if(Main.u.equals(aTextField.getText()))
					{
						try 
						{
								System.out.println("else");
								//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ update_mysql  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$
								Update.class_mg(aTextField.getText(), bTextField.getText(), cTextField.getText(),id);
								update();
						}
						catch (Exception e1) 
						{
							e1.printStackTrace();
						}
					}
					else //不是自己的教师编码
					{
						JOptionPane.showMessageDialog(null, "您的教师编码不对!!");
					}
				}
				else 
				{
					System.out.println("没有选中修改的单元格!!");
					JOptionPane.showMessageDialog(null, "没有选中修改的单元格!!");	
				}
			}
			
		});
		
		return pan1;
	}
}


2.3.1具体JDBC
package Mysql.teacher_inquire;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

public class Class_mg_sql 
{
	public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
	public static final String DBURL = "jdbc:mysql://localhost:3306/student";
	public static final String DBUSER = "root";
	public static final String DBPASS = "dyh20011022";
	
	//班级管理【标题】
	public static Vector gettitle() throws Exception
	{
		//title
		Vector title = new Vector();
		title.add("教师编码");
		title.add("班级号");
		title.add("班级名称");	
		title.add("记录ID");	

		return title;
	}
	//班级管理【内容】
	public static  Vector< Vector > getcontent(String teacherId) throws Exception
	{

		Class.forName(DBDRIVER);
		String sql = "select teacher_id,class_num,class_name,id from class_mg where teacher_id = ?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, teacherId);
		ResultSet rs = pstmt.executeQuery();
		Vector< Vector > content = new Vector>();
		while(rs.next())
		{
			String teacher_id = rs.getString(1);
			String class_num = rs.getString(2);
			String class_name = rs.getString(3);
			int id = rs.getInt(4);
			Vector d = new Vector();
			d.add(teacher_id);
			d.add(class_num);
			d.add(class_name);
			d.add(id);
			content.add(d);
		}
		
		rs.close();
		pstmt.close();
		conn.close();
		
		return content;
	}
}

 
2.3.2课程管理页面 

package teacher.second_web;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import Mysql.baseOperate.Add;
import Mysql.baseOperate.Delete;
import Mysql.baseOperate.Update;
import Mysql.teacher_inquire.Course_mg_sql;

public class Course_mg_web
{
	//选择行
	static int selectedRow ;
	
	//创建JTable (表格)
	static JTable table2 = new JTable();
	static DefaultTableModel defaultTableModel2 ;
	public static void update()throws Exception
	{
		//设置JTable中的列名
		Vector columnNames =  Course_mg_sql.gettitle();
		//设置JTable的表格数据
		Vector> tableValues =  Course_mg_sql.getcontent();
		//创建表格模型	
		defaultTableModel2 = new DefaultTableModel(tableValues, columnNames);	
		//设置JTable的表格模型	
		table2.setModel(defaultTableModel2);
	}
	
	
	public static JPanel getweb() throws Exception
	{
		JPanel pan2 = new JPanel();
		pan2.setBackground(Color.DARK_GRAY);
		//单行文本框	
		JTextField aTextField ;
		JTextField bTextField ;
		JTextField cTextField ;
		JTextField dTextField ;
		//创建JScrollPane(滚动面板)
		final JScrollPane scrollPane = new JScrollPane();
		pan2.add(scrollPane,BorderLayout.CENTER);
		
		update();
	
		//#########################将JTable添加到JScrollPane中######################
		scrollPane.setViewportView(table2);//将组件放入滚动面板
		final JPanel panel = new JPanel();	
		panel.setBackground(Color.lightGray);
		pan2.add(panel,BorderLayout.SOUTH);
		
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   文本框      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		//第一个文本框
		panel.add(new JLabel("课程号: "));	
		aTextField = new JTextField("cno",10);
		panel.add(aTextField);	
		//第二个文本框
		panel.add(new JLabel("课程名称:"));
		bTextField = new JTextField("cname", 10);	
		panel.add(bTextField);
		//第三个文本框
		panel.add(new JLabel("课程人数: "));	
		cTextField = new JTextField("0", 10);	
		panel.add(cTextField);	
		//第四个文本框
		panel.add(new JLabel("课程学分: "));	
		dTextField = new JTextField("0", 10);	
		panel.add(dTextField);	
		
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  按钮         @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		JButton insertButton = new JButton("添加");	
		JButton deleteButton = new JButton("删除");	
		JButton updateButton = new JButton("修改");	
		panel.add(insertButton);	
		panel.add(deleteButton);	
		panel.add(updateButton);

		//设置表格的选择模式---为单选模式
		table2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		
		//@@@@@@@@@@@@@@@@@@@@@@点击JScrollPane滚动面板,取消选中的行@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		scrollPane.addMouseListener(new MouseAdapter()
		{	
			public void mouseClicked(MouseEvent e) 
			{	
				//取消掉选中行,但是选中行的索引值还是在的,没有取消掉	
				table2.clearSelection();	
				//显示选中行的索引值。	
				System.out.println("点击空白处:"+selectedRow);	
				//设置JTextField的默认值	
				aTextField.setText("cno");	
				bTextField.setText("cname");	
				cTextField.setText("0");
				dTextField.setText("0");
			}
		});
		
		//@@@@@@@@@@@@@@@@@ 将选中的JTable行的的信息传递给--aTestField、bTextField、cTextField@@@@@@@@@@@@@@@@@@@@@@
		
		table2.addMouseListener(new MouseAdapter()
		{
			public void mouseClicked(MouseEvent e) 
			{
				//获取到JTable中选定行的---索引值
				selectedRow = table2.getSelectedRow();
				//获取到指定单元格的值
				Object oa = defaultTableModel2.getValueAt(selectedRow, 0);
				Object ob = defaultTableModel2.getValueAt(selectedRow, 1);
				Object oc = defaultTableModel2.getValueAt(selectedRow, 2);
				Object od = defaultTableModel2.getValueAt(selectedRow, 3);
				
				//将获取去到的DefaultTableModel中指定单元格的值,传递给JTextField
				aTextField.setText(oa.toString());
				bTextField.setText(ob.toString());
				cTextField.setText(oc.toString());	
				dTextField.setText(od.toString());
			}
		});
		
		//@@@@@@@@@@@@@@@@@@@@@@@@@添加@@@@@@@@@@@@@@@@@@@@@@@@@
		insertButton.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) 
			{
				System.out.println("添加");
				//设置要添加到DefaultTableModel中的---行数据内容
//				String[] rowValues = {
//						aTextField.getText(),
//						bTextField.getText(),
//						cTextField.getText(),
//						dTextField.getText(),
//						};
				try 
				{ 	
					if(Add.isRepeat2(aTextField.getText()))
					{
						JOptionPane.showMessageDialog(null, "已经输入过该课程号!!");
					}
					else
					{	
						//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ add_mysql  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$
						Add.course_mg(aTextField.getText(), bTextField.getText(), Integer.parseInt(cTextField.getText()),Integer.parseInt(dTextField.getText()));
						update();
					}
				}
				catch (Exception e1) 
				{
					e1.printStackTrace();
				}
				//设置JTextField的默认值
				aTextField.setText("cno");	
				bTextField.setText("cname");	
				cTextField.setText("0");
				dTextField.setText("0");
			}
		});
		//##########################删除####################################
		deleteButton.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e)
			{	
				//获取到JTable中选定行的---索引值	
				selectedRow = table2.getSelectedRow();	
				System.out.println("删除");	
				
				//选中行
				if(selectedRow!=-1) 
				{
					try 
					{
						//$$$$$$$$$$$$$$$$$$$$$$  delete_mysql  $$$$$$$$$$$$$$$$$$$$$$$$$$$$
						Delete.course_mg(aTextField.getText());
						update();
					}
					catch (Exception e2)
					{
						e2.printStackTrace();
					}
				}
				else 
				{
					JOptionPane.showMessageDialog(null, "没有选中删除的单元格!!");	
				}
			}
		});
		
		
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@修改@@@@@@@@@@@@@@@@@@@@@@@
		updateButton.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e) 
			{
				//获取到JTable中选定行的---索引值
				selectedRow = table2.getSelectedRow();
				System.out.println("修改");
				System.out.println("修改行数:"+selectedRow);
				//JTable中行的索引值是从0,1,2.3...开始的,
				//只有选中行时,才能修改内容
				if(selectedRow!=-1)
				{
						try 
						{
							//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ update_mysql  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$
							Update.course_mg(aTextField.getText(), bTextField.getText(), Integer.parseInt(cTextField.getText()),Integer.parseInt(dTextField.getText()));
							update();
						}
						catch (Exception e1) 
						{
							e1.printStackTrace();
						}
				}
				else 
				{
					System.out.println("没有选中修改的单元格!!");
					JOptionPane.showMessageDialog(null, "没有选中修改的单元格!!");	
				}
			}
	});
		
		return pan2;
	}
}


2.3.2具体JDBC
package Mysql.teacher_inquire;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

public class Course_mg_sql
{
	public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
	public static final String DBURL = "jdbc:mysql://localhost:3306/student";
	public static final String DBUSER = "root";
	public static final String DBPASS = "dyh20011022";
	
	//课程管理【标题】
	public static Vector gettitle() throws Exception
	{
		//title
		Vector title = new Vector();
		title.add("课程号");
		title.add("课程名称");
		title.add("课程人数");
		title.add("课程学分");
		return title;
	}
	//课程管理【内容】
	public static  Vector< Vector > getcontent() throws Exception
	{

		Class.forName(DBDRIVER);
		String sql = "select cno,cname,cpno,ccredit from course_mg";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		ResultSet rs = pstmt.executeQuery();
		Vector< Vector > content = new Vector>();
		while(rs.next())
		{
			String cno = rs.getString(1);
			String cname = rs.getString(2);
			int cpno = rs.getInt(3);
			int ccredit = rs.getInt(4);
			Vector d = new Vector();
			d.add(cno);
			d.add(cname);
			d.add(cpno);
			d.add(ccredit);
			content.add(d);
		}
		
		rs.close();
		pstmt.close();
		conn.close();
		
		return content;
	}
}

 
2.3.3学生管理页面 

package teacher.second_web;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import Mysql.baseOperate.Add;
import Mysql.baseOperate.Delete;
import Mysql.baseOperate.Update;
import Mysql.teacher_inquire.Student_mg_sql;

public class Student_mg_web
{
	//选择行
	static int selectedRow ;
	
	//创建JTable (表格)
	static JTable table4 = new JTable();
	static DefaultTableModel defaultTableModel4 ;
	public static void update()throws Exception
	{
		//设置JTable中的列名
		Vector columnNames =  Student_mg_sql.gettitle();
		//设置JTable的表格数据
		Vector> tableValues =  Student_mg_sql.getcontent();
		//创建表格模型	
		defaultTableModel4 = new DefaultTableModel(tableValues, columnNames);	
		//设置JTable的表格模型	
		table4.setModel(defaultTableModel4);
	}
	
	
	public static JPanel getweb() throws Exception
	{
		JPanel pan3 = new JPanel();
		pan3.setBackground(Color.DARK_GRAY);
		//单行文本框	
		JTextField aTextField ;
		JTextField bTextField ;
		JTextField cTextField ;
		JTextField dTextField ;
		JTextField eTextField ;
		//创建JScrollPane(滚动面板)
		final JScrollPane scrollPane = new JScrollPane();
		pan3.add(scrollPane,BorderLayout.CENTER);
		
		update();
		
		//#########################将JTable添加到JScrollPane中######################
		scrollPane.setViewportView(table4);//将组件放入滚动面板
		final JPanel panel = new JPanel();	
		panel.setBackground(Color.lightGray);
		pan3.add(panel,BorderLayout.SOUTH);
		
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   文本框      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		//第一个文本框
		panel.add(new JLabel("学生学号: "));	
		aTextField = new JTextField("2020188032",10);
		panel.add(aTextField);	
		//第二个文本框
		panel.add(new JLabel("学生姓名:"));
		bTextField = new JTextField("李华", 10);	
		panel.add(bTextField);
		//第三个文本框
		panel.add(new JLabel("性别: "));	
		cTextField = new JTextField("男", 10);	
		panel.add(cTextField);	
		//第四个文本框
		panel.add(new JLabel("年龄:"));	
		dTextField = new JTextField("18", 10);	
		panel.add(dTextField);	
		//第五个文本框
		panel.add(new JLabel("院系:"));	
		eTextField = new JTextField("软件工程", 10);	
		panel.add(eTextField);	
				
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  按钮         @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		JButton insertButton = new JButton("添加");	
		JButton deleteButton = new JButton("删除");	
		JButton updateButton = new JButton("修改");	
		panel.add(insertButton);	
		panel.add(deleteButton);	
		panel.add(updateButton);

		//设置表格的选择模式---为单选模式
		table4.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		
		//@@@@@@@@@@@@@@@@@@@@@@点击JScrollPane滚动面板,取消选中的行@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		scrollPane.addMouseListener(new MouseAdapter()
		{	
			public void mouseClicked(MouseEvent e) 
			{	
				//取消掉选中行,但是选中行的索引值还是在的,没有取消掉	
				table4.clearSelection();	
				//显示选中行的索引值。	
				System.out.println("点击空白处:"+selectedRow);	
				//设置JTextField的默认值	
				aTextField.setText("2020188032");	
				bTextField.setText("李华");	
				cTextField.setText("男");
				dTextField.setText("18");
				eTextField.setText("软件工程");
			}
		});
		
		//@@@@@@@@@@@@@@@@@ 将选中的JTable行的的信息传递给--aTestField、bTextField、cTextField@@@@@@@@@@@@@@@@@@@@@@
		
		table4.addMouseListener(new MouseAdapter()
		{
			public void mouseClicked(MouseEvent e) 
			{
				//获取到JTable中选定行的---索引值
				selectedRow = table4.getSelectedRow();
				//获取到指定单元格的值
				Object oa = defaultTableModel4.getValueAt(selectedRow, 0);
				Object ob = defaultTableModel4.getValueAt(selectedRow, 1);
				Object oc = defaultTableModel4.getValueAt(selectedRow, 2);
				Object od = defaultTableModel4.getValueAt(selectedRow, 3);
				Object oe = defaultTableModel4.getValueAt(selectedRow, 4);
				
				
				//将获取去到的DefaultTableModel中指定单元格的值,传递给JTextField
				aTextField.setText(oa.toString());
				bTextField.setText(ob.toString());
				cTextField.setText(oc.toString());	
				dTextField.setText(od.toString());
				eTextField.setText(oe.toString());
			}
		});
		
		//@@@@@@@@@@@@@@@@@@@@@@@@@添加@@@@@@@@@@@@@@@@@@@@@@@@@
		insertButton.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) 
			{
				System.out.println("添加");
				//设置要添加到DefaultTableModel中的---行数据内容
//				String[] rowValues = {
//						aTextField.getText(),
//						bTextField.getText(),
//						cTextField.getText(),
//						dTextField.getText(),
//						eTextField.getText()
//						};
				
//				System.out.println(Main.u);
				try 
				{
					if(Add.isRepeat4(aTextField.getText()))
					{
						JOptionPane.showMessageDialog(null, "已经输入过该学生号!!");
					}
					else
					{	
						//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ add_mysql  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$
						Add.student_mg(aTextField.getText(), bTextField.getText(), cTextField.getText(),Integer.parseInt(dTextField.getText()),eTextField.getText());
						update();
					}
				}
				catch (Exception e1) 
				{
					e1.printStackTrace();
				}
			
			
				//设置JTextField的默认值
				aTextField.setText("2020188032");	
				bTextField.setText("李华");	
				cTextField.setText("男");
				dTextField.setText("18");
				eTextField.setText("软件工程");
				
			}
		});
		//##########################删除####################################
		deleteButton.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e)
			{	
				//获取到JTable中选定行的---索引值	
				selectedRow = table4.getSelectedRow();	
				System.out.println("删除");	
				//选中行
				if(selectedRow!=-1) 
				{
					try 
					{
						//$$$$$$$$$$$$$$$$$$$$$$  delete_mysql  $$$$$$$$$$$$$$$$$$$$$$$$$$$$
						Delete.student_mg(aTextField.getText(), bTextField.getText(), cTextField.getText(),Integer.parseInt(dTextField.getText()),eTextField.getText());
						update();
					}
					catch (Exception e2)
					{
						e2.printStackTrace();
					}
				}
				else 
				{
					JOptionPane.showMessageDialog(null, "没有选中删除的单元格!!");	
				}
				
			}
		});
		
		
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@修改@@@@@@@@@@@@@@@@@@@@@@@
		updateButton.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e) 
			{
				//获取到JTable中选定行的---索引值
				selectedRow = table4.getSelectedRow();

				System.out.println("修改");
				System.out.println("修改行数:"+selectedRow);
				

				if(selectedRow!=-1)
				{

					try 
					{
						//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ update_mysql  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$
						Update.student_mg(aTextField.getText(), bTextField.getText(), cTextField.getText(),Integer.parseInt(dTextField.getText()),eTextField.getText());
						update();
					}
					catch (Exception e1) 
					{
						e1.printStackTrace();
					}
				}
				else 
				{
					System.out.println("没有选中修改的单元格!!");
					JOptionPane.showMessageDialog(null, "没有选中修改的单元格!!");	
				}
			}
			
		});
		return pan3;
	}
}

2.3.3具体JDBC
package Mysql.teacher_inquire;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

public class  Student_mg_sql
{
	public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
	public static final String DBURL = "jdbc:mysql://localhost:3306/student";
	public static final String DBUSER = "root";
	public static final String DBPASS = "dyh20011022";
	
	//学生管理【标题】
	public static Vector gettitle() throws Exception
	{
		//title
		Vector title = new Vector();
		title.add("学生学号");
		title.add("学生姓名");
		title.add("性别");
		title.add("年龄");
		title.add("院系");
		return title;
	}
	//学生管理【内容】
	public static  Vector< Vector > getcontent() throws Exception
	{

		Class.forName(DBDRIVER);
		String sql = "select sno,sname,ssex,sage,sdept from student_mg";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		ResultSet rs = pstmt.executeQuery();
		Vector< Vector > content = new Vector>();
		while(rs.next())
		{
			String sno = rs.getString(1);
			String sname = rs.getString(2);
			String ssex = rs.getString(3);
			int sage = rs.getInt(4);
			String sdept = rs.getString(5);
			Vector d = new Vector();
			d.add(sno);
			d.add(sname);
			d.add(ssex);
			d.add(sage);
			d.add(sdept);
			content.add(d);
		}
		
		rs.close();
		pstmt.close();
		conn.close();
		
		return content;
	}
}

 
2.3.4成绩管理页面 

package teacher.second_web;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import Mysql.baseOperate.Add;
import Mysql.baseOperate.Delete;
import Mysql.baseOperate.Update;
import Mysql.teacher_inquire.Grade_mg_sql;
public class Grade_mg_web
{
	//选择行
	static int selectedRow ;
	
	//创建JTable (表格)
	static JTable table3 = new JTable();
	static DefaultTableModel defaultTableModel3 ;
	public static void update()throws Exception
	{
		//设置JTable中的列名
		Vector columnNames =  Grade_mg_sql.gettitle();
		//设置JTable的表格数据
		Vector> tableValues = Grade_mg_sql.getcontent();
		//创建表格模型	
		defaultTableModel3 = new DefaultTableModel(tableValues, columnNames);	
		//设置JTable的表格模型	
		table3.setModel(defaultTableModel3);
	}
	
	public static JPanel getweb() throws Exception
	{
		JPanel pan4 = new JPanel();
		pan4.setBackground(Color.DARK_GRAY);
		//单行文本框	
		JTextField aTextField;
		JTextField bTextField;
		JTextField cTextField;
		//创建JScrollPane(滚动面板)
		final JScrollPane scrollPane = new JScrollPane();
		pan4.add(scrollPane,BorderLayout.CENTER);
		update();
	
		//#########################将JTable添加到JScrollPane中######################
		scrollPane.setViewportView(table3);//将组件放入滚动面板
		final JPanel panel = new JPanel();	
		panel.setBackground(Color.lightGray);
		pan4.add(panel,BorderLayout.SOUTH);
		
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   文本框      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		//第一个文本框
		panel.add(new JLabel("学生学号: "));	
		aTextField = new JTextField("sno",10);
		panel.add(aTextField);	
		//第二个文本框
		panel.add(new JLabel("课程号:"));
		bTextField = new JTextField("cno", 10);	
		panel.add(bTextField);
		//第三个文本框
		panel.add(new JLabel("分数: "));	
		cTextField = new JTextField("grade", 10);	
		panel.add(cTextField);	
		
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  按钮         @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		JButton insertButton = new JButton("添加");	
		JButton deleteButton = new JButton("删除");	
		JButton updateButton = new JButton("修改");	
		panel.add(insertButton);	
		panel.add(deleteButton);	
		panel.add(updateButton);
		
		
		//设置表格的选择模式---为单选模式
		table3.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		
		//@@@@@@@@@@@@@@@@@@@@@@点击JScrollPane滚动面板,取消选中的行@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		scrollPane.addMouseListener(new MouseAdapter()
		{	
			public void mouseClicked(MouseEvent e) 
			{	
				//取消掉选中行,但是选中行的索引值还是在的,没有取消掉	
				table3.clearSelection();	
				//显示选中行的索引值。	
				System.out.println("点击空白处:"+selectedRow);	
				//设置JTextField的默认值	
				aTextField.setText("sno");	
				bTextField.setText("cno");	
				cTextField.setText("grade");
			}
		});
		
		//@@@@@@@@@@@@@@@@@ 将选中的JTable行的的信息传递给--aTestField、bTextField、cTextField@@@@@@@@@@@@@@@@@@@@@@
		
		table3.addMouseListener(new MouseAdapter()
		{
			public void mouseClicked(MouseEvent e) 
			{
				//获取到JTable中选定行的---索引值
				selectedRow = table3.getSelectedRow();
				//获取到指定单元格的值
				Object oa = defaultTableModel3.getValueAt(selectedRow, 0);
				Object ob = defaultTableModel3.getValueAt(selectedRow, 1);
				Object oc = defaultTableModel3.getValueAt(selectedRow, 2);
				
				//将获取去到的DefaultTableModel中指定单元格的值,传递给JTextField
				aTextField.setText(oa.toString());
				bTextField.setText(ob.toString());
				cTextField.setText(oc.toString());	
			}
		});
		
		//@@@@@@@@@@@@@@@@@@@@@@@@@添加@@@@@@@@@@@@@@@@@@@@@@@@@
		insertButton.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) 
			{
				System.out.println("添加");
				//设置要添加到DefaultTableModel中的---行数据内容
//				String[] rowValues = {
//						aTextField.getText(),
//						bTextField.getText(),
//						cTextField.getText()
//						};
				
//					System.out.println(Main.u);
					try 
					{
						if(Add.isRepeat3(aTextField.getText(),bTextField.getText()))
						{
							JOptionPane.showMessageDialog(null, "已经输入过[学号:"+aTextField.getText()+"],[课程号:"+bTextField.getText()+"]的成绩!!");
						}
						else
						{	
							//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ add_mysql  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$
							Add.grade_mg(aTextField.getText(), bTextField.getText(), Integer.parseInt( cTextField.getText()));
							update();
						}
					}
					catch (Exception e1) 
					{
						e1.printStackTrace();
					}

				//设置JTextField的默认值
				aTextField.setText("sno");
				bTextField.setText("cno");
				cTextField.setText("grade");
			}
		});
		//##########################删除####################################
		deleteButton.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e)
			{	
				//获取到JTable中选定行的---索引值	
				selectedRow = table3.getSelectedRow();	
				System.out.println("删除");	
				
				//选中行
				if(selectedRow!=-1) 
				{
					try 
					{
						//$$$$$$$$$$$$$$$$$$$$$$  delete_mysql  $$$$$$$$$$$$$$$$$$$$$$$$$$$$
						Delete.grade_mg(aTextField.getText(), bTextField.getText(),Integer.parseInt( cTextField.getText()));
						update();
					}
					catch (Exception e2)
					{
						e2.printStackTrace();
					}		
				}
				else 
				{
					JOptionPane.showMessageDialog(null, "没有选中删除的单元格!!");	
				}
			}
		});
		
		
		//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@修改@@@@@@@@@@@@@@@@@@@@@@@
		updateButton.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e) 
			{
				//获取到JTable中选定行的---索引值
				selectedRow = table3.getSelectedRow();
				
				System.out.println("修改");
				System.out.println("修改行数:"+selectedRow);
				
				//JTable中行的索引值是从0,1,2.3...开始的,
				//只有选中行时,才能修改内容
				if(selectedRow!=-1)
				{
					//获取记录唯一ID
					int id = (int) table3.getValueAt(selectedRow, 3);
					System.out.println("记录唯一ID:"+id);	
					try 
					{
							//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ update_mysql  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$
							Update.grade_mg(aTextField.getText(), bTextField.getText(), Integer.parseInt(cTextField.getText()),id);
							update();
					}
					catch (Exception e1) 
					{
						e1.printStackTrace();
					}
					
				}
				else 
				{
					System.out.println("没有选中修改的单元格!!");
					JOptionPane.showMessageDialog(null, "没有选中修改的单元格!!");	
				}
			}
		});
		
		return pan4;
	}
}


2.3.4具体JDBC
package Mysql.teacher_inquire;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

public class Grade_mg_sql
{
	public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
	public static final String DBURL = "jdbc:mysql://localhost:3306/student";
	public static final String DBUSER = "root";
	public static final String DBPASS = "dyh20011022";
	
	//成绩管理【标题】
	public static Vector gettitle() throws Exception
	{
		//title
		Vector title = new Vector();
		title.add("学生学号");
		title.add("课程号");
		title.add("课程分数");	
		title.add("记录ID");	
		return title;
	}
	//成绩管理【内容】
	public static  Vector< Vector > getcontent() throws Exception
	{

		Class.forName(DBDRIVER);
		String sql = "select sno,cno,grade,id from grade_mg";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		ResultSet rs = pstmt.executeQuery();
		Vector< Vector > content = new Vector>();
		while(rs.next())
		{
			String sno = rs.getString(1);
			String cno = rs.getString(2);
			int grade = rs.getInt(3);
			int id = rs.getInt(4);
			Vector d = new Vector();
			d.add(sno);
			d.add(cno);
			d.add(grade);
			d.add(id);
			content.add(d);
		}
		
		rs.close();
		pstmt.close();
		conn.close();
		
		return content;
	}
}

 
2.4具体添加,删除,修改 
2.4.1四个页面的添加 
package Mysql.baseOperate;

import java.sql.Connection;

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;



public class Add
{
	public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
	public static final String DBURL = "jdbc:mysql://localhost:3306/student";
	public static final String DBUSER = "root";
	public static final String DBPASS = "dyh20011022";
	
	
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@      class_mg           @@@@@@@@@@@@@@@@@@@@@@@@@@@@
	public static void class_mg(String teacher_id ,String class_num,String class_name) throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "insert into class_mg(teacher_id,class_num,class_name) values(?,?,?)";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, teacher_id);
		pstmt.setString(2, class_num);
		pstmt.setString(3, class_name);
		pstmt.executeUpdate();
		pstmt.close();
		conn.close();
	}
	//是否teavher_id , class_num 重复
	public static boolean isRepeat(String class_num) throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "select class_num from class_mg where class_num = ?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, class_num);
		ResultSet rs = pstmt.executeQuery();
		if(rs.next())//主键teacher_id和class_num 重复
		{
			rs.close();
			pstmt.close();
			conn.close();
			return true;
		}
		else //没重复
		{
			rs.close();
			pstmt.close();
			conn.close();
			return false;
		}
	}
	
	
	
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   course_mg   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	public static void course_mg(String cno,String cname,int cpno,int ccredit)throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "insert into course_mg(cno,cname,cpno,ccredit) values(?,?,?,?)";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, cno);
		pstmt.setString(2, cname);
		pstmt.setInt(3, cpno);
		pstmt.setInt(4,ccredit);
		pstmt.executeUpdate();
		pstmt.close();
		conn.close();	
	}
	//是否重复cno
	public static boolean isRepeat2(String cno) throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "select cno from course_mg where cno = ?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, cno);
		ResultSet rs = pstmt.executeQuery();
		if(rs.next())//主键teacher_id和class_num 重复
		{
			rs.close();
			pstmt.close();
			conn.close();
			return true;
		}
		else //没重复
		{
			rs.close();
			pstmt.close();
			conn.close();
			return false;
		}
	}
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ grade_mg  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	public static void grade_mg(String sno,String cno,int grade)throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "insert into grade_mg(sno,cno,grade) values(?,?,?)";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, sno);
		pstmt.setString(2, cno);
		pstmt.setInt(3, grade);
		pstmt.executeUpdate();
		pstmt.close();
		conn.close();
	}
	//是否重复sno,cno
	public static boolean isRepeat3(String sno,String cno) throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "select sno,cno from grade_mg where sno = ? and cno = ?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, sno);
		pstmt.setString(2, cno);
		ResultSet rs = pstmt.executeQuery();
		if(rs.next())//sno和cno 重复
		{
			rs.close();
			pstmt.close();
			conn.close();
			return true;
		}
		else //没重复
		{
			rs.close();
			pstmt.close();
			conn.close();
			return false;
		}
	}
	
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ student_mg @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	public static void student_mg(String sno ,String sname,String ssex,int sage,String sdept) throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "insert into student_mg(sno,sname,ssex,sage,sdept) values(?,?,?,?,?)";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, sno);
		pstmt.setString(2, sname);
		pstmt.setString(3, ssex);
		pstmt.setInt(4, sage);
		pstmt.setString(5, sdept);
		pstmt.executeUpdate();
		pstmt.close();
		conn.close();
	}
	//是否sno重复
	public static boolean isRepeat4(String sno) throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "select sno from student_mg where sno = ?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, sno);
		ResultSet rs = pstmt.executeQuery();
		if(rs.next())//主键sno重复
		{
			rs.close();
			pstmt.close();
			conn.close();
			return true;
		}
		else //没重复
		{
			rs.close();
			pstmt.close();
			conn.close();
			return false;
		}
	}
}
2.4.1四个页面的删除
package Mysql.baseOperate;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class Delete 
{
	public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
	public static final String DBURL = "jdbc:mysql://localhost:3306/student";
	public static final String DBUSER = "root";
	public static final String DBPASS = "dyh20011022";
	
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@      class_mg           @@@@@@@@@@@@@@@@@@@@@@@@@@@@
	public static void class_mg(String teacher_id ,String class_num,String class_name) throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "delete from class_mg where teacher_id = ? and class_num = ? and class_name = ?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, teacher_id);
		pstmt.setString(2, class_num);
		pstmt.setString(3, class_name);
		pstmt.executeUpdate();
		pstmt.close();
		conn.close();
	}
	
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@      course_mg           @@@@@@@@@@@@@@@@@@@@@@@@@@@@
	public static void course_mg(String cno) throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "delete from course_mg where cno=?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, cno);
		pstmt.executeUpdate();
		pstmt.close();
		conn.close();
	}
	
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@      grade_mg           @@@@@@@@@@@@@@@@@@@@@@@@@@@@
	public static void grade_mg(String sno,String cno ,int grade) throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "delete from grade_mg where sno = ? and cno = ? and grade = ?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, sno);
		pstmt.setString(2, cno);
		pstmt.setInt(3, grade);
		pstmt.executeUpdate();
		pstmt.close();
		conn.close();
	}
	
	
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@      student_mg           @@@@@@@@@@@@@@@@@@@@@@@@@@@@
	public static void student_mg(String sno,String sname ,String ssex,int sage,String sdept) throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "delete from student_mg where sno = ? and sname = ? and ssex = ? and sage = ? and sdept = ?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, sno);
		pstmt.setString(2, sname);
		pstmt.setString(3, ssex);
		pstmt.setInt(4, sage);
		pstmt.setString(5, sdept);
		pstmt.executeUpdate();
		pstmt.close();
		conn.close();
	}
	
}

2.4.1四个页面的修改
package Mysql.baseOperate;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class Update 
{
	public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
	public static final String DBURL = "jdbc:mysql://localhost:3306/student";
	public static final String DBUSER = "root";
	public static final String DBPASS = "dyh20011022";
	
	
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@      class_mg           @@@@@@@@@@@@@@@@@@@@@@@@@@@@
	public static void class_mg(String teacher_id ,String class_num,String class_name,int id) throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "update class_mg set teacher_id = ?,class_num = ?,class_name = ?  where id = ?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, teacher_id);
		pstmt.setString(2, class_num);
		pstmt.setString(3, class_name);
		pstmt.setInt(4, id);
		pstmt.executeUpdate();
		pstmt.close();
		conn.close();
	}
	
	
	
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@      course_mg           @@@@@@@@@@@@@@@@@@@@@@@@@@@@
	public static void course_mg(String cno ,String cname,int cpno,int ccredit) throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "update course_mg set cno = ?,cname = ?,cpno = ?,ccredit = ?  where cno = ?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, cno);
		pstmt.setString(2, cname);
		pstmt.setInt(3, cpno);
		pstmt.setInt(4, ccredit);
		pstmt.setString(5,cno);
		pstmt.executeUpdate();
		pstmt.close();
		conn.close();
	}
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@      grade_mg           @@@@@@@@@@@@@@@@@@@@@@@@@@@@
	public static void grade_mg(String sno ,String cno,int grade,int id) throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "update grade_mg set sno= ?,cno = ?,grade = ?  where id = ?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, sno);
		pstmt.setString(2, cno);
		pstmt.setInt(3, grade);
		pstmt.setInt(4, id);
		pstmt.executeUpdate();
		pstmt.close();
		conn.close();
	}
	
	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@      student_mg           @@@@@@@@@@@@@@@@@@@@@@@@@@@@
	public static void student_mg(String sno,String sname ,String ssex,int sage,String sdept) throws Exception
	{
		Class.forName(DBDRIVER);
		String sql = "update student_mg set sno= ?,sname = ?,ssex = ? ,sage = ?,sdept = ?  where sno = ?";
		Connection conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, sno);
		pstmt.setString(2, sname);
		pstmt.setString(3, ssex);
		pstmt.setInt(4, sage);
		pstmt.setString(5, sdept);
		pstmt.setString(6, sno);
		pstmt.executeUpdate();
		pstmt.close();
		conn.close();
	}
}

3.数据库表






转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号