1、 1 引言1.1 课题开发背景随着网络经济的不断发展,计算机网络已经成为人们社会生产和日常生活中不可缺少的部分。现在各行各业都在推行信息化,以提供效益和竞争力。俗话说,民以食为天,作为传统的餐饮服务行业也正面临着越来越激烈的竞争,如何才能更好在强手如林的餐饮市场上站稳脚跟并获得利润,电子商务的兴起为传统的餐饮服务行业提供了一条新的成功之路。挑战是现实的、机遇是潜在的,所以我们必须重组原有的商业格局,变革原有的商业模式来契合 Internet 的发展以获取更大的效益。现在超市、商场、机关以及写字楼里的工作人员的就餐成为一个非常紧迫的问题。对于传统的餐饮业来说,其地位置至关重要。超市、写字楼、科技
2、市场等人口集中的地方,都是开办快餐的最佳地点,但是那里的地价和房租都非常高,一般的经营者难以承受。更为重要的是,这些地方的餐饮业因为被其广泛的消费群体所吸引,餐馆林立,对于一般的经营者来说,在营业地点上已经没有插足之处了。而网上餐饮不会被地域因素而局限,由于它的成本低廉,在价格上往往是和传统餐饮抗衡的重要因素。现在电子商务已经成为网络交易的主流,人们已经慢慢习惯网上购物的方式,习惯在家里登录淘宝等购物网站挑选自己所喜爱的商品。同样,餐饮业也可以利用Internet 开发网上餐饮服务市场。1.2 课题现状及发展趋势现在我国使用的订餐方式还停留在电话订餐的层面上,但是不容置疑,电话订餐方便,随时打
3、一个电话就可以预订餐品。但是这种方式也存在着一些问题,这些问题或多或少的影响着饭店的运营,进行网上订餐还是近两年来发展起来的新型订餐方法,人们通过上网,对餐品进行预订,这样不仅节约了时间,也为饭店的订餐管理工作提供了方便。随着越来越多的人接受了电子商务这种便捷、快速的交易形式,网上订餐的顺势而出很快受到了大家的欢迎。互联网的应用以普及千家万户,这为网络订餐提供了良好的发展空间。特别在公司,企业内部,团体订餐已经成为了趋势。同时,随着全国人民的精神、物质和文化生活高度的提高,人们已经不在仅仅停留在吃饱的程度,不但要吃饱,还要吃好,而且口味也越来越挑刺,正因为如此网络订餐业务的出现,正迎合了这些人
4、的口味,他们不但省去了自己做饭的麻烦,而且也能寻找和发现新的餐品,品尝不同风格的餐品,网络订餐业务在中国有着极大的发展空间以及良好的背景。而且网络订餐服务的直观、有效、便捷等优点是传统的电话订餐业务无法比拟的。调查数据显示,北京白领更乐于选择网络订餐服务,网络订餐将是白领一族捕获餐店信息、进行订餐的发展趋势。1.3 课题开发意义在网络技术逐渐渗入社会生活各个层面的今天,传统的商业经营方式也面临着变革,而网上订餐则是一个很重要的方向。现在普遍使用的订餐方式是进行电话预订,这种预订方式简洁,方便,错误率也比较低,但是由此引发的一些不良现象也比较多,主要是订餐后出现饭店并没有将信息记录在案,这样的订
5、餐就没有了意义,另外这种订餐方式只是进行电话的预约,很可能会出现订餐但是不履行订单也不进行订餐取消的现象,订餐人员对订购的餐桌信息不了解会进行相关信息的询问,这样就在一定程度上造成了时间的浪费,饭店人员会在同一天反复重复相同的信息,造成了人力资源的浪费。这样开发出图文并茂,信息能够及时更新和查看的在线网上订餐系统就成为了解决上述问题的主要途径。研究并开发这样的一款网上订餐系统就具有了重要的意义。2 系统分析2.1 系统功能需求分析网络订餐系统无论是在应用的深度还是广度都是一个逐步发展的过程。在开发一个局部系统时要充分考虑到局部系统和整个目标系统之间的相容性和完整性,以利于今后整个系统的建立。在
6、具体的设计实现上我们围绕着两个方面的需求展开,即用户和管理员。该系统在功能上应达到如下需求:a) 从用户的角度。从用户的角度通过注册后可以浏览页面进行订餐,把自己喜欢的餐品添加到购物车中,并生成订单。同时可以通过页面进行餐品的查询,使用户更加方便的查询到自己需要的餐品。b) 从管理员的角度。从管理员的角度可以通过登入管理员的页面进行对用户的管理,添加和删除用户,并对用户的订单进行管理和餐品进行管理。2.2 可行性分析可行性研究阶段的主要任务是在系统初步调查的基础上,对新系统是否能够实现和值得实现等问题做出判断,避免在花费了大量的人力和物力之后才发现系统不能实现或新系统投入使用后没有任何实际意义
7、而引起的浪费,对新系统可行性的分析,要求用最小的代价在尽量短的时间内确定系统是否可行。2.2.1 技术可行性JSP 可以创建和运用动态、交互的 WEB 服务器应用程序。同时, JSP 具有向跨平台跨服务器的优点。SQL Server 2000 是一个杰出的数据库平台,具有功能强大,安全可靠等特点,可用于大型联机事务处理、数据仓库及电子商务等。所以利用 JSP 和SQL 数据库开发设计网络订餐系统是可行的。2.2.2 操作可行性现在是信息社会,绝大多数的人都已经接触互联网,而且很多人有在网上购物的经验。网络订餐系统无疑也是电子商务购物网站的一类,所以对于稍有点网络经验的人来说可以很轻松的应用本系
8、统实现在网上订餐。而对于系统的管理员也就是餐厅的老板也不需要了解过多电脑技术就可以应用本系统。他们只需要登录到后台后,在简单易懂的操作菜单中进行选择,就可以方便的查看订单、管理餐品等操作。还有就是系统是基于 B/S(Browser/Server)结构开发的,即浏览器和服务器结构。它是随着 Internet 技术的兴起,对 C/S 结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过 WWW 浏览器来实现的,所以订餐用户无需安装多余的客户端软件,所有的客户端只是浏览器,根本不需要做任何维护。大大的减少了维护工作量。在服务器方便只要安排配置好之后在适时做些维护,这也降低了开发成本。2.2
9、.3 经济可行性由于本订餐系统操作简单方便,不需要投入额外的设备和人员的培训费用。系统的运行环境的软硬件要求都都不是很高,只要一台能连接互联网的计算机就可以运行操作,再加上一个域名就可以给广大需要订餐的顾客服务了。所以在经济方面是可以执行的。3 总体设计总体设计阶段的基本目的是用比较抽象概括的方式确定系统如何完成预定的任务,也就是说,应该确定系统的物理配置方案,并且进而确定组成系统的每个程序的结构。因此,总体设计阶段主要由两个阶段组成。首先进行系统设计,然后进行软件结构设计,确定软件由哪些模块组成以及这些模块之间的动态调用关系。3.1 结构设计系统采用 JSP 设计,通过交互的 WEB 应用技
10、术的学习,提高对 B/S 系统的应用能力。在设计上将本系统的功能模块化,便于开发。这不仅使系统的结构清晰、层次明了,还提高了代码的重用率,减轻了开发者的负担。在设计上采用 3 层体系结构,将表现层、控制层和数据库操作分开,客户端通过统一的接口向控制层发送请求,控制层再从数据库操作中获得相关的数据,通过视图显示出来。这在一定程度上增加了数据库的安全性、系统的可移植性。根据以上设计思想系统总体结构如图 3.1 所示:SQL Server服务器数据库驱动(JDBC)ServletJavaBean客户端http 请求与响应视图控制器图 3.1 系统结构设计3.2 系统层次及模块划分根据需求分析阶段对在
11、线考试系统的功能分析,系统功能层次图如图 3.2 所示:本系统具有五大功能模块,分别为用户注册及登录模块,餐品查询模块,购物车模块,留言簿和系统管理员管理模块。用户注册登录模块分为三个子模块,分别为:用户注册子模块,用户登录子模块,用户查看修改注册信息模块。功能模块如图 3.3 所示:在线订餐用户(前台)注 册 登 陆菜 品 查 询用 户 订 餐 留 言 簿用 户 管 理订 单 管 理菜 品 管 理系 统 管 理管理(后台)图 3.2 系统功能图餐品查询模块可以根据各个子模块实现:根据菜系查询、根据价格查询、根据类型查询、用户自行输入菜名查询等。功能模块如图 3.4 所示:购物车模块可以分为添
12、加餐品子模块,删除餐品子模块,生成订单子模块,查看订单明细模块。功能模块如图 3.5 所示:图 3.3 用户注册及登录模块用户注册及登录用户修改信息用户登录用户注册餐品查询根据类型查询根据价格查询根据菜系查询其他词查询图 3.4 餐品查询功能模块购物车生成餐品订单删除餐品添加餐品查看订单明细系统管理员管理模块可以分为用户管理子模块,订单管理子模块,餐品管理模块,系统管理模块。3.3 数据库设计数据库是一个管理系统中的重点,大多数商业应用程序的核心都是数据库。数据库设计的好坏将直接影响到系统的效率以及系统实现的效果。一个好的数据库的结构设计会减少数据库的存储量,可以提高数据库的存储效率等。SQL
13、 Server 2000 是一个分布式的关系型数据库管理系统,具有客户/ 服务器体系结构。Microsoft SQL Server 2000 是一个应用广泛的数据库管理系统,具有许多显著特点,例如,用户喜欢的易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性能价格比等。SQL Server 2000 系统中,数据库的管理采取了先进的动态管理机制,数据库的大小可以随着数据量的变化而缩小或者扩大。另外,用户数据都是非常重要的和保密的,这些数据存储在 Microsoft SQL Server 2000 系统中有绝对的安全性保障,有完善的用户帐
14、户策略和许可机制,只有经过授权的用户才能访问系统,并且执行相应的操作和访问允许访问的数据。未经授权的用户既不能执行相应的操作,也不能访问数据库中的相应数据。SQL Server 2000 系统具有强大的网上功能,可以在 Internet 上发布数据库中的数据。在 Microsoft SQL Server 2000 系统中,允许用户简单的使用一些向导和工具把数据库的数据发布到网络上,并且可以根据需要来调度修改已经发布的数据。对于数据库的需求主要体现在对数据库的提交信息、更新信息、删除信息、保存信息等。这些信息的存在都取决于各个功能模块的对信息的需求。通过对功能模块的具体操作,实现对数据库中信息的
15、输入和输出。所以,针对各个功能模块的需求,设计如下的数据表和数据结构:图 3.5 购物车功能模块用户表(users) ,用于存放注册用户的基本信息。该表记录着注册用户的详细资料,包括姓名、地址、联系电话,管理员通过查看用户的信息可以准确的将餐饮送到订餐用户的手中。该表共设 9 列,分别用户存储注册用户 ID、登录帐号、登陆密码、密码保护的问题和答案,以及注册用的联系方式、地址等信息,表的具体逻辑结构如表 3.1所示:表 3.1 用户表(users)列名 数据类型 长度 约束条件 描述usersIdusersNameusersPassusersPassQuestionusersPassReply
16、usersTrueNameusersAddressusersPhoneusersE_mailintvarcharvarcharvarcharvarcharvarcharvarcharvarcharvarchar44040404040100100100Primary KeyNOT NULLNOT NULL-NOT NULLNOT NULLNOT NULLNOT NULL注册用户 ID用户登录帐号用户登录密码密码保护的问题密码保护的答案用户的真实姓名用户的联系地址用户的联系电话用户的电子邮箱管理员表(admin) ,存放管理员的基本信息。其中 adminId 列用于存放该管理员的用户 ID,由系统
17、标识自动增加;adminName 列用于存放管理员的登录用户名;adminPass 列用于存放管理员的登录密码。admin 表的数据的具体逻辑结构如表 3.2 所示:表 3.3.2 管理员表(admin)列名 数据类型 长度 约束条件 描述adminIdadminNameadminPassintvarcharvarchar44040Primary KeyNOT NULLNOT NULL管理员 ID管理员登录帐号管理员登录密码餐品表(goods) ,存放餐厅所以的餐品的信息,记载着某个餐品菜名、配料、口味、价格等,前台通过对该表的查询引用,能显示出改餐品的详细信息给用户,方便其订购使用。其中 g
18、oodsId 列、goodsName 列、goodsmaterial 列、goodsPackage 列、goodsLanguage 列、goodsPrice 列、goodsHabitus 列、sortName 列分别用来存放餐品的ID,菜名、所属菜系、口味、做菜时的配料、订购价格、状态及餐品的类型。餐品表数据的具体逻辑结构如表 3.3 所示:表 3.3 餐品表(goods)列名 数据类型 长度 约束条件 描述goodsIdgoodsNamegoodsmaterialgoodsPackaggoodsLanguagegoodsPricegoodsHabitussortNameintvarcharv
19、archarvarcharvarcharfloatvarcharvarchar440200200200810040Primary KeyNOT NULLNOT NULLNOT NULLNOT NULLNOT NULLNOT NULLNOT NULL餐品 ID菜的名称该餐品所属菜系该餐品的口味餐品的主辅配料销售价格是否上架所属类型餐品类别表(sort) ,主要是用来存放餐品的类型的,以方便在添加新的餐品时好调用。该表非常简洁只有一个 sortId 列和一个 sortName 列,分别存放餐品的类别 ID 和所属类型。具体的数据的逻辑结构如表 3.4 所示:表 3.4 餐品类别表(sort)列名
20、数据类型 长度 约束条件 描述sortId sortName intvarchar440Primary KeyNOT NULL餐品类别 ID餐品类型订单表(orders) ,该表主要是用来存放用户所生成的订,记录订单的 ID,生成该订单的用户名以便明确是那个用户的订单,还有就是订单的总值和订单的生成日期,它们分别对应的列表名为 ordersId,usersName ,ordersPrice,ordersDatetime。该表主要是方便管理员查看订单的大概情况。具体的数据的逻辑结构如表 3.5 所示:表 3.5 订单表(orders)列名 数据类型 长度 约束条件 描述ordersIdusers
21、NameordersPriceordersDatetimeintvarcharvarcharvarchar4404040Primary KeyNOT NULLNOT NULLNOT NULL订单 ID订单中的用户名该订单的总价钱订单的生成时间日期订单明细表(ordersDetails) ,这个表是订单表(orders)的一个补充,订单表(orders )只是简单的记录存放了订单中的用户名、总价钱和生成日期,而订单明细表(ordersDetails )则详细的记录了订单中的餐品名称、单价及数量,这是一个订单中重要的一部分。该表设四个列:ordersId 、goodsName、goodsPrice
22、、goodsCount ,分别存放订单的 ID、订单中的餐品名称、餐品的单价、该餐品的订购数量。具体的数据的逻辑结构如表 3.6 所示:表 3.3.6 订单明细表(ordersDetails)列名 数据类型 长度 约束条件 描述ordersIdgoodsNamegoodsPricegoodsCountintvarcharvarcharint440404Primary KeyNOT NULLNOT NULLNOT NULL订单 ID订单中的餐品名称餐品的单价数量3.3 相关技术3.3.1 JSP 技术JSP(Java Server Pages) 技术是一个纯 Java 平台的技术,它主要用来产生
23、动态网页内容。在传统的网页 HTML 文件中加入 Java 程序片段和 JSP 标记,就构成了 JSP 网页。Web 服务器接收到访问 JSP 网页的请求时,首先执行其中的程序片段,然后将执行结果以 HTML 格式返回给客户。JSP 是基于 Java Servlet 以及整个 Java 体系的 Web 开发技术,利用这一技术可以建立先进、安全、快速和跨平台的动态网页。a) 将内容的生成和显示进行分离。使用 JSP 技术,Web 页面开发人员可以使用HTML 或者 XML 标识来设计和格式化最终页面。使用 JSP 标识或者小脚本来生成页面上的动态内容,这些内容是根据请求来变化的,例如请求帐户信息
24、或者特定的一道菜的价格。生成内容的逻辑部分被封装在 JavaBeans 组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在 Beans 中,那么其他人,如 Web 管理人员和页面设计者,在编辑和使用 JSP 页面的时候,将不会影响到内容的生成。在服务器端,JSP 引擎解释 JSP 标识和小脚本,生成客户端请求的内容,例如,通过访问JavaBeans 组件,使用 JDBC 技术访问数据库或者其他文件,并且将结果以 HTML(或者 XML)页面的形式发送回浏览器。这将有助于作者保护自己的代码,并且又保证任何基于 HTML 的 Web 浏览器的完全可用性。b) 强调可重用的组
25、件。绝大多数 JSP 页面依赖于可重用的,跨平台的组件(JavaBeans 或者 Enterprise JavaBeans TM 组件)来执行应用程序所要求的更为复杂的处理问题。开发人员能够共享和交换执行普通操作的组件,或者发布这些组件使更多的使用者或者客户团体能够使用。c) 采用标识简化页面开发。Web 页面开发人员不会都是熟悉脚本语言的编程人员。Java Server Page 技术封装了许多功能,这些功能是容易使用的、同时与 JSP 相关的XML 标识中进行动态内容的生成时需要的。通过开发定制化标识库, JSP 技术是可扩展的。今后,第三方开发人员和其他人员可以将常用的功能创建到自己的标
26、识库。这使得 Web 页面开发人员能够象使用熟悉的工具一样来使用标识来执行特定功能的构件来工作。JSP 技术很容易整合到多种应用体系结构中,以便使用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用中。作为采用 Java 技术家族的一部分,以及Java 2(企业版体系结构)的一个组成部分,JSP 技术能够支持高度复杂的基于 Web 的应用开发。由于 JSP 页面的内置脚本语言是基于 Java 编程语言的,并且所有的 JSP 页面都能被编译成为 Java Servlet,JSP 页面就具有 Java 技术的所有好处,包括健壮的存储管理和安全性。作为 Java 平台的一部分,JSP 拥有 Ja
27、va 编程语言“一次编写,各处运行”的特点。随着越来越多的厂家将对 JSP 的支持添加到他们的产品中,我们可以选择不同的服务器和工具,因为更改工具或服务器并不影响当前的应用。当与 Java 2平台,企业版和 Enterprise JavaBean 技术整合时, JSP 页面提了供企业级的扩展性能,这对于在虚拟企业中部署基于 Web 的应用是必需的。3.3.2 javaBean 组件技术JavaBean 是描述 Java 的软件组件模型,JavaBean 就是一个 Java 类,是一种 Java语言写成的可重用软件组件,它在内部有接口或有与其相关的属性,以便不同人在不同时间开发的 bean 可以
28、询问和集成。非可视化的 JavaBean 与 JSP 结合起来使用,在JSP 程序中常用 JavaBean 来封装事务逻辑(功能实现部分)如数据运算、数据处理、数据库操作等,然后在 JSP网页中调用,而 JSP 文本着重的是网页界面设计,实现了业务逻辑和前台显示部分的分离,这样不仅使 JSP网页变得清晰,而且可以节省软件开发时间和降低以后维护的难度,使系统变得健壮和灵活。JSP 有两中开发模式 JSP+JavaBeans 和 JSP+Servlet+JavaBeans。两种模型的整体结构都比较清晰,易于实现。它们的基本思想都是实现表示层、事务逻辑层和数据层的分离。这样的分层设计便于系统的维护和
29、修改。两种模型的主要区别表现在:a) 处理流程的主控部分不同。JSP 和 JavaBean 模型利用 JSP 作为主控部分,将用户的请求、JavaBean 和响应有效的链接起来。JSP 和模型利用 Servlet 作为主控部分,将用户的请求、JavaBean 和响应有效的链接起来。b) 实现表示层、事务逻辑层和数据层的分离程度不同。JSP 和 JavaBean+Servlet模型比 JSP 和 JavaBean 模型有更好的分离效果。当事务逻辑比较复杂、分支较多或需要涉及多个 JavaBean 组件时,JSP 和 JavaBean 模型常常会导致 JSP 文件中嵌入大量的脚本或 Java 代码
30、。特别是大型项目开发中,由于页面设计和逻辑处理分别由不同的专业人员承担,如果 JSP 有相当一部分处理逻辑和页面描述混在一起,这就有可能引起分工不明确,不利于两个部分的独立开发和维护,影响项目的施工和管理。在 JSP 和JavaBean+Servlet 模型中,由 Servlet 处理 HTTP 请求,JavaBean 承担事务逻辑处理,JSP 仅负责生成网页的工作,所以表现层的混合问题比较轻,适合于不同专业的专业人员独立开发 Web 项目中的各层功能。c) 适应于动态交互处理的需求不同。当事务逻辑比较负责、分支较多或需要涉及很多 JavaBean 组件时,由于 JSP 和 JavaBean+
31、Servlet 模型比 JSP 和 JavaBean 模型有更清晰的页面表现、更明确的开发模块的划分,所以使用 JSP 和 JavaBean+Servlet 模型比较适合。然而,JSP 和 JavaBean+Servlet 模型需要编写 Servlet 程序,Servlet 程序需要的工具是 Java 集成开发环境,编程工作量比较大。对于简单的交互处理,利用 JSP 和JavaBean 模型, JSP 主要是使用 HTML 工具开发,然后再插入少量的 Java 代码就可以实现动态交互。在这种情况下,使用 JSP 和 JavaBean 模型更加方便快捷。对于本订餐系统属于是小型的应用,只需要 J
32、SP+JavaBean 模型就可以实现而不需要应用复杂的 JSP+JavaBean+Servlet 模型。3.4 系统开发模式首先是 B/S 模式简介本系统采用 B/S 模式。B/S(Browser/Server )结构即浏览器和服务器结构。它是随着 Internet 技术的兴起,对 C/S 结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过 WWW 浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主的地点,以不同的接入方式(比如LAN, WAN,Internet/Intranet 等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安
33、全。特别是在 JAVA 这样的跨平台语言出现之后,B/S 架构管理软要事务逻辑在服务器端(Server)实现,形成所谓三层 3-tier 结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO) 。以目前的技术看,局域网建立 B/S 结构的网络应用,并通过 Internet/Intranet 模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同件更是方便、快捷、高效。B/S 模式的优势是维护和升级方式简单。目前,软件系统的改进和升级越来越频繁,B/S 架构的产品明显体现着更为方奔跑,效率和工作量是可想而知
34、的,但 B/S 架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行;如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客户机越来越“瘦” ,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的,惊人的。因此,维护和升级革命的方式是“瘦”客户机, “胖”服务器。再有是成本降低,选择更多。大家都知道 windows 在桌面电脑上几乎一统天下,浏览器成
35、为了标准配置,但在用管理软件,只需安装在 Linux 服务器上即可,而且安全性高。所以服务器操作系统的选择是很多的,不管选用那种操作系统都可以让大部分人使用 windows 作为桌面操作系统电脑不受影响,这就使的最流行免费的 Linux 操作系统快速发展起来,Linux 除了操作系统是免费的以外,连数据库也是免费的,这种选择非常盛行。4 详细设计在前面的总体设计中,已将系统划分为多个模块,现在需要的是确定每个功能模块的具体实现。在本章内,将详细说明系统功能模块的具体实现。系统主要使用了JSP、JavaScript、Java、HTML 语言等综合处理页面信息的显示和各个功能模块功能的设计,以及通
36、过对数据库的操作完成整个系统的设计。4.1 用户模块用户模块既是前台模块,主要是面向顾客设计使用的,也可以称为顾客模块。顾客模块的只要功能是浏览、搜索查询、订餐,而用户需要订餐的话必须要进行注册登录。最终实现顾客订餐的目的。订餐的流程如图 4.1 所示:YesYesNO结束用户登录选择餐品通过验证加入购物车继续订餐查看购物车删除餐品生成订单NOYesYesNO开始结束用户登录选择餐品通过验证加入购物车继续订餐查看购物车删除餐品生成订单如 4.1 用户订餐流程图4.1.1 首页设计首页是当顾客访问时展现给顾客的第一页面,一个好的首页能给顾客带来好的体验。首页的设计应该给顾客展示更多的信息和快捷方
37、便的操作。本订餐系统的基本框架如图 4.2 所示:首页的左上角是 LOGO 图,商家可以挂上自己的商标;LOGO 的右侧是促销活动的相关 banner 链接;这可以方便顾客第一眼发现了解促销活动的信息,在导航栏顾客可以快速的留言,查看个人注册信息;左侧栏的设计可以帮助顾客快速进行登录以及通过分类菜单查询链接快速的找到符合顾客要求的餐品的归类;而中间的大区块则向顾客展示最新上架的餐品。在餐品展示区块通过 GoodsBean 类中的 getAllGoods()方法获取所有餐品 ID,然后通过 Details.jsp 返回餐品的菜名、图片、价格等信息,相关代码如下所示: target =_selfs
38、rc = width=100 border=1 target=_self target =_self促销活动 banner导航栏登录快速查询链接餐品展示商家 LOGO图 4.2 首页基本框架价格:元 target = _self4.1.2 用户注册功能通过页面 register.jsp 来实现用户注册的界面,用户填写表单提交后通过内置的JavaScript 代码进行前台验证,判断用户输入的注册信息是否正确,如两次的密码是否相同,电话号码格式是否对,如果输入错误将返回相应的错误信息。通过 JavaScript 的验证可以减少不必要的网络信息传递,减轻服务器负担,提高效率。验证通过后将用户提交的注
39、册信息提交到 addUserInfo.jsp 页面。在 addUserInfo.jsp 页面中引用UserBean 这个 JavaBean 类,并调用 addUserInfo()方法将用户的注册信息存储到数据库中。关键代码如下:PreparedStatement stm=con.prepareStatement(“insert into users values(?,?,?,?,?,?,?,?,?)“);stm.setString(1,user.getUsersName();stm.setString(2,user.getUsersPass();stm.setString(3,user.get
40、UsersRepass();stm.setString(4,user.getUsersPassQuestion();stm.setString(5,user.getUsersPassReply();stm.setString(6,user.getUsersTrueName();stm.setString(7,user.getUsersAddress();stm.setString(8,user.getUsersPhone();stm.setString(9,user.getUsersE_mail();4.1.3 用户登录功能顾客订餐需要登录系统,所以在首页中集成了用户登录模块,方便登录。当用户
41、填用户名和密码提交登录时,把表单内容提交到 checklogin.jsp 页面验证用户的登录信息。在 checklogin.jsp 引入表示用户的实体 JavaBean 类 UserClass 和封装了验证用户登录方法的逻辑 JavaBean 类 Userbean,然后调用验证用户身份的 checkUserInfo()方法,根据用户的信息在主页中显示其登录成功的信息。如果登录不成功则返回密码错误的消息。关键代码如下:PreparedStatement stat=con.prepareStatement(“select * from users where usersName=? and use
42、rsPass=?“);stat.setString(1,user.getUsersName();stat.setString(2,user.getUsersPass();ResultSet result=stat.executeQuery();if(result.next()flag=true;result.close();stat.close();用户成功登录后可以在用户中心查看自己的注册信息,该功能通过checkMyInfo.jsp 页面来显示。4.1.4 餐品查询功能搜索功能可以说是一个网站必须功能,这可以为顾客提供更为方便快捷的服务,顾客可以快速的找到自己想要下订的餐品。顾客可以按餐品
43、的类型、价格、菜系或者其他的关键词查询想需要的餐品饮料,然后分别提交到goodsType.jsp、goodsPrices.jsp、goodsSeries.jsp 页面进行处理查询,要是想通过通过其他的关键词查询可以通过 lowerSelect.jsp 快速查询,或者通过 heightSelect.jsp 高级查询。在这些查询的页面中首先接收超级链接中参数,也就是用户要查询的关键词,并利用.getBytes(“ISO-8859-1“) 方法将其转换成中文字符,然后引入表示餐品的实体Javabean 类 GoodsClass 和封装了对餐品信息进行操作的逻辑 JavaBean 类 GoodsBea
44、n,在页面中调用 getAllPageBySort()方法根据用户提交的类型进行查询。关键代码实现如下:GoodsBean 是用来封装对餐品进行各种逻辑操作的 JavaBean 类,通过 GoodsBean接收参数用 SQL 查询语句 select 查询匹配的结果,然后返回都相应的页面中去,显示给查询的顾客。4.1.5 购物车功能购物车的主要功能是把顾客暂时想要订购的餐品存放起来,最后确定生成订单。当然,顾客要想使用购物车就要先登录会员,如果没有登录的话则跳到错误页面。顾客在网站中看到喜爱的餐品时,通过点击相应的链接,然后通过 Details.jsp 接收餐品的 ID,然后 getGoodsI
45、nfo()方法根据餐品的 ID 查询餐品的详细信息,并返回到页面上。显示餐品详细信息的核心代码如下:顾客在找到中意的餐品可以点餐品详细信息页面的“订购”按钮,将其添加到购物车中去。点击“订购”按钮后向 cart.jsp 传递添加信息。该页面通过引入表示购物车的实体 JavaBean 类 Cart 和封装了对商品信息进行操作的逻辑 JavaBean 类GoodsBean,然后通过 JavaBean 中定义的逻辑方法对购物车中的商品进行添加删除操作。Cart 是用来封装对购物车中的餐品进行添加、删除、更新和生成订单等操作的JavaBean 类。当用户订餐过程结束后,可以调用其中的 calPrice
46、()方法计算本次购买的商品的总价格,并在 OrderInfo.jsp 页面中调用 genOrder()方法生成订单。生成订单的主要核心代码如下:4.1.6 用户留言功能在用户留言模块任何用户都可以在这里给管理员留言。该功能通过 language.jsp 页面实现。在 language.jsp 页面引入表示留言的实体的 JavaBean 类 LeaveLanguageClass和封装了对留言进行操作的逻辑 JavaBean 类 LeaveLanguageBean,然后调用其中的addLanguage()方法将用户的留言信息存储到数据库中。LeaveLanguageBean 是用来封装对用户留言进
47、行添加、删除和更新操作的 JavaBean 类,是用户留言模块的核心逻辑类。4.2 管理员模块管理员模块也就是系统的后台,主要面向管理员设计。系统管理员登录后台之后,可以进行餐品管理、订单管理、用户管理、网站系统管理员管理,从而维护系统的核心数据信息。4.2.1 管理员登录模块管理员登录页面是 Login.jsp,用户登录后方可进行一系列的管理操作。管理员填好登录帐号密码点击“登录”后,将表单提交到 Login1.jsp 验证密码的正确。Login1.jsp 页面引入表示管理员的实体 JavaBean 类 AdminClass 和封装了管理员业务操作的逻辑 JavaBean 类 AdminBe
48、an,然后调用其中的 checkAdminInfo()方法对用户输入的管理员登录信息进行验证。验证管理员登录信息的核心代码如下:在页面中用 session.setMaxInactiveInterval(30*60)将管理员登录后的 cookies 保存 30 分钟。4.2.2 用户管理功能在管理员登录系统后台就可以对用户管理了。在用户管理功能菜单中可以查找查看用户的信息,也可以直接添加用户。在后台直接添加用户通过 addUserInfo.jsp 页面,这个功能和在前台顾客自己注册是一样的。同样在页面中引用 UserBean 这个 JavaBean 类,并调用 addUserInfo()方法将用
49、户的注册信息存储到数据库中。查看查找已注册用户的信息。直接点击查看所有注册用户,通过 viewAllusers.jsp页面显示所有注册用户的信息。在 viewAllusers.jsp 引入表示用户的实体 JavaBean 类UserClass 和逻辑 JavaBean 类 Userbean,然后调用 getAllUserInfo()执行 SQL 语句对数据库查询,获取所以注册用户的信息并返回。查看所有注册用户端 JSP 核心代码如下:Collection users=userBean.getAllUserInfo();Iterator it=users.iterator();while(it.hasNext()UserClass user=(UserClass)it.next();out.println(user.getUsersId();out.println(user.getUsersName();out.println(“user.getUsersTrueName()“);out.println(user.getUsersAddress()“);out.println(user.getUsersPhone();out.println(user.getUsersE_mail();通过输入用户的 ID 或者用户名,分别