Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Разработка туристического сайта

Содержание:

ВВЕДЕНИЕ

Персональный компьютер и Интернет, их доступность и надежность, способствуют проникновению во все сферы общества новых информационных технологий. Эти технологии обеспечивают рост производительности в сфере услуг, в частности и в туризме. Ведь туризм и информация неразделимы.

Сейчас уже трудно представить эффективную работу туристической фирмы без собственного сайта. Для турагентства — это быстрый выход на клиентов. Основным требованием к сайту туристического агентства является оперативность. На сайте турагентства нужна в первую очередь информация о конкретных предложениях.

Разработка сайта представляет собой четкую последовательность действий. В наше время, самостоятельно сделать сайт можно несколькими способами. Также существует немало сторонних фирм, занимающихся разработкой и раскруткой сайтов. Разработка и раскрутка сайта- различные понятия, которые можно рассматривать отдельно.

Темой данной курсовой работы является именно разработка сайта туристического агентства. Соответственно, целью работы является разработка сайта-визитки туристического агентства. В итоге должен получится сайт, на котором располагается информация о работе агентства, услугах, предоставляемых им и контактной информации.

В проекте требуется решение следующих задач:

  • Изучение HTML-языка.
  • Исследование основных понятий
  • Разработка сайта
  • Наполнение ресурса информацией
  • Разработать руководство пользователя 

Практическая значимость проекта заключается в том, что с помощью данного сайта можно ознакомиться с текущей деятельностью турфирмы в сети интернет.

1. Техническое задание и выбор средств реализации

Система представляет собой базу данных, которую смогут использовать сотрудники турфирмы. В базе данных осуществлен поиск, что позволяет быстро получить доступ к нужной информации. При её применении станет легче добавлять информацию о новых направлениях.

Основные возможности программы: 

  • ввод информации о направлениях в категории «Популярные направления»;
  • вывод информации об организации;
  • регистрация/авторизация пользователей;
  • простой и удобный интерфейс для работы администратора.

Для решения поставленной задачи были выделены следующие средства:

  • язык гипертекстовой разметки;
  • язык программирования PHP;
  • СУБД MySql;

Наилучшее решение — хранить информацию типа списков, пользователей и т.д. в БД. Однако база данных далеко не всегда статичное образование, чаще наоборот, она регулярно пополняться и корректируется. Для легкости управления этими БД, изменения и добавления данных существуют системы управления базами данных (СУБД).

Одна из самых популярных СУБД в современных интернет-технологиях, бесспорно, MySQL.

База данных, разрабатываемая в курсовом проекте, упрощает и ускоряет процесс обработки информации путем организации запросов к базе данных и отображения необходимой информации на экране.

Вывод и отображение информации на сайте реализуется средствами гипертекстовой разметки HTML, каскадными таблицами стилей CSS и языка программирования PHP.

2. Описание модулей серверной части программы и их взаимодействие

В процессе проектировании серверной части ресурса, были выделены следующие модули разделов сайта и активностей пользователя формируемых динамически:

  • регистрация и авторизация клиентов с учётом прав пользователя;
  • личный кабинет администратора;
  • специальный раздел «Популярные направления»;

Рисунок 1 – Основные файлы веб страниц

Для реализации текущих задач было принято решение разработать несколько модулей, которые будут связываться с СУБД и запрашивать либо изменять информацию.

Все модули представлены в Таблице 1.

Таблица 1 – Основные модули для динамической обработки информации

Модуль

Описание

Login.php

Модуль авторизации и регистрации пользователя

Admin.php

Модуль личного кабинета

Popular.php

Модуль раздела «Фильм дня»

Модуль login.php – предназначен для обработки процесса регистрации и авторизации пользователей.

Файл содержит в себе две HTML формы, предназначенные для вышеуказанных задач, а так же PHP код, который содержит функционал для обработки введённой информации методом POST.

Одной из функцией является – проверка на наличие ошибок и вывод соответствующей информации при не соответствии требованиям (30 символов < Логин < 3 символов, Логин должен состоять из букв Латинского алфавита и т.д.).

Следующий модуль Admin.php – предназначен для отображения личного кабинета администратора. Содержит в себе форму для ввода информации для раздела «Популярные направления», а именно «Наименование», «Кол-во звёзд» и «Цена». После отправки формы, вышеуказанная информация отправляется в БД в соответствующие столбцы.

Информация из этой таблицы отображается на странице Фильм дня «popular.php» путём SQL запроса.

3. Описание структуры базы данных и ее функций

Для реализации необходимого функционала была создана база «turbaza», с таблицами «users» для обеспечения процесса регистрации/авторизации, «tur» для хранения информации для категории «Популярные направления»

Данные в полях «password» - шифруются по алгоритму MD5.
MD5 - 128-битный алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом из Массачусетского технологического института (Massachusetts Institute of Technology, MIT) в 1991 году. Широко применяется для проверки целостности информации и хранения хешей паролей.

Рисунок 2 – ER модель

Cписок данных хранящихся в таблицах базы данных:

  • информация о пользователях;
  • информация для раздела «Популярные направления»;

Таблица «users», хранит в себе следующую информацию:

  • «id» (числовое поле) порядковый номер пользователя формируемый автоматически;
  • «login» (текстовое поле) имя пользователя, введённое при регистрации;
  • «password» (текстовое поле) пароль в зашифрованном виде, введённый при регистрации;

Таблица «tur», хранит в себе следующую информацию:

  • «id» (числовое поле) порядковый номер пользователя формируемый автоматически;
  • «name» (текстовое поле) наименование страны тура;
  • «stars» (текстовое поле) количество звёзд;
  • «price» (текстовое поле) цена тура;

4. Описание структуры клиентской части

Клиентская часть сайта состоит из нескольких страниц.

Основные разделы сайта:

  • Домашняя;
  • О фирме;
  • Популярные направления;
  • Контакты.

Если посетитель авторизируется как «Администратор», ему становится доступен дополнительный раздел «Личный кабинет», для управления и редактирования информации.

Чтобы авторизироваться/зарегистрироваться на ресурсе, необходимо нажать на кнопку «Личный кабинет», которая находится в «Шапке» сайта, чтобы попасть на страницу авторизации (рисунок 3).

Рисунок 3 – Кнопка «Личный кабинет»

Если пользователь не зарегистрирован, ему необходимо внести информацию в определённые поля и нажать кнопку «Зарегистрироваться» (рисунок 4).

Рисунок 4 – Страница авторизации

ЗАКЛЮЧЕНИЕ

В процессе разработки данного ресурса, я обрёл навык работы с PHP и MySql, что позволило мне открыть для себя новые способы разработки динамических веб-страниц. Так, я смог упростить взаимодействие с элементами сайта, выведя их в отдельные файлы, организовал удобное добавление новых позиций.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

Основная литература:

  1. Мейер, Б. Инструменты, алгоритмы и структуры данных / Б. Мейер. - 2-е изд., испр. - М. : Национальный Открытый Университет «ИНТУИТ», 2016.
  2. Савельева, Н.В. Язык программирования PHP / Н.В. Савельева. - 2-е изд., испр. - М. : Национальный Открытый Университет «ИНТУИТ», 2016
  3. Прохоренок, Н. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера / Н. Прохоренок. - СПб.: БХВ - Петербург., 2010. - 900 с.
  4. Мазуркевич, А. PHP: настольная книга программиста / А. Мазуркевич. - М.: Новое знание, 2003. - 480 с.

Дополнительная литература:

  1. Богданов, М.Р. Перспективные языки веб-разработки / М.Р. Богданов. - 2-е изд., испр. - М. : Национальный Открытый Университет «ИНТУИТ», 2016
  2. http://biblioclub.ru/index.php?page=book&id=428953
  3. Никсон, Р. Создаем динамические web-сайты с помощью PHP, MySQL и JavaScript / Р. Никсон. - П.: Питер, 2011. - 496 с.
  4. PHP, SQL [Electronic resource] / блог. - Россия, 2010.: http://phpsql.ru/.
  5. Томсон, Л. Разработка Web-приложений на РНР и MySQL/ Л. Томсон. - М.: ДиаСофтЮП, 2003. - 672 с.
  6. PHPForum [Электронный ресурс] /форум.- Россия, 2003. - Режим доступа: http://phpforum.ru. - Дата доступа: 09.02.2012.

ПРИЛОЖЕНИЕ 1

Код странички index.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

<!DOCTYPE html ru>

<html>

<head>

<meta charset="UTF-8">

<title>Сайт турфирмы</title>

<link rel="stylesheet" href="style.css">

</head>

<body>

<div class="content">

<div id="header">

<a href="index.php"><img src="logo.png" width="15%"></a>

<div style="display: inline-block;overflow: hidden;">

<h2>Организуем путешествие Вашей мечты!</h2>

<p>+7 (495)-000-12-34</p>

</div>

<div class="menu">

<a href="index.php" class="link">Главная</a>

<a href="about.php" class="link">О фирме</a>

<a href="popular.php" class="link">Популярные направления</a>

<a href="contacts.php" class="link">Контакты</a>

<a href="login.php" class="link">Личный кабинет</a>

</div>

</div>

<div class="all">

<div class="banner">

<h1>Горящие туры для двоих!</h1>

<p>Сезонное предложение, торопись!</p>

<a href="" class="more">Подробнее...</a>

</div>

<div class="popular">

<h2>Популярные направления:</h2>

</div>

<div class="var var1">

<div class="pic1"></div>

<h3>Турция</h3>

<p>★★★★☆</p>

<p>От 15 000р</p>

</div>

<div class="var var2">

<div class="pic2"></div>

<h3>Тунис</h3>

<p>★★★☆☆</p>

<p>От 10 000р</p>

</div>

<div class="var var3">

<div class="pic3"></div>

<h3>ОАЭ</h3>

<p>★★★★★</p>

<p>От 25 000р</p>

</div>

</div>

<div class="footer">

<p>Турфирма 2020г</p>

</div>

</div>

</body>

</html>

Код странички about.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

<!DOCTYPE html ru>

<html>

<head>

<meta charset="UTF-8">

<title>О турфирме</title>

<link rel="stylesheet" href="style.css">

</head>

<body>

<div class="content">

<div id="header">

<a href="index.php"><img src="logo.png" width="15%"></a>

<div style="display: inline-block;overflow: hidden;">

<h2>Организуем путешествие Вашей мечты!</h2>

<p>+7 (495)-000-12-34</p>

</div>

<div class="menu">

<a href="index.php" class="link">Главная</a>

<a href="about.php" class="link">О фирме</a>

<a href="popular.php" class="link">Популярные направления</a>

<a href="contacts.php" class="link">Контакты</a>

<a href="login.php" class="link">Личный кабинет</a>

</div>

</div>

<div class="all">

<h2>О нас</h2>

<div class="ban2"></div>

<p>Группа компаний, занимающая лидирующие позиции на мировом туристическом рынке. Турфирма образована в 2014 году в результате слияния двух крупнейших европейских туристических компаний. Штаб-квартира объединенной компании расположена в России, ее акции котируются на Лондонской фондовой бирже.</p>

<p>

Мы обслуживаем более 20 млн клиентов в год, предлагая отдых в 180 странах мира. Свыше 300 отелей в более чем 30 странах мира, 6 авиакомпаний, 14 круизных лайнеров и др. Только в Европе мы имеем свыше 3 000 офисов продаж.

Мы обладаем самым большим чартерным флотом в Европе – более 130 самолетов.</p>

<p>

Турфирма – одна из самых прибыльных туристических компаний в мире, неоднократный лауреат престижной международной премии World Travel Awards, в 2013 году — в номинациях «Лучший в мире туроператор» и «Лучшая в мире чартерная авиакомпания».

</p>

<p>

Оборот компании в 2014/2015 финансовом году составил 20,1 млрд евро, операционная прибыль – 1, 069 млрд евро.

</p>

<p>

Количество сотрудников компании — более 76 000 человек в 130 странах.</p>

</div>

<div class="footer">

<p>Турфирма 2020г</p>

</div>

</div>

</body>

</html>

Код странички popular.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

<!DOCTYPE html ru>

<html>

<head>

<meta charset="UTF-8">

<title>Популярные направления</title>

<link rel="stylesheet" href="style.css">

</head>

<body>

<div class="content">

<div id="header">

<a href="index.php"><img src="logo.png" width="15%"></a>

<div style="display: inline-block;overflow: hidden;">

<h2>Организуем путешествие Вашей мечты!</h2>

<p>+7 (495)-000-12-34</p>

</div>

<div class="menu">

<a href="index.php" class="link">Главная</a>

<a href="about.php" class="link">О фирме</a>

<a href="popular.php" class="link">Популярные направления</a>

<a href="contacts.php" class="link">Контакты</a>

<a href="login.php" class="link">Личный кабинет</a>

</div>

</div>

<div class="all">

<h2>Популярные направления на 2020 год</h2>

<table>

<tr class="tbhead">

<td>Наименование</td>

<td>Звёзды</td>

<td>Цена</td>

</tr>

<tr>

<td>Турция</td>

<td>★★★★☆</td>

<td>От 15 000р</td>

</tr>

<tr>

<td>Тунис</td>

<td>★★★☆☆</td>

<td>От 10 000р</td>

</tr>

<tr>

<td>ОАЭ</td>

<td>★★★★★</td>

<td>От 25 000р</td>

</tr>

<?php

$link=mysqli_connect("localhost", "root", "root", "turbaza");

$sql = mysqli_query($link, 'SELECT `name`, `stars`, `price` FROM `tur` ');

while ($result = mysqli_fetch_array($sql)) {

if ($result['stars'] == 2) {

$stars = "★★☆☆☆";

}

if ($result['stars'] == 3) {

$stars = "★★★☆☆";

}

if ($result['stars'] == 4) {

$stars = "★★★★☆";

}

if ($result['stars'] == 5) {

$stars = "★★★★★";

}

echo "<tr><td> {$result['name']}</td><td>$stars</td><td> От {$result['price']}р</td></tr>";

}

?>

</table>

</div>

<div class="footer">

<p>Турфирма 2020г</p>

</div>

</div>

</body>

</html>

Код странички contacts.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

<!DOCTYPE html ru>

<html>

<head>

<meta charset="UTF-8">

<title>Контакты</title>

<link rel="stylesheet" href="style.css">

</head>

<body>

<div class="content">

<div id="header">

<a href="index.php"><img src="logo.png" width="15%"></a>

<div style="display: inline-block;overflow: hidden;">

<h2>Организуем путешествие Вашей мечты!</h2>

<p>+7 (495)-000-12-34</p>

</div>

<div class="menu">

<a href="index.php" class="link">Главная</a>

<a href="about.php" class="link">О фирме</a>

<a href="popular.php" class="link">Популярные направления</a>

<a href="contacts.php" class="link">Контакты</a>

<a href="login.php" class="link">Личный кабинет</a>

</div>

</div>

<div class="all">

<h2>Контакты</h2>

<h3>Метро: Кантемировская</h3>

<h3>Адрес: ул. Кантемировская, д.47, ТЦ "Кантемировский", 2 этаж, пав. 49</h3>

<h3>Телефон: +7 (495)-000-12-34</h3>

<h3>Почта: info@turfirma.ru</h3>

</div>

<div class="footer">

<p>Турфирма 2020г</p>

</div>

</div>

</body>

</html>

Код странички login.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Войти</title>

<link rel="stylesheet" href="style.css">

</head>

<body>

<div class="content">

<div id="header">

<a href="index.php"><img src="logo.png" width="15%"></a>

<div style="display: inline-block;overflow: hidden;">

<h2>Организуем путешествие Вашей мечты!</h2>

<p>+7 (495)-000-12-34</p>

</div>

<div class="menu">

<a href="index.php" class="link">Главная</a>

<a href="about.php" class="link">О фирме</a>

<a href="popular.php" class="link">Популярные направления</a>

<a href="contacts.php" class="link">Контакты</a>

<a href="login.php" class="link">Личный кабинет</a>

</div>

</div>

<?php

// Настройки Базы (адрес, логин, пароль, название базы)

$link=mysqli_connect("localhost", "root", "root", "turbaza");

if(isset($_POST['submit']))

{

// Вытаскиваем из БД запись, у которой логин равняеться введенному

$query = mysqli_query($link,"SELECT password FROM users WHERE login='".mysqli_real_escape_string($link,$_POST['login'])."' LIMIT 1");

$data = mysqli_fetch_assoc($query);

// Сравниваем пароли

if($data['password'] === md5(md5($_POST['password'])))

{

// Переадресовываем на страницу админки

if ($_POST['login'] === 'admin') {

header("Location: admin.php"); exit();

}

else {

header("Location: index.php"); exit();

}

}

else

{

echo "<h3>Вы ввели неправильный логин / пароль</h3>";

}

}

?>

<h1>Авторизируйтесь на нашем сайте</h1>

<div class="form login">

<h2>Вход:</h2>

<form method="POST">

Логин: <br>

<input name="login" type="text" required ><br>

Пароль: <br>

<input name="password" type="password" required> <br>

<input name="submit" type="submit" value="Войти">

</form>

</div>

<!-- РЕГИСТРАЦИЯ НАЧИНАЕТСЯ ЗДЕСЬ!!!!!-->

<div class="form register">

<h2>Регистрация:</h2>

<form method="POST">

Логин: <br>

<input name="login" type="text" required ><br>

Пароль: <br>

<input name="password" type="password" required><br>

<input name="submit2" type="submit" value="Зарегистрироваться">

</form>

</div>

<?php

if(isset($_POST['submit2']))

{

$err = [];

// проверям логин

if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['login']))

{

$err[] = "Логин может состоять только из букв английского алфавита и цифр";

}

if(strlen($_POST['login']) < 3 or strlen($_POST['login']) > 30)

{

$err[] = "Логин должен быть не меньше 3-х символов и не больше 30";

}

// проверяем, не сущестует ли пользователя с таким именем

$query = mysqli_query($link, "SELECT id FROM users WHERE login='".mysqli_real_escape_string($link, $_POST['login'])."'");

if(mysqli_num_rows($query) > 0)

{

$err[] = "Пользователь с таким логином уже существует в базе данных";

}

// Если нет ошибок, то добавляем в БД нового пользователя

if(count($err) == 0)

{

$login = $_POST['login'];

// Убираем лишние пробелы и делаем двойное хеширование

$password = md5(md5(trim($_POST['password'])));

mysqli_query($link,"INSERT INTO users SET login='".$login."', password='".$password."'");

header("Location: index.php"); exit();

}

else

{

print "<br><b>Ошибки:</b><br>";

foreach($err AS $error)

{

print $error."<br>";

}

}

}

?>

<div class="footer">

<p>Турфирма 2020г</p>

</div>

</div>

</body>

</html>

Код странички admin.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Панель администратора</title>

<link rel="stylesheet" href="style.css">

</head>

<body>

<div class="content">

<div id="header">

<a href="index.php"><img src="logo.png" width="15%"></a>

<div style="display: inline-block;overflow: hidden;">

<h2>Организуем путешествие Вашей мечты!</h2>

<p>+7 (495)-000-12-34</p>

</div>

<div class="menu">

<a href="index.php" class="link">Главная</a>

<a href="about.php" class="link">О фирме</a>

<a href="popular.php" class="link">Популярные направления</a>

<a href="contacts.php" class="link">Контакты</a>

<a href="login.php" class="link">Личный кабинет</a>

</div>

</div>

<h2>Панель администратора</h2>

<h3>Добавить популярное направление:</h3>

<?php

$link=mysqli_connect("localhost", "root", "root", "turbaza");

$name = $_POST['name'];

$stars = $_POST['stars'];

$price = $_POST['price'];

if ($name != '') {

mysqli_query($link, "INSERT INTO tur SET name='$name', stars='$stars', price='$price' ");

}

?>

<form action="#" method="post">

<p>Наименование:</p>

<input type="text" name="name" required>

<p>Кол-во звёзд:</p>

<input type="text" name="stars" required>

<p>Цена:</p>

<input name="price" type="text" required><br>

<input type="submit" name="submit" id="submit" value="Отправить">

</form>

<div class="footer">

<p>Турфирма 2020г</p>

</div>

</div>

</body>

</html>