资源描述
网上点餐系统
1. 需求描述
用简要文字描述系统的需求信息。
随着互联网的飞速发展,人们足不出户就可完毕很多事情:购物、订票、求医、交友、缴费等等,极大的方便了人们的生活。人们坐在家中通过网络就可以实现点餐、付款、等待送餐等一系列服务。
2. 概念结构设计
画出系统E-R图。
特色
名称
编号
分类名称
编号
食材
图片
属于
菜品
菜品分类
1 N
备注
价格
点餐率
Q
编号
用户名
密码
用户
点餐
P
身份
地址
电话
3. 逻辑结构设计
根据E-R图设计关系模式,也可以设计某些视图。每个关系模式最佳列出具体的表结构。
根据E-R图分析转换后,提取出四张数据库表,分别是:用户表、菜品分类表、菜品表和点餐表,表的设计如下:
User(用户表)
列名
数据类型
主键
可为空
是否外键
其他约束
说明
Id
Int
是
否
否
无
用户编号
userName
Varchar(20)
是
否
否
无
用户名
Password
Varchar(20)
是
否
否
无
密码
Ident
Char(1)
是
否
否
无
用户身份
(0:普通1;1:管理员)
Telephone
Vachar(20)
是
否
否
无
电话
Address
Varchar(50)
是
否
否
无
地址
Foodtype(菜品分类表)
列名
数据类型
主键
可为空
是否外键
其他约束
说明
Id
Int
是
否
否
无
分类编号
Typename
Varchar(20)
否
否
否
无
分类名称
Food(菜品表)
列名
数据类型
主键
可为空
是否外键
其他约束
说明
Id
Int
是
否
否
无
菜品编号
Foodname
Varchar(20)
否
否
否
无
菜品名称
Feature
Varchar(100)
否
是
否
无
特色
Material
Varchar(100)
否
是
否
无
食材
Price
Int
否
否
否
无
价格
Type
Varchar(20)
否
否
否
无
分类
Picture
Varchar(40)
否
是
否
无
图片
Hite
Int
否
否
否
无
点餐率
Comment
Int
否
否
否
无
备注(-1:正常菜,0:厨师推荐菜,正整数:特价菜)
Diningcar(点餐表)
列名
数据类型
主键
可为空
是否外键
其他约束
说明
Id
Int
是
否
否
无
点餐编号
Userid
Int
否
否
是
无
用户编号
Foodid
Int
否
否
是
无
菜品编号
4. 物理设计
根据实际应用设计索引。
在food表上创建复合索引INDEX Unite,一方面在列price上创建降序索引,若price列值相同的图书再按照ID列创建升序索引。
CREATE INDEX Unite ON food (price DESC, Id ASC)
查看在food表上创建的所有索引。
sp_helpindex food
5. 数据库实行
创建数据库和表。
也可以创建数据库用户。
数据库和表的创建:
User1(用户表)
Foodtype(菜品分类表)
Food(菜品表)
Diningcar(点餐表)
6. 数据库运营
模拟实际应用程序运营,虚拟一些实际需求并撰写相应的增删改查语句等。
(1) 王霸注册了网站订餐系统普通用户,密码:456 电话: 地址:东软三期大酒店
Insert into user1
Values(‘6’,’王霸’,’456’,’0’,’’,’东软三期大酒店’)
(2) 最近本店新增了两个菜色:台烧卤肉饭 厨师推荐 菜价:15;黑椒牛柳 家常菜 菜价:10
Insert into food
Values(‘6’,’台烧卤肉饭’,null,null,’15’,’家常’,null,‘0’,’0’)
Insert into food
Values(‘7’,’黑椒牛柳’,null,null,’10’,’家常’,null,‘0‘,’-1‘)
(3) 赵六搬了新家,需要修改地址,地址为:数码广场28号
Update user1 set address=’ 数码广场28号’
(4) 由于天气因素,某些菜缺少,所以有些菜品被删除,如:角瓜鸡蛋
Delete from food
Where foodname=’角瓜鸡蛋’
(5) 为了不反复,管理员想查询是否有口水鸡这个菜品
Select * from food
Where foodname=’口水鸡’
7. 数据库维护
可以考虑进行数据库的备份和恢复操作。
(1)数据库的备份:右键点击Order数据库,操作如下
对数据库Order分别进行完整备份、差异备份和事务日记备份
差异备份和事务日记备份操作同完整备份
(2)数据库的恢复:右键点击Order数据库,操作如下
可对所要选择还原的备份集,进行还原
8.数据库开发
可以考虑创建函数、存储过程或触发器等。
(1) 创建函数:使用Order数据库,根据给定的菜品价格,选择出所有价格低于给定菜品价格的所有菜品的具体信息
测试:select * from Searchfood(35)
(2) 存储过程:创建一个存储过程foodkin,用于检索菜品的名字、价格和菜品类型
通过下SQL语句执行该存储过程:EXECUTE foodkin
(3)为Food表创建触发器:操作如下
在表Food中新建查询:输入
create trigger query_food_T
on food
for insert,update,delete
as
select *from food
go
激活触发器:
9.应用程序开发(额外加分)
采用***程序语言连接数据库实现应用程序,程序界面如下:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
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>My JSP 'MyJsp.jsp' starting page</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 rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<center>
<h1>网络点餐系统</h1>
<a href="$ {pageContext.request.contextPath}/mealsystem/login.jsp">进入点餐系统</a>
<table width="80%">
<tr><td>
<h3>热点菜品</h3>
<table>
<tr>
<table>
<tr>
<td align="center"><img src="../images/家常/1.jpg"><br>
<a href="#" target="_blank">西红柿鸡蛋</a>9元
</td>
<td align="center"><img src="../images/家常/1.jpg"><br>
<a href="#" target="_blank">角瓜鸡蛋</a>8元
</td>
<td align="center"><img src="../images/家常/1.jpg"><br>
<a href="#" target="_blank">爆炒腰花</a>6元
<td align="center"><img src="../images/家常/1.jpg"><br>
<a href="#" target="_blank">口水鸡</a>10元
</td>
</tr>
</table>
</td></tr>
<tr>
<td><h3>今日特价</h3>
<table>
<tr>
<td align="center"><img src="../images/凉菜/1.jpg"><br>
<a href="#" target="_blank">蒜泥炒肉</a>9元
</td>
<td align="center"><img src="../images/zhushi/1.jpg"><br>
<a href="#" target="_blank">驴打滚</a>10元
</td>
<td align="center"><img src="../images/zhushi/1.jpg"><br>
<a href="#" target="_blank">西米露</a>9元
</td>
</tr>
</table>
</td></tr>
<tr>
<td><h3>厨师推荐</h3>
<table>
<tr>
<td align="center"><img src="../images/川菜/1.jpg"><br>
<a href="#" target="_blank">四川酸辣粉</a>9元
</td>
<td align="center"><img src="../images/zhushi/1.jpg"><br>
<a href="#" target="_blank">红豆粥</a>10元
</td>
<td align="center"><img src="../images/zhushi/1.jpg"><br>
<a href="#" target="_blank">韩国泡菜</a>9元
</td>
</tr>
</table>
</td>
</tr>
</table>
</center>
<center>
<h1><font color="red">菜单管理</font></h1>
<hr color="green">
<table width="80%">
<tr>
<th><a href="#">用户管理</a></th>
<th><a href="#">菜品分类管理</a></th>
<th><a href="#">菜品管理</a></th>
<th><a href="#">查看用户点餐情况</a></th>
<th><a href="#">退出点餐系统</a></th>
</tr>
</table>
<p>
<form action="#" method="post">
<a href="#">添加菜品</a>
<select name="typeid">
<option></option>
<option value="1">家常</option>
<option value="1">凉菜</option>
<option value="1">主食</option>
<option value="1">饮品</option>
<option value="1">234343</option>
</select>
<input type="submit" value="按分类查询">
</form>
<p>
<table width="80%" borde>
<tr>
<th>序号</th><th>菜品名称</th><th>价格</th><th>类型</th><th>点击率:次</th><th>备注</th><th>操作</th>
</tr>
<tr>
<td>1</td>
<td>韭菜鸡蛋</td>
<td>8</td>
<td>家常</td>
<td>1</td>
<td></td>
<td>
<a href="#">修改</a>
<a href ="#" onClick='return confirm("拟定要删除此菜品吗?")'>删除</a>
</td>
</tr>
<tr>
<td>2</td>
<td>辣白菜</td><td>6</td>
<td>家常</td>
<td>1</td>
<td></td>
<td>
<a href="#">修</a>
<a href ="#" onClick='return confirm("拟定要删除此菜品吗?")'>删除</a>
</td>
</tr>
</table>
</center>
<center>
<h1><font color="red">菜品管理——修改菜品</font></h1>
<hr color="green">
<table width="80%">
<tr>
<th><a href="#">用户管理</a></th>
<th><a href="#">菜品分类管理</a></th>
<th><a href="#">菜品管理</a></th>
<th><a href="#">查看用户点餐情况</a></th>
<th><a href="#">退出点餐系统</a></th>
</tr>
</table>
<p>
<from action="#" method="post">
<input type="hidden" name="id" value="2">
<table width="40%" border>
<tr>
<td>菜名</td>
<td><input type="text" name="foodname" value="韭菜炒鸡蛋"></td>
</tr>
<tr>
<td>特色</td>
<td>
<textarea rows="" cols="20" rows="4">工艺:炒 口味:清香味</textarea>
</td>
</tr>
<tr>
<td>食材</td>
<td>
<textarea name="material" cols="20" rows="4">主料:韭菜4两(约160克,鸡蛋3只。)</textarea>
</td>
</tr>
<tr>
<td>价格</td>
<td><input type="text" name="price" value="8" >元</td>
</tr>
<tr>
<td>类型</td>
<td>
<select name="type">
<option value='1'selected>家常</option>
<option value='2'>凉菜</option>
<option value='2'>主食</option>
<option value='2'>饮品</option>
</select>
</td>
</tr>
<tr>
<td>图片</td>
<td>
<imq src="../../images/jiachang/02.jpg"><br>
<input type="text" name="picture" value="images/jiachang/02.jpg">
</td>
</tr>
<tr>
<td>备注</td>
<td>
<textarea name="comment" rows="4" cols="20">-1 -1表达正常菜,0表达厨师推荐,正整数为特价菜。</textarea>
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="修改"></td>
</tr>
</table>
</form>
</center>
<center>
<h1><font color="red">用户点餐情况列表</font></h1>
<hr color="green">
<table width="80%">
<tr>
<th><a href="#">用户管理</a></th>
<th><a href="#">菜品分类管理</a></th>
<th><a href="#">菜品管理</a></th>
<th><a href="#">查看用户点餐情况</a></th>
<th><a href="#">退出点餐系统</a></th>
</tr>
</table>
<p>
<tr>
<td align="center">
<table border width="50%">
<tr><td colspan="2">点餐用户:</td></tr>
<tr><td width="70%">菠菜炒鸡蛋</td><td>9元</td></tr>
<tr><td width="70%">韭菜炒鸡蛋</td><td>8元</td></tr>
<tr><td width="70%">辣白菜</td><td>6元</td></tr>
<tr><td >合计</td><td>23元</td></tr>
</table>
</td></tr>
</table>
</center>
</body>
</html>
展开阅读全文