当前位置:   article > 正文

简易物流管理系统的创建_制作一个简易的物流系统

制作一个简易的物流系统

说明

这是我们小组一起共同完成的一个简易物流管理系统,我负责的部分是数据访问层中的删除功能,以及数据库的搭建,还有针对不同窗口大小的适应部分。

页面搭建

我们使用的是Java swing框架 ,根据框架中提供的按钮、文本框、多行文本框以及弹出对话框建立联系,在按下确定按钮时会调用相应的数据访问层语言,先检查数据库是否存在以及其他情况,返回相应的状态,从而进行判断。

 //注册提交
        BtnCo.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e)  {
                String iam = String.valueOf(comboBox.getSelectedItem());

                LoginPanel.ID = IDField.getText();
                String address = AddressField.getText();
                String password = String.valueOf(PasswordField.getPassword());
                String passwordVerify = String.valueOf(PasswordVerifyField.getPassword());

                if (iam == "买家") {
                    LoginPanel.type = 0;
                }
                if (iam == "商家")  {
                    LoginPanel.type = 1;
                }
                switch (Response.register(type,ID,address,password,passwordVerify)) {
                    case Done : {
                        jf.setVisible(false);
                        jf.setBounds(0, (int) (Oheight*0.037), Owidth, (int) (Oheight*0.963));
                        MainPanel();
                        jf.setVisible(true);
                        break;
                    }
                    case ExistedUID : {
                        JOptionPane.showMessageDialog(jf,
                                "<html><font size=14>账号已存在!", "错误",
                                JOptionPane.ERROR_MESSAGE);
                        break;
                    }
                    case IncorrectUID : {
                        JOptionPane.showMessageDialog(jf,
                                "<html><font size=12>账号长度不是11位!", "错误",
                                JOptionPane.ERROR_MESSAGE);
                        break;
                    }
                    case IncorrectAddress : {
                        JOptionPane.showMessageDialog(jf,
                                "<html><font size=14>地址长度不符!", "错误",
                                JOptionPane.ERROR_MESSAGE);
                        break;
                    }
                    case IncorrectPassword : {
                        JOptionPane.showMessageDialog(jf,
                                "<html><font size=14>密码位数不符!", "错误",
                                JOptionPane.ERROR_MESSAGE);
                        break;
                    }
                    case PasswordMismatched : {
                        JOptionPane.showMessageDialog(jf,
                                "<html><font size=14>密码不同!", "错误",
                                JOptionPane.ERROR_MESSAGE);
                        break;
                    }
                    default : {
                        System.out.println(Response.register(type,ID,address,password,passwordVerify));
                        break;
                    }
                }
            }
        });


    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66

当用户从下拉框列表中选择的是买家或者卖家时,根据买家类型为零,商家类型为一 进行注册尝试,如果返回的是error,根据不同error返回相应的提示框,如果成功,则会改变页面大小,添加新的Panel图像。
在这里插入图片描述在这里插入图片描述

数据访问层

在deleteID这个方法中,先写sql语句,然后将传入的参数设置到SQL语句的问号中,因为删除不需要判断UID(一定是正确的UID),在执行以后再执行删除包裹语句,如果是用户这个账号删除了,就传入用户的id然后根据id删除对应的包裹,顾客同理。

static public Response.ResponseState deleteID(String table, String UID) throws SQLException{
        Connection databaseConnection = null;
        PreparedStatement databaseStatement = null;
        ResultSet databaseResult = null;
        Response.ResponseState processState = Response.ResponseState.Error;
        try{
            Class.forName("com.mysql.cj.jdbc.Driver");
            databaseConnection = DriverManager.getConnection(DatabaseURL,
                    "...", "...");
            String SQL = "delete from " + table + " where UID = ?";
            databaseStatement = databaseConnection.prepareStatement(SQL,
                    databaseResult.TYPE_SCROLL_INSENSITIVE, databaseResult.CONCUR_UPDATABLE);
            databaseStatement.setString(1, UID);
            databaseStatement.executeUpdate();

            if ("sellers".equals(table)) {
                return deletePack(UID,"sellers");
            } else {
                return deletePack(UID,"customers");
            }
        }
        catch (SQLException e) {
            processState = Response.ResponseState.DatabaseError;
        }
        catch (ClassNotFoundException e) {
            processState = Response.ResponseState.DriverNotFound;
        }
        finally {
            try {
                assert databaseResult != null;
                databaseResult.close();
                assert databaseStatement != null;
                databaseStatement.close();
                assert databaseConnection != null;
                databaseConnection.close();
            }
            catch(Exception e){

            }
        }
        return processState;
    }
    static private Response.ResponseState deletePack(String UID, String type) throws SQLException{
        Connection databaseConnection2 = null;
        PreparedStatement databaseStatement2 = null;
        ResultSet databaseResult2 = null;
        Response.ResponseState processState = Response.ResponseState.Error;
        try{
            Class.forName("com.mysql.cj.jdbc.Driver");
            databaseConnection2 = DriverManager.getConnection(DatabaseURL,
                    "...", "...");
            String SQL2;
            if ("sellers".equals(type)) {
                SQL2 = "delete from packages where SellerID = ?";
            } else {
                SQL2 = "delete from packages where CustomerID = ?";
            }
            databaseStatement2 = databaseConnection2.prepareStatement(SQL2,
                    databaseResult2.TYPE_SCROLL_INSENSITIVE, databaseResult2.CONCUR_UPDATABLE);
            databaseStatement2.setString(1, UID);
            databaseStatement2.executeUpdate();
            processState = Response.ResponseState.Done;
        }
        catch (SQLException e) {
            processState = Response.ResponseState.DatabaseError;
        }
        catch (ClassNotFoundException e) {
            processState = Response.ResponseState.DriverNotFound;
        }
        finally {
            try {
                assert databaseResult2 != null;
                databaseResult2.close();
                assert databaseStatement2 != null;
                databaseStatement2.close();
                assert databaseConnection2 != null;
                databaseConnection2.close();
            }
            catch(Exception e){

            }
        }
        return processState;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84

增删改查

在这里插入图片描述在这里插入图片描述

商家通过在收货人手机号上添加文本,然后点击添加包裹,只要数据库中有买家手机号,他就可以添加成功。
在这里插入图片描述在收件人的账户上,可以在同一时间显示页面状况。

用户可以点击销毁账户,后端会根据用户的id删除相应的信息。就不演示了。

用户可以通过点击修改密码,以防密码的泄露。
在这里插入图片描述

每一次点击的货物列表以及个人信息,都会调用数据访问层中的方法,并显示在界面上。

        ArrayList<Result> arrayList;
        arrayList = Response.query(LoginPanel.type,LoginPanel.ID);
        int len = arrayList.size();


        repaint();
        removeAll();
        updateUI();
        URL imageURL = LoginFrame.class.getResource("/images/wallpaper.jpg");
        try {
            image = ImageIO.read(imageURL);
        } catch (Exception e) {
            e.printStackTrace();
        }

        Container con = this;
        //设置为自定义布局
        con.setLayout(null);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

数据库

数据库是根据mysql语句写的,搭建在服务器上,只要有软件,就可以轻松的根据手机号创建用户,进行模拟化的操作,商家可以发货给买家(因为是模拟,所以功能不会太多)。
在这里插入图片描述在这里插入图片描述如上图进行数据库的搭建,不仅可以使用图形化界面,也可以使用sql语句进行编写。
本项目的全部源码以及打包程序均上传至GitHub,并附有说明文档,具体信息请前往Github查看,测试程序请前往Release下载,项目遵循GPL-3.0 License协议。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/585288
推荐阅读
相关标签
  

闽ICP备14008679号