1、SQL数据库期末作业餐饮管理系统212020年4月19日文档仅供参考餐饮业信息管理系统的开发1、本项目的需求分析 随着今年来中国餐饮行业的日益火爆,在强烈的行业竞争中,一个高效的餐饮信息管理系统的应用,无疑是至关重要的。高效,便捷的管理系统,不但仅极大的方便了食客的就餐,同时对于餐饮公司的各项信息管理有着很大的帮助,同时,我们的餐饮信息管理系统还能帮助餐厅降低错误率,扩大营业范围,增加知名度等。 为了使得系统在操作的过程中,更加便捷,具有针对性,本次系统设计主要分为:员工登陆操作信息系统,以及店主操作管理信息系统。不同的设计从而达到不同的功能,实现信息的有效传达与管理。第一:在员工使用本餐饮信
2、息管理系统应能够实现以下功能:1. 添加修改查询客户会员信息(修改客户信息需客户确认)2. 查询菜单3. 添加查询预定信息4. 客户能够在自己的会员账户里充值5. 顾客能够用现金买单也能够从会员账户里扣取第二:管理员使用本餐饮信息管理系统应能够实现以下功能:1. 添加修改查询客户会员信息(修改客户信息需客户确认)2. 添加修改查询菜单信息3. 添加查询预定信息4. 添加职员信息,权限也能够定为管理员。二、餐饮业管理数据库管理系统的E-R模型(概念结构设计)数据流图1、用户信息编号、密码、类型、姓名、电话、收款金额2.客户信息:用户编号、客户编号、姓名、电话、密码、开卡时间、卡内余额3.食谱:类
3、型、名称、价格4.预定:用户编号、日期、预定时间、客户姓名、预定食谱、桌号5桌台管理:桌号、使用情况、6. 点餐管理:用户编号、类型、菜品、数量、价格7. 盈利管理:日期、店内收入、外卖收入、盈利额度各对象之间的联系图:用户(User)用户编号用户密码用户姓名名用户电话收款金额用户E-R图主要存储一些用户信息,如用户的账号、密码和类型地点等等,主要用于用户登录,添加客户和添加预定时会使用到用户信息。客户(customer)客户编号客户密码客户姓名添加时间账户余额客户电话用户编号 客户表E-R图主要存储一些客户信息,如客户的账号、密码、联系方式和消费情况等等,主要用于客户订餐、充值和结算,使用于
4、添加预定。桌台(table)可入座人数桌号桌台表E-R图主要用于储存餐饮店桌台使用情况,方便来客安排,与预定。食谱(food)食谱名称价格食谱编号食谱表E-R图主要存储一些食谱信息,如食谱的名称、价格和照片等等,主要用于客户订餐,使用于添加预定。 菜品名称用户编号点餐(diancan)(fdiancan)价格消费类型数量 点餐表E-R图 主要储存堂食客人点餐信息,用于记录、统计点餐信息,以及分析菜品的受欢迎程度。预定(YuDing)消费金额客户姓名日期时间用户编号桌号预定餐点预定E-R图主要存储一些预定信息,如客户的账号、预定的时间、桌号和菜单等等,主要用于记录客户的预定信息,会使用到用户、客
5、户、菜单和折扣信息。盈利报表日支出金额日期盈利额度店内收入外卖收入主要存储每日收入流水,用于统计财务收入。3.数据表的设计1、 user(用户员工表)表3.1 user字段名称字段描述字段类型备注user_id用户编号INT(11)不允许空Pwd用户密码VARCHAR(45)不允许空Name用户姓名VARCHAR(45)不允许空Tel用户电话VARCHAR(45)不允许空Money收款金额VARCHAR(45)允许空用户表主要用于存储一些用户信息,如用户的账号、密码和类型地点等等,主要用于用户登录,添加客户和添加预定时会使用到用户信息来记录经手的用户,字段money用于记录用户的收款金额,便于
6、结算时对收款现金的核对。2、 customer(客户表)表3.2 customer字段名称字段描述字段类型备注Name客户姓名INT(11)不允许空Id客户编号VARCHAR(45)不允许空Pwd客户密码VARCHAR(45)不允许空Addtime添加时间VARCHAR(45)不允许空Money账户余额VARCHAR(45)不允许空usedmoney已用金额VARCHAR(45)不允许空Tel客户电话VARCHAR(45)允许空Userid用户编号VARCHAR(45)不允许空客户表主要用于存储一些客户信息,如客户的账号、密码、联系方式和消费情况等等,主要用于客户订餐、充值和结算,字段mone
7、y用于储存账户余额,在使用充值和账户余额支付时会使用到它。字段usedmoney用于记录客户的消费情况,为客户打折时会使用到它。3、 food (食谱表)表3.3 food字段名称字段描述字段类型备注Food_id食物编号INT(11)不允许为空foodname食谱名称VARCHAR(45)不允许空Price价格VARCHAR(45)不允许空食谱表主要用于存储一些食谱信息,如食谱的名称、价格和照片等等,主要用于客户订餐,使用于添加预定。字段Price记录的是食物的价格。当客户预定餐点时,系统使用它来算费用。4、 Order(点餐表)表3.3 Order 字段名称字段描述字段类型备注Userid
8、用户编号INT(11)不允许空Tableid桌号VARCHAR(45)不允许空People人数VARCHAR(45)不允许空foodname菜品名称VARCHAR(45)不允许空Price价格VARCHAR(45)不允许空Amount数量VARCHAR(45)不允许空Date日期VARCHAR(45)不允许空5、 YuDing(预定表)表3.4 YuDing字段名称字段描述字段类型备注Tableid桌号INT(11)不允许空Date日期DATETIME不允许空Time预定时间VARCHAR(45)不允许空Name客户姓名VARCHAR(45)不允许空Userid用户编号VARCHAR(45)不
9、允许空Food菜单号VARCHAR(45)不允许空Money消费金额VARCHAR(45)不允许空预定表主要用于存储一些预定信息,如客户的账号、预定的时间、桌号和菜单等等,主要用于记录客户的预定信息,会使用到用户、客户、菜单和折扣信息。当系统预定餐点时,会从其它各表中调出需要的信息,经过计算和处理后,将最终信息储存到YuDing表,该表和其它各表都有紧密的联系。6、 Yinli (盈利表)表3.3 food字段名称字段描述字段类型备注Data日期INT(11)不允许空in1店内收入VARCHAR(45)允许空in2外卖收入VARCHAR(45)允许空out日支出VARCHAR(45)允许空yi
10、nli盈利VARCHAR(45)允许空beizhu备注VARCHAR(45)允许空4.数据库创立:创立表食谱表用户表预定表桌台表盈利表点餐表客户表六 查询1查询所有顾客及添加时间SELECT name ,addtime FROM test.customer;2查询当前剩余空桌SELECT table_id FROM test.table_id where people=0;3创立存储过程,在客户的账户余额里扣除已点菜品的价格执行操作前,客户“丁叶”的账户余额为200元执行操作后,客户“丁叶”的余额变为170元创立存储过程使客户可对自己的账户进行充值,执行操作前,用户“方兵”的账户余额为100元
11、执行操作后,用户“方兵”成功充值100元操作代码1、 实现余额的扣除:CREATE DEFINER=rootlocalhost PROCEDURE diancai(in nam varchar(45)BEGINSET autocommit = 0;START TRANSACTION;update customer set money=customer.money-(select money from test.yuding where name=nam) where name=nam;SET autocommit = 1;END2实现余额的充值CREATE DEFINER=rootlocalh
12、ost PROCEDURE chongzhi(in id_ int(11)BEGINSET autocommit = 1;START TRANSACTION;update customer set money=customer.money+(select howmoney from test.chongzhi where id=id_)/2) where id=id_;END总结首先感谢帮助过我们的老师同学,现在我们来说说我们的不足吧。首先我们刚开始不太确定方向,所有系统都想尝试做一下,因此有点耽误时间。刚开始做的过程中我们对自己做的系统体系结构不太了解,体系都是慢慢逐渐完善的。刚开始建数据库
13、时,由于对MYSQL这个软件的运用不够熟练,我们不懂得如何导出导入数据库,导致我们做好的表格和数据无法保存,再次打开运行时,导致数据的缺失,一切都要重新来过,浪费了很多时间和精力。存储过程中也有阻碍,语句的错误,拼写错误,对象引入错误。可是经过查询课本,网上查找资料以及同学的指导我们找到了错误并加以改正。 在建表时设置主键的不恰当,导致运行程序时出现bug,例如:在建立预订表的时候,把主键设置为桌号,这意味着每张桌子只能用一次,这对于餐饮管理并不符合实际,因此我们理清思路,加入序号这一个属性,以预订顺序为唯一标识,确立主键。修改前的预订表修改后的预订表参考资料:MySQL5.6从零开始学习,MySQL权威教程网页搜索。