餐厅管理系统

目录

一、 系统简介

1.1需求分析

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

完整源码:

  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值