基于JSP的网上订餐管理系统的设计与实现

目  录

摘要 I
Abstract II
绪 论 1
1 系统概述与技术介绍 2
1.1 课题背景 2
1.2 B/S结构介绍 3
1.3 JSP技术介绍 4
1.4 JavaScrip语言介绍 4
1.5 MySQL数据库介绍 5
1.6 MyEclipse介绍 5
1.7 MVC模式介绍 6
2 系统需求分析 7
2.1 开发环境 7
2.2 需求分析 7
2.3 可行性分析 8
3 系统概要设计 9
3.1 系统设计概述 9
3.2 系统功能分析 10
3.3 系统用例图 12
3.4 系统功流程图 14
4 数据库设计与实现 15
4.1 数据库结构设计 15
4.1.1 概念结构设计 15
4.1.1 表概要说明 16
4.1.2 数据表的结构 16
5 系统的实现 20
5.1 前台模块首页 20
5.2 用户注册登录管理 22
5.3 用户订餐管理功能 23
5.4 用户其他功能操作页面 27
5.5 后台管理员登录,注册功能 27
5.6 后台管理员菜品管理 28
5.7 后台员工及会员管理 29
5.8 后台材料采购管理 29
5.9销售订餐及统计管理 30
6 系统测试 32
6.1 测试方法 32
6.2 系统流程 32
6.2.1 前台首页测试 32
6.2.2购物车模块测试 32
6.2.3 菜品管理模块测试 33
6.2.4 会员注册模块测试 33
6.2 系统测试结果 33
总 结 35
参考文献 36
致谢 37
3 系统概要设计

3.1 系统设计概述

系统的设计阶段作为在项目开的发整个过程中,最为复杂的一环,其实也是在项目开发的整个过程中极为重要的的一环,必须经过,必不可缺少。在进行系统项目的设计之前,说明系统项目已经完成了对其自身的分析与设计阶段,这是一个具有发展性的过程,将从分析阶段得出的有些抽象的用户需求进行具体的实现,编码。在对系统项目的设计过程中需要考虑众多因素,例如在系统实现过程中所面对的内在环境和外在因素,对项目进行良好的业务和功能完善以及应该具有的敬业态度。
作为主要的任务和目标,在系统设计阶段就是为了满足在系统分析阶段提出的用户要求.因此,要从用户的要求出发在不仅可以满足系统分析阶段得出的对系统项目逻辑功能的同时,还要充分考虑到多方因素,包括技术,成本以及时间环境等相关方面。对于不论是在正在进行中的整体的设计结构还是局部的每一个部分,都有相关的技术和针对性的应对方案。在合理的要求和基础上,对项目系统所必要的需求进行满足,并且提出该系统具体到实处的实行方案,使其可以得到完整的实现,完成最初的目标以及要求。
系统设计的主要方向以及相关要点:
(1)在系统设计的阶段,主要工作涉及到了绝大多数都是技术以及专业知识。
(2)为了满足用户的需求,在系统项目的设计过程中,可以对之前已经得出的系统项目分析结论作出一些修改,当然,这是基于非原则性上的。
(3)使整个项目系统最终可以获得成功,不仅仅需要完善的分析,严谨的设计,更需要系统项目的设计环境。这个环境不仅仅是技术环境与管理环境,更是两者的有效结合。因此,这是急不可缺的重要一点。
有上述可知系统设计的要点,那么为了更好地设计系统项目就需要了解系统设计的原则:
(1)易用性原则。对项目做系统设计是为了,开发出的系统项目,可以满足用户提出的需求,达到用户的满意。这种满足需求表现在各个方面,例如:用户的业务需求,用户的逻辑需求,以及使用户处理部分业务时候更加简便,提高用户的用户体验。
(2)开发阶段原则。开发项目系统软件,在系统技术选择阶段主要是站在系统的数据结构的角度进行设计与开发,而实现功能阶段则有不同,这是需要站到用户需求以及开发人员实现的角度考虑的。
(3)业务完整原则。设计实现的项目系统软件,要保证在完成业务的同时保证数据的完整性,减少数据的无处,例如数据库中常常出现的脏读,误读等数据误差。
(4)规范化的业务原则。在最初的设计阶段中,系统主要是完成用户需求要求的业务,但是在实际的操作总。对于系统项目的要求是更高的,它不仅要正确的完成用户的业务要求,也要面对完善的业务流程,以及系统安全性。

3.2 系统功能分析

作为网上订餐管理系统主要是为顾客提供便捷,全面的订餐服务,重点要放在面对顾客的页面功能上,其次是管理员对餐品以及餐厅的管理,系统主要模块的设计:
1.前台模块:
(1)食品展示模块
(2)食品查询模块
(3)购物车模块
(4)收银台模块
(5)用户维护模块
(6)订单查询模块
(7)公告模块
2.后台模块:
(1)食品管理模块
(2)用户管理模块
(3)管理员维护模块
(4)订单管理模块
(5)公告管理模块
(6)留言管理模块
如图3-1系统功能层次图所示。
主要包括这几个方面,其中顾客订餐功能模块是主要重点模块,其次是管理员管理功能模块。当订餐系统管理员使用拥有管理权限的管理员用登录管理员页面的时候。可以看到目前订餐系统中保存的用户信息数据,菜品的数据,员工的数据以及状态,订餐的具体信息,采购原材料的具体情况,以及对顾客页面的管理,例如:留言板,以及营养小贴士等等。通过管理员对餐厅的管理,给予顾客最好的网上订餐服务。
顾客订餐功能的相对应的模块:主要是顾客进入订餐系统网站之后,可以看到整体的订餐系统网站结构,进行系统的客户端登录,注册,以及对现登陆用户的信息修改,搜索菜品,点餐,订餐,支付,留言的相关功能,通过众多的订餐系统功能。
管理员系统管理功能相关模块:主要是餐厅管理员从后台管理页面登录管理系统之后,对订餐系统的一些具体业务的调整,可以注册新管理员,以及对现有登录管理员信息的修改,查看分析管理目前注册的顾客的信息,查看修改调整现有菜品的具体情况,新增,删除,完善菜品;对目前餐厅原材料的采购和统计;以及对餐厅员工的管理,新增删除和调整状态;更重要的是可以对目前已知订餐的及时管理,还有就是对顾客订餐页面的一些人性化管理,查看顾客留言,修改给顾客查看的营养小贴士。
通过这个两个主要的模块,可以完成订餐系统的综合管理,包括了顾客的主要功能,注册,登录,点餐等;本文转载自http://www.biyezuopin.vip/onews.asp?id=11377以及管理员对餐厅多方面的管理,完成管理员对顾客的服务交互。
在这里插入图片描述
图 3-1系统功能层次图
3.3 系统用例图
通过管理员用例图,可以清晰的,直观的看到管理员在网上订餐管理系统中对用户订餐以及用户本身的一些主要的操作:
1、管理员可以管理餐品信息。
(1.)管理员可以添加菜品信息。
(2.)管理员可以删除菜品信息。
2、管理员可以管理订单信息。
3、管理员可以管理订餐系统中注册的用户信息。
(1.)管理员可以删除用户注册信息
(2.)管理员可以修改用户信息
4.管理员可以对留言进行管理。
5.管理员可以对用户进行管理。
管理员用例图图,如图3-2所示。
在这里插入图片描述
图 3-2 管理员用例图

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>我的订餐车</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<link href="img/css.css" type="text/css" rel="stylesheet"/>
	
  </head>
    	<style>
<!--
.input1 {
	BORDER-BOTTOM-WIDTH: 0px; WIDTH: 60px; COLOR: #000000; HEIGHT: 20px; BORDER-RIGHT-WIDTH: 0px
}
-->
</style> 
  <script language="JavaScript">
		function abc222(id,i)
			{
				form1.action="servlet/ShoppingServlet?i="+i+"&bookId="+id;
  				form1.submit();
			}
</script>
  <%
String nulls = (String)request.getAttribute("null");
String ok = (String)request.getAttribute("ok");
if(nulls != null && nulls.equals("1")){
%><script>alert('您的订餐车中没有商品!')</script><%
}
if(ok != null && ok.equals("1")){
%><script>alert('恭喜您,订餐成功!')</script><%
}
 %>
  <body>
  <form name="form1" action="" method="post">
  <table bgcolor="#ffcc00" border="0" cellpadding="1" cellspacing="1" align="center" width="620">
		<tr bgcolor="#ffe2a6">
			<td align="center" valign="middle" colspan="6">
			<font face="华文行楷" size="3">我的订餐车</font></td>
		</tr>
		<tr bgcolor="#ffe2a6">
			<td align="center" valign="middle">菜品名称</td>
			<td align="center" valign="middle">单价</td>
			<td align="center" valign="middle">数量</td>
			<td align="center" valign="middle">总价</td>
			<td align="center" valign="middle">修改数量</td>
			<td align="center" valign="middle">删除</td>
		</tr>
		<%
		ArrayList shopping = (ArrayList)session.getAttribute("shopping");
		int sum = 0;
  		int sumPrices = 0;
		if(shopping == null || shopping.size() == 0){
		%>
		<tr bgcolor="#fff9ec"><td colspan="6" align="center" valign="middle"><font size="1" color="red">订餐车中没有菜品!</font></td></tr>
		<%}else{
		for(int i = 0;i < shopping.size();i++){
		ArrayList alShop = (ArrayList)shopping.get(i);
		sum += Integer.parseInt(alShop.get(3).toString());
		sumPrices += Integer.parseInt(alShop.get(2).toString())*Integer.parseInt(alShop.get(3).toString());
		%>
		<tr bgcolor="#fff9ec">
			<td valign="middle" align="center"><a href="servlet/BookinfServlet?id=<%=alShop.get(0) %>"><%=alShop.get(1)%></a></td>
			<td valign="middle" align="center"><%=alShop.get(2)%></td>
			<td valign="middle" align="center"><input class="input1" type="text" value="<%=alShop.get(3)%>" name="num<%=i %>"/></td>
			<td valign="middle" align="center"><%=Integer.parseInt(alShop.get(2).toString())*Integer.parseInt(alShop.get(3).toString())%></td>
			<td align="center" valign="middle">
			<input type="button" value="修改数量" onclick="abc222(<%=alShop.get(0)%>,<%=i %>)"/></td>
			<td align="center" valign="middle">
			<a href="servlet/ShoppingServlet?del=<%=i%>">
            <img src="img/trash.gif" border="0" height="17" width="15" alt="">
          	</a>
			</td>
		</tr>
		<%}%>
		<tr bgcolor="#fff9ec">
			<td colspan="6" align="center">订餐车里有菜品:<%=shopping.size()%>件 总数:<%=sum%> 共计:<%=sumPrices%>元 </td>
		</tr>
		<%}%>
		<tr bgcolor="#ffffff">
			<td colspan="6" align="center" height="25">
				<a href="qiantai/index.jsp">
		          继续订餐
		        </a>
		        <a href="servlet/ShoppingServlet?remove=1">
		          清空订餐车
		        </a>
		        <a href="servlet/ReckoningServlet">
		          收银台
		        </a>
		     </td>
		</tr>
		<tr><td colspan="6"valign="middle"><font color="red">*</font>如果您刷新了订餐车页面,上次所订菜品数目将会增加1</br><font color="red">*</font>如果您点击了收银台,系统将会保存您的订单,并会清空您的购物车!</td></tr>
	</table>
	</form>
  </body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值