django旅游网站-计算机毕业设计源码94553

摘 要

在当今信息爆炸的时代,旅游行业正经历着前所未有的变革。为满足人们日益增长的旅游需求,我们借助Django这一强大的Web框架,倾力打造了一款旅游网站。该网站致力于为用户提供全面、便捷、个性化的旅游服务,涵盖酒店信息、酒店预订、取消预约、评价信息等多个方面。通过Django的高效开发能力,我们实现了网站功能的丰富性与用户体验的优化,为用户带来前所未有的旅游体验。同时,我们也希望通过这个平台,推动旅游行业的数字化转型,为旅游业的发展注入新的活力。

本系统以实际运用为开发背景,通过系统管理员可以对旅游相关联的信息进行统一的管理,方便资料的保留。用户通过系统可以快速查询到景点的信息,实现景点的预订总的来说,本系统采用了Django框架进行开发,采用Python语言,使用了MySQL这一数据库让页面展现得更加的整齐漂亮。

关键词:旅游网站 ;MySQL数据库;Django框架;

Django tourism website

Abstract

In today's era of information explosion, the tourism industry is undergoing unprecedented changes. To meet the growing demand for tourism, we have leveraged the powerful web framework of Django to create a travel website. This website is committed to providing users with comprehensive, convenient, and personalized travel services, covering hotel information, hotel reservations, cancellations, evaluation information, and other aspects. Through Django's efficient development capabilities, we have achieved the richness of website functionality and optimization of user experience, bringing users an unprecedented travel experience. At the same time, we also hope to promote the digital transformation of the tourism industry through this platform, injecting new vitality into the development of the tourism industry.

This system is developed based on practical application, and through system administrators, it is possible to uniformly manage information related to tourism, facilitating the retention of information. Users can quickly query information about tourist attractions through the system, and achieve reservation of tourist attractions. Overall, this system adopts the Django framework for development, uses Python language, and uses MySQL database to make the page display more neat and beautiful.

Keywords:Tourism websites; MySQL database; Django framework;

目 录

第1章 绪论

1.1 研究背景与意义

1.2 研究开发现状分析

1.3 论文章节安排

第2章 开发工具及相关技术介绍

2.1 Python语言

2.2 MySQL数据库

2.3 Django框架

第3章 系统分析

3.1可行性分析

3.1 功能需求分析

3.2 非功能需求分析

3.3 安全性需求分析

3.3.1 系统的安全性

3.3.2 数据的安全性

3.4 数据流程分析

第4章 系统设计

4.1 系统架构设计

4.2 系统总体设计

4.3 系统功能设计

4.4 数据库设计

4.4.1 数据库概念设计

4.4.2 数据库表设计

第5章 系统实现

5.1 注册模块的实现

5.2 登录模块的实现

5.3 用户资料修改模块的实现

5.4 酒店信息列表模块的实现

5.5 评论模块的实现

5.6 用户管理模块的实现

5.7 酒店预约管理模块的实现

5.8 评价信息管理模块的实现

第6章 系统测试

6.1 测试目的

6.2 功能测试

6.3 性能测试

第7章 总结与展望

参考文献

致谢

  1. 绪论
    1. 研究背景与意义

随着互联网的迅猛发展,旅游行业正面临着前所未有的机遇与挑战。传统的旅游服务方式已难以满足现代人们多样化、个性化的需求,因此,开发一款高效、便捷、智能的旅游网站显得尤为重要。Django旅游网站正是在这样的背景下应运而生,它充分利用了Django框架的强大功能和灵活性,为用户提供了全方位的旅游服务。

研究Django旅游网站的意义不仅在于满足用户的实际需求,更在于推动旅游行业的数字化转型。通过整合旅游资源、优化服务流程、提升用户体验,Django旅游网站能够为用户带来更加便捷、高效的旅游体验,同时也为旅游企业提供了更加精准、有效的营销手段。此外,Django旅游网站的开发还具有重要的社会意义,它能够促进旅游业的可持续发展,推动旅游经济的繁荣,为社会的和谐稳定做出贡献。

    1. 研究开发现状分析

Django旅游网站的研究与开发现状呈现出蓬勃发展的态势。随着旅游行业的日益繁荣和互联网技术的不断进步,越来越多的开发者开始关注并投入到Django旅游网站的开发中。

目前,Django旅游网站在功能丰富性、用户体验和安全性等方面取得了显著进展。开发者们利用Django框架的高效性和扩展性,实现了网站功能的多样化,包括酒店信息、酒店预订、取消预约、用户评价等,满足了用户的不同需求。同时,注重用户体验的设计也成为开发过程中的重要考量,通过优化界面设计、提升响应速度等方式,为用户提供了更加流畅、便捷的浏览和交互体验。

在安全性方面,Django旅游网站也采取了多种措施来保障用户信息的安全和隐私。通过加密技术、身份验证等手段,有效地防止了数据泄露和非法访问等安全问题。

然而,Django旅游网站的研究与开发现状也面临着一些挑战。随着用户需求的不断变化和市场竞争的加剧,如何进一步提升网站的功能性、用户体验和安全性,成为开发者们需要思考和解决的问题。同时,随着新技术的不断涌现,如何将这些新技术有效地应用到Django旅游网站的开发中,也是未来研究的重要方向。

综上所述,Django旅游网站的研究与开发现状呈现出积极向上的趋势,但仍需不断克服挑战,持续优化和创新,以更好地满足用户需求并推动旅游行业的发展。

    1. 论文章节安排

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

第一章为引言,此章节对所设计和实现的系统的背景和状况以及意义进行详细的论述以及说明,同时进行了论文整体框架的结构的简要介绍。

第二章为开发工具及相关技术介绍,此章节对所设计和实现的系统的技术进行详细的论述以及说明。

第三章为系统分析,章节所做的主要的工作是对系统进行了技术、经济方面可行性的分析;对系统实行了总体功能的需求、用例分析。

第四章为系统的设计,主要是对系统的功能结构进行设计,并对系统数据库的概念结构以及物理结构的设计进行了分析。

第五章就是对系统的实现,根据系统功能的划分,分别的对系统所需要实现的前台客户功能和后台管理员功能进行了分析和说明。

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

第七章:总结与展望。

  1. 开发工具及相关技术介绍
    1. Python语言

早在上个世纪90年代,Python就由吉多·范罗苏姆进行创造,自诞生之日起,Python就一直深深的受到了程序开发者的广泛喜爱,它作为计算机主要的编程语言,一直到今。Python语言是真的是一种纯面向对象的计算机语言,在Python的世界中,所有的方法、数据类型、符号等都是以类的方式存在的,最顶层的就是Object,所有的类都是对object的继承。继承是Python中的核心思想,与C语言不同的是,子类只有一个父类,这样的好处就是操作更加的简便,让人更容易理解,在代码的书写上也会容易较多。Python另外一个特性就是多态性,调用父类接口的方法可以实现子类的实现,这样的好处就是很好的对实现方法进行了隐藏(封装),而且又能够把API进行公开,一举两得。接口思想很好的诠释了想象对象的思想,让面向对象编程渐渐转向面向接口编程。如今,随着编程思想的继续发展,Python也加入了一些函数式编程的思想,这样的好处就是让编程代码更加的简洁与方便。本管理系统采用Python编程语言进行后台的开发,一是鉴于标准化制定以后,Python语言常用于大型商业应用程序后台系统中,生态稳定;二是也希望通过本系统的开发提高自己编写Python代码的能力。

    1. MySQL数据库

数据库作为数据的存储地方是项目必须的,MySQL是一款非常优秀的关系型数据库,早期的MySQL并不是甲骨文公司的,后来才被他收购的。MySQL非常的小巧,安装包才几兆,sql语言的书写也比较容易学习,最重要的是MySQL同时也是一款开源的软件,所以不需要额外进行付费,本系统本身也是以学习总结所学知识为主,在系统的开发上最好尽量使用免费的软件,所以选用MySQL进行数据库管理。MySQL的容量也是非常大的,同时支持分库分表的操作,支持分布式,所以越来越多的中小企业选择该款数据库管理工具。另外值得一提的是,开源也有一个不好的地方,就是容易遭到破解和黑客攻击,所以MySQL在使用上还是更多的使用在中小项目中。

MySQL不会对平台有需求,所以任何一个程序员都可以通过 MySQL数据库来完成自己的系统开发,并且还可以节约大量的资源。因为它具有强大功能,所以可以用来储存这个系统的数据。

MySQL适合于各种应用,我们在运行数据库的时候,也很容易上手,我们只要编写一段代码,就可以完成相应的功能,并且可以在任何的平台上使用,而不需要再进行第二次的编译。MySQL数据库还具备在本地存储数据和允许结构化查询以方便管理的优势;MySQL是一个完全网络化的系统,它的数据库可以在互联网的任何位置被访问,它可以在任何地点与任何人分享;此外,MySQL也提供了存取控制的能力,可以阻止数据被非法使用,MySQL服务稳定,开发成本低,所以在开发过程中,MySQL数据库是最受欢迎的。

    1. Django框架

Django是一个由Python编写的具有完整架站能力的开源Web框架。使用Django,只要很少的代码,Python的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务。

Django本身基于MVC模型,即Model(模型)+View(视图)+ Controller(控制器)设计模式,因此天然具有MVC的出色基因:开发快捷、部署方便、可重用性高、维护成本低等。Python加Django是快速开发、设计、部署网站的最佳组合。

  1. 系统分析

3.1可行性分析

系统的开发环境和配置都是可以自行安装的,系统使用django开发工具,使用比较成熟的Mysql数据库进行对系统用户和管理员之间相关的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得系统运行更具有稳定性和安全性,从而完成实现系统的开发。

(1)硬件可行性分析

旅游网站对于所使用的计算机没有什么硬性的要求,计算机只要可以正常的使用进行代码的编写及页面设计就可行,主要是对于服务器有些要求,对于平台搭建完成要上传的服务器是有一定的要求的,服务器必须选择安全性比较高的,然后就是在打开系统必须顺畅,不能停顿太长时间;性价比高;安全性高。

(2)软件可行性分析

开发整个系统使用的是云计算,流量的可扩展性和基于流量的智能调整云计算的优点就是流量的可扩展性和基于流量的智能调整,保障系统的安全及数据信息的及时备份。

因此,我们从两个方面进行了可行性研究,可以看出系统的开发没有问题。

    1. 功能需求分析

旅游网站 的功能主要分为前台和后台两部分。

在前台,用户可以根据自己的需求进行注册和登录,然后浏览酒店信息。他们可以根据不同的条件和爱好进行酒店查询,并查看其他用户对选中酒店的评论和评价。用户还可以对他们喜欢的酒店进行收藏,以便日后参考和分享给其他用户。

在后台,系统管理员扮演着不同的角色,分为管理员和普通用户。管理员主要负责对整个系统的管理和维护。他们可以管理用户信息,包括添加、删除和修改用户账户信息。管理员还可以管理房间类型管理、酒店信息管理、酒店预订管理、取消预约管理、评价信息管理、系统用户、交流管理等相关信息,以保证系统数据的准确性和完整性。此外,管理员还可以对用户的评价和评论进行审核和管理,确保内容的真实性和合法性。同时,管理员还可以对酒店信息进行管理和维护,包括添加新的酒店信息,更新现有景点的相关内容,用户用例图如下所示。

图3-1 用户用例图

管理员用例图如下所示。

图3-1 管理员用例图

    1. 非功能需求分析

在旅游网站 的设计和开发中,除了功能需求外,还需要考虑到系统的非功能性需求。这些非功能需求包括系统的性能、可扩展性、安全性、可靠性、用户友好性、数据保护以及兼容性等方面。系统应具备良好的性能,能够快速响应用户请求并提供及时的推荐结果;同时,系统应具备良好的可扩展性,能够根据需求进行水平或垂直扩展。安全性是一个重要的考虑因素,系统应采取合适的措施保护用户的个人信息。可靠性是关键,系统应具备高度可靠性,能够在面对异常情况下保持正常运行,并具备容错和恢复能力。用户友好性是必要的,系统应提供良好的用户界面和交互体验,操作流程应简洁明了。数据保护是必须的,系统应确保用户数据的保密性和完整性。最后,系统应具备良好的兼容性,能够与不同浏览器、操作系统和设备进行适配。通过满足这些非功能需求,旅游网站 能够提供稳定、可靠和便捷的服务。

    1. 安全性需求分析
      1. 系统的安全性

安全性对每一个系统来说都是非常重要的。安全性很好的系统可以保护企业的信息和用户的信息不被窃取。提高系统的安全性不仅是对用户的负责,更是对企业的负责。尤其针对于旅游网站 来说,必须要有很好的安全性来保障整个系统。

系统具有对使用者有权限控制,针对角色的不通限制使用者的权限,以此来确保系统的安全性。

      1. 数据的安全性

数据库中的数据是从外界输入的,当数据的输入时,由于种种原因,输入的数据会无效,或者是脏数据。因此,怎样保证输入的数据符合规定,成为了数据库系统,尤其是多用户的关系数据库系统首要关注的问题。

因此,在写入数据库时,要保证数据完整性、正确性和一致性。

    1. 数据流程分析

对系统的数据流进行分析,系统的使用者分为二类,一般用户,管理员。系统主要对界面信息传送,登录信息的验证,注册信息的接收,用户各种操作的响应做处理。

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

图3-2 顶层数据流图

要判断用户是是什么身份,是根据登录的数据来判断后,跳转到对应的功能界面。在系统的内部用户就可以对数据进行操作,数据库中心就可以接收到系统传输的有效数据流来对数据sql语句进行对应操作。

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

 图3-3 底层数据流图

系统可以分为前台和后台两部分,每一种操作后系统都返回操作结果。前台和后台的数据连接主要通过数据库,既分别对数据库做不同的操作。

  1. 系统设计
    1. 系统架构设计

本旅游网站 的架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。

系统架构如下图所示。

图4-1 系统架构

    1. 系统总体设计

旅游网站 总体分为前台用户模块和后台管理员模块。

两个模块表现上是分别独立存在,但是访问的数据库是一样的。每一个模块的功能都是根据先前完成的需求分析,并查阅相关资料后整理制作的。

综上所述,系统功能结构图如下图所示。

图4-2 系统功能结构图

    1. 系统功能设计

(1)注册登录:在系统的右上角有登录+注册按钮,如果用户想要登录到系统当中,可以点击“登录”按钮,然后填写号用户名+密码,点击“登录”按钮,系统会对你的用户名密码进行核对,正确的话就会登录成功了,如果没有账号的话,可以点击右上角的“注册”按钮,然后根据提示输入好用户信息,就可以得到账号和密码了;

(2)问答社区:用户可以查看后台管理员发布的问答社区信息,在查询到自己想要了解的问答社区的时候,可以进入查看详细的介绍。

(3)酒店信息:用户可以查看酒店信息支持通过搜索关键词的方式对酒店信息进行查询,在查询到自己想要了解的酒店信息的时候,可以进入查看详细的介绍。在酒店信息详情这个界面,同时支持用户对喜欢的酒店信息进行预订、收藏、点赞、评论的功能。

(6)我的账户:在前台点击“我的”下面的“我的账户”可以对个人资料+密码修改信息进行管控。

(7)个人中心:在用户台点击“个人中心”可以对个个人首页、酒店预订、取消预约、问答列表、收藏等信息进行管控。

管理员:

(1)登录:管理员在后台可以通过账号和密码进行登录,管理员的账号和密码是在数据库中直接设定的,如果忘记密码可以点击“忘记密码”进行密码找回;

(2)系统用户:管理员可以对评价信息管理系统中的管理员,以及前台注册的游客用户进行增删改查。

(3)评价信息:管理员点击“评价信息”菜单可以对评价信息进行增删改查。

(4)房间类型:管理员点击“房间类型”菜单可以对房间类型进行增删改查。

(5)酒店预约:管理员点击“酒店预约”菜单可以对酒店预约进行增删改查。

(6)取消预约:管理员点击“取消预约”菜单可以对取消预约进行增删改查。

(7)酒店信息:管理员点击“酒店信息”菜单可以对酒店信息进行增删改查。

    1. 数据库设计
      1. 数据库概念设计

根据前面的数据流程图,结合系统的功能模块设计,设计出符合系统的各信息实体。

系统ER图如下图所示。

图4-3 系统ER图

      1. 数据库表设计

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

表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

更新时间:

表cancel_reservation (取消预约)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

cancel_reservation_id

int

10

0

N

Y

取消预约ID

2

user_account

int

10

0

Y

N

0

用户账号

3

user_name

varchar

64

0

Y

N

用户姓名

4

user_phone_number

varchar

64

0

Y

N

用户电话

5

hotel_name

varchar

64

0

Y

N

酒店名称

6

room_type

varchar

64

0

Y

N

房间类型

7

room_unit_price

int

10

0

Y

N

0

房间单价

8

booking_time

datetime

19

0

Y

N

预订时间

9

booking_quantity

int

10

0

Y

N

0

预订数量

10

booking_amount

varchar

64

0

Y

N

预订金额

11

booking_number

varchar

64

0

Y

N

预订单号

12

cancel_time

datetime

19

0

Y

N

取消时间

13

reason_for_cancellation

text

65535

0

Y

N

取消原因

14

examine_state

varchar

16

0

N

N

未审核

审核状态

15

examine_reply

varchar

16

0

Y

N

审核回复

16

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

17

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:

表evaluation_information (评价信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

evaluation_information_id

int

10

0

N

Y

评价信息ID

2

user_account

int

10

0

Y

N

0

用户账号

3

user_name

varchar

64

0

Y

N

用户姓名

4

user_phone_number

varchar

64

0

Y

N

用户电话

5

hotel_name

varchar

64

0

Y

N

酒店名称

6

room_type

varchar

64

0

Y

N

房间类型

7

evaluation_time

date

10

0

Y

N

评价时间

8

evaluation_content

text

65535

0

Y

N

评价内容

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

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_information (酒店信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hotel_information_id

int

10

0

N

Y

酒店信息ID

2

hotel_name

varchar

64

0

Y

N

酒店名称

3

hotel_pictures

varchar

255

0

Y

N

酒店图片

4

hotel_star_rating

varchar

64

0

Y

N

酒店星级

5

room_type

varchar

64

0

Y

N

房间类型

6

room_unit_price

int

10

0

Y

N

0

房间单价

7

contact_phone_number

varchar

64

0

Y

N

联系电话

8

hotel_address

varchar

64

0

Y

N

酒店地址

9

hotel_details

text

65535

0

Y

N

酒店详情

10

hits

int

10

0

N

N

0

点击数

11

praise_len

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

更新时间

表hotel_reservation (酒店预订)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hotel_reservation_id

int

10

0

N

Y

酒店预订ID

2

user_account

int

10

0

Y

N

0

用户账号

3

user_name

varchar

64

0

Y

N

用户姓名

4

user_phone_number

varchar

64

0

Y

N

用户电话

5

hotel_name

varchar

64

0

Y

N

酒店名称

6

room_type

varchar

64

0

Y

N

房间类型

7

room_unit_price

int

10

0

Y

N

0

房间单价

8

booking_time

datetime

19

0

Y

N

预订时间

9

booking_quantity

int

10

0

Y

N

0

预订数量

10

booking_amount

varchar

64

0

Y

N

预订金额

11

booking_number

varchar

64

0

Y

N

预订单号

12

pay_state

varchar

16

0

N

N

未支付

支付状态

13

pay_type

varchar

16

0

Y

N

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

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

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_phone_number

varchar

16

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

更新时间

表room_type (房间类型)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

room_type_id

int

10

0

N

Y

房间类型ID

2

room_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

更新时间

表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

更新时间:

  1. 系统实现
    1. 注册模块的实现

用户在填写数据的时候必须与注册页面上的验证相匹配否则会注册失败,注册页面的表单验证是通过pythonScript进行验证的,用户名的长度必须在6到18之间,邮箱必须带有@符号,密码和密码确认必须相同,你输入的密码,系统会根据你输入密码的强度给出指定的值,电话号码和身份证号码必须要求输入格式与生活相符合,当你前台验证通过的时候你点击注册,表单会将你输入的值通过name值传递给后台并保存到数据库中。

用户注册流程图如下图所示。

图5-1用户注册流程图

用户注册界面如下图所示。

图5-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))

    1. 登录模块的实现

主要由两部分组成,登录前的登录界面以及登录后的用户功能界面。登录界面,要求用户输入用户名和密码,当用户名和密码其中一个输入为空时,给出提示“用户名,密码不能为空”。获取用户名和密码后到数据库中查找,如果用户名存在,以及对应的密码正确,则登录成功,否则登录失败。登录失败后给出提示,并把焦点停在文本框中。登录成功后将该次会话的全局变量username设置为用户名。登录成功后进入会员的功能模块,主要有会员基本信息修改,已经发布酒店信息管理,发布信息,和退出功能。退出功能是清除全局变量username的值,并跳回到首页。

登录流程图如下图所示。

图5-3登录流程图

用户登录界面如下图所示。

图5-4用户登录界面

登录关键代码如下所示:

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

    1. 用户资料修改模块的实现

用户登录/注册成功之后可以修改自己的基本信息。修改页面的表单中每一个input的name值都要与实体类中的参数相匹配,在用户点击修改页面的时候,如果改后用户名与数据库里面重复了,页面会提示该用户名已经存在了,否则通过Id来查询用户,并将用户的信息修改为表单提交的数据。

    1. 酒店信息列表模块的实现

用户提交酒店信息列表后后台会自动生成酒店信息列表。从session中取出该用户信息,前台发起请求,将对应的用户信息、dingdanpId参数信息从前台传递酒店信息列表控制类里,匹配到create()方法,create()方法调用酒店信息列表逻辑层的createDingdan()方法获取数据,调用本类的getCartDingdanItem()方法得到酒店信息列表。

酒店信息列表提交界面如下所示。

图5-5酒店信息界面

    1. 评论模块的实现

用户可以发表自己的评论。将页面session中的用户账号userId和发表评论文字框内容和评分传入控制层,调用addPinglun方法,通过实现评论接口向数据库评论表插入,将结果返回Pinglun_list.python界面。

评论添加流程图如下图所示。

图5-6评论添加流程图

评论添加界面如下图所示。

图5-7评论添加界面

    1. 用户管理模块的实现

管理员对系统用户的管理,包括管理员用户管理,注册用户管理、登录密码
修改,在 yhzhgl.aspx.cs 实现管理员用户的管理,包括录入、删除、修改,修改密码通过 SESSION 获取用户名,然后输入新密码,提交到 mod.aspx.cs 中,使用 sql 命令更新密码添加用户后,用户也可以使用账号和密码登录系统。
   用户管理界面如下图所示。

图5-8用户管理界面

用户管理关键代码如下所示:

 WSGI_APPLICATION = "app.wsgi.application"

DATABASES = {

    "default": {

        "ENGINE": "django.db.backends.mysql",

        "NAME": "project93355",

        "USER": "root",

        "PASSWORD": "root",

        "HOST": "127.0.0.1",

        "PORT": "3306",

    }

}

    1. 酒店预约管理模块的实现

此页面的关键是编写酒店信息,包括用户账号、用户姓名、用户电话、房间单价、预订时间等。单击提交按钮以完成信息的添加。如果未写入完整的酒店预约信息,例如,如果未写入预约时间,系统将给出相应的错误提示,并且无法成功输入。数据以概念的形式以onsubmit =“return checkForm()”的形式写入以进行检查,checkForm()函数是一种用于写入数据的不同类型的校对方法,是不是为空也是经过form表单中的onsubmit=”return checkForm()来检查。

管理员点击左侧菜单“酒店预约管理”,页面跳转到酒店预约管理外观,调用后台酒店查询所有酒店预约信息。并将信息密封到数据集合List,绑定到请求对象,然后页面跳转到相应的python页面,显示出酒店预约信息,单击删除按钮完成酒店预约信息的删除。

酒店预约管理流程图如下图所示。

图5-9酒店信息管理流程图

酒店预约管理界面如下图所示。

图5-10酒店预约管理界面

    1. 评价信息管理模块的实现

根据需求,需要对评价信息进行添加、删除或修改详情信息。删除或修改评价信息时,系统根据评价信息的状态判定为可删除状态下,才会给出删除和修改链接,点击删除链接按钮时,请求到达后台,还会先查询评价信息状态再次做出判定能否删除。点击修改链接按钮时,会跳转到修改信息的页面,重新填写好数据后,数据提交到后台会对数据库中相应的记录做出修改。

添加评价信息时,会给出数据填写的页面,该页面根据填写好的评价信息编号同样会事先发送Ajax请求查询编号是否已存在,数据填写好之后提交到后台,会调用相关服务在数据库中插入记录。

评价信息管理流程图如下图所示。

图5-11评价信息管理流程图

评价信息管理页面设计效果如下图所示。

图5-12评价信息管理界面

  1. 系统测试
    1. 测试目的

对任何系统而言,测试都是必不可少的环节,测试可以发现系统存在的很多问题,所有的软件上线之前,都应该进行充足的测试之后才能保证上线后不会Bug频发,或者是功能不满足需求等问题的发生。下面分别从单元测试,功能测试和用例测试来对系统进行测试以保证系统的稳定性和可靠性。

    1. 功能测试

下表是酒店信息管理功能的测试用例,检测了酒店信息管理中对酒店信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。

前置条件;用户登录系统。

表6-1 酒店信息管理的测试用例

功能描述

用于酒店信息管理

测试目的

检测酒店信息管理时的各种操作的运行情况

测试数据以及操作

预期结果

实际结果

点击添加酒店信息,必填项合法输入,点击保存

提示添加成功

与预期结果一致

点击添加酒店信息,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击修改酒店信息,必填项修改为空,点击保存

提示必填项不能为空

与预期结果一致

点击修改酒店信息,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击删除酒店信息,选择酒店信息删除

提示删除成功

与预期结果一致

点击搜索酒店信息,输入存在的酒店信息名

查找出酒店信息

与预期结果一致

点击搜索酒店信息,输入不存在的酒店信息名

不显示景点

与预期结果一致

下表是评价信息管理功能的测试用例,检测了评价信息管理中对评价信息信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。

前置条件;用户登录系统。

表6-2 评价信息管理的测试用例

功能描述

用于评价信息管理

测试目的

检测评价信息管理时的各种操作的运行情况

测试数据以及操作

预期结果

实际结果

点击添加评价信息,必填项合法输入,点击保存

提示添加成功

与预期结果一致

点击添加评价信息,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击修改评价信息,必填项修改为空,点击保存

提示必填项不能为空

与预期结果一致

点击修改评价信息,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击删除评价信息,选择评价信息删除

提示删除成功

与预期结果一致

点击搜索评价信息,输入存在的评价信息名

查找出评价信息

与预期结果一致

点击搜索评价信息,输入不存在的评价信息名

不显示评价信息

与预期结果一致

密码修改搜索功能测试:

表6-3密码修改功能测试表

用例名称

密码修改测试用例

目的

测试管理员密码修改功能

前提

管理员用户正常登录情况下

测试流程

1)管理员密码修改并完成填写。

2)点击进行提交。

预期结果

使用新的密码可以登录

实际结果

实际结果与预期结果一致

    1. 性能测试

本次研究使用阿里云PTS(Performance Testing Service)性能测试服务对线上系统进行了压力测试。线上服务器环境配置为1核心CPU、1G内存、1Mbps公网带宽,并运行Centos7.0操作系统。

在压测过程中,我们采用了两台并发机器,每台机器同时模拟了20个用户的并发访问。我们对系统的主页、登录、数据查询和数据维护等模块进行了并发访问测试。结果显示,在有40个用户并发访问时,数据管理相关页面的响应时间甚至达到了7秒。通过查看服务器出网流量,我们发现已经达到了1381kb/s,可见服务器的带宽已经达到了峰值。如果系统能够提供5Mbps的带宽,系统的响应时间和每秒事务处理量(TPS)将会大幅提升。在整个测试过程中,CPU的使用率仅为8%,这进一步证明了带宽瓶颈对系统性能的严重影响。

  1. 总结与展望

Django旅游网站的开发工作已取得了令人瞩目的成果。借助Django框架的出色性能,我们成功打造了一个功能全面、交互流畅的旅游服务平台,为用户提供了丰富多样的旅游信息和便捷的预订体验。,还为酒店预订、用户评价,我们的网站都能为用户提供高效、个性化的服务。

然而,我们深知Django旅游网站的发展仍处在不断探索和前进的道路上。展望未来,我们将继续深化网站的功能开发,不断提升用户体验,以满足用户日益增长的旅游需求。我们将积极探索并应用新技术,提升网站的响应速度和稳定性,为用户提供更加流畅、便捷的浏览和交互体验。

同时,我们也将加强与旅游行业的合作与交流,共同推动旅游行业的数字化转型。我们将密切关注旅游市场的最新动态,及时调整和优化网站策略,以适应市场的快速发展。通过与其他旅游平台的合作,我们将共同探索更多的合作机会,为用户提供更加丰富、全面的旅游服务。

我们相信,通过不断的努力与创新,Django旅游网站将成为引领旅游行业发展的重要力量。我们将持续为用户提供优质、个性化的旅游服务,推动旅游行业的繁荣与发展,为社会创造更多的价值。展望未来,我们充满期待,相信Django旅游网站将迎来更加辉煌的明天。

参考文献

[1]Yeon J K ,Jeong M K . Identifying customer preferences through the eye-tracking in travel websites focusing on neuromarketing [J]. Journal of Asian Architecture and Building Engineering, 2024, 23 (2): 515-527.

[2]Luo M J ,Hu Z ,Law R . Exploring online consumer experiences and experiential emotions offered by travel websites that accept cryptocurrency payments [J]. International Journal of Hospitality Management, 2024, 119 103721-.

[3]蔡文乐,秦立静. 基于Python爬虫的招聘数据可视化分析 [J]. 物联网技术, 2024, 14 (01): 102-105. DOI:10.16667/j.issn.2095-1302.2024.01.028.

[4]魏晓玲,刘红英. 基于Python和Django框架的琴房管理系统设计与实现 [J]. 无线互联科技, 2023, 20 (22): 51-53.

[5]Hagelin S . Shake my hand: Racial fantasies, white saviors, and Django Unchained's haunted screen [J]. The Journal of Popular Culture, 2023, 56 (5-6): 781-796.

[6]黄娜琴. 清源山国家级风景名胜区旅游网络营销问题与优化策略 [J]. 旅游纵览, 2023, (21): 178-180+184.

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

[8]刘敏. 纽马克翻译理论指导下Touropia网站旅游指南英汉翻译实践报告[D]. 苏州大学, 2023. DOI:10.27351/d.cnki.gszhu.2023.001698.

[9]Trusted Travel Website Reveals the Most Dangerous Airports in the World [J]. M2 Presswire, 2023,

[10]王薇. 话语策略视角下的陕西省红色旅游网站国际化建设研究 [J]. 旅游纵览, 2023, (07): 31-33.

[11]Anthony M C ,Metin K . Utilitarian motivations to engage with travel websites: an interactive technology adoption model [J]. Journal of Services Marketing, 2023, 37 (1): 96-109.

[12]Xiya Y ,Xianhe L ,Changping W , et al. Design and Deployment of Django-based Housing Information Management System [J]. Journal of Physics: Conference Series, 2023, 2425 (1):

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

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

[15]张乐,孙怡芳. 基于Python的运城旅游数据可视化分析 [J]. 计算机时代, 2022, (10): 85-88. DOI:10.16644/j.cnki.cn33-1094/tp.2022.10.021.

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

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

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

[19]卢布(Rupo Asif Haque). 基于用户浏览行为的个性化旅游产品推荐研究[D]. 广东工业大学, 2022. DOI:10.27029/d.cnki.ggdgu.2022.001012.

[20]罗圆,李晓宇. 智慧旅游背景下游客消费行为研究 [J]. 旅游纵览, 2021, (19): 188-190.

致谢

在Django旅游网站的开发过程中,我们得到了众多人的支持与帮助,对此我们深感感激。首先,我们要感谢团队中每一位成员的辛勤付出和无私奉献,正是大家的共同努力,才使得这个项目得以顺利完成。同时,我们也要感谢领导和同事们的关心与指导,他们的宝贵意见和建议为我们的开发工作提供了重要的方向和支持。此外,我们还要感谢所有参与测试和使用我们网站的用户们,是你们的反馈和建议让我们能够不断优化和完善系统的功能和用户体验。最后,我们要感谢家人和朋友们的支持与理解,他们的鼓励和支持是我们不断前行的动力。在此,我们再次向所有给予我们帮助和支持的人表示衷心的感谢!

免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值