基于Java的订餐系统设计与实现客户端详细设计1.设计分析顾客模块的主要功能是浏览,订餐。
浏览与自己相关的食品信息,订单信息等。
用户要下订单之前临时美食车把详细信息列出,物品的单价,购买的数量,总共的价钱,可修改购买,当符合顾客要求的时候,顾客就可以下订单,下订单时首先会先到commitfood.aspx 让用户确定一下订单是否付合要求,确认无误后,进入checkout.aspx填写接收信息后生成订单。
然后由AddbuyInfo,Addbuyinfo方法对数据库进行操作完成的。
顾客模块详细设计主要涉及到顾客下订单和食品搜索两大功能顾客可以通过此功能对自己选中的东西下订单,等待服务商送货。
1. 菜品浏览:可以分页浏览菜品菜品,并将想要的菜品提交到填写订单页面。
然后系统打出此次订购的编号2.订购菜品:用户根据自己的编号可以在该页面定购所需要的菜品3.查看订单:用户根据自己的编号在该页修改已经订购的菜品。
4.修改订单:在该页修改或删除已经订购的菜品。
5.菜品查询:用户根据自己的订购编号可以在该页查找自己需要的菜品。
2.顾客下订单流程图:图1 顾客下单流程图据图通过提供食品搜索控件,为顾客提供更为方便快捷的服务。
顾客可以快速的找到自己想要下订的美食。
3.搜索流程图如图4-3所示:图2 搜索模块程序流程图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_CLOS E);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(newjava.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(newjava.awt.event.ActionListener()public void actionPerformed(java.awt.event.ActionEvent evt){controlcenterActionPerformed(evt);}});2.订单信息setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOS E);setTitle("我的订单");jLabel1.setFont(new java.awt.Font("微软雅黑", 0, 24)); // NOI18NjLabel1.setText("我的订单");jLabel2.setText("支付状况:");jLabel3.setText("未支付");jButton1.setText("确认收货");jButton1.addActionListener(newjava.awt.event.ActionListener(){public void actionPerformed(java.awt.event.ActionEvent evt){jButton1ActionPerformed(evt);}});jButton2.setText("取消");jButton2.addActionListener(newjava.awt.event.ActionListener(){public void actionPerformed(java.awt.event.ActionEvent evt){jButton2ActionPerformed(evt);}}jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder()) ;jCheckBox1.setText("COCO咖啡");jCheckBox1.addActionListener(newjava.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.Alignme nt.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.Alignme nt.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addComponent(jCheckBox1).addPreferredGap(ponen tPlacement.UNRELATED).addComponent(jCheckBox2).addPreferredGap(ponen tPlacement.UNRELATED).addComponent(jCheckBox3).addContainerGap(207, Short.MAX_VALUE)));jButton3.setText("删除选中");jLabel4.setText("总价:");jTextField1.setEditable(false);jTextField1.setText("48");jTextField1.addActionListener(newjava.awt.event.ActionListener(){public void actionPerformed(java.awt.event.ActionEvent evt){jTextField1ActionPerformed(evt);}});顾客界面订单生成界面:订单查看界面:文件操作:服务器管理员详细设计1.编写目的编写此文档的目的是为了让管理员更加便捷的管理软件及用户的信息,方便订餐系统的实现。