基于Java+SpringBoot+MySQL的校园餐厅点餐系统设计与实现

目 录
1 概述 1
1.1课题背景及意义 1
1.2 国内外研究现状 1
1.3 本课题主要工作 2
2 系统开发环境 3
2.1 java简介 3
2.2 Mysql数据库 3
2.3 B/S结构 4
2.4 JSP技术介绍 4
3 系统分析 5
3.1 可行性分析 5
3.1.1 技术可行性 5
3.1.2操作可行性 5
3.1.3 经济可行性 5
3.1.4 法律可行性 6
3.2系统流程分析 6
3.2.1系统开发流程 6
3.2.2 用户登录流程 7
3.2.3 系统操作流程 7
3.2.4 添加信息流程 8
3.2.5 修改信息流程 9
3.2.6 删除信息流程 9
3.3系统用例分析 10
3.3.1管理员用例图 10
3.3.2用户用例图 10
4 系统设计 11
4.1 系统概述 11
4.2 系统结构设计 12
4.3数据库设计 13
4.3.1 数据库设计原则 13
4.3.2 数据库实体 13
4.3.3 数据库表设计 14
5统详细设计 17
5.1前台首页功能模块 17
5.2管理员功能模块 18
5.3食堂功能模块 21
5.4用户功能模块 21
6系统测试 23
6.1系统测试的意义 23
6.2 测试方法 24
6.3测试分析 24
结 论 26
致 谢 27
参考文献 28
一些发达国家,网络发展比较快,已经很大程度上完成了从人工到计算机管理的转变。我国计算机应用起步比较晚,而且发展区域不平衡,还有很多用户或学校使用传统的方式进行管理,但是目前计算机发展较快,包括网络也已经普及,很多学校和用户也开始慢慢接触网络管理系统。纵观这些系统主要有以下几个特点:
(1)先进性:实现网络化管理。
(2)通用性:同一行业基本都能使用。
(3)方便性:通过网络就能完成管理工作。
(4)及时性:信息更新及时。
(5)可扩展性:可根据需要进行模块的增加。
(6)安全性:对食堂、用户等信息进行加密。
截至如今,互联网已经深入人们的生活,智能手机、笔记本电脑等已经是人们获取信息的主要工具,这是一个沟通无限的时代,因此,利用网络来进行在线高校校园点餐系统的管理也成为大势所趋,所以,开发一个高校校园点餐系统是必须的。
1.3 本课题主要工作
一开始,本文就对系统内谈到的基本知识,从整体上进行了描述,并在此基础上进行了系统分析。为了能够使本系统较好、较为完善的被设计实现出来,就必须先进行分析调查。基于之前相关的基础,在功能上,对新系统进行了细致的分析。然后通过详细的分析,进行系统设计,其次,系统在实施的可行性上,我选择了JSP技术来进行开发设计,在数据存储上,采用 Mysql数据库来进行设计。由于java语言和Mysql都已经非常成熟,因此无论在各个方面,都非常可靠安全实用。最后对系统进行测试完善并发布。

<!-- 首页 -->
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
		<title>首页</title>
		<link rel="stylesheet" href="./layui/css/layui.css">
		<link rel="stylesheet" href="./xznstatic/css/common.css"/>
		<link rel="stylesheet" href="./xznstatic/css/style.css"/>
	</head>
	<style type="text/css">
		html, body {
			height: 100%;
		}
		#iframe {
			width: 100%;
			margin-top: 00px;
			padding-top: 70px;
		}
		#header {
			height: auto;
			background: #fff;
			border-bottom: 0;
			position: fixed;
			top: 0;
			left: 0;
			width: 100%;
		}

		#header .nav-top {
			display: flex;
			align-items: center;
			padding: 0 20px;
			font-size: 16px;
			color: #2a8a15;
			box-sizing: border-box;
			height: 00px;
			background-color: rgba(46, 78, 126, 1);
			box-shadow: 0 10px 8px #fff143;
			justify-content: space-between;
			position: relative;
		}

		#header .nav-top-img {
			width: 124px;
			height: 40px;
			padding: 0;
			margin: 0;
			border-radius: 6px;
			border-width: 0;
			border-style: solid;
			border-color: rgba(0,0,0,.3);
			box-shadow: 0 0 6px rgba(0,0,0,.3);
		}

		#header .nav-top-title {
			line-height: 40px;
			font-size: 30px;
			color: rgba(255, 251, 240, 1);
			padding: 0 10px;
			margin: 0 10px;
			border-radius: 6px;
			border-width: 0;
			border-style: solid;
			border-color: rgba(0,0,0,.3);
			box-shadow: 0 0 0px ;
		}

		#header .nav-top-tel {
			line-height: 40px;
			font-size: 18px;
			color: rgba(240, 252, 255, 1);
			padding: 0 10px;
			margin: 0;
			border-radius: 6px;
			border-width: 0;
			border-style: solid;
			border-color: rgba(0,0,0,.3);
			box-shadow: 0 0 0px ;
		}

		#header .navs {
			display: flex;
			padding: 0 20px;
			align-items: center;
			box-sizing: border-box;
			height: 70px;
			background-color: rgba(0, 85, 119, 1);
			box-shadow: 0 0px 0px rgba(0,0,0,0);
			justify-content: flex-start;
		}
		#header .navs .title {
			width: auto;
			line-height: 40px;
			font-size: 30px;
			color: rgba(255, 255, 255, 1);
			padding: 10px 10px 10px;
			margin: 50px;
			border-radius: 6px;
			border-width: 0;
			border-style: solid;
			border-color: rgba(0,0,0,.3);
			box-shadow: 0 0 6px rgba(0,0,0,0);
		}
		#header .navs li {
			display: inline-block;
			width: auto;
			line-height: 66px;
			padding: 0 10px ;
			margin: 10px ;
			color: rgba(255, 255, 255, 1);
			font-size: 22px;
			border-radius: 4px;
			border-width: 0;
			border-style: solid;
			border-color: rgba(6, 82, 121, 1);
			background-color: rgba(0, 85, 119, 1);
			box-shadow: 1px 0 3px rgba(0, 85, 119, 1);
      text-align: center;
		}
		#header .navs li a{
			color: inherit;
		}
		#header .navs li.current a{
			color: inherit;
		}
		#header .navs li a:hover{
			color: inherit;
		}
		#header .navs li.current {
			color: rgba(255, 255, 255, 1);
			font-size: 22px;
			border-radius: 0px;
			border-width: 0px;
			border-style: solid;
			border-color: rgba(255, 255, 255, 1);
			background-color: rgba(0, 85, 119, 1);
			box-shadow:  0px 3px  0px #ffffff;
		}
		#header .navs li:hover {
			color: #fff;
			font-size: 22px;
			border-radius: 0px;
			border-width: 0;
			border-style: solid;
			border-color: rgba(255, 255, 255, 1);
			background-color: rgba(0, 85, 119, 1);
			box-shadow:  0px 3px  0px #ffffff;
		}
	</style>
	<body>
		<!-- start 顶部导航栏 -->
		<div id="header">
			<div v-if='true' class="nav-top">
			  <img v-if='false' class="nav-top-img" src='https://www.baidu.com/img/flexible/logo/pc/result@2.png'>
			  <div v-if="false" class="nav-top-title">{{projectName}}</div>
			  <div class="nav-top-tel"></div>
			</div>
		    <div class="navs">
		    	<!-- <div class="logo" style="font-size: 20px;top: 32px;color: #fff;font-weight: bold;margin-left: -200px;width: 240px;" v-text="projectName"></div> -->
				<div class="title" v-if="true" v-text="projectName"></div>
				<div class="list">
					<ul>
						<li class='current'><a href="javascript:navPage('./pages/home/home.html')" class="menumain"><i v-if="false" class="layui-icon layui-icon-home"></i>首页</a></li>
						<li v-for="(item,index) in indexNav" v-bind:key="index"><a :href="'javascript:navPage(\''+item.url+'\')'" class="menumain" style="cursor: pointer;"><i v-if="false" class="layui-icon" :class="iconArr[index]"></i>{{item.name}}</a></li>
						<li><a href="javascript:centerPage();" class="menumain"><i v-if="false" class="layui-icon layui-icon-username"></i>个人中心</a></li>
						<li><a :href="adminurl" target="_blank" class="menumain" style="cursor: pointer;"><i v-if="false" class="layui-icon layui-icon-link"></i>后台管理</a></li>
						<li v-if="cartFlag"><a href="javascript:navPage('./pages/shop-cart/list.html')" class="menumain"><i v-if="false" class="layui-icon">&#xe657;</i>购物车</a></li>
						<li v-if="chatFlag"><a href="javascript:chatTap()" class="menumain"><i v-if="false" class="layui-icon">&#xe677;</i>客服</a></li>
					</ul>
				</div>
		    </div>
		</div>
		<!-- end 顶部导航栏 -->

		<iframe src="./pages/home/home.html" id="iframe" frameborder="0" scrolling="no" width="100%" οnlοad="changeFrameHeight"></iframe>

    <div id="tabbar" v-if="true" class="tabbar" :style='{"padding":"30px 0","boxShadow":"0 0 6px ","margin":"30px 0 0 0","borderColor":"rgba(255, 255, 255, 0.3)","backgroundColor":"rgba(6, 82, 121, 1)","borderRadius":"0","borderWidth":"0","borderStyle":"solid"}' style="position: relative;z-index: 999;">
      <img v-if='false' :style='{"boxShadow":"0 0 6px rgba(255,0,0,.8)","margin":"0 auto","borderColor":"rgba(0,0,0,.3)","borderRadius":"100%","borderWidth":"1px","width":"44px","borderStyle":"solid","height":"44px"}' style='display: block;' src='http://codegen.caihongy.cn/20201024/ed5e326ca66f403aa3197b5fbb4ec733.jpg' />
      <div :style='{"padding":"0 10px","boxShadow":"0 0 0px 0","margin":"10px auto","borderColor":"rgba(6, 82, 121, 1)","backgroundColor":"rgba(6, 82, 121, 1)","color":"#fff","textAlign":"center","borderRadius":"0","borderWidth":"0","width":"100%","lineHeight":"32px","fontSize":"14px","borderStyle":"solid"}' class="company">京ICP备1041289号 </div>
      <div :style='{"padding":"0 10px","boxShadow":"0 0 6px rgba(255,0,0,0)","margin":"10px auto","borderColor":"rgba(0,0,0,1)","backgroundColor":"#000","color":"#fff","textAlign":"center","borderRadius":"0","borderWidth":"0","width":"100%","lineHeight":"32px","fontSize":"14px","borderStyle":"solid"}' class="record"></div>
      <div :style='{"padding":"0 10px","boxShadow":"0 0 0px ","margin":"10px auto 30px auto","borderColor":"rgba(6, 82, 121, 1)","backgroundColor":"rgba(6, 82, 121, 1)","color":"#fff","textAlign":"center","borderRadius":"0","borderWidth":"1px 0","width":"40%","lineHeight":"32px","fontSize":"14px","borderStyle":"solid"}' class="desc"></div>
    </div>

		<script src="./xznstatic/js/jquery-1.11.3.min.js"></script>
		<script src="./layui/layui.js"></script>
		<script src="./js/vue.js"></script>
		<script src="./js/config.js"></script>

		<script>
      var vue1 = new Vue({el: '#tabbar'})

			var vue = new Vue({
				el: '#header',
				data: {
					iconArr: ['layui-icon-gift','layui-icon-email','layui-icon-logout','layui-icon-transfer','layui-icon-slider','layui-icon-print','layui-icon-cols','layui-icon-snowflake','layui-icon-note','layui-icon-flag','layui-icon-theme','layui-icon-website','layui-icon-console','layui-icon-face-surprised','layui-icon-template-1','layui-icon-app','layui-icon-read','layui-icon-component','layui-icon-file-b','layui-icon-unlink','layui-icon-tabs','layui-icon-form','layui-icon-chat'],
					indexNav: indexNav,
					cartFlag: cartFlag,
					adminurl: adminurl,
					chatFlag: chatFlag,
					projectName: projectName,
				},
				mounted: function() {
					this.bindClickOnLi();
				},
				created() {
					this.iconArr.sort(()=>{
					  return (0.5-Math.random())
					})
				},
				methods: {
					jump(url) {
						jump(url)
					},
					bindClickOnLi() {
						let list = document.getElementsByTagName("li");
						for(var i = 0;i<list.length;i++){
							list[i].onclick = function(){
								$(this).addClass("current").siblings().removeClass("current");
							}
						}
					}
				}
			});

			layui.use(['element','layer'], function() {
				var element = layui.element;
				var layer = layui.layer;
			});

			function chatTap(){
				var userTable = localStorage.getItem('userTable');
				if (userTable) {
					layui.layer.open({
						type: 2,
						title: '客服',
						area: ['600px', '600px'],
						content: './pages/chat/chat.html'
					});
				} else {
					window.location.href = './pages/login/login.html'
				}
			}

			// 导航栏跳转
			function navPage(url) {
				localStorage.setItem('iframeUrl', url);
				document.getElementById('iframe').src = url;
			}

			// 跳转到个人中心也
			function centerPage() {
				var userTable = localStorage.getItem('userTable');
				if (userTable) {
					localStorage.setItem('iframeUrl', './pages/' + userTable + '/center.html');
					document.getElementById('iframe').src = './pages/' + userTable + '/center.html';
				} else {
					window.location.href = './pages/login/login.html'
				}
			}

			var iframeUrl = localStorage.getItem('iframeUrl');
			document.getElementById('iframe').src = iframeUrl  || './pages/home/home.html';

      // var i = 0;
      setInterval(function(){
        // i++;
        // if(i<50) changeFrameHeight();
        changeFrameHeight();
      },200)

      function changeFrameHeight() {
        var iframe = document.getElementById('iframe');
        // iframe.height = 'auto';
          if (iframe) {
              var iframeWin = iframe.contentWindow || iframe.contentDocument.parentWindow;
              if (iframeWin.document.body) {
                  iframe.height = iframeWin.document.body.scrollHeight;
              }
          }
      };

			//  窗口变化时候iframe自适应
			// function changeFrameHeight() {
				// var header = document.getElementById('header').scrollHeight;
    //     let isshow = true
    //     var tabbar = 0
    //     if(isshow) {
    //       tabbar = document.getElementById('tabbar').scrollHeight
    //     }
				// var ifm = document.getElementById("iframe");
				// ifm.height = document.documentElement.clientHeight - header - tabbar;
				// ifm.width = document.documentElement.clientWidth;
			// }

			// reasize 事件 窗口大小变化后执行的方法
			window.onresize = function() {
				changeFrameHeight();
			}
		</script>
	</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
一、需求分析 随着社会服务行业的发展,餐饮业对自身服务的质量和能力也有了更高的要求。餐饮管理系统正是在这样的情况之下越来越受到重视。餐厅的内部服务项目众多,既需要完成前台的服务工作,还需要完成后台的管理工作,如果没有一套可靠的餐饮管理系统,单凭手工操作,不仅效率低,而且会极大地影响到酒店的服务质量。 设计的目标:实现餐饮管理的科学化、自动化,提高各个模版的办公效率,为高质量的餐饮服务提供保证。 系统功能概述 民以食为天,随着人民生活水平的提高,餐饮业在服务行业中占有越来越重要的地位。经过多年发展,餐饮管理已经逐渐由定性管理,进入到重视定量管理的科学阶段。众所周知,在定量管理的具体实现方法和手段方面,最有效的工具就是计算机管理。 传统的手工操作管理存在着许多无法避免的问题,例如: 人工计算机账单金额出现差错; 收银工作中跑单、漏单、偷钱现象普遍; 个别服务员作弊、改单、宰客情形时有发生; 客人消费单据难以保存和查询。 如果借助计算机来管理,就可以轻松的解决处理这些问题。一个餐饮管理信息系统应该包括基本的餐厅的服务管理、管理人员信息的维护等,以及与之相应的操作。所以整个餐饮管理信息系统分为两个大部分,即后台的数据管理维护和前台的操作。后台数据库的管理能保证系统各项功能正常运行,前台操作能提供给客户尽可能方便快捷的服务。 功能模块划分 1. 前台操作系统 订餐管理模块:点菜(输入桌台代码和食物代码)、加菜、下单。 结账管理模块:结账(输入桌台代码)、结账方式选择(包括现金结账、信用卡结账、支票结账、签单等)。 交班管理模块:统计当班数据(包括桌台数、人民币结账金额以及总金额等),为下班操作作准备。 2. 后台管理维护系统 用户权限设置:可以查询员工的基本资料(姓名、性别、年龄、出生年月、籍贯、家庭住址等),员工登录名称、密码、员工操作权限等,可以根据需要进行设置。 菜谱设置:新菜单录入(包括菜式名称、代码、类型、价格、成本等)、菜式修改、删除等菜式维护。 付款方式设置:分为人民币付款、信用卡、支票签单等,可以根据需要进行添加和删除。 系统流程分析 系统流程图1所示。当用户进入系统主界面以后,新用户经过注册后才能凭借其用户名和密码登录,老用户可以直接登录。用户登录以后,系统自动判断出其操作权限。操作权限包括普通员工和管理人员。新用户的操作权限默认为是普通员工。普通员工只能进行订餐、结账操作,而管理人员除此之外还可以进行系统设置与营业分析。
餐厅点餐系统是一个基于JavaMySQL开发的应用程序,旨在帮助餐厅更高效地进行点餐和订单管理。系统的设计包括前台点餐、后台订单管理和数据存储三个主要模块。 前台点餐模块是系统的核心功能,它包括菜单展示、菜品选择、数量确认和订单生成等功能。通过用户友好的界面设计和快速响应的操作,顾客可以方便地浏览菜单、选择喜欢的菜品并生成订单。同时,系统可以实时更新菜品库存和价格信息,确保点餐的准确性和实时性。 后台订单管理模块是为餐厅管理人员设计的工具。它包括订单接收、处理和结算等功能。当顾客提交订单后,系统会自动发送订单信息到后台管理系统,管理人员可以对订单进行确认和处理,包括指派厨师制作菜品、安排服务员上菜等。同时,系统还提供了订单统计、销售分析和财务报表等功能,帮助餐厅管理人员了解经营状况并做出合理决策。 数据存储模块采用MySQL数据库管理系统,用于存储菜品信息、订单信息、员工信息和财务数据等。通过合理的数据库设计和优化的查询操作,系统可以实现快速的数据读写和高效的数据管理,保障系统运行的稳定性和可靠性。 总的来说,基于JavaMySQL餐厅点餐系统不仅在功能上满足了餐厅的需求,而且在性能上也具有良好的表现。它帮助餐厅提高了点餐效率、订单管理和财务分析能力,为餐厅的经营发展提供了有力的支持。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值