Файл: Курсовая работа по дисциплине Базы данных студента очной формы обучения.docx
Добавлен: 11.12.2023
Просмотров: 134
Скачиваний: 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. Здесь
реализованы просмотр, добавление, удаление и изменение записей.