首页 > 编程语言 >django旅游网站-毕业设计源码33190

django旅游网站-毕业设计源码33190

时间:2024-12-21 09:29:45浏览次数:7  
标签:10 varchar int 33190 19 源码 毕业设计 time id

目  录

1 引言

1.1 研究背景和意义

1.2开发现状

1.3论文结构与章节安排

2 旅游网站系统分析

2.1可行性分析

2.1.1法律可行性分析

2.1.2技术可行性分析

2.1.3经济可行性分析

2.1.4社会可行性分析

2.2 系统功能分析

2.2.1 功能性分析

2.3系统性能需求分析

2.3.1业务流程分析

2.3.2数据流程分析

2.4 系统用例分析

2.5本章小结

3 旅游网站总体设计

3.1 系统模块设计

3.2 数据库设计

3.2.1 数据库概念结构设计

3.2.2 数据库逻辑结构设计

3.3本章小结

4 旅游网站详细设计与实现

4.1普通用户功能模块

4.1.1 注册首页界面

4.1.2 用户注册界面

4.1.3 注册登录界面

4.1.4我的账户界面

4.1.5 天气预报界面

4.2管理员功能模块

4.2.1 系统用户管理界面

4.2.2 旅团类型管理界面

4.2.3车票信息管理界面

4.2.4景点预订管理界面

4.2.5系统管理界面

5系统测试

5.1 系统测试用例

5.2 系统测试结果

结论

参考文献

致  谢

基于Python的旅游网站的设计与实现

摘 要

随着互联网的普及和旅游业的迅速发展,在线旅游已经成为人们规划和预订旅行的主要方式。为了满足人们对于便捷、个性化和全方位旅游体验的需求,我们设计并实现了一个基于 Python 的旅游网站。

在这个项目中,我们将探讨如何利用 Python 的 Web 开发框架和数据库技术来创建旅游网站的后端逻辑。同时,我们还将关注用户界面的设计和前端开发,以确保用户能够方便地与网站进行交互。

通过这个旅游网站,用户将能够探索各地的旅游目的地、浏览热门景点和活动、预订酒店和机票等服务,并与其他旅行者分享他们的经验和建议。我们希望这个项目能够为旅游业的数字化发展做出贡献,并为用户提供一个便捷、愉悦的旅游规划和预订体验。

关键词:Python语言;MySQL数据库;旅游网站

Design and Implementation of a Tourism Website Based on Python

Abstract

With the popularity of the Internet and the rapid development of tourism, online travel has become the main way for people to plan and book travel. In order to meet people's needs for convenient, personalized, and all-round travel experiences, we have designed and implemented a travel website based on Python.

In this project, we will explore how to use Python's web development framework and database technology to create the backend logic for tourism websites. At the same time, we will also focus on user interface design and front-end development to ensure that users can easily interact with the website.

Through this tourism website, users will be able to explore various tourist destinations, browse popular attractions and activities, book hotels and flights, and share their experiences and suggestions with other travelers. We hope that this project can contribute to the digital development of the tourism industry and provide users with a convenient and enjoyable travel planning and booking experience.

Keywords: Python language; MySQL database; Tourism website

1 引言

1.1 研究背景和意义

着经济水平的提高,国内的旅游业发展快速,但是相对来说,国内旅游业发展的程度并不能完全适应经济的发展和人民生活水平提高的需要。因此国内旅游业在国民经济中的地位和作用凸显重要。

但国内旅游产业管理滞后,基础弱,企业效益差,信息化较低。旅游行政管理部门的管理方式些许落后,缺少信息化管理,信息沟通渠道不顺畅等一系列问题。面对挑战和挫折,国内旅游产业必须转变旧观念,勇于创新,打破传统理念,提供各种资源,这样一来使整个行业有了崭新的一幕。同时要加强旅游信息化的建设,不断提高各级管理部门的管理能力和工作效率,简化办事的程序,减少工作的成本,加快信息的传播速度,多做宣传,提高信息的真实性;另一方面通过开展旅游产业来满足游客的需求,提升旅游的服务质量,缩减成本,转变旅游企业传统经营模式,这样做的话不仅提高整个旅游产业的素质,而且提升旅游产业的信息化,优化产业的结构和资源。进而带动许多产业的发展,提高就业机率,对经济的发展有着积极的推动作用。

1.2开发现状

我国的旅游局要求落实全方位发展中国旅游业的战略目标,其中的重要任务就是要有效利用十年左右的时间,尽最大努力地提高信息技术应用中各方位、各层次的旅游服务水平,将旅游和信息服务相互融合,促进信息化发展。基本上建成了覆盖全国的旅游基础设施和旅游信息数据库平台,追求信息资源的交流与共享,最终形成一个有示范效应的智慧旅游城市,智慧旅游企业。目前,许多城市都在开展智能城市建设。中国的旅游局已经对智慧旅游城市的战略落实了试行方案,初步肯定了国内十八个城市。我国大部分的旅游网站在开发初期,由于缺少对旅游行业和网络运营的全而了解,未能找准切入点,使旅游网站建成之后缺乏特色与“卖点”,往往照搬照抄其它旅游网站的现成模式,成为欧美等网络业发达国家网站的中文翻版,或者是大型网站的缩影。其结果是版而设计相似,内容雷同,重复建设问题严重,既没有形成具有一定规模的经营模式,也没有达到网上促销、预订的高成功率,使整个旅游业电子商务的销售额少得可怜。旅游产品交易的安全性问题是旅游网站发展的瓶颈。是否能够确保在动态、开放的旅游网站上,安全的完成旅游产品的整个交易过程,是旅游者选择网站上购买旅游产品首要考虑的问题之一。而我国大部分旅游网站在线支付手段不健全,缺乏统一的标准体系,在线交易的安全性更是令人担忧。恶意订购、交易出错的现象屡见不鲜,所以,消费者对旅游产品的网上交易信赖度不高。因此,交易不安全问题成为旅游网站发展中最大的障碍。

与国外相比,我国旅游电子商务起步稍晚,1996年才开始出现专业的旅游网站,其后旅游电子商务快速发展,到2000年进入第一个高潮期,但在2001年由于受世界旅游业整体负增长形势的影响,中国的旅游业在这一年经历了一定的困境,增长速度有所下降;2002年中国旅游业又开始整体回升,到2005年Web2.0的刺激下掀起了新的一轮旅游电子商务热,自此又进入了一个新的“加速发展期”。目前,我国具有一定旅游资讯能力的网站已有5000多家。其中专业旅游300余家,主要包括地区性网站、专业网站和门户网站的旅游频道3大类。

1.3论文结构与章节安排

本文共分为六章,章节内容安排如下:

第一章:引言。第一章主要介绍了课题研究的背景和意义,国内目前相关研究现状。

第二章:系统需求分析。第二章主要从系统的用户、功能等方面进行需求分析。

第三章:系统设计。第三章主要对系统框架、系统功能模块、数据库进行功能设计。

第四章:系统实现。第四章主要介绍了系统框架搭建、系统界面的实现。

第五章:系统测试。第五章主要对系统的部分界面进行测试并对主要功能进行测试

2 旅游网站系统分析

2.1可行性分析

2.1.1法律可行性分析

开发软件有没有触犯法律,这涉及到软件或者系统能不能发布的问题。如果触犯了法律,就必将会受到法律的制裁。常见法律问题就是软件抄袭问题,若是抄袭别人软件,将会受到严厉惩罚。

2.1.2技术可行性分析

技术可行性主要考虑当前项目所用的技术是否能够符合,在设备上是否能够满足,及各种辅助工具是否提供帮助。本系统用的是Python开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。采用Python编程语言,已无技术上的问题。

2.1.3经济可行性分析

旅游网站是在Python和MySQL的环境中运行的,而系统的成本也只是主要分布在软件的开发和维护上。但如果系统上线投入使用之后,不仅可以方便人们,还节省了用户的时间和精力,而且还极大限度的方便了运营者,减少了运营者的工作强度。旅游网站其实也不太复杂,在开发的时候经济支出也不大,在开发系统时时间用的也不多,从时间的优势和对经济利益方面产生的好处远超过维护和管理的成本,所以开发此系统是可行合适的。

2.1.4社会可行性分析

本系统是自行开发的系统,以方便高效管理旅游景点为出发点,是具有实际意义的系统,开发的环境软件和用到的数据库也都是开源代码,不存在侵权等问题,所以在社会方面也是可行的。

2.2 系统功能分析

2.2.1 功能性分析

旅游网站系统我划分为了普通用户管理模块和管理员模块这两大部分。

普通用户管理模块:

  1. 用户注册:将用户信息录入数据库,用户利用注册的账号以及密码登录系统,浏览查看各种信息,添加部分信息,用户对个人信息的增删改查,比如个人资料,密码修改。
  2. 个人信息模块:修改信息功能,用户修改个人资料信息,但不能修改账号;密码修改功能,修改登录密码。
  3. 注册首页界面:在旅游网站的首页界面上采用了上下的方式来布局界面,上面是导航栏,下面是通知公告。
  4. 注册登录界面:注册用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到旅游网站的首页中;否则将会提示相应错误信息。
  5. 个人中心:

● 车票预订:用户可以预订各种类型的车票。

● 车票取消:用户可以取消已预订的车票。

● 机票预订:用户可以预订国内外的机票。

● 机票取消:用户可以取消已预订的机票。

● 景点预订:用户可以预订感兴趣的景点门票。

● 景点取消:用户可以取消已预订的景点门票。

● 酒店预订:用户可以预订各个目的地的酒店。

● 酒店取消:用户可以取消已预订的酒店。

● 收藏:用户可以收藏感兴趣的旅游产品和服务,方便以后查看和预订。

  1. 社区论坛:用户可以在这里交流旅游经验、分享攻略和心得。
  2. 通知公告:网站发布的重要通知和公告,用户可以及时了解到网站的动态。
  3. 旅游资讯:提供最新的旅游新闻、目的地介绍和旅行建议。
  4. 反馈留言:用户可以向网站提出意见、建议或投诉。
  5. 天气预报:展示用户所在地区或目的地的天气情况。
  6. 旅团信息:用户可以查看和预订旅行团的信息。
  7. 车票信息:展示各种车票的时刻表和票价信息。
  8. 航班信息:展示国内外航班的起降时间和票价信息。
  9. 景点信息:介绍全球各地的知名景点和旅游景点。
  10. 酒店信息:提供各个目的地的酒店列表和详细信息。
  11. 美食推荐:推荐各地的特色美食和餐厅。

后台管理员管理模块:

  1. 系统用户管理界面:管理员点击“系统用户”这一菜单会显示普通用户、管理员这两个子菜单,管理员可以对这两个角色的信息进行增删改查操作。
  2. 旅团类型管理:对旅团类型进行分类和管理。
  3. 旅团信息管理:发布、编辑和删除旅团的详细信息,如旅团人数、旅团类型、旅团介绍等。
  4. 车票信息管理:管理各种车票的信息,包括车次、座位数量、票价等。
  5. 车票预订管理:处理用户的车票预订请求,包括确认、拒绝、修改预订等操作。
  6. 车票取消管理:处理用户的车票取消请求,更新预订状态。
  7. 航班信息管理:管理国内外航班的信息,包括航班号、起降时间、票价等。
  8. 机票预订管理:处理用户的机票预订请求,包括确认、拒绝、修改预订等操作。
  9. 机票取消管理:处理用户的机票取消请求,更新预订状态。
  10. 景点信息管理:管理各个景点的信息,包括名称、地址、介绍、图片等。
  11. 景点预订管理:处理用户的景点预订请求,包括确认、拒绝、修改预订等操作。
  12. 景点取消管理:处理用户的景点取消请求,更新预订状态。
  13. 酒店类型管理:对酒店类型进行分类和管理。
  14. 美食推荐管理:管理各地美食的信息,包括推荐菜品、餐厅信息等。
  15. 系统管理:管理员可以对系统前台展示的轮播图和敏感词管理进行增删改查,方便用户进行查看。
  16. 留言管理:查看和回复用户的留言和反馈。
  17. 通知公告管理:发布和管理网站的通知公告。
  18. 资源管理:管理网站的各类旅游资讯和资讯分类等。
  19. 交流管理:管理用户在社区论坛中的交流内容,确保合规和积极的交流氛围。

3.2.2非功能性分析

旅游网站的非功能性需求比如旅游网站的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:

3-1旅游网站非功能需求表

安全性

主要指旅游网站数据库的安装,数据库的使用和密码的设定必须合乎规范。

可靠性

可靠性是指旅游网站能够安装用户的指示进行操作,经过测试,可靠性90%以上。

性能

性能是影响旅游网站占据市场的必要条件,所以性能最好要佳才好。

可扩展性

比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。

易用性

用户只要跟着旅游网站的页面展示内容进行操作,就可以了。

可维护性

旅游网站开发的可维护性是非常重要的,经过测试,可维护性没有问题

2.3系统性能需求分析

评判一个系统好坏的一项重要指标就是性能,下面是对此系统的一些性能进行阐述。

1.系统的安全性和稳定性: 旅游网站在管理权限上有着严格的控制,即想登录此平台进行操作,则必须要有操作权限,没有权限的用户是不可能登录平台查看任何的信息和数据,从而确保了系统的安全性。

2.数据的完整性和准确性:第一个是各项记录信息的完整性,信息记录的内容可以为空;第二个是各项信息数据之间相互联系的准确性;第三个是数据在不同记录信息的一致性

3.用户操作系统简单方便

在系统开发中按照“简单易用”的原则,能够使用户对系统的使用一目了然,既能保证用户使用,同时又能保证维护人员方便维护。

2.3.1业务流程分析

业务流程图不仅能反映出内部业务之间的关系,而且能体现出作业顺序及信息的流动。响应式旅游资讯网站必须支持整个组织在不同层次上的各种功能,各个功能模块之间又有各种不同相关的信息进行联系,构成了一个有机的整体,根据旅游网站的特点以及结合所面临的实际情况,设计出了系统的业务流程图。

系统的业务流程如下图所示。

图3-2系统业务流程图

2.3.2数据流程分析

在分析了系统的业务流程之后,就要分析系统的数据流,为后面设计系统的数据库做好基础。这里主要利用数据流程图来说明数据流程。数据流程图是一个图示工具,容易理解,容易在开发和用户方之间进行交流,以及在开发组织内部交流。因此数据流程图作为一种模型工具已经广泛使用在软件工程的实践中。

系统的顶层数据流图如下图所示。

图3-3系统数据流图(顶层)

根据系统的业务流程,用户浏览所使用到的数据归纳为输出信息。而用户提交的数据则作为系统的输入数据。相应的,根据系统管理员业务流程,管理员对系统内容的添加、更新和删除等所操作的数据定义为输入信息。

系统的底层数据流图如下图所示。

图3-4系统数据流图(底层)

2.4 系统用例分析

旅游网站的完整UML用例图分别是图3-5和图3-6。在参与者上包括普通用户以及管理员。普通用户角色用例包括我的账户、个人中心(个人首页、车票预订、车票取消、机票预订、机票取消、景点预订、景点取消、酒店预订、酒店取消、收藏)、首页、社区论坛、通知公告、旅游资讯、反馈留言、天气预报、旅团信息、车票信息、航班信息、景点信息、酒店信息、美食推荐等功能,普通用户角色用例如图3-5所示。

图3-5 旅游网站用户角色用例图

后台管理上的管理员是维护整个旅游网站中所有数据信息的,管理员有后台首页、系统用户、旅团类型管理、旅团信息管理、 车票信息管理、车票预订管理、车票取消管理、航班信息管理、机票预订管理、机票取消管理、景点信息管理、景点预订管理、景点取消管理、酒店类型管理、美食推荐管理、系统管理、留言管理、通知公告管理、资源管理、交流管理等功能。管理员角色用例如图3-6所示。

图3-6 旅游网站管理员角色用例图

2.5本章小结

本章主要通过对旅游网站的可行性分析、功能需求分析、系统用例分析,确定整个旅游网站要实现的功能。同时也为旅游网站的代码实现和测试提供了标准。

3 旅游网站总体设计

本章主要讨论的内容包括旅游网站的功能模块设计、数据库系统设计。

3.1 系统模块设计

旅游网站根据前面章节的功能需求分析得出其总体设计模块图如图3-1所示。

图3-1旅游网站功能模块图

3.2 数据库设计

数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。

3.2.1 数据库概念结构设计

下面是整个旅游网站中主要的数据库表总E-R实体关系图。

图3-2 旅游网站总E-R关系图

3.2.2 数据库逻辑结构设计

通过上一小节中旅游网站中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。

表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

用户编号:

表article (文章:用于内容管理系统的文章)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

article_id

mediumint

8

0

N

Y

文章id:[0,8388607]

2

title

varchar

125

0

N

Y

标题:[0,125]用于文章和html的title标签中

3

type

varchar

64

0

N

N

0

文章分类:[0,1000]用来搜索指定类型的文章

4

hits

int

10

0

N

N

0

点击数:[0,1000000000]访问这篇文章的人次

5

praise_len

int

10

0

N

N

0

点赞数

6

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

8

source

varchar

255

0

Y

N

来源:[0,255]文章的出处

9

url

varchar

255

0

Y

N

来源地址:[0,255]用于跳转到发布该文章的网站

10

tag

varchar

255

0

Y

N

标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开

11

content

longtext

2147483647

0

Y

N

正文:文章的主体内容

12

img

varchar

255

0

Y

N

封面图

13

description

text

65535

0

Y

N

文章描述

表article_type (文章分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

smallint

5

0

N

Y

分类ID:[0,10000]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]决定分类显示的先后顺序

3

name

varchar

16

0

N

N

分类名称:[2,16]

4

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

5

description

varchar

255

0

Y

N

描述:[0,255]描述该分类的作用

6

icon

text

65535

0

Y

N

分类图标:

7

url

varchar

255

0

Y

N

外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表attraction_information (景点信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

attraction_information_id

int

10

0

N

Y

景点信息ID

2

attraction_name

text

65535

0

Y

N

景点名称

3

tourist_attraction_star_rating

text

65535

0

Y

N

景点星级

4

scenic_spot_pictures

varchar

255

0

Y

N

景点图片

5

business_hours

varchar

64

0

Y

N

营业时间

6

scenic_spot_rating

text

65535

0

Y

N

景点评分

7

attraction_prices

text

65535

0

Y

N

景点价格

8

selling_quantity

text

65535

0

Y

N

卖出数量

9

attraction_address

text

65535

0

Y

N

景点地址

10

introduction_to_scenic_spots

text

65535

0

Y

N

景点介绍

11

gaming_guide

longtext

2147483647

0

Y

N

游玩攻略

12

hits

int

10

0

N

N

0

点击数

13

praise_len

int

10

0

N

N

0

点赞数

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表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

更新时间:

表brigade_information (旅团信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

brigade_information_id

int

10

0

N

Y

旅团信息ID

2

brigade_name

varchar

64

0

Y

N

旅团名称

3

tour_group_pictures

varchar

255

0

Y

N

旅团图片

4

type_of_brigade

varchar

64

0

Y

N

旅团类型

5

number_of_tour_groups

int

10

0

Y

N

0

旅团人数

6

introduction_to_the_brigade

text

65535

0

Y

N

旅团简介

7

hits

int

10

0

N

N

0

点击数

8

praise_len

int

10

0

N

N

0

点赞数

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表cancellation_of_tourist_attractions (景点取消)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

cancellation_of_tourist_attractions_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

attraction_name

varchar

64

0

Y

N

景点名称

5

tourist_attraction_star_rating

varchar

64

0

Y

N

景点星级

6

scenic_spot_rating

varchar

64

0

Y

N

景点评分

7

attraction_prices

varchar

64

0

Y

N

景点价格

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

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:

表flight_booking (机票预订)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

flight_booking_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

ticket_name

varchar

64

0

Y

N

机票名称

5

air_ticket_prices

varchar

64

0

Y

N

机票价格

6

ticket_date

varchar

64

0

Y

N

机票日期

7

pay_state

varchar

16

0

N

N

未支付

支付状态

8

pay_type

varchar

16

0

Y

N

支付类型: 微信、支付宝、网银

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表flight_cancellation (机票取消)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

flight_cancellation_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

ticket_name

varchar

64

0

Y

N

机票名称

5

air_ticket_prices

varchar

64

0

Y

N

机票价格

6

ticket_date

varchar

64

0

Y

N

机票日期

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表flight_information (航班信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

flight_information_id

int

10

0

N

Y

航班信息ID

2

ticket_name

varchar

64

0

Y

N

机票名称

3

aircraft_cover

varchar

255

0

Y

N

飞机封面

4

air_ticket_prices

int

10

0

Y

N

0

机票价格

5

ticket_date

date

10

0

Y

N

机票日期

6

takeoff_location

text

65535

0

Y

N

起飞地点

7

landing_location

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

更新时间

表food_recommendations (美食推荐)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

food_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

food_recommendations

varchar

255

0

Y

N

美食推荐

5

business_hours

varchar

64

0

Y

N

营业时间

6

per_capita_consumption

int

10

0

Y

N

0

人均消费

7

hotel_address

text

65535

0

Y

N

饭店地址

8

hotel_introduction

text

65535

0

Y

N

饭店简介

9

hits

int

10

0

N

N

0

点击数

10

praise_len

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

更新时间

表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_cancellation (酒店取消)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hotel_cancellation_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

hotel_name

varchar

64

0

Y

N

酒店名称

5

hotel_prices

varchar

64

0

Y

N

酒店价格

6

booking_time

datetime

19

0

Y

N

预订时间

7

information_remarks

text

65535

0

Y

N

信息备注

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表hotel_information (酒店信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hotel_information_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_prices

int

10

0

Y

N

0

酒店价格

5

hotel_phone_number

varchar

64

0

Y

N

酒店电话

6

hotel_pictures

varchar

255

0

Y

N

酒店图片

7

hotel_details

text

65535

0

Y

N

酒店详情

8

hotel_address

text

65535

0

Y

N

酒店地址

9

hits

int

10

0

N

N

0

点击数

10

praise_len

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_reservation (酒店预订)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hotel_reservation_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

hotel_name

varchar

64

0

Y

N

酒店名称

5

hotel_prices

varchar

64

0

Y

N

酒店价格

6

booking_time

datetime

19

0

Y

N

预订时间

7

information_remarks

text

65535

0

Y

N

信息备注

8

pay_state

varchar

16

0

N

N

未支付

支付状态

9

pay_type

varchar

16

0

Y

N

支付类型: 微信、支付宝、网银

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

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

更新时间

表message (留言板)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

message_id

int

10

0

N

Y

留言板ID:

2

user_id

int

10

0

N

N

0

用户ID:

3

title

varchar

64

0

Y

N

标题:

4

content

longtext

2147483647

0

N

N

内容:

5

nickname

varchar

32

0

N

N

昵称:

6

avatar

varchar

255

0

Y

N

头像:

7

email

varchar

125

0

Y

N

留言者邮箱

8

phone

varchar

11

0

Y

N

留言者手机号码

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

11

reply

longtext

2147483647

0

Y

N

回复

12

reply_state

tinyint

4

0

Y

N

0

回复状态

表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已取消

表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_phone_number

varchar

16

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_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

更新时间:

表ticket_booking (车票预订)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

ticket_booking_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

train_number

varchar

64

0

Y

N

列车编号

5

ticket_price

varchar

64

0

Y

N

车票价格

6

insurance_information

varchar

64

0

Y

N

保险信息

7

pay_state

varchar

16

0

N

N

未支付

支付状态

8

pay_type

varchar

16

0

Y

N

支付类型: 微信、支付宝、网银

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表ticket_cancellation (车票取消)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

ticket_cancellation_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

train_number

varchar

64

0

Y

N

列车编号

5

ticket_price

varchar

64

0

Y

N

车票价格

6

insurance_information

varchar

64

0

Y

N

保险信息

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表ticket_information (车票信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

ticket_information_id

int

10

0

N

Y

车票信息ID

2

train_number

varchar

64

0

N

N

列车编号

3

train_pictures

varchar

255

0

Y

N

列车图片

4

ticket_price

int

10

0

Y

N

0

车票价格

5

insurance_information

varchar

64

0

Y

N

保险信息

6

number_of_seats

int

10

0

Y

N

0

座位数量

7

departure_time

datetime

19

0

Y

N

出发时间

8

arrival_time

datetime

19

0

Y

N

到达时间

9

departure_location

varchar

64

0

Y

N

出发地点

10

destination

varchar

64

0

Y

N

到达地点

11

information_remarks

text

65535

0

Y

N

信息备注

12

hits

int

10

0

N

N

0

点击数

13

praise_len

int

10

0

N

N

0

点赞数

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表tourist_attraction_reservation (景点预订)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

tourist_attraction_reservation_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

attraction_name

varchar

64

0

Y

N

景点名称

5

tourist_attraction_star_rating

varchar

64

0

Y

N

景点星级

6

scenic_spot_rating

varchar

64

0

Y

N

景点评分

7

attraction_prices

varchar

64

0

Y

N

景点价格

8

pay_state

varchar

16

0

N

N

未支付

支付状态

9

pay_type

varchar

16

0

Y

N

支付类型: 微信、支付宝、网银

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表type_of_brigade (旅团类型)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_of_brigade_id

int

10

0

N

Y

旅团类型ID

2

type_of_brigade

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

email

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

创建时间:

15

vip_level

varchar

255

0

Y

N

会员等级

16

vip_discount

double

11

2

Y

N

0.00

会员折扣

表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

更新时间:

3.3本章小结

整个旅游网站的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。

4 旅游网站详细设计与实现

旅游网站的详细设计与实现主要是根据前面的系统的需求分析和系统的总体设计来设计页面并实现业务逻辑。

4.1普通用户功能模块

4.1.1 注册首页界面

在旅游网站的首页界面上采用了上下的方式来布局界面,上面是导航栏,下面是通知公告,其主界面展示如下图所示。

图4-1 注册首页界面图

4.1.2 用户注册界面

不是旅游网站中正式用户的是可以在线进行注册的,当填写上自己的账号+密码+呢称+用户姓名+性别+邮箱“注册”按钮后将会先验证输入的有没有空数据,再次验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。用户注册界面展示如下图所示。

图4-2 注册用户注册界面图

注册代码如下:

    def Register(self, ctx):

        print("===================注册=====================")

        userService = service_select("user")

        body = ctx.body

        if "username" not in body and body["username"] == '':

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "用户名不能为空",

                }

            }, ensure_ascii=False))

        if "user_group" not in body and body["user_group"] == '':

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "用户组不能为空",

                }

            }, ensure_ascii=False))

        if "password" not in body and body["password"] == '':

            return ctx.response(json.dumps({

                "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 ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "用户名已存在",

                }

            }, ensure_ascii=False))

        ret = {

            "error": {

                "code": 70000,

                "message": "注册失败",

            }

        }

        bl = userService.Add(post_param)

        if bl:

            ret = {

                "result": {

                    "bl": True,

                    "message": "注册成功"

                }

            }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

4.1.3 注册登录界面

旅游网站中的注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到旅游网站的首页中;否则将会提示相应错误信息,用户登录界面如下图所示。

图4-3注册用户登录界面图

登录代码如下:

 def Login(self, ctx):

        print("===================登录=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "账户不存在",

            }

        }

        body = ctx.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 = timezone.now()

                    timestamp = int(time.mktime(timeout.timetuple())) * 1000

                    token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))

                    ctx.request.session[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 ctx.response(json.dumps(ret, ensure_ascii=False))

4.1.4我的账户界面

用户登录以后点击“我的账户”可以查看到自己的个人信息,对个人信息进行更新操作,可以对密码进行修改。密码修改界面如下图所示。

图4-4密码修改界面图

找回密码代码如下:

 def Forget_password(self, ctx):

        print("===================修改密码=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "用户信息不能没有"

            }

        }

        body = ctx.body

        if not body["code"]:

            return {

                "error": {

                    "code": 70000,

                    "message": "验证码不存在或者错误"

                }

            }

        obj = service_select("user").Get_obj(

            {"username": body["username"]}, {"like": False}

        )

        if not obj:

            return {

                "error": {

                    "code": 70000,

                    "message": "用户名不存在或者错误"

                }

            }

        password = md5hash(body["password"])

        if not password:

            return {

                "error": {

                    "code": 70000,

                    "message": "密码不存在或者错误"

                }

            }

        bl = service_select("user").Set({"user_id": obj["user_id"]}, {"password": password})

        if bl:

            ret = {"result": {"bl": True, "message": "修改成功"}}

        else:

            ret = {

                "error": {

                    "code": 70000,

                    "message": "修改失败",

                }

            }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

修改密码代码如下:

 def Change_password(self, ctx):

        print("===================修改密码=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "账号未登录",

            }

        }

        request = ctx.request

        headers = request.headers

        if ("x-auth-token" in headers) and headers["x-auth-token"]:

            token = headers["x-auth-token"]

            user_id = tokenGetUserId(token, request)

            userService = service_select("user")

            body = ctx.body

            password = md5hash(body["o_password"])

            obj = userService.Get_obj({"user_id": user_id, "password": password}, {"like": False})

            if obj:

                password = md5hash(body["password"])

                bl = userService.Set({"user_id": user_id}, {"password": password})

                if bl:

                    ret = {"result": {"bl": True, "message": "修改成功"}}

                else:

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "修改失败",

                        }

                    }

            else:

                ret = {

                    "error": {

                        "code": 70000,

                        "message": "密码错误",

                    }

                }

        else:

            ret = {

                "error": {

                    "code": 70000,

                    "message": "账户未登录",

                }

            }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

4.1.5 天气预报界面

点击旅游网站中导航栏上的“天气预报”后,可以查看各地的天气情况。界面如下图所示。

图4-5天气预报界面图

4.2管理员功能模块

4.2.1 系统用户管理界面

管理员点击“系统用户”这一菜单会显示注册用户、管理员这两个子菜单,管理员可以对这两个角色的信息进行增删改查操作;系统用户管理界面如下图所示。

4-6系统用户管理界面图

增删查改代码如下:

def Add(self, ctx):

body = ctx.body

unique = self.config.get("unique")

obj = None

if unique:

qy = {}

for i in range(len(unique)):

key = unique[i]

qy[key] = body.get(key)

obj = self.service.Get_obj(qy)

if not obj:

error = self.Add_before(ctx)

if error["code"]:

return {"error": error}

error = self.Events("add_before", ctx, None)

if error["code"]:

return {"error": error}

result = self.service.Add(body, self.config)

if self.service.error:

return {"error": self.service.error}

res = self.Add_after(ctx, result)

if res:

result = res

res = self.Events("add_after", ctx, result)

if res:

result = res

return {"result": result}

else:

return {"error": {"code": 10000, "message": "已存在"}}

def Del(self, ctx):

if len(ctx.query) == 0:

errorMsg = {"code": 30000, "message": "删除条件不能为空!"}

return errorMsg

result = self.service.Del(ctx.query, self.config)

if self.service.error:

return {"error": self.service.error}

return {"result": result}

def Set(self, ctx):

error = self.Set_before(ctx)

if error["code"]:

return {"error": error}

error = self.Events("set_before", ctx, None)

if error["code"]:

return {"error": error}

query = ctx.query

if 'page' in query.keys():

del ctx.query['page']

if 'size' in query.keys():

del ctx.query['size']

if 'orderby' in query.keys():

del ctx.query['orderby']

result = self.service.Set(ctx.query, ctx.body, self.config)

if self.service.error:

return {"error": self.service.error}

res = self.Set_after(ctx, result)

if res:

result = res

res = self.Events("set_after", ctx, result)

if res:

result = res

return {"result": result}

查多条数据:

def Get_list(self, ctx):

query = dict(ctx.query)

config_plus = {}

if "field" in query:

field = query.pop("field")

config_plus["field"] = field

if "page" in query:

config_plus["page"] = query.pop("page")

if "size" in query:

config_plus["size"] = query.pop("size")

if "orderby" in query:

config_plus["orderby"] = query.pop("orderby")

if "like" in query:

config_plus["like"] = query.pop("like")

if "groupby" in query:

config_plus["groupby"] = query.pop("groupby")

count = self.service.Count(query)

lst = []

if self.service.error:

return {"error": self.service.error}

elif count:

lst = self.service.Get_list(query,

obj_update(self.config, config_plus))

if self.service.error:

return {"error": self.service.error}

self.interact_list(ctx, lst)

return {"result": {"list": lst, "count": count}}

查一条数据:

def Get_obj(self, ctx):

query = dict(ctx.query)

config_plus = {}

if "field" in query:

field = query.pop("field")

config_plus["field"] = field

obj = self.service.Get_obj(query, obj_update(self.config, config_plus))

if self.service.error:

return {"error": self.service.error}

if obj:

self.interact_obj(ctx, obj)

return {"result": {"obj": obj}}

4.2.2 旅团类型管理界面

旅游网站中的管理人员是可以查看旅团类型的创建时间和更新时间等详情,还可以对旅团类型进行添加。旅团类型列表和旅团类型添加界面如下图所示。

图4-7旅团类型列表界面图

图4-8旅团类型添加界面图

4.2.3车票信息管理界面

旅游网站中的管理人员可以查看列车编号、列车图片、车票价格、保险信息、座位数量、出发时间、到达时间等详情,还可以进行查询、重置、删除等操作。管理员输入列车编号、车票价格、座位数量、到达时间、到达地点、保险信息、出发时间、出发地点、信息备注等信息点提交,可以对车票信息进行添加。车票信息列表和车票信息添加表界面如下图所示。

图4-9车票信息列表界面图

图4-10车票信息添加界面图

4.2.4景点预订管理界面

旅游网站中的管理人员可以查看用户姓名、景点名称、景点星级、景点证分、景点价格、支付状态、支付类型等详情,还可以进行查询、重置、删除等操作。景点预订管理界面如下图所示。

图4-11景点购票列表界面图

4.2.5系统管理界面

旅游网站中的管理员可以对系统前台展示的轮播图和敏感词进行增删改查,方便用户进行查看。轮播图和敏感词管理界面如下图所示。

图4-12轮播图界面图

图4-13敏感词管理界面图

5系统测试

5.1 系统测试用例

系统测试包括:用户登录功能测试、用户注册功能测试、景点信息展示功能测试、城市信息添加功能测试,如表5-1、5-2、5-3、5-4所示:

用户登录功能测试:

表5-1 用户登录功能测试表

测试名称

测试功能

操作

操作过程

预期结果

测试结果

用户登录模块测试

正确输入用户信息,用户成功登录

输入用户的信息

1.在密码框输入用户密码。2.点击登录

跳转到首页

正确

用户注册功能测试:

表5-2 用户登录功能测试表

测试名称

测试功能

操作

操作过程

预期结果

测试结果

用户注册模块测试

正确输入用户星系,完成用户注册

输入用户的基本信息

在注册页面填写用户相应的信息,然后点击“注册”按钮。

提示成功并跳转到登录界面

正确

用户注册模块测试

用户注册失败

用户两次输入密码不一致

用户在注册页面填写信息时不填写用户名然后点击“注册”按钮。

注册失败提示用户名不能为空

正确

景点信息界面测试:

表5-3 景点信息界面测试表

测试名称

测试功能

操作

操作过程

预期结果

测试结果

景点信息功能模块测试

景点信息正常的显示

浏览景点信息

在前台首页选择一个景点分类进入分类列表,然后选择一个景点

进入该景点的详细信息界面

正确

管理员添加车票信息测试:

表5-4 管理员添加车票信息测试表

测试名称

测试功能

操作

操作过程

预期结果

测试结果

管理员添加车票信息测试

添加车票信息成功的情况

输入新车票信息的基本信息

后台选择“车票信息”选项,然后填写车票信息基本信息点击“添加”按钮

车票信息添加成功

正确

管理员添加车票信息功能测试

添加车票信息失败的情况

输入车票信息基本信息不完全

后台选择“发布车票信息”选项,然后不完全填写车票信息,点击“添加”按钮。

对应信息框后出现提示请输入XXXX信息

正确

管理员添加车票信息测试

添加车票信息失败的情况

管理员在车票信息框输入非数字字符

后台选择“车票信息”选项输入非数字字符,点击“添加”按钮。

添加失败

正确

5.2 系统测试结果

通过编写旅游网站的测试用例,已经检测完毕用户登录模块、用户注册模块、景点分类展示模块、车票信息添加模块功能测试,通过这4大模块为旅游网站的后期推广运营提供了强力的技术支撑。

结论

本研究针对旅游网站需求建模,数据建模及过程建模分析设计并实现旅游网站系统的过程。给出系统应用架构并分析优劣势,通过功能分解图,系统组件图描述功能需求。设计建立了数据库,给出系统关键数据结构的定义。通过类关系图描述组件间的协作关系,给出各个类的定义方法。通过描述每一个类的字段,属性及方法实现响应式旅游资讯网站的前后端代码。最终给出系统集成整合方法,完成旅游网站地设计与实现。

在此项目的开发中,先要按照产品经理做出的产品模型铺出大体的页面,并在其中找好页面的逻辑关系,并且中途总结一些页面上的问题重新反馈给产品经理,当静态页面的搭建的大体已经完善时,就需要和负责后台开发的技术开发者联系,来接好前后台的数据接口,可以让后台的信息在前台显示出来,在这个项目实现中,不光明白了前端开发和产品经理的联系,也明白了后台在整个系统中起到了什么作用,因为前后台的连接,用户可以对系统进行操作,可以在输入自己的相关信息后,通过后台加工,完成对数据库的查找、修改、添加,而理解了这些关系与实现的方法后。再去完善整个系统的功能就更加清晰与简单了。此次的项目它涉及了前台与后台系统的搭建,在学校所学的知识基础上,此次的项目,让我对于一个系统的前端开发,以及后台的作用都有了一个更深切的认知。

参考文献

[1]陈太沁.基于Python的视频数据爬虫系统设计与实现[J].广播电视网络,2024,31(01):110-112.DOI:10.16045/j.cnki.catvtec.2024.01.012.

[2]孙跃龙,鞠立华.基于ArcGIS Pro平台的Python编程在勘探测量中的应用[J].科技创新与应用,2024,14(05):168-171.DOI:10.19981/j.CN23-1581/G3.2024.05.041.

[3]宋盼盼,周猛,肖莹.基于python语言的水体营养状态评价系统的设计[J].水利技术监督,2024,(01):45-49.

[4]张朋,贾栋梁,咸庆军等.Python在曲线平移可视化中的应用研究[J].现代信息科技,2024,8(02):182-185+190.DOI:10.19850/j.cnki.2096-4706.2024.02.039.

[5]徐志英.Python程序设计课程思政教学实践探索[J].船舶职业教育,2024,12(01):44-46.DOI:10.16850/j.cnki.21-1590/g4.2024.01.014.

[6]周渝森,胡川,范小猛等.测绘数据处理辅助系统设计及Python实现[J].测绘与空间地理信息,2024,47(01):123-125.

[7]张锦楠,李友山,杨剑锋等.基于Python分析中药治疗糖尿病足溃疡的用药规律[J/OL].中医药信息,1-7[2024-02-05].http://kns.cnki.net/kcms/detail/23.1194.R.20240122.0946.032.html.

[8]廖俊国,梁伟,韩雪等.学以致用的项目驱动式教学研究——以财务管理专业Python语言程序设计课程为例[J].高教学刊,2024,10(04):58-61+66.DOI:10.19980/j.CN23-1593/G4.2024.04.015.

[9]Abdelkader B ,Maximilien C ,Julien H , et al.pyComBat, a Python tool for batch effects correction in high-throughput molecular data using empirical Bayes methods.[J].BMC bioinformatics,2023,24(1):459-459.

[10]Bladimir T ,Domokos E .Automated bibliometric data generation in Python from a bibliographic database[J].Software Impacts,2024,19

[11]T A B ,G M J L ,T L C .LPATH: A Semiautomated Python Tool for Clustering Molecular Pathways.[J].Journal of chemical information and modeling,2023,

[12]Gaurav C ,Hicham J ,Laurent G , et al.Synconn_build: A python based synthetic dataset generator for testing and validating control-oriented neural networks for building dynamics prediction[J].MethodsX,2023,11102464-102464.

[13]Fernandes P ,Ferrer À ,Gonçalves P , et al.Stress-Constrained Topology Optimization for Commercial Software: A Python Implementation for ABAQUS ®[J].Applied Sciences,2023,13(23):

[14]李建森,董宝兰.旅游服务网站的设计与实现[J].电子技术,2023,52(09):54-55.

[15]于艳春.中外旅游网站城市介绍语篇的话语策略对比分析[J].齐齐哈尔大学学报(哲学社会科学版),2022,(12):126-129.DOI:10.13971/j.cnki.cn23-1435/c.2022.12.041.

[16]李轩宇,赵颖,肖忠良等.基于Python爬虫的旅游网站数据分析与可视化设计分析[J].电脑知识与技术,2022,18(33):58-60+70.DOI:10.14004/j.cnki.ckt.2022.2093.

[17]千文.基于Python的旅游网站数据爬虫分析[J].电脑编程技巧与维护,2022,(09):85-87+118.DOI:10.16184/j.cnki.comprg.2022.09.026.

[18]赵蔷.基于Python爬虫的旅游网站数据分析与可视化[J].电子设计工程,2022,30(16):152-155.DOI:10.14022/j.issn1674-6236.2022.16.033.

[19]姚依萍.文化“走出去”战略背景下河南省旅游网站英译探究[J].文化创新比较研究,2022,6(22):54-57.

[20]蒋莉.东阳古镇旅游网站设计与实现[J].信息与电脑(理论版),2022,34(12):113-116.

致  谢

旅游网站的完成,标志着我即将结束在校园生活并跨入社会。在即将毕业的此刻,我想对所有帮助过我的师长、同学和亲人表达我发自内心的谢意。

感谢学校这个大家庭,在这里我们总能找到自己的归属。学校始终在向我们传达着温暖和关怀,接纳和包容我们的缺点。学校给我最大的感受便是要将自己的专业知识与实践相结合,而我也正在努力的成为学校所要求的应用型人才。

感谢各位老师,学院使我从懵懂一步步走向成熟。在这里每个老师都拥有着最大的善意和耐心,来教育我们这群大孩子。学院举办的各类活动是给予我锻炼自己的机会,正是这些机会让我成为了更好的自己,提升了自己各方面的能力。

其次我要感谢我的论文指导老师。我之所以被老师所吸引,是因为老师对于学生友爱和对于工作认真的态度。从选题到开题到论文的撰写,老师一直都在悉心的指导,在指出存在的问题后会与我们探讨解决方法。

最后,我要对即将参与本篇论文审阅和答辩的各位老师表示感谢。

点赞+收藏+关注 →私信免费领取本源代码、数据

标签:10,varchar,int,33190,19,源码,毕业设计,time,id
From: https://blog.csdn.net/2401_88653928/article/details/144557603

相关文章