Скачиваний:
1
Добавлен:
12.04.2025
Размер:
2.11 Mб
Скачать

ГУАП

КАФЕДРА № 14

ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

Старший преподаватель

Н. В. Барклаевская

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №5

СОЗДАНИЕ САЙТА С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ ASP.NET. ЧАСТЬ 1. РАЗМЕТКА САЙТА. ФИЛЬТРАЦИЯ ДАННЫХ

по курсу: ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ гр. №

4116

подпись, дата

инициалы, фамилия

Санкт-Петербург 2024

Цель работы: создание сайта с использованием технологии ASP.NET, создание структуры сайта, а также главной, новостной, поисковой страниц. Реализация фильтрации данных.

Описание предметной области:

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

Разработана структура сайт, создано навигационное меню для перехода между страницами (Рисунок 1).

Рисунок 1- Разметка сайта

Создана Главная страница, которая приветствует пользователя (Рисунок 2)

Рисунок 2 – Главная страница

Далее создана Новостная страница, на которой находится список новостей, реализованный с помощью ListView. Источником данных является таблица Новости в базе данных (Рисунок 3)

Рисунок 3 – Страница Новости

Разработана страница поиска туров с фильтрацией по типу тура, стране, по типу и стране (Рисунок 4-6).

Рисунок 4- Разметка страницы Поиск туров

Рисунок 5- Настройка источника данных для GridView

Листинг 1- Функции для обработки нажатий на кнопки

protected void Button1_Click(object sender, EventArgs e)

{

string type = DropDownList1.SelectedValue;

SqlDataSource1.SelectCommand = GetSqlCommand(type, null);

GridView1.DataBind();

}

protected void Button2_Click(object sender, EventArgs e)

{

string country = DropDownList2.SelectedValue;

SqlDataSource1.SelectCommand = GetSqlCommand(null, country);

GridView1.DataBind();

}

protected void Button3_Click(object sender, EventArgs e)

{

string type = DropDownList1.SelectedValue;

string country = DropDownList2.SelectedValue;

SqlDataSource1.SelectCommand = GetSqlCommand(type, country);

GridView1.DataBind();

}

Листинг 2- Генерация SQL-запрос для фильтрации туров на основе типа и страны

private string GetSqlCommand(string type, string country)

{

string sql = @"SELECT

Tour.Tour_ID AS 'TourID',

Tour.Name_T AS 'Tour Name',

Tour.Description_T AS 'Description',

Tour.Duration_T AS 'Duration',

Type_T.Name_T AS 'Tour Type',

Season.Name_Season AS 'Season',

Hotel.Name_H AS 'Hotel Name',

Locality.Name_L AS 'Route Locality',

Locality.Country AS 'Country',

Image.FilePath AS 'Image Path'

FROM

Tour

JOIN

Type_T ON Tour.TypeT_ID = Type_T.TypeT_ID

JOIN

TourSeason ON Tour.Tour_ID = TourSeason.Tour_ID

JOIN

Season ON TourSeason.Season_ID = Season.Season_ID

JOIN

TourHotel ON Tour.Tour_ID = TourHotel.Tour_ID

JOIN

Hotel ON TourHotel.Hotel_ID = Hotel.Hotel_ID

JOIN

Route ON Tour.Tour_ID = Route.Tour_ID

JOIN

Locality ON Route.Locality_ID = Locality.Locality_ID

LEFT JOIN

ImageTour ON Tour.Tour_ID = ImageTour.TourID

LEFT JOIN

Image ON ImageTour.ImageID = Image.ImageID";

SqlDataSource1.SelectParameters.Clear();

if (!string.IsNullOrEmpty(type) && !string.IsNullOrEmpty(country))

{

sql += " WHERE Type_T.Name_T = @Type AND Locality.Country = @Country";

SqlDataSource1.SelectParameters.Add(new Parameter("Type", DbType.String, type));

SqlDataSource1.SelectParameters.Add(new Parameter("Country", DbType.String, country));

}

else if (!string.IsNullOrEmpty(type))

{

sql += " WHERE Type_T.Name_T = @Type";

SqlDataSource1.SelectParameters.Add(new Parameter("Type", DbType.String, type));

}

else if (!string.IsNullOrEmpty(country))

{

sql += " WHERE Locality.Country = @Country";

SqlDataSource1.SelectParameters.Add(new Parameter("Country", DbType.String, country));

}

return sql;

}

Рисунок 6- Страница Поиск туров

На рисунках 7-8 показана работа фильтрации.

Рисунок 7- Применение фильтрации по типу тура

Рисунок 8- Применение фильтрации по типу и стране

При нажатии на Выбор пользователь может открыть страницу тура для просмотра более подробной информации (Рисунок 9-10). Написана функция GridView1_SelectedIndexChanged, которая получает идентификатор выбранного тура и перенаправляет пользователя на страницу с подробной информацией, передавая идентификатор в качестве параметра в URL.

Листинг 3- Функция обработки нажатия кнопки для просмотра подробной информации о туре

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)

{

int selectedTourID = Convert.ToInt32(GridView1.SelectedDataKey.Value);

Response.Redirect($"TourDetails.aspx?TourID={selectedTourID}");

Листинг 4- Функция отображения подробной информации о туре

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

string tourID = Request.QueryString["TourID"];

if (!string.IsNullOrEmpty(tourID))

{

DataTable tourDetails = GetTourDetails(tourID);

if (tourDetails.Rows.Count > 0)

{

DataRow row = tourDetails.Rows[0];

TourNameLabel.Text = row["TourName"].ToString();

DescriptionLabel.Text = row["Description"].ToString();

DurationLabel.Text = row["Duration"].ToString();

SeasonLabel.Text = row["Season"].ToString();

HotelNameLabel.Text = row["HotelName"].ToString();

LocalityLabel.Text = row["Locality"].ToString();

CountryLabel.Text = row["Country"].ToString();

string imagePath = row["ImagePath"].ToString();

}

}

}

Рисунок 9- Подробная информация о туре

Рисунок 10- Просмотр подробной информации о туре

Вывод: ходе выполнения лабораторной работы была разработана структура сайта туристического агентства. Реализованы главная страница, новостная страница и страница поиска туров. Для получения данных из БД устанавливалось соединение с Microsoft SQL Server и настраивались источники данных.

Соседние файлы в предмете Проектирование информационных систем