基于java的订餐系统设计(含源文件)

欢迎添加微信互相交流学习哦!

二维码

项目源码:https://gitee.com/oklongmm/biye

基于Java的订餐系统设计与实现
客户端详细设计
1.设计分析
顾客模块的主要功能是浏览,订餐。浏览与自己相关的食品信息,订单信息等。用户要下订单之前临时美食车把详细信息列出,物品的单价,购买的数量,总共的价钱,可修改购买,当符合顾客要求的时候,顾客就可以下订单,下订单时首先会先到commitfood.aspx让用户确定一下订单是否付合要求,确认无误后,进入checkout.aspx填写接收信息后生成订单。然后由AddbuyInfo,Addbuyinfo方法对数据库进行操作完成的。
顾客模块详细设计主要涉及到顾客下订单和食品搜索两大功能
顾客可以通过此功能对自己选中的东西下订单,等待服务商送货。
1.  菜品浏览:可以分页浏览菜品菜品,并将想要的菜品提交到填写订单页面。然后系统打出此次订购的编号
2.订购菜品:用户根据自己的编号可以在该页面定购所需要的菜品
3.查看订单:用户根据自己的编号在该页修改已经订购的菜品。
4.修改订单:在该页修改或删除已经订购的菜品。
5.菜品查询:用户根据自己的订购编号可以在该页查找自己需要的菜品。
2.顾客下订单流程图:
         

通过提供食品搜索控件,为顾客提供更为方便快捷的服务。顾客可以快速的找到自己想要下订的美食。
3.搜索流程图如图4-3所示:
 
4.Java swing做登陆界面:
1.容器类

JFrame窗体类
JPanel面板类
JMenuBar菜单类
2.元素类

JTextField文本输入框类
JPasswordField密码输入框类
JButton按钮类
JCheckBox复选框类
JComboBox下拉列表
JLabel标签类
3.布局类
使用FlowLayout流式布局类
4.Socket API:
.Accept方法:产生“阻塞”,直到接受到一个连接,并且返回一个客户端的Socket对象实例。
.getinputStream方法:获得网络连接输入.
.getOutputStream方法:连接的另一端将得到输入,同时返回一个OutputStream对象实例。
客户端开发原理:使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开对话;会话结束后,关闭Socket。客户端不需要制定打开的端口,通常临时的、动态的分配一个1024以上的端口。
5.主要代码
1.主界面:
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("顾客-网络订餐系统");
        setBackground(new java.awt.Color(255, 255, 255));

        nearby.setText("附近小吃");
        nearby.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                nearbyMouseClicked(evt);
            }
        }
        );

        suggest.setText("今日推荐");
        suggest.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                suggestMouseClicked(evt);
            }
        }
        );

        myorder.setText("我的订单");
        myorder.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                myorderMouseClicked(evt);
            }
        }
        );
        myorder.addActionListener(new java.awt.event.ActionListener() 
        {
            public void actionPerformed(java.awt.event.ActionEvent evt) 
            {
                myorderActionPerformed(evt);
            }
        }
        );

        all.setText("全部");
        all.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                allMouseClicked(evt);
            }
        }
        );

        meat.setText("饭类");
        meat.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                meatMouseClicked(evt);
            }
        }
        );

        noodle.setText("面类");
        noodle.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                noodleMouseClicked(evt);
            }
        }
        );

        west.setText("西餐");
        west.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                westMouseClicked(evt);
            }
        }
        );

        drink.setText("饮料");
        drink.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                drinkMouseClicked(evt);
            }
        }
        );

        other.setText("其他");
        other.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                otherMouseClicked(evt);
            }
        }
        );

        controlcenter.setText("个人中心");
        controlcenter.addActionListener(new java.awt.event.ActionListener() 
        {
            public void actionPerformed(java.awt.event.ActionEvent evt) 
            {
                controlcenterActionPerformed(evt);
            }
        }
        );
2.订单信息
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("我的订单");

        jLabel1.setFont(new java.awt.Font("微软雅黑", 0, 24)); // NOI18N
        jLabel1.setText("我的订单");

        jLabel2.setText("支付状况:");

        jLabel3.setText("未支付");

        jButton1.setText("确认收货");
        jButton1.addActionListener(new java.awt.event.ActionListener() 
        {
            public void actionPerformed(java.awt.event.ActionEvent evt) 
            {
                jButton1ActionPerformed(evt);
            }
        }
        );

        jButton2.setText("取消");
        jButton2.addActionListener(new java.awt.event.ActionListener() 
        {
            public void actionPerformed(java.awt.event.ActionEvent evt) 
            {
                jButton2ActionPerformed(evt);
            }
        }
        );

        jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jCheckBox1.setText("COCO咖啡");
        jCheckBox1.addActionListener(new java.awt.event.ActionListener() 
        {
            public void actionPerformed(java.awt.event.ActionEvent evt) 
            {
                jCheckBox1ActionPerformed(evt);
            }
        }
        );

        jCheckBox2.setText("铁板牛肉");

        jCheckBox3.setText("木须肉盖浇饭");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jCheckBox1)
                    .addComponent(jCheckBox2)
                    .addComponent(jCheckBox3))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jCheckBox1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jCheckBox2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jCheckBox3)
                .addContainerGap(207, Short.MAX_VALUE))
        );

        jButton3.setText("删除选中");

        jLabel4.setText("总价:");

        jTextField1.setEditable(false);
        jTextField1.setText("48");
        jTextField1.addActionListener(new java.awt.event.ActionListener() 
        {
            public void actionPerformed(java.awt.event.ActionEvent evt) 
            {
                jTextField1ActionPerformed(evt);
            }
        }
        );


顾客界面
订单生成界面:
 
订单查看界面:
 


文件操作:


 
 

 
 

服务器管理员详细设计
1.编写目的
编写此文档的目的是为了让管理员更加便捷的管理软件及用户的信息,方便订餐系统的实现。
2.系统模块详细设计
本系统总共有两大模块,分别是顾客模块,管理员模块。每个模块分别有不同的权限和使用功能。
3.登陆模块的流程图


                                 

                                                                   


N
    

Y


1-1登陆流程图

4.管理员模块详细设计
管理员:查看用户订单,查看用户信息,并根据用户信息和用户订单对菜 品进行发派。
管理员可以通过订单管理功能来处理日常的订单。

管理员订单处理程序流程图:
 
管理员可以通过此功能模块添加想要添加的各种信息,比如订单处理等功能。

 
通过提供美食搜索控件,为顾客提供更为方便快捷的服务。顾客可以快速的找到自己想要下订的美食。
搜索流程图如图1-4所示:
 
5.所需要的技术
管理员登陆界面Login界面的设计:
Java Swing做登陆界面:
1.容器类
JFrame窗体类
JPanel面板类
JMenuBar菜单类
2.元素类
JTextField文本输入框类
JPasswordField密码输入框类
JButton按钮类
JCheckBox复选框类
JComboBox下拉列表
JLabel标签类
3、    布局类
使用FlowLayout流式布局类
通信使用Socket API
.Accept方法
服务器端使用ServerSocket监听指定的端口(大于1024的端口),等待客户连接请求,客户连接后,会产生对话,在完成对话后,关闭连接。
客户端服务器之间连接用Socket
服务器内存管理(dll)

6.主要代码:
   1.登录界面
     jButton2.setText("登录");
     jButton2.addActionListener(new java.awt.event.ActionListener() 
     {
            public void actionPerformed(java.awt.event.ActionEvent evt) 
            {
                jButton2ActionPerformed(evt);
            }
        }
        );
2.管理界面

        jPasswordField1.addActionListener(new java.awt.event.ActionListener() 
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                jPasswordField1ActionPerformed(evt);
            }
        }
        );
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("店铺信息");

        jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 95, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 110, Short.MAX_VALUE)
        );

        scream.setAutoscrolls(true);

        javax.swing.GroupLayout screamLayout = new javax.swing.GroupLayout(scream);
        scream.setLayout(screamLayout);
        screamLayout.setHorizontalGroup(
            screamLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 612, Short.MAX_VALUE)
        );
        screamLayout.setVerticalGroup(
            screamLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 289, Short.MAX_VALUE)
        );

        other.setText("其他");
        other.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                otherMouseClicked(evt);
            }
        }
        );

        drink.setText("饮料");
        drink.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                drinkMouseClicked(evt);
            }
        }
        );

        noodle.setText("面类");
        noodle.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                noodleMouseClicked(evt);
            }
        }
        );

        west.setText("西餐");
        west.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                westMouseClicked(evt);
            }
        }
        );

        meat.setText("饭类");
        meat.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                meatMouseClicked(evt);
            }
        }
        );

        myorder.setText("店内产品管理");
        myorder.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                myorderMouseClicked(evt);
            }
        }
        );
        myorder.addActionListener(new java.awt.event.ActionListener() 
        {
            public void actionPerformed(java.awt.event.ActionEvent evt) 
            {
                myorderActionPerformed(evt);
            }
        }
        );

        suggest.setText("结算中心");
        suggest.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                suggestMouseClicked(evt);
            }
        }
        );

        all.setText("全部");
        all.addMouseListener(new java.awt.event.MouseAdapter() 
        {
            public void mouseClicked(java.awt.event.MouseEvent evt) 
            {
                allMouseClicked(evt);
            }
        }
        );
管理员服务器端界面
管理员登录

管理员界面
 


Socket通信:
 
服务器创建成功
等待客户端
客户机:Hello,girl !
 

猜你喜欢

转载自blog.csdn.net/weixin_55459367/article/details/114149059