本文适用于cs人学期中“失足”写不完java课设,想要速成xx管理系统的人群
注:开发中使用的idea版本为2020.3.1,mysql版本为8.0.24,navicat版本为15

本文将分成管理系统的界面设计 + 界面按钮事件响应 + SQL语句的编写三大块,因为在笔者看来一个能做到增删改查的最基本的管理系统应该就这三大块就能完成了。

管理系统的界面设计

首先是界面,界面这块我们采用javaswing来进行界面的绘制

想要设计一个管理系统,主界面必不可少
主界面:
首先我们创建一个MainViewTest类,然后让它继承JFrame,如图:
在这里插入图片描述
在主界面类里我们定义我们需要的控件,然后在构造函数里去布局
这里我们定义四个按钮,矩阵状排列作为演示

package org.example.CRUD;

import javax.swing.*;
public class MainViewTest extends JFrame {
    public JButton a = new JButton("增");
    public JButton b = new JButton("删");
    public JButton c = new JButton("改");
    public JButton d = new JButton("查");
    public MainViewTest(){
        setTitle("演示界面");//设置窗口的标题
        setLayout(null);//清空布局管理器
        setSize(400,400);//设置窗口大小
        setLocationRelativeTo(null);//设置窗口相对于指定组件的位置。
									//如果组件当前未显示,或者 c 为 null,则此窗口将置于屏幕的中央。
        setDefaultCloseOperation(EXIT_ON_CLOSE);//设置默认关闭操作
        setResizable(true);//设置窗口大小是否可改变

		//设置组件的摆放位置
        a.setBounds(100,100,50,50);
        b.setBounds(200,100,50,50);
        c.setBounds(100,200,50,50);
        d.setBounds(200,200,50,50);
        //将组件添加到窗口中
        add(a);
        add(b);
        add(c);
        add(d);
        setVisible(true);//设置组件可视
    }
    public static void main(String[] args) {
        new MainViewTest();
    }

}

运行界面效果如下图所示
在这里插入图片描述

还有一些其他的组件如:
文本框(JTextField)
密码框(JPasswordField)
标签(JLable)
复选框(JCheckBox)
单选框(JRadioButton)
组合单选框(ButtonGroup)
下拉框(JComboBox)
列表(JList)
滚动窗格组件(JScrollPane)
多行文本框(JTextArea)
选项卡(JTabbedPane)

布局都是类似的,具体需要使用到什么的时候可以去查阅官方文档

界面按钮事件的绑定和事件编写

给按钮添加监听事件,我们给窗口新建一个处理事件响应的类,每一个窗口都需要一个相应的处理事件的类。
对于上面的MainViewTest类我们新建一个MainViewTestHandler类来处理事件。
在这里插入图片描述
在MainViewTest类的构造函数中创建监听类对象
在这里插入图片描述
在MainViewTestHandler类中把监听类和窗口进行绑定,在actionPerformed中写窗口事件响应代码
在这里插入图片描述
我们用按钮的文本来进行事件的判断,用控制语句来进行相应的选择

SQL语句的编写

管理系统通常都会链接到数据库来进行数据的管理,其中最重要的就是SQL语句的编写,接下来我将会教大家简单的增删改查SQL语句的编写
在编写SQL语句之前,我们先新建一个用于获取数据库链接的类DButil
并且添加数据库驱动jar包,具体添加jar包的方式参考我另一篇文章
idea连接mysql数据库
DButil类中注册数据库链接代码

package org.example.util;

import java.sql.*;
public class DBUtil {
	//3306/后的test为链接的数据库名
    private static final String URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false";
    //数据库注册
    private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
    //数据库用户名
    private static final String USER_NAME = "root";
    //数据库密码
    private static final String PWD = "my121267";
    //创建一个空链接
    private Connection con = null;
    //静态代码块,当类加载的时候代码也会被执行
    static  {
        try {
            Class.forName(DRIVER);//注册数据库驱动
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    //获取数据库连接,要获取数据库连接就调用这个函数
    public  static Connection getConn(){
        try {
            System.out.println("获取链接成功");
            return DriverManager.getConnection(URL,USER_NAME,PWD);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }
	//下面都是关闭相应的资源
    public static void closeConn(Connection connection){
        if(connection != null){
            try {
                connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
    public static void closePs(PreparedStatement ps){
        if(ps != null){
            try {
                ps.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
    public static void closeRs(ResultSet rs){
        if(rs != null){
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
    }

我们可以在MainViewTestHandler类中直接编写SQL代码,也可以再新建一个类来编写,这里我直接在这个类中编写
首先是增加的SQL语句代码

if("增".equals(text)) {
            try {
                if("".equals(mainViewTest.name.getText()) || "".equals(mainViewTest.age.getText())){
                JOptionPane.showMessageDialog(mainViewTest,"请检查插入数据是否为空白!");
                    return;
                }
                String name = mainViewTest.name.getText();
                int age = Integer.parseInt(mainViewTest.age.getText());
                String sql = "insert into " + table_name + " values(" + add(name)+","+age+")";
                //中间这三行语句是数据库链接中最核心的三句
                cons = DBUtil.getConn();//获取数据库连接
                statement2 = cons.prepareStatement(sql);//绑定sql语句
                int res = statement2.executeUpdate();//执行sql语句
                //
                JOptionPane.showMessageDialog(mainViewTest,"sql语句执行成功");
            }catch(Exception e2) {
                e2.printStackTrace();
            }finally {
            	//在finally中释放所有的资源
                DBUtil.closeRs(res2);
                DBUtil.closePs(statement2);
                DBUtil.closeConn(cons);
            }
        }else if("删".equals(text)){
            
        }else if("改".equals(text)) {

        }else if("查".equals(text)){

        }
    }

注意:增加的sql语句中我添加了两个输入框,还有很重要的一点是需要给这四个按钮都添加上监听事件,如下:

在这里插入图片描述

		a.addActionListener(mainViewTestHandler);
        b.addActionListener(mainViewTestHandler);
        c.addActionListener(mainViewTestHandler);
        d.addActionListener(mainViewTestHandler);

这四行代码给按钮添加了监听事件,如果没这四行代码的话,点击按钮是没有任何反应的。
接下来是删除的sql语句

else if("删".equals(text)){
            try {
                if("".equals(mainViewTest.name.getText())){
                    JOptionPane.showMessageDialog(mainViewTest,"请检查插入数据是否为空白!");
                    return;
                }
                String delname = mainViewTest.name.getText();
                String delsql = "delete from " + table_name + " where student = " + add(delname);
                cons = DBUtil.getConn();
                statement2 = cons.prepareStatement(delsql);
                int res = statement2.executeUpdate();
                JOptionPane.showMessageDialog(mainViewTest,"sql语句执行成功");
            }catch(Exception e2) {
                e2.printStackTrace();
            }finally {
                DBUtil.closeRs(res2);
                DBUtil.closePs(statement2);
                DBUtil.closeConn(cons);
            }

这里删除是按照学生姓名来删除的,并且是用的第一个输入框来输入学生姓名用于删除
然后是修改SQL语句

else if("改".equals(text)) {
            try {
                if("".equals(mainViewTest.name.getText())){
                    JOptionPane.showMessageDialog(mainViewTest,"请检查插入数据是否为空白!");
                    return;
                }
                String upname = mainViewTest.name.getText();
                int upage = Integer.parseInt(mainViewTest.age.getText());
                String upsql = "update " + table_name + " set age = " +upage + " where student = " + add(upname);
                cons = DBUtil.getConn();
                statement2 = cons.prepareStatement(upsql);
                int res = statement2.executeUpdate();
                JOptionPane.showMessageDialog(mainViewTest,"sql语句执行成功");
            }catch(Exception e2) {
                e2.printStackTrace();
            }finally {
                DBUtil.closeRs(res2);
                DBUtil.closePs(statement1);
                DBUtil.closePs(statement2);
                DBUtil.closeConn(cons);
            }

最后是查询sql语句

else if("查".equals(text)){
            try {
                if("".equals(mainViewTest.name.getText())){
                    JOptionPane.showMessageDialog(mainViewTest,"请检查插入数据是否为空白!");
                    return;
                }
                String selname = mainViewTest.name.getText();
                String selsql = "select age from " + table_name + " where student = " + add(selname);
                cons = DBUtil.getConn();
                statement2 = cons.prepareStatement(selsql);
                res2 = statement2.executeQuery();
                JOptionPane.showMessageDialog(mainViewTest,"sql语句执行成功");
            }catch(Exception e2) {
                e2.printStackTrace();
            }finally {
                DBUtil.closeRs(res2);
                DBUtil.closePs(statement1);
                DBUtil.closePs(statement2);
                DBUtil.closeConn(cons);
            }
        }

查询语句最后没有能显示出来的地方,如果想获取查询出来的数据需要去查询Resultset结果集的相关资料
至此,一个最基本的xx管理系统链接数据库就已经写好了

更多推荐