Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

отчет лаба 3 Магальник интернет теехнологии

.docx
Скачиваний:
0
Добавлен:
12.02.2026
Размер:
971.76 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНСТВО ВОЗДУШНОГО ТРАНСПОРТА

(РОСАВИАЦИЯ)

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ГРАЖДАНСКОЙ АВИАЦИИ» (МГТУ ГА)

Кафедра вычислительных машин, комплексов, сетей и систем.

Лабораторная работа защищена с оценкой ____________________

____________________

(подпись преподавателя, дата)

ЛАБОРАТОРНАЯ РАБОТА №3

по дисциплине «Интернет-технологии».

Тема: «ОСНОВЫ ТЕХНОЛОГИИ ASP.NET. РАБОТА С БАЗАМИ ДАННЫХ»

Выполнила студент группы ИС221

Магальник Екатерина Борисовна

Руководитель: Романчева Нина Ивановна

МОСКВА – 2025

Цель лабораторной работы.

Получить основные навыки работы с базами данных в среде ASP.NET

Задание на выполнение лабораторной работы.

  1. Ознакомиться с процессом компиляции в среде .NET Framework.

  2. Ознакомиться с работой с базами данных ADO.NET.

  3. Разработать и отладить страницы для чтения данных из файла MDB.

  4. Создать серверные элементы управления и выполнить демонстрацию динамического изменения их свойств

Ход работы.

Листинг DynamicTable.cshtml

@page

@model Lab4_ASPNET_DB.Pages.DynamicTableModel

@{

Layout = null;

}

<html>

<head>

<title>Динамическая таблица</title>

</head>

<body>

<form method="post">

<center>

<h3><span id="Label1">@if (Model.ShowHeader)

{

@Model.TableHeader

}</span></h3>

<br>

<table bgcolor="@Model.BgColor" border="@Model.Border" cellpadding="@Model.CellPadding" cellspacing="@Model.CellSpacing">

<tr style="background-color: @(Model.SelectedRow == 1 ? Model.RowColor : "")">

<td>Один</td>

<td>Кошка</td>

</tr>

<tr style="background-color: @(Model.SelectedRow == 2 ? Model.RowColor : "")">

<td>Два</td>

<td>Собака</td>

</tr>

<tr style="background-color: @(Model.SelectedRow == 3 ? Model.RowColor : "")">

<td>Три</td>

<td>Попугай</td>

</tr>

</table>

<p>

</center>

<br><br><br>

Заголовок таблицы: <input type="text" name="Text1" value="@Model.TableHeader"><br>

Цвет фона таблицы:

<select name="Select1">

<option value="#ffffff" selected="@(Model.BgColor == "#ffffff")">Белый</option>

<option value="#ff0000" selected="@(Model.BgColor == "#ff0000")">Красный</option>

<option value="#ffff10" selected="@(Model.BgColor == "#ffff10")">Жёлтый</option>

</select><br>

Граница таблицы:

<select name="Select2">

<option value="0" selected="@(Model.Border == 0)">0</option>

<option value="1" selected="@(Model.Border == 1)">1</option>

<option value="2" selected="@(Model.Border == 2)">2</option>

<option value="3" selected="@(Model.Border == 3)">3</option>

<option value="4" selected="@(Model.Border == 4)">4</option>

<option value="5" selected="@(Model.Border == 5)">5</option>

</select><br>

Отступ ячеек:

<select name="Select3">

<option value="0" selected="@(Model.CellPadding == 0)">0</option>

<option value="1" selected="@(Model.CellPadding == 1)">1</option>

<option value="2" selected="@(Model.CellPadding == 2)">2</option>

<option value="3" selected="@(Model.CellPadding == 3)">3</option>

<option value="4" selected="@(Model.CellPadding == 4)">4</option>

<option value="5" selected="@(Model.CellPadding == 5)">5</option>

</select><br>

Интервал между ячейками:

<select name="Select4">

<option value="0" selected="@(Model.CellSpacing == 0)">0</option>

<option value="1" selected="@(Model.CellSpacing == 1)">1</option>

<option value="2" selected="@(Model.CellSpacing == 2)">2</option>

<option value="3" selected="@(Model.CellSpacing == 3)">3</option>

<option value="4" selected="@(Model.CellSpacing == 4)">4</option>

<option value="5" selected="@(Model.CellSpacing == 5)">5</option>

</select><br>

<p>Выберите строку:

<select name="Select5">

<option value="1" selected="@(Model.SelectedRow == 1)">1</option>

<option value="2" selected="@(Model.SelectedRow == 2)">2</option>

<option value="3" selected="@(Model.SelectedRow == 3)">3</option>

</select><br>

Цвет строки:

<select name="Select6">

<option value="Grey" selected="@(Model.RowColor == "Grey")">Серый</option>

<option value="Yellow" selected="@(Model.RowColor == "Yellow")">Жёлтый</option>

<option value="Red" selected="@(Model.RowColor == "Red")">Красный</option>

<option value="Violet" selected="@(Model.RowColor == "Violet")">Фиолетовый</option>

</select><br>

Показывать заголовок таблицы:

<input type="radio" name="radio1" value="on" @(Model.ShowHeader ? "checked" : "")>Да

<input type="radio" name="radio1" value="off" @(!Model.ShowHeader ? "checked" : "")>Нет<br>

<center>

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

</center>

</form>

</body>

</html>

Листинг DynamicTable.cshtml.cs

using Microsoft.AspNetCore.Mvc;

using Microsoft.AspNetCore.Mvc.RazorPages;

namespace Lab4_ASPNET_DB.Pages

{

public class DynamicTableModel : PageModel

{

public string TableHeader { get; set; } = "Название таблицы";

public string BgColor { get; set; } = "#ffffff";

public int Border { get; set; } = 3;

public int CellPadding { get; set; } = 3;

public int CellSpacing { get; set; } = 3;

public int SelectedRow { get; set; } = 1;

public string RowColor { get; set; } = "White";

public bool ShowHeader { get; set; } = true;

public bool IsPostBack { get; set; } = false;

public void OnGet()

{

IsPostBack = false;

}

public void OnPost()

{

IsPostBack = true;

TableHeader = Request.Form["Text1"];

BgColor = Request.Form["Select1"];

Border = int.TryParse(Request.Form["Select2"], out int b) ? b : 3;

CellPadding = int.TryParse(Request.Form["Select3"], out int cp) ? cp : 3;

CellSpacing = int.TryParse(Request.Form["Select4"], out int cs) ? cs : 3;

SelectedRow = int.TryParse(Request.Form["Select5"], out int sr) ? sr : 1;

RowColor = Request.Form["Select6"];

ShowHeader = Request.Form["radio1"] == "on";

}

}

}

Результат работы программы.

Рис. 1. Начальное окно браузера при запуске программы.

Рис. 2. Открытие раздела с динамической таблицей.

Рис. 3. Результат применения настроек к таблице.

Листинг Default.aspx

<%@ Page Language="C#" %>

<%@ Import Namespace="System.Data" %>

<%@ Import Namespace="System.Drawing" %>

<%@ Import Namespace="MySql.Data.MySqlClient" %>

<script runat="server">

// Строка подключения к MySQL

private string connectionString = "Server=localhost;Database=UniversityDB;Uid=root;Pwd=Fuckingpassword2;";

// Объявляем элементы управления как protected

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

LoadDynamicTable();

}

}

// Загрузка данных в GridView

protected void btnLoadData_Click(object sender, EventArgs e)

{

using (MySqlConnection connection = new MySqlConnection(connectionString))

{

try

{

connection.Open();

string query = @"SELECT h.Human_ID, h.Last_Name, h.First_Name, h.Middle_Name, h.Office_Phone,

p.Posit_Name, d.Dep_Name

FROM Humans h

LEFT JOIN Positions p ON h.Posit = p.Posit_ID

LEFT JOIN Departments d ON h.Dep = d.Dep_ID

ORDER BY h.Last_Name, h.First_Name";

using (MySqlDataAdapter adapter = new MySqlDataAdapter(query, connection))

{

DataTable dt = new DataTable();

adapter.Fill(dt);

GridView1.DataSource = dt;

GridView1.DataBind();

}

}

catch (Exception ex)

{

ClientScript.RegisterStartupScript(this.GetType(), "alert", $"alert('Ошибка загрузки данных: {ex.Message}');", true);

}

}

}

// Динамическое создание таблицы

private void LoadDynamicTable()

{

// Очищаем существующие строки (кроме заголовка)

for (int i = tblDynamic.Rows.Count - 1; i >= 1; i--)

{

tblDynamic.Rows.RemoveAt(i);

}

using (MySqlConnection connection = new MySqlConnection(connectionString))

{

try

{

connection.Open();

string query = "SELECT Human_ID, Last_Name, First_Name, Office_Phone FROM Humans LIMIT 5";

using (MySqlCommand cmd = new MySqlCommand(query, connection))

{

using (MySqlDataReader reader = cmd.ExecuteReader())

{

while (reader.Read())

{

TableRow row = new TableRow();

// ID

TableCell cellId = new TableCell();

cellId.Text = reader["Human_ID"].ToString();

row.Cells.Add(cellId);

// Фамилия

TableCell cellLastName = new TableCell();

cellLastName.Text = reader["Last_Name"].ToString();

row.Cells.Add(cellLastName);

// Имя

TableCell cellFirstName = new TableCell();

cellFirstName.Text = reader["First_Name"].ToString();

row.Cells.Add(cellFirstName);

// Телефон

TableCell cellPhone = new TableCell();

cellPhone.Text = reader["Office_Phone"].ToString();

row.Cells.Add(cellPhone);

tblDynamic.Rows.Add(row);

}

}

}

} }

catch (Exception ex)

{

ClientScript.RegisterStartupScript(this.GetType(), "alert", $"alert('Ошибка применения стилей: {ex.Message}');", true);

}

}

// Добавление новой записи

protected void btnAddRecord_Click(object sender, EventArgs e)

{

// Проверка обязательных полей

if (string.IsNullOrWhiteSpace(txtLastName.Text) || string.IsNullOrWhiteSpace(txtFirstName.Text))

{

lblMessage.Text = "Пожалуйста, заполните обязательные поля (Фамилия и Имя)";

lblMessage.ForeColor = Color.Red;

return;

}

using (MySqlConnection connection = new MySqlConnection(connectionString))

{

try

{

connection.Open();

string query = @"INSERT INTO Humans (Last_Name, First_Name, Middle_Name, Office_Phone, Posit, Dep)

VALUES (@LastName, @FirstName, @MiddleName, @Phone, 1, 1)";

using (MySqlCommand cmd = new MySqlCommand(query, connection))

{

cmd.Parameters.AddWithValue("@LastName", txtLastName.Text.Trim());

cmd.Parameters.AddWithValue("@FirstName", txtFirstName.Text.Trim());

cmd.Parameters.AddWithValue("@MiddleName", string.IsNullOrWhiteSpace(txtMiddleName.Text) ?

DBNull.Value : (object)txtMiddleName.Text.Trim());

cmd.Parameters.AddWithValue("@Phone", string.IsNullOrWhiteSpace(txtPhone.Text) ?

DBNull.Value : (object)txtPhone.Text.Trim());

int rowsAffected = cmd.ExecuteNonQuery();

if (rowsAffected > 0)

{

lblMessage.Text = "Запись успешно добавлена!";

lblMessage.ForeColor = Color.Green;

// Очищаем поля

txtLastName.Text = "";

txtFirstName.Text = "";

txtMiddleName.Text = "";

txtPhone.Text = "";

// Обновляем таблицы

LoadDynamicTable();

}

else

{

lblMessage.Text = "Ошибка при добавлении записи";

lblMessage.ForeColor = Color.Red;

}

}

}

catch (Exception ex)

{

lblMessage.Text = $"Ошибка: {ex.Message}";

lblMessage.ForeColor = Color.Red;

}

}

}

</script>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title>Лабораторная работа №4 - ASP.NET и MySQL</title>

<style>

body { font-family: Arial, sans-serif; margin: 20px; }

.container { max-width: 1200px; margin: 0 auto; }

.section { margin-bottom: 30px; padding: 20px; border: 1px solid #ddd; }

.data-table { width: 100%; border-collapse: collapse; margin-top: 10px; }

.data-table th, .data-table td { border: 1px solid #ddd; padding: 8px; text-align: left; }

.data-table th { background-color: #f2f2f2; }

.controls { background-color: #f9f9f9; padding: 15px; margin: 10px 0; }

</style>

</head>

<body>

<form id="form1" runat="server">

<div class="container">

<h1>Лабораторная работа №4 - ASP.NET и MySQL</h1>

<!-- Секция 1: Чтение данных из базы -->

<div class="section">

<h2>1. Чтение данных из базы данных</h2>

<asp:Button ID="btnLoadData" runat="server" Text="Загрузить данные" OnClick="btnLoadData_Click" />

<asp:GridView ID="GridView1" runat="server" CssClass="data-table" AutoGenerateColumns="True"

EmptyDataText="Нет данных для отображения">

</asp:GridView>

</div>

<!-- Секция 2: Динамическое изменение свойств -->

<div class="section">

<h2>2. Динамическое изменение свойств элементов</h2>

<div class="controls">

<h3>Настройка таблицы:</h3>

Цвет фона:

<asp:DropDownList ID="ddlBgColor" runat="server">

<asp:ListItem Value="#ffffff">Белый</asp:ListItem>

<asp:ListItem Value="#f0f8ff">Голубой</asp:ListItem>

<asp:ListItem Value="#fffacd">Лимонный</asp:ListItem>

<asp:ListItem Value="#f5f5dc">Бежевый</asp:ListItem>

</asp:DropDownList>

Граница:

<asp:DropDownList ID="ddlBorder" runat="server">

<asp:ListItem Value="0">0</asp:ListItem>

<asp:ListItem Value="1">1</asp:ListItem>

<asp:ListItem Value="2">2</asp:ListItem>

<asp:ListItem Value="3">3</asp:ListItem>

</asp:DropDownList>

<asp:Button ID="btnApplyStyles" runat="server" Text="Применить стили" OnClick="btnApplyStyles_Click" />

</div>

<asp:Table ID="tblDynamic" runat="server" CssClass="data-table" Border="1" CellPadding="5" CellSpacing="0">

<asp:TableRow>

<asp:TableCell>ID</asp:TableCell>

<asp:TableCell>Фамилия</asp:TableCell>

<asp:TableCell>Имя</asp:TableCell>

<asp:TableCell>Телефон</asp:TableCell>

</asp:TableRow>

</asp:Table>

</div>

<!-- Секция 3: Форма добавления данных -->

<div class="section">

<h2>3. Добавление новых записей</h2>

<div style="margin-bottom: 15px;">

<asp:Label runat="server" Text="Фамилия:"></asp:Label>

<asp:TextBox ID="txtLastName" runat="server" Width="200px"></asp:TextBox>

</div>

<div style="margin-bottom: 15px;">

<asp:Label runat="server" Text="Имя:"></asp:Label>

<asp:TextBox ID="txtFirstName" runat="server" Width="200px"></asp:TextBox>

</div>

<div style="margin-bottom: 15px;">

<asp:Label runat="server" Text="Отчество:"></asp:Label>

<asp:TextBox ID="txtMiddleName" runat="server" Width="200px"></asp:TextBox>

</div>

<div style="margin-bottom: 15px;">

<asp:Label runat="server" Text="Телефон:"></asp:Label>

<asp:TextBox ID="txtPhone" runat="server" Width="200px"></asp:TextBox>

</div>

<asp:Button ID="btnAddRecord" runat="server" Text="Добавить запись" OnClick="btnAddRecord_Click" />

<asp:Label ID="lblMessage" runat="server" ForeColor="Green" style="margin-left: 10px;"></asp:Label>

</div>

</div>

</form>

</body>

</html>

Результат работы программы.

Рис. 4. Начальное окно браузера при запуске программы.

Рис. 5. Загрузка данных из базы данных.

Рис. 6. Заполнение формы для добавления человека в базу данных.

Рис. 7. Уведомление о том, что данные были успешно добавлены.

Рис. 8. Повторная загрузка данных из базы после добавления человека.

Рис. 9. Схема базы данных.

Рис. 10. Наполнение таблицы department.

Рис. 11. Наполнение таблицы humans.

Рис. 12. Наполнение таблицы positions.