目 录
1 需求分析 1
2 概要设计 1
2.1 外部设计 1
2.1.1 标识符和状态 1
2.1.2 命名约定 1
2.1.3 设计约定 1
2.2 概念结构设计 2
2.2.1 实体和属性的定义 2
2.2.2 订单模块功能设计 4
2.2.3 ER图设计 4
2.2.4 数据库完整性约束 5
2.3 逻辑结构设计 6
2.3.1 模式设计 6
2.3.2 外模式设计 9
2.4 物理结构设计 10
2.4.1 建立索引 10
2.4.2 存储过程 10
2.4.3 触发器 11
2.5 数据库实施设计 11
2.5.1 数据库实现 11
2.5.2 订单表设计 12
2.5.3 管理员信息表设计 13
2.5.4 菜品信息表设计 13
2.5.5 用户信息表设计 14
3 运行环境 16
3.1 软件环境 16
3.2 硬件环境 16
4 开发工具和编程语言 16
4.1开发工具 16
4.1.1 编程开发工具 16
4.1.2 图形设计工具 16
4.2 编程语言 16
5 详细设计 16
5.1 数据库操作设计 16
5.1.1 数据库的连接与关闭 16
5.1.2 订单模块数据库操作 18
5.2 订单模块创建 29
5.3 Servlet事务处理 32
5.3.1 用户Servlet事务处理 32
5.3.2 管理员Servlet事务处理 34
5.4 前台设计 40
5.4.1 管理员订单管理界面设计 40
5.4.2 用户订单界面设计 50
6 调试分析 54
6.1 订单模块测试数据分析 54
6.2 订单模块问题分析与解决 56
7 测试结果 57
7.1 测试数据表 57
7.2 订单模块用户界面测试 57
8 参考文献 63
9 心得体会 64
1 需求分析
在此校园网上订餐系统设计中,要求实现后台和前台两种不同的操作方式,其中前台要求实现新增菜品、菜品价格调整、菜品下架、销量统计(按日、月)、用户订单维护等功能,而在后台管理系统中,应实现菜品列表、用户注册、在线下单等功能。经由与团队开发人员商定,由本人负责订单模块设计与实现,由团队其他两人负责菜品模块以及用户模块的开发,以下仅对订单模块进行需求分析。
在订单模块设计中,需要开发人员完成的功能主要有:
(1)后台管理员需要完成前台用户请求订单的相关处理与维护功能。
(2)后台管理员还需要可以对销售的所有相关订单以及历史订单按照用户ID、菜品名称、销售日期等方式进行查询。
(3)用户在前台也可以查看自己的待提交或者已经提交的订单表,以及历史订单。
(4)用户在前台也可以按照菜品名称和销售日期进行查询自己的订单。
(5)后台管理员可以统计本日的销售额以及订单。
2 概要设计
2.1 外部设计
2.1.1 标识符和状态
数据库软件的名称:MySQL 5.6
数据库的名称:apsfc
本文转载自http://www.biyezuopin.vip/onews.asp?id=15300
2.1.2 命名约定
所有的数据库表单的命名都是以模块的英文词汇组成,这样能够统一数据库表的命名,也能够更好的规范数据库表命名。
2.1.3 设计约定
在本系统中,数据库的设计采用在线绘图工具ProcessOn进行,并且采用面向对象的设计方法,首先进行对象实体的设计,最后将对象持久化到数据库中,所有的表和表之间的关联(ER图)都采用PowerDesigner工具进行,这样能够将整个系统的设计和数据库设计有机的结合起来。

<%@page import="com.apsfc.po.ShoppingCart"%>
<%@page import="com.apsfc.po.Notice"%>
<%@page import="com.apsfc.dao.NoticeDao"%>
<%@page import="java.util.Date"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.apsfc.dao.MenusDao"%>
<%@page import="com.apsfc.po.Menus"%>
<%@page language="java" pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>-校园网上订餐系统</title>
<meta content="" name=keywords />
<meta content="" name=description />
<link href="css/common.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/base.js"></script>
<script type="text/javascript" src="js/common.js"></script>
<script type="text/javascript" src="js/form.js"></script>
<script type="text/javascript" src="js/blockui.js"></script></head><body style='background: transparent'><table width="900" border="0" align="center" cellpadding="0"cellspacing="0"><tr><td align="left" valign="top"><jsp:include flush="fasle"page="top.jsp" /></td></tr><tr><td height="30"></td></tr><tr><td align="left" valign="top"><table width="100%" border="0"cellspacing="0" cellpadding="0"><tr><td width="59%" align="left" valign="top"><div id='pdv_3606'class='pdv_class' title=''style='width: 648px; top: 0px; left: 0px; z-index: 12'><div id='spdv_3606' class='pdv_content'style='overflow: visible; width: 100%;'><div class="pdv_border"style="margin: 0; padding: 0; height: 100%; border: 0px solid; background:;"><!-- <div style="height:25px;margin:1px;display:none;background:;"><div style="float:left;margin-left:12px;line-height:25px;font-weight:bold;color:"></div><div style="float:right;margin-right:10px;display:none"> <a href="-1" style="line-height:25px;color:">更多</a> </div></div>--><div style="padding: 0px"><link href="css/dingcanall.css" rel="stylesheet"type="text/css" /><script src="js/dingcanall.js" type="text/javascript"></script><div id="dingcanall2"><div style="margin-top: 0px; padding: px;"><div id="mm_01" class="dingcanall_connow"><table><%int maxrow = 2;/*每一行显示的个数*/int rowcount = 0;/*总行数*/int currentrowcount = 0;/*当前行的实际个数*/int currentrow = 0;/*当前行*/int currentrs = 0;/*当前记录数*/int rscount = 0;/*实际记录数*/List<Menus> menulist = null;MenusDao md = new MenusDao();menulist = md.select();if (menulist != null) {rscount = menulist.size();if (rscount % maxrow == 0) {rowcount = rscount / maxrow;} else {rowcount = rscount / maxrow + 1;}for (currentrow = 0; currentrow < rowcount; currentrow++) {%><tr><%if ((currentrow + 1) == rowcount && rscount % maxrow != 0) {currentrowcount = rscount % maxrow;} else {currentrowcount = maxrow;}for (currentrs = currentrow * maxrow; currentrs < currentrow* maxrow + currentrowcount; currentrs++) {Menus menus = menulist.get(currentrs);%><td style="margin-top: 10px;"><div><table><tr><td rowspan="5" class="bookPic"><imgsrc="../<%=menus.getImgpath()%>"style="border: 1px solid #300;" /></td><td><span>菜名:</span></td><td><span><strong><%=menus.getName()%></strong></span></td></tr><tr><td><span>市场价格:</span></td><td><span><%=menus.getPrice()%></span></td></tr><tr><td><span>会员价格:</span></td><td><span><strong style="color: red;"><%=menus.getPrice1()%></strong></span></td></tr><tr><td><span>配料:</span></td><td><span><%=menus.getBurden()%></span></td></tr><tr><td><span>菜品类型:</span></td><td><span><%=menus.getTypename()%></span></td></tr><tr><td colspan="2" style="height: 40px;"><a href="../ShoppingServlet?menuId=<%=menus.getId()%>"><imgsrc="data:images/cart.png" border="0" alt="" /></a></td></tr></table></div></td><%}%></tr><%}}%></table></div></div></div></div><div id="dingcanall_bottom_left">&nbsp;</div><div id="dingcanall_bottom_right">&nbsp;</div><input type="hidden" name="picw" id="picw" value="150" /> <inputtype="hidden" name="pich" id="pich" value="140" /> <inputtype="hidden" name="fittype" id="fittype" value="auto" /></div></div></div></div></td><td width="41%" align="right" valign="top"><table width="243"border="0" cellspacing="0" cellpadding="0"><tr><td></td></tr><tr><td valign="top"><div id='pdv_' class='pdv_class'title='网站公告'style='width: 243px; top: 0px; left: 0px; z-index: 3'><div id='spdv_3603' class='pdv_content'style='overflow: hidden; width: 100%; height: 100%'><div class="pdv_border"style="border: 0px; height: 100%; padding: 0; margin: 0; background: url(base/border/640/images/left.jpg) repeat-y"><divstyle="height: 100%; background: url(images/right.jpg) right repeat-y"><divstyle="height: 43px; background: url(images/bg.jpg) 0px 0px no-repeat"><divstyle="float: left; font: bold 16px/43px 'Microsoft YaHei', 'SimSun', Arial, Sans-Serif; text-align: left; padding-left: 50px; color: #feab43;">餐厅公告</div><divstyle="float: right; width: 60px; height: 43px; text-align: right; background: url(images/bg.jpg) -840px 0px no-repeat"><!-- <divstyle="font: 12px/43px simsun; color: #505050; margin-right: 12px; display: inline">&gt;&gt;> --></div></div><!--获取公告信息  --><div style="margin: 0px 3px; padding: 10px;" align="left"><link href="css/newslist_time2.css" rel="stylesheet"type="text/css" /><ul class="newslist_time2"><%NoticeDao nd = new NoticeDao();List<Notice> noticelist = nd.select();if (noticelist != null) {for (int i = 0; i < noticelist.size(); i++) {Notice notice = noticelist.get(i);%><li class="newslist_time2"><div class="time"><%=notice.getTimes().substring(0, 10)%></div><ahref="notice.jsp?id=<%=notice.getId()%>"class="newslist_time2"><%=notice.getName()%></a></li><%}}%></ul></div></div></div><divstyle="margin-top: -10px; height: 10px; line-height: 10px; background: url(images/bg.jpg) 0px -220px no-repeat">&nbsp;</div><divstyle="float: right; margin-top: -10px; width: 10px; height: 10px; line-height: 10px; background: url(images/bg.jpg) -890px -220px no-repeat">&nbsp;</div></div></div></td></tr><tr><td height="10">&nbsp;</td></tr><tr><td valign="top"><div id='pdv_3614' class='pdv_class' title='我的餐车'style='width: 243px; top: 0px; left: 0px; z-index: 2'><div id='spdv_3614' class='pdv_content'style='overflow: visible; width: 100%;'><div class="pdv_border"style="margin: 0; padding: 0; height: 100%; border: 0px solid; background:;"><divstyle="height: 25px; margin: 1px; display: none; background:;"><divstyle="float: left; margin-left: 12px; line-height: 25px; font-weight: bold; color:">我的餐车</div><divstyle="float: right; margin-right: 10px; display: none"><a href="-1" style="line-height: 25px; color:">更多</a></div></div><div style="padding: 0px"><link href="css/dingcanche.css" rel="stylesheet"type="text/css" /><script src="js/dingcanall.js" type="text/javascript"></script><script src="js/dingcansubmit.js" type="text/javascript"></script><div id="dingcanche"><div id="dingcanche2"><div id="dingcanche_top"><div id="dingcanche_top_left">我的餐车</div><div id="dingcanche_top_right">&nbsp;</div></div><div id="dcinfo" style="margin: 0px 3px 1px 3px;"></div><table width="100%" border="0" cellspacing="0"style="background: #fef0d3;"><tr><td align="center">菜单名称</td><td align="center">单价</td><td align="center">数量</td><td align="center"></td></tr><%float sum1 = 0.0f;int sum2 = 0;List<ShoppingCart> shoppingcar = (List<ShoppingCart>) session.getAttribute("shoppingcar");if (shoppingcar!= null) {for (int i = 0; i < shoppingcar.size(); i++) {ShoppingCart sc=shoppingcar.get(i);sum1 = sum1+sc.getPrice();sum2 = sum2 +sc.getSums();%><tr><td align="center"><%=sc.getName()%></td><td align="center"><%=sc.getPrice()%></td><td align="center"><%=sc.getSums()%></td><td align="center"><ahref="../ShoppingServlet?del=<%=i%>">取消</a></td></tr><%}}%></table><div style="height: 24px; margin: 5px 3px 1px 3px;"><divstyle="float: left; line-height: 24px; padding-left: 25px;">小&nbsp;&nbsp;计:</div><divstyle="float: right; line-height: 24px; padding-right: 15px;"><font id="allnums" style="color: #ff0000;"><%=sum2%></font>份</div><divstyle="float: right; line-height: 24px; padding-right: 30px;"><font id="cpprice" style="color: #ff0000;"><%=sum1%></font>元</div></div><div style="height: 30px; margin: 5px 3px 1px 3px;"><table width="100%" border="0" cellspacing="0"><tr><td align="center" width="40%"></td><td align="center" width="40%"><ahref="../UserOrderingServlet"><imgsrc="data:images/canche_submit.gif" border="0" /></a></td><td align="center" width="40%"><ahref="../ShoppingServlet?remove=1"><imgsrc="data:images/quxiao2.gif" border="0" /></a></td></tr></table></div></div></div></div><div id="dingcanche_bottom_left">&nbsp;</div><div id="dingcanche_bottom_right">&nbsp;</div><input type="hidden" name="modnums_b" id="modnums_b"value="" /><script>$("div.cpline_d:even").addClass("cpline_s");</script></div></div></div></div></td></tr><tr><td height="10">&nbsp;</td></tr><tr><td valign="top"><div id='pdv_3613' class='pdv_class'title='本周菜单'style='width: 243px; top: 0px; left: 0px; z-index: 5'><div id='spdv_3613' class='pdv_content'style='overflow: hidden; width: 100%; height: 100%'><div class="pdv_border"style="margin: 0; padding: 0; height: 100%; border: 0px solid; background:;"><divstyle="height: 25px; margin: 1px; display: none; background:;"><divstyle="float: left; margin-left: 12px; line-height: 25px; font-weight: bold; color:">本周菜单</div><divstyle="float: right; margin-right: 10px; display: none"><a href="-1" style="line-height: 25px; color:">更多</a></div></div><div style="padding: 0px"><link href="css/dingcanweekmenu.css" rel="stylesheet"type="text/css" /><div id="dingcanweekmenu"><div id="dingcanweekmenu2"><div id="dingcanweekmenu_top"><div id="dingcanweekmenu_top_left">销售排行榜</div><div id="dingcanweekmenu_top_right">&nbsp;</div></div><div style="padding: px;"><div class="dingcanweekmenuinfo" align="left"><link href="css/newslist_time2.css" rel="stylesheet"type="text/css" /><%for (int i = 0; i < menulist.size(); i++) {Menus menus1 = menulist.get(i);String str = "";str = "已销售" + menus1.getSums1() + "次";%><li class="newslist_time2"><div class="time"><%=str%></div><ahref="show.jsp?id=<%=menus1.getId()%>"class="newslist_time2"><%=menus1.getName()%></a></li><%}%></div></div></div></div><!--<div id="dingcanweekmenu_bottom_left"></div><div id="dingcanweekmenu_bottom_right">&nbsp;</div>--></div></div><!-- </div>--></div></td></tr></table></td></tr></table></td></tr><tr><td height="10">&nbsp;</td></tr><tr><td height="50" align="center" valign="middle"><jsp:includeflush="fasle" page="copyright.jsp" /></td></tr></table></body>
</html>

















基于JSP+MySQL的校园网上订餐系统相关推荐

  1. 基于php的外卖订餐系统开题报告_校园网上订餐系统的设计与实现(PHP,MySQL)

    校园网上订餐系统的设计与实现(PHP,MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文14000字,程序代码,MySQL数据库) 本系统只需登录即可进行订餐.采用当下流行的PH ...

  2. 基于SSH的校园网上订餐系统

    [A-005]基于SSH的校园网上订餐系统 开发环境: Eclipse/MyEclipse.Tomcat8.Jdk1.8 数据库: MySQL 项目介绍: 为了顺应时代潮流的发展,便捷人民的生活,提高 ...

  3. php mysql订餐系统_校园网上订餐系统的设计与实现(PHP,MySQL)

    校园网上订餐系统的设计与实现(,MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文14000字,程序代码,MySQL数据库) 本系统只需登录即可进行订餐.采用当下流行的PHP技术 ...

  4. 基于微信小程序的网上订餐系统 报告+任务书+开题报告+文献综述+中期PPT+外文翻译及原文+PPT+项目源码及数据库文件

    摘要 随着微信小程序的飞速发展,很多系统随之兴起,微信已经是我们生活中的一部分,可不单单是人们用于沟通聊天的工具.还有很多公告平台.小程序也随之发展.大部分公众平台都只起到了一个信息消息的推送或者浏览 ...

  5. 基于JSP+MYSQL的路况信息查询系统

    运行环境: Myelipse内置 IDE环境: Myeclipse tomcat环境: Myelipse中内置 硬件环境: windows 7/8/10 2G内存以上(推荐4G,4G以上更好) 主要功 ...

  6. javaweb基于JSP+Servlet开发校园在线问卷调查系统 课程设计 大作业 毕业设计源码

    基于JSP+Servlet开发校园在线问卷调查系统(大作业/毕业设计) 开发环境:   Windows操作系统 开发工具:MyEclipse+Jdk+Tomcat+MYSQL数据库 运行效果图: 基于 ...

  7. 基于JSP技术的学生网上选课系统的设计与实现

    摘   要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用.学生选课系统作为一种现代化的教学技术,已越来越受到人们的重视, ...

  8. 基于JSP+MySQL+HTML5的旅游网站系统

    目 录 前 言 1 第1章 系统概述 2 1.1 课题研究的背景 2 1.2 课题研究的概述 2 1.2.1 课题研究的内容 2 1.2.2 课题研究的目的 3 第2章 系统分析 4 2.1 可行性分 ...

  9. 基于jsp+mysql+ssm主题酒店预订系统-计算机毕业设计

    本文介绍了主题酒店管理系统设计方案,该网站采用目前JSP中最流行的SSM框架和Eclipse编辑器.MySQL数据库设计并实现的.网站功能包含系统用户管理.餐饮美食管理.餐饮预订管理.房间管理.房间预 ...

最新文章

  1. 工作空间从Windows转向fc8
  2. Active Directory相关博客
  3. 多个圆点,鼠标选取两个,求两个点的距离,用于计算像素尺寸(halcon实现)
  4. Go 的新关键字 any 是个啥
  5. 刷新按钮_不能忍:用户求微软为Win10 Wi-Fi窗口添加刷新按钮
  6. 获取指定月份最后一天_Excel如何计算某个月的第1天和最后1天?
  7. Android框架揭秘-Android Binder IPC笔记
  8. 程序流程图的基本画法大全
  9. 服务器启动显示fr 01,X3850X5服务器无法开机故障处理_微码升级.docx
  10. HomeBrew加速
  11. 为无人机赋能,星逻智能完成千万元级 Pre-A 轮融资...
  12. iOS字体大小适配机型的几种方法
  13. OpenGL学习笔记——坐标转换
  14. Bellman-Ford(最短路)
  15. 前端js使浏览器窗口全屏与退出----浏览器全屏时 监测通过esc按键退出全屏 (退出全屏时有页面上的相关处理)
  16. C++ 多线程——pthread_cancel 取消线程的疑惑
  17. 华为android7.0彩蛋,安卓7.0系统彩蛋
  18. 财富:最伟大的商业书籍
  19. 飞思卡尔地磁传感器MAG3110调试笔记
  20. 全志V3S开发板LED驱动

热门文章

  1. 2023年考生必读!PMP最强自学教程
  2. Python课程设计:简易速读训练系统
  3. 大型网站技术架构-2. 大型网站架构模式
  4. 四个热点事件营销技巧
  5. iOS单元测试之接口测试
  6. word、pdf等格式文件下载
  7. 维修电工仪表照明实训考核装置
  8. 如何在微软官网查询WHQL认证的产品
  9. 远程连接自动断开的问题解决办法 screen
  10. 巡检各个服务器磁盘状态和作业执行状态,服务器状态巡检脚本