• 基于Java+SpringBoot+mybatis+vue的旅游管理系统详细设计


    目录

     前言介绍: 

    系统设计:

    主要功能模块设计 

    用户登录注册时序图

    功能截图:

    登陆注册:

    系统前端:

    系统首页:

    旅游攻略信息:

    攻略详情:

    酒店信息:

    车票信息:

    资讯信息:

    个人中心:

    用户后台:

    系统后台:

    用户管理:

    消费账单管理:

    目标心得管理:

    旅游管理管理:

    房间类型管理:

    酒店信息管理:

    酒店预定管理:

    车票信息管理:

    订单信息管理:

    系统轮播图和资讯管理:

    数据设计:

    代码实现:

    论文参考:

    获取源码:


     

     前言介绍: 

    以往的旅游管理系统相关信息管理,都是工作人员手工统计。这种方式不但时效性低,而且需要查找和变更的时候很不方便。随着科学的进步,技术的成熟,计算机信息化也日新月异的发展,如今计算机已经进入了人类社会发展的各个领域,并且发挥着十分重要的作用。本系统充分利用网络的便捷,在工作效率上,得到极大地提高,延伸至服务水平也会有好的收获,有了网络,旅游管理系统的各方面的管理更加科学和系统,更加规范和简便。为用户提供旅游管理系统,方便管理员及时高效的管理所有的信息,给用户提供简单方便快捷的方式,并且数据准确,用户可以足不出户就可以对心旅售票管理系统相关信息进行查询等操作,而且还能节省用户查询信息的等待时间,所以开发旅游管理系统给工作人员带来很大的方便,可以大大的提高系统人员工作效率。

     🍅文末获取联系🍅

    本心旅售票管理系统采用基于JAVA语言实现、架构模式选择B/S架构,Tomcat7.0及以上作为运行服务器支持,基于JAVA、springboot、vue等主要技术和框架设计,idea作为开发环境,数据库采用MYSQL5.7以上。

    (1)项目调查法:参考基于JAVA心旅售票管理系统相关的系统设计和实现、结合这次毕业设计的自己的系统需求调研,设计出本系统的主要功能设计和架构。

    (2)文献参考法:通过查阅阅读最近三年基于JAVA心旅售票管理系统有关的优质文献参考和相关书籍、了解基于JAVA心旅售票管理系统的现状和涉及的技术情况

    (3)经验总结法:经过网络搜索调研相关物流配送资源、老师指导以及自己的开发经验和学习经验结合,对系统开发具体情况,功能设计、进行问题归纳与分析总结,满足住院系统的各项可行性分析,使系统设计和实现的合理化以及标准化。

    (4)实证测试法:通过自己对前面资料的查询、阅读、以及利用自己所学习的计算机相关技术来完成编码实现、进行系统功能测试和代码编写、完成设计的功能模块开发。最后进行测试

    系统设计:

    主要功能模块设计 

    本系统设计的是一个旅游售票管理系统的网站,此网站使用户实现了不需出门就可以在电脑前进行网上查询以及网上购票旅游门票等需求信息。

    用户在注册登陆后,在后台可以实现;首页、个人中心、旅游攻略查看、酒店信息查看以及预定、车票信息查看以及预定、以及旅游资讯信息查看、后台可以查看自己的消费账单以及收藏管理、和订单信息等。

    然而管理员则可以在后台直接管理;首页、个人中心、用户管理、消费账单管理、目标心得管理、旅游攻略管理、客房预订管理、房间类型管理、酒店预定管理、酒店订单信息管理、车票信息管理以及系统管理等信息。本网站模块设计的独立性强,用户体验良好、后期维护修改管理十分方便。

    ​​

    用户登录注册时序图

    前端用户发送登录请求-验证输入的账号虚线-执行数据查询-返回查询结果-判断用户是否存在-前端根据结果集执行不同的操作 

    功能截图:

    登陆注册:

    用户登录、用户注册,在注册页面可以填写用户名、密码、姓名、联系电话、身份证等信息进行注册、登录

    系统前端:

    系统首页:

    旅游攻略信息:

    攻略详情:

    酒店信息:

     

    车票信息:

    资讯信息:

    个人中心:

    用户后台:

    系统后台:

    用户管理:

    消费账单管理:

    目标心得管理:

    旅游管理管理:

    房间类型管理:

    酒店信息管理:

    酒店预定管理:

    车票信息管理:

    订单信息管理:

    系统轮播图和资讯管理:

    数据设计:

    在该系统的信息中,由于数据库的支持,我们可以对数据库进行收集、整理、更新和加工等操作。由于数据库的存储功能强大,所以数据库已经成为了计算机必不可少的一部分,一个数据库的好坏直接影响该系统的质量和效率。一个系统中的数据库是必不可少的,并且起着决定性因素。通过之前的系统分析,可以规划出本系统中使用的主要等,下面设计出这几个主要的关键实体:

    管理员表(admin_table): 用来记录管理员的信息,表如下

    编号

    字段名

    数据类型

    数据长度

    释义

    1

    id

    int

    11

    主键,自动增长,增量为一

    2

    username

    varchar

    50

    用户名

    3

    password

    varchar

    255

    密码

    订单表(order_table):用来记录在心旅售票系统中用户的订单信息,表如下

    编号

    字段名

    数据类型

    数据长度

    释义

    1

    oid

    bigint

    20

    主键,自动增长,增量为一

    2

    order_number

    varchar

    255

    订单号

    3

    create_time

    timestamp

    0

    订单创建时间

    4

    order_uid

    bigint

    20

    订单用户

    5

    total_money

    decimal

    (8,2)

    订单总价

    6

    scenic_name

    varchar

    80

    景点名称

    7

    people_number

    int

    255

    预约人数

    景点表(scenic_table):用来记录在心旅售票系统中景点的相关信息,表如下

    编号

    字段名

    数据类型

    数据长度

    释义

    1

    sid

    bigint

    255

    scenic景点id主键,自动增长,增量为一

    2

    scenic_name

    varchar

    80

    景点名称

    3

    scenic_price

    decimal

    (8,2)

    景点price价格

    4

    scenic_address

    varchar

    180

    景点地址

    5

    scenic_details

    varchar

    255

    景点详情

    6

    scenic_pic

    varchar

    255

    景点图片

    7

    scenic_star

    int

    255

    景点热点前台每点击一次就加一

    8

    createTime

    timestamp

    0

    景点创建时间

    用户表(user_table):用来记录在心旅售票系统中景点的相关信息,表如下

    编号

    字段名

    数据类型

    数据长度

    释义

    1

    uid

    bigint

    255

    主键,自动增长,增量为一

    2

    username

    varchar

    25

    用户账号

    3

    password

    varchar

    50

    用户密码

    4

    createTime

    timestamp

    0

    用户创建时间

    5

    idcard

    varchar

    18

    身份证号

    代码实现:

    1. // 登录
    2. form.on('submit(login)', function(data) {
    3. data = data.field;
    4. if (!data.role) {
    5. layer.msg('请选择登录用户类型', {
    6. time: 2000,
    7. icon: 5
    8. });
    9. return false;
    10. }
    11. if(false) {
    12. var arr = []
    13. for(var i = 0;ilength;i++) {
    14. arr.push(codes[i].num)
    15. }
    16. if(arr.join('').toLowerCase() != jquery('#code').val().toLowerCase()) {
    17. alert("请输入正确的验证码");
    18. randomString()
    19. return false;
    20. }
    21. }
    22. http.request(data.role + '/login', 'get', data, function(res) {
    23. layer.msg('登录成功', {
    24. time: 2000,
    25. icon: 6
    26. });
    27. // 登录凭证
    28. localStorage.setItem('Token', res.token);
    29. localStorage.setItem('role', jquery('#role:checked').attr('title'));
    30. // 当前登录用户角色
    31. localStorage.setItem('userTable', data.role);
    32. localStorage.setItem('sessionTable', data.role);
    33. // 用户名称
    34. localStorage.setItem('adminName', data.username);
    35. http.request(data.role + '/session', 'get', {}, function(res) {
    36. // 用户id
    37. localStorage.setItem('userid', res.data.id);
    38. // 路径访问设置
    39. window.location.href = '../../index.html';
    40. })
    41. });
    42. return false
    43. });
    44. });
    1. /**
    2. * 登录相关
    3. */
    4. @RequestMapping("users")
    5. @RestController
    6. public class UserController{
    7. @Autowired
    8. private UserService userService;
    9. @Autowired
    10. private TokenService tokenService;
    11. /**
    12. * 登录
    13. */
    14. @IgnoreAuth
    15. @PostMapping(value = "/login")
    16. public R login(String username, String password, String captcha, HttpServletRequest request) {
    17. UserEntity user = userService.selectOne(new EntityWrapper().eq("username", username));
    18. if(user==null || !user.getPassword().equals(password)) {
    19. return R.error("账号或密码不正确");
    20. }
    21. String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
    22. return R.ok().put("token", token);
    23. }
    24. /**
    25. * 注册
    26. */
    27. @IgnoreAuth
    28. @PostMapping(value = "/register")
    29. public R register(@RequestBody UserEntity user){
    30. // ValidatorUtils.validateEntity(user);
    31. if(userService.selectOne(new EntityWrapper().eq("username", user.getUsername())) !=null) {
    32. return R.error("用户已存在");
    33. }
    34. userService.insert(user);
    35. return R.ok();
    36. }
    37. /**
    38. * 退出
    39. */
    40. @GetMapping(value = "logout")
    41. public R logout(HttpServletRequest request) {
    42. request.getSession().invalidate();
    43. return R.ok("退出成功");
    44. }
    45. /**
    46. * 密码重置
    47. */
    48. @IgnoreAuth
    49. @RequestMapping(value = "/resetPass")
    50. public R resetPass(String username, HttpServletRequest request){
    51. UserEntity user = userService.selectOne(new EntityWrapper().eq("username", username));
    52. if(user==null) {
    53. return R.error("账号不存在");
    54. }
    55. user.setPassword("123456");
    56. userService.update(user,null);
    57. return R.ok("密码已重置为:123456");
    58. }
    59. /**
    60. * 列表
    61. */
    62. @RequestMapping("/list")
    63. public R list( UserEntity user){
    64. EntityWrapper ew = new EntityWrapper();
    65. ew.allEq(MPUtil.allEQMapPre( user, "user"));
    66. return R.ok().put("data", userService.selectListView(ew));
    67. }
    68. /**
    69. * 信息
    70. */
    71. @RequestMapping("/info/{id}")
    72. public R info(@PathVariable("id") String id){
    73. UserEntity user = userService.selectById(id);
    74. return R.ok().put("data", user);
    75. }
    76. /**
    77. * 获取用户的session用户信息
    78. */
    79. @RequestMapping("/session")
    80. public R getCurrUser(HttpServletRequest request){
    81. Long id = (Long)request.getSession().getAttribute("userId");
    82. UserEntity user = userService.selectById(id);
    83. return R.ok().put("data", user);
    84. }
    85. /**
    86. * 保存
    87. */
    88. @PostMapping("/save")
    89. public R save(@RequestBody UserEntity user){
    90. // ValidatorUtils.validateEntity(user);
    91. if(userService.selectOne(new EntityWrapper().eq("username", user.getUsername())) !=null) {
    92. return R.error("用户已存在");
    93. }
    94. userService.insert(user);
    95. return R.ok();
    96. }
    97. /**
    98. * 修改
    99. */
    100. @RequestMapping("/update")
    101. public R update(@RequestBody UserEntity user){
    102. // ValidatorUtils.validateEntity(user);
    103. UserEntity u = userService.selectOne(new EntityWrapper().eq("username", user.getUsername()));
    104. if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    105. return R.error("用户名已存在。");
    106. }
    107. userService.updateById(user);//全部更新
    108. return R.ok();
    109. }
    110. /**
    111. * 删除
    112. */
    113. @RequestMapping("/delete")
    114. public R delete(@RequestBody Long[] ids){
    115. userService.deleteBatchIds(Arrays.asList(ids));
    116. return R.ok();
    117. }
    118. }

    论文参考:

    ​​

    获取源码:

    大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信获取联系方式👇🏻👇🏻👇🏻

    打卡 文章 更新 241/  365天

  • 相关阅读:
    JS事件参数对象event
    算法---java实现经典排序算法
    【微服务】- 服务调用 - OpenFeign
    Zabbix Centos8 安装笔记
    蓝色光标发布营销行业模型“Blue AI” 人机协同重构产业新格局
    Harmony | 超好用的单细胞测序数据合并(3‘和5‘数据合并)(二)
    Spring学习 | Spring简介&IOC简介
    streamlit报错:AxiosError: Request failed with status code 403
    Redis企业级问题及解决方案
    java170-数据报套接字信息交互
  • 原文地址:https://blog.csdn.net/chengyang_java/article/details/126174372