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

目录

一、前言介绍 

二、系统功能分析 

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景点信息管理关键代码


   
   
     
     
     
     
  1. @PostMapping( "/add")
  2. @Transactional
  3. public Map< String, Object> add( HttpServletRequest request) throws IOException {
  4. service. insert(service. readBody(request. getReader()));
  5. return success( 1);
  6. }
  7. @Transactional
  8. public Map< String, Object> addMap( Map<String,Object> map){
  9. service. insert(map);
  10. return success( 1);
  11. }
  12. public Map< String, Object> readBody( BufferedReader reader){
  13. BufferedReader br = null;
  14. StringBuilder sb = new StringBuilder( "");
  15. try{
  16. br = reader;
  17. String str;
  18. while ((str = br. readLine()) != null){
  19. sb. append(str);
  20. }
  21. br. close();
  22. String json = sb. toString();
  23. return JSON Object. parseObject(json, Map. class);
  24. } catch ( IOException e){
  25. e. printStackTrace();
  26. } finally{
  27. if ( null != br){
  28. try{
  29. br. close();
  30. } catch ( IOException e){
  31. e. printStackTrace();
  32. }
  33. }
  34. }
  35. return null;
  36. }
  37. public void insert( Map<String,Object> body){
  38. StringBuffer sql = new StringBuffer( "INSERT INTO ");
  39. sql. append( "`"). append(table). append( "`"). append( " (");
  40. for ( Map. Entry< String, Object> entry:body. entrySet()){
  41. sql. append( "`"+ humpToLine(entry. getKey())+ "`"). append( ",");
  42. }
  43. sql. deleteCharAt(sql. length()- 1);
  44. sql. append( ") VALUES (");
  45. for ( Map. Entry< String, Object> entry:body. entrySet()){
  46. Object value = entry. getValue();
  47. if (value instanceof String){
  48. sql. append( "'"). append(entry. getValue()). append( "'"). append( ",");
  49. } else {
  50. sql. append(entry. getValue()). append( ",");
  51. }
  52. }
  53. sql. deleteCharAt(sql. length() - 1);
  54. sql. append( ")");
  55. log. info( "[{}] - 插入操作:{}",table,sql);
  56. Query query = runCountSql(sql. toString());
  57. query. executeUpdate();
  58. }

5.2酒店信息管理关键代码


   
   
     
     
     
     
  1. @RequestMapping(value = "/del")
  2. @Transactional
  3. public Map< String, Object> del( HttpServletRequest request) {
  4. service. delete(service. readQuery(request), service. readConfig(request));
  5. return success( 1);
  6. }
  7. @Transactional
  8. public void delete( Map<String,String> query,Map<String,String> config){
  9. StringBuffer sql = new StringBuffer( "DELETE FROM "). append( "`"). append(table). append( "`"). append( " ");
  10. sql. append( toWhereSql(query, "0". equals(config. get( FindConfig. GROUP_BY))));
  11. log. info( "[{}] - 删除操作:{}",table,sql);
  12. Query query1 = runCountSql(sql. toString());
  13. query1. executeUpdate();
  14. }

5.3登录关键代码


   
   
     
     
     
     
  1. /**
  2. * 登录
  3. * @param data
  4. * @param httpServletRequest
  5. * @return
  6. */
  7. @PostMapping( "login")
  8. public Map< String, Object> login( @RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
  9. log. info( "[执行登录接口]");
  10. String username = data. get( "username");
  11. String email = data. get( "email");
  12. String phone = data. get( "phone");
  13. String password = data. get( "password");
  14. List resultList = null;
  15. Map< String, String> map = new HashMap<>();
  16. if(username != null && "". equals(username) == false){
  17. map. put( "username", username);
  18. resultList = service. select(map, new HashMap<>()). getResultList();
  19. }
  20. else if(email != null && "". equals(email) == false){
  21. map. put( "email", email);
  22. resultList = service. select(map, new HashMap<>()). getResultList();
  23. }
  24. else if(phone != null && "". equals(phone) == false){
  25. map. put( "phone", phone);
  26. resultList = service. select(map, new HashMap<>()). getResultList();
  27. } else{
  28. return error( 30000, "账号或密码不能为空");
  29. }
  30. if (resultList == null || password == null) {
  31. return error( 30000, "账号或密码不能为空");
  32. }
  33. //判断是否有这个用户
  34. if (resultList. size()<= 0){
  35. return error( 30000, "用户不存在");
  36. }
  37. User byUsername = ( User) resultList. get( 0);
  38. Map< String, String> groupMap = new HashMap<>();
  39. groupMap. put( "name",byUsername. getUserGroup());
  40. List groupList = userGroupService. select(groupMap, new HashMap<>()). getResultList();
  41. if (groupList. size()< 1){
  42. return error( 30000, "用户组不存在");
  43. }
  44. UserGroup userGroup = ( UserGroup) groupList. get( 0);
  45. //查询用户审核状态
  46. if (! StringUtils. isEmpty(userGroup. getSourceTable())){
  47. String sql = "select examine_state from "+ userGroup. getSourceTable() + " WHERE user_id = " + byUsername. getUserId();
  48. String res = String. valueOf(service. runCountSql(sql). getSingleResult());
  49. if (res== null){
  50. return error( 30000, "用户不存在");
  51. }
  52. if (!res. equals( "已通过")){
  53. return error( 30000, "该用户审核未通过");
  54. }
  55. }
  56. //查询用户状态
  57. if (byUsername. getState()!= 1){
  58. return error( 30000, "用户非可用状态,不能登录");
  59. }
  60. String md5password = service. encryption(password);
  61. if (byUsername. getPassword(). equals(md5password)) {
  62. // 存储Token到数据库
  63. AccessToken accessToken = new AccessToken();
  64. accessToken. setToken( UUID. randomUUID(). toString(). replaceAll( "-", ""));
  65. accessToken. setUser_id(byUsername. getUserId());
  66. tokenService. save(accessToken);
  67. // 返回用户信息
  68. JSON Object user = JSON Object. parseObject( JSON Object. toJSONString(byUsername));
  69. user. put( "token", accessToken. getToken());
  70. JSON Object ret = new JSON Object();
  71. ret. put( "obj",user);
  72. return success(ret);
  73. } else {
  74. return error( 30000, "账号或密码不正确");
  75. }
  76. }

5.4用户注册关键代码


   
   
     
     
     
     
  1. / **
  2. * 注册
  3. * @param user
  4. * @return
  5. */
  6. @PostMapping("register")
  7. public Map signUp(@RequestBody User user) {
  8. // 查询用户
  9. Map query = new HashMap<>();
  10. query.put("username",user.getUsername());
  11. List list = service.select(query, new HashMap<>()).getResultList();
  12. if (list.size()>0){
  13. return error(30000, "用户已存在");
  14. }
  15. user.setUserId(null);
  16. user.setPassword(service.encryption(user.getPassword()));
  17. service.save(user);
  18. return success(1);
  19. }
  20. /**
  21. * 用户ID:[0,8388607]用户获取其他与用户相关的数据
  22. */
  23. @Id
  24. @GeneratedValue(strategy = GenerationType.IDENTITY)
  25. @Column(name = "user_id")
  26. private Integer userId;
  27. /**
  28. * 账户状态:[ 0,10]( 1可用|2异常|3已冻结|4已注销)
  29. */
  30. @Basic
  31. @Column(name = "state")
  32. private Integer state;
  33. /**
  34. * 所在用户组:[0,32767]决定用户身份和权限
  35. */
  36. @Basic
  37. @Column(name = "user_group")
  38. private String userGroup;
  39. /**
  40. * 上次登录时间:
  41. */
  42. @Basic
  43. @Column(name = "login_time")
  44. private Timestamp loginTime;
  45. /**
  46. * 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
  47. */
  48. @Basic
  49. @Column(name = "phone")
  50. private String phone;
  51. /**
  52. * 手机认证:[ 0,1]( 0未认证|1审核中|2已认证)
  53. */
  54. @Basic
  55. @Column(name = "phone_state")
  56. private Integer phoneState;
  57. /**
  58. * 用户名:[0,16]用户登录时所用的账户名称
  59. */
  60. @Basic
  61. @Column(name = "username")
  62. private String username;
  63. /**
  64. * 昵称:[0,16]
  65. */
  66. @Basic
  67. @Column(name = "nickname")
  68. private String nickname;
  69. /**
  70. * 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
  71. */
  72. @Basic
  73. @Column(name = "password")
  74. private String password;
  75. /**
  76. * 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
  77. */
  78. @Basic
  79. @Column(name = "email")
  80. private String email;
  81. /**
  82. * 邮箱认证:[ 0,1]( 0未认证|1审核中|2已认证)
  83. */
  84. @Basic
  85. @Column(name = "email_state")
  86. private Integer emailState;
  87. /**
  88. * 头像地址:[0,255]
  89. */
  90. @Basic
  91. @Column(name = "avatar")
  92. private String avatar;
  93. /**
  94. * 创建时间:
  95. */
  96. @Basic
  97. @Column(name = "create_time")
  98. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  99. private Timestamp createTime;
  100. @Basic
  101. @Transient
  102. private String code;
  103. }

参考

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

你可能感兴趣的:(spring,boot,vue.js,旅游)