您的当前位置:首页正文

基于springboot的滑雪场管理系统【源码论文开题报告全套】

2024-11-30 来源:个人技术集锦

 

4系统设计

4.1系统功能设计

本系统主要通过使用Java语言编码设计系统功能,MySQL数据库管理数据,AJAX技术设计简洁的、友好的网址页面,然后在IDEA开发平台中,编写相关的Java代码文件,接着通过连接语言完成与数据库的搭建工作,再通过平台提供的Tomcat插件完成信息的交互,最后在浏览器中打开系统网址便可使用本系统。本系统的使用角色可以被分为用户和管理员,用户具有注册、查看信息、留言信息等功能,管理员具有修改用户信息,发布赛道等功能,系统总体功能设计图如图4-1所示。

图4-1系统总体功能设计图

4.2数据库设计

4.2.1概念设计

在数据库设计过程中,概念设计阶段是逻辑设计阶段得以实现的基础,也是根据用户参与情况确定对数据的处理要求,从而使得数据库设计成功的关键。概念设计的主要任务是将现实世界的所收集到的使用需求转化为抽象的信息世界结构的过程,能够真实的反映现实生活中实体与实体之间的联系,数据库的相关语法和代码比较容易理解和修改,方便相关人员将相关的数据信息存储到数据库中,并对其进行修改和使用[18]。

通过将现实世界中的实体、属性、联系等内容进行概念设计,建立比较抽象的概念数据模型,即E-R图。通过E-R图可将现实世界抽象到的概念设计转变成数据库的实体设计,并且能够明显的看见各个实体之间,数据的流动情况,具体较强的表达能力,更加方便于开发人员寻找与发现用户具体的需求[19]。因此,E-R的建立,在整个数据库的设计过程中,起着至关重要的作用。本系统主要的实体有管理员、用户、留言等。在E-R图中,矩形表示实体集,椭圆形表示属性,菱形表示联系。其中,联系的类型包括1:1(一对一)、1:n(一对多)、n:m(多对多)关系。

4.2.2逻辑设计

本系统使用MySQL数据库管理与系统相关的数据信息。逻辑设计阶段是将上一个阶段中的概念数据模型,转换为方便数据库进行存储的关系模型,即基本表的形式,方便开发人员后期对数据模型进行优化和管理[20]。逻辑设计阶段是整个数据库设计设计的关键,与系统有关的信息将会在这一阶段中被存储在数据库中,当用户使用本系统进行相关的功能操作时,与之有关的数据信息所在的基本表会发生相应的更新变化。数据库的逻辑设计阶段主要任务是将与系统相关的数据信息,设计成为方便数据库存储和管理的基本表格的形式,具体内容如下。

表4.1字典表

序号

列名

数据类型

说明

允许空

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.2公告表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

gonggao_name

String

公告名称

3

gonggao_photo

String

公告图片

4

gonggao_types

Integer

公告类型

5

insert_time

Date

发布时间

6

gonggao_content

String

公告详情

7

create_time

Date

创建时间

表4.3教练表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

jiaolian_uuid_number

String

教练编号

3

jiaolian_name

String

教练姓名

4

jiaolian_phone

String

教练手机号

5

jiaolian_id_number

String

教练身份证号

6

jiaolian_photo

String

教练照片

7

jiaolian_shanchang

String

擅长

8

jiaolian_email

String

教练邮箱

9

jinyong_types

Integer

账户状态

10

new_money

BigDecimal

预约价格/天

11

shangjia_content

String

教练介绍

12

shangjia_rongyu_content

String

所获荣誉

13

create_time

Date

创建时间

表4.4教练预约表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

jiaolian_yuyue_uuid_number

String

报名编号

3

jiaolian_id

Integer

教练

4

yonghu_id

Integer

用户

5

jiaolian_yuyue_text

String

预约缘由

6

insert_time

Date

申请时间

7

jiaolian_yuyue_time

Date

预约日期

8

jiaolian_yuyue_yesno_types

Integer

预约状态

9

jiaolian_yuyue_yesno_text

String

审核回复

10

jiaolian_yuyue_shenhe_time

Date

审核时间

11

create_time

Date

创建时间

表4.5留言板表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_id

Integer

用户

3

liuyan_name

String

留言标题

4

liuyan_text

String

留言内容

5

insert_time

Date

留言时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.6滑雪器具表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

qiju_name

String

器具名称

3

qiju_uuid_number

String

器具编号

4

qiju_photo

String

器具照片

5

qiju_types

Integer

器具类型

6

qiju_kucun_number

Integer

器具数量

7

qiju_old_money

BigDecimal

器具原价

8

qiju_new_money

BigDecimal

租赁价格/天

9

qiju_clicknum

Integer

器具热度

10

qiju_content

String

器具介绍

11

shangxia_types

Integer

是否上架

12

qiju_delete

Integer

逻辑删除

13

insert_time

Date

录入时间

14

create_time

Date

创建时间

表4.7器具收藏表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

qiju_id

Integer

器具

3

yonghu_id

Integer

用户

4

qiju_collection_types

Integer

类型

5

insert_time

Date

收藏时间

6

create_time

Date

创建时间

表4.8器具评价表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

qiju_id

Integer

器具

3

yonghu_id

Integer

用户

4

qiju_commentback_text

String

评价内容

5

insert_time

Date

评价时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.9器具订单表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

qiju_order_uuid_number

String

订单编号

3

qiju_id

Integer

器具

4

yonghu_id

Integer

用户

5

buy_number

Integer

租赁数量

6

qiju_order_time

Date

租赁时间

7

qiju_order_true_price

BigDecimal

实付价格

8

qiju_order_types

Integer

订单类型

9

qiju_order_payment_types

Integer

支付类型

10

insert_time

Date

订单创建时间

11

create_time

Date

创建时间

表4.10赛道表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

saidao_name

String

赛道名称

3

saidao_uuid_number

String

赛道编号

4

saidao_photo

String

赛道缩略图

5

saidao_types

Integer

赛道类型

6

saidao_old_money

BigDecimal

赛道原价

7

saidao_new_money

BigDecimal

现价/天

8

saidao_clicknum

Integer

赛道热度

9

saidao_content

String

赛道介绍

10

shangxia_types

Integer

是否上架

11

saidao_delete

Integer

逻辑删除

12

insert_time

Date

录入时间

13

create_time

Date

创建时间

表4.11赛道收藏表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

saidao_id

Integer

赛道

3

yonghu_id

Integer

用户

4

saidao_collection_types

Integer

类型

5

insert_time

Date

收藏时间

6

create_time

Date

创建时间

表4.12赛道留言表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

saidao_id

Integer

赛道

3

yonghu_id

Integer

用户

4

saidao_liuyan_text

String

留言内容

5

insert_time

Date

留言时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.13赛道预约表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

saidao_yuyue_uuid_number

String

申请编号

3

saidao_id

Integer

赛道

4

yonghu_id

Integer

用户

5

saidao_yuyue_text

String

申请缘由

6

saidao_yuyue_time

Date

预约日期

7

insert_time

Date

申请时间

8

saidao_yuyue_yesno_types

Integer

申请状态

9

saidao_yuyue_yesno_text

String

审核回复

10

saidao_yuyue_shenhe_time

Date

审核时间

11

create_time

Date

创建时间

表4.14用户表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_uuid_number

String

用户编号

3

yonghu_name

String

用户姓名

4

yonghu_phone

String

用户手机号

5

yonghu_id_number

String

用户身份证号

6

yonghu_photo

String

用户头像

7

yonghu_email

String

用户邮箱

8

new_money

BigDecimal

余额

9

jinyong_types

Integer

账户状态

10

create_time

Date

创建时间

表4.15管理员表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

username

String

员工名

3

password

String

密码

4

role

String

角色

5

addtime

Date

新增时间

4.3本章小结

本章主要介绍了系统功能设计、数据库设计等内容。通过设计系统的总体功能框架,确定系统的功能设计主要包括滑雪器具等模块。数据库设计主要分为概念设计阶段和逻辑设计阶段,其中,概念设计是将现实世界中的数据转变为信息世界中的概念模型,逻辑设计是将概念设计中的概念模型转变成可以被数据库存储的数据表格。系统功能设计好坏是系统得以被编码实现的重要依据。数据库设计是否符合规范,是系统能够成功运行的基本保障,也是用户和系统实现交互处理的重要前提。

5系统实现

5.1管理员功能模块实现

5.1.1管理员登录

管理员可以选择任一浏览器打开网址,输入信息无误后,以管理员的身份行使相关的管理权限,管理员登录界面设计如图5-1所示。

图5-1管理员登录界面

5.1.2滑雪器具管理

管理员可以通过选择滑雪器具管理,管理相关的滑雪器具信息记录,比如进行查看滑雪器具信息标题,修改滑雪器具信息来源等操作,滑雪器具管理界面设计如图5-2所示。

图5-2滑雪器具管理界面

JAVA后端代码实现

package com.controller;
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

⭐进主页热门专栏推荐订阅⭐ 订阅收藏起来,防止下次找不到
?千套Java / PHP / nod.js / asp.net/ Python等项目实战更新中~
?百套小程序APP项目实战更新中~

?下方有我的微信名片?

显示全文