数据库课程设计@美团模拟系统Unirithe

管理员功能模块分为用户信息管理、系统维护两个部分。(1)用户信息管理包括顾客注册、商家注册、客户以及商家订单记录查询。

该系统在性能功能上应达到如下需求:(1)操作简单、界面友好,完全控件式地页面布局,使得菜品等信息地录入工作更简便,选择菜品只需通过鼠标;(2)对常见地类似网站地管理地各个方面;(3)基本信息录入、浏览、删除、修改、搜索等方面都大体实现;(4)对客户预定餐饮信息地处理(包括录入、删除)将立即在主页地对应栏目显示出来;(5)达到“即时发布、即时见效”地功能;(6)系统运行应该快速、稳定、高效和可靠;(7)在结构上应具有很好地可扩展性,便于将来地功能扩展和维护。

图2.2系统组织结构图考虑到此模拟系统共有四大群体,分别是客户、商家、骑手、管理员,接下来是针对四大群体的系统组织结构设计。

图2.2.1客户程序设计框图

图2.2.2商家程序设计框图

图2.2.3骑手系统组织设计框图

图2.2.4管理员系统组织设计框图

图2.2.5美团外卖服务系统业务流程图

图2.3ER模型图

图2.4数据流图

表2.5.1客户数据字典图

表2.5.2管理员数据字典图

表2.5.3商家数据字典图

表2.5.4菜品数据字典图

表2.5.5订单数据字典图

表2.5.6骑手数据字典图

表2.5.7管理员操作数据字典图

图4.1客户登陆窗口运行图

针对客户的主要三大操作:订餐、查询订单、修改信息,我们借助JAVA中的JTabbedPanel面板,将一个窗口分为三个小模块,分别为buy,select,my,与美团外卖APP小程序对应的是三个界面,订餐、查询订单、我的信息。以下是CLIANET_MAIN.java程序代码:

图4.2.2客户主窗口中“我的“窗口运行图

图5.1.1.2postgresql环境变量配置步骤图2

1.使用SQLshell工具首次连接直接连接默认地址、默认端口、默认database即可,回车四次后需输入用户postgres(默认)的口令,口令即为安装时设置的密码。

图5.1.2.2使用pgAdmin4工具在浏览器中进入psql数据库

图5.2在pgAdmin5中创建数据库

图5.3在psql中创建的表

客户(客户编号,昵称,密码,联系方式,状态,地址,账号余额),对于客户的信息表为区分于商家、骑手、管理员,所以需要在ID上加一个主键约束,另外增加一个check约束,限制id的形式为c开头的字符串。其中状态1表示为在线,0表示为不在线。

CREATETABLEclient( c_idcharactervarying(9)PRIMARYKEYNOTNULLCHECK(c_idLIKE'c%'), c_namecharactervarying(20)NOTNULL, c_pwcharactervarying(20)NOTNULL, c_telcharactervarying(11)NOTNULLCHECK(c_telLIKE'1%')UNIQUE, c_stateintCHECK(c_stateIN(1,0)), c_addcharactervarying(20)NOTNULL, c_moneyfloatCHECK(c_money>=0));5.3.2创建商家信息表商家(商家编号,密码,联系方式,店铺名称,地址,信誉星级,状态,账号余额),其中状态分为三种,working——营业中,relax——休息,gone——停业

CREATETABLEadmin( a_idcharactervarying(9)PRIMARYKEYNOTNULLCHECK(a_idLIKE'a%'), a_namecharactervarying(20)NOTNULL, a_pwcharactervarying(20)NOTNULL, a_telcharactervarying(11)NOTNULLCHECK(a_telLIKE'1%')UNIQUE, a_stateintCHECK(a_stateIN(1,0)));5.3.5创建菜品信息表菜品(菜品编号,名称,价格,折扣,提供商编号,剩余量,出售量)

图5.4.3操作步骤3

图5.4.4操作步骤4

此监听事件实现的主要功能是在客户点击注册按钮后,将文本框里的内容传到PSQL_JDBC类中,在通过该check()方法判断注册信息是否符合规则,如果符合则通过insert_client方法,插入数据到client客户表中。

publicstaticintclear_client(){if(!operation_client.isOK()){return-1;}inti=operation_client._getRow("client");Stringsql="deletefromclient";PreparedStatementpstmt;try{pstmt=(PreparedStatement)operation_client.conn.prepareStatement(sql);pstmt.executeUpdate();pstmt.close();//operation_client.conn.close();}catch(SQLExceptione){e.printStackTrace();}returni;}该方法通过借助PreparedStatement类成功执行sql语句deletefromclient,并且最后会返回删除的总个数。

图5.9.1客户注册账号界面图如上图所示,当点击“确认注册”后,JAVA程序将sql语句selectcount(*)fromwherec_id=‘cycc’;传入psql数据库中,如果返回的结果中有1那么就提示注册失败,请用户重新输入。

图5.9.3实现注册+登陆功能的动态运行图

图5.10点餐测试Gif图

图5.11添加百万客户功能测试运行动态图

在整个模拟系统中,当客户进行订餐后,数据库系统将对客户的余额进行查询,同时会更新余额,此时就需要保证余额一定要大于0,这个小功能可以用sql语句来实现,sql代码如下:

CREATEFUNCTIONupdate_client_money()returnstriggeras$$beginupdateclientsetc_money=0wherec_money<0;returnold;end;$$languageplpgsql;createtriigerU_C_Mafterupdateonclientforeachrowexecuteprocedureupdate_client_money();5.12.2保证订单的id是递增的序列由于各个商家以及各个客户是m对n的关系,所以肯定会产生许多不同的订单,此时为了更好的区分不同的订单,则采取设置主键o_id为递增序列的形式,首先创建一个序列,接着创建对应的执行函数、还有触发器。sql代码如下:

createsequences_ordstartwith1incrementby1createfunctioninsert_ord()returnstriggeras$$beginselects_ord.nextvalintonew.o_idfromdual;returnnew;end;$$languageplpgsql;CREATETRIGGERI_Obeforeinsertonordforeachrowexecuteprocedureinsert_ord();5.12.3添加新订单对于新订单的产生,我们设想当客户的余额有减少的时候,就说明客户在客户端进行了点餐,与此同时可以添加一个触发器对客户表client的update操作进行触发,触发事件则插入新的订单到ord表中,代码如下:

项目文件在同一个文件夹内1.创建客户表

createtableclient(c_idcharactervarying(9)primarykeynotnullcheck(c_idlike'c%'),c_namecharactervarying(20)notnull,c_pwcharactervarying(20)notnull,c_telcharactervarying(11)notnullcheck(c_tellike'1%')unique,c_stateintcheck(c_statein(1,0)),c_addcharactervarying(20)notnull,c_moneyfloatcheck(c_money>=0));2.创建商家表

createtableprovider(p_idcharactervarying(9)primarykeynotnullcheck(p_idlike'p%'),p_pwcharactervarying(20)notnull,p_telcharactervarying(20)notnulluniquecheck(p_tellike'1%'),p_namecharactervarying(20)notnull,p_addcharactervarying(11)notnullunique,p_levint,p_statecharactervarying(15)check(p_statein('working','relax','gone')),p_moneyfloatcheck(p_money>=0));3.创建骑手表

createtablerider(r_idcharactervarying(9)primarykeynotnullcheck(r_idlike'r%'),r_pwcharactervarying(20)notnull,r_namecharactervarying(10)notnull,r_telcharactervarying(20)notnulluniquecheck(r_tellike'1%'),r_addcharactervarying(11)notnull,r_levint,r_statecharactervarying(15)check(r_statein('working','relax','gone')),r_moneyfloatcheck(r_money>=0));4.创建管理员表

createtableadmin(a_idcharactervarying(9)primarykeynotnullcheck(a_idlike'a%'),a_namecharactervarying(20)notnull,a_pwcharactervarying(20)notnull,a_telcharactervarying(11)notnullcheck(a_tellike'1%')unique,a_stateintcheck(a_statein(1,0)));5.创建菜品表

createtabledish(d_idintprimarykeynotnull,d_namecharactervarying(30)notnull,d_pricefloat(2)notnull,d_discountfloat(2),d_pidcharactervarying(9)notnull,foreignkey(d_pid)referencesprovider(p_id),d_stockintnotnullcheck(d_stock>=0),d_salesintnotnull);6.创建订单

createtableord(o_idintprimarykeynotnull,o_cidcharactervarying(9),foreignkey(o_cid)referencesclient(c_id),o_ridcharactervarying(9),foreignkey(o_rid)referencesrider(r_id),o_didint,foreignkey(o_did)referencesdish(d_id),o_pidcharactervarying(9),foreignkey(o_pid)referencesprovider(p_id),o_timedate,o_numintnotnullcheck(o_num>0),o_caddcharactervarying(50)notnull,o_statecharactervarying(15)check(o_statein('wait','accept','cancel')),);7.管理客户

createtableadmin_client(a_c_aidcharactervarying(9),foreignkey(a_c_aid)referencesadmin(a_id),a_c_cidcharactervarying(9),foreignkey(a_c_cid)referencesclient(c_id),a_c_timedate,primarykey(a_c_aid,a_c_cid,a_c_time),a_c_operationcharactervarying(15)check(a_c_operationin('update','insert','delete')));8.管理商店

createtableadmin_provider(a_p_aidcharactervarying(9),foreignkey(a_p_aid)referencesadmin(a_id),a_p_pidcharactervarying(9),foreignkey(a_p_pid)referencesprovider(p_id),a_p_timedate,primarykey(a_p_aid,a_p_pid,a_p_time),a_p_operationcharactervarying(15)check(a_p_operationin('allow','delete')));9.管理骑手

createtableadmin_rider(a_r_aidcharactervarying(9),foreignkey(a_r_aid)referencesadmin(a_id),a_r_ridcharactervarying(9),foreignkey(a_r_rid)referencesrider(r_id),a_r_timedate,primarykey(a_r_aid,a_r_rid,a_r_time),a_r_operationcharactervarying(15)check(a_r_operationin('update','insert','delete')));1.删除约束altertable{TABLENAME}dropconstraintifEXISTS{CHECKNAME};2.删除客户的money约束altertableclientdropconstraintifEXISTSclient_c_money_check3.级联删除执行函数DROPFUNCTION{NAME}()CASCADE;4.删除某个表中的触发器droptrigger{triggerName}on{tableName};5.设置序列下个的值selectsetval('{NAME}',0);

THE END
1.外卖点餐系统数据库设计.doc外卖点餐系统数据库设计需求分析:现要开发外卖点餐系统。经过可行性分析和初步的需求调查,确定了系统的功能边界,该系统应能完成下面的功能:订餐管理。(2)菜单管理。(3)派送人员管理。(4)评价管理。(5)会员管理。(6)支付管理。 1、数据流图 完成人(101张三) 2、数据字典(说明:数据项和数据结构是必须要求的,数...https://max.book118.com/html/2017/0624/117711216.shtm
2.计算机毕业设计Springboot餐厅点餐系统论文毕业设计(论文)题 目:高校校园点餐系统姓 名:学 号:所属学院:专业班级:指导:职 称:完成日期 xxxx 年 xx月摘 要21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确...http://www.360doc.com/document/24/0318/09/84157872_1117538071.shtml
1.数据库课程设计(外卖管理系统)二. 外卖管理系统的概念结构设计 2.1外卖管理系统的实体 分析之后可以设计出能够满足用户需求的各种实体以及他们之间的关系,为下一节的 逻辑结构设计打下基础。这些实体包括各种信息,通过相互之间的作用形成数据的流动。 本系统数据库的各实体信息如下所示: https://blog.csdn.net/2301_79625052/article/details/139125331
2....结构构建高性能可扩展的外卖点餐系统:数据库结构设计随着互联网技术的快速发展,外卖点餐行业正迎来前所未有的繁荣。为了满足日益增长的用户需求和订单量,我们需要构建一个高性能、可扩展的外卖点餐系统。本文将从数据库结构设计的角度出发,探讨如何实现这一目标。 首先,我们需要设计一个合理的数据库表结构。在这个系统中,主要包括以下几个实体:用户、商家、餐厅、菜品、...https://www.tianjinsc.cn/default/2494583.html
3.基于MySQL数据库的外卖点餐管理系统选题目的及理论点餐数据库设计基于MySQL数据库的外卖点餐管理系统选题目的及理论 点餐数据库设计,附:完整的sql和python文件都单独放在了主页,附录部分也有源码,大家自行选择查看,欢迎留言提出疑问。一、设计题目与内容通过了解餐饮行业的特点和实际情况,从分析饭店的基本情况入手,结合要实现的功https://blog.51cto.com/u_16213588/8845504
4.开源外卖点餐系统源码:提升餐饮行业数字化转型其他实例文章...我们的外卖点餐系统基于Web技术开发,使用Python语言和Flask框架。系统主要功能包括: * 顾客端:提供在线点餐、支付和订单管理功能。 * 餐厅端:提供订单接收、制作和发货管理功能。 **系统设计** ### **数据库设计** 我们使用MySQL作为我们的数据库管理系统,设计了以下几张表: ...http://www.shili8.cn/article/detail_20002675023.html
5.基于Django+mysql的点餐系统设计第十七篇(大堂点餐:购物车)基于Django+mysql的点餐系统设计-第十七篇(大堂点餐:购物车)博客目录 大家好,欢迎来到IT知识分享网。 博客目录: …… 十四、Django+mysql(大堂点餐:需求分析和代码逻辑实现梳理、首页展示) 十五、基于Django+mysql的点餐系统设计-第十五篇(大堂点餐:登录) ...https://yundeesoft.com/108739.html
6.Java实现餐厅点餐系统的实例代码java学习Java实现餐厅点餐系统,本文实现该系统的功能截图,和数据库设计SQL语句,系统功能图,功能优势等供大家参考 1.点餐管理系统背景 随着科技的发展,去饭店吃饭点餐和结账都是以线上操作的形势完成。 a.和现在有的系统比较起来,本系统有餐桌管理,菜系管理,菜名管理,订单管理,订单详情等功能。 https://www.jb51.net/article/188466.htm
7.餐厅点餐系统设计,毕设基于C#,数据库,实现登录,点餐,管理后台上菜等 C#,数据库, 2016-05-11 上传 大小:304KB 所需: 49积分/C币 立即下载 基于Python实现的餐厅点餐系统源码+数据库+文档说明(高分项目).zip 基于Python实现的餐厅点餐系统源码+数据库+文档说明(高分项目).zip个人经导师指导并认可通过的高分毕业设计项目,评审分98...https://www.iteye.com/resource/u013258444-9516680
8.餐厅点餐系统数据库实现点餐数据库第一部分 调查用户需求 本系统的最终用户为顾客,管理员。一、 餐馆的基本情况:顾客到餐馆自助点餐,每个餐桌上都配有点餐设备,点餐之后通过网银结账,等餐,吃饭。(1) 订单信息:餐桌号,菜的编号,价格, (2) 餐馆的菜单信息:菜的编号,菜名,价格(3) 管理员:编号,姓名,登录系统密码(4)发票信息:发票...https://m.renrendoc.com/paper/204605221.html
9.基于Android平台的无线点餐系统软件设计与开发网络数据交互则遵照HTTP协议来实现与服务器端的通信。具体设计过程中,使用MVC设计架构模式。3.从手机客户端和网页端两方面着手对点餐系统进行功能需求分析,通过操作性和可扩展性分析系统的性能需求。在需求分析的基础上,对系统整体的物理架构和操作流程进行构建,后利用模块化程序设计思想,对系统的各个功能模块及数据库...https://cdmd.cnki.com.cn/Article/CDMD-10602-1015409213.htm
10.学生成绩管理系统数据库设计–MySQL/SQLServer[通俗易懂]设计大纲 友情链接 1、医疗信息管理系统数据库–MySQL 医疗信息管理系统数据库–MySQL 2、邮件管理数据库设计–MySQL 邮件管理数据库设计–MySQL 3、点餐系统数据库设计–SQL Server 点餐系统数据库设计–SQL Server 4、商品管理系统数据库设计–SQL Server ...https://cloud.tencent.com/developer/article/2089017
11.2022届电计系计算机科学与技术专业优秀毕业设计作品外卖点餐系统是一个基于VUE.JS、NODE.JS、MongoDB的前后端分离项目,使用VUE.JS搭建前端整体项目架构、NODE.JS搭建本地服务器、MongoDB存储数据,引用了百度地图API、NANOID、elementUI等模块,用于实现定位获取、编号生成、整体框架搭建等功能,结合用户与商家的需求将系统分为两个板块,移动端用户点餐系统与PC端后台管理...https://zsb.cdutetc.cn/c/330de0ae-f768-45b8-ad74-3421949e04bd.html
12.信息产业部第八期"高级系统架构师"1、公司内部即时通讯系统设计与实现 涉及技术:Java IO流编程、网络编程、多线程编程。 2、大型酒店点餐的设计与实现 涉及技术:Java三层模型、JavaMail、JavaWeb原理Servlet、JSP、EL表达式+标签、文件上传、下载、过滤器、MVC 模型、Junit、JavaScript组件操作、AJAX技术设计、Hibernate + Spring + Struts 框架技术。 https://www.hxrc.com/hxrc_rs_news/2008/0111a/main.htm