SpringMVC+vue实现前后端分离的旅游管理系统

文末获取源码 

开发语言:Java

开发工具:IDEA /Eclipse

数据库:MYSQL5.7

应用服务:Tomcat7/Tomcat8

使用框架ssm+vue

JDK版本:jdk1.8

前言介绍 

目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用。在对网络工具的认知程度上,较为传统的office软件等仍是人们使用的主要工具,而相对全面且专业的旅游管理系统的信息管理软件仍没有得到大多数人的了解或认可。本选题则旨在通过标签分类管理等方式,管理员;首页、个人中心、用户管理,景点介绍管理,路线推荐管理,特色产品管理、酒店预约管理、论坛管理、系统管理、订单管理,用户前台;首页、景点介绍、路线推荐、特色产品、酒店预约、论坛信息、景点资讯、我的、跳转到后台、购物车、客服,用户后台;首页、个人中心、我的收藏管理、订单管理等信息管理功能,从而达到对旅游管理系统的高效管理。

系统体系结构

旅游管理系统的结构图

 登录系统结构图,如图

 系统结构图,如图

数据库设计原则

管理员信息属性图如图

路线推荐管理实体属性图如图

 

 管理员功能实体属性图如图

用户信息实体属性图如图 

 景点介绍管理实体属性图如图

 数据表

将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上

allusers

列名

数据类型

长度

约束

id

int

11

NOT NULL

username

varchar

50

default NULL

pwd

varchar

50

default NULL

cx

varchar

50

default NULL

jingdianjieshao

列名

数据类型

长度

约束

id

 int

11

NOT NULL

addtime

varchar

50

default NULL

jingdianmingcheng

varchar

50

default NULL

jingdianleixing

varchar

50

default NULL

jingdiandengji

varchar

50

default NULL

chuyoujijie

varchar

50

default NULL

jiaotongzhuangkuang

varchar

50

default NULL

jingdianzhaopian

varchar

50

default NULL

xiangxidizhi

varchar

50

default NULL

jingdianjieshao

varchar

50

default NULL

jingdianxiangqing

varchar

50

default NULL

jiudianyuyue

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

jiudianmingcheng

varchar

50

default NULL

jiudianxingji

varchar

50

default NULL

jiudianweizhi

varchar

50

default NULL

zhoubianjingdian

varchar

50

default NULL

kefangleixing

varchar

50

default NULL

kefangmianji

varchar

50

default NULL

mianfeikuandai

varchar

50

default NULL

jiudianzhaopian

varchar

50

default NULL

jiudianjieshao

varchar

50

default NULL

yonghu

列名

数据类型

长度

约束

id

 int

11

NOT NULL

addtime

varchar

50

 default NULL

yonghuming

varchar

50

 default NULL

mima

varchar

50

 default NULL

xingming

varchar

50

 default NULL

xingbie

varchar

50

 default NULL

nianling

varchar

50

 default NULL

lianxidianhua

varchar

50

 default NULL

dianziyouxiang

varchar

50

 default NULL

shenfenzhenghao

varchar

50

 default NULL

gerenzhaopian

varchar

10

 default

系统详细设计

用户前台功能模块

旅游管理系统,在旅游管理系统可以查看首页、景点介绍、路线推荐、特色产品、酒店预约、论坛信息、景点资讯、我的、跳转到后台、购物车、客服等内容,如图

用户注册,通过用户注册获取用户名、密码、姓名、年龄、联系电话、电子邮箱、身份证号等信息进行注册,如图

 登录,在登录页面可以填写账号、密码、类型等信息,如图

 景点介绍,在景点介绍页面可以查看价格、景点类型、景点等级、交通状况、景点介绍等如图

路线推荐

特色产品,在特色产品页面可以查看价格、特产类型、特产规格、特产介绍等如图

 

酒店预约

 

 论坛信息

景点资讯

 

管理员功能模块 

管理员登录,通过填写用户名、密码、角色等信息,输入完成后选择登录即可进入旅游管理系统,如图

管理员登录进入首页、个人中心、用户管理,景点介绍管理,路线推荐管理,特色产品管理、酒店预约管理、论坛管理、系统管理、订单管理等内容,如图

用户管理,在用户管理页面可以查看用户名、密码、姓名、性别、年龄、联系电话、电子邮箱、身份证号、个人照片等信息,并可根据需要对用户管理进行详情,修改,删除或查看详细内容等操作,如图

管理员在景点介绍管理页面可以查看景点名称、景点类型、景点等级、交通状况、景点图片等信息,并可根据需要对景点介绍管理进行详情,删除或查看详细内容等操作,如图

 

路线推荐管理,在路线推荐管理页面可以查看攻略标题、景点名称、景点类型、景点等级、出发城市等信息,并可根据需要对路线推荐管理进行详情,删除或查看详细内容操作,如图

 

特色产品管理,在特色产品管理页面可以查看特产名称、特产类型、特产规格、特产照片、特产介绍等内容,并可根据需要对特色产品管理进行详情、修改、删除或查看详细内容等操作,如图

 

酒店预约管理,在酒店预约管理页面可以查看酒店名称、酒店星级、酒店位置等信息,并可根据需要对酒店预约管理进行详情,修改,删除或查看详细内容等操作,如图

 

订单管理,在订单管理页面可以查看订单编号、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、状态、地址等内容,并可根据需要对订单管理进行详情,修改,删除和查看详细内容等操作,如图

 

用户后台功能模块

用户登录进入旅游管理系统可以查看首页、个人中心、我的收藏管理、订单管理等内容,如图

 

个人中心,在个人中心页面可以填写原密码、新密码、确认密码进行修改如图

 

我的收藏管理,在我的收藏管理页面可以查看收藏、收藏名称、收藏图片等信息,并可根据需要对我的收藏管理进行查看、收藏等操作,如图

 

订单管理,在订单管理页面可以查看订单编号、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、状态、地址等信息,并可根据需要对订单管理进行查看等操作,如图

 

部分核心代码: 

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.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.YonghuEntity;
import com.entity.view.YonghuView;

import com.service.YonghuService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 用户
 * 后端接口
 * @author 
 * @email 
 * @date 2020-12-09 12:04:08
 */
@RestController
@RequestMapping("/yonghu")
public class YonghuController {
    @Autowired
    private YonghuService yonghuService;
    
	@Autowired
	private TokenService tokenService;
	
	/**
	 * 登录
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", username));
		if(user==null || !user.getMima().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(), username,"yonghu",  "用户" );
		return R.ok().put("token", token);
	}
	
	/**
     * 注册
     */
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody YonghuEntity yonghu){
    	//ValidatorUtils.validateEntity(yonghu);
    	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
		if(user!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		yonghu.setId(uId);
        yonghuService.insert(yonghu);
        return R.ok();
    }
	
	/**
	 * 退出
	 */
	@RequestMapping("/logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        YonghuEntity user = yonghuService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setMima("123456");
        yonghuService.updateById(user);
        return R.ok("密码已重置为:123456");
    }


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

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

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( YonghuEntity yonghu){
       	EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
      	ew.allEq(MPUtil.allEQMapPre( yonghu, "yonghu")); 
        return R.ok().put("data", yonghuService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(YonghuEntity yonghu){
        EntityWrapper< YonghuEntity> ew = new EntityWrapper< YonghuEntity>();
 		ew.allEq(MPUtil.allEQMapPre( yonghu, "yonghu")); 
		YonghuView yonghuView =  yonghuService.selectView(ew);
		return R.ok("查询用户成功").put("data", yonghuView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        YonghuEntity yonghu = yonghuService.selectById(id);
        return R.ok().put("data", yonghu);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") String id){
        YonghuEntity yonghu = yonghuService.selectById(id);
        return R.ok().put("data", yonghu);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
    	yonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(yonghu);
    	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
		if(user!=null) {
			return R.error("用户已存在");
		}

		yonghu.setId(new Date().getTime());
        yonghuService.insert(yonghu);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
    	yonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(yonghu);
    	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
		if(user!=null) {
			return R.error("用户已存在");
		}

		yonghu.setId(new Date().getTime());
        yonghuService.insert(yonghu);
        return R.ok();
    }

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

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        yonghuService.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<YonghuEntity> wrapper = new EntityWrapper<YonghuEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = yonghuService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
本文将介绍如何利用SpringMVCVue实现前后端分离的大学生社团管理系统。 1. 系统需求分析 该系统需要实现以下功能: - 用户登录和注册 - 社团管理:创建、修改、删除社团 - 活动管理:创建、修改、删除活动 - 成员管理:加入、退出社团 2. 系统设计 该系统采用前后端分离的架构,前端使用Vue框架,后端采用SpringMVC框架。 2.1 后端设计 后端使用SpringMVC框架,实现了以下功能: - 用户登录和注册 - 社团管理:创建、修改、删除社团 - 活动管理:创建、修改、删除活动 - 成员管理:加入、退出社团 2.2 前端设计 前端使用Vue框架,实现了以下功能: - 用户登录和注册 - 社团管理:创建、修改、删除社团 - 活动管理:创建、修改、删除活动 - 成员管理:加入、退出社团 3. 系统实现 3.1 后端实现 后端使用SpringMVC框架,实现了以下功能: - 用户登录和注册 用户登录和注册功能使用Spring Security框架实现。用户信息存储在数据库中,密码经过加密存储。 - 社团管理 社团管理功能使用SpringMVC框架实现。社团信息存储在数据库中,包括社团名称、社团介绍、社团成员等信息。用户可以创建、修改、删除社团。 - 活动管理 活动管理功能使用SpringMVC框架实现。活动信息存储在数据库中,包括活动名称、活动介绍、活动时间、活动地点等信息。用户可以创建、修改、删除活动。 - 成员管理 成员管理功能使用SpringMVC框架实现。成员信息存储在数据库中,包括成员姓名、成员学号等信息。用户可以加入、退出社团。 3.2 前端实现 前端使用Vue框架,实现了以下功能: - 用户登录和注册 使用Vue Router实现登录和注册页面的路由。用户输入用户名和密码后,使用axios发送请求到后端验证用户信息。 - 社团管理 使用Vue Router实现社团管理页面的路由。用户可以查看所有社团的信息,并且可以创建、修改、删除自己的社团。 - 活动管理 使用Vue Router实现活动管理页面的路由。用户可以查看所有活动的信息,并且可以创建、修改、删除自己的活动。 - 成员管理 使用Vue Router实现成员管理页面的路由。用户可以加入、退出社团。 4. 总结 本文介绍了如何利用SpringMVCVue实现前后端分离的大学生社团管理系统。该系统采用前后端分离的架构,实现了用户登录和注册、社团管理、活动管理和成员管理等功能。该系统可以作为大学生社团管理的参考实现

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一季春秋

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

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

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

打赏作者

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

抵扣说明:

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

余额充值