1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 基于JSP+MySQL的校园网上订餐系统

基于JSP+MySQL的校园网上订餐系统

时间:2022-07-28 03:13:53

相关推荐

基于JSP+MySQL的校园网上订餐系统

目 录

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="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="images/canche_submit.gif" border="0" /></a></td><td align="center" width="40%"><ahref="../ShoppingServlet?remove=1"><imgsrc="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>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。