100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 基于vue+Java实现的餐厅订餐点餐管理系统

基于vue+Java实现的餐厅订餐点餐管理系统

时间:2020-09-03 03:08:34

相关推荐

基于vue+Java实现的餐厅订餐点餐管理系统

目录

一、 需求分析 1

需求描述 1数据流图 2数据元素表 3

二、 数据库概念模式设计 5系统初步E-R图 5系统基本E-R图 7

三、 数据库逻辑模式设计 8数据库关系模式 8

(1)实体 8

(2)实体间联系 8关系模式范式等级的判定与规范化 8

(1) 函数依赖分析 8

(2) 范式等级判定与规范化 10数据库设计优化 10

四、系统结构设计 11体系结构 11功能结构 11

五、数据库基本表的定义 13

六、系统重要功能实现方法 15用户管理 15管理端 16顾客端 19

七、系统实现结果 22用户管理(DBMS)功能 22顾客功能 23管理员功能 26

总结 34

一、需求分析

1.需求描述

在这次大作业的设计过程中,我们计划实现一个餐厅订餐系统,其内部存储了如食品、套餐、订单等和顾客点餐的相关信息,以及部分独属于餐厅本身的信息,如员工、餐厅地址等。使用这个系统,顾客可以根据餐厅提供的菜品随时下单,也可以对每次的订单进行反馈;而数据库管理员则可以通过增删查改等操作完成对整个系统的维护。

我们对整个餐厅订餐系统进行如下描述:

系统内包括若干餐厅,每个餐厅有若干员工在职。系统中有若干顾客账号,每个顾客账号可以有多个取餐信息。每个顾客账号都可以提交多个订单,每个订单都需要唯一的对应一个餐厅,订单内容可以有食品或套餐,其中每个套餐都由若干食品组成。在提交订单后,顾客账户可以对某个订单进行评价反馈。

根据以上描述,我们可以明确,本系统的主要设计目标是给顾客提供一个高效的下单系统,同时给餐厅提供数据库管理系统。进而,我们可以相应的进行功能设计,主要功能如下:

(1)用户管理:整个系统存在管理员、顾客两种用户,管理员的用户信息在系统初始化时已经存储在数据库中,而顾客用户则需要进行注册。

(2)数据管理:餐厅、员工、食品、套餐等系统“静态”信息的管理全部由管理员进行实现,而订单、评价反馈、取餐信息等顾客相关信息则由顾客用户“动态”的进行增删改等操作。

(3)数据查询:对于数据库管理员,系统中的所有数据均可以进行查询,而对于顾客,除了系统中的“静态”信息外,只有属于自己用户的信息才可以查询。

根据以上功能设计,本系统的管理员可以查询系统内的全部数据并对所有“静态”数据进行增删改,而顾客用户则可以查询系统内的“静态”数据以及属于本用户的全部数据,同时可以对属于本用户的数据进行增删改操作。

三、数据库逻辑模式设计

1.数据库关系模式

根据E-R图向关系模式的转换规则,我们可以将上文中得到的系统基本E-R图转化为如下关系模式:

(1)实体

餐厅(餐厅编号,地点,容纳人数,餐厅电话)

员工(员工编号,姓名,年龄,职位,薪资)

顾客(顾客编号,姓名)

订单(订单编号,下单时间,订单金额)

食品(食品编号,名称,售价)

套餐(套餐编号,名称,售价)

评价反馈(反馈编号,反馈内容,反馈时间)

取餐信息(取餐信息编号,联系人,联系电话,地址)

(2)实体间联系

员工入职记录(员工编号,餐厅编号,入职时间,职位,离职时间)

顾客取餐信息(顾客编号,取餐信息编号)

订单取餐信息(订单编号,取餐信息编号)

订单餐厅(餐厅编号,订单编号)

食品订单(订单编号,食品编号)

套餐订单(订单编号,套餐编号)

顾客评价反馈(反馈编号,订单编号,顾客编号)

组成套餐(套餐编号,食品编号,食品数量)

注:关系模式中含有下划线的属性组为主码。

2.关系模式范式等级的判定与规范化

(1)函数依赖分析

餐厅表:

候选码:餐厅编号,地点

函数依赖:餐厅编号容纳人数,餐厅编号地点,餐厅编号餐厅电话,地点餐厅编号

员工表:

候选码:员工编号

函数依赖:员工编号姓名,员工编号年龄,员工编号职位,员工编号薪资,职位薪资

顾客表:

候选码:顾客编号

函数依赖:顾客编号姓名

食品表:

候选码:食品编号,名称

函数依赖:食品编号名称,食品编号售价,食品编号数量,名称食品编号

套餐表:

候选码:套餐编号,名称

函数依赖:套餐编号名称,套餐编号售价,名称套餐编号

评价反馈表:

候选码:反馈编号

函数依赖:反馈编号反馈内容,反馈编号反馈时间

取餐信息表:

候选码:取餐信息编号

函数依赖:取餐信息编号联系人,取餐信息编号联系电话,取餐信息编号地址

订单表:

候选码:订单编号

函数依赖:订单编号下单时间,订单编号订单金额

员工入职记录表:

候选码:(员工编号,餐厅编号,入职时间)

函数依赖:(员工编号,餐厅编号,入职时间) 职位,(员工编号,餐厅编号,入职时间) 离职时间

顾客取餐信息表:

候选码:(顾客编号,取餐信息编号)

函数依赖:无

订单取餐信息表:

候选码:(订单编号,取餐信息编号)

函数依赖:无

订单餐厅表:

候选码:(订单编号,餐厅编号)

函数依赖:无

食品订单表:

候选码:(订单编号,食品编号)

函数依赖:无

套餐订单表:

候选码:(套餐编号,食品编号)

函数依赖:无

顾客评价反馈表:

候选码:(反馈编号,订单编号,顾客编号)

函数依赖:无

组成套餐表:

候选码:(套餐编号,食品编号)

函数依赖:(套餐编号,食品编号) 食品数量

(2)范式等级判定与规范化

根据上述函数依赖关系,我们不难发现,所有关系模式中的每个非主属性都完全依赖于码,因此以上关系模式属于2NF。

对于员工表,我们发现它的码“员工编号”到属性“薪资”的函数依赖关系为传递依赖(存在函数依赖:“员工编号职位”和“职位薪资”),因此上述关系模式不属于3NF。

为了将关系模式规范到3NF,我们使用投影分解的方法将员工表分解为如下两个表:

员工(员工编号,姓名,年龄,职位)

职位表(职位,薪资)

经过进一步函数依赖分析,我们可以发现,规范化后的关系模式达到了3NF的标准。

本文来转载自:http://www.biyezuopin.vip/onews.asp?id=16535

<template><div id="registerBackground"><div class="front"><h1 class="centerAlign">买当劳™订餐系统</h1><div class="radio">选择您的身份:<el-radio-group v-model="userType"><el-radio :label="1">顾客</el-radio><!--<el-radio :label="2">员工</el-radio>--><el-radio :label="2">管理员</el-radio></el-radio-group></div><el-input v-model="userName" placeholder="输入您的用户名" class="myInput"></el-input><el-input v-model="userPassword" placeholder="输入您的密码" show-password class="myInput"></el-input><el-button id="loginButton" v-on:click="login(userType, userName, userPassword)" type="primary">登录</el-button><el-button id="registerButton" v-on:click="jumpToRegister">注册</el-button></div></div></template><script>export default {name: "Login",data() {return {userName: '',userPassword: '',userType: 1 //1:顾客,2:管理员}},methods: {login(userType, userName, userPassword) {if (userName === '' || userPassword === '') {this.$message.error('请完整填写信息');}else {axios.post('http://localhost:8080/login',{'userType': userType.toString(),'username': userName,'password': userPassword}).then((response) => {if (response.data === 1) {if (userType === 1) {//顾客window.location = '/customer';}else if (userType === 2) {//管理员window.location = '/administrator'}}else if (response.data === -1) {//密码错误this.$message.error('密码错误')}else {this.$message.error('用户不存在');}})}},jumpToRegister() {window.location = '/register';}}}</script><style>#registerBackground {background: url("../images/seaside_background.png");width: 100%;height: 100%;position: fixed;background-size: 100% 100%;}.front {position: absolute;background: rgba(255, 255, 255, 0.8);top: 50%;left: 50%;transform: translate(-50%, -50%);padding: 10px 15px 10px;border-radius: 10px;}#loginButton {margin-top: 10px;position: relative;left: 150px;}#registerButton {margin: 10px;position: relative;right: 150px;}.centerAlign {text-align: center;}.radio {padding-left: 15px;}.myInput {margin-top: 10px;width: 400px;}.sureButton {margin-top: 10px;position: relative;left: 50%;transform: translate(-50%);}</style>/*.background {*//* border: 0;*//* margin: 0;*//* padding: 0;*//* background: url("../images/seaside_background.png");*//* width: 100%;*//* height: 100%; !**宽高100%是为了图片铺满屏幕 *!*//* background-size: 100% 100%;*//* z-index: -1;*//* position: fixed;*//*}*/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。