餐厅管理系统

news2024/11/13 22:35:01

目录

一、 系统简介

1.1需求分析

餐厅管理系统是一个基于Javaweb的系统,旨在为音乐餐厅、情侣餐厅和中餐厅提供全面的管理和服务功能。系统主要包括餐厅详情管理、价格管理和加入购物车功能。

1.2 编程环境与工具

二、 系统总体设计

2.1 系统的功能模块图。

2.2 各功能模块简介。

三、 主要业务流程

(1)用户及管理员登录流程图

(2)信息添加流程

(3)信息删除流程

四、 数据库的设计

五、 系统功能详细实现及效果图

(1) 首页

(2) 管理页面

(3) 餐厅页面

(4) 登录与退出

六、 总结

  • 系统简介

1.1需求分析

餐厅管理系统是一个基于Javaweb的系统,旨在为音乐餐厅、情侣餐厅和中餐厅提供全面的管理和服务功能。系统主要包括餐厅详情管理、价格管理和加入购物车功能。

1.系统架构:采用 B/S 架构,基于 JavaWeb 技术实现。

2.数据库设计:使用关系型数据库,如 MySQL 或 Oracle 等。

3.技术框架:Servlet JDBC Java JSP 等。

1.2 编程环境与工具

根据本系统体系结构特点和使用本系统的用户特点,编程环境与工具的配置如表1-1所示:

表1-1 开发环境

Tab. 1-1 Development environment table

类别

标准配置

开发语言

Java

开发工具

IDEA

开发环境

JDK 8.0

服务器

Tomcat 8.0

数据库

MySql 5.6

  • 系统总体设计

2.1 系统的功能模块图。

按照系统的分析,本系统采用基于B/S架构的系统,系统分为管理员和普通用户两种身份,其中普通用户可以管理个人用户信息,也可以对数据库进行修改操作;需要先登录,然后才能使用系统的各项功能,会涉及相应的信息。

2.2 各功能模块简介。

  1. 提供餐厅的基本信息,如名称、展示餐厅的图片,包括环境、菜品等;
  2. 支持对餐厅进行分类,如音乐餐厅、情侣餐厅、中餐厅等。

(1)用户及管理员登录流程图

对于系统的安全性的第一关,就是用户想要进入系统,必须通过登录窗口,输入自己的登录信息才可以进行登录,用户输入的信息准确无误后才可以进入到操作系统界面,进行功能模块的相对应操作,如果用户输入的信息不正确,则窗口出现提示框,用户登录失败,返回到第一步进行重新输入,如图3-1所示。

3-1登录流程图

Figure 3-1 Login Flowchart

(2)信息添加流程

对于系统,需要随时添加所需要的数据信息,对于用户添加信息,需要根据添加界面,根据选框的内容进行填写所要添加的数据信息,信息输入完成后判断数据信息是否符合要求,符合要求则添加完成,用户所添加的信息不符合要求,则需要返回到第一步,重新输入数据信息,再进行判断操作,如图3-2所示。

图3-2信息添加流程图

Figure 3-2 Information is added to the Flowchart

(3)信息删除流程

不管是哪个用户角色进入到不通的系统操作界面,都可以进行不同的信息内容的操作功能,对用系统数据信息的删除,用户一旦将信息删除,那么该删除的数据信息将无法恢复,所以用户在对数据删除事,一定判断删除的内容是否是确定要删除的,确定无误后选择确定删除操作,如图3-3所示。

图3-3信息添加流程图

Figure 3-3 Information Deletion Flowchart

用表格列出表的结构及说明表中主要列的作用。

ID

名称

类型

是否主键

解释

1

id

int

不能

编号

2

username

varchar

不是主键

不能

用户名

3

password

varchar

不是主键

不能

密码

4

xingming

varchar

不是主键

不能

姓名

5

role

int

不是主键

不能

职责

6

dianhua

varchar

不是主键

不能

电话

7

dizhi

varchar

不是主键

不能

地址

此为用户表,包括用户名、密码。

ID

名称

类型

是否主键

解释

1

id

int

不能

编号

2

biaoti

varchar

不是主键

不能

标题

3

neirong

text

不是主键

不能

内容

4

shijian

varchar

不是主键

不能

时间

此为公告表,包括标题、内容。

ID

名称

类型

是否主键

解释

1

id

int

不能

编号

2

pname

varchar

不是主键

不能

名称

3

imgpath

varchar

不是主键

不能

图片

4

createtime

varchar

不是主键

不能

姓名

5

fenleiid

varchar

不是主键

不能

分类id

6

fname

varchar

不是主键

不能

类型名

7

jiage

float

不是主键

不能

价格

8

tuijian

varchar

不是主键

不能

推荐

9

dianjishu

int

不是主键

不能

点击数

10

xiaoliang

int

不是主键

不能

销量

11

miaoshu

text

不是主键

不能

描述

此为餐厅表,包括餐厅名,图片。

  1. 首页

此为餐厅封面界面,点击进入即可跳转到餐厅页面。

public static String getPagerNormal(int total, int pagesize, int pagenum,String pageurl,String info) {

int count = total / pagesize;

if (total % pagesize > 0) {

count++;

}

if(pageurl.indexOf("?")>-1){

pageurl = pageurl + "&";

}else{

pageurl = pageurl + "?";

}

StringBuffer buf = new StringBuffer();

buf.append(info+"  ");

buf.append(pagenum+"/"+ count +"  ");

if (pagenum == 1) {

// buf.append("<SPAN style='color:#CCCCCC'>【首页】</SPAN><SPAN style='color:#CCCCCC'>【上一页】</SPAN>  ");

} else {

// buf.append("【<a href='" + pageurl + "pagenum=1'>首页</a>】【<a href='" + pageurl + "pagenum=" + (pagenum - 1)

// + "' >上一页</a>】");

}

int bound1 = ((pagenum - 2) <= 0) ? 1 : (pagenum - 2);

int bound2 = ((pagenum + 2) >= count) ? count : (pagenum + 2);

// for (int i = bound1; i <= bound2; i++) {

// if (i == pagenum) {

// buf.append("<SPAN style='color:#FF0000'>" + i

// + "</SPAN>  ");

// } else {

// buf.append("<a href='" + pageurl + "pagenum=" + i + "'>" + i

// + "</a>  ");

// }

// }

if (bound2 < count) {

buf.append("<SPAN>...</SPAN>");

}

if (pagenum == count||count==0) {

// buf.append("<SPAN style='color:#CCCCCC'>【下一页】</SPAN><SPAN style='color:#CCCCCC'>【尾页】</SPAN>");

} else {

// buf.append("【<a href='" + pageurl + "pagenum=" + (pagenum + 1)

// + "'>下一页</a>】【<a href='" + pageurl + "pagenum=" + count

// + "'>尾页</a>】");

}

return buf.toString();

}

}

  1. 管理页面

这是餐厅管理界面包括用户的信息,包括查找和删除方法。

public void insertBean(User bean){

Connection conn = null;

PreparedStatement ps = null;

try{

String sql = "insert into t_User(username,password,xingming,role,dianhua,dizhi) values(?,?,?,?,?,?)";

conn = DBConn.getConn();

ps = conn.prepareStatement(sql);

ps.setString(1, bean.getUsername());

ps.setString(2, bean.getPassword());

ps.setString(3, bean.getXingming());

ps.setInt(4, bean.getRole());

ps.setString(5, bean.getDianhua());

ps.setString(6, bean.getDizhi());

ps.executeUpdate();

}catch(Exception e){

e.printStackTrace();

}finally{

DBConn.close(conn, ps, null);

}

}

//更新记录

public void updateBean(User bean){

Connection conn = null;

PreparedStatement ps = null;

try{

String sql = "update  t_User set username=?,password=?,xingming=?,role=?,dianhua=?,dizhi=? where id= "+bean.getId();

conn = DBConn.getConn();

ps = conn.prepareStatement(sql);

ps.setString(1, bean.getUsername());

ps.setString(2, bean.getPassword());

ps.setString(3, bean.getXingming());

ps.setInt(4, bean.getRole());

ps.setString(5, bean.getDianhua());

ps.setString(6, bean.getDizhi());

ps.executeUpdate();

}catch(Exception e){

e.printStackTrace();

}finally{

DBConn.close(conn, ps, null);

}}


这是餐厅分类页面,包括上传图片、查找和删除的方法。

public void insertBean(Product bean){

Connection conn = null;

PreparedStatement ps = null;

try{

String sql = "insert into t_Product(pname,imgpath,createtime,fenleiid,fname,jiage,tuijian,dianjishu,xiaoliang,miaoshu) " +

"values(?,?,?,?,?,?,?,?,?,?)";

conn = DBConn.getConn();

ps = conn.prepareStatement(sql);

ps.setString(1, bean.getPname());

ps.setString(2, bean.getImgpath());

ps.setString(3, bean.getCreatetime());

ps.setString(4, bean.getFenleiid());

ps.setString(5, bean.getFname());

ps.setDouble(6, bean.getJiage());

ps.setString(7, bean.getTuijian());

ps.setInt(8, bean.getDianjishu());

ps.setInt(9, bean.getXiaoliang());

ps.setString(10, bean.getMiaoshu());

ps.executeUpdate();

}catch(Exception e){

e.printStackTrace();

}finally{

DBConn.close(conn, ps, null);

}

}

//更新记录

public void updateBean(Product bean){

Connection conn = null;

PreparedStatement ps = null;

try{

String sql = "update  t_Product set pname=?,imgpath=?,createtime=?,fenleiid=?,fname=?,jiage=?,tuijian=?,dianjishu=?,xiaoliang=?,miaoshu=? where id= "+bean.getId();

conn = DBConn.getConn();

ps = conn.prepareStatement(sql);

ps.setString(1, bean.getPname());

ps.setString(2, bean.getImgpath());

ps.setString(3, bean.getCreatetime());

ps.setString(4, bean.getFenleiid());

ps.setString(5, bean.getFname());

ps.setDouble(6, bean.getJiage());

ps.setString(7, bean.getTuijian());

ps.setInt(8, bean.getDianjishu());

ps.setInt(9, bean.getXiaoliang());

ps.setString(10, bean.getMiaoshu());

ps.executeUpdate();

}catch(Exception e){

e.printStackTrace();

}finally{

DBConn.close(conn, ps, null);

}

}

  1.  餐厅页面

餐厅主页面展示了餐厅的各种重要信息,页面的顶部将显示一个导航栏,方便用户快速访问不同的页面。

在页面的中心位置,将会有一个明显的区域用于展示餐厅的类别。这里将列出餐厅所提供的各种菜品类型,如中餐、西餐等。

public class Product {

private int id;//主键

private String pname;//餐厅名称

private String imgpath;//餐厅图片

private String createtime;//上架时间

private String fenleiid;//分类ID,外键

private String fname;//分类名

private double jiage;//餐厅价格

private String tuijian;//是否查看  未查看 已推荐

private int dianjishu;//餐厅点击数

private int xiaoliang;//处理数

private String miaoshu;//餐厅介绍

public int getId() {

return id;

}

  1. 登录与退出

这是一个登录界面,它提供了用户登录的功能。通过输入正确的用户名和密码,用户可以成功登录并进入餐厅管理界面。

在 Java 中,我们可以使用UI 框架来创建这样的登录界面。

//用户登录

if("login".equals(method)){

//从jsp页面获取用户名和密码

String username =  request.getParameter("username");

String password =  request.getParameter("password");

//查询用户名和密码是否匹配

User bean = userDao.selectBean(" where username='"+username+"' and password ='"+password+"' and role=1 ");

if(bean!=null){

HttpSession session = request.getSession();

session.setAttribute("manage", bean);

writer.print("<script language='javascript'>alert('登录成功');window.location.href='"+basePath+"manage/index.jsp'; </script>");

}else{

writer.print("<script  language='javascript'>alert('用户名或者密码错误');window.location.href='"+basePath+"manage/login.jsp';</script>");

}

}

//退出操作

 else if("loginout".equals(method)){

 HttpSession session  =request.getSession();

 session.removeAttribute("manage");

 writer.print("<script  language='javascript'>alert('退出成功');window.location.href='"+basePath+"manage/login.jsp';</script>");

}

//跳转到修改密码页面

else if("passwordupdate".equals(method)){

request.setAttribute("biaoti", "修改密码");

request.setAttribute("url", "manageServlet/passwordupdate2");

RequestDispatcher dispatcher = request.getRequestDispatcher("/manage/passwordupdate.jsp");

dispatcher.forward(request, response);

}

//修改密码操作

else if("passwordupdate2".equals(method)){

//从JSP获取信息

String password1 = request.getParameter("password1");

String password2 = request.getParameter("password2");

HttpSession session = request.getSession();

User user = (User)session.getAttribute("manage");

User u = userDao.selectBean(" where username='"+user.getUsername()+"' and password='"+password1+"'  ");

if(u!=null){

u.setPassword(password2);

userDao.updateBean(u);

writer.print("<script  language='javascript'>alert('操作成功');window.location.href='"+basePath+"manageServlet/passwordupdate'; </script>");

}else{

writer.print("<script  language='javascript'>alert('操作失败,原密码错误!');window.location.href='"+basePath+"manageServlet/passwordupdate'; </script>");

}

  • 总结归纳

基于 Java Web 的餐厅管理系统是一个功能齐全、易于使用的解决方案总的来说,基于 Java Web 的餐厅管理系统提高了餐厅的运营效率和管理水平,为顾客提供了更好的服务体验。

1. 技术选择:JavaWeb 学习过程中 我们主要使用的技术是Java Servlet Tomcat JSP EL表达式等,使开发过程更加高效和规范化。

2. 数据库设计:系统使用 MySQL 数据库进行数据存储,数据表设计合理,符合第三范式,保证了数据的完整性和一致性。

3. 界面设计:系统的界面设计简洁、美观,用户操作方便,提高了用户体验。

4. 安全性设计:系统采用了权限控制和密码加密等安全性措施,保证了系统的安全性。

  • 不足

1. 性能问题:在高并发情况下,系统的响应速度可能会受到影响,需要进一步优化数据库查询和页面渲染。

2. 移动端适配:系统目前主要针对桌面浏览器进行设计,在移动端的适配性方面还有待改进。

3. 数据备份与恢复:系统缺乏完善的数据备份与恢复功能,需要进一步加强以防止数据丢失。

4. 用户体验:尽管界面设计简洁,但在一些用户交互细节上还可以进一步优化,提升用户体验。

综上所述,基于 Java Web 的餐厅管理系统在功能实现和技术运用上相对成熟,但在性能、移动端适配、数据备份以及用户体验等方面仍有提升的空间。通过持续改进和优化,该系统可以更好地满足餐厅管理的实际需求。

完整源码:

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

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

相关文章

[log4cplus]: 快速搭建分布式日志系统

关键词: 日志系统 、日志分类、自动分文件夹、按时间(月/周/日/小时/分)轮替 一、引言 这里我默认看此文的我的朋友们都已经具备一定的基础,所以,我们本篇不打算讲关于log4cplus的基础内容,文中如果涉及到没有吃透的点,需要朋友们动动自己聪明的脑袋和发财的手指,进一…

C++进阶中多态的全部主要内容

今天小编和大家一起学习C中多态的全部主要内容&#xff0c;希望今天大家和小编一起学习之后&#xff0c;会对多态有一个初步的了解和使用&#xff0c;好啦&#xff0c;话不多说&#xff0c;开始学习&#xff01;~~~ 一、多态的概念及满足条件 概念&#xff1a;指的就是不同的对…

NC单链表的排序

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 给定一个节点…

九、OpenCVSharp 中的图像形态学操作

文章目录 简介一、腐蚀1. 腐蚀的原理和数学定义2. 结构元素的形状和大小选择3. 腐蚀操作的代码实现和效果展示二、膨胀1. 膨胀的概念和作用2. 与腐蚀的对比和组合使用(如开运算、闭运算)三、开运算1. 开运算的定义和用途(去除小的明亮区域)2. 开运算在去除噪声和分离物体方…

鸿蒙(API 12 Beta3版)【扩展屏投播开发指导】使用投播组件

通过本节开发指导&#xff0c;可在系统镜像投屏后&#xff0c;获取投屏设备信息&#xff0c;实现扩展屏模式的投播&#xff0c;实现双屏协作的能力。 运作机制 虚拟扩展屏 是在系统投屏启动过程中建立的&#xff0c;依据双端协商的投屏视频流的分辨率创建&#xff0c;支持1080…

OpenHarmony图像解码库—stb-image【GN编译】

简介 stb_image主要是C/C实现的图像解码库。 下载安装 直接在OpenHarmony-SIG仓中搜索stb-image并下载。 使用说明 以OpenHarmony 3.1 Beta的rk3568版本为例 库代码存放路径&#xff1a;./third_party/stb-image 修改添加依赖的编译脚本&#xff0c;路径&#xff1a;/devel…

哈希 | Java | (hot100) 力扣 49

我的想法&#xff1a;双重forhashset 方法一 由于互为字母异位词的两个字符串包含的字母相同&#xff0c;因此对两个字符串分别进行排序之后得到的字符串一定是相同的&#xff0c;故可以将排序之后的字符串作为哈希表的键。 力扣官方 values()方法返回一个包含HashMap中所有…

高性能日志系统 日志器模块

概述 作用&#xff1a;整合输出模块和格式化模块&#xff0c;创建日志器&#xff0c;通过该日志器对日志进行输出成员 格式化模块对象管理输出模块对象管理&#xff0c;数组管理&#xff08;日志器可能会向多个位置进行日志输出&#xff09;默认日志输出限制等级&#xff0c;只…

springboot智能城市交通管理系统-计算机毕业设计源码55174

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能…

React + React-tsparticles + Tsparticles完成炫酷的登录特效

效果(动态) npm i react-tsparticles2.12.2 npm i tsparticles2.12.0 注意:最好和上面的版本一样,不然会出现一个报错,具体如何解决的话去官网吧,上面的版本是没有问题的 代码块 总计6个代码块, options里面是相关粒子的配置 完整代码 import ./index.sass import { Form, Inp…

5个人共享一台高配工作站流程运行SW UG等软件大装配设计

如何实现5个人共享一台高配工作站流程运行SW UG等软件大装配设计&#xff1f; 一、前期准备 硬件准备&#xff1a; 选购一台高性能的服务器作为云主机&#xff0c;确保服务器具备足够的计算能力、内存和存储空间以支持多用户并发使用。云主机需要结合企业具体的使用情况和人数…

基于vue框架的哀牢犁耙会助农系统r4347(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,商品分类,商品信息 开题报告内容 基于Vue框架的哀牢犁耙会助农系统 开题报告 一、研究背景与意义 1.1 研究背景 随着科技的飞速发展&#xff0c;农业现代化已成为全球农业发展的重要趋势。传统的农业生产方式已难以满足现代农…

windows使用vscode和cmake编译报错error C2001: 常量中有换行符

报错图&#xff1a; 解决方法&#xff1a;修改通过编码保存的格式为GBK

微信小程序--23(条件渲染)

一、wx&#xff1a;if 1.作用 来判断是否需要渲染 2.语句 wx&#xff1a;if “{{condition}}”来判断是否需要渲染该代码块 wx&#xff1a;elifwx&#xff1a;else 用来添加else判断 3.演示 二、<block> wx&#xff1a;if 1.作用 <block>标签&#xff1a;…

4章7节:用R做数据重塑,数据去重和数据的匹配

在数据科学的分析流程中&#xff0c;数据重塑是一项非常重要的操作。数据的重塑通常指将数据从一种形式转换为另一种形式&#xff0c;以满足后续分析的需求。R语言提供了丰富的工具和函数来帮助用户高效地进行数据重塑操作。本文中&#xff0c;我们将深入探讨数据重塑的概念及其…

假如你正在备考六西格玛黑带,请看我的推文

众所周知&#xff0c;红宝书是备考六西格玛黑带的经典教材之一。那么&#xff0c;如何用红宝书高效备考六西格玛黑带呢&#xff1f;天行健六西格玛培训讲师总结如下&#xff1a; 1. 熟悉六西格玛概念&#xff1a;首先&#xff0c;你需要对六西格玛的基本概念有一个清晰的了解。…

智启万象|挖掘广告变现潜力,保障支付安全便捷

谷歌致力于为开发者提供 先进的广告变现与支付解决方案 一起回顾 2024 Google 开发者大会 了解如何利用谷歌最新工具和功能 提高变现收入&#xff0c;优化用户体验&#xff0c;保障交易安全 让变现更上一层楼 广告检查器是谷歌 AdMob 平台最新推出的高级测试工具&#xff0c;开…

mitmproxy 安装配置

下载地址&#xff1a; mitmproxy - an interactive HTTPS proxy 安装好之后&#xff0c;配置环境变量 我的电脑--右键---属性-----高级系统设置----环境变量-----path----编辑---将安装目录地址复制过来&#xff08;到 bin &#xff09; 查看版本&#xff1a;cmd----- mitmd…

【C++】——初识模板

目录 一、泛型编程 二、函数模板 2.1 定义 2.2 格式 2.3 生成原理 2.4 实例化 2.4.1 隐式实例化 2.4.2 显式实例化 2.5 匹配原则 三、类模板 3.1 定义格式 3.2 实例化 一、泛型编程 什么是泛型编程&#xff0c;大家可思考这个问题&#xff1a;swap函数大家都会实现&#x…

利用ZXing.Net Bindings for EmguCV识别条形码及绘制条形码边框17(C#)

上一篇博文&#xff1a;绘制条形码的效果不是很好&#xff1a;利用Emgucv绘制条形码边框16(C#)-CSDN博客 测试环境&#xff1a; win11 64位操作系统 visual studio 2022 ZXing.Net.Bindings.EmguCV 0.16.4 测试步骤如下&#xff1a; 1 新建.net framework 4.8的控制台项目…