当前位置:文档之家› 无线点餐系统设计文档

无线点餐系统设计文档

无线点餐系统详细设计1、引言1.1编写目的软件可行性研究报告的编制是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解,使之成为整个开发工作的基础.1.2编写背景旨在改善就餐厅餐环境,缓解就餐高峰期点餐顾客等待时间过长的问题,运用高科技点餐,突破原有的餐厅服务模式,吸引更多的客户。

2、可行性研究2.1 要求主要功能:将餐厅点菜自动化、自由化、个性化功能需求:➢面向经理:后台管理(访问权限,修改菜单,增加菜项,删除菜项,查询订单,结账等等) ➢面向顾客:消费评分➢面向服务员:显示菜单、预定餐桌、下单功能性能要求: 管理员录入的信息必须无差错地存储至中心服务器,且对客户端的数据应该及时进行更新。

输出要求:数据完整,详实。

输入要求:方便,简捷,快速。

安全与保密要求: 餐厅服务员只有查询和下单功能管理人员则拥有在其权限内的查询,修改,增加,删除菜单,制定价格等一些管理功能。

2.2 目标为各中小型餐厅酒店提供一个统一、方便、安全的信息管理平台.2.3 可行性研究方法可行性研究的方法是通过对各大中小型餐厅、酒店管理者进行问卷调查及访问谈话而得到用户对此系统的信任度关注度及依赖度的,通过建模分析,得出了该系统的功能需求,成本分析,可行性分析。

2.4 决定可行性的主要因素成本/效益分析结果,效益>>成本。

技术可行,现有技术可完全承担开发任务。

操作可行,软件能被原有工作人员快速接受。

3、需求分析3.1 现状✓顾客:一些生意较好的餐厅人往往比较多,点个菜都要等好久,更别提什么时候能吃上了。

✓服务员:有的顾客比较挑剔,点菜的时候会对各种菜问个究竟,有的顾客拿点菜迟迟不定主意,人多的时候根本忙不过来。

3.2 发展前景在计算机技术以及互联网飞速发展的今天,先进的经营理念,人性化的设计,以及高科技的支持,无疑使得餐厅、酒店更受消费者的欢迎。

通过先前的调查分析得知,点餐系统以其高效率、直观、便捷的优点将迅速占领整个餐饮市场。

4、流程设计4.1 服务员4.2 管理员5、总体设计5.1 启动系统客人点击菜单进入系统,开始选菜,启动界面如下图所示。

图15.2 选菜品客人选择了桌号的时候,就可以进入选菜阶段。

客户根据自己的口味爱好进行筛选,可以按菜系进行搜索。

(如图二),点击菜品图片就可以进入到该菜品的详细信息页面。

图二5.3 查看菜品客人对某个菜品感兴趣的时候,可以查看菜品的的详细信息,可以对查看的菜品进行下单,下单之后重新进入选菜的页面,如果对该菜品不感兴趣可以返回选菜的页面。

(如图三)图三5.4 查看已下的订单客人可以随时查看点过的菜的清单,对数目经行核对,同时可以对本次用餐的情况进行评价(如图四)图四5.5 查看购物车客人可以随时查看购物车,还可以修改某个菜的数量。

(如图五)图五5.6 菜系管理首先在浏览器地址栏上输入“http://localhost:8080/wl/pages/admin/index.jsp”,打开后台首页。

然后打开pages/admin/index.jsp页面,把所有jsp路径前面的pages/admin删除掉。

管理员可以对菜系进行查询、添加、删除、修改。

➢查询菜系:第一步:修改pages/admin/common/left.jsp页面,指定菜系管理的访问地址。

第二步:创建一个Servlet类,该类获取所有的菜系数据,并发送JSP进行显示;package cn.itcast.wl.admin.menu;import java.io.IOException;import java.sql.SQLException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import cn.itcast.model.MenuBean;/*** 显示菜单的Servlet*/@WebServlet("/admin/listMenu.do")public class ListMenuServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {MenuBean menuBean = new MenuBean();try {//获取所有的菜单数据List menuList = menuBean.list();//把数据添加到Requestrequest.setAttribute("menus", menuList);} catch (SQLException e) {e.printStackTrace(); //把输出信息以及错误发生的位置输出到控制台第三步:创建一个MenuBean类,该类实现从数据库中查询所有菜系的功能;}//查询所有的菜单public List list() throws SQLException {//创建一个QueryRunner对象QueryRunner runner = new QueryRunner(DbUtil.getDataSource());String sql = "select * from menu";//执行查询return (List)runner.query(sql, new BeanListHandler(MenuBean.class));}}第四步:修改pages/admin/menu/list.jsp页面,把菜系的数据遍历出来;➢添加菜系:第一步:修改pages/admin/menu/list.jsp页面,指定“新建”按钮的页面地址;第二步:修改pages/admin/menu/add.jsp页面,指定表单提交的地址;第三步:创建一个Servlet,实现添加数据的功能;package cn.itcast.wl.admin.menu;import java.io.IOException;import java.sql.SQLException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import cn.itcast.model.MenuBean;/*** 添加新的菜系*/@WebServlet("/admin/addMenu.do")public class AddMenuServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//处理请求参数的中文乱码问题request.setCharacterEncoding("utf-8");//获取表单的数据String menuName = request.getParameter("menuName");//把数据保存到数据库中MenuBean menuBean = new MenuBean(menuName);try {menuBean.save();//保存数据的结果信息request.setAttribute("message", "保存成功!");} catch (Exception e) {request.setAttribute("message", "保存失败,请联系管理员!");e.printStackTrace();}//跳转回添加页面,并显示保存的结果request.getRequestDispatcher("/pages/admin/menu/add.jsp").forward(request, response);}}第四步:修改MenuBean.java,添加save方法,实现保存数据的功能;第五步:修改pages/admin/menu/add.jsp页面,设置显示保存结果的信息;5.7 菜品管理管理员可以对菜品进行添加、删除(图七)➢查询菜品:查询菜品的实现步骤与查询菜系一样。

但是,需要注意:因为需要查询菜系的名称,所以,需要同时查询food和menu表。

并且,为了区分food表的name字段和menu表的name字段,可以指定menu表name字段的别名:menuName。

只有查询出来的字段名与JavaBean的字段名相匹配的时候,DbUtil才会自动地帮我们把查询出来的数据封装成对应的JavaBean。

➢添加菜品:第一步:修改pages/admin/food/list.jsp页面,指定新建按钮的访问地址;第二步:修改pages/admin/food/add.jsp页面,指定表单的提交地址,以及指定enctype属性;第三步:创建一个Servlet,实现文件上传的功能;为了简化文件上传的操作,需要使用commons-fileupload组件。

该组件的作用是简化文件上传的操作。

➢使用commons-fileupload组件实现文件上传的步骤:第一步:创建一个ServletFileUpload对象;第二步:调用该对象的parseRequest方法把Request对象中的每一个表单项解析成一个个的FileItem对象,然后保存在一个集合中并返回。

也就是说,一个FileItem对象就代表一个表单项(普通字段、文件)。

该对象提供了一些方法获的数据;ServletFileUpload fileUpload = new ServletFileUpload(new DiskFileItemFactory());//把request对象中的每一个表单项解析成一个个的FileItem对象,然后保存在集合中并返回List list = fileUpload.parseRequest(request);//创建FoodBean对象FoodBean foodBean = new FoodBean();//遍历集合的数据for (int i = 0; i < list.size(); i++) {//一个FileItem就代表一个表单项//注意:获取普通表单项与获取上传文件的方式不一样FileItem fileItem = (FileItem)list.get(i);//如果isFormField返回true,代表该fileItem对象是一个普通的表单项//否则,该fileItem对象是一个文件if (fileItem.isFormField()) {//获取普通字段的名称String fieldName = fileItem.getFieldName();String fieldValue = fileItem.getString("utf-8");/*if ("menuId".equals(fieldName)) {foodBean.setMenuId(fieldValue);} else if ("name".equals(fieldName)) {foodBean.setName(fieldValue);} else if ("price".equals(fieldName)) {foodBean.setPrice(Double.parseDouble(fieldValue));} else if ("mprice".equals(fieldName)) {foodBean.setMprice(Double.parseDouble(fieldValue));} else if ("introduce".equals(fieldName)) {foodBean.setIntroduce(fieldValue);}*///根据字段名字把数据设置javabean中的对应属性BeanUtils.setProperty(foodBean, fieldName, fieldValue);} else {//读取文件/*读写文件的步骤:第一步:把文件读取到输入流里面;第二步:在服务器指定目录下创建一个空文件;第三步:把读取到的字节数据通过输出流写入到该文件中;第四步:关闭输出和输入流;*/InputStream in = fileItem.getInputStream();String fileName = fileItem.getName();//获取upload目录在Tomcat服务器中的绝对路径String savePath = request.getServletContext()除此以外,还要添加一个save方法。

相关主题