毕业设计|SSM+VUE的旅游平台系统

2023-12-16

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码

项目编号:L-BS-LY-01

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

二,项目简介

该旅游管理系统是基于SSM(Spring、SpringMVC、MyBatis)和Vue.js框架构建的一款旅游管理平台。它集成了景区管理、售票管理、系统管理、景区审核、游记管理、字典管理、景区档案、景区录入、关于我们等功能模块,为旅游行业管理者和游客提供全方位的管理和服务。

功能描述:

一、后台管理模块:

  1. 景区管理:管理员可以添加、编辑和删除景区信息,包括景区名称、地址、介绍、图片等。
  2. 售票管理:管理员可以设置景区的门票价格、售票时间、售票方式等,实现景区门票的在线销售和预约。
  3. 系统管理:管理员可以设置系统的参数和配置,包括网站名称、域名、主题、样式等。
  4. 景区审核:管理员可以对景区申请进行审核和批准,确保景区信息的准确性和可靠性。
  5. 游记管理:管理员可以审核和发布游客的游记文章,展示游客的旅游经历和心得。
  6. 字典管理:管理员可以添加和编辑系统使用的字典数据,包括省份、城市、景区类型等。
  7. 景区档案:管理员可以查看景区的详细档案,包括景区的名称、地址、介绍、图片等。
  8. 景区录入:管理员可以手动录入景区信息,方便管理员对景区信息进行维护和管理。
  9. 关于我们:管理员可以编辑和发布关于公司的介绍和联系方式等信息。

二、用户前端模块:

  1. 首页:用户可以浏览旅游线路和推荐旅游景点,分类展示景点和热门景点等信息。同时可以查看景区门票预订情况和游玩攻略等信息。
  2. 门票预订:用户可以在线预订景区门票,选择游玩日期和人数等信息,实现快捷购票。
  3. 景区资讯:用户可以查看最新的景区资讯和新闻动态,了解景区的最新情况和活动信息。
  4. 游玩攻略:用户可以查看其他游客分享的游玩攻略和旅游经验,为自身的旅行提供参考和帮助。

三,系统展示

3.1 后台管理

3.2 用户端

四,核心代码展示

4.1 SbsnOrderServiceImpl


@Service
public class SbsnOrderServiceImpl implements SbsnOrderService {
    @Resource
    private SbsnOrderDao sbsnOrderDao;
    @Resource
    private TSbsnActDao tSbsnActDao;
    @Resource
    private TSbsnCode tSbsnCode;
    @Resource
    private ScenicDao scenicDao;

    @Override
    public PageInfo queryByParam(Page<SbsnOrder> page) {
        PageHelper.startPage(page.getPageNo(),page.getPageSize());
        PageInfo pageInfo = new PageInfo(sbsnOrderDao.queryByParam(page.getData()));
        return pageInfo;

    }

    /**
     * 查询全部
     * @param queryTime
     * @param scenicName
     * @return
     */
    @Override
    public List<Map> queryAll(String queryTime, String scenicName) {
        return sbsnOrderDao.queryAll(queryTime,scenicName);
    }

    /**
     * 设置订单的初始化信息
     * @param sbsnOrder 前台传过来的订单
     * @return
     */
    @Override
    @Transactional
    public SbsnOrder add(SbsnOrder sbsnOrder) {
        //设置参数 代付款
        sbsnOrder.setCodeid(ConstantUtil.OrderStatus.PENDING_PAYMENT);
        sbsnOrder.setState(ConstantUtil.OrderStatus.PENDING_PAYMENT);
        sbsnOrder.setOrdertime(new Date());
        //返回添加的主键
        int add = sbsnOrderDao.add(sbsnOrder);
        //添加状态
        TSbsnAct tSbsnAct = new TSbsnAct();
        tSbsnAct.setOrderid(sbsnOrder.getOrderid());
        tSbsnAct.setCodeid(sbsnOrder.getCodeid());
        tSbsnAct.setActcode(sbsnOrder.getCodeid());
        //查询动作名称
        tSbsnAct.setActname(tSbsnCode.queryName(sbsnOrder.getCodeid()));
        tSbsnAct.setBz("待付款");
        tSbsnAct.setCztime(sbsnOrder.getOrdertime());
        tSbsnAct.setCzrid(sbsnOrder.getUserid());
        //调用添加
        tSbsnActDao.add(tSbsnAct);

        //景区添加票数
        Scenic scenic = scenicDao.queryBy(sbsnOrder.getScenicid());
        Integer onums = scenic.getOnums();
        scenic.setOnums(onums+1);
        //修改订票信息
        scenicDao.update(scenic);

        return sbsnOrder;
    }

    /**
     * 更改订单状态
     * @param sbsnOrder 更改订单状态
     * @return
     */
    @Override
    @Transactional
    public int update(SbsnOrder sbsnOrder) {
        //设置参数 已付款
        sbsnOrder.setCodeid(ConstantUtil.OrderStatus.PAID);
        sbsnOrder.setState(ConstantUtil.OrderStatus.PAID);
        sbsnOrder.setOrdertime(new Date());
//        sbsnOrder.setCodeid(12);
//        sbsnOrder.setState(12);

        System.out.println(sbsnOrder+"----------------");
        int update = sbsnOrderDao.update(sbsnOrder);
        //设置订单状态
        TSbsnAct tSbsnAct = tSbsnActDao.queryById(sbsnOrder.getOrderid());
        tSbsnAct.setCodeid(sbsnOrder.getCodeid());
        tSbsnAct.setActcode(sbsnOrder.getCodeid());
        //查询动作名称
        tSbsnAct.setActname(tSbsnCode.queryName(tSbsnAct.getCodeid()));
        tSbsnAct.setBz("付款成功");
        tSbsnActDao.update(tSbsnAct);
        //更新景区门票
        Scenic scenic = scenicDao.queryBy(sbsnOrder.getScenicid());
        Integer snums = scenic.getSnums();
        scenic.setSnums(snums+1);
        Integer onums = scenic.getOnums();
        scenic.setOnums(onums-1);
        scenicDao.update(scenic);


        return update;
    }
    /**
     * 更改订单状态
     * @param sbsnOrder 更改订单状态
     * @return
     */
    @Override
    @Transactional
    public int setOrder(SbsnOrder sbsnOrder) {
        //设置参数 已付款
        sbsnOrder.setCodeid(ConstantUtil.OrderStatus.CANCER);
        sbsnOrder.setState(ConstantUtil.OrderStatus.CANCER);
        sbsnOrder.setOrdertime(new Date());

        int update = sbsnOrderDao.update(sbsnOrder);
        //设置订单状态
        TSbsnAct tSbsnAct = tSbsnActDao.queryById(sbsnOrder.getOrderid());
        tSbsnAct.setCodeid(sbsnOrder.getCodeid());
        tSbsnAct.setActcode(sbsnOrder.getCodeid());
        //查询动作名称
        tSbsnAct.setActname(tSbsnCode.queryName(tSbsnAct.getCodeid()));
        tSbsnAct.setBz("已取消订单");
        tSbsnActDao.update(tSbsnAct);
        //更新景区门票
        Scenic scenic = scenicDao.queryBy(sbsnOrder.getScenicid());
        Integer onums = scenic.getOnums();
        scenic.setOnums(onums-1);
        scenicDao.update(scenic);

        return update;
    }

    @Override
    @Transactional
    public int sysUpdate(SbsnOrder sbsnOrder) {
        Integer state = sbsnOrder.getState();//判断用的
        Integer codeid = sbsnOrder.getCodeid();
        if (codeid==11){
            if (state==11){
                return sbsnOrderDao.update(sbsnOrder);
            }
            sbsnOrder.setCodeid(ConstantUtil.OrderStatus.PENDING_PAYMENT);
            sbsnOrder.setState(ConstantUtil.OrderStatus.PENDING_PAYMENT);
            //添加状态
            TSbsnAct tSbsnAct = tSbsnActDao.queryById(sbsnOrder.getOrderid());
            tSbsnAct.setOrderid(sbsnOrder.getOrderid());
            tSbsnAct.setCodeid(ConstantUtil.OrderStatus.PENDING_PAYMENT);
            tSbsnAct.setActcode(ConstantUtil.OrderStatus.PENDING_PAYMENT);
            //查询动作名称
            tSbsnAct.setActname(tSbsnCode.queryName(sbsnOrder.getCodeid()));
            tSbsnAct.setBz("待付款");
            tSbsnAct.setCztime(sbsnOrder.getOrdertime());
            tSbsnAct.setCzrid(sbsnOrder.getUserid());
            //调用更改
            tSbsnActDao.update(tSbsnAct);

            //景区票数设置
            Scenic scenic = scenicDao.queryBy(sbsnOrder.getScenicid());
            if (state!=11){
                Integer onums = scenic.getOnums();
                scenic.setOnums(onums+1);
            }
            if (state==12){
                scenic.setSnums(scenic.getSnums()-1);
            }
            //修改订票信息
            scenicDao.update(scenic);
            //修改订单信息
            return sbsnOrderDao.update(sbsnOrder);
        }else if (codeid==12){
            if (state==12){
                return sbsnOrderDao.update(sbsnOrder);
            }
            //已付款
            return update(sbsnOrder);
        }else{
            if (state==13){
                return sbsnOrderDao.update(sbsnOrder);
            }
            //已取消
            //设置参数 已付款
            sbsnOrder.setCodeid(ConstantUtil.OrderStatus.CANCER);
            sbsnOrder.setState(ConstantUtil.OrderStatus.CANCER);

            //设置订单状态
            TSbsnAct tSbsnAct = tSbsnActDao.queryById(sbsnOrder.getOrderid());
            tSbsnAct.setCodeid(codeid);
            tSbsnAct.setActcode(codeid);
            //查询动作名称
            tSbsnAct.setActname(tSbsnCode.queryName(tSbsnAct.getCodeid()));
            tSbsnAct.setBz("已取消订单");
            tSbsnActDao.update(tSbsnAct);
            //更新景区门票
            Scenic scenic = scenicDao.queryBy(sbsnOrder.getScenicid());
            scenic.setSnums(scenic.getSnums()-1);
            scenicDao.update(scenic);

            return sbsnOrderDao.update(sbsnOrder);
        }
    }

    @Override
    public int deleteById(Integer orderid) {
        return sbsnOrderDao.deleteById(orderid);
    }

}

4.2 NewsServiceImpl


@Service
public class NewsServiceImpl implements NewsService {

    @Autowired
    private NewsDao newsDao;

    /**
     * 根据id查询分页
     * @param page
     * @return
     */
    @Override
    public PageInfo queryById(Page<DicNechannel> page) {
        PageHelper.startPage(page.getPageNo(), page.getPageSize());
        PageInfo pageInfo = new PageInfo(newsDao.queryById(page.getData()));
        return pageInfo;
    }


    @Override
    public PageInfo queryByParam(Page<News> page) {
        PageHelper.startPage(page.getPageNo(),page.getPageSize());
        PageInfo pageInfo = new PageInfo(newsDao.queryByParam(page.getData()));
        System.out.println(pageInfo);
        return pageInfo;
    }

    @Override
    public int add(News news) {
        news.setCjtime(DateUtil.getDate());
        news.setUpdatetime(DateUtil.getDate());
        return newsDao.add(news);
    }

    @Override
    public int update(News news) {
        news.setUpdatetime(DateUtil.getDate());
        return newsDao.update(news);
    }

    /**
     * 首页查询
     * @return
     */
    @Override
    public List<News> queryBy() {
        return newsDao.queryBy();
    }

    @Override
    public int deleteById(Integer id) {
        return newsDao.deleteById(id);
    }
}

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

毕业设计|SSM+VUE的旅游平台系统 的相关文章

随机推荐

  • 毕业设计|课程设计|SSM开发实现图书管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 工业相机与镜头选型方法(含实例)

    一 相机介绍及选型方法 1 工业相机介绍 工业相机与我们手机上面的相机或者我们单反相机不同 工业相机它能够使用各种恶劣的工作环境 比如说高温 高压 高尘等 工业相机主要有面阵相机和线阵相机 线阵相机主要用于检测精度要求很高 运动速度很快的场
  • 人工智能机器人:未来生活的智能伙伴

    导言 随着人工智能的不断进步 智能机器人正逐渐走入人们的日常生活 成为了生活和工作中的得力助手 本文将深入探讨人工智能机器人的发展趋势 关键技术以及对未来生活的影响 人工智能和机器人技术的迅猛发展正在深刻地改变我们的生活和工作方式 本文将深
  • 毕业设计|基于SpringBoot+Vue的前后端分离的电影购票系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 课程资料|最优化方法-电子版教材!

    写在前面 学习成绩 不管是是保研 考研 出国留学 还是找实习找工作 都是你极为重要的支撑 为了帮助同学们 更好地学习专业课 斩获高绩点 岛主将持续推出 CS相关的专业教材资料 希望同学们能够在接下来的学习生活中取得良好的成绩 今天为大家带来
  • 数说CS | 本校生源占比65%!一文揭秘北大智能学院近两年拟录取情况!

    写在前面 北京大学智能学院 仅开设一门交叉学科 招收哪些专业 保研录取情况如何 今天 岛主就带你深度揭秘 北京大学智能学院 01 院校介绍 北京大学是全球智能学科的诞生地 2002年北京大学创办了我国第一个智能科学系 2007年成功在人工智
  • 工业级路由器在智能交通系统(ITS)中的创新应用

    智能交通系统 ITS 作为一种先进的交通管理与控制系统 旨在提高交通运输系统的效率 安全性和便捷性 随着科技的不断发展 智能交通系统已经成为城市交通管理的重要组成部分 而工业级路由器作为一种可靠的网络通信设备 其在智能交通系统中的创新应用正
  • 自动驾驶技术:驶向未来的智能之路

    导言 自动驾驶技术正引领着汽车产业向着更安全 高效 智能的未来演进 本文将深入研究自动驾驶技术的核心原理 关键技术 应用场景以及对交通 社会的深远影响 1 简介 自动驾驶技术是基于先进传感器 计算机视觉 机器学习等技术的创新 旨在实现汽车在
  • 开题报告-基于SpringBoot的求职招聘系统的设计与实现

    一 选题的根据 由于临近毕业季 同学们也即将踏上自己的岗位 择业也成为了同学们当下最为关心的问题 为了能够更加方便的服务同学们找工作 最快最有效率的方式莫过于计算机网络 所以我就因此开发了这一个求职招聘系统 为广大求职者和各企业的人事单位提
  • Dirsearch简单使用

    目录 简介 特性 安装 使用 python3 dirsearch py h 查看工具使用帮助 常用命令 python3 dirsearch py u URL python dirsearch py u https www google co
  • Linux unzip解压多个文件

    前情介绍 最近下载了imagenet1k数据集 令人难受的是这里边有很多的zip包 我总不能一个一个解压吧 这就太费时了 有点程序员思维很重要 批量解压 解决办法 假设当前目录下有多个zip文件 需要 unzip zip 或者 unzip
  • 毕设项目-基于Springboot和Vue实现蛋糕商城系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • xv6(12文件系统Inode&;Directory&;Path

    签三方前查一下校招黑名单 对你真没啥坏处 靠谱 也可以找我push 华为上海终端 各位大大帮忙看看 发的一堆sp被鸽麻了 求求大家投下小米 谈谈c 方向 校招 华为15A vs 南湖实验室 华为15A vs 南湖实验室 27届Java求建议
  • VPS用途大揭秘:如何用VPS改变你的数字生活

    VPS是一种虚拟化技术 允许用户在单一物理服务器上创建多个独立的虚拟服务器 这些虚拟服务器拥有自己的操作系统 资源和配置 就像独立的物理服务器一样 1 为什么选择VPS 成本效益 VPS相对于独立服务器来说成本更低 但仍提供了高度的自定义和
  • 从OpenInfra看开源软件的可持续、高质量发展

    近些年 云计算加快普及应用 作为催化剂和引擎之一 开源思想和开源软件功不可没 比如 国内很多大型头部企业当初就采用了开放开源的OpenStack作为其云的底座 时过境迁 随着人们对于云计算的认知和应用越来越成熟 OpenStack的使用方式
  • 人工智能驱动的智慧城市:科技之光照亮未来城市发展

    导言 人工智能在智慧城市建设中扮演着关键角色 通过智能化 自动化的手段 为城市提供高效 智能的管理和服务 本文将深入研究人工智能在智慧城市中的应用 创新技术以及对城市未来发展的引领作用 智慧城市是利用先进的信息技术和大数据分析手段 以提高城
  • 浮点数保留3位小数的方法

    test 量化开发 策略 面试后的这些迹象 告诉你 你已经成功了 签三方前查一下校招黑名单 对你真没啥坏处 知乎高赞 有什么忠告想告诉刚刚毕业的年轻人 理想 大模型面经 理想ai 数据工程 浮点数保留3位小数的方法 链接 https ac
  • 深入理解人工智能中的图神经网络:原理、应用与未来展望

    导言 图神经网络 Graph Neural Networks GNNs 作为人工智能领域的一项前沿技术 在社交网络分析 推荐系统 生物信息学等多个领域展现出卓越的性能 本文将深入剖析图神经网络的原理 当前应用场景以及未来可能的发展方向 1
  • pwn入门:基本栈溢出之ret2libc详解(以32位+64位程序为例)

    目录 写在开头 题目简介 解题思路 前置知识 简要了解 plt表和got表 延迟绑定 例题详解 32位 64位 总结与思考 写在开头 这篇博客早就想写了 但由于近期事情较多 一直懒得动笔 近期被领导派去临时给合作单位当讲师 要给零基础的学员
  • 毕业设计|SSM+VUE的旅游平台系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板