基于java+ssm+vue的舞蹈网站的设计与实现

项目介绍

随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,舞蹈网站当然也不能排除在外。舞蹈网站是以实际运用为开发背景,运用软件工程开发方法,采用Java技术构建的一个管理系统。整个开发过程首先对软件系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统总体结构设计、系统数据结构设计、系统功能设计和系统安全设计等;详细设计主要包括模块实现的关键代码,系统数据库访问和主要功能模块的具体实现等。最后对系统进行功能测试,并对测试结果进行分析总结,及时改进系统中存在的不足,为以后的系统维护提供了方便,也为今后开发类似系统提供了借鉴和帮助。

本舞蹈网站采用的数据库是Mysql,使用SSM框架开发。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。

4.1 系统体系结构
舞蹈网站的结构图4-1所示:
在这里插入图片描述
登录系统结构图,如图4-2所示:
在这里插入图片描述
系统结构图,如图4-3所示。
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序ue/爬虫/c#/asp.net

系统实现

5.1管理员功能模块
管理员登录,通过填写用户名、密码、角色等信息,输入完成后选择登录即可进入舞蹈网站,如图5-1所示。
在这里插入图片描述

图5-1管理员登录界面图

管理员登录进入舞蹈网站可以查看首页、个人中心、用户管理、舞蹈知识管理、舞蹈发布管理、用户分享管理、舞蹈考级管理、舞蹈论坛、我的收藏管理、系统管理等内容,如图5-2所示。
在这里插入图片描述

图5-2管理员功能界面图

用户管理,在用户管理页面可以查看账号、姓名、照片、性别、手机、邮箱、身份证、所学舞种、舞蹈等级等信息,并可根据需要对用户管理进行详情,修改,删除等操作,如图5-3所示。
在这里插入图片描述

图5-3用户管理界面图

舞蹈知识管理,在舞蹈知识管理页面可以查看标题、图片、发布时间、发展历史、未来发展等信息,并可根据需要对舞蹈知识管理进行详情,修改、查看评论、删除等操作,如图5-4所示。
在这里插入图片描述

图5-4舞蹈知识管理界面图

舞蹈发布管理,在舞蹈发布管理页面可以查看舞蹈名称、舞蹈图片、舞种、舞蹈视频、发布时间等信息,并可根据需要对舞蹈发布管理进行详情、删除或查看评论、修改操作,如图5-5所示。
在这里插入图片描述

图5-5舞蹈发布管理界面图

用户分享管理,在用户分享管理页面可以查看账号、姓名、舞蹈标题、舞种图片、舞蹈等级、视频、舞蹈介绍、舞蹈分享、咨询等内容,并可根据需要对用户分享管理进行详情、修改、删除或查看评论等操作,如图5-6所示。
在这里插入图片描述

图5-6用户分享管理界面图

舞蹈考级管理,在舞蹈考级管理页面可以查看考级标准、考级信息、报考时间、注意事项、代理报名、照片等信息,并可根据需要对舞蹈考级管理进行详情,修改,删除等操作,如图5-7所示。

在这里插入图片描述

图5-7舞蹈考级管理界面图

舞蹈论坛,在舞蹈论坛页面可以查看帖子标题、用户名、状态等信息,并可根据需要对舞蹈论坛进行详情,修改,删除等操作,如图5-8所示。
在这里插入图片描述

图5-8舞蹈论坛界面图

轮播图;该页面为轮播图管理界面。管理员可以在此页面进行首页轮播图的管理,通过新建操作可在轮播图中加入新的图片,还可以对以上传的图片进行修改操作,以及图片的删除操作,如图5-9所示。
在这里插入图片描述

图5-9轮播图管理界面图

5.2用户功能模块
用户登录进入舞蹈网站页面可以查看首页、个人中心、舞蹈知识管理、舞蹈发布管理、用户分享管理、舞蹈考级管理、我的收藏管理等内容,如图5-10所示。
在这里插入图片描述

图5-10用户功能界面图

用户分享管理,在用户分享管理页面可以查看账号、姓名、舞蹈标题、舞种图片、舞蹈等级、视频、舞蹈介绍、舞蹈分享、咨询等信息,并可根据需要对用户分享管理进行详情查看评论等操作,如图5-11所示。
在这里插入图片描述

图5-11用户分享管理界面图

5.3前台首页功能模块
舞蹈网站,在舞蹈网站前台首页可以查看首页、舞蹈知识、舞蹈发布、用户分享、舞蹈考级、舞蹈论坛、舞蹈咨询、个人中心、后台管理等内容,如图5-12所示。
在这里插入图片描述

图5-12前台首页界面图

用户注册、用户登录,通过注册填写账号、密码、姓名、手机、邮箱、身份证等信息进行注册、登录操作,如图5-13所示。

在这里插入图片描述

在这里插入图片描述

图5-13用户注册、用户登录界面图

舞蹈知识,在舞蹈知识页面可以查看标题、图片、发布时间、发展历史、未来发展、点击次数等信息进行点我收藏操作,如图5-14所示。
在这里插入图片描述

图5-14舞蹈知识界面图

用户分享,在用户分享页面可以查看账号、姓名、舞蹈标题、舞种图片、舞蹈等级、视频、舞蹈介绍、舞蹈分享、咨询等信息进行点我收藏操作,如图5-15所示。
在这里插入图片描述

图5-15用户分享界面图

舞蹈论坛,在舞蹈论坛页面可以填写帖子标题、类型、内容等信息进行发布帖子操作,如图5-16所示。
在这里插入图片描述

图5-16舞蹈论坛界面图

个人中心,在个人中心页面可以填写账号、密码、姓名、照片、性别、手机、邮箱、身份证等信息进行更新信息、退出登录操作,如图5-17所示。
在这里插入图片描述

图5-17个人中心界面图

核心代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
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.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.WudaofabuEntity;
import com.entity.view.WudaofabuView;

import com.service.WudaofabuService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 舞蹈发布
 * 后端接口
 * @author 
 * @email 
 * @date 
 */
@RestController
@RequestMapping("/wudaofabu")
public class WudaofabuController {
    @Autowired
    private WudaofabuService wudaofabuService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,WudaofabuEntity wudaofabu, 
		HttpServletRequest request){

        EntityWrapper<WudaofabuEntity> ew = new EntityWrapper<WudaofabuEntity>();
		PageUtils page = wudaofabuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wudaofabu), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("st")
    public R list(@RequestParam Map<String, Object> params,WudaofabuEntity wudaofabu, HttpServletRequest request){
        EntityWrapper<WudaofabuEntity> ew = new EntityWrapper<WudaofabuEntity>();
		PageUtils page = wudaofabuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wudaofabu), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("sts")
    public R list( WudaofabuEntity wudaofabu){
       	EntityWrapper<WudaofabuEntity> ew = new EntityWrapper<WudaofabuEntity>();
      	ew.allEq(MPUtil.allEQMapPre( wudaofabu, "wudaofabu")); 
        return R.ok().put("data", wudaofabuService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(WudaofabuEntity wudaofabu){
        EntityWrapper< WudaofabuEntity> ew = new EntityWrapper< WudaofabuEntity>();
 		ew.allEq(MPUtil.allEQMapPre( wudaofabu, "wudaofabu")); 
		WudaofabuView wudaofabuView =  wudaofabuService.selectView(ew);
		return R.ok("查询舞蹈发布成功").put("data", wudaofabuView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        WudaofabuEntity wudaofabu = wudaofabuService.selectById(id);
		wudaofabu.setClicknum(wudaofabu.getClicknum()+1);
		wudaofabu.setClicktime(new Date());
		wudaofabuService.updateById(wudaofabu);
        return R.ok().put("data", wudaofabu);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        WudaofabuEntity wudaofabu = wudaofabuService.selectById(id);
		wudaofabu.setClicknum(wudaofabu.getClicknum()+1);
		wudaofabu.setClicktime(new Date());
		wudaofabuService.updateById(wudaofabu);
        return R.ok().put("data", wudaofabu);
    }
    


    /**
     * 赞或踩
     */
    @RequestMapping("/thumbsup/{id}")
    public R thumbsup(@PathVariable("id") String id,String type){
        WudaofabuEntity wudaofabu = wudaofabuService.selectById(id);
        if(type.equals("1")) {
        	wudaofabu.setThumbsupnum(wudaofabu.getThumbsupnum()+1);
        } else {
        	wudaofabu.setCrazilynum(wudaofabu.getCrazilynum()+1);
        }
        wudaofabuService.updateById(wudaofabu);
        return R.ok();
    }

    /**
     * 后端保存
     */
    @RequestMapping("ve")
    public R save(@RequestBody WudaofabuEntity wudaofabu, HttpServletRequest request){
    	wudaofabu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(wudaofabu);

        wudaofabuService.insert(wudaofabu);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody WudaofabuEntity wudaofabu, HttpServletRequest request){
    	wudaofabu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(wudaofabu);

        wudaofabuService.insert(wudaofabu);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody WudaofabuEntity wudaofabu, HttpServletRequest request){
        //ValidatorUtils.validateEntity(wudaofabu);
        wudaofabuService.updateById(wudaofabu);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        wudaofabuService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<WudaofabuEntity> wrapper = new EntityWrapper<WudaofabuEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = wudaofabuService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	
	/**
     * 前端智能排序
     */
	@IgnoreAuth
    @RequestMapping("/autoSort")
    public R autoSort(@RequestParam Map<String, Object> params,WudaofabuEntity wudaofabu, HttpServletRequest request,String pre){
        EntityWrapper<WudaofabuEntity> ew = new EntityWrapper<WudaofabuEntity>();
        Map<String, Object> newMap = new HashMap<String, Object>();
        Map<String, Object> param = new HashMap<String, Object>();
		Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry<String, Object> entry = it.next();
			String key = entry.getKey();
			String newKey = entry.getKey();
			if (pre.endsWith(".")) {
				newMap.put(pre + newKey, entry.getValue());
			} else if (StringUtils.isEmpty(pre)) {
				newMap.put(newKey, entry.getValue());
			} else {
				newMap.put(pre + "." + newKey, entry.getValue());
			}
		}
		params.put("sort", "clicknum");
        
        params.put("order", "desc");
		PageUtils page = wudaofabuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wudaofabu), params), params));
        return R.ok().put("data", page);
    }


}

论文参考

在这里插入图片描述

目 录
摘 要 I
ABSTRACT II
目 录 II
第1章 绪论 1
1.1背景及意义 1
1.2 国内外研究概况 1
1.3 研究的内容 1
第2章 相关技术 2
2.1 Java技术介绍 2
2.2 SSM三大框架 2
2.3 MyEclipse开发环境 2
2.4 Tomcat服务器 3
2.5 MySQL数据库 3
第3章 系统分析 4
3.1 需求分析 4
3.2 系统可行性分析 4
3.2.1技术可行性:技术背景 4
3.2.2经济可行性 5
3.2.3操作可行性: 5
3.3 项目设计目标与原则 5
3.4系统流程分析 6
3.4.1操作流程 6
3.4.2添加信息流程 7
3.4.3删除信息流程 8
第4章 系统设计 10
4.1 系统体系结构 10
4.2开发流程设计 11
4.3 数据库设计原则 12
4.4 数据表 14
第5章 系统详细设计 19
5.1管理员功能模块 19
5.2用户功能模块 22
5.3前台首页功能模块 22
第6章 系统测试 26
6.1系统测试的目的 26
6.2系统测试方法 27
6.3功能测试 27
结 论 29
致 谢 30
参考文献 31

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qq_3306428634

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

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

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

打赏作者

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

抵扣说明:

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

余额充值