21基于java的旅游信息管理系统

项目背景

根据旅游行业的这种现状,提出解决问题的一个可行性方法,实现了旅游管理的网络化。

项目总体介绍

旅游系统设计分为前后网站和后台管理系统,功能点包含旅游景点信息分类展示、景点详情(地理位置、特色景点概述等)、下单预订等功能;
角色分为管理员和普通用户。
用户可以对旅游线路及其详细信息进行查询、预定旅游线路等。详细如下:

  1. 用户注册,登录
  2. 查看和预订旅游路线 (未登录只能查看,下同)
  3. 查看和预订旅游景点
  4. 查看和预订餐饮住宿
  5. 查看和预订旅游车票
  6. 查看和预订旅游保险
  7. 查看和预订旅游攻略
  8. 留言评论
  9. .....

管理员可以修改旅游线路信息、删除和增加旅游线路、增加和修改公告信息、留言评论管理等等,详细如下;

  1. 系统用户登录
  2. 用户管理
  3. 内容管理(包含上面所有的信息发布,管理,增删改查...)
  4. 用户订单管理
  5. 数据统计(包括用户分析,路线分析,景点分析,酒店分析等等)
  6. ....

项目搭建环境

> java jdk版本:1.8及以上
> 后台框架:java spring springmvc mybatis springbotoot等
> 前端框架:html css javascript vue等
> 开发工具: idea或者eclipse都可
> 数据库: mysql 5.7及以上
> 服务器: tomcat
> 更多内容可查看:http://projecthelp.top

部分核心代码

import org.springframework.stereotype.Service;
import xyz.shiguangliang.mybatis.dao.UserMapper;

import xyz.shiguangliang.mybatis.domain.User;
import xyz.shiguangliang.service.UserService;
import xyz.shiguangliang.util.query.QueryInfo;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Objects;

@Service
public class UserServiceImpl implements UserService {
    @Resource
    private UserMapper userMapper;

    //登录
    @Override
    public User login(String username, String password) {
        User user = userMapper.selectLogin(username,password);
        if (user != null) {
            //登录次数加一
            if (user.getIntimes() !=  null) {
                user.setIntimes(user.getIntimes() + 1);
            }else {
                user.setIntimes(1);
            }
            //更新登录时间
            user.setLastlogin(new Date());
            return user;
        }
        return null;
    }

    //注册
    @Override
    public boolean register(User user) {
        int i = 0;
        //检测用户是否存在
        User user1 = userMapper.selectUsername(user.getUsername());
        if (user1 == null) {
            i = userMapper.insert(user);
        }
        return i > 0;
    }

    //用户列表
    @Override
    public QueryInfo getUserList(String query, Integer pagenum,Integer pagesize) {
        QueryInfo queryInfo = new QueryInfo();
        int start;
        int end;
        if (pagenum == null||pagesize == null){
            pagenum =0;
            pagesize = 3;
        }
        start = (pagenum-1)*pagesize;
        end = pagesize;
        int userSize = userMapper.selectUserListLimitSize(query,start,end);
        List<User> users = userMapper.selectUserListLimit(query,start,end);
        queryInfo.setList(users);
        queryInfo.setTotal(userSize);
        return queryInfo;
    }

    //删除用户
    @Override
    public int deleteUser(Integer tid) {
        return userMapper.deleteByPrimaryKey(tid);
    }

    //通过id查找用户
    @Override
    public User findById(Integer tid) {
        return userMapper.selectByPrimaryKey(tid);
    }



    //更新用户
    @Override
    public int updateUser(User user) {
        if (user.getPassword()==null|| Objects.equals(user.getPassword(), "")){
            user.setPassword(userMapper.selectByPrimaryKey(user.getTid()).getPassword());
        }
        return userMapper.updateByPrimaryKey(user);
    }

    //通过用户名查找用户
    @Override
    public User findByUsername(String username) {
        return userMapper.selectUsername(username);
    }

    //获取用户权限
    @Override
    public int getPower(String username) {
        return userMapper.selectUsername(username).getPower();
    }
}

useMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="xyz.shiguangliang.mybatis.dao.UserMapper">
  <resultMap id="BaseResultMap" type="xyz.shiguangliang.mybatis.domain.User">
    <id column="tid" jdbcType="INTEGER" property="tid" />
    <result column="username" jdbcType="VARCHAR" property="username" />
    <result column="password" jdbcType="VARCHAR" property="password" />
    <result column="teachername" jdbcType="VARCHAR" property="teachername" />
    <result column="dno" jdbcType="INTEGER" property="dno" />
    <result column="power" jdbcType="INTEGER" property="power" />
    <result column="intimes" jdbcType="INTEGER" property="intimes" />
    <result column="lastlogin" jdbcType="TIMESTAMP" property="lastlogin" />
  </resultMap>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
    delete from teacher
    where tid = #{tid,jdbcType=INTEGER}
  </delete>
  <insert id="insert" parameterType="xyz.shiguangliang.mybatis.domain.User">
    insert into teacher (tid, username, password, 
      teachername, dno, power, 
      intimes, lastlogin)
    values (#{tid,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, 
      #{teachername,jdbcType=VARCHAR}, #{dno,jdbcType=INTEGER}, #{power,jdbcType=INTEGER}, 
      #{intimes,jdbcType=INTEGER}, #{lastlogin,jdbcType=TIMESTAMP})
  </insert>
  <update id="updateByPrimaryKey" parameterType="xyz.shiguangliang.mybatis.domain.User">
    update teacher
    set username = #{username,jdbcType=VARCHAR},
      password = #{password,jdbcType=VARCHAR},
      teachername = #{teachername,jdbcType=VARCHAR},
      dno = #{dno,jdbcType=INTEGER},
      power = #{power,jdbcType=INTEGER},
      intimes = #{intimes,jdbcType=INTEGER},
      lastlogin = #{lastlogin,jdbcType=TIMESTAMP}
    where tid = #{tid,jdbcType=INTEGER}
  </update>
  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    select tid, username, password, teachername, dno, power, intimes, lastlogin
    from teacher
    where tid = #{tid,jdbcType=INTEGER}
  </select>
  <select id="selectAll" resultMap="BaseResultMap">
    select tid, username, password, teachername, dno, power, intimes, lastlogin
    from teacher
  </select>
    <select id="selectLogin" resultType="xyz.shiguangliang.mybatis.domain.User">
        select tid, username, password, teachername, dno, power, intimes, lastlogin
        from teacher
        where username = #{username} and password = #{password}
    </select>
  <select id="selectUsername" resultType="xyz.shiguangliang.mybatis.domain.User">
    select tid, username, password, teachername, dno, power, intimes, lastlogin
        from teacher
        where username = #{username}
  </select>
  <select id="selectUserListLimit" resultType="xyz.shiguangliang.mybatis.domain.User">
    select tid, username, password, teachername, dno, power, intimes, lastlogin
    from teacher
    where
    /*条件判断*/
    <if test="#{query} != null and #{query} != ''">
      /*模糊查询*/
      <bind name="query2" value="'%' + query + '%'"/>
      username like #{query2}
    </if>
    LIMIT #{start},#{end}
  </select>
  <select id="selectUserListLimitSize" resultType="java.lang.Integer">
    select count(*)
    from teacher
    where
    /*条件判断*/
    <if test="#{query} != null and #{query} != ''">
      /*模糊查询*/
      <bind name="query2" value="'%' + query + '%'"/>
      username like #{query2}
    </if>
  </select>
</mapper>

系统截图

下面仅展示部分主要功能

系统用户端

  • 首页
    在这里插入图片描述

  • 登录或注册
    在这里插入图片描述

  • 旅游路线查看
    在这里插入图片描述

  • 查看旅游景点
    在这里插入图片描述
    在这里插入图片描述

  • 查看旅游车票和餐饮住宿
    在这里插入图片描述

  • 注意事项
    在这里插入图片描述

系统管理端

  • 登录
    在这里插入图片描述

  • 首页
    在这里插入图片描述

  • 注册用户管理
    在这里插入图片描述

-系统用户管理
在这里插入图片描述

  • 内容管理
    包括旅游路线,旅游景点,酒店管理,留言管理等等(下面以旅游路线为例)
    在这里插入图片描述
    新增:
    在这里插入图片描述
    修改:
    在这里插入图片描述
  • 订单管理
    在这里插入图片描述
  • 用户分析
    在这里插入图片描述
  • 路线分析
    在这里插入图片描述
  • 景点分析
    在这里插入图片描述
  • 酒店分析
    在这里插入图片描述
  • 订单分析
    在这里插入图片描述
  • 攻略分析
    在这里插入图片描述
  • 车票分析
    在这里插入图片描述
  • 保险分析
    在这里插入图片描述

系统完整

在这里插入图片描述

原文链接:https://www.cnblogs.com/projecthelp/p/17374538.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:21基于java的旅游信息管理系统 - Python技术站

(0)
上一篇 2023年5月5日
下一篇 2023年5月5日

相关文章

  • 使用CXF和Jersey框架来进行Java的WebService编程

    使用CXF和Jersey框架进行Java的WebService编程步骤如下: 配置pom.xml文件,添加CXF和Jersey框架相关的依赖。 “` org.apache.cxf cxf-bundle-jaxrs 3.3.6 org.glassfish.jersey.core jersey-server 2.30 org.glassfish.jersey.…

    Java 2023年5月31日
    00
  • Java多线程 原子性操作类的使用

    Java多线程 原子性操作类的使用 在并发编程中,多个线程同时进行操作时,可能会出现线程安全问题。例如两个线程同时对同一个变量进行增加操作,结果可能不是期望的那个。Java提供了原子性操作类来解决这个问题。 原子性操作类 Java原子类是Java编程语言中的一种特殊类,它具有原子性,线程安全性和可比性,并提供了一种简单的基于锁的技术,通过这种技术实现多线程并…

    Java 2023年5月19日
    00
  • Springboot和Jpa实现学生CRUD操作代码实例

    下面我会详细讲解“Springboot和Jpa实现学生CRUD操作代码实例”的完整攻略。 一、前置知识 在进行本篇攻略之前,需要掌握以下的技术和知识: Spring Boot的基本使用方法; JPA的基本使用方法; MySQL数据库的基本使用方法。 如果你还不熟悉这些知识,可以先查看相关的官方文档或者参考相关的教程。 二、创建Spring Boot项目 首先…

    Java 2023年5月20日
    00
  • JSP由浅入深(5)—— Scriptlets和HTML的混合

    下面我将为你详细讲解“JSP由浅入深(5)—— Scriptlets和HTML的混合”的完整攻略,包含以下内容: Scriptlets的概念及使用 在Scriptlets中使用Java代码 Scriptlets中的变量声明与使用 Scriptlets与HTML的混合使用 示例说明 1. Scriptlets的概念及使用 Scriptlets是JSP中的一种脚…

    Java 2023年6月15日
    00
  • Java中的布隆过滤器你真的懂了吗

    Java中的布隆过滤器攻略 一、什么是布隆过滤器? 布隆过滤器(Bloom Filter)是一个空间效率非常高的数据结构,主要用于判断一个元素是否在集合中。它的基本思想是利用多个不同的哈希函数来判断元素是否在集合中,可以高效地检索这些元素,降低了查询时间和存储空间。 二、布隆过滤器的实现 2.1 对于一个数据结构,我们会使用哪些数据结构? 在Java中,我们…

    Java 2023年5月26日
    00
  • 如何进行Java代码混淆?

    下面是Java代码混淆的完整使用攻略: 什么是代码混淆? 代码混淆是一种技术,用于在不改变代码功能的情况下,通过改变代码的结构和逻辑,使之变得更难理解和分析,从而增加反向工程的难度。 为什么要进行代码混淆? 在Java应用程序中,代码是以明文形式存在的。如果黑客轻易地分析出加密算法,则攻击者可以使用相同的算法和密钥来破解系统。因此,代码混淆是为了增加系统的安…

    Java 2023年5月11日
    00
  • 图书管理系统java版

    “图书管理系统java版”完整攻略 1. 简介 “图书管理系统java版”是一个用Java语言开发的图书管理系统,旨在提供一个方便管理图书信息的工具,可实现添加、删除、修改、查询等功能。 2. 环境搭建 在开始使用“图书管理系统java版”之前,需要先搭建Java环境和数据库环境。具体步骤如下: 下载安装Java开发工具包(JDK),建议使用最新版本。 下载…

    Java 2023年5月20日
    00
  • JAVA验证码工具实例代码

    JAVA验证码工具实例代码完整攻略 验证码是一种用来区分人类和计算机的一种技术,通常应用于网站注册、登录等场景中。在JAVA中,我们可以借助一些工具来实现验证码的生成和验证,下面我们就来了解一下。 验证码工具的选择 JAVA中有很多开源的验证码工具,常见的有Kaptcha、JCaptcha等。这里我们介绍一种比较常用的JAVA验证码工具——JCaptcha。…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部