文末获取源码

开发语言:Java

框架:springboot+vue

Node:node.js

JDK版本:JDK1.8

服务器:tomcat7

数据库:mysql 5.7/8.0

数据库工具:Navicat11

开发软件:eclipse/idea,Visual

Maven包:Maven3.3.9

浏览器:谷歌浏览器

目录

一、前言介绍

二、系统功能分析

2.1前台用户功能

2.2已注册用户的功能

2.3后台管理员功能

2.4非功能需求分析

三、系统详细设计

3.1系统首页模块

3.2景点信息模块

3.3景点详情模块

3.4酒店信息模块

3.5个人资料模块

四、管理员功能模块

4.1普通用户模块

4.2景点资讯模块

4.3景点信息模块

4.4酒店信息模块

4.5路线申请模块

五、部分核心代码

5.1景点信息管理关键代码

5.2酒店信息管理关键代码

5.3登录关键代码

5.4用户注册关键代码


一、前言介绍

信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对旅游等问题,对旅游网站进行研究分析,然后开发设计出旅游网站以解决问题。

旅游网站主要功能模块包括信息系统首页、在线留言、公告消息、景点资讯、景点信息、酒店信息,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取Mysql作为后台数据的主要存储单元,采springboot技术、vue技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对旅游网站的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现旅游网站和部署运行使用它。

二、系统功能分析

2.1前台用户功能

前台用户可分为未注册用户需求和以注册用户需求。

未注册用户的功能如下:

注册账号:用户填写个人信息,并验证手机号码。

景点信息:用户可以根据景点类型浏览景点的信息,并选中某个景点查看详情,例如:景点名称、景点编号、景点类型、景点介绍等。

2.2已注册用户的功能

登录:根据账号密码进行登录操作。

个人中心:用户因个人信息的变更可以随时修改自己注册信息。

浏览评论信息:选中某间景点可查看其用户的评论。

景点信息:用户根据自己的需求选中某个景点进行购票操作。

论坛:用户可以根据自己的观点看法对相关景点进行发布。

收藏:在景点的基础上对景点的收藏,收藏按时间形成收藏列表,个人对其收藏夹进行维护和整理。

酒店信息:用户根据自己的需求选中某个酒店进行预订操作,并可以对其进行编辑更新删除等操作。

2.3后台管理员功能

修改密码:管理员可以随时修改自己进入系统的登录密码,以保证系统的安全性。

景点信息管理:对景点信息进行详情,删除、修改信息。

酒店信息管理:对酒店信息进行详情,删除、修改信息。

对酒店预订信息进行处理:办理酒店预订审核等。

用户管理:可以查看注册用户的信息,并对其进行管理。

2.4非功能需求分析

首先主要考虑的是系统功能软件,在具体设计的环节上,是不是能够较好的满足各类用户的基本功能需求,如果不能较好的满足用户需求,那么这个系统的存在是没有价值的。软件系统的非功能性求分析,从7个方面展开,一个是性能分析,针对系统;一个是安全分析,针对系统,一个是完整度分析,针对系统,一个是可维护分析,针对系统,一个是可扩展性分析,针对系统,一个是适应业务的性能分析。面对旅游网站存在的性能、安全、扩展、完整度等7个方面性能综合比对分析后发现,需要相应的非功能性需求分析。

三、系统详细设计

3.1系统首页模块

3.2景点信息模块

3.3景点详情模块

3.4酒店信息模块

3.5个人资料模块

四、管理员功能模块

4.1普通用户模块

4.2景点资讯模块

4.3景点信息模块

4.4酒店信息模块

4.5路线申请模块

五、部分核心代码

5.1景点信息管理关键代码

 @PostMapping("/add")@Transactionalpublic Map<String, Object> add(HttpServletRequest request) throws IOException {service.insert(service.readBody(request.getReader()));return success(1);}@Transactionalpublic Map<String, Object> addMap(Map<String,Object> map){service.insert(map);return success(1);}public Map<String,Object> readBody(BufferedReader reader){BufferedReader br = null;StringBuilder sb = new StringBuilder("");try{br = reader;String str;while ((str = br.readLine()) != null){sb.append(str);}br.close();String json = sb.toString();return JSONObject.parseObject(json, Map.class);}catch (IOException e){e.printStackTrace();}finally{if (null != br){try{br.close();}catch (IOException e){e.printStackTrace();}}}return null;}public void insert(Map<String,Object> body){StringBuffer sql = new StringBuffer("INSERT INTO ");sql.append("`").append(table).append("`").append(" (");for (Map.Entry<String,Object> entry:body.entrySet()){sql.append("`"+humpToLine(entry.getKey())+"`").append(",");}sql.deleteCharAt(sql.length()-1);sql.append(") VALUES (");for (Map.Entry<String,Object> entry:body.entrySet()){Object value = entry.getValue();if (value instanceof String){sql.append("'").append(entry.getValue()).append("'").append(",");}else {sql.append(entry.getValue()).append(",");}}sql.deleteCharAt(sql.length() - 1);sql.append(")");log.info("[{}] - 插入操作:{}",table,sql);Query query = runCountSql(sql.toString());query.executeUpdate();}

5.2酒店信息管理关键代码

 @RequestMapping(value = "/del")@Transactionalpublic Map<String, Object> del(HttpServletRequest request) {service.delete(service.readQuery(request), service.readConfig(request));return success(1);}@Transactionalpublic void delete(Map<String,String> query,Map<String,String> config){StringBuffer sql = new StringBuffer("DELETE FROM ").append("`").append(table).append("`").append(" ");sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP_BY))));log.info("[{}] - 删除操作:{}",table,sql);Query query1 = runCountSql(sql.toString());query1.executeUpdate();}

5.3登录关键代码

/*** 登录* @param data* @param httpServletRequest* @return*/@PostMapping("login")public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {log.info("[执行登录接口]");String username = data.get("username");String email = data.get("email");String phone = data.get("phone");String password = data.get("password");List resultList = null;Map<String, String> map = new HashMap<>();if(username != null && "".equals(username) == false){map.put("username", username);resultList = service.select(map, new HashMap<>()).getResultList();}else if(email != null && "".equals(email) == false){map.put("email", email);resultList = service.select(map, new HashMap<>()).getResultList();}else if(phone != null && "".equals(phone) == false){map.put("phone", phone);resultList = service.select(map, new HashMap<>()).getResultList();}else{return error(30000, "账号或密码不能为空");}if (resultList == null || password == null) {return error(30000, "账号或密码不能为空");}//判断是否有这个用户if (resultList.size()<=0){return error(30000,"用户不存在");}User byUsername = (User) resultList.get(0);Map<String, String> groupMap = new HashMap<>();groupMap.put("name",byUsername.getUserGroup());List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();if (groupList.size()<1){return error(30000,"用户组不存在");}UserGroup userGroup = (UserGroup) groupList.get(0);//查询用户审核状态if (!StringUtils.isEmpty(userGroup.getSourceTable())){String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();String res = String.valueOf(service.runCountSql(sql).getSingleResult());if (res==null){return error(30000,"用户不存在");}if (!res.equals("已通过")){return error(30000,"该用户审核未通过");}}//查询用户状态if (byUsername.getState()!=1){return error(30000,"用户非可用状态,不能登录");}String md5password = service.encryption(password);if (byUsername.getPassword().equals(md5password)) {// 存储Token到数据库AccessToken accessToken = new AccessToken();accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));accessToken.setUser_id(byUsername.getUserId());tokenService.save(accessToken);// 返回用户信息JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));user.put("token", accessToken.getToken());JSONObject ret = new JSONObject();ret.put("obj",user);return success(ret);} else {return error(30000, "账号或密码不正确");}}

5.4用户注册关键代码

/*** 注册* @param user* @return*/@PostMapping("register")public Map<String, Object> signUp(@RequestBody User user) {// 查询用户Map<String, String> query = new HashMap<>();query.put("username",user.getUsername());List list = service.select(query, new HashMap<>()).getResultList();if (list.size()>0){return error(30000, "用户已存在");}user.setUserId(null);user.setPassword(service.encryption(user.getPassword()));service.save(user);return success(1);}/*** 用户ID:[0,8388607]用户获取其他与用户相关的数据*/@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "user_id")private Integer userId;/*** 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)*/@Basic@Column(name = "state")private Integer state;/*** 所在用户组:[0,32767]决定用户身份和权限*/@Basic@Column(name = "user_group")private String userGroup;/*** 上次登录时间:*/@Basic@Column(name = "login_time")private Timestamp loginTime;/*** 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时*/@Basic@Column(name = "phone")private String phone;/*** 手机认证:[0,1](0未认证|1审核中|2已认证)*/@Basic@Column(name = "phone_state")private Integer phoneState;/*** 用户名:[0,16]用户登录时所用的账户名称*/@Basic@Column(name = "username")private String username;/*** 昵称:[0,16]*/@Basic@Column(name = "nickname")private String nickname;/*** 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成*/@Basic@Column(name = "password")private String password;/*** 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时*/@Basic@Column(name = "email")private String email;/*** 邮箱认证:[0,1](0未认证|1审核中|2已认证)*/@Basic@Column(name = "email_state")private Integer emailState;/*** 头像地址:[0,255]*/@Basic@Column(name = "avatar")private String avatar;/*** 创建时间:*/@Basic@Column(name = "create_time")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Timestamp createTime;@Basic@Transientprivate String code;}

SpringBoot+Vue实现前后端分离旅游资源信息系统相关推荐

  1. 视频教程-springboot+Vue整合前后端分离权限后台管理系统-Java

    springboot+Vue整合前后端分离权限后台管理系统 拥有八年的Java项目开发经验,擅长Java.vue.SpringBoot.springCloud.spring.springmvc.myb ...

  2. 基于SSM+SpringBoot+Vue+ElementUI前后端分离的校园岗位招聘就业管理系统

    运行视频 基于SSM+SpringBoot+Vue+ElementUI前后端分离的校园岗位招聘就业管理系统 项目运行截图 学生管理 添加学生 学生信息 教师管理 教师信息 实习基地 公告信息 公司管理 ...

  3. shiro+php,一套基于SpringBoot+Vue+Shiro 前后端分离 开发的代码生成器

    一.前言 最近花了一个月时间完成了一套基于Spring Boot+Vue+Shiro前后端分离的代码生成器,目前项目代码已基本完成 止步传统CRUD,进阶代码优化: 该项目可根据数据库字段动态生成 c ...

  4. springboot+vue的前后端分离与合并方案

    pringboot和vue结合的方案网络上的主要有以下两种: 1. [不推荐]在html中直接使用script标签引入vue和一些常用的组件,这种方式和以前传统的开发是一样的,只是可以很爽的使用vue ...

  5. 基于springboot+vue的前后端分离商城系统

    springboot前后端分离商城 介绍 springboot前后端分离商城 本项目由本人根据教程实现的一个springboot项目,基本已实现项目,但是本人希望加入自己的小功能, 请期待下一次的更新 ...

  6. SpringBoot + Vue 开发前后端分离的旅游管理系统

    旅游管理系统 项目简介 项目演示 数据库建表 环境搭建 引入依赖(pom.xml) 配置文件(application.properties) href="javascript:;" ...

  7. SpringBoot+Vue搭建前后端分离的轻博客

    之前用SpringBoot+Thymeleaf写了个人博客,这次又来炒冷饭,用新的技术来重构个人博客,并把它变成开放式的,目前水平有限,欢迎大家一起讨论提建议 2020-04-07:因为期间在找工作, ...

  8. 基于Springboot+vue实现前后端分离二手图书交易

    作者主页:编程指南针 作者简介:Java领域优质创作者.CSDN博客专家 .掘金特邀作者.多年架构师设计经验.腾讯课堂常驻讲师 主要内容:Java项目.毕业设计.简历模板.学习资料.面试题库.技术互助 ...

  9. 基于Springboot+Vue实现前后端分离商城管理系统

    项目编号:BS-SC-030 一,项目简介 新新商城,一款基于 Springboot+Vue 的电商项目,前后端分离项目.完整的实现了一个商城系统应有的基本功能,包括但不限于以下主要功能模块: 前端商 ...

最新文章

  1. Python中的if __name__ == ‘__main__‘
  2. JSP项目报错在build path里找不到javax.servlet.http.HttpServlet的解决方法
  3. python视频编辑过场动画_视频剪辑什么鬼?Python 带你高效创作短视频
  4. 软件开发有哪些规范和标准_车辆,机械专业如何从事汽车电子软件开发
  5. 32位单片机C语言编程 微盘,32位单片机C语言编程:基于PIC32
  6. SPSS 的安装与概貌-第一章
  7. Linux系统查看CPU个数超线程线程数
  8. (安卓免费抓包软件)安卓7以上版本微信内部无法抓包的完美解决方案
  9. efi安装linux7,使用PXE EFI引导安装RHEL7.3
  10. 图的表示(Adjacency List + Adjacency Matrix)
  11. tiptop 编译运行_CPU 利用率背后的真相,只有 1% 人知道
  12. Problem E: 求方程ax^2+bx+c=0的实数根
  13. mysql inet aton ipv6_在MySQL中存储IPv6地址
  14. 基于MATLAB的静电场模拟系统
  15. matlab must agree,运行错误Matrix dimensions must agree
  16. Java学习笔记整理-知识梳理+JDK1.8详细文档
  17. 计算机测控专业主要课程,大连海事大学测控技术与仪器专业要学哪些课程,好学吗?...
  18. jasperReports 报表生成
  19. 京东618叠蛋糕脚本,亲测好用
  20. 免费轻量级网页播放器f4player, flv, f4v, mp4, stream, live stream, subscribed CDN

热门文章

  1. 今天的“指导”感触:融会贯通;雄关漫道真如铁,而今漫步从头越!
  2. 中国式父母计算机科学家攻略,中国式家长攻略大全:全结局解锁技巧汇总[多图]...
  3. 经典文献阅读之--Globally Consistent and Tightly Coupled 3D LiDAR Inertial Mapping(紧耦合3D激光雷达)
  4. PowerBI-时间智能函数-LAST系列
  5. Java接口限流算法
  6. 计算机控制技术的课程设计,《计算机控制技术》课程设计(撰写模板).doc
  7. 算法:从25匹马中选出最快的三匹马
  8. Googe Play App审核注意事项
  9. 数学分析常用的4款软件对比!
  10. Omni协议PHP开发包