Java 专业综合设计(附报告)

Java 专综
Java 课设
客运专线信息管理系统
Java 用GUI 实现 增删查改 界面 并且能修改数据库中的数据

好了,以上就是多放一些 关键词,方便需要的同学都能看到!

运行环境: IDEA 编译器, MySQL 数据库

先给大家看效果图,后面有完整代码及代码使用方法
在这里插入图片描述

这是登录界面
![在这里插入图片描述](https://img-blog.csdnimg.cn/a3f83a56244f4318976bad4f74f7295e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5p6r5rid5rWq5aSp5LiL,size_15,color_FFFFFF,t_70,g_se,x_16
这是 主界面 ,你在登录界面用户名 密码输入正确后,它就会自动跳转这个界面
在这里插入图片描述
好了,FH不多说,直接上代码

第一个代码类

import java.sql.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class John2 {

    public static void createAndShowGUI(){
        // 1.创建一个JFrame容器
        JFrame f = new JFrame("登录");
        f.setSize(400,300);
        f.setLocation(600,300);
        f.setLayout(new BorderLayout());
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel();
        JPanel panel1 = new JPanel();
        JTextField inputField = new JTextField(23);
        JTextField password = new JPasswordField(23);
        JLabel label = new JLabel("用户名",JLabel.CENTER);
        label.setFont(new Font("宋体",Font.PLAIN,20));
        JLabel label2 = new JLabel("密码",JLabel.CENTER);
        label2.setFont(new Font("宋体",Font.PLAIN,20));
        JButton btn = new JButton("登录");
        JButton btn2 = new JButton("清空");
        btn.setPreferredSize(new Dimension(100,25));
        btn2.setPreferredSize(new Dimension(100,25));
        panel.add(label);
        panel.add(inputField);
        panel1.add(label2);
        panel1.add(password);
        panel1.add(btn);
        panel1.add(btn2);
        f.add(panel,BorderLayout.PAGE_START);
        f.add(panel1,BorderLayout.CENTER);

        //事件处理
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                String input = inputField.getText();
                String pwd = password.getText();
                boolean flag = findData(input,pwd);

                if (flag == true) {
                    JOptionPane.showMessageDialog(null, "登录成功");
                     f.dispose();
                    shiftWindows();
                }else{
                        JOptionPane.showMessageDialog(null,"账号或密码有误,登录失败!");
                }

            }
        });
        //清空的事件处理
        btn2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                inputField.setText("");
                password.setText("");
            }
        });

    }

    public static boolean findData(String user, String pwd) {
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        try {
            //1.建立连接
            connection = John.getConnection();
            //2.构造sql
            String sql = "select * from usertable where user = ?";
            statement = connection.prepareStatement(sql);
            statement.setString(1, user);
            //3.执行sql
            resultSet = statement.executeQuery();
            //4.对遍历结果进行检查
            while (resultSet.next()) {
                String username = resultSet.getString("user");
                String password = resultSet.getString("password");
                if (username == null) {
                    return false;
                } else {
                    if (username.equals(user) && password.equals(pwd)) {
                        return true;
                    } else
                        return false;
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //5.回收资源
            John.close(connection, statement, resultSet);
        }
        //如果查询中途出了异常,就直接到了这一步,也是查询失败
        return false;
    }

    static JTable table;
    static Object[] columeNames = {"车牌号", "司机姓名", "年龄", "路线号", "起终点", "票价"};
    static Object[][] dataName = new Object[80][6];
    static int rowCount = 0; //获取当前的有效行数
    static  DefaultTableModel model;
    public static void shiftWindows() {
        JFrame frame = new JFrame("数据页面");
        frame.setSize(1000, 700);
        frame.setLocation(600, 300);
        frame.setLayout(new BorderLayout());
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel();//显示最上面的提示信息
        panel.setPreferredSize(new Dimension(200, 80));
        JLabel lableName = new JLabel("姓名 ");
        JLabel labelPath = new JLabel("路线 ");
        JLabel labelRangeMixAge = new JLabel("最小年龄 ", JLabel.LEFT);
        JLabel labelRangeMaxAge = new JLabel("最大年龄 ");
        lableName.setFont(new Font("宋体", Font.PLAIN, 20));
        labelPath.setFont(new Font("宋体", Font.PLAIN, 20));
        labelRangeMixAge.setFont(new Font("宋体", Font.PLAIN, 20));
        labelRangeMaxAge.setFont(new Font("宋体", Font.PLAIN, 20));
        JTextField textName = new JTextField(22);
        JTextField textPath = new JTextField(22);
        JTextField textMinAge = new JTextField(8);
        JTextField textMaxAge = new JTextField(8);
        JButton btnNameQuery = new JButton(" 姓名查询 ");
        JButton btnPathQuery = new JButton(" 路线查询 ");
        JButton btnRangeQuery = new JButton("年龄范围查询");
        JButton btnDelete = new JButton("删除");
        JButton btnUpdate = new JButton("修改");
        JButton btnAdddate = new JButton("增加");
        btnNameQuery.setPreferredSize(new Dimension(120, 25));
        btnPathQuery.setPreferredSize(new Dimension(120, 25));
        btnRangeQuery.setPreferredSize(new Dimension(120, 25));
        btnDelete.setPreferredSize(new Dimension(80, 25));
        btnUpdate.setPreferredSize(new Dimension(80, 25));
        btnAdddate.setPreferredSize(new Dimension(80, 25));
        //往展示面板放组件
        panel.add(lableName);
        panel.add(textName);
        panel.add(btnNameQuery);
        panel.add(labelPath);
        panel.add(textPath);
        panel.add(btnPathQuery);
        panel.add(labelRangeMixAge);
        panel.add(textMinAge);
        panel.add(labelRangeMaxAge);
        panel.add(textMaxAge);
        panel.add(btnRangeQuery);
        panel.add(btnDelete);
        panel.add(btnUpdate);
        panel.add(btnAdddate);

        //此用于一进入界面展示所有数据
        John2.dataQuery("无", 1);
         model = new DefaultTableModel(dataName, John2.columeNames);
        John2.table = new JTable(model);

        //创建滚动面板
        JScrollPane jScrollPane = new JScrollPane(John2.table);
        jScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        jScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        jScrollPane.setPreferredSize(new Dimension(500, 50));
        frame.add(panel, BorderLayout.NORTH);
        frame.add(jScrollPane, BorderLayout.CENTER);

        // 姓名查询 按钮
        btnNameQuery.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Object[][] nameQuery;
                JFrame frame1 = new JFrame("查询界面");
                frame1.setSize(500, 500);
                frame1.setLocation(700, 300);
                frame1.setLayout(new BorderLayout());
                frame1.setVisible(true);
                frame1.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
                String name = textName.getText();
                if (textName.getText().trim().equals("")) { //作用是 当输入为空,显示全部内容
                    nameQuery = John2.dataQuery(name, 1);
                } else {
                    nameQuery = John2.dataQuery(name, 2);
                }

                DefaultTableModel model = new DefaultTableModel(nameQuery, columeNames);
                JTable table1 = new JTable(model);
                JScrollPane jScrollPane = new JScrollPane(table1);
                frame1.add(jScrollPane, BorderLayout.CENTER);

            }
        });

        //年龄范围查询 按钮
        btnRangeQuery.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Object[][] rangeQuery;
                JFrame frame1 = new JFrame("查询界面");
                frame1.setSize(500, 500);
                frame1.setLocation(700, 300);
                frame1.setLayout(new BorderLayout());
                frame1.setVisible(true);
                frame1.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

                //作用是 当输入为空,显示全部内容
                if (textMinAge.getText().trim().equals("") || textMaxAge.getText().trim().equals("")) {
                    rangeQuery = John2.dataQuery("", 1);
                } else {
                    int min = Integer.parseInt(textMinAge.getText());
                    int max = Integer.parseInt(textMaxAge.getText());
                    rangeQuery = John2.rangeQuery(min, max);
                }
                DefaultTableModel model = new DefaultTableModel(rangeQuery, columeNames);
                JTable table1 = new JTable(model);
                JScrollPane jScrollPane = new JScrollPane(table1);
                frame1.add(jScrollPane, BorderLayout.CENTER);

            }
        });

        //路线查询 按钮
        btnPathQuery.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Object[][] nameQuery;
                JFrame frame1 = new JFrame("查询界面");
                frame1.setSize(500, 500);
                frame1.setLocation(700, 300);
                frame1.setLayout(new BorderLayout());
                frame1.setVisible(true);
                frame1.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
                String path = textPath.getText();//为适应调用函数,临时用字符串接收
                if (textPath.getText().trim().equals("")) {
                    nameQuery = John2.dataQuery(path, 1);
                } else {
                    nameQuery = John2.dataQuery(path, 3);
                }
                DefaultTableModel model = new DefaultTableModel(nameQuery, columeNames);
                JTable table1 = new JTable(model);
                JScrollPane jScrollPane = new JScrollPane(table1);
                frame1.add(jScrollPane, BorderLayout.CENTER);

            }
        });

        //删除事件处理
        btnDelete.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent eb) {
                dataQuery(null,1);
                String[] options = {"确认", "取消"};
                DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
                int row = table.getSelectedRow();//获取被选中的行
                if (row >= 0 ) {
                        String id = (String) table.getValueAt(row, 0);//获取单元格值
                        tableModel.removeRow(row);
                        dataDelete(id);//删除库里的数据
                        JOptionPane.showMessageDialog(null, "删除成功");
                        table.updateUI();//刷新
                }

            }
        });

        //修改事件处理
        btnUpdate.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent eb) {
                int updateRow = table.getSelectedRow();//获取被选中的行
                dataQuery(null,1);
                if (updateRow >= 0 && updateRow < rowCount) {
                    JFrame frame1 = new JFrame("修改界面");
                    frame1.setSize(400, 300);
                    frame1.setLocation(700, 300);
                    frame1.setLayout(new BorderLayout());
                    frame1.setVisible(true);
                    frame1.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
                    JPanel panel = new JPanel();//显示最上面的提示信息
                    panel.setPreferredSize(new Dimension(200, 80));
                    JLabel lableId = new JLabel("车牌号 ");
                    JLabel labelName = new JLabel("司机姓名 ");
                    JLabel labelAge = new JLabel("年龄 ", JLabel.LEFT);
                    JLabel labelPath = new JLabel("路线号 ");
                    JLabel labelStartDesPoint = new JLabel("起终点 ");
                    JLabel labelCharge = new JLabel("  票价 ");
                    lableId.setFont(new Font("宋体", Font.PLAIN, 20));
                    labelName.setFont(new Font("宋体", Font.PLAIN, 20));
                    labelAge.setFont(new Font("宋体", Font.PLAIN, 20));
                    labelPath.setFont(new Font("宋体", Font.PLAIN, 20));
                    labelStartDesPoint.setFont(new Font("宋体", Font.PLAIN, 20));
                    labelCharge.setFont(new Font("宋体", Font.PLAIN, 20));
                    //将选择行获取的列强转为 String,将其作为初始文本
                    JTextField textId = new JTextField((String) table.getValueAt(updateRow, 0), 23);
                    JTextField textName = new JTextField((String) table.getValueAt(updateRow, 1), 23);
                    JTextField textAge = new JTextField((int) table.getValueAt(updateRow, 2) + "", 23);
                    JTextField textPath = new JTextField((int) table.getValueAt(updateRow, 3) + "", 23);
                    JTextField textStartDesPoint = new JTextField((String) table.getValueAt(updateRow, 4), 23);
                    JTextField textCharge = new JTextField((int) table.getValueAt(updateRow, 5) + "", 23);
                    textId.setEditable(false);//设定车牌号不可修改
                    JButton btnConfirm = new JButton(" 确定  ");
                    JButton btnCancel = new JButton("   取消 ");
                    btnConfirm.setPreferredSize(new Dimension(100, 20));
                    btnCancel.setPreferredSize(new Dimension(100, 20));
                    btnCancel.setLocation(150, 200);
                    panel.add(lableId);
                    panel.add(textId);
                    panel.add(labelName);
                    panel.add(textName);
                    panel.add(labelAge);
                    panel.add(textAge);
                    panel.add(labelPath);
                    panel.add(textPath);
                    panel.add(labelStartDesPoint);
                    panel.add(textStartDesPoint);
                    panel.add(labelCharge);
                    panel.add(textCharge);
                    panel.add(btnConfirm);
                    panel.add(btnCancel);
                    frame1.add(panel);

                    //修改完以后,对输入的数据传输到数据库
                    btnConfirm.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {

                            String id = textId.getText();
                            String name = textName.getText();
                            int age = Integer.parseInt(textAge.getText());
                            int path = Integer.parseInt(textPath.getText());
                            String startDesPoint = textStartDesPoint.getText();
                            int charge = Integer.parseInt(textCharge.getText());
                            if (!name.equals((String) table.getValueAt(updateRow, 1))) {
                                table.setValueAt(name, updateRow, 1);
                                dataUpdata(name, id, 1);
                            }
                            if (age != (int) table.getValueAt(updateRow, 2)) {
                                String ages = age+"";
                                table.setValueAt(age, updateRow, 2);
                                dataUpdata(ages, id, 2);
                            }
                            if (path != (int) table.getValueAt(updateRow, 3)) {
                                String paths = path + "";
                                table.setValueAt(path, updateRow, 3);
                                dataUpdata(paths, id, 3);
                            }
                            if (!startDesPoint.equals((String) table.getValueAt(updateRow, 4))) {
                                table.setValueAt(startDesPoint, updateRow, 4);
                                dataUpdata(startDesPoint, id, 4);
                            }
                            if (age != (int) table.getValueAt(updateRow, 5)) {
                                String charges = charge + "";
                                table.setValueAt(charge, updateRow, 5);
                                dataUpdata(charges, id, 5);
                            }
                            table.updateUI();
                            JOptionPane.showMessageDialog(null, "修改成功");
                        }
                    });

                    //修改到中途,突然想放弃修改
                  btnCancel.addActionListener(new ActionListener() {
                      @Override
                      public void actionPerformed(ActionEvent e) {
                          JOptionPane.showMessageDialog(null,"取消修改");
                      }
                  });

                } else {
                }

            }
        });

        //添加事件处理
        btnAdddate.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent eb) {
                    JFrame frame1 = new JFrame("修改界面");
                    frame1.setSize(400, 300);
                    frame1.setLocation(700, 300);
                    frame1.setLayout(new BorderLayout());
                    frame1.setVisible(true);
                    frame1.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
                    JPanel panel = new JPanel();
                    panel.setPreferredSize(new Dimension(200, 80));
                    JLabel lableId = new JLabel("车牌号 ");
                    JLabel labelName = new JLabel("司机姓名 ");
                    JLabel labelAge = new JLabel("年龄 ", JLabel.LEFT);
                    JLabel labelPath = new JLabel("路线号 ");
                    JLabel labelStartDesPoint = new JLabel("起终点 ");
                    JLabel labelCharge = new JLabel("  票价 ");
                    lableId.setFont(new Font("宋体", Font.PLAIN, 20));
                    labelName.setFont(new Font("宋体", Font.PLAIN, 20));
                    labelAge.setFont(new Font("宋体", Font.PLAIN, 20));
                    labelPath.setFont(new Font("宋体", Font.PLAIN, 20));
                    labelStartDesPoint.setFont(new Font("宋体", Font.PLAIN, 20));
                    labelCharge.setFont(new Font("宋体", Font.PLAIN, 20));
                    //将选择行获取的列强转为 String,将其作为初始文本
                    JTextField textId = new JTextField( 23);
                    JTextField textName = new JTextField(23);
                    JTextField textAge = new JTextField( 23);
                    JTextField textPath = new JTextField(23);
                    JTextField textStartDesPoint = new JTextField(23);
                    JTextField textCharge = new JTextField(23);
                    JButton confirmAdd = new JButton(" 确定  ");
                    JButton btnCancel = new JButton("   取消 ");
                    confirmAdd.setPreferredSize(new Dimension(100, 20));
                    btnCancel.setPreferredSize(new Dimension(100, 20));
                    btnCancel.setLocation(150, 200);
                    panel.add(lableId);
                    panel.add(textId);
                    panel.add(labelName);
                    panel.add(textName);
                    panel.add(labelAge);
                    panel.add(textAge);
                    panel.add(labelPath);
                    panel.add(textPath);
                    panel.add(labelStartDesPoint);
                    panel.add(textStartDesPoint);
                    panel.add(labelCharge);
                    panel.add(textCharge);
                    panel.add(confirmAdd);
                    panel.add(btnCancel);
                    frame1.add(panel);
                    confirmAdd.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e)throws NumberFormatException {
                            try {
                                String id = textId.getText();
                                String name = textName.getText();
                                int age = Integer.parseInt(textAge.getText());
                                int path = Integer.parseInt(textPath.getText());
                                String startDesPoint = textStartDesPoint.getText();
                                int charge = Integer.parseInt(textCharge.getText());
                                if(!textId.getText().equals("") && !textName.getText().equals("")&&
                                     !textAge.getText().equals("") && !textPath.getText().equals("")&&
                                !textStartDesPoint.getText().equals("")&& !textCharge.getText().equals("")){
                                    dataAdd(id,name,age,path,startDesPoint,charge);//在数据库中添加数据
                                    dataName[rowCount][0] = id;//在表中添加数据
                                    dataName[rowCount][1] = name;
                                    dataName[rowCount][2] = age;
                                    dataName[rowCount][3] = path;
                                    dataName[rowCount][4] = startDesPoint;
                                    dataName[rowCount][5] = charge;
                                   //更新表格
                                    John2.dataQuery("无", 1);
                                    John2.model = new DefaultTableModel(dataName,columeNames);
                                    John2.table.setModel( John2.model);
                                    table.updateUI();//刷新
                                    JOptionPane.showMessageDialog(null, "新增数据成功");
                                    frame1.dispose();//提示新增成功后 就把窗口关闭
                                }else{
                                    JOptionPane.showMessageDialog(null,"输入有误,请正确输入");
                                }
                            } catch (Exception ex) {
                                ex.printStackTrace();
                            }finally {
                                frame1.dispose();
                            }
                        }
                    });

                    //修改到中途,突然想放弃修改
                    btnCancel.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            JOptionPane.showMessageDialog(null,"取消新增数据");
                        }
                    });

            }
        });

    }


      //数据库单个字段查询(姓名,路线)
    public static Object[][] dataQuery(String item,int num){
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
       Object[][] nameQuery = new Object[80][6];
        try {
            //建立连接
            connection = John.getConnection();
            //构造sql
            String sql;
            if(num == 1) {
                sql = "select * from busdriver order by age";
                statement = connection.prepareStatement(sql);
            }
            if(num == 2) {
                sql = "select * from busdriver where name like \"%\"?\"%\" order by age";
                statement = connection.prepareStatement(sql);
                statement.setString(1, item);
            }
            if(num == 3) {
                int pathInt = Integer.parseInt(item);
                sql = "select * from busdriver where path = ? order by age";
                statement = connection.prepareStatement(sql);
                statement.setInt(1,pathInt );
            }
            rowCount = 0;
            //执行sql
            assert statement != null;//由于是查询,结果可能为空,因此要有一个中断器避免此情况的继续发生
            resultSet = statement.executeQuery();
            //4.对遍历结果进行检查

            for(int i =0;resultSet.next();i++) {
                dataName[i][0] = resultSet.getString("id");
                dataName[i][1] = resultSet.getString("name");
                dataName[i][2] = resultSet.getInt("age");
                dataName[i][3] = resultSet.getInt("path");
                dataName[i][4] = resultSet.getString("startdespoint");
                dataName[i][5] = resultSet.getInt("charge");
                nameQuery[i][0] = resultSet.getString("id");
                nameQuery[i][1] = resultSet.getString("name");
                nameQuery[i][2] = resultSet.getInt("age");
                nameQuery[i][3] = resultSet.getInt("path");
                nameQuery[i][4] = resultSet.getString("startdespoint");
                nameQuery[i][5] = resultSet.getInt("charge");
                  rowCount++;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //回收资源
            John.close(connection,statement,resultSet);
        }
        return nameQuery;
    }

    //数据库年龄范围查询
    public static Object[][] rangeQuery(int min ,int max ){
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        Object[][] nameQuery = new Object[80][6];
        try {
            //建立连接
            connection = John.getConnection();
            //构造sql
            String sql;
                sql = "select * from busdriver where age >= ? and age <= ? order by age";
                statement = connection.prepareStatement(sql);
                statement.setInt(1,min);
                statement.setInt(2,max);

            //执行sql
            resultSet = statement.executeQuery();
            //4.对遍历结果进行检查

            for(int i =0;resultSet.next();i++) {
                dataName[i][0] = resultSet.getString("id");
                dataName[i][1] = resultSet.getString("name");
                dataName[i][2] = resultSet.getInt("age");
                dataName[i][3] = resultSet.getInt("path");
                dataName[i][4] = resultSet.getString("startdespoint");
                dataName[i][5] = resultSet.getInt("charge");
                nameQuery[i][0] = resultSet.getString("id");
                nameQuery[i][1] = resultSet.getString("name");
                nameQuery[i][2] = resultSet.getInt("age");
                nameQuery[i][3] = resultSet.getInt("path");
                nameQuery[i][4] = resultSet.getString("startdespoint");
                nameQuery[i][5] = resultSet.getInt("charge");

            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //回收资源
            John.close(connection,statement,resultSet);
        }
        return nameQuery;
    }

    //数据的删除
    public static void dataDelete(String id){
        Connection connection = null;
        PreparedStatement statement = null;
        try {
            //建立连接
            connection = John.getConnection();
            //构造sql
            String sql;
                sql = "delete from busdriver where id = ?  ";
                statement = connection.prepareStatement(sql);
                statement.setString(1, id);
            //执行sql
                statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //回收资源
            John.close(connection,statement,null);
        }
    }

    //数据的修改
    public static void dataUpdata(String attribute,String id,int num){
        Connection connection = null;
        PreparedStatement statement = null;
        try {
            //建立连接
            connection = John.getConnection();
            //构造sql
            String sql;
            if(num == 1)
            {
                sql = "update busdriver set name = ? where id = ?  ";
                statement = connection.prepareStatement(sql);
                statement.setString(1, attribute);
                statement.setString(2,id);
            }
            if(num == 2)
            {
                int age = Integer.parseInt(attribute);
                sql = "update busdriver set age = ? where id = ?";
                statement = connection.prepareStatement(sql);
                statement.setInt(1, age);
                statement.setString(2,id);
            }
            if(num == 3)
            {
                int path = Integer.parseInt(attribute);
                sql = "update busdriver set path = ? where id = ?";
                statement = connection.prepareStatement(sql);
                statement.setInt(1, path);
                statement.setString(2,id);
            }
            if(num == 4)
            {
                sql = "update busdriver set startdespoint = ? where id = ?";
                statement = connection.prepareStatement(sql);
                statement.setString(1, attribute);
                statement.setString(2,id);
            }
            if(num == 5)
            {
                int charge = Integer.parseInt(attribute);
                sql = "update busdriver set charge = ? where id = ?";
                statement = connection.prepareStatement(sql);
                statement.setInt(1, charge);
                statement.setString(2,id);
            }

            //执行sql
            assert statement != null;
            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //回收资源
            John.close(connection,statement,null);
        }
    }

    //数据的添加
    public static void dataAdd(String id, String name,int age,int path,String startdespoint ,int charge){
        Connection connection = null;
        PreparedStatement statement = null;
        try {
            //建立连接
            connection = John.getConnection();
            //构造sql
            String sql;
                sql = "insert into busdriver values(?,?,?,?,?,?) ";
                statement = connection.prepareStatement(sql);
                statement.setString(1, id);
                statement.setString(2, name);
                statement.setInt(3, age);
                statement.setInt(4, path);
                statement.setString(5, startdespoint);
                statement.setInt(6, charge);
            //执行sql1
            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //回收资源
            John.close(connection,statement,null);
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(John2::createAndShowGUI);
    }

}

第二个代码类

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import java.sql.*;
import javax.sql.DataSource;

public class John{
    //放着数据库名字
    private static String url = "jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&&useSSL=false";
    private static String username ="root";
    private static String password = "数据库密码";

    //1.创建数据源
    private static DataSource dataSource = new MysqlDataSource();
    //2.通过静态代码块完成 URL协议,数据库用户和密码的设置
    static {
        ((MysqlDataSource) dataSource).setURL(url);
        ((MysqlDataSource) dataSource).setUser(username);
        ((MysqlDataSource) dataSource).setPassword(password);
    }
        //3.提供外部一个方法连接数据库
        public static Connection getConnection() throws SQLException {
            return dataSource.getConnection();
        }
        //4.资源的回收
       public static void close(Connection connection, PreparedStatement statement , ResultSet resultSet)  {
        if(resultSet != null){
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(statement != null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(connection != null){
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
       }


    }

下面讲如何使用上面这些代码,
1, 在IDEA 中 创建一个class 类文件,文件名 John2 ,创建后 它会自动生成以下代码

public class John2{
}

**2,**你把这个代码删掉,把我的第一个代码类完全放进去, 然后再创建第二个 class类 ,文件名 John ,方法同上,然后把我第二个代码类 放进去即可。
(ps: John2是我给自己起的别名,你在了解我的代码逻辑后,也可以改其他的名字,但刚开始不建议,因为它会大量报错)

完成以上步骤后,你还需要做以下事情:
**3,**在第二个代码段中 有个中文,你把它改成 你下载MySQL 时设置的密码,
4, 然后在MySQL中 创建一个数据库,起名 test, 再创建两个表,一个usertable 和一个busdriver,参照我下面放的两个数据表的详情,起相同的列名,放一些数据。
5, 在MySQL中完成以上事情后,你需要在IDEA中安装数据库驱动包,这个步骤 ,你去我的博客中查看我的 名为 JDBC连接数据库驱动 的博文,里面讲的有 如何下载,以及如何把驱动包 放进IDEA ,里面讲的很详细。

以下是MySQL 信息表格式及内容

下面是第一个 信息表,表格名为 usertable ,有两个属性名
在这里插入图片描述
下面就是usertable 表的具体内容,放的是登录界面中的 管理员用户名 和 密码 ,在登录界面 输入任意一个管理员与其相应的密码,即可登录成功 (由于里面涉及朋友信息,故做了处理哈 )
在这里插入图片描述
下面这个表是 第二个表,表名 busdriver ,里面放了六个属性在这里插入图片描述
下面这个放着第二个表里的信息
在这里插入图片描述

总结:

1,创建两个 名为 John2 和 John 的class文件 ,把两个代码类分别放进去
2,把第二个代码段的数据库密码改为自己的
3,在MySQL 中创建 名为 test的数据库,和两个名为 usertable 和 busdriver的table表
4, 在我的博客中 搜索 JDBC连接数据库驱动 的博文,找到与你数据库适配的驱动器,下载并放在IDEA中。

对了,你的MySQL中要插入中文数据,可能会报错, 自己去搜索下 如何设置 MySQL的字符集,此类博客很多,参照里面的方法把自己的 MySQL字符集改成 utf8 ,一定要是utf8 ,不能是gbk,会和我这里面的URL协议冲突而报错。

我把我能想到的都写了,你按照我的方法,完全照做后,是能看到和效果图一样的结果的。

写到最后
希望能尽可能的帮到看到它的你!
课设题目很多,我的也只是其中一个,但是你成功运行我的代码后,改一些关键词即可。

下面附了课设报告,这个报告只是个模板,里面内容与我的代码效果样图不同,仅供参考。
链接:https://pan.baidu.com/s/1J2vKqcXVgSGCXZY9QjV7YA
提取码:udxh

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值