学生管理系统
使用技术
GUI JDBC IO DB
登录界面
主界面
增删改查
数据库表
用前需知
1、注意修改数据库的用户名以及密码
2、数据库表设计序保持一致(懂的也既可以修改)
3、记得修改IO读写路径
4、窗体大小是经过计算的,不建议进行修改
如果您觉得本文有帮助,请点赞支持,您的鼓励就是我最大的动力,感谢!
源码
StudentSystem
public class StudentSystem {
public static void main(String args[]) {
new LoginJFrame();
}
}
LoginJFrame
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class LoginJFrame extends JFrame{
LoginJFrame loginJFrame=this;
//定义窗体中的组件
//1系统的标题组件
JLabel title=new JLabel("学生信息管理系统",JLabel.CENTER);
//2输入框的组件
JLabel usernameJLabel=new JLabel("用户名");
JTextField usernameField=new JTextField();
JLabel passwordJLabel=new JLabel("密 码");
JPasswordField passwordField=new JPasswordField();
//3登陆和重置按钮
JButton login=new JButton("登陆");
JButton reset=new JButton("重置");
JButton register=new JButton("注册");
//4创建一个面板对象,用于存放输入框和按钮等组件
JPanel mainJPanel=new JPanel(null);
Container panel=this.getContentPane();
public LoginJFrame() {
addComonent();
addAction();
this.setSize(600,400);
this.setTitle("学生管理系统");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// this.setIconImage(ResourceUtil.icon);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setVisible(true);
}
//定义一个方法用于为窗体添加组件
public void addComonent() {
//添加标题 将标题添加到窗体自带的面板
title.setFont(new Font("楷体",Font.BOLD,45));
panel.add(title,BorderLayout.NORTH);
usernameJLabel.setFont(new Font("楷体",Font.BOLD,20));
usernameJLabel.setBounds(150,50,100,30);
mainJPanel.add(usernameJLabel);
usernameField.setBounds(230,50,200,30);
mainJPanel.add(usernameField);
passwordJLabel.setFont(new Font("楷体",Font.BOLD,20));
passwordJLabel.setBounds(155,100,100,30);
mainJPanel.add(passwordJLabel);
passwordField.setBounds(230,100,200,30);
mainJPanel.add(passwordField);
login.setBounds(150,150,80,30);
reset.setBounds(250,150,80,30);
register.setBounds(350,150,80,30);
mainJPanel.add(login);
mainJPanel.add(reset);
mainJPanel.add(register);
panel.add(mainJPanel,BorderLayout.CENTER);
}
//定义一个方法完成登录和重置按钮的操作
public void addAction() {
reset.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//确定按的是重置的按钮
Object source=e.getSource();
JButton jButton=(JButton)source;
//判断是否是重置的按钮
if(jButton.getText().equals("重置")) {
//将用户和密码框直接置为""
usernameField.setText("");
passwordField.setText("");
}
}
});
//为登录按钮添加事件
login.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String usernameInput=usernameField.getText();
String passwordInput=new String(passwordField.getPassword());
if(isLogin(usernameInput,passwordInput)) {
System.out.println("登陆成功");
//显示系统的主窗体
new MainJFrame();
//销毁当前的登陆窗体
loginJFrame.dispose();
}
else {
//弹出框
JOptionPane.showMessageDialog(login, "登录失败,请检查用户名或密码!");
}
}
});
//为注册添加事件
register.addActionListener(new ActionListener () {
@Override
public void actionPerformed(ActionEvent e) {
new RegisterJFrame(loginJFrame);
}
});
}
//定义一个方法,判断是否可以登录
public boolean isLogin(String usernameInput,String passwordInput) {
boolean f=false;
String sql="select password from admin where username=?";
Connection connection=null;
PreparedStatement prepareStatement=null;
ResultSet resultSet=null;
connection=DBUtil.getConnection();
try {
//3通过连接对象,获取执行语句的对象,将sql语句传入
prepareStatement=connection.prepareStatement(sql);
//4设置 ? 是谁
prepareStatement.setString(1,usernameInput); //从第一个?开始
//5执行sql语句
resultSet=prepareStatement.executeQuery();
//6结果集中就有我们查询到的结果
while(resultSet.next()) { //当有结果的时候
//获取结果 查询到的密码
String password=resultSet.getString(1);
//判断获取到的密码是否和输入的密码一致
if(passwordInput.equals(password)) {
f=true;
}
}
}
catch(Exception e) {
}
finally {
//关闭连接
DBUtil.closeConnection(connection);
DBUtil.closePreparedStatement(prepareStatement);
DBUtil.closeResultSet(resultSet);
}
return f;
}
}
ResourceUtil
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ResourceUtil {
public static BufferedImage icon = ResourceUtil.getImage("icon.png");
//定义一个静态方法完成图片的读取
public static BufferedImage getImage(String imageName) {
BufferedImage bufferedImage = null;
try {
// 此处为;logo图标,可自定义,记得修改路径
bufferedImage = ImageIO.read(new File("F:\\javaTest\\workspace\\RPrac\\Test\\src\\image/"+imageName));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bufferedImage;
}
}
DBUtil
import java.sql.*;
public class DBUtil {
static final String URL = "jdbc:mysql://localhost:3306/jinhuan?useUnicode=true&characterEncoding=utf-8";
static final String DRIVER = "com.mysql.jdbc.Driver";
// 数据库的账号密码
static final String USER_NAME = "账户名";
static final String PASSWORD = "密码";
static {
try {
Class.forName(DRIVER);//加载驱动
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//获取数据库连接
public static Connection getConnection(){
try {
return DriverManager.getConnection(URL, USER_NAME, PASSWORD);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return null;
}
//关闭连接
public static void closeConnection(Connection connection){
if (connection != null){
try {
connection.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
public static void closePreparedStatement(PreparedStatement preparedStatement){
if (preparedStatement!=null){
try {
preparedStatement.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
public static void closeResultSet(ResultSet resultSet){
if (resultSet!=null){
try {
resultSet.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
MainJFrame
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class MainJFrame extends JFrame {
MainJFrame mainJFrame = this;
// 创建主窗体的组件
// 三个按钮
JButton addButton = new JButton("增加");
JButton updateButton = new JButton("修改");
JButton deleteButton = new JButton("删除");
JButton inquireButton = new JButton("查询");
// 创建一个按钮菜单面板
JPanel menuJPanel = new JPanel(new FlowLayout());// 采用流式布局
// 创建一个可以滚动的面板
JScrollPane tableJPanel;
// 创建一个集合 二维集合
// tableData 就是一个集合 这个集合中存放的数据 又是一个集合对象<object>
Vector<Vector<Object>> tableData;
// 创建一个标题集合 ---> 属于 tableData 中的一个元素 第一个元素
Vector<String> tableTitle;
// 创建一个数据集合
Vector<Object> data;
// 创建一个表格
JTable messageJTable;
// 构造方法完成窗体的初始化
Container contentPane = this.getContentPane();
public MainJFrame() {
tableData = new Vector<Vector<Object>>();
tableTitle = new Vector<String>();
// 初始化表头集合
tableTitle.add("编号");
tableTitle.add("姓名");
tableTitle.add("学号");
tableTitle.add("班级");
tableTitle.add("籍贯");
selectALl();
// 将表头的数据添加到 表格集合中 作为第一个元素
messageJTable = new JTable(tableData, tableTitle);
addComponent();
addAction();
this.setTitle("欢迎使用学生管理系统");
this.setIconImage(ResourceUtil.icon);
this.setSize(1600, 900);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
public void selectALl() {
// 从数据库中进行查询
// 1 书写sql语句
String sql = " select * from stu ";// ? 就是以后要使用 usernameInput 替换的内容
// 2 获取连接
Connection connection = null;
PreparedStatement prepareStatement = null;
ResultSet resultSet = null;
connection = DBUtil.getConnection();
try {
// 3 通过连接对象 获取执行语句的对象 将sql语句传入
prepareStatement = connection.prepareStatement(sql);
// 4 执行sql语句
resultSet = prepareStatement.executeQuery();
// 6 结果集中就有我们查询到的结果
while (resultSet.next()) {// 当有结果的时候
// 获取结果 id name code clazz address
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String code = resultSet.getString("code");
String clazz = resultSet.getString("clazz");
String address = resultSet.getString("address");
// System.out.println(id + "--"+ name +"--"+ code + "--"+ clazz+"--"+ address);
// 将获得的结果 作为一个集合传入
Vector data = new Vector();
data.add(id);
data.add(name);
data.add(code);
data.add(clazz);
data.add(address);
// 将 data 作为一个数据添加到
tableData.add(data);
}
} catch (Exception e) {
// TODO: handle exception
} finally {
// 关闭连接
DBUtil.closeConnection(connection);
DBUtil.closePreparedStatement(prepareStatement);
DBUtil.closeResultSet(resultSet);
}
}
// 定义一个方法 用于查询所有的数据
// 定义一个方法完成组件的添加
public void addComponent() {
// 设置当前窗体的默认的面板的布局
contentPane.setLayout(new BorderLayout());
// 菜单面板
menuJPanel.add(addButton);
menuJPanel.add(updateButton);
menuJPanel.add(deleteButton);
menuJPanel.add(inquireButton);
// 将菜单按钮面板 添加到 当前窗体中
contentPane.add(menuJPanel, BorderLayout.NORTH);
tableJPanel = new JScrollPane(messageJTable);// 将表格作为一个参数传入
// 将表格面板 添加到当前窗体面板 的 中间
contentPane.add(tableJPanel, BorderLayout.CENTER);
}
// 定义一个方法完成按钮事件的添加
public void addAction() {
// 增加按钮
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//当点击增加按钮的时候 会跳出一个框框
new AddJFrame(mainJFrame);
}
});
// 修改按钮
updateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new InputIdJFrame(mainJFrame);
}
});
// 删除按钮
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new DeleteJFrame(mainJFrame);
}
});
//查询按钮
inquireButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new InquireJFrame(mainJFrame);
}
});
}
}
RegisterJFrame
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class RegisterJFrame extends JFrame{
RegisterJFrame registerJFrame = this;
LoginJFrame loginJFrame;
// 增加组件
JLabel nameJLabel = new JLabel("用户名:");
JLabel passJLabel = new JLabel("密码:");
JTextField zxuser = new JTextField();
JTextField zxpass = new JTextField();
// 按钮
JButton admin01 = new JButton("确定");
// 创建一个面板
JPanel panel = new JPanel(null);
// 构造方法完成初始化
public RegisterJFrame(LoginJFrame loginJFrame) {
this.loginJFrame = loginJFrame;
addComponent();
addAction();
this.setTitle("添加管理员");
this.setIconImage(ResourceUtil.icon);
this.setSize(400, 300);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(panel);
this.setVisible(true);
}
// 定义一个方法完成 组件的添加
public void addComponent() {
int d = 30;
// 设置组件的尺寸
nameJLabel.setFont(new Font("微软雅黑", Font.BOLD, 18));
nameJLabel.setBounds(90, 48, 60, 30);
zxuser.setBounds(160, 50, 100, 25);
panel.add(nameJLabel);
panel.add(zxuser);
passJLabel.setFont(new Font("微软雅黑", Font.BOLD, 18));
passJLabel.setBounds(97, 48 + d, 60, 30);
zxpass.setBounds(160, 50 + d, 100, 25);
panel.add(passJLabel);
panel.add(zxpass);
// 按钮
admin01.setBounds(150, 50 + 5 * d, 60, 25);
panel.add(admin01);
}
// 定义一个方法用于为按钮添加事件
public void addAction() {
admin01.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取焦点
JButton s = (JButton) e.getSource();
// 判断是否是提交的按钮
if (s.getText().equals("确定")) {
// 获取输入框中的所有的数据
String name = zxuser.getText();
String pass = zxpass.getText();
// 将获取到的数据 添加到 数据库中
// 1 书写sql语句
String sql = "insert into admin(username, password) VALUES (?,?) ";
// 2 获取连接
Connection connection = null;
PreparedStatement prepareStatement = null;
try {
connection = DBUtil.getConnection();
// 3 通过连接对象 获取执行语句的对象 将sql语句传入
prepareStatement = connection.prepareStatement(sql);
// 4 设置每个? 是什么
prepareStatement.setString(1, name);
prepareStatement.setString(2, pass);
// 5 执行 返回值 表示 有几行受到影响
int i =0;
i = prepareStatement.executeUpdate();
System.out.print(i);
// 6 判断是否成功插入
if (i==1) {
// 更新表的数据 相当于重新查了一次
// 主界面 销毁
loginJFrame.dispose();
// 添加界面销毁
registerJFrame.dispose();
// 重新创建一个新的主界面
//new MainJFrame();
JOptionPane.showMessageDialog(registerJFrame, "添加管理员成功");
}else {
JOptionPane.showMessageDialog(registerJFrame, "插入失败");
}
} catch (Exception e11) {
// TODO: handle exception
} finally {
// 关闭连接
DBUtil.closeConnection(connection);
DBUtil.closePreparedStatement(prepareStatement);
}
}
}
});
}
}
RegisterMainJFrame
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class RegisterMainJFrame extends JFrame {
RegisterMainJFrame registerMainJFrame = this;
MainJFrame mainJFrame;
static String id;
// 创建主窗体的组件
// 三个按钮
JButton addButton = new JButton("增加");
JButton updateButton = new JButton("修改");
JButton deleteButton = new JButton("删除");
JButton inquireButton = new JButton("查询");
// 创建一个按钮菜单面板
JPanel menuJPanel = new JPanel(new FlowLayout());// 采用流式布局
// 创建一个可以滚动的面板
JScrollPane tableJPanel;
// 创建一个集合 二维集合
// tableData 就是一个集合 这个集合中存放的数据 又是一个集合对象<object>
Vector<Vector<Object>> tableData;
// 创建一个标题集合 ---> 属于 tableData 中的一个元素 第一个元素
Vector<String> tableTitle;
// 创建一个数据集合
Vector<Object> data;
// 创建一个表格
JTable messageJTable;
// 构造方法完成窗体的初始化
Container contentPane = this.getContentPane();
public RegisterMainJFrame(String id) {
this.id=id;
tableData = new Vector<Vector<Object>>();
tableTitle = new Vector<String>();
// 初始化表头集合
tableTitle.add("编号");
tableTitle.add("姓名");
tableTitle.add("学号");
tableTitle.add("班级");
tableTitle.add("籍贯");
selectALl();
// 将表头的数据添加到 表格集合中 作为第一个元素
messageJTable = new JTable(tableData, tableTitle);
addComponent();
addAction();
this.setTitle("欢迎使用学生管理系统");
this.setIconImage(ResourceUtil.icon);
this.setSize(1600, 900);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
public void selectALl() {
// 从数据库中进行查询
// 1 书写sql语句
String sql = " select * from stu where id=?";// ? 就是以后要使用 usernameInput 替换的内容
// 2 获取连接
Connection connection = null;
PreparedStatement prepareStatement = null;
ResultSet resultSet = null;
connection = DBUtil.getConnection();
try {
connection = DBUtil.getConnection();
// 3 通过连接对象 获取执行语句的对象 将sql语句传入
prepareStatement = connection.prepareStatement(sql);
// 4 设置每个? 是什么
prepareStatement.setInt(1, Integer.parseInt(id));
resultSet=prepareStatement.executeQuery();
// 6 结果集中就有我们查询到的结果
while(resultSet.next()) {// 当有结果的时候
// 获取结果 id name code clazz address
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String code = resultSet.getString("code");
String clazz = resultSet.getString("clazz");
String address = resultSet.getString("address");
// System.out.println(id + "--"+ name +"--"+ code + "--"+ clazz+"--"+ address);
// 将获得的结果 作为一个集合传入
Vector data = new Vector();
data.add(id);
data.add(name);
data.add(code);
data.add(clazz);
data.add(address);
// 将 data 作为一个数据添加到
tableData.add(data);
}
} catch (Exception e) {
// TODO: handle exception
} finally {
// 关闭连接
DBUtil.closeConnection(connection);
DBUtil.closePreparedStatement(prepareStatement);
DBUtil.closeResultSet(resultSet);
}
}
// 定义一个方法 用于查询所有的数据
// 定义一个方法完成组件的添加
public void addComponent() {
// 设置当前窗体的默认的面板的布局
contentPane.setLayout(new BorderLayout());
// 菜单面板
menuJPanel.add(addButton);
menuJPanel.add(updateButton);
menuJPanel.add(deleteButton);
menuJPanel.add(inquireButton);
// 将菜单按钮面板 添加到 当前窗体中
contentPane.add(menuJPanel, BorderLayout.NORTH);
tableJPanel = new JScrollPane(messageJTable);// 将表格作为一个参数传入
// 将表格面板 添加到当前窗体面板 的 中间
contentPane.add(tableJPanel, BorderLayout.CENTER);
}
// 定义一个方法完成按钮事件的添加
public void addAction() {
// 增加按钮
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//当点击增加按钮的时候 会跳出一个框框
new AddJFrame(mainJFrame);
}
});
// 修改按钮
updateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new InputIdJFrame(mainJFrame);
}
});
// 删除按钮
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new DeleteJFrame(mainJFrame);
}
});
//查询按钮
inquireButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new InquireJFrame(mainJFrame);
}
});
}
}
AddJFrame
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class AddJFrame extends JFrame {
AddJFrame addJFrame = this;
MainJFrame mainJFrame;
// 增加组件
JLabel nameJLabel = new JLabel("姓名:");
JLabel codeJLabel = new JLabel("学号:");
JLabel clazzJLabel = new JLabel("班级:");
JLabel addressJLabel = new JLabel("籍贯:");
JTextField nameField = new JTextField();
JTextField codeField = new JTextField();
JTextField clazzField = new JTextField();
JTextField addressField = new JTextField();
// 按钮
JButton submit = new JButton("提交");
// 创建一个面板
JPanel panel = new JPanel(null);
// 构造方法完成初始化
public AddJFrame(MainJFrame mainJFrame) {
this.mainJFrame = mainJFrame;
addComponent();
addAction();
this.setTitle("增加学生");
this.setIconImage(ResourceUtil.icon);
this.setSize(400, 300);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(panel);
this.setVisible(true);
}
// 定义一个方法完成 组件的添加
public void addComponent() {
int d = 30;
// 设置组件的尺寸
nameJLabel.setFont(new Font("微软雅黑", Font.BOLD, 18));
nameJLabel.setBounds(100, 48, 50, 30);
nameField.setBounds(150, 50, 100, 25);
panel.add(nameJLabel);
panel.add(nameField);
codeJLabel.setFont(new Font("微软雅黑", Font.BOLD, 18));
codeJLabel.setBounds(100, 48 + d, 50, 30);
codeField.setBounds(150, 50 + d, 100, 25);
panel.add(codeJLabel);
panel.add(codeField);
clazzJLabel.setFont(new Font("微软雅黑", Font.BOLD, 18));
clazzJLabel.setBounds(100, 48 + 2 * d, 50, 30);
clazzField.setBounds(150, 50 + 2 * d, 100, 25);
panel.add(clazzJLabel);
panel.add(clazzField);
addressJLabel.setFont(new Font("微软雅黑", Font.BOLD, 18));
addressJLabel.setBounds(100, 48 + 3 * d, 50, 30);
addressField.setBounds(150, 50 + 3 * d, 100, 25);
panel.add(addressJLabel);
panel.add(addressField);
// 按钮
submit.setBounds(150, 50 + 5 * d, 60, 25);
panel.add(submit);
}
// 定义一个方法用于为按钮添加事件
public void addAction() {
submit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取焦点
JButton s = (JButton) e.getSource();
// 判断是否是提交的按钮
if (s.getText().equals("提交")) {
// 获取输入框中的所有的数据
String name = nameField.getText();
String code = codeField.getText();
String clazz = clazzField.getText();
String address = addressField.getText();
// 将获取到的数据 添加到 数据库中
// 1 书写sql语句
String sql = "insert into stu(name, code, clazz, address) VALUES (?,?,?,?) ";
// 2 获取连接
Connection connection = null;
PreparedStatement prepareStatement = null;
try {
connection = DBUtil.getConnection();
// 3 通过连接对象 获取执行语句的对象 将sql语句传入
prepareStatement = connection.prepareStatement(sql);
// 4 设置每个? 是什么
prepareStatement.setString(1, name);
prepareStatement.setString(2, code);
prepareStatement.setString(3, clazz);
prepareStatement.setString(4, address);
// 5 执行 返回值 表示 有几行受到影响
int i = prepareStatement.executeUpdate();
// 6 判断是否成功插入
if (i==1) {
// 更新表的数据 相当于重新查了一次
// 主界面 销毁
mainJFrame.dispose();
// 添加界面销毁
addJFrame.dispose();
// 重新创建一个新的主界面
new MainJFrame();
}else {
JOptionPane.showMessageDialog(addJFrame, "插入失败");
}
} catch (Exception e11) {
// TODO: handle exception
} finally {
// 关闭连接
DBUtil.closeConnection(connection);
DBUtil.closePreparedStatement(prepareStatement);
}
}
}
});
}
}
DeleteJFrame
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class DeleteJFrame extends JFrame {
MainJFrame mainJFrame;
DeleteJFrame deleteJFrame = this;
// 创建组件
JPanel jPanel = new JPanel(null);
// 标题
JLabel idJLabel = new JLabel("请输入要删除的学生id");
JTextField idField = new JTextField();
JButton submit = new JButton("提交");
// 构造方法完成初始化
public DeleteJFrame(MainJFrame mainJFrame) {
this.mainJFrame = mainJFrame;
addComponent();
addAction();
this.setTitle("删除学生");
this.setIconImage(ResourceUtil.icon);
this.setSize(400, 300);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(jPanel);
this.setVisible(true);
}
// 定义一个方法添加组件
public void addComponent() {
// 设置各个组件
idJLabel.setFont(new Font("微软雅黑", Font.BOLD, 18));
idJLabel.setBounds(100, 10, 200, 30);
idField.setBounds(130, 50, 100, 25);
submit.setBounds(150, 100, 60, 25);
// 添加到面板上
jPanel.add(idJLabel);
jPanel.add(idField);
jPanel.add(submit);
}
// 定义一个方法 完成事件的添加
public void addAction() {
submit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取焦点
JButton s = (JButton) e.getSource();
// 判断是否是提交的按钮
if (s.getText().equals("提交")) {
// 获取输入框中的所有的数据
String id = idField.getText();
// 将获取到的数据 添加到 数据库中
// 1 书写sql语句
String sql = "delete from stu where id = ? ";
// 2 获取连接
Connection connection = null;
PreparedStatement prepareStatement = null;
try {
connection = DBUtil.getConnection();
// 3 通过连接对象 获取执行语句的对象 将sql语句传入
prepareStatement = connection.prepareStatement(sql);
// 4 设置每个? 是什么
prepareStatement.setInt(1, Integer.parseInt(id));
// 5 执行 返回值 表示 有几行受到影响
int i = prepareStatement.executeUpdate();
// 6 判断是否成功插入
if (i == 1) {
// 更新表的数据 相当于重新查了一次
// 主界面 销毁
mainJFrame.dispose();
// 添加界面销毁
deleteJFrame.dispose();
// 重新创建一个新的主界面
new MainJFrame();
} else {
JOptionPane.showMessageDialog(deleteJFrame, "删除失败");
}
} catch (Exception e11) {
// TODO: handle exception
} finally {
// 关闭连接
DBUtil.closeConnection(connection);
DBUtil.closePreparedStatement(prepareStatement);
}
}
}
});
}
}
InputIdJFrame
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class InputIdJFrame extends JFrame{
MainJFrame mainJFrame;
InputIdJFrame inputIdJFrame = this;
// 创建组件
JPanel jPanel = new JPanel(null);
// 标题
JLabel idJLabel = new JLabel("请输入要修改的学生id");
JTextField idField = new JTextField();
JButton submit = new JButton("提交");
// 构造方法完成初始化
public InputIdJFrame(MainJFrame mainJFrame) {
this.mainJFrame = mainJFrame;
addComponent();
addAction();
this.setTitle("修改学生");
this.setIconImage(ResourceUtil.icon);
this.setSize(400, 300);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(jPanel);
this.setVisible(true);
}
// 定义一个方法添加组件
public void addComponent() {
// 设置各个组件
idJLabel.setFont(new Font("微软雅黑", Font.BOLD, 18));
idJLabel.setBounds(100, 10, 200, 30);
idField.setBounds(130, 50, 100, 25);
submit.setBounds(150, 100, 60, 25);
// 添加到面板上
jPanel.add(idJLabel);
jPanel.add(idField);
jPanel.add(submit);
}
// 定义一个方法 完成事件的添加
public void addAction() {
submit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取焦点
JButton s = (JButton) e.getSource();
// 判断是否是提交的按钮
if (s.getText().equals("提交")) {
// 获取输入框中的所有的数据
String id = idField.getText();
//弹出 修改的框
new UpdateJFrame(id,mainJFrame);
inputIdJFrame.dispose();
}
}
});
}
}
InquireJFrame
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class InquireJFrame extends JFrame{
MainJFrame mainJFrame;
InquireJFrame inquireJFrame = this;
// 创建组件
JPanel jPanel = new JPanel(null);
// 标题
JLabel idJLabel = new JLabel("请输入要查询的学生id");
JTextField idField = new JTextField();
JButton submit1 = new JButton("提交");
// 构造方法完成初始化
public InquireJFrame(MainJFrame mainJFrame) {
this.mainJFrame = mainJFrame;
addComponent();
addAction();
this.setTitle("查询学生");
this.setIconImage(ResourceUtil.icon);
this.setSize(400, 300);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(jPanel);
this.setVisible(true);
}
// 定义一个方法添加组件
public void addComponent() {
// 设置各个组件
idJLabel.setFont(new Font("微软雅黑", Font.BOLD, 18));
idJLabel.setBounds(100, 10, 200, 30);
idField.setBounds(130, 50, 100, 25);
submit1.setBounds(150, 100, 60, 25);
// 添加到面板上
jPanel.add(idJLabel);
jPanel.add(idField);
jPanel.add(submit1);
}
static String id;
// 定义一个方法 完成事件的添加
public void addAction() {
submit1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取焦点
JButton s = (JButton) e.getSource();
// 判断是否是提交的按钮
if (s.getText().equals("提交")) {
// 获取输入框中的所有的数据
id = idField.getText();
// 将获取到的数据 添加到 数据库中
// 1 书写sql语句
String sql = "select * from stu where id = ? ";
// 2 获取连接
Connection connection = null;
PreparedStatement prepareStatement = null;
ResultSet resultSet=null;
try {
connection = DBUtil.getConnection();
// 3 通过连接对象 获取执行语句的对象 将sql语句传入
prepareStatement = connection.prepareStatement(sql);
// 4 设置每个? 是什么
prepareStatement.setInt(1, Integer.parseInt(id));
resultSet=prepareStatement.executeQuery();
//6结果集中就有我们查询到的结果
if(resultSet.next()) { //当有结果的时候
mainJFrame.dispose();
// 添加界面销毁
inquireJFrame.dispose();
// 重新创建一个新的主界面
new RegisterMainJFrame(InquireJFrame.id);
}
else {
JOptionPane.showMessageDialog(inquireJFrame, "查询失败");
}
}
catch (Exception e11) {
// TODO: handle exception
} finally {
// 关闭连接
DBUtil.closeConnection(connection);
DBUtil.closePreparedStatement(prepareStatement);
}
}
}
});
}
}
UpdateJFrame
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class UpdateJFrame extends JFrame {
UpdateJFrame updateJFrame = this;
MainJFrame mainJFrame;
String id;
// 增加组件
JLabel nameJLabel = new JLabel("姓名:");
JLabel codeJLabel = new JLabel("学号:");
JLabel clazzJLabel = new JLabel("班级:");
JLabel addressJLabel = new JLabel("籍贯:");
JTextField nameField = new JTextField();
JTextField codeField = new JTextField();
JTextField clazzField = new JTextField();
JTextField addressField = new JTextField();
// 按钮
JButton submit = new JButton("提交");
// 创建一个面板
JPanel panel = new JPanel(null);
// 构造方法完成初始化
public UpdateJFrame(String id,MainJFrame mainJFrame) {
this.mainJFrame = mainJFrame;
this.id = id;
addComponent();
addAction();
this.setTitle("修改学生");
this.setIconImage(ResourceUtil.icon);
this.setSize(400, 300);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(panel);
this.setVisible(true);
}
// 定义一个方法完成 组件的添加
public void addComponent() {
int d = 30;
// 设置组件的尺寸
nameJLabel.setFont(new Font("微软雅黑", Font.BOLD, 18));
nameJLabel.setBounds(100, 48, 50, 30);
nameField.setBounds(150, 50, 100, 25);
panel.add(nameJLabel);
panel.add(nameField);
codeJLabel.setFont(new Font("微软雅黑", Font.BOLD, 18));
codeJLabel.setBounds(100, 48 + d, 50, 30);
codeField.setBounds(150, 50 + d, 100, 25);
panel.add(codeJLabel);
panel.add(codeField);
clazzJLabel.setFont(new Font("微软雅黑", Font.BOLD, 18));
clazzJLabel.setBounds(100, 48 + 2 * d, 50, 30);
clazzField.setBounds(150, 50 + 2 * d, 100, 25);
panel.add(clazzJLabel);
panel.add(clazzField);
addressJLabel.setFont(new Font("微软雅黑", Font.BOLD, 18));
addressJLabel.setBounds(100, 48 + 3 * d, 50, 30);
addressField.setBounds(150, 50 + 3 * d, 100, 25);
panel.add(addressJLabel);
panel.add(addressField);
// 按钮
submit.setBounds(150, 50 + 5 * d, 60, 25);
panel.add(submit);
}
// 定义一个方法用于为按钮添加事件
public void addAction() {
submit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取焦点
JButton s = (JButton) e.getSource();
// 判断是否是提交的按钮
if (s.getText().equals("提交")) {
// 获取输入框中的所有的数据
String name = nameField.getText();
String code = codeField.getText();
String clazz = clazzField.getText();
String address = addressField.getText();
// 将获取到的数据 添加到 数据库中
// 1 书写sql语句
String sql = "update stu set name = ?,code = ?,clazz = ?,address = ? where id = ? ";
// 2 获取连接
Connection connection = null;
PreparedStatement prepareStatement = null;
try {
connection = DBUtil.getConnection();
// 3 通过连接对象 获取执行语句的对象 将sql语句传入
prepareStatement = connection.prepareStatement(sql);
// 4 设置每个? 是什么
prepareStatement.setString(1, name);
prepareStatement.setString(2, code);
prepareStatement.setString(3, clazz);
prepareStatement.setString(4, address);
prepareStatement.setInt(5, Integer.parseInt(id));
// 5 执行 返回值 表示 有几行受到影响
int i = prepareStatement.executeUpdate();
// 6 判断是否成功插入
if (i == 1) {
// 更新表的数据 相当于重新查了一次
// 主界面 销毁
mainJFrame.dispose();
// 添加界面销毁
updateJFrame.dispose();
// 重新创建一个新的主界面
new MainJFrame();
} else {
JOptionPane.showMessageDialog(updateJFrame, "修改失败");
}
} catch (Exception e11) {
// TODO: handle exception
} finally {
// 关闭连接
DBUtil.closeConnection(connection);
DBUtil.closePreparedStatement(prepareStatement);
}
}
}
});
}
}
源码连接
'链接:https://pan.baidu.com/s/1hIuCsj6Nl5XJvpbaQniZKA
提取码:3598
'感谢你的支持!谢谢!