数据库设计快餐店.docx
《数据库设计快餐店.docx》由会员分享,可在线阅读,更多相关《数据库设计快餐店.docx(30页珍藏版)》请在冰豆网上搜索。
数据库设计快餐店
《数据库设计》设计说明书
姓名何国姣
学号**********
2012年11月20日
摘要
在眼下的信息经济时代,现代快餐业的快速增长离不开信息科技因素。
近日,互联网上悄然兴起免费外卖网店服务,专门为从事快餐外卖的店主提供免费外卖网店服务,专门为快餐店、外卖餐厅提供类似于淘宝式的免费外卖网店服务,外卖经营者可以在该网站注册网店,然后免费发布自己的外卖店信息,比如外卖餐品、外卖范围、外卖电话等,还可以上传餐厅图片、餐厅简介,同时实现顾客在线订餐系统服务。
传统的快餐外卖经营者都是依靠电话订餐、名片宣传、上门推销等手段进行经营,具有很多弊端,很难拓展宣传范围或者提升经营效率,比如电话订餐容易高峰期占线电话打不进来,名片宣传则经常遭到城管、大厦保安的围追堵截,上门推销更俨然是各类办公场所的“过街老鼠”。
而快餐订餐系统对快餐外卖业者的经营弊端,提供全方位的外卖网店服务,通过网上订餐解决电话占线难题,通过网店全天24小时展示外卖餐谱信息且更详尽,让城市订外卖的白领们可以在家或者办公室,快捷上网,轻点鼠标,就能得到自己想要的外卖服务。
按照实用性、先进性、前瞻性的建设原则,我对各个在线外卖网站(如www.ele.me)进行了查阅和调研,制定了一套“快餐订餐数据库管理系统”,主要针对于外卖订餐所涉及的数据进行完整的设计与规范,服务于外卖经营者和订餐客户,使一切工作规范化、系统化、程序化,提高了信息处理的速度和准确性,有利于管理员和客户能够及时、准确、有效的查询和修改相应的信息情况,基本上满足了用户需求。
关键词:
快餐;互联网;网上订餐;数据库;查询;修改;
分工情况表:
姓名
学号
班级
任务分工
姓名
独立完成
第一章需求分析
1.1题目描述
我们为大家呈现的是“网络连锁快餐店”这一创新服务模式,是快餐业的电子商务实现形式。
随着计算机技术、网络通讯技术、安全技术、网络与金融系统、物流系统的结合,电子商务已成为国际性的时代潮流。
特别象在上海这样的大都市人口密集,网络用户迅速膨胀,生活节奏快,人们越来越习惯网上购物等网络生活方式,这形成了电子商务存在的人文环境。
而生活水平的提高和健康意识的增强,使人们再也不仅仅满足于吃饱,饮食的美味、营养健康、方便快捷、甚至时尚正成为现代人的追求。
但目前能满足这方面的餐饮店为数不多,有相当一部分餐饮店存在设施、人员资源闲置的现象。
基于此,我们有必要使闲置的资源得以充分利用,达到利润最大化,发展加盟连锁经营,并倡导、引领一种饮食文化新时尚。
设计这一数据库有以下主要信息:
产品特征:
◆半成品,未包装;
◆品种简单,主要为西式快餐;
◆可由顾客选择所需口味;
◆由厨房根据统一配料做出,各个分店中的产品完全一样。
客户特征:
◆在大都市工作或生活,中等收入以上;
◆经常上网,懂得基本的网上交易知识;
◆希望得到方便、快捷、足不出户的服务;
◆希望根据自己需求,获得个性化的服务;
◆追求时尚、高品质的美食;
◆或希望根据自身需求,获得个性化的服务。
订餐服务流程:
◆连锁快餐店建立了自己的网站,客户通过在网站上注册ID进行订餐。
用户ID为客户的唯一标识,我们根据ID纪录客户的订餐历史;
◆客户可以在订餐界面中选择离自己最近的分店,并对自己所选食品进行个性化的口味选择,比如微辣、加酱等等;
◆客户需要在每一次订餐中确定自己本次订餐的地点和联系电话,以便于食品能够准确及时地送达;
◆订餐信息及时传递到业务管理员,由管理员对客户进行电话确认,然后交由厨房进行加工包装;
◆成品由配送人员送至客户处,并由客户签名确认后付帐;
◆本次交易成功,注销帐单,根据ID纪录该客户的本次交易;
◆客户也可以通过电话订餐享受上述服务。
根据以上信息我们可以设计一个订餐系统的数据库管理系统,以方便客户的订餐,同时为连锁经营的电子商务模式提供硬件支持。
该数据库具有的功能:
◆将客户在网页中注册的信息转移到数据库中,可以通过客户的ID查询客户的详细资料;
◆存放商店所提供食品的详细资料,可以通过产品号进行查询,以了解产品的具体特性;
◆存放每一张订单的信息,可以通过订单ID进行查询,已确定订单是否已完成,同时可以对产品的销售进行了解,最后,由账单的信息构成客户的消费历史。
该该数据库管理系统要实现的目标:
◆能够详细地记录客户的订餐历史,根据每位客户交易量的大小为客户提供不同的服务;
◆通过建立订餐数据库为信息化管理提供坚实的硬件支持,管理人员可以方便的了解不同时间、不同分店的业务,能够地了解具体的客户信息以及及时接收客户的反馈;
通过该数据库,管理层能够统计出产品以及服务的销售情况,了解客户的品味,以便对市场做出正确的预测。
1.2功能性需求分析
1.2.1登录功能及注册功能
由于该系统服务于外卖经营者和顾客,因此只有登录该系统的用户才能享用应有的功能,该系统为不同的管理层和顾客提供注册、登录、修改个人信息以及注销等功能。
图1.2.1系统用户用例图
1.2.2管理员用例分析
图1.2.2管理员用例图
如图1.2.2,管理员除了拥有普通客户的基本功能外,还应有添加、删除、修改饭店信息和食品信息,并且能随时接受客户订单,根据厨房制作食品过程修改订单状态,了解不同时间、不同分店的业务,了解具体的客户信息以及及时接收客户的反馈,统计出产品以及服务的销售情况,了解客户的品味,以便对市场做出正确的预测。
1.2.3顾客用例分析
图1.2.3顾客用例图
如图1.2.3,顾客除了拥有基本的登录等功能外,还具有查询饭店信息和食品信息,并且在订餐界面中选择离自己最近的分店,并对自己所选食品进行个性化的口味选择,比如微辣、加酱等等,当然客户也可以通过电话订餐享受上述服务。
1.3非功能性需求
1)健壮性
系统需要具有较强的抗干扰能力和健壮性。
2)性能
系统需要响应时间快,效率高。
3)易用性
系统需要人性化,操作简易。
4)可扩展性
系统需要具有可更新性,操作简易。
第二章数据库设计
2.1E-R图设计
图2.1快餐订餐E-R图
2.2数据表设计
表1用户信息表:
clientInfo
字段名
描述
数据类型
长度
是否允许为空
键
clientId
用户ID(本张表的主键)
VARCHAR
20
否
pk,fk
clientName
用户登录名
VARCHAR
20
否
clientPassword
用户身份验证密码
VARCHAR
20
否
phoneNumber
用户电话号码
VARCHAR
20
是
clientAddress
用户的住址
VARCHAR
20
是
type
用户类型
VARCHAR
20
默认值为“客户”
表2饭店信息表:
restaurantInfo
字段名
描述
数据类型
长度
是否允许为空
键
restName
饭店名字(本张表的主键)
VARCHAR
20
否
pk,fk
restAddress
饭店地址
VARCHAR
20
否
openTime
营业时间
Date
是
restPhone
饭店电话
VARCHAR
20
是
description
饭店简介
VARCHAR
50
是
表3食品信息表:
foodInfo
字段名
描述
数据类型
长度
是否允许为空
键
foodId
食品ID
VARCHAR
20
否
pk,fk
foodName
食品名
VARCHAR
20
否
foodTaste
食品口味
VARCHAR
20
是
foodPrice
食品单价
NUMERIC
是
sellcount
已售出量
INT
是
表4食品饭店表:
food_shop
字段名
描述
数据类型
长度
是否允许为空
键
restName
饭店名
VARCHAR
20
否
pk
foodId
食品ID
VARCHAR
20
否
pk
foodName
食品名
VARCHAR
20
是
表5订单历史记录:
orderHistory
字段名
描述
数据类型
长度
是否允许为空
键
clientId
客户ID
VARCHAR
20
否
pk
orderId
订单ID
INT
否
pk
totalCost
本张订单的消费总额
NUMERIC
是
orderDate
订单时间
Date
是
表6订单条目录:
orderInfo
字段名
描述
数据类型
长度
是否允许为空
键
orderId
订单ID
INT
否
pk
foodId
食品ID
VARCHAR
20
否
pk
foodName
食品名
VARCHAR
20
是
foodTaste
食品口味
VARCHAR
20
是
foodPrice
食品单价
NUMERIC
是
amount
份数
INT
是
表7评论信息:
comment
字段名
描述
数据类型
长度
是否允许为空
键
clientId
客户ID
VARCHAR
20
否
pk
foodId
食品ID
VARCHAR
20
否
pk
content
评论内容
VARCHAR
50
否
2.3数据库介绍
由于这些表的设计采用的是SQLite数据库,因此有必要介绍一下SQLite数据库。
SQLiteExpertPersonal是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
2.4逻辑结构设计
图2.4逻辑数据结构设计图
如图2.4所示,本系统采用的是集中式数据存储即所有数据都存储在同一个数据库里。
为了保证所有重要数据因某个情况下不丢失,本站系统就会按照定时自动数据备份来备份一天内的工作记录。
2.5数据准备
本系统的数据主要来自于天津大学外卖-饿了么天津站(www.ele.me)。
第三章数据库实现
3.1系统流程图
图3.1.1客户流程图
图3.1.2管理员流程图
3.2主要功能模块介绍
系统从功能角度看,主要分为六个模块,分别为客户信息管理模块、快餐店信息模块、食品信息模块、下订单模块、订单查询模块以及客户评价模块。
主要实现功能如下:
图3.2系统功能模块图
当进入主界面时,只有登录按钮和注册按钮被激活,如果用户没有注册则必须进行注册后才能继续使用该系统,注册界面如图所示:
用户注册界面
系统主界面图
当用户注册后,进行登录,登录界面如图所示,如果登录用户名或密码错误,系统会提示错误信息。
登录界面图
3.2.1客户信息模块
当用户登录后进入第一个模块,即客户信息模块:
图3.2.1客户信息模块图
如图所示,为客户信息模块实现的图,用户可以修改个人信息以及注销等功能,同时可以根据客户ID查询客户的详细信息,包括客户名、客户密码、联系方式以及住址等,也可以查看该客户的消费历史记录信息,根据该客户以消费的情况,判断该客户是否是会员,若是会员,可以享受一定优惠。
如果数据库连接失败,系统会提示“数据库连接失败!
”,如果客户没有注册,查询时系统会提示“该客户不存在!
你可以进行注册!
”。
3.2.2快餐店信息模块
当进入快餐店信息模块时,如果用户为普通客户,则只能搜索所有饭店信息以及该饭店的食品信息,如果用户为管理员则还可以添加、删除和修改饭店信息。
图3.2.2快餐店信息模块图
如图所示为所有快餐店的信息,包括店名、地址、营业时间、电话以及饭店简介等信息,客户可以选择离自己最近的饭店并且查看该饭店所有的食品,选择自己喜欢的食品,进行去下订单。
也可以双击该行跳转到该食品的详细信息界面。
添加、修改饭店信息的界面如图所示:
3.2.3食品信息模块
图3.2.3食品信息模块
如图所示,用户可以根据食品ID查询该食品的详细信息,包括食品名、口味、价格以及已售出的数量。
如果食品ID不存在,则系统会提示“该客户不存在”。
可以直接点击去下订单哦按钮进入下订单界面。
3.2.4下订单模块
图3.2.4下订单模块图
如图所示,为客户下订单的图,当客户根据饭店在复选框里选择该饭店的食品后,会在界面的左下方出现你所选择的食品,在右上方选择你所要预订的食品ID以及份数,将该菜单加入到订餐表中,如果客户又不想要已经在订餐表中的食品时可以选择该项,通过右上角的“删除”按钮删除该项食品,当预订完所有食品后,输入个人信息及密码,点击“确定”按钮,订餐表中的所有记录会构成一整张订单,该订单号由系统的随机函数产生,系统会将该整张订单信息添加到客户的消费历史记录里,与此同时会相应更新各个食品已售出的数量以及该客户消费历史记录里的总额。
如果用户没有注册是不能下订单的,此时系统会出现如下警告:
3.2.5订单查询模块
图3.2.5订单查询模块
如图所示,用户可以根据订单号查询该张订单表的整条目录信息。
3.2.6客户评价模块
图3.2.6评价模块图
如图所示,客户可以根据食品ID号查询客户对该食品的所有评价,同时客户也可以根据实际情况对该食品做出评价,以便于管理员能根据这些反馈改进服务,提高服务质量,当然管理员除了接收这些反馈,还可以根据各个食品的销售情况,对市场做出准确的预测。
3.2.7应用开发环境
程序语言:
C++
操作系统:
Windows旗舰
平台:
qt,vs2008,SQLite数据库
关键代码:
QSqlDatabasedbconn=QSqlDatabase:
:
addDatabase("QSQLITE");//连接数据库
dbconn.setDatabaseName("D:
/icon/db04.db");
dbconn.open();
if(!
dbconn.open())
{
QMessageBox:
:
critical(NULL,QObject:
:
tr("Collection"),QObject:
:
tr("数据库连接失败!
"));
return;
}
QSqlQueryquery_client1;//删除语句
QStringdeletestr="DELETEFROMclientInfoWHEREclientId=\""+clientid1+"\";";
query_client1.exec(deletestr);
QSqlQueryquery_client;//查询语句
QStringquery_clientID="select*fromclientInfowhereclientId=\""+clientid+"\";";
query_client.exec(query_clientID);
QSqlQueryupdatequery1;//修改语句
QStringupdatestr1="updatefoodInfosetsellcount="+QString:
:
number(a5)+"+sellcountwherefoodId=\""+n1+"\";";
updatequery1.exec(updatestr1);
QSqlQueryicQuery1;//插入语句
icQuery1.prepare("INSERTINTOorderInfo(orderId,foodId,foodName,foodTaste,foodPrice,amount)VALUES(?
?
?
?
?
?
)");
icQuery1.addBindValue(orderid);
icQuery1.addBindValue(n1);
icQuery1.addBindValue(n2);
icQuery1.addBindValue(n3);
icQuery1.addBindValue(n4);
icQuery1.addBindValue(n5);
icQuery1.exec();
第四章系统使用说明
4.1软件安装
4.1.1搭建qt+vs2008开发环境
(1)安装VS2008,我这里安装的是中文版的VS2008并且也没有安装VS2008SP1,对于VS2008的安装过程这里省略了。
(2)安装Qt,访问Qt官方网站
a、下载VS2008编译好的QT4.7版本b、下载VS2008的Qt插件:
c、对于VS和QT的安装顺序,没有严格的要求,并没有谁先谁后,这里我是之前已经安装好了VS2008中文版的。
(3)启动VS2008,会发现VS2008的菜单栏出现Qt这个菜单。
(4)单击VS2008的Qt菜单
(5)打开QtOption可以看到Qt的Version已经被自动识别好(并非像老版本需要手动去设置)
(6)打开VS2008,新建一个Qt项目
(7)编译并运行MyApp项目,这里先不用designer.exe(Qt的UI设计器,下面章节再进行介绍)设计,默认编译运行就行,生成的项目目录结构图:
(8)运行成功截图如下:
总结:
虽然在软件开发中,建议老版本的Qt稳定些,还有最好用英文版的VS2008,主要考虑稳定性,不过这里考虑到编译和设置旧版本的Qt实在繁琐耗时,并且弄了半天还是编译不通过,只好用新版本的Qt,这里还算顺利,没有出现什么错误。
4.2系统使用说明
系统工程名为db04,架构如右图,db04.ui为主界面,loginui.ui为登录系统界面,addClient.ui为注册和修改个人信息界面,addCilent类是实现该功能的类,已实现的部分只是针对客户,具体使用请详见数据库实现部分。
参考文献
[1]数据库系统基础教程,机械工业出版社
[2]SQLServer2000数据库及应用,罗万华主编
[3]QT学习之路,从入门到精通
[4]QT操作数据库,学习基础,
[5]天津大学外卖-饿了么网站,https:
//ele.me/at/entry/tianda