基于Springboot+Vue的电子博物馆系统

基于Springboot+Vue的电子博物馆系统开发

基于Springboot+Vue的电子博物馆系统

前言:随着信息技术的不断发展,传统博物馆的参观方式逐渐向数字化、在线化转型。电子博物馆作为这一转型的重要组成部分,能够通过信息化手段为用户提供更丰富、更便捷的博物馆参观体验。本文基于Spring Boot和Vue.js框架,设计并实现了一个简单的电子博物馆系统,旨在展示数字化博物馆建设的技术架构及开发过程。

前言

项目功能及技术

用户端主要有首页、文创展示、浏览记录、网站公告、我的收藏、个人中心等模块。
管理端主要有用户管理、博物馆管理、文创管理、公告管理,博物馆视频管理。

vue.js+layui+html+js:用户端界面。
SpringBoot框架+Java程序语言:用户端及后台管理系统API的实现。
Layui前端框架:web后台管理界面样式及数据渲染框架。
MySQL数据库:数据存储。

用户端

管理端

API

SpringBoot框架搭建

1.创建maven project,先创建一个名为SpringBootDemo的项目,选择【New Project】

在这里插入图片描述

然后在弹出的下图窗口中,选择左侧菜单的【New Project】

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

在project下创建module,点击右键选择【new】—【Module…】

在这里插入图片描述

左侧选择【Spring initializr】,通过idea中集成的Spring initializr工具进行spring boot项目的快速创建。窗口右侧:name可根据自己喜好设置,group和artifact和上面一样的规则,其他选项保持默认值即可,【next】

在这里插入图片描述

Developer Tools模块勾选【Spring Boot DevTools】,web模块勾选【Spring Web】,此时,一个Springboot项目已经搭建完成,可开发后续功能

在这里插入图片描述

实体映射创建Mapper

创建一个entity实体类文件夹,并在该文件夹下创建项目用到的实体类

在这里插入图片描述

package com.example.demo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Data
public class User {
   
   
    @TableId(type = IdType.AUTO)
    private Long id;

    private String account;

    private String pwd;

    private String userDesc;

    private String userHead;

    private LocalDateTime createTime;

    private Long role;

    private String nickname;

    private String email;

    private String tags;
}

接口封装

由于我们使用mybatis-plus,所以简单的增删改查不用自己写,框架自带了,只需要实现或者继承他的Mapper、Service

在这里插入图片描述

创建控制器Controller

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

整合Swagger

添加依赖

先导入spring boot的web包

<!--swagger依赖-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

配置Swagger

创建一个swagger的配置类,命名为SwaggerConfig.java

/*
     *用于定义API主界面的信息,比如可以声明所有的API的总标题、描述、版本
     */
    private ApiInfo apiDemo() {
        return new ApiInfoBuilder()
                //用来自定义API的标题
                .title("SpringBoot项目SwaggerAPIAPI标题测试")
                //用来描述整体的API
                .description("SpringBoot项目SwaggerAPI描述测试")
                //创建人信息
                .contact(new Contact("测试员张三","http://localhost:8080/springboot/swagger-ui.html","xxxxxxxx@163.com"))
                //用于定义服务的域名
                //.termsOfServiceUrl("")
                .version("1.0") //可以用来定义版本
                .build();
    }

接口测试

运行Spring Boot项目,默认端口8080,通过地址栏访问url

在这里插入图片描述

接口组定义

根据不同的业务区分不同的接口组,使用@API来划分

@Api(tags = "用户管理") //  tags:组名称
@RestController
public class RoleController {
}

在这里插入图片描述
接口定义

使用@ApiModel来标注实体类,同时在接口中定义入参为实体类作为参数。

  • @ApiModel:用来标类

  • 常用配置项:value:实体类简称;description:实体类说明

  • @ApiModelProperty:用来描述类的字段的含义。

常用字段类型

字段类型 所占字节 存储范围 最大存储值 使用场景
TINYINT 1 -128~127 127 存储小整数
INT 4 -2147483648~2147483647 2147483647 存储大整数
BIGINT 8 -9223372036854775808~9223372036854775807 9223372036854775807 存储极大整数
DECIMAL 可变长度 存储精度要求高的数值
CHAR 固定长度 最多255字节 255个字符 存储长度固定的字符串
VARCHAR 可变长度 最多65535字节 65535个字符 存储长度不固定的字符串
DATETIME 8 ‘1000-01-01 00:00:00’~‘9999-12-31 23:59:59’ ‘9999-12-31 23:59:59’ 存储日期和时间

参考代码块

    <script type="text/javascript">
			layui.use(['laydate', 'form'], function() {
     
     
				var laydate = layui.laydate;
				var form = layui.form;
				// 监听全选
			});
			//轻量级框架
			var dataInfo = new Vue({
     
     
				el: "#content-page",
				//Vue的数据对象
				data: {
     
     
					timeSort: 'next', //发布时间排序
					viewVolumeSort: 'next', //浏览量排序
					arrayList: [], //数据列表
					title: null,
					dynasty: null,
					typeId: null,
					areaList: [],
					appointment: {
     
     },
					swiperSrc: '',
					indexSwiper: [
						'https://photo.16pic.com/00/53/26/16pic_5326792_b.jpg',
						'https://img95.699pic.com/desgin_photo/40113/1735_list.jpg',
						'https://file3.renrendoc.com/fileroot_temp3/2022-5/20/f16ee02b-429f-46ad-806f-f453cfb33b80/f16ee02b-429f-46ad-806f-f453cfb33b801.gif',
					],
					swiperIndexl: 0,
					
					bwgArray:[
					],
				}, //数据对象结束
				//方法
				methods: {
     
     
					GetAll: function(desc, desc1) {
     
     
						var me = this;
						me.swiperSrc = me.indexSwiper[0];
						let list = me.indexSwiper;
						var swiperIndexl = me.swiperIndexl;
						me.swiperSrc = list[swiperIndexl];
						setInterval(function() {
     
     
							me.swiperSrc = list[swiperIndexl];
							swiperIndexl = (swiperIndexl + 1) % list.length;
						}, 3000);
						if (sessionStorage.getItem('user') == null || sessionStorage.getItem('user') == undefined ||
							sessionStorage.getItem('user') == '') {
     
     
							location.href = "login/login.html"
						}
						
						
						$.ajax({
     
     
							url: "http://127.0.0.1:8085/exhibition/list",
							async: false,
							type: "POST",
							contentType: 'application/json',
							dataType: 'json',
							data: JSON.stringify({
     
     
							}),
							success: function(json) {
     
     
								me.bwgArray = json.data;
							}
						});
						

					},
					gobwgDetail(e) {
     
     
						sessionStorage.setItem("exhibition", JSON.stringify(e));
						window.location.href = "museumDetail.html";
					},
					
					goAreaDetail(item) {
     
     
						//console.log(id)
						sessionStorage.setItem("area", JSON.stringify(item));
						window.location.href = "areaDetail.html";
					},

				}, //方法结束
				created: function() {
     
     
					var vm = this;
					vm.GetAll('desc', 'desc');
				}, //初始加载方法结束

			}
<think>好的,用户想了解如何绘制数据字典,并且需要一个基于若依框架(SpringBoot+Vue)的博物馆预约管理系统的数据字典示例。首先,我需要明确数据字典的基本概念结构,然后结合若依框架的特点来设计示例。 数据字典通常包括表名、字段名、数据类型、是否主键、是否为空、描述等信息。用户提到的若依框架是基于SpringBootVue的,所以需要符合前后端分离的结构。博物馆预约系统可能涉及用户、预约、展品、公告等模块,需要确定每个模块的数据表结构。 接下来,应该分步骤说明如何绘制数据字典。可能需要包括确定业务模块、设计数据表结构、使用工具绘制(比如Excel、PowerDesigner等),以及生成文档。同时,要确保每个步骤都清晰,用户能够跟随操作。 然后,提供具体的示例。例如,用户表可能包含用户ID、用户名、密码、手机号等字段。预约表需要关联用户展品,记录预约时间状态。展品表包括展品信息状态。公告表管理通知内容。每个表都要详细列出字段及其属性。 此外,需要注意若依框架的规范,比如字段命名使用下划线,主键名称为id,逻辑删除使用del_flag字段。这些细节需要体现在示例中,确保与框架兼容。 最后,生成相关问题,帮助用户进一步理解数据字典的设计优化。可能涉及索引设计、性能优化、权限控制等方面的问题。 检查是否有遗漏的部分,比如是否提到了数据字典的重要性,或者如何在若依框架中实现这些表结构。确保步骤示例都准确,符合用户的需求,并且语言简洁明了。</think>### 数据字典设计步骤(若依框架SpringBoot+Vue) #### 一、数据字典定义 数据字典是描述数据库表结构、字段含义及约束规则的元数据集合,包含$表名$、$字段名$、$数据类型$、$注释$等核心元素[^1]。 #### 二、绘制步骤(博物馆预约系统) 1. **确定业务模块** - 用户管理 - 预约管理 - 展品管理 - 公告管理 2. **设计数据表结构** ```sql /* 用户表 */ CREATE TABLE sys_user ( user_id BIGINT PRIMARY KEY COMMENT '用户ID', user_name VARCHAR(30) NOT NULL COMMENT '用户名', password VARCHAR(100) NOT NULL COMMENT '密码', phone VARCHAR(11) COMMENT '手机号' ); /* 预约记录表 */ CREATE TABLE museum_reservation ( reserve_id BIGINT PRIMARY KEY COMMENT '预约ID', user_id BIGINT NOT NULL COMMENT '用户ID', exhibit_id BIGINT NOT NULL COMMENT '展品ID', reserve_time DATETIME COMMENT '预约时间', status CHAR(1) DEFAULT '0' COMMENT '状态(0待审核 1已通过 2已取消)' ); ``` 3. **绘制工具选择** - Excel表格(字段说明模板): | 表名 | 字段名 | 类型 | 是否主键 | 允许空 | 注释 | |---|---|---|---|---|---| | sys_user | user_id | bigint | 是 | 否 | 用户唯一标识 | - PowerDesigner物理模型 - Navicat数据字典生成器 4. **若依框架规范** - 字段命名使用下划线格式:$user\_id$ - 主键统一命名为$id$ - 逻辑删除字段$del\_flag$ #### 三、完整示例片段 $$ \begin{array}{|c|c|c|c|c|} \hline \text{表名} & \text{字段名} & \text{类型} & \text{注释} & \text{关联表} \\ \hline museum\_exhibit & id & bigint & 展品ID & 主键 \\ \hline museum\_exhibit & exhibit\_name & varchar(50) & 展品名称 & 无 \\ \hline sys\_notice & notice\_content & text & 公告内容 & 无 \\ \hline \end{array} $$
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无语小咪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值