热门旅游景点数据分析系统采用了3层架构设计,包括Web层、业务层和Model层。其中,Web层细分为View层和Controller层,而Model层包括元数据扩展层和数据访问层。
View层负责展示用户界面并接收用户输入,将其传递给Controller层进行处理。Controller层作为核心部分,接收来自View层的请求,并调用相应的业务逻辑进行处理。业务层负责实现系统的核心业务逻辑,调用服务和算法对数据进行分析和处理。
Model层由元数据扩展层和数据访问层组成。元数据扩展层管理系统的元数据信息,定义热门旅游景点相关数据、属性和关联信息等。数据访问层与数据库交互,处理数据的存取、查询和更新操作。
-
- 系统总体设计
热门旅游景点数据分析系统分为前台用户模块和后台管理员模块,它们在表现上独立存在,但共享同一数据库。前台用户模块针对普通用户需求,提供注册、登录、浏览资讯、查询景点信息等功能;后台管理员模块面向系统管理人员,具备公告管理、景点管理、资讯管理、评论管理、用户管理等功能。这两个模块的设计是基于需求分析和相关资料整理制作而成。尽管功能有所区别,但通过访问共享的数据库实现各自的操作。这样的架构使系统能有效管理数据、保持一致性,并为用户和管理员提供便捷、安全、可靠的使用体验。
-
- 数据库设计
- 数据需求分析
- 数据库设计
(1)平台用户:平台用户表用于记录用户的各种信息,包括用户名、密码、基本情况信息、信誉评级和发布信息数等数据项。这些信息将用于用户身份认证和个人信息管理,并提供统计数据,如信誉评级和发布信息数量。
(2)管理员:管理员表用于记录管理员的登录信息,包括用户名、密码和权限等数据项。该表用于管理系统管理员的身份验证和权限控制,确保只有授权的管理员才能访问系统功能和数据。
(3)热门旅游景点数据:热门旅游景点数据表存储平台内的热门旅游景点相关数据内容。包括标题、热门旅游景点数据内容和时间等数据项。该表用于保存热门旅游景点的详细信息,包括描述、图片、地理位置等,以供用户查询和浏览。每条数据都会包含发布或更新的时间戳,以便追踪数据的更新历史。
-
-
- 数据库概念设计
-
根据前面的数据流程图,结合系统的功能模块设计,设计出符合系统的各信息实体。
-
-
- 数据库表设计
-
通过上一小节中热门旅游景点数据分析与可视化分析中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
由于数据表较多,只展示系统主要数据表,如下表所示。
表attraction_information (景点信息)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
attraction_information_id
int
10
0
N
Y
景点信息ID
2
attraction_name
varchar
64
0
Y
N
景点名称
3
strategy_quantity
varchar
64
0
Y
N
攻略数量
4
score
varchar
64
0
Y
N
评分
5
brief_introduction
text
65535
0
Y
N
简介
6
ranking
varchar
64
0
Y
N
排名
7
longitude
varchar
64
0
Y
N
经度
8
latitude
varchar
64
0
Y
N
纬度
9
number_of_comments
varchar
64
0
Y
N
点评数量
10
how_many_hikers_have_come_before
varchar
64
0
Y
N
多少驴友来过
11
details_link
varchar
255
0
Y
N
详情链接
12
summary
text
65535
0
Y
N
概述
13
address
text
65535
0
Y
N
地址
14
opening_hours
text
65535
0
Y
N
开放时间
15
ticket_information
text
65535
0
Y
N
门票信息
16
transportation_guidelines
text
65535
0
Y
N
交通指南
17
hits
int
10
0
N
N
0
点击数
18
praise_len
int
10
0
N
N
0
点赞数
19
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
20
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间
表browsing_users (浏览用户)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
browsing_users_id
int
10
0
N
Y
浏览用户ID
2
user_name
varchar
64
0
Y
N
用户姓名
3
user_gender
varchar
64
0
Y
N
用户性别
4
examine_state
varchar
16
0
N
N
已通过
审核状态
5
user_id
int
10
0
N
N
0
用户ID
6
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
7
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间
表comment (评论)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
comment_id
int
10
0
N
Y
评论ID:
2
user_id
int
10
0
N
N
0
评论人ID:
3
reply_to_id
int
10
0
N
N
0
回复评论ID:空为0
4
content
longtext
2147483647
0
Y
N
内容:
5
nickname
varchar
255
0
Y
N
昵称:
6
avatar
varchar
255
0
Y
N
头像地址:[0,255]
7
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
8
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:
9
source_table
varchar
255
0
Y
N
来源表:
10
source_field
varchar
255
0
Y
N
来源字段:
11
source_id
int
10
0
N
N
0
来源ID:
表crawler_attractions (爬虫景点)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
crawler_attractions_id
int
10
0
N
Y
爬虫景点ID
2
name
varchar
64
0
Y
N
名称
3
address
varchar
64
0
Y
N
地址
4
star_rating
varchar
64
0
Y
N
星级
5
score
varchar
64
0
Y
N
评分
6
price
varchar
64
0
Y
N
价格
7
selling_quantity
varchar
64
0
Y
N
卖出数量
8
other_introductions
text
65535
0
Y
N
其他简介
9
praise_len
int
10
0
N
N
0
点赞数
10
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
11
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间
表scenic_spot_reviews (景点点评)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
scenic_spot_reviews_id
int
10
0
N
Y
景点点评ID
2
attraction_name
varchar
64
0
Y
N
景点名称
3
strategy_quantity
varchar
64
0
Y
N
攻略数量
4
score
varchar
64
0
Y
N
评分
5
brief_introduction
text
65535
0
Y
N
简介
6
ranking
varchar
64
0
Y
N
排名
7
longitude
varchar
64
0
Y
N
经度
8
latitude
varchar
64
0
Y
N
纬度
9
number_of_comments
varchar
64
0
Y
N
点评数量
10
how_many_hikers_have_come_before
varchar
64
0
Y
N
多少驴友来过
11
details_link
varchar
255
0
Y
N
详情链接
12
summary
text
65535
0
Y
N
概述
13
address
text
65535
0
Y
N
地址
14
opening_hours
text
65535
0
Y
N
开放时间
15
ticket_information
text
65535
0
Y
N
门票信息
16
transportation_guidelines
text
65535
0
Y
N
交通指南
17
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
18
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间
-
关键模块设计与实现- 数据库访问层的实现
从B/S架构的原理可知,热门旅游景点数据分析系统的各大模块的实现均需要对数据库的数据进行操作,具体包括查询数据、写入数据、更新数据和删除数据,因此,在开发各功能模块前,首先创建一个名称"conn.Python"的文件,该文件主要用于连接数据,以后对程序需要操作数据时,可能使用语句"<?Python reqiure_once('conn.Python');?>"调用就可以了。
-
- 注册模块的实现
用户在填写数据的时候必须与注册页面上的验证相匹配否则会注册失败,注册页面的表单验证是通过Javascript进行验证的,用户名的长度必须在6到18之间,邮箱必须带有@符号,密码和密码确认必须相同,你输入的密码,系统会根据你输入密码的强度给出指定的值,电话号码和身份证号码必须要求输入格式与生活相符合,当你前台验证通过的时候你点击注册,表单会将你输入的值通过name值传递给后台并保存到数据库中。
注册代码如下:
-
- 登录模块的实现
热门旅游景点数据分析系统主要由两部分组成:登录前的登录界面和登录后的用户功能界面。
在登录界面,用户需要输入用户名和密码。如果其中一个输入为空,则给出提示“用户名和密码不能为空”。获取用户名和密码后,在数据库中进行验证。如果用户名存在且对应的密码正确,则登录成功;否则登录失败。登录失败时会给出相应的提示,并将焦点停留在文本框中。登录成功后,系统会将该次会话的全局变量username设置为所登录的用户名。
一旦登录成功,用户将进入会员的功能模块。这些功能包括会员基本信息修改、已发布销售信息管理、发布信息以及退出功能。会员可以通过功能模块修改自己的基本信息,管理已发布的销售信息,发布新的信息等。退出功能用于清除全局变量username的值,并跳回到系统首页。
登录代码如下:
-
- 普通用户收藏模块
-
- 管理员公共管理界面
在公共管理界面,管理者可以进行轮播图和公告的设置、修改、添加和删除,如下图所示。
-
- 管理员的资讯管理界面
管理员点击“资讯管理”能够进行旅游资讯的修改,添加和删除,如下图所示。
-
- 管理员的爬虫景点管理界面
管理员点击“爬虫景点管理”可进行爬虫数据的查看,如下图所示。
图5-8爬虫景点管理界面
系统测试
- 测试目的
。在任何系统中,测试都是不可或缺的环节。通过测试,我们能够发现系统存在的许多问题,并确保软件上线之前进行充分的测试,以确保其不会频繁出现Bug或功能无法满足需求等问题。
单元测试是一种针对软件中最小单位(即模块)进行的测试方法。通过对每个模块进行独立测试,可以验证其功能是否按预期工作,并排除可能存在的错误。单元测试有助于提高代码质量,减少潜在的缺陷,从而提高系统的稳定性。
功能测试是对整个系统功能进行综合测试的过程。它旨在验证系统是否符合需求规格,并确保各个功能模块协同工作。通过功能测试,我们可以检测到系统中的逻辑错误、数据处理错误以及与外部接口的兼容性问题。这种测试方法可以帮助我们确保系统的功能完备性和正确性,从而提高系统的可靠性。
-
- 功能测试
下表是系统登录功能测试用例,检测了用户名和密码的不同的输入情况,观察系统的响应情况。得出该功能达到了设计目标。
表6-2 注册功能测试用例
-
- 性能测试