餐饮管理系统
作者:杨文艺
本次任务完成时间:2018年7月25日~2018年8月19日
开发工具与关键技术:SQL Server、C#MVC、Visual Studio
完成模块功能:外卖订餐、用户登录
一、用户登录
用户根据账号、密码进行验证登录,新用户可以点击免费注册进行注册,注册成功便可登录。
用户注册页面
二、主界面
用户登录进入前台主界面,页面显示店铺所有菜品,鼠标悬停在图片上显示该菜品信息和操作按钮(加入购物车和查看菜品详细信息)
1、购物车
点击加入购物车,Del可以从该购物车中删除该菜品,“-”号和“+”号可以修改菜品数量,点击保存即可修改成功。
2、菜品详情
点击放大镜按钮可以查看该菜品的详细信息
菜品详情页面,这里可以查看其它用户对该商品的评价,点击加入收藏按钮即
将该商品加入到收藏列表,也可以直接购买或加入到购物车。
点击立即购买按钮,弹出订单信息模态框,填写完整信息即可购买成功。
3、结算
3.1购物车
用户可在购物车界面修改订单信息(修改菜品数量、移除商品等)并勾选确认下单的商品,点击“确定下单”按钮,跳转到结算界面
3.2订单确认
结算界面,系统统计所有商品总价,用户选择收货地址,点击“结算”,弹出付款窗口
3.3支付
付款窗口,选择支付方式,点击“确认支付”,也可以选择选择点击“稍后支付”,支付成功后可以到个人中心查看订单状态,如果选择稍后支付,需要在15分钟内完成付款,逾期订单将自动取消。
逾期订单自动取消
3.4 确认收货&订单评价
在个人中心找到我的订单界面确认收货
用户收到外卖之后可以对当前订单做出评价
4、个人中心
4.1 个人中心
外卖订餐管理模块除了首页以及购物车功能之外,还包括个人中心,个人中心包含当前用户订单的记录,用户资产,用户基本资料以及用户所收藏的菜品
4.2订单记录
该页面记录了近三个月的订单,点击“查看详情”按钮可以查看订单详情。
4.3我的资产
可用红包与我的金币这两部分功能暂未完成。
该页面记录了用户资产交易明细,用户可以在该页面进行提现和充值。
4.4我的资料
4.5我的收藏
在收藏列表中,点击加入购物车,即可将该菜品加入到购物车中,选择菜品,点击移除商品,即可将该菜品移出我的收藏列表。
三、经典代码
购物车代码
(控制层部分)
2、 public ActionResult Reservation()
3、 {
4、 try
5、 {
6、 string strPUserID = Session["PUserID"].ToString();
7、 string strPUserName = "";
8、 int intPUserID = Convert.ToInt32(strPUserID);
9、
10、 var PUser = (from tbPUser in myModel.PW_PUser
11、 where tbPUser.PUserID == intPUserID
12、 select tbPUser).Single();
13、 strPUserName = PUser.PUserName;
14、 ViewBag.PUserName = strPUserName;
15、 var listShopping = (from tbShopping in myModel.SYS_Shopping
16、 join tbMenuItem in myModel.BUS_MenuItem on tbShopping.MenuItemID equals tbMenuItem.MenuItemID
17、 join tbPUser in myModel.PW_PUser on tbShopping.PUserID equals tbPUser.PUserID
18、 where tbShopping.PUserID == intPUserID
19、 select new MenuItemVo
20、 {
21、 ShoppingID = tbShopping.ShoppingID,
22、 Quantity = tbShopping.Quantity,
23、 MenuItemID=tbMenuItem.MenuItemID,
24、 Money=tbShopping.Money,
25、 Price=tbMenuItem.Price,
26、 MenuItemName=tbMenuItem.MenuItemName,
27、 }).ToList();
28、 //var listShopping = (from btype in myModel.SYS_Shopping select btype).ToList();
29、 ViewBag.Shopping = listShopping;
30、 for (int i = 0; i < listShopping.Count(); i++)
31、 {
32、 var a = listShopping[i].ShoppingID;
33、 ViewBag.a = a;
34、 }
35、 return View();
36、 }
37、 catch (Exception)
38、 {
39、 return RedirectToAction("Logins");
40、 }
41、 }
42、 //查询ID
43、 public ActionResult SelectShoppingInfor()
44、 {
45、 var listShopping = (from tbShopping in myModel.SYS_Shopping
46、 join tbMenuItem in myModel.BUS_MenuItem on tbShopping.MenuItemID equals tbMenuItem.MenuItemID
47、 select tbShopping.MenuItemID).ToList();
48、 return Json(listShopping, JsonRequestBehavior.AllowGet);
49、 }
//查询图片
50、 public ActionResult SelectMenuPicture(int MenuItemID)
51、 {
52、 try
{
53、 var dbMenuItem = (from tbMenuItem in myModel.BUS_MenuItem
54、 where tbMenuItem.MenuItemID==MenuItemID
55、 select new
56、 {
57、 tbMenuItem.MenuPicture,
58、 }).Single();
59、 byte[] imageData = dbMenuItem.MenuPicture;
60、 return File(imageData, @"image/jpg");
61、 }
62、 catch (Exception e)
63、 {
64、 Console.WriteLine(e);
65、 return null;
66、、 }
67、 }
页面代码
<div class="form-group" style="margin-bottom:0;overflow:auto;">
<div class="col-md-12 col-sm-12" style="height:370px;">
@foreach (var item in ViewBag.Shopping)
{
<div class="col-md-12 col-sm-12 car" style="padding:0;margin-top:15px;">
<div class="col-md-3 col-sm-3" style="padding:0;">
<img id="@item.MenuItemID" src="data: image/jpg; base64," style="height:88px;width:135px;" />
</div>
<div class="col-md-3 col-sm-3 menuone">
<span>@item.MenuItemName</span>
</div>
<div class="col-md-4 col-sm-4 ttttt" style="height:88px;padding-top:50px;" >
<span style="float:left;color:#909090;cursor:pointer;" onclick="deletes(this)">Del</span>
<span class="reduce" onclick="reduce(this)">-</span>
<input class="count-input dddd" type="text" value="@item.Quantity" />
<span class="add" onclick="add(this)">+</span>
</div>
<div class="col-md-2 col-sm-2 menutwo">
@*<span>¥</span><input class="prices" value="@item.Price" />*@
<span>¥</span><span class="prices">@item.Price</span>
</div>
<input type="hidden" class="shoppings" value="@item.ShoppingID" />
</div>
}
</div>
</div>
<script>
$.post("SelectShoppingInfor", function (data) {
$.each(data, function (i) {
MenuPicture(data[i]);
});
});
function MenuPicture(MenuItemID) {
var MenuItemID = MenuItemID;
//$("#" + WaresID).attr("src", "GetWaresImage?WaresID=" + WaresID);
$("#" + MenuItemID).attr("src", "SelectMenuPicture?MenuItemID=" + MenuItemID);
}
</script>
四、技术总结
刚接触这个餐饮管理系统时,心里没有底,因为系统的很多内容我都没有接触过,代码更是不知道要怎样写。拿到项目后,首先是进行项目分析,然后就是建表。建表虽然没有占用太多的时间,但事实证明表的设计是存在很多问题的,不符合实际的需求。后来数据库建好的表也是一改再改,数据库一改,项目代码也要进行相应的改动,这一过程花费了我不少时间。虽然走了不少弯路,但也让我明白了,一个好的数据库是可以让自己学代码的过程省时省力的。