第一章 绪 论
1.1选题背景
随着科技的飞速发展,互联网的出现和普及深深地影响着人们的生活方式,它不仅改变了我们的日常,而且也为世界带来了前所未有的变化。
随着技术的发展,智能手机已经成为一个极具吸引力的工具,它使得无论何时何地,都可以轻松访问、办公、接收信息,从而实现从桌面到电脑的跨屏操作。此外,微信也成为众多社区聊天工具之一,它的使用更加便捷、高效,深得大众的喜爱。近年来,微信的影响力不断扩张,使得它成为一款流行的社交软件,几乎每个用户的手中都拥有它,这也正是智能手机技术的进步所带来的结果。
微信推出的小程序广告可以让公众号更加便捷地关注,这标志着小程序和公众号之间的联系已经完全建立起来。本文讨论的是重庆市旅游推荐系统小程序,它涉及到程序、数据库和计算机技术等多个方面。通过广泛涉猎各种领域,我们能够显著提升系统人员的工作效率。
1.2研究现状
随着时代的进步,互联网技术已经成为一种普遍接受的生活方式。它不仅改变了人们的日常生活,而且也为许多人提供了便捷的服务。越来越多的人都喜欢使用互联网,并且这种方式已经深深地影响了他们的日常生活。互联网的优势无可限量,它的便捷性、快速性、高效率以及低廉的成本使其成为了一种理想的解决方案。因此,类似于重庆市旅游推荐系统小程序,不仅可以让用户轻松获取信息,更可以极大地提升管理效率。
本文旨在探讨重庆市旅游推荐系统小程序的运行机制,并通过对现有状况的深入分析,结合最新的计算机技术,构建出一套完善的、高效的重庆市旅游推荐系统小程序。这个系统的核心特点是:它利用先进的计算机技术来实现,操作简单快捷;此外,它还提供了一个管理员界面,可以轻松查看和管理用户的所有信息。
随着科技的飞速发展,重庆市旅游推荐系统小程序管理系统已成为一款极具吸引力的信息服务查询软件,它既简单易用,又能够满足用户的日常需求,同时也可以提供高效、便捷、实用的功能。作为中国最主流的智能技术开发系统,它将为用户提供更加优质的服务,让他们获得更好的体验。
1.3研究内容
开发和实施重庆市旅游推荐系统小程序,需要完成以下任务:
(1)首先是确定选题,确定好所要做的系统,并对系统的背景及现在面临的一些问题等进行系统的初步确认。
(2)在系统ACK完成之后,我们将根据系统开发的要求,选择python技术来构建重庆市旅游推荐系统小程序,并对其中的数据库进行搭建和开发,以确保该系统能够有效地实现其功能。此外,我们还将对所选择的技术进行详细的技术分析,以确保系统的可行性和安全性。
(3)在重庆市旅游推荐系统小程序中,首先要确定系统的技术,然后进行在线确认,以确定系统的用户角色,并根据这些角色划分出相应的功能模块。系统的设计主要将用户分为管理员和用户角色,每个角色都有其独特的特点,而且每个功能模块都有其特定的功能,但是系统的数据库都是交互式的,用户可以随时根据自身的需求查看课程信息,而系统的工作人员则可以根据自身的职责,处理和操作在线信息。管理员可以快速收集用户的详细信息,并能够在第一时间响应客户的需求。
(4)经过精心设计的系统功能模块已经ACK完毕,接下来就是程序和界面的开发。为了检验程序的完整性,我们会采取多种测试方法,让不同的用户编写和提交相关内容,并定期检查程序中的缺陷,一旦发现问题,立即采取在线解决措施,直至系统运行稳定,才可以将其上传至正式使用。
第二章开发工具及关键框架介绍
2.1微信开发者工具
微信开发者工具是一款专为小程序开发而设计的应用,它不断改进,提供了便捷的操作方式,并且在开发过程中可以通过微信扫描二维码来访问,从而实现快速、准确的小程序开发和调试。
根据用户的需求,我们将采用不同的屏幕大小来制作小程序。
在完成了视图布置之后,可以通过执行编辑功能,快速更改当前的视图界面。
控制台:方便调试打印输出信息。
将代码上传至腾讯服务器,并在审核过程中填写版本号和备注信息,以确保代码的安全性和准确性。
通过查看资源文件,我们可以快速地调整相关项目的文件目录,从而实现断点调试。
使用远程调试技术,无论是在手机端还是PC端,都能够轻松地进行开发工作。
本地数据存储:显示的是本地存储的数据。
通过使用子父层级结构,我们可以更容易地进行视图调试。
微信的代码体积应该保持在2M 以内,而且在开发过程中,应该严格检查合法域名信息,并且为小程序的后台配置服务器域名。
微信开发者工具已经成为了开发过程中不可或缺的一部分,并且正在不断地改进和完善。
2.2小程序框架以及目录结构介绍
这款微信小程序的设计旨在帮助用户快速、便捷地创建出一款拥有完全独特 特色的应用。它由一套完善的框架结构,将用户界面、操作界面、功能界面等多种功能完美结合,使用户只需要一点点的操作,就能轻松实现微信小程序的创建。框架的核心功能是一个快速的数据绑定机制,它能够轻松地将用户的信息和界面进行一致性的管理。它不仅支持对用户信息的实时监控,还能够根据用户的需求,实现对界面的快速调整和优化,从而使用户能够轻松地构建强大的微信小程序。
2.3 Django框架介绍
Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Django框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。Django 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:
1.3.1 用于创建模型的对象关系映射;
1.3.2 为最终用户设计较好的管理界面;
1.3.3 URL 设计;
1.3.4 设计者友好的模板语言;
1.3.5 缓存系统。
Django(发音:[`dʒæŋɡəʊ]) 是用python语言写的开源web开发框架(open source web framework),它鼓励快速开发,并遵循MVC设计。Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。
Django 根据比利时的爵士音乐家Django Reinhardt命名,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。
由于Django在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志SD Times评选为2013 SD Times 100,位列“API、库和框架”分类第6位,被认为是该领域的佼佼者。
第三章 系统分析
3.1需求分析
在开发研究之前,必须仔细分析系统的需求,并且进行全面的市场调研,以便确定使用者的功能需求,以便更好地定位整个系统的开发方向。在此,我们还需要对系统的性能、业务流程以及数据等方面进行深入的分析,以便重庆市旅游推荐系统小程序的界面简洁易懂,功能完善。
通过对发达系统的可行性进行分析和讨论,我们可以确定它们能够满足哪些要求。为了确保系统的开发顺利进行,我们必须对其进行全面的评估,以确保它们符合预期的标准。如果我们没有足够的信心,就无法开发出一个功能优秀的系统,这将导致开发失败。通过对重庆市旅游推荐系统小程序进行深入分析,我们可以评估该系统的有效性,并确保它能够满足我们之前提出的需求。
系统设计应该着眼于满足用户和管理者的需求,以确定其所需的功能、管理任务以及其他相关的服务。
鉴于重庆市旅游推荐系统小程序的设计特性,必须确保满足以下几项要求:
(1)通过使用微信小程序,我们能够更好地管理重庆市旅游推荐系统的信息,从而提高工作效率。
(2)学习方法变得更加多样化,管理更加标准化;
(3)它提供了一个免费的渠道,以确保数据的实时有效沟通。
3.2可行性分析
3.2.1技术可行性:技术背景
通过采用Python技术,我们开发出一款功能强大、操作简便的重庆市旅游推荐系统小程序,同时还建立了一个完善、安全、可靠的后台数据库,以确保其运行的稳定性和可靠性。
通过采用Python技术和Mysql数据库,我们可以轻松实现重庆市旅游推荐系统的设计,并且将用户角色有机地融入其中,这种创新的方式值得一试。此外,数据的完整性和多样性也为数据的有效分配和管理提供了坚实的基础。数据库安全平台是一个至关重要的组成部分,它不仅可以提升数据安全性,还可以通过提供更加灵活、智能、有效的基础控制方法,来实现对安全计算环境的支撑,从而确保数据的安全性。由于重庆市旅游推荐系统小程序拥有强大的功能、免费的特性以及出色的用户体验,因此它在技术上是一个可行的选择。
3.2.2经济可行性
这款桌面重庆市旅游推荐系统小程序管理完全免费,无论您想使用哪种软件,只需要花一点点时间就可以完成。此外,您还可以参与市场调研,并获得免费资源。除了这些,您还可以与朋友、教练等合伙人一起完成更复杂、更具挑战性的项目。因此,重庆市旅游推荐系统小程序的研究和开发具备巨大的经济效益,几乎不需要投入任何资金。
Python技术已经相当成熟,因此,开发重庆市旅游推荐系统小程序完全不会带来任何经济负担。
3.2.3操作可行性:
重庆市旅游推荐系统小程序设计完成后,其可操作性得到了显著提升,管理员可以轻松访问系统,快速管理各种数据信息,而用户也可以轻松访问系统界面,通过界面导航菜单,快速查看各个功能模块,满足用户的信息需求,同时也为课程信息管理提供了便利。此外,系统的操作也不再需要专业人员,只需要普通用户就可以轻松完成各个功能模块的操作管理。因此,我们的系统具有很高的可操作性。通过使用界面窗口,我们能够轻松地让用户进行登录。因此,只需要掌握基础的电脑操作技能,我们就能够满足您的需求。
3.3性能分析
在当今的科技背景下,性能分析的管理已经从以往的依赖手动操作转变为采取更加先进的自动化技术,以及利用大量的智能化系统,实现自动化的系统集成,从而提高了系统的运维速度,减轻了工作人员的劳作力度,提高了系统的可靠性,从而更好地满足当下的社会发展的需求,同时也大大缩短了系统的运维周期,提高了系统的整体运维能力。通过利用先进的计算机科学与互联网,我们研制出一套具有弹性的微信小程序,以有效地降低运营成本,极大地改善客户的体验。
通过重庆市旅游推荐系统小程序的开发,我们建立了一个独立的系统,采用最新的数据库技术,以满足用户的需求,实现用户角色和功能模块的完美结合,使得管理更加高效、精准,与传统的管理信息完全不同,这样一来,既可以节省资源,又能够大大提升业务处理的速度。这款产品拥有快速、高效、强大的功能。
3.4系统操作流程
3.4.1用户登录流程
第一步,为了保证系统的安全性,用户需要在登录窗口中输入自己的个人信息,并确保信息准确无误。如果输入的信息不正确,将会弹出提示框,导致用户登录失败,需要重新输入,如图3-1所示。
图3-1登录操作流程图
3.4.2信息添加流程
重庆市旅游推荐系统小程序可以实现快速、准确地收集和处理各种信息,而且在使用过程中,只有在按照指定的界面和指定的参考文献,才能够正确地获取和处理信息,而若信息未能满足预期,就会被退出第一步,并且在第二步中,还会继续检查信息的准确性,以确保最终的结果能够满足预期的目标。
图3-2 信息添加流程图
3.4.3信息删除流程
无论是何种用户角色,只要进入了不正常的系统操作界面,就可以使用不同的信息内容来进行操作。当用户尝试删除系统中的数据时,必须先ACK这些数据是否已经被删除,如果没有,就应该按照图3-3的指示进行操作,以免影响系统的正常运行。
图3-3 信息删除流程图
第四章 系统设计与实现
4.1系统架构设计
在本次研究中,我们将重点关注重庆市旅游推荐系统小程序的项目概述和设计分析。我们将重点关注学习平台的具体情况,并对数据库进行设计。我们将使用mysql数据库来支持我们的系统,同时我们将采用更加人性化的操作设计,以便在系统中及时处理和反馈错误信息。
通过微信小程序开发的重庆市旅游推荐系统,不仅支持客户的登录,还支持对客户的信息、服务类型和评价服务的查看,并且提交全面的数据和信息,从而满足用户的各种需求。此外,该软件还支持景点推荐列表和景点推荐分类,为客户带来更为便利的操作体验,并且通过对客户的人性化反馈,为客户带来更为全面的服务体验。根据系统功能需求建立的模块关系图如下图:
图4-1管理员功能模块图
图4-2用户功能模块图
4.2开发流程设计
开发重庆市旅游推荐系统小程序需要经过多个步骤,包括分析管理模块、编写代码、规划和操作,这些步骤是构建信息管理AP的关键,它们将决定系统能否达到预期的功能,并且能够在完成设计之后得到实施。在开发过程中,为了确保系统的有效性,每个阶段的开发必须严格遵循线性顺序,并且每个步骤的完成情况都要经过技术检验,以确保每个步骤的准确性,避免出现拖拽现象,从而保证系统的设计功能能够得到有效实施。
通过对重庆市旅游推荐系统小程序的成功开发,我们可以看出,采用这种方法可以显著降低系统的复杂性,并且可以通过图4-3进一步证明。
图4-3开发系统流程图
4.3数据库设计
数据库系统作为一个重要的组件,其优化针对整体网络的运行非常重要。为了构建一个高效的数据库系统,我们需要明确每个元素的特征,并将它们组合在一起。
4.3.1实体ER图
数据库在软件开发过程中起着至关重要的作用,它不仅可以帮助我们确定数据库的大小,还可以帮助我们构建出有效的数据模型。为了确保数据的安全性和稳定性,我们采用了Mysql作为数据库的管理工具。
E-R图是一种有效的技术,用于将复杂的虚拟环境转换成更加精确的形式,从而更好地表达出真实的环境。这种技术不仅能够帮助我们更好地理解和掌握虚拟环境,而且还能够帮助我们更好地构建和管理复杂的网络。Mysql数据库具有出色的安全性,它可以有效地防止数据丢失和损坏,如E-R图所示,它可以有效地防止数据丢失和损坏:
(1) 重庆市旅游推荐系统整体E-R图,如图4-4所示:
图4-4重庆市旅游推荐系统实体属性图
通过使用重庆市旅游推荐系统小程序,我们可以实现多种功能,从而满足用户的各种需求。该系统的功能结构如图4-5所示,具有良好的完整性和可靠性。
图4-5系统功能结构图
4.3.2数据表
通过对数据结构的深入分析,我们可以确定哪些表格和结构之间的关系,并且可以通过验证、调整和完善,来满足用户对数据和功能的需求,从而实现数据库的有效管理。
根据重庆市旅游推荐系统小程序的特性,我们重新设计了数据库的概念模型,以满足其功能的需求,并且结构更加清晰明确。
表access_token (登陆访问时长)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
token_id |
int |
10 |
0 |
N |
Y |
临时访问牌ID |
|
2 |
token |
varchar |
64 |
0 |
Y |
N |
临时访问牌 |
|
3 |
info |
text |
65535 |
0 |
Y |
N |
||
4 |
maxage |
int |
10 |
0 |
N |
N |
2 |
最大寿命:默认2小时 |
5 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
6 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
7 |
user_id |
int |
10 |
0 |
N |
N |
0 |
用户编号: |
表auth (用户权限管理)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
auth_id |
int |
10 |
0 |
N |
Y |
授权ID: |
|
2 |
user_group |
varchar |
64 |
0 |
Y |
N |
用户组: |
|
3 |
mod_name |
varchar |
64 |
0 |
Y |
N |
模块名: |
|
4 |
table_name |
varchar |
64 |
0 |
Y |
N |
表名: |
|
5 |
page_title |
varchar |
255 |
0 |
Y |
N |
页面标题: |
|
6 |
path |
varchar |
255 |
0 |
Y |
N |
路由路径: |
|
7 |
position |
varchar |
32 |
0 |
Y |
N |
位置: |
|
8 |
mode |
varchar |
32 |
0 |
N |
N |
_blank |
跳转方式: |
9 |
add |
tinyint |
3 |
0 |
N |
N |
1 |
是否可增加: |
10 |
del |
tinyint |
3 |
0 |
N |
N |
1 |
是否可删除: |
11 |
set |
tinyint |
3 |
0 |
N |
N |
1 |
是否可修改: |
12 |
get |
tinyint |
3 |
0 |
N |
N |
1 |
是否可查看: |
13 |
field_add |
text |
65535 |
0 |
Y |
N |
添加字段: |
|
14 |
field_set |
text |
65535 |
0 |
Y |
N |
修改字段: |
|
15 |
field_get |
text |
65535 |
0 |
Y |
N |
查询字段: |
|
16 |
table_nav_name |
varchar |
500 |
0 |
Y |
N |
跨表导航名称: |
|
17 |
table_nav |
varchar |
500 |
0 |
Y |
N |
跨表导航: |
|
18 |
option |
text |
65535 |
0 |
Y |
N |
配置: |
|
19 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
20 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
表collect (收藏)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
collect_id |
int |
10 |
0 |
N |
Y |
收藏ID: |
|
2 |
user_id |
int |
10 |
0 |
N |
N |
0 |
收藏人ID: |
3 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表: |
|
4 |
source_field |
varchar |
255 |
0 |
Y |
N |
来源字段: |
|
5 |
source_id |
int |
10 |
0 |
N |
N |
0 |
来源ID: |
6 |
title |
varchar |
255 |
0 |
Y |
N |
标题: |
|
7 |
img |
varchar |
255 |
0 |
Y |
N |
封面: |
|
8 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
9 |
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: |
表forum (论坛)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
forum_id |
mediumint |
8 |
0 |
N |
Y |
论坛id |
|
2 |
display |
smallint |
5 |
0 |
N |
N |
100 |
排序 |
3 |
user_id |
mediumint |
8 |
0 |
N |
N |
0 |
用户ID |
4 |
nickname |
varchar |
16 |
0 |
Y |
N |
昵称:[0,16] |
|
5 |
praise_len |
int |
10 |
0 |
Y |
N |
0 |
点赞数 |
6 |
hits |
int |
10 |
0 |
N |
N |
0 |
访问数 |
7 |
title |
varchar |
125 |
0 |
N |
N |
标题 |
|
8 |
keywords |
varchar |
125 |
0 |
Y |
N |
关键词 |
|
9 |
description |
varchar |
255 |
0 |
Y |
N |
描述 |
|
10 |
url |
varchar |
255 |
0 |
Y |
N |
来源地址 |
|
11 |
tag |
varchar |
255 |
0 |
Y |
N |
标签 |
|
12 |
img |
text |
65535 |
0 |
Y |
N |
封面图 |
|
13 |
content |
longtext |
2147483647 |
0 |
Y |
N |
正文 |
|
14 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
15 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
16 |
avatar |
varchar |
255 |
0 |
Y |
N |
发帖人头像: |
|
17 |
type |
varchar |
64 |
0 |
N |
N |
0 |
论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
表forum_type (论坛分类)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
type_id |
smallint |
5 |
0 |
N |
Y |
分类ID:[0,10000] |
|
2 |
name |
varchar |
16 |
0 |
N |
N |
分类名称:[2,16] |
|
3 |
description |
varchar |
255 |
0 |
Y |
N |
描述:[0,255]描述该分类的作用 |
|
4 |
url |
varchar |
255 |
0 |
Y |
N |
外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 |
|
5 |
father_id |
smallint |
5 |
0 |
N |
N |
0 |
上级分类ID:[0,32767] |
6 |
icon |
varchar |
255 |
0 |
Y |
N |
分类图标: |
|
7 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
8 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
表hits (用户点击)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
hits_id |
int |
10 |
0 |
N |
Y |
点赞ID: |
|
2 |
user_id |
int |
10 |
0 |
N |
N |
0 |
点赞人: |
3 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
4 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
5 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表: |
|
6 |
source_field |
varchar |
255 |
0 |
Y |
N |
来源字段: |
|
7 |
source_id |
int |
10 |
0 |
N |
N |
0 |
来源ID: |
表hotel_recommendations (酒店推荐)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
hotel_recommendations_id |
int |
10 |
0 |
N |
Y |
酒店推荐ID |
|
2 |
hotel_name |
varchar |
64 |
0 |
Y |
N |
酒店名称 |
|
3 |
hotel_type |
varchar |
64 |
0 |
Y |
N |
酒店类型 |
|
4 |
hotel_address |
varchar |
64 |
0 |
Y |
N |
酒店地址 |
|
5 |
hotel_pictures |
varchar |
255 |
0 |
Y |
N |
酒店图片 |
|
6 |
hotel_prices |
int |
10 |
0 |
Y |
N |
0 |
酒店价格 |
7 |
hotel_description |
text |
65535 |
0 |
Y |
N |
酒店描述 |
|
8 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数 |
9 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
10 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
11 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
12 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
表hotel_type (酒店类型)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
hotel_type_id |
int |
10 |
0 |
N |
Y |
酒店类型ID |
|
2 |
hotel_type |
varchar |
64 |
0 |
Y |
N |
酒店类型 |
|
3 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
4 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
表notice (公告)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
notice_id |
mediumint |
8 |
0 |
N |
Y |
公告id: |
|
2 |
title |
varchar |
125 |
0 |
N |
N |
标题: |
|
3 |
content |
longtext |
2147483647 |
0 |
Y |
N |
正文: |
|
4 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
5 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
表praise (点赞)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
praise_id |
int |
10 |
0 |
N |
Y |
点赞ID: |
|
2 |
user_id |
int |
10 |
0 |
N |
N |
0 |
点赞人: |
3 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
4 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
5 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表: |
|
6 |
source_field |
varchar |
255 |
0 |
Y |
N |
来源字段: |
|
7 |
source_id |
int |
10 |
0 |
N |
N |
0 |
来源ID: |
8 |
status |
bit |
1 |
0 |
N |
N |
1 |
点赞状态:1为点赞,0已取消 |
表recommended_tourist_attractions (景点推荐)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
recommended_tourist_attractions_id |
int |
10 |
0 |
N |
Y |
景点推荐ID |
|
2 |
attraction_name |
varchar |
64 |
0 |
Y |
N |
景点名称 |
|
3 |
types_of_attractions |
varchar |
64 |
0 |
Y |
N |
景点类型 |
|
4 |
attraction_address |
varchar |
64 |
0 |
Y |
N |
景点地址 |
|
5 |
scenic_spot_pictures |
varchar |
255 |
0 |
Y |
N |
景点图片 |
|
6 |
attraction_tickets |
int |
10 |
0 |
Y |
N |
0 |
景点门票 |
7 |
development_time |
varchar |
64 |
0 |
Y |
N |
开发时间 |
|
8 |
description_of_attractions |
text |
65535 |
0 |
Y |
N |
景点描述 |
|
9 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数 |
10 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
11 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
12 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
13 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
表regular_users (普通用户)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
regular_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 |
contact_information |
varchar |
64 |
0 |
Y |
N |
联系方式 |
|
5 |
examine_state |
varchar |
16 |
0 |
N |
N |
已通过 |
审核状态 |
6 |
user_id |
int |
10 |
0 |
N |
N |
0 |
用户ID |
7 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
8 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
表restaurant_recommendations (餐厅推荐)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
restaurant_recommendations_id |
int |
10 |
0 |
N |
Y |
餐厅推荐ID |
|
2 |
restaurant_name |
varchar |
64 |
0 |
Y |
N |
餐厅名称 |
|
3 |
restaurant_type |
varchar |
64 |
0 |
Y |
N |
餐厅类型 |
|
4 |
restaurant_address |
varchar |
64 |
0 |
Y |
N |
餐厅地址 |
|
5 |
restaurant_image |
varchar |
255 |
0 |
Y |
N |
餐厅图片 |
|
6 |
restaurant_description |
longtext |
2147483647 |
0 |
Y |
N |
餐厅描述 |
|
7 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数 |
8 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
9 |
recommend |
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 |
更新时间 |
表restaurant_type (餐厅类型)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
restaurant_type_id |
int |
10 |
0 |
N |
Y |
餐厅类型ID |
|
2 |
restaurant_type |
varchar |
64 |
0 |
Y |
N |
餐厅类型 |
|
3 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
4 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
表sensitive_vocabulary (敏感词汇)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
sensitive_vocabulary_id |
int |
10 |
0 |
N |
Y |
敏感词汇ID |
|
2 |
sensitive_vocabulary |
varchar |
64 |
0 |
Y |
N |
敏感词汇 |
|
3 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
4 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
表slides (轮播图)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
slides_id |
int |
10 |
0 |
N |
Y |
轮播图ID: |
|
2 |
title |
varchar |
64 |
0 |
Y |
N |
标题: |
|
3 |
content |
varchar |
255 |
0 |
Y |
N |
内容: |
|
4 |
url |
varchar |
255 |
0 |
Y |
N |
链接: |
|
5 |
img |
varchar |
255 |
0 |
Y |
N |
轮播图: |
|
6 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击量: |
7 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
8 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
表tourism_plan (旅游计划)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
tourism_plan_id |
int |
10 |
0 |
N |
Y |
旅游计划ID |
|
2 |
regular_users |
int |
10 |
0 |
Y |
N |
0 |
普通用户 |
3 |
user_name |
varchar |
64 |
0 |
Y |
N |
用户名称 |
|
4 |
plan_name |
varchar |
64 |
0 |
Y |
N |
计划名称 |
|
5 |
attraction_name |
varchar |
64 |
0 |
Y |
N |
景点名称 |
|
6 |
restaurant_name |
varchar |
64 |
0 |
Y |
N |
餐厅名称 |
|
7 |
hotel_name |
varchar |
64 |
0 |
Y |
N |
酒店名称 |
|
8 |
planned_budget |
int |
10 |
0 |
Y |
N |
0 |
计划预算 |
9 |
planned_time |
varchar |
64 |
0 |
Y |
N |
计划时间 |
|
10 |
plan_remarks |
text |
65535 |
0 |
Y |
N |
计划备注 |
|
11 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
12 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
表types_of_attractions (景点类型)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
types_of_attractions_id |
int |
10 |
0 |
N |
Y |
景点类型ID |
|
2 |
types_of_attractions |
varchar |
64 |
0 |
Y |
N |
景点类型 |
|
3 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
4 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
表upload (文件上传)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
upload_id |
int |
10 |
0 |
N |
Y |
上传ID |
|
2 |
name |
varchar |
64 |
0 |
Y |
N |
文件名 |
|
3 |
path |
varchar |
255 |
0 |
Y |
N |
访问路径 |
|
4 |
file |
varchar |
255 |
0 |
Y |
N |
文件路径 |
|
5 |
display |
varchar |
255 |
0 |
Y |
N |
显示顺序 |
|
6 |
father_id |
int |
10 |
0 |
Y |
N |
0 |
父级ID |
7 |
dir |
varchar |
255 |
0 |
Y |
N |
文件夹 |
|
8 |
type |
varchar |
32 |
0 |
Y |
N |
文件类型 |
表user (用户账户:用于保存用户登录信息)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
user_id |
mediumint |
8 |
0 |
N |
Y |
用户ID:[0,8388607]用户获取其他与用户相关的数据 |
|
2 |
state |
smallint |
5 |
0 |
N |
N |
1 |
账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 |
user_group |
varchar |
32 |
0 |
Y |
N |
所在用户组:[0,32767]决定用户身份和权限 |
|
4 |
login_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
上次登录时间: |
5 |
phone |
varchar |
11 |
0 |
Y |
N |
手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 |
|
6 |
phone_state |
smallint |
5 |
0 |
N |
N |
0 |
手机认证:[0,1](0未认证|1审核中|2已认证) |
7 |
username |
varchar |
16 |
0 |
N |
N |
用户名:[0,16]用户登录时所用的账户名称 |
|
8 |
nickname |
varchar |
16 |
0 |
Y |
N |
昵称:[0,16] |
|
9 |
password |
varchar |
64 |
0 |
N |
N |
密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 |
|
10 |
|
varchar |
64 |
0 |
Y |
N |
邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 |
|
11 |
email_state |
smallint |
5 |
0 |
N |
N |
0 |
邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 |
avatar |
varchar |
255 |
0 |
Y |
N |
头像地址:[0,255] |
|
13 |
open_id |
varchar |
255 |
0 |
Y |
N |
针对获取用户信息字段 |
|
14 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
表user_group (用户组:用于用户前端身份和鉴权)
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
group_id |
mediumint |
8 |
0 |
N |
Y |
用户组ID:[0,8388607] |
|
2 |
display |
smallint |
5 |
0 |
N |
N |
100 |
显示顺序:[0,1000] |
3 |
name |
varchar |
16 |
0 |
N |
N |
名称:[0,16] |
|
4 |
description |
varchar |
255 |
0 |
Y |
N |
描述:[0,255]描述该用户组的特点或权限范围 |
|
5 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表: |
|
6 |
source_field |
varchar |
255 |
0 |
Y |
N |
来源字段: |
|
7 |
source_id |
int |
10 |
0 |
N |
N |
0 |
来源ID: |
8 |
register |
smallint |
5 |
0 |
Y |
N |
0 |
注册位置: |
9 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
10 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
第五章 系统实现
5.1用户前台功能模块(前端)
5.1.1用户登录界面
在重庆市旅游推荐系统小程序中,用户可以通过输入账号、密码和其他信息来完成登录,如图5-1所示。
图5-1登录界面图
登录关键代码如下:
def Login(self, ctx):
print("===================登录=====================")
ret = {
"error": {
"code": 70000,
"message": "账户不存在",
}
}
body =
password = md5hash(body["password"]) or ""
obj = service_select("user").Get_obj(
{"username": body["username"]}, {"like": False}
)
if obj:
user_group = service_select("user_group").Get_obj({'name': obj['user_group']}, {"like": False})
if user_group and user_group['source_table'] != '':
user_obj = service_select(user_group['source_table']).Get_obj({"user_id": obj['user_id']}, {"like": False})
if user_obj['examine_state'] == '未通过':
ret = {
"error": {
"code": 70000,
"message": "账户未通过审核",
}
}
return ret
if user_obj['examine_state'] == '未审核':
ret = {
"error": {
"code": 70000,
"message": "账户未审核",
}
}
return ret
if obj["state"] == 1:
if obj["password"] == password:
timeout = ()
timestamp = int((())) * 1000
token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))
[token] = obj["user_id"]
service_select("access_token").Add(
{"token": token, "user_id": obj["user_id"]}
)
obj["token"] = token
ret = {
"result": {"obj": obj}
}
else:
ret = {
"error": {
"code": 70000,
"message": "密码错误",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "用户账户不可用,请联系管理员",
}
}
return ((ret, ensure_ascii=False))
5.1.2用户注册界面
注册,您需要填写您的账户、密码、昵称、手机、邮箱和个人简介等信息,然后点击提交按钮,即可完成注册。请参考图5-2。
图5-2注册界面图
注册关键代码如下:
def Register(self, ctx):
print("===================注册=====================")
userService = service_select("user")
body =
if "username" not in body and body["username"] == '':
return (({
"error": {
"code": 70000,
"message": "用户名不能为空",
}
}, ensure_ascii=False))
if "user_group" not in body and body["user_group"] == '':
return (({
"error": {
"code": 70000,
"message": "用户组不能为空",
}
}, ensure_ascii=False))
if "password" not in body and body["password"] == '':
return (({
"error": {
"code": 70000,
"message": "密码不能为空",
}
}, ensure_ascii=False))
post_param = body
post_param['nickname'] = body["nickname"] or ""
post_param['password'] = md5hash(body["password"])
obj = userService.Get_obj({"username": post_param['username']}, {"like": False})
if obj:
return (({
"error": {
"code": 70000,
"message": "用户名已存在",
}
}, ensure_ascii=False))
ret = {
"error": {
"code": 70000,
"message": "注册失败",
}
}
bl = (post_param)
if bl:
ret = {
"result": {
"bl": True,
"message": "注册成功"
}
}
return ((ret, ensure_ascii=False))
5.1.3用户功能界面
在首页,用户可以轻松访问、查看、操作、收藏、购买、评论等多种功能,如图5-3所示,为用户提供了更加便捷的服务。
图5-3系统首页界面图
5.1.4景点推荐界面
在景点推荐页面,用户可以轻松获取有关推荐景点的详细信息,还可以通过关键字快速搜索,同时还可以进行点赞、评论、收藏等功能,如图5-4所示。
图5-4景点推荐界面图
5.1.5餐厅推荐界面
在餐厅推荐页面,用户可以轻松获取有关推荐餐厅的详细信息,还可以通过关键字快速搜索,同时还可以进行点赞、评论、收藏等功能,如图5-5所示。
图5-5餐厅推荐界面图
5.1.6酒店推荐界面
在酒店推荐页面,用户可以轻松获取有关推荐酒店的详细信息,还可以通过关键字快速搜索,同时还可以进行点赞、评论、收藏等功能,如图5-6所示。
图5-6酒店推荐界面图
5.1.7交流论坛界面
交流论坛页面可以查标题、用户名、论坛内容等信息,并可以进行收藏、点赞、评论提交等操作。如图5-7所示。
图5-7交流论坛界面图
5.2管理员功能模块(后端)
5.2.1轮播图界面
管理者可以使用多种方式,包括但不限于:编辑文章的标题、添加信息、添加连接、查看轮播图以及查看点击量,详见图5-8。
图5-8轮播图界图面
5.2.2管理员功能界面
通过管理员功能页面,用户可以查看首页、系统用户(管理员、普通用户)、景点推荐管理、餐厅推荐管理、酒店推荐管理、旅游计划管理、景点类型管理、餐厅类型管理、酒店类型管理、系统管理、通知公告管理、交流管理(论坛列表、论坛分类列表)等,并且可以根据需要进行相应的操作,如图5-9所示。
图5-9管理员功能界面图
5.2.3系统用户界面
系统用户管理页面,您可以输入您的昵称、用户名、用户姓名、用户性别等信息,并且可以根据您的需求进行调整,如图5-10所示。
图5-10系统用户管理界面图
5.2.4景点推荐管理界面
通过景点推荐管理页面,您可以输入您的景点名称、景点类型、景点地址、景点门票数量、开发时间、景点推荐介绍描述等信息,并且可以根据您的需求进行调整,如图5-11所示。
图5-11景点推荐管理界面图
5.2.5餐厅推荐管理界面
通过餐厅推荐管理页面,您可以输入您的餐厅名称、餐厅类型、餐厅地址、餐厅特色菜品推荐描述等信息,并且可以根据您的需求进行调整,如图5-12所示。
图5-12餐厅推荐管理界面图
5.2.6酒店推荐管理界面
通过酒店推荐管理页面,您可以输入您的酒店名称、酒店类型、酒店地址、酒店住宿价格、酒店特色推荐描述等信息,并且可以根据您的需求进行调整,如图5-13所示。
图5-13酒店推荐管理界面图
第六章 系统的测试
6.1 测试目的
虽然程序设计本身就具备一定的风险,因此,即便出现一点点的失败,也很少 影响到整个的运行。然而,即便出现一点点的失败,也很少影响到整个的运行,因此,我们必须对程序进行严格的检查,及早发现和解决失败,从而确保整个系统的运行良好,从而确保其运行的持久性和稳定性。通过本章的讨论,我们可以更好地识别出存在的问题,从而有效地解决它们,尽管需要花费大量的精力,但却至关重要且不可或缺。
软件测试和开发过程有着密切的联系,它们都需要遵循严格的管理学原则,以确保软件的可靠性和可用性。然而,随着技术的发展,国内的软件测试已经取得了长足的进步,其流程更加完善,效率也更加提升。
为了验证重庆市旅游推荐系统小程序的有效性,我们需要对其各个功能模块的运行情况和性能进行严格的检查和验证。一旦检查结果出现问题,我们将立即采取措施,并尽快纠正,从而为用户提供更加优质的服务。
6.2 测试方案设计
6.2.1 测试策略
1、功能测试
对于初学者而言,由于缺乏对新开发软件的全面理解,他们只能通过对照黑盒测试的方式,盲目地输入数据,而无法获得正确的反馈。然而,由于存在着漏洞,一旦输入错误的数据,就有可能导致测试失败。
2、性能测试
性能测试是一种自动化测试工具,它旨在评估软件程序的整体性能,并且可以将其与负载测试和压力测试相结合,以更好地评估系统的性能。负载测试旨在评估系统对外部负载的反应,而压力测试则可以检测出系统能够提供的最高水平服务。
6.2.2 测试分析
测试评估系统质量的方式不仅仅局限于编码和过程,而是要结合软件设计、历史需求分析等多种因素,以达到最佳效果。
软件测试应遵循以下原则:
(1)为了确保软件的可靠性,我们建议及早完成软件的测试,这样可以有效地缩短软件的开发周期,同时也可以有效地保证软件的可靠性。
(2)在进行软件测试时,应当认真处理并妥善保存所有相关计划、报告等,这样不仅可以有效地提高测试效率,而且也有助于日后系统的维护。
(3)在软件测试的全部过程中,应该特别关注聚类现象。
(4)在软件测试中,为了获得更加可靠的评估,最好避免将其与本身的系统相比较,而是采用双向的、可靠的、可比较的标准,来检验其可靠性、准确度及可操作性。
(5)我们的测试计划将严格遵循软件测试的规范和准则。
(6)对整个测试结果进行综合检查,尽量避免重复错误。
通过使用我们的重庆市旅游推荐系统,我们可以更好地满足用户的需求。这样一来,我们就可以大幅提升用户的使用率。
6.3 测试结果
经过严格的测试,我们发现该系统的性能非常出色,它的精度、可靠性、稳健性都达到了极高的水平,而且它还支持快速、精细的点击操作,使用者的使用感受更加良好。此外,它还支持各种主流浏览器,满足不同的使用要求。