Java旅游网站源码+页面

news/2024/5/9 8:03:45/文章来源:https://blog.csdn.net/zhulier1124/article/details/106691638

旅游网站[源码+前后端页面]


在线预览:旅游网站TourismPro

账号:朱利尔,密码:123

管理员账号:admin,密码:123456


  • Github开源地址:https://github.com/jwwam/tourismPro
  • 下载 or 部署问题请加QQ群:696852484
  • 这是一个免费、轻量化、简单、易上手的旅游网站项目,系统包括完整的前端Html页面和后台代码,该项目仅适合作为JavaWeb入门或毕业设计使用,不具备实际使用价值,项目中涉及皮尔逊相关系数的相似度算法Java实现和实际应用可查看景点推荐模块。
  • 本项目开源免费,如果您看到有人售卖或利用该项目盈利请帮忙举报,谢谢。
  • PS:本人承接毕业设计制作,有意请联系我,划至页面底部获取我的联系方式。
  • 以下请您仔细阅读:
    这个项目相比于原来tourism的设计更加简洁明了,使用体验也更好,底层应用的实现代码也很简单,但是在部署方式上可能需要耗费一定的精力才能跑起来(相比老版本),其实这对于每一个项目来说都是如此,相信找到这个项目的小伙伴大多是即将毕业的同学,如果您只是想毕业交差然后另谋他路请直接略过此段往下看,或者建议您找淘宝或者我帮你远程部署,花钱买时间永远是最划算的买卖(恰饭时间O(∩_∩)O),您大可利用多余的时间去做更有意义的事情。但是如果您毕业后从事编程相关的工作,请一定仔细食用这个项目,相信你一定会有所收获。一个系统从设计到实现是一个非常复杂的过程,这个项目算不上牛逼但是带你入门足够了,项目用到的算法也不算牛逼但是面试吹牛也足够了,以上。

Project description-项目描述

  • 此项目为tourism的重构版本【tourism是3年前做的一个旅游网站毕业设计,采用ssh架构】
  • 因为tourism开发时间久远,现在对这个项目进行了全新升级
  • 本次升级抛弃了原来一些老旧的技术,底层的所有代码全部重写
  • 采用前后端分离架构
  • RESTful API风格接口化、Json形式数据传输
  • 前端页面进行了升级,引用了一些基本的组件,如dataTables.js、bootstrap.js、bootbox.js
  • 前端没有采用主流框架如Vue、React等,使用基本的HTML+CSS+JQ也减轻了上手难度
  • 引入皮尔逊线性相似度推荐算法的Java实现,应用于项目的“景点推荐”栏目

Project framework-项目架构

项目架构

  • 采用前后端分离,Jquery + SpringBoot2.0
  • 后端语言Java
  • ORM使用SpringDataJPA
  • 数据库使用MySql5.7+Mongodb3
  • 缓存Redis
  • 部署Nginx+Jar

Project algorithm-相关算法

  • 皮尔逊相关系数的相似度算法(Pearson)

  • 以下给出其实现公式:
    皮尔逊相似度算法

  • 该算法在本系统中实现了基于景点分数近似度的推荐功能,以下给出数据获取方法代码,具体算法实现请查看CFUtils.cosineSimilarity()方法。

    public List<Spots> findRecommendList(String id) {//系统中我将景点抽象成了产品,这样便于扩展,如酒店、旅行团均可看作产品评分,统一记录在系统的分数表中//如果是查询景点推荐列表,则根据入参景点id查询景点List<Score> productScoreList = scoreDao.findByProductId(id);//因为相似度比对需要两份数据,首先得到自己查询的景点的分数集合double[] ownProductScoreList = new double[productScoreList.size()];for (int i = 0; i < productScoreList.size(); i++) {ownProductScoreList[i] = Double.parseDouble(productScoreList.get(i).getGrade());}//然后得到分数表中所有景点的分数集合List<Score> productCountInScoreList = scoreDao.findAllGroupByProductId();HashMap<String,double[]> ss = new HashMap<String,double[]>();//循环所有景点for (int i = 0; i < productCountInScoreList.size(); i++) {//得到该产品的所有分数List<Score> bb = scoreDao.findByProductId(productCountInScoreList.get(i).getProductId());double[] otherProductScoreList = new double[bb.size()];//循环该产品的所有分数for (int j = 0; j < bb.size(); j++) {otherProductScoreList[j] = Double.parseDouble(bb.get(j).getGrade());}//将产品作为key,分数集合作为value存入mapss.put(productCountInScoreList.get(i).getProductId(),otherProductScoreList);}List<Spots> resSpotsList = new ArrayList<>();//循环Map依次比对其线性相似度ss.forEach((String k, double[] v)->{//得到相似度值double n = CFUtils.cosineSimilarity(ownProductScoreList,v);log.info("id:{},线性相似度:{}",k,n);//判断相似度值是否符合自己设定的阈值if(n > pearsonCorrelation) {//符合相似阈值,放入推荐列表resSpotsList.add(spotsDao.findById(k));}});return resSpotsList;}

Project view Page-页面预览如下:

注:看不到图片可能需要梯子(maybe u need VPN)

  • 前台登录&注册:
    在这里插入图片描述
    在这里插入图片描述

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

  • 前台景点列表&详情:
    在这里插入图片描述
    在这里插入图片描述

  • 前台景点推荐:
    在这里插入图片描述

  • 前台酒店列表&详情&预订:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 前台旅线列表&详情:
    在这里插入图片描述
    在这里插入图片描述

  • 前台订单列表:
    在这里插入图片描述

  • 后台首页:
    后台首页

  • 后台景点列表&添加&更新&删除:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 后台酒店列表&添加&更新:
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

  • 后台线路列表&更新:
    在这里插入图片描述
    在这里插入图片描述

  • 后台订单列表&订单审核:
    在这里插入图片描述
    在这里插入图片描述

  • 后台旅行社列表:
    在这里插入图片描述

  • 后台用户列表:
    在这里插入图片描述

Run-启动访问(本地部署)

1.启动Nginx

  • 下载地址:点击下载
启动命令:nginx.exe  

将两个前端页面【tour-front】和【tour】文件包拷贝到Nginx根目录下,修改./conf/nginx.conf配置文件,替换原有的server配置如下:

    server {listen       80;server_name  localhost;location / {root   tour-front;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}server {listen       8082;server_name  localhost;location / {root   tour;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

关闭Nginx

nginx.exe -s stop

重启Nginx

nginx.exe -s reload

2.启动Mongodb

  • 下载地址:点击下载
  • 下载后需要本地配置,具体请自行搜索(参考地址)。
启动命令:net start mongoDB

3.启动Redis

  • 下载地址:点击下载
  • 下载后需要本地配置,具体请自行搜索(参考地址)。
启动命令:redis-server.exe  --service-start --service-name redisserver

4.启动项目

  • 本地启动
    打开idea选择import project,选择tourismPro或者mongodb-file-server导入,然后等待相关依赖加载完成
    修改tourismPro项目中application.properties配置文件,将你自己的MySQL账号和密码替换写入
#数据源
spring.datasource.url=jdbc:mysql://localhost:3306/tourismPro?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf8
spring.datasource.username=你自己的MySQL账号
spring.datasource.password=你自己的MySQL密码
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

修改mongodb-file-server项目中application.properties配置文件,将你自己本地创建的数据库替换写入,这里在mongodb中创建了名为tourismPro的数据库

spring.data.mongodb.uri=mongodb://localhost:27017/tourismPro

如图启动main方法(mongodb-file-server同理)
idea启动项目
5.view address访问地址

前台:http://localhost  
后台:http://localhost:8082/index.html  

Quick start-快速部署(另一种部署方式)

注:使用我配置好的Nginx部署前端项目,通过我打包的jar直接启动后端项目

  • 下载部署包:百度网盘
  • 提取码:1bra

1.工具介绍:

  • 【MongoDB安装包】mongodb-win32-x86_64-3.4.24.zip
  • 【MongoDB连接工具】Robo3T_v1.3.1.exe
  • 【Redis安装包】Redis-x64-3.0.504.zip
  • 【Redis连接工具】redis-desktop-manager-0.9.3.817.exe
  • 【Nginx安装包】nginx-1.18.0.zip
  • 【MySql连接工具】Navicat网上一大堆我就不上传了

2.前端部署:

  • 务必保证系统的80端口、8082端口不被占用
  • 解压nginx-1.18.0-tourismPro.rar
  • 双击解压后nginx-1.18.0-tourismPro目录中的nginx.exe
  • 打开浏览器,输入localhost,再打开新标签输入localhost:8082
  • 页面正常显示则前端部署完成

3.后端部署:

  • 务必保证系统的8081端口不被占用
  • 务必保证系统已经正确配置了JDK1.8环境变量
  • 务必保证系统正确安装且启动了Redis且未修改默认端口、未设置密码
  • 务必保证系统正确安装且启动了Mongodb且新建了一个名为tourismPro的数据库
  • 务必保证系统安装的是Mysql5.X版本(本项目暂不支持8.X系列的MySQL数据库)且新建了一个名为tourismPro的数据库
  • 安装数据库时设置初始化账号为root,密码为1234
  • 打开cmd或者powershell输入以下命令:
java -jar tourismPro.jar
  • 打开一个新的cmd或powershell输入以下命令:
java -jar mongodb-file-server.jar

两个jar包启动都不报错则部署成功

4.验证:

打开浏览器访问地址

前台:http://localhost  
后台:http://localhost:8082/index.html  

在后台添加数据查看是否在前台正确展示

PS-其他说明

  • 本项目使用SpringDataJpa自动构建数据库表,启动项目会自动生成表结构,无需您手动创建
  • 启动不能自动构建表,并且报错"Specified key was too long; max key length is xxx bytes"的请保证您的MySQL版本为5.X,并且修改您的数据库编码字符集为utf8 – UTF-8 Unicode
  • 项目使用Redis存储Session会话
  • 项目使用MongoDB作为小型文件存储数据库
  • 项目中推荐算法部分的实现需要评分数据支撑,请登录不同用户为景点提交评分、评论(每个景点不少于5个评分)

Call me-联系方式

  • E-mail:824247231@qq.com
  • QQ:824247231
  • QQ群:696852484

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_746204.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

毕业设计之旅游网站

GitHub地址&#xff1a; https://github.com/jwwam/tourism.git 最新的旅游网站地址&#xff1a;旅游网站(SpringBoot版本) 本文是SpringMVC版本&#xff0c;spring boot版本请点击上面的链接下载查看&#xff01;&#xff01;&#xff01; 框架技术&#xff1a; SpringMVC Spr…

Java招聘网站源码+页面

招聘网站[源码前后端页面] 毕业设计免费开源系列&#xff1a; Java旅游网站源码页面&#xff08;景点查看、评论、酒店查看、预定&#xff0c;旅游线路推荐...&#xff09; Java招聘网站源码页面&#xff08;职位查看、评论、简历发布、投递、结果、企业管理&#xff0c;职位…

composer 完整路径才能访问_谷歌浏览器打算隐藏网站地址路径URL!

谷歌浏览器打击钓鱼网站再出新招。内测地址栏开始隐藏网站全部路径 仅显示网站域名。了解到&#xff0c;域名和URL是一个网站最基本的对外展示信息&#xff0c;可以让用户快速知道网站的内容和信息。但是&#xff0c;有时也会被部分黑产和诈骗分子利用&#xff0c;进行使用带有…

vue seo关键词设置_简单设置SEO关键词

SEO是指在了解搜索引擎自然排名机制的基础之上&#xff0c;对网站进行内部及外部的调整优化&#xff0c;改进网站在搜索引擎中关键词的自然排名&#xff0c;获得更多的展现量&#xff0c;吸引更多目标客户点击访问网站&#xff0c;从而达到互联网营销及品牌建设的目标。搜索引擎…

隔一段时间查找一次 golang_资源盘点 | 表情包查找网站

“哎呀气氛有点尴尬&#xff0c;用个表情包缓解一下氛围”“今天这么高兴&#xff0c;发个表情包应应景”“哎他们在夸我&#xff0c;不知道用语言怎么表达&#xff0c;用表情包说出我的心声吧”......上面的场景相信大家都不陌生&#xff0c;有着活跃气氛、避免尴尬等效果的表…

greenfoot推箱子怎么做_SEO排名做上去后该怎么维护-top推

SEO主要是优化搜索引擎的工作&#xff0c;但是搜索引擎的优化是很复杂的工作&#xff0c;因为当我们做排名上去以后&#xff0c;远远没有结束&#xff0c;我们还要继续的维护&#xff0c;否则一旦掉意轻心&#xff0c;排名就有可能掉下来&#xff0c;那么怎样去进行后期的排名维…

服务器节点代表网站的什么,云服务器的节点是什么意思

云服务器的节点是什么意思 内容精选换一换本章介绍了如何添加运行CCE集群的节点池以及对节点池执行操作。要了解节点池的工作原理&#xff0c;请参阅节点池概述。将节点池添加到现有集群。计费模式&#xff1a;节点池仅支持按需计费的计费模式&#xff0c;该模式将根据实际使用…

网络不稳定的原因_网站优化分析企业网站排名不稳定的原因!

发现现在很多企业都在做SEO优化&#xff0c;在这过程中&#xff0c;网站排名有波动&#xff0c;不稳定&#xff0c;这是我们经常会遇到的问题&#xff0c;排名的不稳定就会给网站流量带来影响&#xff0c;那么接下来世纪兴小编为大家详细介绍一下网站排名不稳定的原因。一、企业…

lisp图库不显示缩略图_从免费图库、影片到字体,这个网站全包了!

距离上一次介绍 The Stocks 已经超过五年&#xff0c;前段时间无意间浏览到这个网站&#xff0c;才想起我以前好像也写过文章&#xff0c;不过网站现在变得不太一样而且内容又更完整了&#xff0c;非常推荐加入收藏&#xff0c;因为真的很方便。如果你还不知道 The Stocks&…

和php页面_WordPress网站搬家之后访问首页和后台php页面变下载怎么办?

因为服务器到期的缘故老古购买了一台新的服务器来运行测试站&#xff0c;并且使用宝塔面板的搬家工具实现站点迁移&#xff0c;详见『宝塔 Linux 面板使用一键迁移插件实现网站快速搬家图文教程』。不过成功将域名解析为新服务器 IP 地址后&#xff0c;访问 WordPress 站点首页…

2020-06-29-----1.2网站与网页

1.2网站与网页 1.概念&#xff08;1&#xff09;网站&#xff08;web site&#xff09;&#xff1a;互联网上用户展示特定内容的相关网页的集合。 &#xff08;2&#xff09;网页&#xff08;web page&#xff09;&#xff1a;网站中的一页&#xff0c;一个网站中的网页通过“…

[js] mouseover mouseout和mouseenter mouseleave的区别

mouseover mouseout&#xff1a;在鼠标进入或者离开作用元素或者其子元素时&#xff0c;都会触发 在进入son的时候&#xff0c;因为离开了father&#xff0c;所以会触发一次mouseout&#xff0c;同理&#xff0c;在再次进入father的时候&#xff0c;也因为离开了son&#xff0c…

空间后方交会c++程序_全站仪后方交会建站

先看全站仪后方交会建站常见的操作步骤&#xff1a;首先仪器随便架在一个方便的地方。选择你所测量需要的那个坐标系&#xff0c;再进入新点功能。用后方交会法。就可以采点了。先照准你已知的第一个点&#xff0c;再照准已知第2个点。坐标系就建好了。然后就可以碎部测量或放样…

天气预报 源码 实战_渭源县路园镇农特产品登上了天气预报和天气网站

终于等到你还好没放弃 | 渭源广播电视渭源县路园镇辣椒登上了中国天气网“一朵金丝皇菊价格能卖到10元&#xff0c;一亩辣椒的产值能达到1万元&#xff0c;还有娃娃菜&#xff0c;这些农特产品去年已经出省&#xff0c;卖到了山东、上海、广东等地。”6月3日下午&#xff0c;…

建站用什么cms_哪个CMS建站系统更利于seo优化

提到网站建设&#xff0c;最先想到的就是下载CMS建站系统来建站&#xff0c;当然不乏还有会外包定制的方式&#xff0c;那成本就另说了&#xff0c;采用CMS系统建站优势便是开发省时且价格给力&#xff0c;而且功能完整&#xff0c;比定制开发的体验性&#xff0c;功能性方面都…

后台管理系统静态页面_建站指南丨选择动态网站还是静态网站好?

无论是个人网站还是企业网站&#xff0c;在网站建设时&#xff0c;需要有一个决策&#xff0c;就是这个网站到底是做动态网站&#xff0c;还是做静态网站好&#xff1f;它们分别有什么特点&#xff0c;如何去选择&#xff1f;下面我们一起来聊聊。关于 静态网站静态网站&#…

Chrome 无法从该网站添加应用、扩展程序和用户脚本问题解决

1、报错场景 我所使用的是公司电脑&#xff0c;chrome版本是94.0.4606.54&#xff08;正式版本&#xff09;&#xff0c;今天添加插件时&#xff0c;出现了上图所述的提示&#xff0c;经过翻阅资料得以解决&#xff0c;在此记录~ 2、解决方案 在页面URL输入网址&#xff1a;c…

kinect2连pc玩体感_PC端网站为什么不能代替移动端网站?

网站作为企业开放互联网的门面&#xff0c;承载着与互联网用户沟通、企业的推广&#xff0c;品牌的树立等多种能力。那么&#xff0c;随着移动互联网的发展&#xff0c;以往PC端的网站还能在移动端发挥作用吗&#xff1f;PC端网站为什么不能代替移动端网站&#xff1f;两者有什…

5Y70也并非美如画,德国网站对5Y70与5Y10的对比评测

最近看了一个德国网站对两款U的对比评测&#xff0c;就不全文翻译了&#xff0c;大概的翻译一些重点最近两款使用Core M的平板/变形本上市&#xff0c;分别是使用10的HP ENVY 15-c000ng x2 Detachable和使用70的联想Yoga 3 Pro&#xff0c;这样我们有机会对Core M系列中最强和最…

最近看了一个德国网站对两款U的对比评测,就不全文翻译了,大概的翻译一些重点 最近两款使用Core M的平板/变形本上市,分别是使用10的HP ENVY 15-c000ng x2 Detachabl

一 Android权限 一般来说&#xff0c;Android的APK包在安装时会向Android系统申请权限&#xff0c;用户在安装APK时会看到此APK索要的权限&#xff0c;用户要么全都批准&#xff0c;要么拒绝本次安装。Android的权限与Android的API对应&#xff0c;一个APK如果获得了某项权限&a…