当前位置:文档之家› 基于JSP的餐厅点餐系统毕业论文

基于JSP的餐厅点餐系统毕业论文

毕业论文

题目名称:基于JSP的餐厅点餐系统设计与实现院系:信息工程学院

专业:计算机科学与技术

学生姓名:

学号:

指导教师:

摘要

本文系统地阐述了整个餐厅点餐系统的功能及实现。实现了从餐品管理,餐品分类和查询,到订餐车实现,用户订单处理,再到系统管理。基本上实现了餐厅点餐的功能流程。本系统界面简单直观,易于操作和使用,交互性强,完全基于Internet网络。经过分析,我们使用 SUN公司的JSP开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成满意的可行系统。

关键词:点餐;管理;JSP;数据库

Abstract

This paper systematically expounds the whole restaurant ordering system function and the realization. From the implementation of the food management, food classification and query, to order a meal cart implementation, the user order processing, to the system management. Basically realized the function flow ordering a meal in a restaurant. This system simple and intuitive interface, easy operation and use, interactive, network based entirely on the Internet. After analysis, we use SUN's JSP development tool, its use of object-oriented development tools, especially data window can be convenient and simple manipulation of the intelligent object database, the first in a short time establishes the system application prototype, then, demand for the initial prototype system iteration, and constantly revised and improved, until forming the feasible system of satisfaction.

Keywords: meal; management; JSP; database

目录

1 引言 (1)

1.1 课题研究的背景 (1)

1.2 点餐系统的优势 (1)

2 开发工具及运行环境 (2)

2.1 JSP技术简介 (2)

2.2 JSP工作原理 (2)

2.3 MYSQL数据库介绍 (3)

2.4 系统实现的软硬件平台 (4)

2.5 软件的安装与配置 (4)

3 点餐系统功能分析 (5)

3.1系统功能分析 (5)

3.2可行性研究 (5)

4 点餐系统总体设计 (5)

4.1 系统总体结构图 (5)

4.2 系统ER图 (7)

4.3 系统模块设计 (8)

5 点餐系统的功能实现 (9)

5.1网站首页设计与实现 (9)

5.2点餐功能设计与实现 (11)

5.3订单信息功能的设计与实现 (13)

5.4 餐品查询功能的查询与实现 (15)

5.5 订单管理功能的设计与实现 (17)

5.6餐品发布功能的设计与实现 (20)

6点餐系统的调试与测试 (22)

6.1软件调试 (22)

6.2软件测试 (23)

7 总结 (24)

参考文献 (25)

致谢 (26)

1 引言

1.1 课题研究的背景

中国的餐饮行业是朝阳行业中蓬勃发展的一种传统产业。说她古老是因为自从产生了社会分工就有了餐饮业,有了从业人员,可以说伴随了整个人类社会发展的每一个阶段。说她新兴,今天的餐饮业已经与以前的餐饮业有了很大的不同,无论从功能上、经营模式上都有了极大的变化。功能上:从解决肚子问题到社会交往、到人生享受。经营模式也是百家争鸣、异彩纷呈。

当前,中国餐饮行业发展态势明显,主要体现在连锁经营、品牌培育、技术创新、管理科学化为代表的现代餐饮企业,逐步替代传统餐饮业的手工随意性生产、单店作坊式、人为经验管理型,快步向产业化、集团化、连锁化和现代化迈进;大众化消费越来越成为餐饮消费市场的主体;饮食文化已经成为餐饮品牌培育和餐饮企业竞争的核心,现代科学技术、科学的经营管理、现代营养理念在餐饮行业的应用已经越来越广泛。不可否认的是,机遇与挑战并存,利润与风险同在,我们在看到发展机遇的同时,也不能忽视面临的挑战。中国的餐饮业面临着如下挑战: 1、国际著名品牌的竞争和挑战,国外大型餐饮公司以丰富的菜品和独特的文化进入中国,他们比我们更能够吸引消费者、引导消费者、同化消费者,国际著名品牌既快又多地进入中国市场,必将给我们的餐饮企业带来极大的冲击。 2、来自国外的餐饮企业,将以各种手段、优惠条件、雄厚的资金实力、科学规范的管理环境来吸引餐饮技术、管理、服务、文化等方面的人才,我们餐饮业面临专业人才流失的挑战。 3、企业规模的竞争,中国餐饮企业普遍是中小企业,很难同国际大企业相提并论,而规模的大小对竞争的实力和成本有较大的影响. 4、综合服务素质的竞争和挑战,中国餐饮业从业人员的文化水平大都较低,我们的研究能力和从业水平有待提高。为了解决种种问题,提高自身的竞争能力,必须有一款既省时又省力的管理软件,这样才能在市场站住脚跟,获取更多的利益。

1.2 点餐系统的优势

点餐系统利用软件的全自动信息化手段,实现点菜、配菜、炒菜到传菜的全部管理过程;完成点菜单计算机管理、点菜单前端收银台与各厨房的同步打印;实现菜单无纸化操作;后台经理查询;仓库进销存管理等。点餐系统可以对客户资料进行有效的管理,存档和备查,杜绝酒楼“漏单”、“跑单”现象;帮助酒楼利用计算机强大的数据处理能力和流程优化能力,实现自动化管理,简化酒楼的工作流程,减少浪费及人为管理的疏漏现象,重新优化配置企业资源,把经营成本降低到最低。

功能强大的点餐系统除支持一般的单机和局域网应用之外,还支持总店/分店多级架构的远程联网应用于分店使用POS系统实现前台销售收银、即时打印销售小票、销售日结、上报销售数据和接收新菜品信息等功能。

2 开发工具及运行环境

2.1 JSP技术简介

JSP是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态技术标准。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP 标签,就构成了JSP网页java程序片段可以操纵数据库、重新定向网页以及发送E-mail 等,实现建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,这样大大降低了对客户浏览器的要求,即使客户浏览器端不支持Java,也可以访问JSP网页。

JSP全名为java server page,其根本是一个简化的Servlet设计,他实现了Html 语法中的java扩张(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户端。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。

JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP 配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。

2.2 JSP工作原理

在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet。而这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。 JSP 引擎先把该JSP文件转换成一个Java源文件,在转换时如果发现jsp文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息;如果转换成功, JSP引擎用javac把该Java源文件编译成相应的class文件。然后创建一个该SERVLET的实例,该SERVLET的jspInit()方法被执行,jspInit()方法在servlet的生命周期中只被执行一次。然后jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会

创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间.但应该注意多线程的编程限制,由于该servlet始终驻于内存,所以响应是非常快的。如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的servlet,并继续上述处理过程。虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延迟。此外,如果在任何时候如果由于系统资源不足的原因,JSP 引擎将以某种不确定的方式将servlet从内存中移去。当这种情况发生时jspDestroy()方法首先被调用, 然后servlet实例便被标记加入"垃圾收集"处理。 jspInit()及jspDestory()格式如下:可在jspInit()中进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中取一些参数等,在jspDestory()中释放相应的资源。

2.3 MYSQL数据库介绍

作为微软下一代的数据管理与商业智能平台,MYSQL将是微软5年来具有里程碑性质的企业级数据库产品。和以往的数据解决方案相比,MYSQL将给您带来空前的价值、超强的功能和激动人心的全新体验。

MYSQL中包含了非常丰富的新特性:通过提供一个更安全、可靠和高效的数据管理平台,增强企业组织中用户的管理能力,大幅提升IT管理效率并降低运维风险和成本;通过提供先进的商业智能平台满足众多客户对业务的实时统计分析、监控预测等多种复杂管理需求,推动企业管理信息化建设和业务发展;同时,MYSQL将提供一个极具扩展性和灵活性的开发平台,不断拓展您的应用空间,实现Internet数据业务互联,为您带来新的商业应用机遇。

由于大大减少了应用程序宕机时间,提高了系统的可伸缩性和性能,并加以更严格的安全控制,MYSQL在支持现实中最苛刻的企业级系统要求的道路上,迈出了极大的一步。MYSQL是甲骨文服务器家族中重要的一部分,通过Oracle服务器系列产品共有的Engineering strategy所实现的增强的管理性和集成性,客户可以有效降低总体拥有成本并从更快的开发部署时间中受益。

MYSQL将在安全性、高可靠性、性能、扩展性、可管理性方面有极大的提高,不仅能够确保企业级数据业务的实时稳定运行、还能够大大提高管理效率、降低操作复杂度和运维成本。例如,MYSQL将提供全新的安全认证、数据加密技术来加强您数据系统的安全性;数据库镜像、快照、时点恢复、实时在线管理等诸多功能大大提高了企业级系统的可靠性、扩展性;而数据集成,各种自动化管理、调试和优化工具则为您的IT管理工作带来全新的体验。在硬件方面,MYSQL支持64位运算和海量数据存储。

MYSQL使您可以快速构建部署各类商业智能解决方案,为你提供深入的业务分析统计和监控预测平台,进一步推动企业的信息化管理和业务发展。MYSQL将提供非常完整的商业智能套件,包括相关的数据仓库、数据分析、ETL、报表、数据挖掘的一系列设计、开发、管理工具。为了满足客户日渐增强的实时BI和企业级应用规模的需求,MYSQL

在构建商业智能平台的实时性、扩展性方面也有了质的飞跃。全新的数据分析工具和丰富的数据挖掘算法将帮助客户有效进行深入的业务监控分析、决策支持;企业级的ETL 工具将支持各种异类数据和复杂数据业务的整合;面向终端用户的报表设计及管理工具与Office的前端集成能够提供非常灵活的数据展示和自由定制功能。

MYSQL将提供更加强大的开发工具和各类新的开发特性,在大大提高开发效率的同时,将进一步拓展您的应用空间,带来新的商业应用机遇。例如,XML数据库与Web Service的支持将使您的应用实现Internet数据互联,.Net集成极大的扩展了开发空间,异构数据集成、Service Broker使您的数据和其它应用无缝集成,各种新数据类型和T-SQL扩展带来了诸多灵活性。C#、https://www.doczj.com/doc/0714846332.html,、XQuery、XMLA、https://www.doczj.com/doc/0714846332.html, 2.0、SMO、AMO 等都将成为SQL Server数据平台上开发数据相关应用的有力工具。

2.4 系统实现的软硬件平台

点餐系统的开发环境:

操作系统:windows 7

运行环境:IE6.0 以上

开发工具:MyEclipse 8.5

数据库:MYSQL

服务器:Tomcat 6.0

点餐系统的运行环境:

操作系统: Windows 7

内存:1GB以上

硬盘容量:160G以上

应用服务器:Tomcat 6.0

JDK版本:1.6

IE浏览器为 IE6.0 以上

2.5 软件的安装与配置

(1)软件安装:

操作系统Windows 7

MYSQL

JDK

JDK的配置:

设置JAVA_HOME环境变量:JDK 安装目录例:C:\j2sdk1.4;设置CLASSPATH环境变量:JDK安装目录\lib\tools.jar 例:C:\j2sdk1.4\lib\tools.jar;.设置PATH环境变量:JDK 安装目录\bin;例:C:\j2sdk1.4\bin;服务器的安装:Tomcat 6.0设置TOMCAT_HOME环境变量:Tomcat安装目录例:C:\Tomcat 6.0;

(2)安装Tomcat6.0 安装时注意在选择Java虚拟机路径是一定要选择安装的JSDK

的目录,然后再开始安装。

(3)安装完毕后,启动TOMCAT,然后再浏览器中输入http://localhost:8080时可以看见TOMCAT的欢迎页面,这时表示配置成功了。

3 点餐系统功能分析

3.1系统功能分析

从用户角度来看,用户具有以下功能:餐品浏览,购买餐品,餐品简介、订餐车等。这几个功能完全可以满足客户的点餐需求,功能简单易操作,可以让客户在最短的时间内完成想要的操作。

从网站的角度看,网站应该包含(1)餐品搜索功能,可以实现按餐品关键字名查询。(2)订单处理功能,可以准确的完成对订单的各种操作(3)管理员管理,可以查看用户信息,并根据用户信息和用户订单对餐品进行发派。(4)餐品浏览与相关订餐,要求图文并茂,增加客户的食欲性。

3.2可行性研究

技术可行性分析:为了保证系统开发成功,必须采用工程化的系统开发方法,并研究出一些符合标准的开发方法。这些方法可以指导开发者进行工程化的系统开发,从而加快系统开发的速度,保证质量以及降低开发成本。工程化的系统开发方法确实在开发实践中取得了一定的效果。

经济可行性分析:开发本系统时所使用的是最便捷并且绿色版的工具,使用方便,占用磁盘空间小,最重要的是不用购买。应用的数据库工具,可以根据个人的需要下载很多不同的版本。由于该系统简洁精悍,开发所用的周期短,所以投入使用的时候消费者必定会很喜欢。所以经过上面解释,该系统具有经济上的可行性。

操作可行性分析:目前资源的操作和可操作性,只需根据相关需要对数据库中的相应表数据直接操作就可以实现系统完整、稳定的运行,不会造成系统的巨大压力,可以保证系统的正常运行。

综上所述,通过技术可行性、经济可行性、操作可行性分析,本系统的开发是可行的。

4 点餐系统总体设计

4.1 系统总体结构图

系统总体结构如4.1图所示:

图4.1点餐系统结构图

顾客点餐流程如4.2图所示:

图4.2顾客点餐流程图

餐厅点餐系统

点餐信息管理

餐品信息管理

分类信息管理

订单信息处理 用户信息管理

信息统计查询

管理员设置

顾客

预览餐品 点餐 付款

确认订单

取消订单

收银员操作流程如4.3图所示:

图4.3收银员操作流程图 厨房操作流程如4.4图所示:

图4.4厨房操作流程图 4.2 系统ER 图

收银员

查看订单 确认付款

取消订单

收银员

查看订单 做菜

取消订单

发货

系统ER 图如4.5图所示:

图4.5系统ER 图

4.3 系统模块设计

在线点餐模块:

A 用户可查看餐品图片及餐品信息

B 用户可将想要的餐品放入购物车 点餐信息模块:

A 用户可查看购物车内物品 餐品查询模块:

A 用户可模糊搜索想要的餐品 餐厅人员登录模块:

A 餐厅人员登录后按职务分工(分管理员,收银员,厨房) 管理员模块:

A 餐厅人员管理

B 餐厅公告管理

C 餐品信息管理

D 销售信息统计

管理员

用户名

密码

管理

点餐系统

餐品信息

餐品分类 销售统计

系统用户

收银人员

厨房人员

确认收款

取消订单

做菜

发货

取消订单

收银员模块:

A修改密码

B提交订单管理

厨房模块:

A修改密码

B提交订单管理

5 点餐系统的功能实现

5.1网站首页设计与实现

首页相当重要,所以必须要重点设计,因为顾客点餐的时候是先看到首页,如果首页设计的美观大方,就会激增顾客对餐厅的好感,不仅达到顾客保持良好的心情用餐,而且从另一方面也为餐厅增添了收入。

界面风格以暖色为主调,清新自然,采用字画结合,文字内容贴切生活,画面温馨,让人感到回家的感觉。重要的几个功能显而易见,即使是第一次使用本软件的顾客也能很快的完成点餐操作。

首页设计如5.1图所示:

图5.1首页界面

部分实现代码如下:

function autoTable(div){

fs=document.getElementById(div).getElementsByTagName("TABLE");

for(var i=0;i

fs[i].style.width='49.5%';

if(i%2==1){

if (document.all) {

fs[i].style.styleFloat="right";

}else{

fs[i].style.cssFloat="right;";

}

}else{

if (document.all) {

fs[i].style.styleFloat="left";

}else{

fs[i].style.cssFloat="left;";

}

}

}

}

  

首页 |

在线点餐 |

点餐信息 |

餐品查询 |

餐厅人员管理入口

5.2点餐功能设计与实现

点餐功能的设计主要是为顾客着想,要做到界面美观大方,让顾客一眼就能看到想知道的信息,比如餐品的名字、价格、实物图片、介绍等等,这些都是顾客在点餐之前想要知道的细节,必须把这些体现在屏幕上。

本软件点餐界面设置简单大方,重要的信息一眼就可看完,并且相关餐品的图片都真实美观,能够激起顾客的食欲。

点餐界面设计如5.2图所示:

图5.2点餐界面

部分实现代码如下:

function fIsNumber (sV,sR){

var sTmp;

if(sV.length==0){ return (false);}

for (var i=0; i < sV.length; i++){

sTmp= sV.substring (i, i+1);

if (sR.indexOf (sTmp, 0)==-1) {return (false);} }

return (true);}

function del()

{

pageform.submit();

}

<%String message = (String)request.getAttribute("message");

if(message == null){

message = "";}

if (!message.trim().equals("")){

out.println("");

}

request.removeAttribute("message"); %>

产品信息

<%cb.setEVERYPAGENUM(6);

int cou = cb.getMessageCount("select count(*) from sale");

String page1=request.getParameter("page");

if(page1==null){

page1="1"; }

session.setAttribute("busMessageCount", cou + "");

session.setAttribute("busPage", page1);

List pagelist1 = cb.getMessage(Integer.parseInt(page1),"select * from sale order by id desc",6);

session.setAttribute("qqq", pagelist1);

int pageCount = cb.getPageCount(); //得到页数

session.setAttribute("busPageCount", pageCount + "");

List pagelist3=(ArrayList)session.getAttribute("qqq");

if(!pagelist3.isEmpty()){

for(int alln1=0;alln1

List allnew=(List)pagelist3.get(alln1);%>

餐品名称:<%=allnew.get(1).toString()%>

销售价格:<%=allnew.get(3).toString()%>

餐品类型:<%=allnew.get(4).toString()%>

餐品简介:<%=allnew.get(5).toString()%>

5.3订单信息功能的设计与实现

此功能的作用就是显示出所点餐品的名字,数量,和总价格。让顾客可以清楚的看到自己的账单,直到顾客满意为止。

订单信息设计如5.3图所示:

图5.3订单信息

部分实现代码如下:

<%String dnum=(String)session.getAttribute("dnum"); %>

我的点餐

<%

float f=0;

Listlist=cb.getCom("select*from prep where dnum='"+dnum+"'",4);

if(!list.isEmpty()){for(inti=0;i

list2=(List)list.get(i);

f+=Float.parseFloat(cb.getString("select jg from sale where id='"+list2.get(1).toString()+"'"))*Integer.parseInt(list2.get(3).toString(

));%>

5.4 餐品查询功能的查询与实现

此功能主要实现餐品的查询,按餐品类别可以达到关键字查询餐品详细信息,方便顾客浏览以及订餐。

餐品查询设计如5.4图所示:

图5.4餐品查询

部分实现代码如下:

餐品名称餐品价格数量本餐品总价
<%=cb.getString("select mc from sale where id='"+list2.get(1).toString()+"'") %><%=cb.getString("select jg from sale where id='"+list2.get(1).toString()+"'") %><%=list2.get(3).toString() %><%=Float.parseFloat(cb.getString("select jg fromsalewhere

id='"+list2.get(1).toString()+"'"))*Integer.parseInt(list2.get(3).toString( )) %>