0
点赞
收藏
分享

微信扫一扫

OPC DAY-上海场提前预告:Softing带您探索“智能工厂中的OPC应用”

飞空之羽 2024-08-14 阅读 4

目录

一、 系统简介

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

完整源码:

举报

相关推荐

0 条评论