Файл: Курсовая работа по дисциплине Базы данных студента очной формы обучения.docx

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 11.12.2023

Просмотров: 127

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Листинг 12 – Триггер, срабатываемый после обновления данных.

CREATE TRIGGER onupdate_log

AFTER UPDATE

ON teacher

FOR EACH ROW

EXECUTE PROCEDURE nameChange();

Конец листинга 12.

На рисунке 11 происходит обновление данных в таблице преподавателей, а на рисунке 12 показан результат работы триггера после выполнения оператора манипулирования данными, таких как, обновление.



Рисунок 11. Операция обновления данных



Рисунок 12. Результат триггера onupdate_log

Создали функцию – триггер и сам триггер для занесения в таблицу changeTeacher, результаты удаления данных из таблицы преподавателей. Триггер будет срабатывать каждый раз, когда пользователь будет удалять преподавателя, и заносить ФИО этих преподавателей в таблицу changeTeacher, а также имя пользователя, работающего в данный момент с БД, и время операции. В листинге 13 будет программный код функции, которая будет вызвана при активации триггера.

Листинг 13 – Триггерная функция.

CREATE FUNCTION namedeletinglog()

RETURNS trigger

LANGUAGE 'plpgsql'

AS $BODY$

begin

INSERT INTO "changeTeacher"

values(concat_ws( old."surname_teacher", old."name_teacher", old."patronymic_teacher"),

'Пользовательудален',

current_timestamp,

user);

return new;

end;

$BODY$;

Конец листинга 13.

В листинге 14 показан программный код самого триггера для функции, написанной выше.

Листинг 14 – Триггер, срабатываемый после удаления данных.

CREATE TRIGGER ondelete_log

BEFORE DELETE

ON teacher

FOR EACH ROW

Продолжение листинга 14.

EXECUTE PROCEDURE namedeletinglog();

Конец листинга 14.

На рисунке 13 происходит удаление данных в таблице преподавателей.



Рисунок 13. Операция удаление данных из таблицы

На рисунке 14 показан результат работы триггера после выполнения оператора манипулирования данными, таких как, удаление.



Рисунок 14. Результат триггера ondelete_log

2.2 Разработка программного обеспечения


Создание Web-приложения. Веб-приложение – это специальный вид приложений, которые работают в глобальной сети Интернет по протоколу HTTP. Как правило, веб-приложение не требует установки дополнительного программного обеспечения на стороне клиента, а вся логика, в основном, выполняется на стороне сервера. Для отображения пользовательского интерфейса используется браузер.

Доступ к базе данных осуществляется с использованием PDO — расширение для PHP, которое расшифровывается как PHP DataObjects. Его особенностью является повышенная безопасность и универсальный интерфейс работы с различными базами данных. [2]

Для того, чтобы подключиться к PostgreSQL из PHP необходимо указать настройки подключения: адрес сервера, логин, пароль, название базы данных, имя пользователя, пароль и кодировку.

Листинг 15 - Подключение к БД.

$host = 'localhost'; // хост

$db = 'student_s'; // названиебазы

$user = 'postgres'; // логинпользователя

$pass = 'mhnmhhM49'; // пароль

$port=5432;

try {

$db = new PDO("pgsql:host=$host;dbname=$db", $user, $pass);

}

catch (PDOException $e) {

echo $e->getMessage();

}

Конец листинга 15.

Строка newPDO("pgsql:host=$host;dbname=$db", $user, $pass) открывает соединение с базой данных, возвращает указатель соединения. Она принимает все конфигурационные настройки и подключается к серверу. В случае ошибки подключения срабатывает оператор catch(), который выводит сообщение об ошибкe.

Закрыть любое подключение можно путем переопределения его переменной в null. Для хранения функций, которые будут использоваться для получения данных из БД, создали файл «api.php».

Чтобы осуществить запрос к базе данных, нам надо использовать функцию метод query, который принимает один параметр: строку запроса на языке SQL. Например, получение всех данных из таблицы «teacher» в котором содержится личная информация преподавателя:

Листинг 16 – Просмотр таблицы «teacher».

$sql = "select * fromteacher";

$stmt = $dbh->query($sql);

Конец листинга16.

Метод query() возвращает объект $result, который содержит результат запроса. В случае неудачи данный объект содержит значение false.

Для добавления данных создадим php-скриптыс формами для ввода данных о студентах и так далее. Код создания формы в приложении Е.

Теперь создадим обработчик формы

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

Присваиваем переменным данные, полученные из формы, и проверяем все ли данные были введены. Если нет, то выдает соответствующее сообщение.

Листинг 17 - Получение данных из формы.

if (!empty($_POST['name']) && !empty($_POST['id']) !='')

{

$name=$_POST['name'];

$id=$_POST['id'];

Конец листинга 17.

Формируем запрос добавления данных в базу, используя переменные, в которых хранятся необходимые данные. Используем функцию, которая добавляет данные в таблицу «faculty».

Листинг 18 – Формирование запроса.

$sql ="select insert_faculty('".$id."','".$name."')";

Конец листинга 18.

Отправляем запрос и проверяем успешность его выполнения. Если запрос выполнен успешно, то в переменной $res хранится ответ сервера, т.е. результат запроса.

Листинг 19 - Отправка запроса.

$res = $db->query($sql);

Конец листинга 19.

Выводим соответствующее сообщение, что данные добавлены в базу. Листинг 20 - Сообщение о результатах добавления.

if ($res) {

echo "


Факультет ".$name. " успешно добавлен
"; }

Конец листинга 20.

Т.к. данные добавлены, выведем их для просмотра. Для этого формируем новый запрос.

Вызываем функцию getAllFacSpec, которая находится в файле «api.php»., в которую из html – страницы будет передаваться всего один параметр - $db - «посредник», который является объектом PDO. Результатом выполнения данной функции будет массив. Программный код этой функции находится в приложении Ж.

Переменная $class хранит данные, которые мы собираемся вывести, чтобы просмотреть представление после добавления новых данных. Выводить данные будем с помощью цикла foreach.

Каждая строка результата запроса будет записываться в переменную $clas и будет исполняться функция вывода данных из таблицы на html страницу (листинг 21).

Листинг 21 – Запрос вывода данных с помощью массива и цикла foreach.


$class= getAllFacSpec($db);

?>



























Факультет Специальность ID специальности


Конец листинга 21.

Так же на данной web-странице будет реализована сортировка списка факультетов по имени в алфавитном порядке. Ниже приведу участок кода, отвечающий за фильтрацию записей:


Листинг 22- Сортировка данных.

$sql="SELECT * FROM facultyspecialty ASC faculty_name";

Конец листинга 22.

Вывод данных будет происходить аналогично.

Для изменения данных создаем на web-странице кнопку «Изменить», при нажатии на которую будет осуществлено редактирование таблицы в базе данных. После изменения можно будет увидеть на странице просмотра, например, учителей. Ниже приведу участок кода, отвечающий за изменение данных в таблице учителей.

Листинг 23 - Изменение таблицы учителей.

$sql = "UPDATEteacher

SET category = :category

WHERE id_teacher= :id_teacher";

Конец листинга 23.

Для других таблиц процесс изменения данных будет аналогичен.

Для удаления данных html-страница будет отличаться от html-страницы изменения названием кнопки «Удалить» и, соответственно, запросом в обработчике. Ниже приведу пример участка кода, отвечающего за удаление учителей из базы данных.

Листинг 24 - Запрос на удаление учителей из базы данных.

$sql = "DELETE FROM teacher WHERE id_teacher= :id_teacher";

Конец листинга 24.

Полученный после изменения или удаления данных результат будем просматривать на страницах просмотра. Запрос на вывод информации о учителях можно увидеть в приложении (приложение И).

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

Листинг 25 – Поиск информации по названию.

$sql="SELECT * from subject where subject_name like '%".$idsub."%'";

Конец листинга 25.

Выводить найденную информацию будет с помощью цикла foreach. Листинг данного участка кода приведу в приложении (приложение К).

Так же на другой странице будет реализовано удаление определенных данных с помощью функции clear_docent, написанной на языке sql. Данный запрос удаляет из таблицы преподавателя, занимающего должность ректора. Ниже приведу участок кода, отвечающий за выполнение этого запроса:

Листинг 26 - Удаление данных с помощью функции.

$sql= SELECT clear_docent()";

$res = $db->query($sql);

Конец листинга 26.

Выводим соответствующее сообщение, что нужные данные удалены:

Листинг 27 – Сообщение о результате удаления.


echo "Ректорудален";

Конец листинга 27.

Создание Win-приложения. Для проектирования и разработки приложений баз данных на языке С# под Windows на платформе .NET была использована среда разработки Visualstudio. В данной среде разработки содержатся необходимые компоненты, для подключения и выборки данных из базы данных.

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

Для реализации доступа к базе данных используется ODBC драйвер. ODBC — это программный интерфейс (API) доступа к базам данных, разработанный компанией Microsoft. Всю информацию об источниках данных и ODBC драйверах Windows хранит в реестре. Обращение к БД происходит по имени зарегистрированного источника данных DSN (Data Source Name).

DataGridView – это компонент для отображения данных. Это таблица (с перечнем строк и столбцов). С помощью этого контроля можно показывать любые табличные данные из баз данных.

Например, с помощью данного компонента была реализована функция для удаления студента из списка. Листинг 28показывает фрагмент кода с функцией.

Когда пользователь решает удалить студента из списка, вводит данные для удаления и нажимает по кнопке «Удалить», данная функция отправляет команду с удалением выбранного клиента на сервер.

Листинг 28 –Функция удаления записи.

private void button3_Click(object sender, EventArgs e)

{

System.Data.Odbc.OdbcConnection sqlConnection1 = studentTableAdapter.Connection;

System.Data.Odbc.OdbcCommandcmd = new System.Data.Odbc.OdbcCommand();

cmd.CommandText = "DELETE student where \"surname_student\" = '" + textBox1.Text + "' and \"name_student\" = '" + textBox2.Text + "'";

cmd.Connection = sqlConnection1;

sqlConnection1.Open();

cmd.ExecuteReader();

sqlConnection1.Close();

studentTableAdapter.Fill(dataSet33.student);

textBox1.Text = "";

textBox2.Text = "";

}

Конец листинга 28.

Приложение имеет три основные вкладки, в которых присутствуют таблицы для просмотра данных, и кнопки для добавления, изменения и удаления данных. (рис. 15).



Рисунок 15. Модульная схема приложения

Пример одной из форм можно видеть на рисунке 16. Здесь
реализованы просмотр, добавление, удаление и изменение записей.