项目编号:BS-PT-031

本系统基于 Springboot开发,前台采用Bootstrap 实现,开发工具为IDEA/ECLIPSE,数据库为MYSQL,系统功能完整,运行无误,适合做毕业设计使用。

系统分为网站前台和后台管理:

前台系统可以进行用户注册登陆,查看预定酒店,查看预定景点线路,可以发布景点攻略等操作。

后台系统可以进行用户管理,景点管理,线路管理,攻略审核管理等操作。

下面就系统部分功能进行展示:

前端系统:

景区游玩线路

线路详情

我关注的线路

景区游玩攻略

发布攻略

酒店预定

景点预定

我的预定

后台管理系统

用户管理

酒店管理

景点管理

攻略管理

景点线路管理

以上就是基于Springboot实现的旅游网站管理系统的部分功能,本系统功能结构完整,层次结构清晰,方便进行修改和完善。

部分实现代码:

package com.power.travel.service;import com.power.travel.core.Result;
import com.power.travel.core.ResultGenerator;
import com.power.travel.model.User;
import com.power.travel.util.CookieUitl;
import com.power.travel.util.IdGenerator;
import com.power.travel.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@Service
public class LoginService {@Autowiredprivate UserRepository userRepository;/**** @param user  登陆用户名和密码的数据封装* @param response* @return*/public Result login(User user, HttpServletResponse response) {//调用JPA的的接口来查询数据库:根据用户名来查询User userByUsername = userRepository.findUserByUsername(user.getUsername());if (userByUsername == null) {return ResultGenerator.genFailResult("用户名错误!");} else {//如果根据用户名能查到数据:再比对密码if (user.getPassword().equals(userByUsername.getPassword())) {//如果密码一致,登陆成功//将用户名存入CookieCookie cookie = new Cookie("username", user.getUsername());cookie.setPath("/");cookie.setMaxAge(3600);response.addCookie(cookie);return ResultGenerator.genSuccessResult();} else {//登陆失败return ResultGenerator.genFailResult("密码错误!");}}}public void logout(HttpServletRequest request, HttpServletResponse response) {Cookie cookie = CookieUitl.get(request, "username");if(cookie != null){CookieUitl.set(response,"username",null,0);}//        String value = null;
//
//        Cookie[] cookies = request.getCookies();
//        if (cookies == null){
//            System.out.println("error");
//        }else{
//            for (int i = 0;i<cookies.length;i++){
//                if(cookies[i].getName().equals("root")){
//                    value = cookies[i].getValue();
//                }
//            }
//        }
//
//        Cookie cookie = new Cookie("username",value);
//        cookie.setMaxAge(-1);}public Result register(User user) {//查询用户名是否存在User userByUsername = userRepository.findUserByUsername(user.getUsername());if(userByUsername != null){return ResultGenerator.genFailResult("用户名重复!");}//Todo 这里有一个事务操作user.setId(IdGenerator.id());userRepository.save(user);return ResultGenerator.genSuccessResult();}
}
package com.power.travel.service;import com.power.travel.core.Result;
import com.power.travel.core.ResultGenerator;
import com.power.travel.core.ServiceException;
import com.power.travel.model.*;
import com.power.travel.repository.*;
import com.power.travel.util.CookieUitl;
import com.power.travel.util.IdGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.thymeleaf.util.StringUtils;import javax.persistence.criteria.Predicate;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;@Service
public class ReserveService {@Autowiredprivate HotelRepository hotelRepository;@Autowiredprivate AttractionsRepository attractionsRepository;@Autowiredprivate UserRepository userRepository;@Autowiredprivate UserHotelRepository userHotelRepository;@Autowiredprivate UserAttractionsRepository userAttractionsRepository;public Page<Hotel> reserveHotelListUI(String searchName, Pageable pageable) {//查询启用的酒店列表Page<Hotel> hotelPage = hotelRepository.findAll((root, query, cb) -> {List<Predicate> predicates = new ArrayList<>();//status状态,查询状态为0,启动的酒店predicates.add((cb.equal(root.get("status"), 0)));//酒店name模糊查询if (!StringUtils.isEmpty(searchName)) {predicates.add((cb.like(root.get("name"), "%" + searchName + "%")));}query.where(predicates.toArray(new Predicate[]{}));query.orderBy(cb.desc(root.get("createDate")));return null;}, pageable);return hotelPage;}public Hotel findHotelById(String id) {return hotelRepository.findById(id).orElseThrow(() -> new ServiceException("酒店id错误!"));}public Page<Attractions> reserveAttractionsListUI(String searchName, Pageable pageable) {//查询启用的景点列表Page<Attractions> attractionsPage = attractionsRepository.findAll((root, query, cb) -> {List<Predicate> predicates = new ArrayList<>();//status状态,查询状态为0,启动的景点predicates.add((cb.equal(root.get("status"), 0)));//景点name模糊查询if (!StringUtils.isEmpty(searchName)) {predicates.add((cb.like(root.get("name"), "%" + searchName + "%")));}query.where(predicates.toArray(new Predicate[]{}));query.orderBy(cb.desc(root.get("createDate")));return null;}, pageable);return attractionsPage;}public Attractions findAttractionsById(String id) {return attractionsRepository.findById(id).orElseThrow(() -> new ServiceException("景点id错误!"));}public List<UserHotel> getReserveHotelByUser(HttpServletRequest request) {Cookie cookie = CookieUitl.get(request, "username");if (cookie == null) {throw new ServiceException("未能获得正确的用户名");}User user = userRepository.findUserByUsername(cookie.getValue());return userHotelRepository.findUserHotelsByUser(user);}@Transactional(rollbackFor = Exception.class)public Result cancelReserve(HttpServletRequest request, String id) {Cookie cookie = CookieUitl.get(request, "username");if (cookie == null) {throw new ServiceException("用户没有登录!");}Hotel hotel = findHotelById(id);User user = userRepository.findUserByUsername(cookie.getValue());UserHotel userHotel = userHotelRepository.findUserHotelByHotelAndUser(hotel, user);//存在值就是取消预约.不存在值就是预约if (userHotel != null) {userHotelRepository.delete(userHotel);} else {UserHotel newUserHotel = new UserHotel();newUserHotel.setId(IdGenerator.id());newUserHotel.setCreateDate(new Date());newUserHotel.setUser(user);newUserHotel.setHotel(hotel);userHotelRepository.saveAndFlush(newUserHotel);}return ResultGenerator.genSuccessResult();}public Boolean isReserveHotel(HttpServletRequest request, String id) {Cookie cookie = CookieUitl.get(request, "username");if (cookie != null) {User user = userRepository.findUserByUsername(cookie.getValue());Hotel hotel = findHotelById(id);UserHotel userHotel = userHotelRepository.findUserHotelByHotelAndUser(hotel, user);//每个酒店只能预约一次if (userHotel != null) {return true;}}return false;}public List<UserAttractions> getReserveAttractionsByUser(HttpServletRequest request) {Cookie cookie = CookieUitl.get(request, "username");if (cookie == null) {throw new ServiceException("未能获得正确的用户名");}User user = userRepository.findUserByUsername(cookie.getValue());return userAttractionsRepository.findUserAttractionsByUser(user);}@Transactional(rollbackFor = Exception.class)public Result cancelAttractionsReserve(HttpServletRequest request, String id) {Cookie cookie = CookieUitl.get(request, "username");if (cookie == null) {throw new ServiceException("用户没有登录!");}Attractions attractions = findAttractionsById(id);User user = userRepository.findUserByUsername(cookie.getValue());UserAttractions userAttractions = userAttractionsRepository.findUserAttractionsByAttractionsAndUser(attractions, user);//存在值就是取消预约.不存在值就是预约if (userAttractions != null) {userAttractionsRepository.delete(userAttractions);} else {UserAttractions newUserAttractions = new UserAttractions();newUserAttractions.setId(IdGenerator.id());newUserAttractions.setCreateDate(new Date());newUserAttractions.setUser(user);newUserAttractions.setAttractions(attractions);userAttractionsRepository.saveAndFlush(newUserAttractions);}return ResultGenerator.genSuccessResult();}public Boolean isReserveAttractions(HttpServletRequest request, String id) {Cookie cookie = CookieUitl.get(request, "username");if (cookie != null) {User user = userRepository.findUserByUsername(cookie.getValue());Attractions attractions = findAttractionsById(id);UserAttractions userAttractions = userAttractionsRepository.findUserAttractionsByAttractionsAndUser(attractions, user);//每个景点只能预约一次if (userAttractions != null) {return true;}}return false;}public List<Hotel> getTop10Hotel() {PageRequest pageable = PageRequest.of(0, 10);//查询启用的酒店列表Page<Hotel> hotelPage = hotelRepository.findAll((root, query, cb) -> {List<Predicate> predicates = new ArrayList<>();//status状态,查询状态为0,启动的酒店predicates.add((cb.equal(root.get("status"), 0)));query.where(predicates.toArray(new Predicate[]{}));query.orderBy(cb.desc(root.get("createDate")));return null;}, pageable);return hotelPage.getContent();}public List<Attractions> getTop10Attractions() {PageRequest pageable = PageRequest.of(0, 10);Page<Attractions> attractionsPage = attractionsRepository.findAll((root, query, cb) -> {List<Predicate> predicates = new ArrayList<>();//status状态,查询状态为0,启动的景点predicates.add((cb.equal(root.get("status"), 0)));//景点name模糊查询query.where(predicates.toArray(new Predicate[]{}));query.orderBy(cb.desc(root.get("createDate")));return null;}, pageable);return attractionsPage.getContent();}
}
package com.power.travel.service;import com.power.travel.core.Result;
import com.power.travel.core.ResultGenerator;
import com.power.travel.core.ServiceException;
import com.power.travel.model.TravelRoute;
import com.power.travel.model.User;
import com.power.travel.model.UserRoute;
import com.power.travel.repository.TravelRouteRepository;
import com.power.travel.repository.UserRepository;
import com.power.travel.repository.UserRouteRepository;
import com.power.travel.util.CookieUitl;
import com.power.travel.util.IdGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.thymeleaf.util.StringUtils;import javax.persistence.criteria.Predicate;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;@Service
public class RouteService {@Autowiredprivate TravelRouteRepository travelRouteRepository;@Autowiredprivate UserRepository userRepository;@Autowiredprivate UserRouteRepository userRouteRepository;public Page<TravelRoute> TravelRouteListUI(String searchName, Pageable pageable) {//查询启用的景区游玩路线列表Page<TravelRoute> travelRoutePage = travelRouteRepository.findAll((root, query, cb) -> {List<Predicate> predicates = new ArrayList<>();//status状态,查询状态为0,启动的路线predicates.add((cb.equal(root.get("status"), 0)));//景区游玩路线name模糊查询if (!StringUtils.isEmpty(searchName)) {predicates.add((cb.like(root.get("name"), "%" + searchName + "%")));}query.where(predicates.toArray(new Predicate[]{}));query.orderBy(cb.desc(root.get("createDate")));return null;}, pageable);return travelRoutePage;}public TravelRoute findTravelRouteById(String id) {return travelRouteRepository.findById(id).orElseThrow(() -> new ServiceException("路线id错误!"));}public Boolean isRoute(HttpServletRequest request, String id) {Cookie cookie = CookieUitl.get(request, "username");if (cookie != null) {User user = userRepository.findUserByUsername(cookie.getValue());TravelRoute travelRoute = findTravelRouteById(id);UserRoute userRoute = userRouteRepository.findUserRouteByTravelRouteAndUser(travelRoute, user);//每个路线只能关注一次if (userRoute != null) {return true;}}return false;}public List<UserRoute> getTravelRouteByUser(HttpServletRequest request) {Cookie cookie = CookieUitl.get(request, "username");if (cookie == null) {throw new ServiceException("未能获得正确的用户名");}User user = userRepository.findUserByUsername(cookie.getValue());return userRouteRepository.findUserRouteByUser(user);}@Transactional(rollbackFor = Exception.class)public Result cancelTravelRouteReserve(HttpServletRequest request, String id) {Cookie cookie = CookieUitl.get(request, "username");if (cookie == null) {throw new ServiceException("用户没有登录!");}TravelRoute travelRoute = findTravelRouteById(id);User user = userRepository.findUserByUsername(cookie.getValue());UserRoute userRoute = userRouteRepository.findUserRouteByTravelRouteAndUser(travelRoute, user);//存在值就是取消预约.不存在值就是预约if (userRoute != null) {userRouteRepository.delete(userRoute);} else {UserRoute newUserRoute = new UserRoute();newUserRoute.setId(IdGenerator.id());newUserRoute.setCreateDate(new Date());newUserRoute.setUser(user);newUserRoute.setTravelRoute(travelRoute);userRouteRepository.saveAndFlush(newUserRoute);}return ResultGenerator.genSuccessResult();}public List<TravelRoute> findTop10Route() {PageRequest pageable = PageRequest.of(0, 10);//查询启用的景区游玩路线列表Page<TravelRoute> travelRoutePage = travelRouteRepository.findAll((root, query, cb) -> {List<Predicate> predicates = new ArrayList<>();//status状态,查询状态为0,启动的路线predicates.add((cb.equal(root.get("status"), 0)));query.where(predicates.toArray(new Predicate[]{}));query.orderBy(cb.desc(root.get("createDate")));return null;}, pageable);return travelRoutePage.getContent();}
}

基于Springboot实现旅游网站系统开发相关推荐

  1. 基于springboot校园二手网站系统 毕业设计-附源码221414

    目 录 摘要 1 1 绪论 1 1.1 研究背景 1 1.2国内外研究现状 1 1.3论文结构与章节安排 1 2 校园二手网站系统系统分析 3 2.1 可行性分析 3 2.2 系统流程分析 3 2.2 ...

  2. 基于PHP的旅游网站的开发与设计

    目录 第1章 绪论 3 1.1 课题背景 3 1.2 电子商务的发展趋势 3 1.3企业网站的建立及电子商务的意义 4 第2章 电子商务简介 6 2.1 电子商务的来临 6 2.2 电子商务的概念 6 ...

  3. springboot毕业设计 基于springboot家教预约网站系统毕业设计设计与实现参考

    功能概要 (1)系统设置:设置关于我们.联系我们.加入我们.法律声明的信息. (2)广告管理:设置网站首页轮播图和链接地址. (3)留言管理:显示用户通过前台留言的列表,支持删除. (4)会员中心:显 ...

  4. 基于springboot的音乐网站的设计与实现(带论文)

    项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等.这里根据疫情当下,你 ...

  5. 基于SpringBoot苔藓植物科普网站 毕业设计-附源码345641

    基于SpringBoot苔藓植物 科普网站系统 摘 要 苔藓植物是在植物界中由水生生活方式向陆生生活方式的一个过度类群,由于大多数植物体一般比较矮小,结构简单,而且为人类直接利用的种类不多,所以很少引 ...

  6. java计算机毕业设计基于springboot 医院急诊挂号系统

    项目介绍 人难免会有生病的时候,尤其是当一些突发情况下,一旦发生一些疾病很可能会危及生命.这时候如果按照常规的方式进行挂号是很浪费时间的一件事情,更重要的是很可能错过最好的治疗机会,所以各大医院基本都 ...

  7. 基于springboot地方旅游系统的设计与实现

    摘    要 本次设计内容是基于Springboot的旅游系统的设计与实现,采用B/S三层架构分别是Web表现层.Service业务层.Dao数据访问层,并使用Springboot,MyBatis二大 ...

  8. 基于JAVA济南旅游网站计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA济南旅游网站计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA济南旅游网站计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  9. 基于Springboot的旅游公司网站毕业设计源码110929

    基于Springboot的旅游公司网站的设计 摘 要 改革开放以来,我国的旅游业有了非常迅速的发展,但是比较而言,我国国内旅游业发展的广度深度都远远不能适应经济发展和人民生活水平提高的需要.随着市场经 ...

最新文章

  1. 如何获取有性能问题的SQL
  2. java process started_Java HistoricProcessInstanceQuery.startedBy方法代碼示例
  3. 企业网络推广期间对于易流失用户群体企业网络推广有话说
  4. sqoop 增量导入,不重复
  5. 一文读懂残差网络ResNet
  6. Spring Boot 整合 Shiro
  7. mysql本地连接错误解决办法
  8. VirtualBox在win10下安装一个manjaro linux操作系统的教程
  9. 正式开始学习GO语言
  10. 阿里云10 PB+/天的日志系统设计和实现
  11. pop和push等使用方法,every和some、join
  12. SQL数据库有密码的话,就会弹出那个对话框
  13. Ruby Tip:定义索引操作符
  14. java最终类不能派生子类_最终类不能派生子类,最终方法不能被重写 (2.0分)_学小易找答案...
  15. c语言 素数环,C语言素数环 DFS +回溯
  16. ie浏览器升级的正确姿势
  17. 单片机c语言轻松入门 pdf,单片机C语言轻松入门(第2版)
  18. 如何在码云上面上传本地项目
  19. 视频本地化之 AE 处理流程
  20. 医学人工智能读书会与黄智生教授简历(公号回复“医学AI读书会”下载PDF资料,欢迎转发、赞赏、支持科普)

热门文章

  1. Nginx强制https访问
  2. NVL 和NVL2函数
  3. 15款最好的网站音乐播放器
  4. 优先队列 堆实现 java
  5. [tomcat7源码学习]结束Bootstrap进入Catalina
  6. C/C++结构体四字节数据对齐
  7. android 平板安装程序开发者,android – 限制平板电脑中的应用安装
  8. 一位大神写的js爬虫
  9. kivy texture图片格式和opencv numpy图片格式互转
  10. Linux CentOS 7上安装极点五笔