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

5сем / lab7_database

.docx
Скачиваний:
1
Добавлен:
27.08.2024
Размер:
155.11 Кб
Скачать

ГУАП

КАФЕДРА № 41

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

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

Ассистент

Б.К.Акопян

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

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

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

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

ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ПОЛЬЗОВАТЕЛЬСКИХ ФУНКЦИЙ

по курсу: БАЗЫ ДАННЫХ

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

СТУДЕНТ ГР. №

4016

М.О. Жовтяк

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

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

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

  1. Цель работы

Программная реализация пользовательских функций на сервере.

  1. Вариант работы

Вариант 14.

Библиотека в Хоббитонии есть библиотека «Башня Саурумана». Вы являетесь ее руководителем. Библиотека зарабатывает деньги, выдавая напрокат некоторые книги, имеющиеся в небольшом количестве экземпляров. Одной из задач разрабатываемой ИС является отслеживание финансовых показателей работы библиотеки. У каждой книги, выдаваемой в прокат, есть название, автор, жанр. В зависимости от ценности книги Вы определили для каждой из них залоговую стоимость (сумма, вносимая клиентом при взятии книги напрокат) и стоимость проката (сумма, которую клиент платит при возврате книги, получая назад залог). В библиотеку обращаются читатели. Все читатели регистрируются в картотеке, указывая свои персональные данные. Каждый читатель может обращаться в библиотеку несколько раз. Все обращения читателей фиксируются, при этом по каждому факту выдачи книги запоминаются дата выдачи и ожидаемая дата возврата. Стоимость проката книги должна зависеть не только от самой книги, но и от срока ее проката. Кроме того, необходимо добавить систему штрафов за вред, нанесенный книге и систему скидок для некоторых категорий читателей. Произведения авторов, составляющие библиотечный фонд, также можно разделить на различные категории, характеризующиеся собственным набором атрибутов: учебники, повести, романы, статьи, стихи, диссертации, рефераты, тезисы докладов и т.д. Сотрудники библиотеки, работающие в различных залах различных библиотек, ведут учет читателей, а также учет размещения и выдачи литературы.

  1. Ход работы

На рисунке 1 представлена схема данных БД согласно индивидуальному варианту.

Рисунок 1 – Схема данных БД

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

Таблица 1

Входные параметры функции

Название

Тип данных

Комментарий

indexx

INT

Индекс проверяемого пользователя

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

Результаты выполнения функции представлены на рисунках 2-4.

Рисунок 2 – Пример плохого читателя

Рисунок 3 – Пример хорошего читателя

Рисунок 4 – Журнал истории выполнения функции

Создается 2-я функция с циклом в MySQL c определенной задачей. Задача заключается в определении процента успешных продаж. Входные параметры представлены в таблице 2.

Таблица 2

Входные параметры функции

Название

Тип данных

Комментарий

summa

INT

Порог успешной продажи

Функция принимает входной параметр порога успешной продажи. Через цикл итерируются все полученные суммы обращений, где определяется, сколько было выполнено успешных продаж. На выходе показывается процент успешных продаж от всех продаж.

Результаты выполнения функции представлены на рисунках 5-7.

Рисунок 5 – Процент продаж при высоком пороге

Рисунок 6 – Процент продаж при низком пороге

Рисунок 7 – Журнал истории выполнения функции

  1. Вывод

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

В ходе работы проблем не возникло.

Приложение А

DROP FUNCTION IF EXISTS checking;

DELIMITER //

CREATE FUNCTION checking(indexx int)

returns VARCHAR(150) DETERMINISTIC

begin

SET @message = 'Всего пропусков ';

SET @count = (SELECT SUM(datediff(return_day, return_day_expected)) FROM my_library.appeals WHERE id_reader = indexx);

case

when @count > 1 then set @message = (select concat(@message , @count, ', внесен в черный список'));

when @count < 2 then set @message = (select concat(@message , @count, ', книгу выдать можно'));

end case;

return @message;

end; //

select checking(6);

Приложение Б

DROP FUNCTION IF EXISTS sales;

DELIMITER //

CREATE FUNCTION sales(summa int)

returns VARCHAR(150) DETERMINISTIC

begin

SET @message = 'Процент успешных продаж ';

SET @cikl = (SELECT MAX(id_appeal) FROM my_library.appeals);

SET @count = 0;

WHILE @cikl > 0 DO

SET @total = (SELECT (total) from my_library.appeals where id_appeal = @cikl);

CASE

WHEN @total > summa THEN set @count = @count + 1;

else begin end;

END case;

set @cikl = @cikl -1;

END WHILE;

set @procent = ROUND(@count/(SELECT MAX(id_appeal) FROM my_library.appeals)*100);

SET @message = (select concat(@message , @procent, '%'));

return @message;

end; // select sales(150);

Список использованных источников

  1. Учебно-методическое пособие «Разработка и администрирование базы данных с открытым исходным кодом» - Аграновский А.В., В.В. Боженко, Е.Л. Турнецкая, 2022 г.

Соседние файлы в папке 5сем