基于springboot的七彩云南文化旅游网站-论文、毕设源码、开题报告

  博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

🔎千套JAVA实战项目持续更新中~

🔎上百套小程序实战项目持续更新中~

🔎上百套Python实战项目持续更新中
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我

❤️文末获取源码联系❤️        ⚠️一定要先收藏⚠️

4 系统设计

市面上设计比较好的系统都有一个共同特征,就是主题鲜明突出。通过对页面简洁清晰的布局,让页面的内容,包括文字语言,或者视频图片等元素可以清晰表达出系统的主题。让来访用户无需花费过多精力和时间找寻需要的内容。

4.1界面设计原则

一般来说,大部分用户使用系统,有些是想从系统中获取需要的信息,有些则是使用系统提供的服务。所以,为了改善用户体验,提高系统的使用率,在对系统界面设计时,需要按照下面的原则进行。

第一点,对用户进行分析,了解用户使用系统的目的,以及使用系统的方式,考虑大部分用户的阅读习惯,设计Z字形或F型结构可以方便用户获取信息。

第二点:设计有效的导航,这个包括每个页面上都有导航条的显示,有时也可以在页面的底部设计导航条,当用户进入具体页面时,要设计相应的位置提示,在页面中比较特殊的位置,需要设计返回链接,可以返回上个页面,也可以返回首页等。

第三点:对整个系统要运用统一的设计方案,包括色彩方案的一致性,页面模板的相似性等,对相同操作和专业术语的描述在整个系统中也应该保持一致。

第四点:设计的界面要保证传达的内容清晰准确。要避免在同一个页面设计非常多的内容,另外可以准确对系统内容进行分类,把页面中用户视觉集中的位置,用来显示重要信息。

作为初学者,并没有那么多的设计经验,但是可以运用上面提到的界面设计原则设计出比较好的系统,可以让用户产生良好的使用体验。

4.2功能结构设计

为了让系统的编码可以顺利进行,特意对本系统功能进行细分设计,设计的系统功能结构见下图。

图4.1 系统功能结构图

4.3数据库设计

一般来说,对用户进行调查,了解其需求,主要还是完成功能上的分析设计,殊不知,设计功能时,也要展示对数据库的设计。数据库服务于程序,它可以按照设定的规则对程序的数据进行保存,因此,也可以说数据库就是程序相关数据的集合。为了保证程序的高质量,数据库提供的数据存储服务也需要快速响应,同时数据信息也要安全合法可靠,所以设计一个数据库这样的任务也需要高度重视,并花时间和精力去努力完成。毕竟这影响到后期程序的开发和使用。试想而知,假设设计一个不好的数据库,遇到的问题将会有:第一,面对信息处理,会有着繁琐的业务逻辑,延长事务处理时间。第二:程序编码期间,将会产生更多的代码去完成数据处理的功能,产生大量的数据冗余,而且也不方便注释代码,还会占用更多的存储空间。综上所述,设计出合理的数据库是多么的重要。

4.3.2 数据库物理设计

作为程序后台的支持,本数据库也需要设计数据存储的结构。而数据存储结构的设计就包括了数据表结构的设计和创建。数据表结构包括了字段,数据类型,还有字段的取值范围等信息。而E-R模型中的实体就是一张表,实体的特征就可以作为该表中的字段,根据本程序信息存储要求,设计每个字段需要的类型,还有该字段的取值范围等。每当设计完成一张数据表,就需要及时保存在数据库里面,并对该设计的数据表准确命名,要求设置的数据表的名称尽量不要是中文,而且要方便记忆。因为在程序编码阶段,通过SQL语句可以把程序里面的数据写入在各个数据表里面,而这个环节需要使用到数据表的名称。如果数据表名称是中文的话,可能会乱码并影响程序运行。下面就以表格形式展示设计的结果。

表4.1导游表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

daoyou_name

String

导游姓名

3

daoyou_photo

String

头像

4

daoyou_phone

String

联系方式

5

daoyou_email

String

邮箱

6

daoyou_delete

Integer

假删

7

create_time

Date

创建时间

表4.2字典表表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

dic_code

String

字段

3

dic_name

String

字段名

4

code_index

Integer

编码

5

index_name

String

编码名字

6

super_id

Integer

父字段id

7

beizhu

String

备注

8

create_time

Date

创建时间

表4.3论坛表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

forum_name

String

帖子标题

3

yonghu_id

Integer

游客

4

daoyou_id

Integer

导游

5

users_id

Integer

管理员

6

forum_content

String

发布内容

7

super_ids

Integer

父id

8

forum_state_types

Integer

帖子状态

9

insert_time

Date

发帖时间

10

update_time

Date

修改时间

11

create_time

Date

创建时间

表4.4旅游景点表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

jingdian_uuid_number

String

景点编号

3

jingdian_name

String

景点名称

4

jingdian_types

Integer

景点类型

5

jingdian_photo

String

景点图片

6

jingdian_address

String

景点地址

7

jingdian_money

BigDecimal

价格/人

8

jingdian_clicknum

Integer

热度

9

zan_number

Integer

10

zai_number

Integer

11

jingdian_text

String

日程路线

12

jingdian_content

String

旅游景点详情

13

create_time

Date

创建时间

表4.5旅游景点收藏表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

jingdian_id

Integer

旅游景点

3

yonghu_id

Integer

游客

4

jingdian_collection_types

Integer

类型

5

insert_time

Date

收藏时间

6

create_time

Date

创建时间

表4.6旅游景点留言表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

jingdian_id

Integer

旅游景点

3

yonghu_id

Integer

游客

4

jingdian_liuyan_text

String

留言内容

5

insert_time

Date

留言时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.7酒店信息表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

jiudian_name

String

酒店名称

3

jiudian_types

Integer

房间类型

4

jiudian_money

BigDecimal

价格/天

5

jiudian_photo

String

酒店图片

6

jiudian_address

String

酒店地址

7

jiudian_clicknum

Integer

热度

8

zan_number

Integer

9

zai_number

Integer

10

shangxia_types

Integer

冻结状态

11

jiudian_content

String

酒店详情

12

create_time

Date

创建时间

表4.8酒店收藏表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

jiudian_id

Integer

酒店

3

yonghu_id

Integer

游客

4

jiudian_collection_types

Integer

类型

5

insert_time

Date

收藏时间

6

create_time

Date

创建时间

表4.9酒店留言表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

jiudian_id

Integer

酒店

3

yonghu_id

Integer

游客

4

jiudian_liuyan_text

String

留言内容

5

insert_time

Date

留言时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.10酒店预定表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_id

Integer

游客

3

jiudian_id

Integer

酒店

4

jiudian_yuyue_time

Date

预定时间

5

jiudian_yuyue_number

Integer

预定天数

6

create_time

Date

创建时间

表4.11留言板表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_id

Integer

游客

3

liuyan_name

String

留言标题

4

liuyan_text

String

留言内容

5

insert_time

Date

留言时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.12公告信息表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

news_name

String

公告标题

3

news_types

Integer

景点信息

4

news_photo

String

公告图片

5

insert_time

Date

公告时间

6

news_content

String

公告详情

7

create_time

Date

创建时间

表4.13游客表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_name

String

游客姓名

3

yonghu_photo

String

头像

4

yonghu_phone

String

联系方式

5

yonghu_email

String

邮箱

6

yonghu_delete

Integer

假删

7

create_time

Date

创建时间

表4.14管理员表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

username

String

用户名

3

password

String

密码

4

role

String

角色

5

addtime

Date

新增时间

5 系统实现

这个环节需要使用前面的设计方案,包括对系统模块的设计,还有对程序后台的数据支持的数据库的设计等。不过这部分内容还是强调系统编码人员的开发能力,要把前面设计的内容通过编码的形式以一个完整的,可以运行的系统呈现出来。

功能模块的实现

5.1游客信息管理

如图5.1显示的就是游客信息管理页面,此页面提供给管理员的功能有:游客信息的查询管理,可以删除游客信息、修改游客信息、新增游客信息,

还进行了对用户名称的模糊查询的条件

图5.1 游客信息管理页面

5.2 酒店信息管理

如图5.2显示的就是酒店信息管理页面,此页面提供给管理员的功能有:查看已发布的酒店信息数据,修改酒店信息,酒店信息作废,即可删除,还进行了对酒店信息名称的模糊查询 酒店信息信息的类型查询等等一些条件。

图5.2 酒店信息管理页面

5.3景点信息管理

如图5.3显示的就是景点信息管理页面,此页面提供给管理员的功能有:根据景点信息进行条件查询,还可以对景点信息进行新增、修改、查询操作等等。

图5.3 景点信息管理页面

代码实现

package com.controller;   import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.Map;   import javax.servlet.http.HttpServletRequest;   import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; 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.ResponseBody; import org.springframework.web.bind.annotation.RestController;   import com.annotation.IgnoreAuth; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.entity.TokenEntity; import com.entity.UserEntity; import com.service.TokenService; import com.service.UserService; import com.utils.CommonUtil; import com.utils.MD5Util; import com.utils.MPUtil; import com.utils.PageUtils; import com.utils.R; import com.utils.ValidatorUtils;   /**  * 登录相关  */ @RequestMapping("users") @RestController public class UserController{ 	 	@Autowired 	private UserService userService; 	 	@Autowired 	private TokenService tokenService;   	/** 	 * 登录 	 */ 	@IgnoreAuth 	@PostMapping(value = "/login") 	public R login(String username, String password, String captcha, HttpServletRequest request) { 		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username)); 		if(user==null || !user.getPassword().equals(password)) { 			return R.error("账号或密码不正确"); 		} 		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole()); 		return R.ok().put("token", token); 	} 	 	/** 	 * 注册 	 */ 	@IgnoreAuth 	@PostMapping(value = "/register") 	public R register(@RequestBody UserEntity user){ //    	ValidatorUtils.validateEntity(user);     	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {     		return R.error("用户已存在");     	}         userService.insert(user);         return R.ok();     }   	/** 	 * 退出 	 */ 	@GetMapping(value = "logout") 	public R logout(HttpServletRequest request) { 		request.getSession().invalidate(); 		return R.ok("退出成功"); 	} 	 	/**      * 密码重置      */     @IgnoreAuth 	@RequestMapping(value = "/resetPass")     public R resetPass(String username, HttpServletRequest request){     	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));     	if(user==null) {     		return R.error("账号不存在");     	}     	user.setPassword("123456");         userService.update(user,null);         return R.ok("密码已重置为:123456");     } 	 	/**      * 列表      */     @RequestMapping("/page")     public R page(@RequestParam Map<String, Object> params,UserEntity user){         EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();     	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));         return R.ok().put("data", page);     }   	/**      * 列表      */     @RequestMapping("/list")     public R list( UserEntity user){        	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();       	ew.allEq(MPUtil.allEQMapPre( user, "user"));          return R.ok().put("data", userService.selectListView(ew));     }       /**      * 信息      */     @RequestMapping("/info/{id}")     public R info(@PathVariable("id") String id){         UserEntity user = userService.selectById(id);         return R.ok().put("data", user);     }          /**      * 获取用户的session用户信息      */     @RequestMapping("/session")     public R getCurrUser(HttpServletRequest request){     	Long id = (Long)request.getSession().getAttribute("userId");         UserEntity user = userService.selectById(id);         return R.ok().put("data", user);     }       /**      * 保存      */     @PostMapping("/save")     public R save(@RequestBody UserEntity user){ //    	ValidatorUtils.validateEntity(user);     	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {     		return R.error("用户已存在");     	}         userService.insert(user);         return R.ok();     }       /**      * 修改      */     @RequestMapping("/update")     public R update(@RequestBody UserEntity user){ //        ValidatorUtils.validateEntity(user);     	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));     	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {     		return R.error("用户名已存在。");     	}         userService.updateById(user);//全部更新         return R.ok();     }       /**      * 删除      */     @RequestMapping("/delete")     public R delete(@RequestBody Long[] ids){         userService.deleteBatchIds(Arrays.asList(ids));         return R.ok();     } }

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏推荐订阅

🔎千套JAVA实战项目持续更新中~

🔎上百套小程序实战项目持续更新中~

🔎上百套Python实战项目持续更新中

👇下方有我的微信名片👇

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值