餐厅点餐系统JAVA全栈开发(SSM框架+MYSQL)

代码仓库

GitHub - JJLi0427/Online_Order_SystemContribute to JJLi0427/Online_Order_System development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/JJLi0427/Online_Order_System

项目介绍

餐厅点餐系统包含用户使用界面和功能实现,后台店员和管理员的操作界面和功能实现。用户通过输入手机号,用餐人数,餐桌号进入点餐,手动选择菜品和数量进行下单,实现了口味偏好备注的功能。后台员工/管理员界面需要密码登录,进入后可以操作为完成的订单完成,管理员界面功能丰富,实现了员工/用户管理,菜单管理,订单管理和缓存清理等功能。项目使用SSM框架开发,使用maven做包管理,利用上了许多Mysql数据库的特性。整体分数据库服务器,应用服务器,WEB服务器三部分设计,应用可通过Tomcat服务或者是容器部署。

系统模块结构

系统架构分离成三个服务器的设计:

  1. 数据库服务器,独立机器,其中安装mysql,开放端口,与其他的机器通过网络交互数据信息。
  2. 应用服务器,独立机器,我选择使用Tomcat部署项目的服务,项目打包好后会被映射到本机的8080端口。
  3. WEB服务器,独立机器,通过Apach服务来代理,利用课程分配的虚拟机安装好服务并且写好配置文件即可反代理应用服务器。

项目使用SSM框架开发,用户每一步操作都是通过控制器映射到对应的函数执行对应的SQL语句,如果需要获取数据库表内容则会同时通过JAVA类返回信息,类的结构和表结构是保持一致的。项目前端的界面是由JSP实现的网页,其实就是在HTML中内嵌JAVA语句,通过这个框架实现数据传递到前端和直接信息渲染展示,减少了JS代码的需求。

系统界面设计

快餐店点餐项目从使用者的角度来看是两部分。因此登录也分成两个入口,一部分是用户的界面,另外一部分后台管理,这里又分为普通店员的操作界面和店主的操作界面。

用户登录后可以浏览菜单,右侧可以直接调整数量点餐,同时还能写上自己的口味偏好等信息。

后台界面店员登录后可以查看订单信息和具体情况,然后控制订单的完成。同时还设计了管理员界面,管理员可以可视化可以管理数据库中的几个表,对应菜品的修改,店员信息的查看和修改,用户信息的查看和修改,订单几方面的数据。

订单页面可以由管理员和店员同时操作,设计在右侧一个按钮,单订单完成后由店员或是店主标注打勾,管理员在最下面还有一个清理三个月以上订单的功能,管理系统的缓存

数据库模型设计

表结构设计:设计了四个表:订单(id,口味偏好,下单时间,点餐列表,用户id,完成状态),用户(id,手机号,餐桌号,用餐人数),员工(id,姓名,密码),菜单(id,菜品名,价格)

视图设计:设计了用订单数据和用户数据结合的视图(包含订单的所有字段,同时结合用户id增加了用户的手机号和餐桌号),这样子能够看到订单更详细的信息,这个视图在系统中被直接用到前端,便于前端店内的订单管理,又节省了重复存储数据的问题。

利用索引优化查询:因为惨淡的菜品比较多,翻页总是比较麻烦,所以给菜单的dish_name字段加入了索引,这样子用户在前端通过系统的查询功能,用菜品名来查询菜品速度就会加快。

触发器设计:因为在员工管理的业务场景中,有可能会遇到有重名的员工,所以这里设计来一个触发器,自动给新来的重名员工名字后面加上编号,比如原理有员工名字是staff,新的员工也叫staff,新的员工被加入表之后会被自动改名为staff1

存储过程设计:因为订单数据会随着店铺经营时间不断增加,为了缓解存储的压力,可以做一个存储过程来清理掉时间比较长的订单信息,这样子能够加快系统速度,也便于用户操作(前端点击按钮直接调用存储过程即可)。

运行环境与部署

项目的开发环境是在Linux下完成的。数据库服务基于MySQL,需要先在数据库服务器中安装该服务并构建相应的表结构。整个项目程序的包管理和编译都是基于JAVA的包管理工具MAVEN通过整个工具我们可以轻松的通过框架构建WEB项目并下载依赖便捷的完成编译。项目在服务端的部署使用的是Tomcat,通过把打包好的WEB项目直接映射到应用服务器的8080端口即可。WEB服务器我们使用Apache服务来实现反代理应用服务器的8080端口。

文件组织结构

controller,mapper,pojo,service,jsp分别为存储不同类型的代码的文件夹

.
├─src(源码文件夹)
│  └─main
│      ├─java
│      │  └─com
│      │      └─ljj
│      │          ├─controller(控制不同页面请求和调用SQL操作的函数)
│      │          ├─mapper(封装SQL操作的函数)
│      │          ├─pojo(存储数据类)
│      │          └─service(SQL操作服务的注入)
│      │              └─impl
│      ├─resources
│      │  └─com
│      │      └─ljj
│      │          └─mapper(SQl语句映射)
│      └─webapp
│          └─WEB-INF
│              └─jsp(前端页面代码)
└─pom.xml(依赖配置文件)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/35024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++初学者指南-2.输入和输出---文件输入和输出

C初学者指南-2.输入和输出—文件输入和输出 文章目录 C初学者指南-2.输入和输出---文件输入和输出1.写文本文件2.读文本文件3.打开关闭文件4.文件打开的模式 1.写文本文件 使用&#xff1a; std::ofstream&#xff08;输出文件流&#xff09; #include <fstream> // 文…

YOLOv8关键点pose训练自己的数据集

这里写自定义目录标题 YOLOv8关键点pose训练自己的数据集一、项目代码下载二、制作自己的关键点pose数据集2.1 标注(非常重要)2.1.1 标注软件2.1.2 标注注意事项a.多类别检测框b.单类别检测框2.2 格式转换(非常重要)2.3 数据集划分三、YOLOv8-pose训练关键点数据集3.1 训练…

通过frp实现内外网映射

frp介绍和使用方法可以参考官网:安装 | frp 1、准备两台服务器&#xff0c;一台内网服务器A&#xff0c;一台有公网ip的外网服务器B(47.12.13.15) 2、去官方仓库下载frp安装包&#xff1a;Releases fatedier/frp GitHub 下载包根据自己服务系统选择 ​ 3、先在外网服务器…

《昇思25天学习打卡营第1天|onereal》

昇思25天学习打卡营第1天;有点一头雾水的感觉&#xff0c;说是要在jupyter中签到打卡&#xff0c;是不是就是复制粘贴。我以为是要在终端机器中运行代码呢。 如果只是粘贴代码&#xff0c;那未免太简单了。 我还是想运行这个算力机器&#xff0c;但是他们说每次只能2小时。太…

AI播客下载:Eye on AI(AI深度洞察)

"Eye on A.I." 是一档双周播客节目&#xff0c;由长期担任《纽约时报》记者的 Craig S. Smith 主持。在每一集中&#xff0c;Craig 都会与在人工智能领域产生影响的人们交谈。该播客的目的是将渐进的进步置于更广阔的背景中&#xff0c;并考虑发展中的技术的全球影响…

pp 学习一 生产模块主数据

生产成本&#xff1a;原材料是什么&#xff0c;价格多少&#xff0c;人工耗费时间&#xff0c;以及其他的费用 离散制造&#xff1a;有生产订单。工序是分开的&#xff08;可以停&#xff09; 重复制造&#xff1a;没有生产订单&#xff08;可能有客户下达的任务单或者计划订…

一分钟彻底掌握Java多线程生产者与消费者模型

代码 package com.example.KFC; public class Cooker extends Thread { public void run() { while (true) { synchronized (Desk.lock) { if (Desk.maxCount 0) { break; } else { if (!Desk.flag) { System.out.println("Cooker makes a hamburger"); …

unity中使用commandbuffer将自定义画面渲染到主相机上

CommandBuffer 保存渲染命令列表&#xff08;例如设置渲染目标或绘制给定网格&#xff09;。您可以指示 Unity 在内置渲染管线中的各个点安排和执行这些命令&#xff0c;因此&#xff0c;您可以自定义和扩展 Unity 的渲染功能。 这句话意味着你可以通过command buffer让相机渲…

计算机基础知识——面向对象:封装+继承+多态整理

面向对象三大特性&#xff1a;封装、继承、多态。 1.封装 将一系列相关事物的共同的属性和行为提取出来&#xff0c;放到一个类中&#xff0c;同时隐藏对象的属性和实现细节&#xff0c;仅对外提供公共的访问方式。 【JavaBean类就可以看作是封装的完美案例。】 setter和get…

云动态摘要 2024-06-25

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新产品更新 Web应用防火墙 - 验证码支持微信小程序接入 阿里云 2024-06-25 支持客户从微信小程序场景下接入&#xff0c;提供人机识别的安全防护。 工业数字模型驱动引擎 - iDME控制台换新升级 华为云…

[20] Opencv_CUDA应用之 关键点检测器和描述符

Opencv_CUDA应用之 关键点检测器和描述符 本节中会介绍找到局部特征的各种方法&#xff0c;也被称为关键点检测器关键点(key-point)是表征图像的特征点&#xff0c;可用于准确定义对象 1. 加速段测试特征功能检测器 FAST算法用于检测角点作为图像的关键点&#xff0c;通过对…

轻松掌握:工科生如何高效阅读国际期刊和撰写论文(上)

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三连支…

七天速通javaSE:第三天 程序控制结构:练习题

文章目录 前言一、基础1.计算从0~100之间奇数之和和偶数之和2. 用for循环输出0~1000之间能被5整除的数&#xff0c;每行输出三个 二、进阶1. 九九乘法表2.等边三角形 前言 本文主要讲解三种基本程序控制结构的练习题&#xff0c;以期熟练掌握顺序、选择、循环三种基本结构 一、…

怎么用Python接口发送推广短信

群发短信平台推广&#xff0c;有不少优点。其中通过正规106运营商平台推送&#xff0c;信息更加正规性。尤其是对接接口短信&#xff0c;比如验证码之类的&#xff0c;个人手机号码下发的验证码一般都不靠谱。 支持点对点一对一群发&#xff0c;方便工资条、物业通知等变量信息…

Android开发系列(十)Jetpack Compose之Card

Card是一种常用的UI组件&#xff0c;用于显示一个具有卡片样式的容器。Card组件通常用于显示列表项、卡片式布局或任何需要显示边框和阴影的UI元素。 使用Card组件&#xff0c;您可以轻松地创建带有卡片效果的UI元素。以下是一些Card组件的常见属性和功能&#xff1a; elevati…

YOLOv5改进(七)--改进损失函数EIoU、Alpha-IoU、SIoU、Focal-EIOU

文章目录 1、前言2、损失函数代码实现2.1、修改metrics.py2.2、修改loss.py 3、替换EIOU4、替换SIoU5、替换Alpha-IoU6、替换Focal-EIOU7、目标检测系列文章 1、前言 YOLOv5默认使用损失函数为CIoU&#xff0c;本文主要针对损失函数进行修改&#xff0c;主要将bbox_iou函数进行…

云渲染农场使用指南:如何以最低成本享受最快渲染速度?

​云渲染农场怎么低成本享受快速渲染&#xff1f; 云渲染农场利用其分布式计算能力&#xff0c;为视觉艺术家提供了一种经济高效的渲染选择。它特别适用于高质量的影视动画和视觉效果制作。下面一起来看看如何以最低的成本实现快速渲染的策略。 在追求成本效益的同时&#xff…

第一百二十七节 Java面向对象设计 - Java枚举方法

Java面向对象设计 - Java枚举方法 因为枚举类型实际上是一个类类型&#xff0c;所以我们可以在枚举类型体中声明一切&#xff0c;我们可以在类体中声明它。 以下代码使用字段&#xff0c;构造函数和方法定义了一个级别枚举。 public enum Level {LOW(30), MEDIUM(15), HIGH(7…

2024年好用的加密工具,迅软DSE加密系统原来这么强大

加密软件具有灵活的加密方式和用户友好的操作界面&#xff0c;可定制个性化的安全方案&#xff0c;同时支持数据备份和恢复功能&#xff0c;确保数据的完整性和可用性&#xff0c;是保护数据安全、维护商业机密、防范信息泄露的重要工具。 2024好用的加密工具是哪个&#xff1f…

【SpringCloud-Seata客户端源码分析01】

文章目录 启动seata客户端1.导入依赖2.自动装配 发送请求的核心方法客户端开启事务的核心流程服务端分布式事务的处理机制 启动seata客户端 1.导入依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent…