当前位置: 首页 > news >正文

基于微信小程序高校订餐系统的设计与开发ssm+论文源码调试讲解

第4章 系统设计

一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专业。

4.1 设计原则

本系统在设计过程中需要依照一定的设计原则进行,目的就是为了让开发的系统具备高质量,齐全完备的功能,方便简单的操作,如此才可以最大限度的满足使用者的要求。系统设计原则除了基本的易操作原则,安全性原则外,还有准确性原则,实用性原则,可维护性原则。

第一个设计原则:易操作原则,针对本系统设计的功能要完备齐全,编码时,设计的各个接口要具备友好性,使用者一旦使用本系统时,要能够轻松上手,操作本系统处理数据时,要具备便利性。此外,也需要设计一些必要提示,引导使用者操作系统。

第二个设计原则:安全性原则,本系统在登录模块要对各个访问者进行身份验证,系统会通过访问者输入的信息进行判断,使用提前编写的安全验证代码进行数据比对,引导匹配成功的访问者进入指定的操作界面。这样可以避免无关性访问者窃取系统的数据。

第三个设计原则:准确性原则,为了保证使用者登记的数据是正确的,需要提前设计数据纠错机制,让使用者可以通过系统的报错提示,仔细检查登记的错误信息,并及时纠正错误,填写规范正确的信息。比如设置密码时,要求密码的长度不能低于6个字符,且数据类型要求不能全部是数字等都能进行规范。

第四个设计原则:实用性原则,本系统主要用于处理信息,在实际工作中,要帮助使用者完成信息处理任务,同时本系统在面对特殊情况时,也要能够满足信息处理的需要。另外,为了后期便于在本系统中进行功能的扩充,也需要提前预留好空间。

第五个设计原则:可维护性原则,本系统在实际使用期间,难免会遇到一些故障,因此,本系统在应对故障时,要能够进行诊断并弱化故障,可以在短时间内进行自维护。

4.2 功能结构设计

在前面分析的管理员功能的基础上,进行接下来的设计工作,最终展示设计的结构图(见下图)。

4.3 数据库设计

开发一个系统也需要提前设计数据库。这里的数据库是相关数据的集合,存储在一起的这些数据也是按照一定的组织方式进行的。目前,数据库能够服务于多种应用程序,则是源于它存储方式最佳,具备数据冗余率低的优势。虽然数据库为程序提供信息存储服务,但它与程序之间也可以保持较高的独立性。总而言之,数据库经历了很长一段时间的发展,从最初的不为人知,到现在的人尽皆知,其相关技术也越发成熟,同时也拥有着坚实的理论基础。

4.3.1 数据库概念设计

这部分内容需要借助数据库关系图来完成,也需要使用专门绘制数据库关系图的工具,比如Visio工具就可以设计E-R图(数据库关系图)。设计数据库,也需要按照设计的流程进行,首先还是要根据需求完成实体的确定,分析实体具有的特征,还有对实体间的关联关系进行确定。最后才是使用E-R模型的表示方法,绘制本系统的E-R图。不管是使用亿图软件,还是Visio工具,对于E-R模型的表示符号都一样,通常矩形代表实体,实体间存在的关系用菱形符号表示,实体的属性也就是实体的特征用符号椭圆表示。最后使用直线将矩形,菱形和椭圆等符号连接起来。接下来就开始对本系统的E-R图进行绘制。

(1)下图是商品实体和其具备的属性。

 

图4.1 商品实体属性图

(2)下图是用户实体和其具备的属性。

 

图4.2 用户实体属性图

(3)下图是公告信息实体和其具备的属性。

 

图4.3 公告信息实体属性图

(4)下图是购物车实体和其具备的属性。

 

图4.4 购物车实体属性图

(5)下图是商家实体和其具备的属性。

 

图4.5 商家实体属性图

(6)下图是商品评价实体和其具备的属性。

 

图4.6 商品评价实体属性图

(7)下图是商品订单实体和其具备的属性。

 

图4.7 商品订单实体属性图

(8)下图是用户表实体和其具备的属性。

 

图4.8 用户表实体属性图

(9)下图是收货地址实体和其具备的属性。

 

图4.9 收货地址实体属性图

4.3.2数据库物理设计

本数据库是关系型数据库,因此对二维表的结构设计也比较关键。毕竟二维表格模型就是关系型数据库中的关系模型。而一些常用的关系模型中的概念也需要了解,才可以对关系模型进行设计。下面就简单介绍关系,元组,属性,域,关键字等常用概念的含义。

关系:关系就是数据库中的一张数据表,每张数据表都有命名,也就是每个关系也有名字,那就是数据表名;

元组:元组就是数据表中的一行记录;

属性:属性就是数据表中的字段,也就是数据表中的一列;

域:域就是对数据表中属性的取值进行限定;

关键字:关键字就是数据表中的主键;

在了解了表结构设计的常用概念后,接下来就需要使用前面绘制的E-R模型完成表结构的设计工作,并在数据库中创建数据表,并为各个数据表进行命名。以下就对设计的结果通过表格形式进行展示。

表4.1收货地址表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_id

Integer

创建用户

3

address_name

String

收货人

4

address_phone

String

电话

5

address_dizhi

String

地址

6

isdefault_types

Integer

是否默认地址

7

insert_time

Date

添加时间

8

update_time

Date

修改时间

9

create_time

Date

创建时间

表4.2商品表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

shangjia_id

Integer

商家

3

caipin_name

String

商品名称

4

caipin_photo

String

商品照片

5

caipin_types

Integer

商品类型

6

caipin_kucun_number

Integer

商品库存

7

caipin_old_money

BigDecimal

商品原价

8

caipin_new_money

BigDecimal

现价

9

caipin_clicknum

Integer

点击次数

10

shangxia_types

Integer

是否上架

11

caipin_delete

Integer

逻辑删除

12

caipin_content

String

商品简介

13

create_time

Date

创建时间

表4.3商品评价表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

caipin_id

Integer

商品

3

yonghu_id

Integer

用户

4

caipin_commentback_text

String

评价内容

5

reply_text

String

回复内容

6

insert_time

Date

评价时间

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.4商品订单表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

caipin_order_uuid_number

String

订单号

3

address_id

Integer

收货地址

4

caipin_id

Integer

商品

5

yonghu_id

Integer

用户

6

buy_number

Integer

购买数量

7

caipin_order_true_price

BigDecimal

实付价格

8

caipin_order_types

Integer

订单类型

9

caipin_order_payment_types

Integer

支付类型

10

insert_time

Date

订单创建时间

11

create_time

Date

创建时间

表4.5购物车表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_id

Integer

所属用户

3

caipin_id

Integer

商品

4

buy_number

Integer

购买数量

5

create_time

Date

添加时间

6

update_time

Date

更新时间

7

insert_time

Date

创建时间

表4.6字典表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

dic_code

String

字段

3

dic_name

String

字段名

4

code_index

Integer

编码

5

index_name

String

编码名字

6

super_id

Integer

父字段id

7

beizhu

String

备注

8

create_time

Date

创建时间

表4.7公告信息表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

news_name

String

公告标题

3

news_photo

String

公告图片

4

news_types

Integer

公告类型

5

news_content

String

公告详情

6

create_time

Date

创建时间

表4.8商家表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

shangjia_name

String

商家名称

3

shangjia_phone

String

联系方式

4

shangjia_email

String

邮箱

5

shangjia_photo

String

营业执照展示

6

shangjia_xingji_types

Integer

商家星级类型

7

new_money

BigDecimal

现有余额

8

shangjia_content

String

商家简介

9

shangjia_delete

Integer

逻辑删除

10

create_time

Date

创建时间

表4.9用户表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_name

String

用户姓名

3

yonghu_phone

String

用户手机号

4

yonghu_id_number

String

用户身份证号

5

yonghu_photo

String

用户头像

6

yonghu_email

String

电子邮箱

7

new_money

BigDecimal

余额

8

create_time

Date

创建时间

表4.10用户表表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

username

String

用户名

3

password

String

密码

4

role

String

角色

5

addtime

Date

新增时间


第5章 系统实现

进入到这个环节,也就可以及时检查出前面设计的需求是否可靠了。一个设计良好的方案在运用于系统实现中,是会帮助系统编制人员节省时间,并提升开发效率的。所以在系统的编程阶段,也就是系统实现阶段,对于一些不合理的设计需求,也是可以及时发现。因为设计的方案是完全指导系统的编码过程的。

5.1用户信息管理

如图5.1显示的就是用户信息管理页面,此页面提供给管理员的功能有:用户信息的查询管理,可以删除用户信息、修改用户信息、新增用户信息,

还进行了对用户名称的模糊查询的条件

 

图5.1 用户信息管理页面

5.2 商品信息管理

如图5.2显示的就是商品信息管理页面,此页面提供给管理员的功能有:查看已发布的商品信息数据,修改商品信息,商品信息作废,即可删除,还进行了对商品信息名称的模糊查询 商品信息信息的类型查询等等一些条件。

 

图5.2 商品信息管理页面

5.3商品类型管理

如图5.3显示的就是商品类型管理页面,此页面提供给管理员的功能有:根据商品类型进行条件查询,还可以对商品类型进行新增、修改、查询操作等等。

 

图5.3 商品类型管理页面

5.4公告信息管理

如图5.4显示的就是公告信息管理页面,此页面提供给管理员的功能有:根据公告信息进行新增、修改、查询操作等等。

 

图5.4 公告信息管理页面

相关文章:

基于微信小程序高校订餐系统的设计与开发ssm+论文源码调试讲解

第4章 系统设计 一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专…...

【vitePress】基于github快速添加评论功能(giscus)

一.添加评论插件 使用giscus来做vitepress 的评论模块,使用也非常的简单,具体可以参考:giscus 文档,首先安装giscus npm i giscus/vue 二.giscus操作 打开giscus 文档,如下图所示,填入你的 github 用户…...

PID 控制算法(二):C 语言实现与应用

在本文中,我们将用 C 语言实现一个简单的 PID 控制器,并通过一个示例来演示如何使用 PID 控制算法来调整系统的状态(如温度、速度等)。同时,我们也会解释每个控制参数如何影响系统的表现。 什么是 PID 控制器&#xf…...

Git本地搭建

Git本地搭建 (项目突然不给创建仓库了,为了方便管理项目只能自己本地搭建git服务) 为了在本地搭建Git环境并实现基本的Git操作,步骤如下: 安装Git软件 ‌Windows‌:从Git官方网站下载并安装适用于Windows…...

ORB-SLAM2源码学习:Initializer.cc⑧: Initializer::CheckRT检验三角化结果

前言 ORB-SLAM2源码学习:Initializer.cc⑦: Initializer::Triangulate特征点对的三角化_cv::svd::compute-CSDN博客 经过上面的三角化我们成功得到了三维点,但是经过三角化成功的三维点并不一定是有效的,需要筛选才能作为初始化地图点。 …...

leetcode 2239. 找到最接近 0 的数字

题目&#xff1a;2239. 找到最接近 0 的数字 - 力扣&#xff08;LeetCode&#xff09; 加班用手机刷水题&#xff0c;补个记录 1 class Solution { public:int findClosestNumber(vector<int>& nums) {int ret nums[0];for (int i 1; i < nums.size(); i) {if…...

Rust实现内网穿透工具:从原理到实现

目录 1.前言2.内网穿透原理3.丐版实现3.1 share3.2 server3.3 client3.4 测试4.项目优化4.1 工作空间4.2 代码合并4.3 无锁优化4.4 数据分离4.5 错误处理4.6 测试代码4.7 参数解析本篇原文为:Rust实现内网穿透工具:从原理到实现 更多C++进阶、rust、python、逆向等等教程,可…...

【深度学习】1.深度学习解决问题与应用领域

深度学习要解决的问题 一、图像识别相关问题 物体识别 背景和意义&#xff1a;在众多的图像中识别出特定的物体&#xff0c;例如在安防监控领域&#xff0c;识别出画面中的人物、车辆等物体类别。在自动驾驶技术中&#xff0c;车辆需要识别出道路上的行人、交通标志、其他车辆…...

文档解析:PDF里的复杂表格、少线表格如何还原?

PDF中的复杂表格或少线表格还原通常需要借助专业的工具或在线服务&#xff0c;以下是一些可行的方法&#xff1a; 方法一&#xff1a;使用在线PDF转换工具 方法二&#xff1a;使用桌面PDF编辑软件 方法三&#xff1a;通过OCR技术提取表格 方法四&#xff1a;手动重建表格 …...

深圳大学-计算机系统(3)-实验三取指和指令译码设计

实验目标 设计完成一个连续取指令并进行指令译码的电路&#xff0c;从而掌握设计简单数据通路的基本方法。 实验内容 本实验分成三周&#xff08;三次&#xff09;完成&#xff1a;1&#xff09;首先完成一个译码器&#xff08;30分&#xff09;&#xff1b;2&#xff09;接…...

Java Swing 编程全面解析:从 AWT 到 Swing 的进化之路

目录 前言 一、AWT 简介 1. 什么是 AWT&#xff1f; 2. AWT 的基本组件 3. AWT 编程示例 二、Swing 的诞生与进化 1. Swing 的特点 2. Swing 和 AWT 的主要区别 3. Swing 的基本组件 三、Swing 编程的基础示例 四、Swing 的高级功能 1. 布局管理器 2. 事件监听 3…...

mysql数据库启动出现Plugin ‘FEEDBACK‘ is disabled.问题解决记录

本人出现该问题的环境是xampp&#xff0c;异常关机&#xff0c;再次在xampp控制面板启动mysql出现该问题。出现问题折腾数据库之前&#xff0c;先备份数据&#xff0c;将mysql目录下的data拷贝到其他地方&#xff0c;这很重要。 然后开始折腾。 查资料&#xff0c;会发现很多…...

2025年大模型对智能硬件发展的助力与创新创意

随着人工智能(AI)技术,尤其是大模型的快速进步,智能硬件领域正在经历前所未有的变革。到2025年,大模型不仅能为智能硬件提供强大的算法支持,还能通过数据处理、智能决策和系统集成等方面的创新,推动硬件设备的性能提升和功能拓展。本文将从多个维度分析大模型对智能硬件…...

Tensor 基本操作1 unsqueeze, squeeze, softmax | PyTorch 深度学习实战

本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 目录 创建 Tensor常用操作unsqueezesqueezeSoftmax代码1代码2代码3 argmaxitem 创建 Tensor 使用 Torch 接口创建 Tensor import torch参考&#xff1a;https://pytorch.org/tutorials/beginn…...

Python - itertools- pairwise函数的详解

前言&#xff1a; 最近在leetcode刷题时用到了重叠对pairwise,这里就讲解一下迭代工具函数pairwise,既介绍给大家&#xff0c;同时也提醒一下自己&#xff0c;这个pairwise其实在刷题中十分有用&#xff0c;相信能帮助到你。 参考官方讲解&#xff1a;itertools --- 为高效循…...

Docker可视化管理工具Portainer

Portainer简介 Portainer 是一个轻量级的、开源的容器管理工具&#xff0c;提供了一个直观的 Web 用户界面&#xff08;UI&#xff09;&#xff0c;用于管理 Docker 和 Kubernetes 环境。它简化了容器的部署、监控和管理&#xff0c;特别适合不熟悉命令行操作的用户或团队。 …...

WPF实战案例 | C# WPF实现大学选课系统

WPF实战案例 | C# WPF实现大学选课系统 一、设计来源1.1 主界面1.2 登录界面1.3 新增课程界面1.4 修改密码界面 二、效果和源码2.1 界面设计&#xff08;XAML&#xff09;2.2 代码逻辑&#xff08;C#&#xff09; 源码下载更多优质源码分享 作者&#xff1a;xcLeigh 文章地址&a…...

leetcode 面试经典 150 题:有效的括号

链接有效的括号题序号20题型字符串解法栈难度简单熟练度✅✅✅ 题目 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须…...

python学opencv|读取图像(三十九 )阈值处理Otsu方法

【1】引言 前序学习了5种阈值处理方法&#xff0c;包括(反)阈值处理、(反)零值处理和截断处理&#xff0c;还学习了一种自适应处理方法&#xff0c;相关文章链接为&#xff1a; python学opencv|读取图像&#xff08;三十三&#xff09;阈值处理-灰度图像-CSDN博客 python学o…...

GBase8c aes_encrypt和aes_decrypt函数

在数据库中&#xff0c;aes_encrypt和aes_decrypt函数进行加解密时使用的块加密模式。 GBase8c 与 MySQL 的aes_encrypt和aes_decrypt函数区别&#xff1a; 1、GBase8c 中的初始化向量init_vector不能为空 2、MySQL的加密模块block_encryption_mode 为aes-128-ecb&#xff0c;…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...