前言:👩💻 计算机行业的同仁们,大家好!作为专注于Java领域多年的开发者,我非常理解实践案例的重要性。以下是一些我认为有助于提升你们技能的资源:
👩💻 SpringBoot的精选案例推介!🔥
👩💻 想要把握小程序开发的精髓?这里有你需要的优选案例!🚀
点开文末链接,即可获取这些精品案例的源码。分享知识,共同进步!👇👇
📚 掌握这些案例,让你的编程之路更加顺畅。立即查看详情和获取源码!
希望这些资料能帮助你们在技术旅程中更进一步!🌟
项目名
ssm613个性化旅游攻略定制系统设计与实现+jsp
技术栈
SSM+Jsp+MySQL+Maven
一、-环境介绍
1.1 运行环境
开发语言:Java
数据库:MySQL
系统架构:B/S
后端:SSM(MyBatis)
前端:jsp
工具:IDEA,JDK1.8,Maven
二、-系统介绍
2.1 项目介绍
在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对个性化旅游攻略信息管理的提升,也为了对个性化旅游攻略信息进行更好的维护,个性化旅游攻略定制系统的出现就变得水到渠成不可缺少。通过对个性化旅游攻略定制系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。
个性化旅游攻略定制系统通过MySQL数据库与Eclipse工具进行开发,个性化旅游攻略定制系统能够实现对用户上传信息,旅游路线信息,景点项目信息,景点信息,标签分类信息等信息的管理。
通过个性化旅游攻略定制系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都会成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社会资源,为环境保护也做了力所能及的贡献。
关键字:个性化旅游攻略定制系统,旅游路线,景点项目
2.2 功能模块
三、-系统展示
3.1部分功能图文展示
四、-部分代码设计
4.1.部分代码以及数据库如下:
表4-1 标签分类表
字段
注释
类型
空
id (主键)
主键
bigint(20)
否
addtime
创建时间
timestamp
否
leixing
类型
varchar(200)
是
表4-2 景点项目评论表
字段
注释
类型
空
id (主键)
主键
bigint(20)
否
addtime
创建时间
timestamp
否
refid
关联表id
bigint(20)
否
userid
用户id
bigint(20)
否
nickname
用户名
varchar(200)
是
content
评论内容
longtext
否
reply
回复内容
longtext
是
表4-3 景点信息评论表
字段
注释
类型
空
id (主键)
主键
bigint(20)
否
addtime
创建时间
timestamp
否
refid
关联表id
bigint(20)
否
userid
用户id
bigint(20)
否
nickname
用户名
varchar(200)
是
content
评论内容
longtext
否
reply
回复内容
longtext
是
表4-4 旅游路线评论表
字段
注释
类型
空
id (主键)
主键
bigint(20)
否
addtime
创建时间
timestamp
否
refid
关联表id
bigint(20)
否
userid
用户id
bigint(20)
否
nickname
用户名
varchar(200)
是
content
评论内容
longtext
否
reply
回复内容
longtext
是
表4-5 景点分类表
字段
注释
类型
空
id (主键)
主键
bigint(20)
否
addtime
创建时间
timestamp
否
leixing
类型
varchar(200)
是
表4-6 景点项目表
字段
注释
类型
空
id (主键)
主键
bigint(20)
否
addtime
创建时间
timestamp
否
jingdianmingcheng
景点名称
varchar(200)
是
jingdianfenlei
景点分类
varchar(200)
是
jingdiandizhi
景点地址
varchar(200)
是
xiangmumingcheng
项目名称
varchar(200)
是
xiangmujiage
项目价格
float
是
xiangmujieshao
项目介绍
longtext
是
xiangmutupian
项目图片
varchar(200)
是
thumbsupnum
赞
int(11)
是
crazilynum
踩
int(11)
是
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.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat;
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.BiaoqianfenleiEntity;
import com.entity.view.BiaoqianfenleiView;
import com.service.BiaoqianfenleiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;
/**
* 标签分类
* 后端接口
* @author
* @email
* @date 2022-04-28 17:06:53
*/
@RestController
@RequestMapping("/biaoqianfenlei")
public class BiaoqianfenleiController {
@Autowired
private BiaoqianfenleiService biaoqianfenleiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,BiaoqianfenleiEntity biaoqianfenlei,
HttpServletRequest request){
EntityWrapper<BiaoqianfenleiEntity> ew = new EntityWrapper<BiaoqianfenleiEntity>();
PageUtils page = biaoqianfenleiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, biaoqianfenlei), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,BiaoqianfenleiEntity biaoqianfenlei,
HttpServletRequest request){
EntityWrapper<BiaoqianfenleiEntity> ew = new EntityWrapper<BiaoqianfenleiEntity>();
PageUtils page = biaoqianfenleiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, biaoqianfenlei), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( BiaoqianfenleiEntity biaoqianfenlei){
EntityWrapper<BiaoqianfenleiEntity> ew = new EntityWrapper<BiaoqianfenleiEntity>();
ew.allEq(MPUtil.allEQMapPre( biaoqianfenlei, "biaoqianfenlei"));
return R.ok().put("data", biaoqianfenleiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(BiaoqianfenleiEntity biaoqianfenlei){
EntityWrapper< BiaoqianfenleiEntity> ew = new EntityWrapper< BiaoqianfenleiEntity>();
ew.allEq(MPUtil.allEQMapPre( biaoqianfenlei, "biaoqianfenlei"));
BiaoqianfenleiView biaoqianfenleiView = biaoqianfenleiService.selectView(ew);
return R.ok("查询标签分类成功").put("data", biaoqianfenleiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
BiaoqianfenleiEntity biaoqianfenlei = biaoqianfenleiService.selectById(id);
return R.ok().put("data", biaoqianfenlei);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
BiaoqianfenleiEntity biaoqianfenlei = biaoqianfenleiService.selectById(id);
return R.ok().put("data", biaoqianfenlei);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody BiaoqianfenleiEntity biaoqianfenlei, HttpServletRequest request){
biaoqianfenlei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(biaoqianfenlei);
biaoqianfenleiService.insert(biaoqianfenlei);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody BiaoqianfenleiEntity biaoqianfenlei, HttpServletRequest request){
biaoqianfenlei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(biaoqianfenlei);
biaoqianfenleiService.insert(biaoqianfenlei);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@Transactional
public R update(@RequestBody BiaoqianfenleiEntity biaoqianfenlei, HttpServletRequest request){
//ValidatorUtils.validateEntity(biaoqianfenlei);
biaoqianfenleiService.updateById(biaoqianfenlei);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
biaoqianfenleiService.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<BiaoqianfenleiEntity> wrapper = new EntityWrapper<BiaoqianfenleiEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = biaoqianfenleiService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
五、-结束语
开发与实现个性化旅游攻略定制系统已经花费了半年时间,在这期间,作为学生的我收获了很多知识。因为独自开发个性化旅游攻略定制系统,仅仅依靠在校期间学到的软件开发方面的知识显然是不行的,还需要通过其他的学习渠道进行程序开发类知识的拓展,比如去图书馆借阅书籍,比如数据库设计的书籍,Java编程语言方面的书籍,软件工程方面的书籍等,还可以通过上网查看编程方面的博客,这些博客呈现的知识是各个软件开发者在工作生涯中总结的编程知识,都是编程知识中的精华,可以帮助学习开发的人员在编程中避免很多开发误区,还可以节省开发的时间。另外,也可以通过数字图书馆下载相似系统方面的参考文献进行程序开发类的知识学习。总而言之,当一个人完成个性化旅游攻略定制系统的设计与开发后,不仅自身的专业知识水平得到了提升,还提高了自己将理论转为实际操作的能力,以及面对问题通过知识学习进而解决问题的能力。
个性化旅游攻略定制系统的设计实现,让我有以下几点体会:
(1)在确定要研究的系统之后,对于系统的研究内容也就是系统的功能的分析与设计是比较重要的部分,这方面主要是站在使用者的角度进行考虑,可以参考相似系统的功能进行设计,也能通过对目标用户群进行问卷调查等方式进行功能需求的确定,只有确定了系统需要的功能之后,才可以开展系统的配套数据库的设计,系统的编码等后续工作。
(2)对于系统的代码编写是一项比较复杂的工作,这也是系统的后端部分,用户操作系统看到的只是代码运行之后呈现出来的操作界面前端部分,编写的代码与运行实现的界面是相对应的,所以编写代码时,需要一边编写,一边查看代码的运行效果,这里就需要编写代码的人员注意一些编写细节,比如规范命名程序变量,注释关键代码等,这些编码习惯会帮助开发者在该系统中进行功能拓展或功能维护中提高效率。
(3)系统的功能模块在编码实现之后,也需要单独进行测试,发现问题之后能够及时进行解决,当系统的所有的功能都实现之后,再次对该系统整体进行测试,方便开发者在检验系统功能的基础上,进行系统问题的修复与完善。
由于时间比较短暂,加上开发期间我都是一边学习理论,一边进行实操,对于开发的个性化旅游攻略定制系统除了具备能够正常运行,能够提供信息管理功能,以及能够保证系统运行期间产生的数据的安全性等特点外,本系统也具备一些缺点,首先表现的就是当使用者使用系统时,在对数据进行查询或者更新时,系统响应时间比较长,增加了用户的等待时间,让用户的使用体验不够理想,其次,个性化旅游攻略定制系统的功能操作的流程设计上也存在一些不合理之处,最后,个性化旅游攻略定制系统对于权限划分,功能模块细分上也存在一些漏洞。
总的说来,在今后的时间里面,自己除了要加强理论知识的学习外,还要继续投入时间和精力去对个性化旅游攻略定制系统进行修复,让本软件拥有更强的性能,比如安全性以及可靠性。