php+mysql红色旅游网站计算机毕业设计源码

摘  要

21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于旅游服务管理也是十分常见的。过去使用手工的管理方式对旅游服务进行管理,造成了管理繁琐、难以维护等问题,如今使用计算机对旅游服务的各项基本信息进行管理,比起手工管理来说既方便又简单,而且具有易于管理、搜索速度快、存储量大等多个优点。将其使用在旅游服务管理中,不仅能够提高旅游服务管理中管理员的工作效率,而且可以使旅游服务管理更加科学与规范。在信息化时代的不断冲击下,旅游服务管理与计算机技术的结合,将会是一条提高旅游服务管理水平的捷径。

经过本人的综合考虑,红色旅游网站的设计是基于PHP技术、Mysql数据库、Apache服务器的方式设计,以ZendStudio和Dreamweaver为开发工具,在ZendStudio集成环境下调试并允许,并运用Photoshop技术美化网页,辅之以CSS技术。

该系统实现了旅游服务管理内部的各种工作流程计算机管理化,其中包括管理员的首页、站点管理(轮播图、公告栏)用户管理(管理员、注册用户)内容管理(旅游资讯、资讯分类)更多管理(地区管理、旅游随记、旅游景点、旅游路线、知识指南)等功能。

关键词:PHP技术;Mysql数据库;Apache服务器

PHP red tourism websiteAbstract

The 21st century is an information age. Almost any industry can not do without computers. It is very common to use computers in tourism service management. In the past, the manual management method was used to manage the tourism services, which caused the problems of cumbersome management and difficult maintenance. Now, the use of computers to manage the basic information of tourism services is not only convenient and simple compared with manual management, but also has many advantages such as easy management, fast search speed and large storage capacity. Using it in tourism service management can not only improve the work efficiency of administrators in tourism service management, but also make tourism service management more scientific and standardized. Under the constant impact of the information age, the combination of tourism service management and computer technology will be a shortcut to improve the level of tourism service management.

After my comprehensive consideration, the design of the red tourism website is based on PHP technology, MySQL database and Apache server. Zendstudio and Dreamweaver are used as development tools, debugged and allowed in the zendstudio integrated environment, Photoshop technology is used to beautify the web page, and CSS technology is used.

The system realizes the computerized management of various work processes within the tourism service management, including the administrator's home page, site management (carousel map, bulletin board), user management (administrator, registered user), content management (tourism information, information classification) and more management (regional management, tourism notes, tourist attractions, tourism routes, knowledge guides) and other functions.

Key words: PHP technology; Mysql database; Apache server

目   录

第一章 概述

1.1研究背景与意义

1.2开发现状

1.3 论文结构

第二章 开发技术介绍

2.1 系统开发平台

2.2 平台开发相关技术

2.2.2  mysql数据库介绍

2.2.3  MySQL环境配置

2.2.4  B/S架构

第三章 系统分析

3.1 可行性分析

3.1.1 技术可行性

3.1.2 操作可行性

3.1.3 经济可行性

3.2性能需求分析

3.3功能分析

3.4 业务流程分析

3.4.1登录流程

3.4.2注册流程

3.4.3添加信息流程

3.4.4删除信息流程

第四章 系统设计

4.1功能结构

4.2 数据库设计

4.2.1 数据库E/R图

4.2.2 数据库表

第五章 系统功能实现

5.1数据库访问层的实现

5.2注册模块的实现

5.3登录模块的实现

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

5.5公告数据管理模块的实现

5.6管理员功能模块的实现

5.7用户功能模块

第六章 系统测试

6.1测试目的

6.2功能测试

6.3性能测试

第七章 总结与心得体会

7.1 总结

7.2 心得体会

致  谢

参考文献

第一章 概述

1.1研究背景与意义

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

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

1.2开发现状

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

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

1.3 论文结构

(1)绪论

系统的开发背景,意义和系统状况,详细讲述了系统的用处,对本章进行总结。

(2)系统开发技术的介绍

分别对php技术、MySQLB/S进行详细介绍

(3)系统分析

本章主要是对系统可行性、系统性能、还有系统功能需求进行分析。

(4)系统设计

对系统系统功能和数据库等进行详细讲解。

(5)系统的实现

主要对首页、站点管理(轮播图、公告栏)用户管理(管理员、普通用户)内容管理(论坛列表、论坛分类列表、新闻列表、新闻分类列表)更多管理(导游预约、导游信息、购买订单、特产商城、住宿信息、景点信息)的实现。

(6)系统的测试

在系统编码实现后,就需要对系统进行检测检测的方法有黑盒测试和白盒测试两种方式,本网站采用的是黑白盒测试方法对不同组的数据进行功能模块测试。

第二章 开发技术介绍

此次管理系统的关键技术和架构由B/S结构、php和mysql数据库,是本系统的关键开发技术,对系统的整体、数据库、功能模块、系统页面以及系统程序等设计进行了详细的研究与规划。

2.1 系统开发平台

在该红色旅游网站中,Element UI能给用户提供更多的方便,其特点一是方便学习,方便快捷;二是有非常大的信息储存量,主要功能是用在对数据库中查询和编程。其功能有比较灵活的数据应用,只需利用小部分代码就能实现非常强大的功能。因此,利用Element UI 技术进行系统代码管理是该系统数据库的首选。

2.2 平台开发相关技术

  2.2.1 MVVM模式介绍:

MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频视频3D动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。

  2.2.2  mysql数据库介绍 

利用MYSQL的数据独立性、安全性等特点,在软件项目中对数据进行操作,可以保证数据准确无误,并降低了程序员的应用开发时间。

MYSQL的特点是支持多线程,能方便的对系统资源充分利用,有效提高速度,还提供多种方式途径来对数据库进行连接;MYSQL的功能相对弱小、规模也小,但本系统要求不高,MYSQL完全可以满足本系统使用。

利用MYSQL建立系统数据库,不仅有利于数据处理业务的早期整合,还能利于发展后两种数据扩展的操作。

2.2.3  MySQL环境配置

本系统的数据使用的是MySQL,所以要将MySQL安装到指定目录,如果下载的是非安装的MySQL压缩包,直接解压到指定目录就可以了。然后点击C:\Program Files\MySQL\bin\winMySQLadmin.exe这个文件其中C:\Program Files\MySQL是MySQL安装目录。输入winMySQLadmin的初始用户、密码(注:这不是MySQL里的用户、密码)随便填不必在意,确定之后右下角任务的启动栏会出现一个红绿灯的图标,红灯亮代表服务停止,绿灯亮代表服务正常,左击这个图标->winnt->install the service 安装此服务,再左击这个图标->winnt->start the service 启动MySQL服务。

修改MySQL数据库的root密码。用cmd进入命令行模式输入如下命令:

cd C:\Program Files\MySQL\bin

MySQLadmin -u root -p password 123

回车出现Enter password: ,这是要输入原密码. 刚安装时密码为空,所以直接回车,此时MySQL 中账号 root 的密码被改为 123 安装完毕。

2.2.4  B/S架构 

B/S结构是目前使用最广泛的结构模式,它不但能让系统的开发更加的简单,易操作,而且还能够对其进行维护。在使用B/S结构时只要在计算机中安装好数据库和一些很常用的浏览器就行了。数据库和浏览器就会进行信息连接,能实现很多功能,此结构通过能上网的电脑是可以直接进行使用,而且在使用中极大的减少了工作的维护。基于B/S的软件数据库之间都是独立使用的,因此是非常可靠的。因为基于此结构可以清晰的看到系统正在处理的所有业务,还能够及时的让管理人员根据当时的实际情况做出相应的对策,这样能避免用户的损失。B/S结构的管理模式是集中式的,用户使用此系统在生成数据后就可以将这此数据存储到系统的数据库中,方便以后使用满足人们的所有的需求。

 

图2-1  三层结构图

2.2.5  Thinkphp框架介绍:

ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。 

ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。

ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySqlPgSQLSqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。

作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。

第三章 系统分析

3.1 可行性分析

一个完整的系统,可行性分析是必须要有的,因为他关系到系统生存问题,对开发的意义进行分析,能否通过本系统来补充线下校园寝室分配查询模式中的缺限,去解决其中的不足等,通过对本系统,不仅能使工作量不断地减少,还能使工作和管理的效率更加高。所以开发该系统能实现更大的意义和价值, 系统完成后,能否达到预期效果就要通过可行性分析,分析之后,决定此系统是否开发。该红色旅游网站的开发设计中,对技术、经济、操作方面进行了可行性分析; 

3.1.1 技术可行性

本系统开发选择PHP语言,它被研究的目的就是在于能够为网页创建等可以看到的信息。随着移动互联网技术的不断发展和创新,PHP俨然已成为下一代互联网的Web标准。所以设计选择使用MYSQL,数据库主要用来的建立和维护信息。对于前台开发要求应具备功能完善、易于操作等优点,后台数据库的要求则是能够建立和维护数据信息的统一性和完整性。

3.1.2 操作可行性

现在随着科技的飞速发展,计算机早已经进入了人们的日常生活中,人们的工作环境也不像以前有那么多的要求,需要员工一定要到公司办公,有的工作在家也可以完成。这使得人们的工作效益有了很大的提高。操作的多样性也变高了。因此,管理的计算机化,智能化是社会发展而带来的必然趋势,各种智能的软件层出不穷,不同的软件能完成用户不同的需求,这不仅提高了工作效率还能完成一些客户特定的一些需求。本系统不仅界面简洁明了还采用可视化界面,用户只要用鼠标和键盘就可以完成对相关信息的修改,删除,添加等操作。因为这个系统的操作十分简单,方便上手,对于第一次使用系统的人,只需要很少的时间就可以上手操作。由此可见,本系统在操作上是可行的。

3.1.3 经济可行性

PHP红色旅游网站,该系统软件开发仅需要一台普通的计算机便可完成实现开发,其成本很低。另外,作为毕业设计作品来讲,开发成本基本上可以忽略不计,且该系统软件的投入使用,可以实现更加快速高效的校园寝室分配查询,同时还能实现对人力资源和管理资源的有效节约,该红色旅游网站在经济上完全可行。

3.2性能需求分析

对系统的性能,从(功能、运行、界面、安全)等方面进行,下面我们逐一进行分析;

1. 系统的功能是否完整进行分析:系统的功能,能对应设计出原始代码和算法,以表格同文字的形式进行详细介绍个人信息保证功能完整;

2. 系统的运行是否通畅进行分析:系统的每个功能都有编写数据的关系和应对的代码,通过需求分析和可行性分析进行分析和显示系统的物理数据,保证其进行通畅;

3. 系统的界面设计进行分析:对系统中的软件进行处理与分析的方式是由不同代码来进行的;从而使界面容易操作。

4. 系统的安全性进行分析:这样才可以每个角色的不同对应的信息也就不同,在登录系统务必使用自己的账号,密码登录,账号与密码错误自然就登录失败了。登录成功可以对自己的信息进行操作,不能对别人的账号的信息进行查看等操作,这样自然保证系统的安全性。

3.3功能分析

考虑到实际生活中在校园寝室分配查询方面的需要以及对该系统认真的分析,将系统权限按管理员和学生这两类涉及用户划分。

(1)管理员功能需求

管理员登陆后,主要模块包括首页、站点管理(轮播图、公告栏)用户管理(管理员、注册用户)内容管理(旅游资讯、资讯分类)更多管理(地区管理、旅游随记、旅游景点、旅游路线、知识指南)管理等功能。管理员用例图如图3-1所示。

 

图3-1 管理员用例图

(2)用户功能需求

用户登陆后,主要模块包括首页、公告消息、旅游资讯、旅游随记、旅游景点、旅游线路、知识指南等功能。用户用例图如图3-2所示。

 

图3-2 用户用例图

3.4 业务流程分析

3.4.1登录流程

登录模块主要满足管理员以及用户的权限登录,用户登录流程图如图3-1所示。

 

图3-1 登录流程图

3.4.2注册流程

未有账号的用户可进入注册界面进行注册操作,用户注册流程图如图3-2所示。

 

图3-2 注册流程图

3.4.3添加信息流程

用户在添加信息时,信息编号自动生成,系统会对添加的信息进行验证,验证通过则添加至数据库,添加信息成功,反之添加失败。添加信息流程如图3-3所示。

 

图3-3 添加信息流程图

3.4.4删除信息流程

用户可选择要删除的信息进行信息删除操作,在删除信息时系统提示是否确定删除信息,是则删除信息成功,系统数据库将信息进行删除。删除信息流程图如图3-4所示。

 

图3-4删除信息流程图

第四章 系统设计

4.1功能结构

为了更好的去理清本系统整体思路,对该系统以结构图的形式表达出来,设计实现该红色旅游网站的功能结构图如下所示:

 

图4-1 系统总体结构图

4.2 数据库设计

 4.2.1 数据库E/R图

E-R图一般是由实体、实体的属性与联系三个要素组成的。在规划系统中所使用的数据库实体对象及实体E-R图,则需要通过对系统的需求分析、业务流程设计和系统功能结构来确定的。

总体ER图如下图所示。

 

图4-2总体ER图

4.2.2 数据库表

数据库表的设计,如下表:

knowledge_guide

字段名称

类型

长度

不是null

主键

字段说明

knowledge_guide_id

int

11

主键

知识指南ID

title

varchar

64

标题

photo

varchar

255

照片

publisher

varchar

64

发布人

knowledge_introduction

text

0

知识简介

details

longtext

0

详情

hits

int

11

点击数

praise_len

int

11

点赞数

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

notice

字段名称

类型

长度

不是null

主键

字段说明

notice_id

mediumint

8

主键

公告id

title

varchar

125

标题

content

longtext

0

正文

create_time

timestamp

0

创建时间

update_time

timestamp

0

更新时间

regional_management

字段名称

类型

长度

不是null

主键

字段说明

regional_management_id

int

11

主键

地区管理ID

region

varchar

64

地区

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

registered_user

字段名称

类型

长度

不是null

主键

字段说明

registered_user_id

int

11

主键

注册用户ID

user_number

varchar

64

用户编号

user_name

varchar

64

用户姓名

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

scenic_spot

字段名称

类型

长度

不是null

主键

字段说明

scenic_spot_id

int

11

主键

旅游景点ID

attraction_number

varchar

64

景点编号

name_of_scenic_spot

varchar

64

景点名称

photo

varchar

255

照片

region

varchar

64

地区

address

varchar

64

地址

ticket_price

int

11

票价

opening_hours

varchar

64

开放时间

scenic_spots

text

0

景点事迹

details

longtext

0

详情

hits

int

11

点击数

praise_len

int

11

点赞数

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

tourist_route

字段名称

类型

长度

不是null

主键

字段说明

tourist_route_id

int

11

主键

旅游路线ID

route_number

varchar

64

路线编号

route_name

varchar

64

路线名称

photo

varchar

255

照片

days

varchar

64

天数

amount_of_money

int

11

金额

route_characteristics

longtext

0

路线特色

hits

int

11

点击数

praise_len

int

11

点赞数

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

travel_notes

字段名称

类型

长度

不是null

主键

字段说明

travel_notes_id

int

11

主键

旅游随记ID

title

varchar

64

标题

picture

varchar

255

图片

region

varchar

64

地区

user_number

int

11

用户编号

travel_time

varchar

64

出行时间

days

varchar

64

天数

introduction_to_scenic_spots

text

0

景点攻略

traffic_strategy

text

0

交通攻略

details

longtext

0

详情

hits

int

11

点击数

praise_len

int

11

点赞数

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

第五章 系统功能实现

5.1数据库访问层的实现

从B/S架构的原理可知,红色旅游网站的各大模块的实现均需要对数据库的数据进行操作,具体包括查询数据、写入数据、更新数据和删除数据,因此,在开发各功能模块前,首先创建一个名称"conn.php"的文件,该文件主要用于连接数据,以后对程序需要操作数据时,可能使用语句"<?php reqiure_once('conn.php');?>"调用就可以了。

该文件的代码如下:

return [

    // 数据库类型

    'type'            => 'mysql',

    // 服务器地址

    'hostname'        => '127.0.0.1',

    // 数据库名

    'database'        => 'CS85950_20211206165410',

    // 用户名

    'username'        => 'root',

    // 密码

    'password'        => 'root',

    // 端口

    'hostport'        => '3306',

    // 连接dsn

    'dsn'             => '',

    // 数据库连接参数

    'params'          => [],

    // 数据库编码默认采用utf8

    'charset'         => 'utf8',

    // 数据库表前缀

    'prefix'          => '',

    // 数据库调试模式

    'debug'           => true,

    // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)

    'deploy'          => 0,

    // 数据库读写是否分离 主从式有效

    'rw_separate'     => false,

    // 读写分离后 主服务器数量

    'master_num'      => 1,

    // 指定从服务器序号

    'slave_no'        => '',

    // 自动读取主库数据

    'read_master'     => false,

    // 是否严格检查字段是否存在

    'fields_strict'   => true,

    // 数据集返回类型

    'resultset_type'  => 'array',

    // 自动写入时间戳字段

    'auto_timestamp'  => true,

    // 时间字段取出后的默认时间格式

    'datetime_format' => 'Y-m-d H:i:s',

    // 是否需要进行SQL性能分析

    'sql_explain'     => false,

    // Builder类

    'builder'         => '',

    // Query类

    'query'           => '\\think\\db\\Query',

    // 是否需要断线重连

    'break_reconnect' => false,

    // 断线标识字符串

    'break_match_str' => [],

];

5.2注册模块的实现

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

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

 

图5-1用户注册流程图

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

 

图5-2用户注册界面

用户注册的关键代码为:

public function register()

    {

        if (Request::isPost()) {

            $request = Request::param();

            $request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');

            $request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');

            $result = $this->validate($request, $this->validate);

            if (true !== $result) {

                // 验证失败 输出错误信息

                $data['error'] = 30000;

                $data['message'] = $result;

            } else {

                $request['password'] = md5($request['password']);

                $result = $this->model->register($request, $this->table);

                $data = $result;

            }

        } else {

            $data['error'] = 30000;

            $data['message'] = "field的值不能为空!";

        }

        return json_encode($data);

    }

public function register($request=[],$table_name = ''){

        $username = $request['username'];

        $bol = $this->where(['username'=>$username])->find();

        if (!$bol){

            $result = self::allowField(true)->save($request);

            if ($result) {

                return ['result' => 1];

            } else {

                return ['error' => ['code' => 3000, 'message' => '注册失败']];

            }

        }else{

            return ['error' => ['code' => 3000, 'message' => '注册失败,账号已存在']];

        }

    }

5.3登录模块的实现

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

登录流程图如下图所示。

 

 

图5-4登录流程图

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

 

图5-5用户登录界面

用户登录的关键代码如下:

public function login()

    {

        if (Request::isPost()) {

            $request = Request::param();

            $result = $this->validate($request, $this->validate);

            if (true !== $result) {

                // 验证失败 输出错误信息

                $data['error'] = 30000;

                $data['message'] = $result;

            } else {

                $request['password'] = md5($request['password']);

                $result = $this->model->login($request, $this->table);

                $data = $result;

            }

        } else {

            $data['error'] = 30000;

            $data['message'] = "field的值不能为空!";

        }

        return json_encode($data);

    }

public function login($request=[],$table_name = ''){

        $username = $request['username'];

        $password = $request['password'];

        $bol = $this->where(['username'=>$username])->find();

        if ($bol){

            $password = md5($password);

            if ($request['password']==$bol['password']) {

                //添加token信息

                $access_token['create_time'] = date('Y-m-d H:i:s');

                $access_token['update_time'] = date('Y-m-d H:i:s');

$access_token['info'] = json_encode($bol);

                // $access_token['info'] = $bol;

                $access_token['token'] = md5(date('Y-m-d H:i:s'));

                $bol_token = Db::name('AccessToken')->insert($access_token);

                if ($bol_token){

                    $data['obj'] = $bol;

                    $data['obj']['token'] = $access_token['token'];

                    return ['result' => $data];

                }else{

                    return ['error' => ['code' => 5000, 'message' => '登录失败,token生成失败']];

                }

            } else {

                return ['error' => ['code' => 5000, 'message' => '登录失败,密码不正确']];

            }

        }else{

            return ['error' => ['code' => 5000, 'message' => '登录失败,账号不存在']];

        }

    }

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

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

5.5公告数据管理模块的实现

如果公告数据的信息需要修改,管理员可以通过查询公告数据的基本信息来查询公告数据,查询公告数据是通过ajax技术来进行查询的,需要传递公告数据的标题、编号等参数然后在返回到该页面中,可以选中要修改或删除的那条信息,如果选中了超过一条数据,页面会挑一个窗口提醒只能选择一条数,如果没有选中数据会挑一个窗口题型必须选择一条数据。当选择确认修改的时候,后台会根据传过来的id到数据库查询,并将结果返回到修改页面中,可以在修改页面中修改刚刚选中的信息当点击确认的时候from表单会将修改的数据提交到后台并保存到数据库中,就是说如果提交的数据数据库中存在就修改,否则就保存。

公告数据展示界面如下图所示。

 

图5-6公告数据展示界面

公告数据管理界面如下图所示。

 

图5-7公告数据管理界面

公告数据发布的关键代码如下:

<?php

session_start();

include_once 'conn.php';

$ndate =date("Y-m-d");

$addnew=$_POST["addnew"];

$lb=$_GET["lb"];

if ($addnew=="1" )

{

$biaoti=$_POST["biaoti"];$leibie=$_POST["leibie"];$neirong=$_POST["neirong"];$shouyetupian=$_POST["shouyetupian"];$dianjilv=$_POST["dianjilv"];$tianjiaren=$_POST["tianjiaren"];

$sql="insert into shujujilu(biaoti,leibie,neirong,shouyetupian,dianjilv,tianjiaren) values('$biaoti','$leibie','$neirong','$shouyetupian','$dianjilv','$tianjiaren') ";

MySQL_query($sql);

echo "<script>javascript:alert('添加成功!');

location.href='shujujilu_add.php?lb=$lb';</script>";

}

?>

5.6管理员功能模块的实现

管理员登录进入红色旅游网站可以查看首页、站点管理(轮播图、公告栏)用户管理(管理员、注册用户)内容管理(旅游资讯、资讯分类)更多管理(地区管理、旅游随记、旅游景点、旅游路线、知识指南)等内容操作。如图5-8所示。

 

图5-8管理员功能界面图

旅游景点页面,在旅游景点页面可以对景点编号、景点名称、照片、票价、开放时间、景点事件、详情进行查看,修改和删除等操作,如图5-9所示。

 

图5-9旅游景点管理界面图

5.7用户功能模块  

用户登陆系统后,可以查看首页、公告消息、旅游资讯、旅游随记、旅游景点、旅游线路、知识指南等功能,还能对每个功能逐一进行相应操作,如图5-9所示。

 

图5-9用户功能界图面

景点信息管理,在景点信息页面查看景点名称、景点封面、景点星级、营业时间、景点地区、景点门票等内容操作,如图5-10所示。

 

 

图5-10景点信息界面图

第六章 系统测试

6.1测试目的

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

6.2功能测试

下表是系统登录功能测试用例,检测了用户名和密码的不同的输入情况,观察系统的响应情况。得出该功能达到了设计目标。

表6-1 系统登录功能测试用例

功能描述

用于系统登录

测试目的

检测登录时的合法性检查

测试数据以及操作

预期结果

实际结果

输入的用户名和密码带有非法字符

提示用户名或者密码错误

与预期结果一致

输入的用户名或者密码为空

提示用户名或者密码错误

与预期结果一致

输入的用户名和密码不存在

提示用户名或者密码错误

与预期结果一致

输入正确的用户名和密码

登录成功

与预期结果一致

下表是注册功能测试用例,检测了各种数据的输入情况,观察系统的响应情况。得出该功能达到了设计目标。

表6-2 注册功能测试用例

功能描述

用于用户注册

测试目的

检测用户注册时的合法性检查

测试数据以及操作

预期结果

实际结果

输入的手机号不合法

提示请输入正确的手机号码

与预期结果一致

输入的字段为空

提示必填项不能为空

与预期结果一致

输入的密码少于6位

提示密码必须为6-12位

与预期结果一致

输入的密码大于12位

提示密码必须为6-12位

与预期结果一致

6.3性能测试

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

压测过程中使用了2台并发机器,每台机器20个用户并发,对系统主页,登录,数据查询和数据维护等模块进行并发访问,测试结果是有40个用户并发时,数据管理相关页面的响应时间甚至达到了7s,通过查看服务器出网流量发现已经达到1381kb/s,可以看出服务器的带宽已经达到峰值,如果系统使用5Mbps的带宽,系统的响应时间和TPS将会大大增加。在整个测试的过程中,CPU的使用率占用仅8%,也提现出带宽瓶颈对系统的影响非常严重。

第七章 总结与心得体会

7.1 总结

通过完成该红色旅游网站和本论文的撰写让我更加明白了软件开发过程中软件工程思想的重要性。在项目的前期由于对需求分析做的不够谨慎和明确,导致了后面在设计甚至编码时候造成了许多不必要的麻烦。由此在今后的学习和工作开发之中必须要牢牢把握住软件工程的设计思想和方法,这样可以进一步保证项目开发的健壮性和准确性。

本网站所实现的是一个红色旅游网站,该系统严格按照需求分析制作相关模块,并利用所学知识尽力完成,但是本人由于学识浅薄,无法真正做到让该程序可以投入市场使用,仅仅简单实现部分功能,希望日后还能改善。

本系统具有以下优点:

该系统具有较高的适用性,选用B/S结构,可以在绝大部分个人平台上使用该系统。

系统将用户权限进行划分,管理员和学生能看到及操作的信息不一样,两者具备不同的操作权限。

该系统操作界面简单明了,大部分人都可以正常使用。

但也存在以下问题需要改进:

运行时窗口不能被刷新,可以改进。

系统过于简单,显示的信息有限。

不能添加多个管理员账号,如果可以则将利于发展红色旅游网站规模,便于学生寝室信息集中管理。

不能实时预约接待消息和红色旅游网站反馈建议,容易被忽视,不利于管理员服务客户。

7.2 心得体会

由于经验和能力不足,导致在开发、设计该系统的时候,出现了比较多的问题,例如需要用到的技术不熟悉、程序报错等,后来我积极地向同学询问自己出现的问题同时也会找一些相关的书进行学习,慢慢的一点点将自己遇到的问题逐渐解决。所以不管以后在任何时候合作都会让自己事半功倍。通过本系统的完整的开发,可以遇到自己平时写一些简单的小程序遇不到的问题,不仅仅局限与技术与业务方面的,同时也使得自己更加深入的了解软件过程的开发设计思想,对于即将踏入社会工作而言,这些心得都十分重要。在以后的研究生学习生涯也必须加深这方面的理解,将最好的开发技术和最新的科学原理运用到自己以后的开发工作和学习研究中去。

致  谢

过程永远比结果重要。毕业设计是大学生活中最为浓墨重彩的一笔,在这个过程中不仅学到更为全面的书本和实践知识,更让我感受到了浓浓的同窗之情及师生情。虽然大学四年间做过不少实验作业,但是独立完成这样一个操作系统还是第一次,遇到困难时理所当然,我也有所心理准备,但是超出自身能力的部分还是需要寻求教师及同学的帮助。在此,我衷心地感谢我的指导教师,可以说,没有教师我就不能顺利完成这次设计。他总是在一筹莫展的时候为我指引方向。比如在开题报告,我的指导教师就细致地指导我该怎么有逻辑地将自己的想法和做法表达清楚,在此由衷感谢他。在设计的过程中,教师百忙之中也乐于给予我指导,不管多晚给教师发消息,不管是不是上班时间去教师办公室寻求帮助,他总能在第一时间对我施以援手,由于我在设计期间需要离校实习,不能及时到教师办公室检查设计进度,当时已经是晚上6点多,我匆匆赶到办公室时,教师依然在伏案办公,桌上是同学们的中期检查报告,检查完毕业设计后,他又继续查看同学们的中期报告,并督促我及时上交报告。教师给的意见总是一针见血地指出我设计及论文中的不足,并举例详细说明我的改进方法,不得不佩服他的学术水平及教学水平。在我开始着手实现这个设计的时候,通过需求分析及可行性分析对该系统有了较为浅显的认识;但是在我真正开始实现时发现事情并没有这么简单。任何成功都不是一蹴而就的,就算是一个简单的毕业设计也需要日积月累的知识和经验。于是,我便去寻求老师和同学的帮助,这也使得我得以从不同的角度重新考虑我的设计。终于,这个系统在我内心有了雏形。在真正实现这个设计的过程中,学习新知识是必定的,同时那些由于时间关系或者本来就没有掌握牢固的知识也有了进一步巩固的机会。然而最重要的是了解到如何作为一个开发人员,以开发人员的思维来看待软件开发的步骤和方法策略。

本次毕业设计的完成预示着大学时代的句号,在这个设计过程中,我收获到的绝不仅仅是做项目过程中要到的知识,更多的是同窗情谊和师生情谊,最重要的是做任何事情都要具备的认真态度,以及真正职业的思考方式方法。

最后真心祝愿师生们前程似锦!工作顺利,祝学校越办越好!

参考文献

[1]冯凯.“MySQL数据库”课程教学中常见问题探析[J].无线互联科技,2021,18(24):158-159.

[2]陈洁.“MySQL数据库安全”课程教学方法优化分析[J].无线互联科技,2021,18(24):160-161.

[3]闫继正,张雷,张海涛.基于MySQL的空管设备集中监控系统数据库设计[J].微处理机,2021,42(06):47-51.

[4]路尧,梁艳.基于PHP和MySQL的破坏性地震震例数据库设计与实现[J].山西地震,2021(04):43-46+50.

[5]安沈昊,于荣欢.基于MySQL的天地一体化网络结构数据库构建[J].兵工自动化,2021,40(12):66-70.

[6]赵学作.MySQL数据库主从数据同步的设置[J].网络安全和信息化,2021(11):94-97.

[7]宋阳春. 基于图神经网络的景点推荐方法研究与应用[D].西安理工大学,2021.DOI:10.27398/d.cnki.gxalu.2021.001104.

[8]左华煜. 个性化旅游推荐方法研究与应用[D].江苏科技大学,2021.DOI:10.27171/d.cnki.ghdcc.2021.000424.

[9]王丹丹.PHP网站安全及加密技术对策[J].无线互联科技,2020,17(23):28-29.

[10]张文豪. 基于PHP的通用开发框架研究与实现[D].广东工业大学,2020.DOI:10.27029/d.cnki.ggdgu.2020.002249.

[11]朱飞,刘曼琳.PHP语言中mysql与mysqli应用浅析[J].数字技术与应用,2020,38(07):38-41.DOI:10.19695/j.cnki.cn12-1369.2020.07.17.

[12]景广军,郝墨轩.基于PHP语言开发的站址导航系统[J].信息与电脑(理论版),2020,32(08):88-92.

[13]赵伟. 一种PHP代码审计技术的研究与实现[D].西安电子科技大学,2020.DOI:10.27389/d.cnki.gxadu.2020.001097.

[14]魏涵硕. 基于LBSN的景点推荐及路线规划系统研究[D].中央民族大学,2020.DOI:10.27667/d.cnki.gzymu.2020.000787.

[15]王笃朋. 基于景点转移概率模型的兴趣点推荐系统[D].厦门大学,2019.

[16]张舜尧. 基于序列学习的旅游景点推荐研究[D].桂林电子科技大学,2019.

[17]黄昌平.基于php语言分析计算机编程的发展前景[J].数码世界,2019(04):46.

[18]QingHai Yin. Research and Implementation of Network Examination System Based on PHP Language[J]. Journal of Physics: Conference Series,2018,1087(6).

[19]陶健. 个性化景点路线推荐系统设计与实现[D].厦门大学,2018.

[20]Rotmianto Mohamad,Wahyudi Eko. Developing Plugin e-DDC as an Additional Application for Senayan Library Management System with PHP Language Programming and MySQL Database[J]. Record and Library Journal,2018,2(1).

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