Смекни!
smekni.com

Разработка автоматизированной системы "Библиотека" (стр. 3 из 4)

Название столбца Тип Ключ
1 Код_читателя числовой
2 Код_экземпляра числовой
3 Дата_оплаты дата/время
4 Заплачено числовой
5 Код_ведомости счетчик q

Выдача

Название столбца Тип Ключ
1 Номер_билета числовой q
2 Код_экземпляра числовой q
3 Дата_выдачи дата/время
4 Когда_вернул дата/время
5 Пеня числовой
6 Заплатил_пеню? логический

3.3 Связи между информационными объектами

4. Проектирование алгоритмов обработки данных

Выбор книги Книга на руках Сдача книги
Регистрация в библиотеке (если еще не зарегистрирован) Поиск книги в фонде Выбор найденной книги Занесение информации о взятой книги в карточку читателя Занесение в список информации, что книга на руках Подсчет общей пени каждого читателя Снятие книги с рук и отражение этого в списках Подсчет пени по данной книге (если такая имеется) Оплата пени
Действия в течение года
Формирование списка тех книг, которые на руках Добавление новых книг Списание старых книг Регистрация новых читателей

5. Разработка запросов для корректировки и выборки данных

5.1 Запросы на выборку данных

Пеня – запрос для расчета задолженности читателей по каждой книге.

а) Данные из следующих таблиц должны быть включены в запрос: Авторы, Заглавия, Издание, Экземпляр, Вид_издания, Выдача, читатели.

б) структура связей между таблицами:

((Заглавия INNER JOIN (Вид_издания INNER JOIN (Авторы INNER JOIN Издание ON Авторы.Код_автора = Издание.Код_автора) ON Вид_издания.Код_вида_издания = Издание.Код_вида_издания) ON Заглавия.Код_заглавия = Издание.Заглавие) INNER JOIN Экземпляр ON Издание.Код_издания = Экземпляр.Код_издания) INNER JOIN (Читатели INNER JOIN Выдача ON Читатели.Номер_билета = Выдача.Номер_билета) ON Экземпляр.Код_экземпляра = Выдача.Код_экземпляра

в) поля, включаемы в запрос:

SELECT Читатели.Фамилия, Читатели.Имя, Читатели.Отчество, Авторы.Автор, Заглавия.Заглавие, Выдача.Дата_выдачи, Выдача!Дата_выдачи+ Вид_издания!На_какой_срок AS До_какого_числа, Выдача.Когда_вернул, (Выдача!Когда_вернул-(Выдача!Дата_выдачи +Вид_издания!На_какой_срок)) *Вид_издания!Начисляемая_пеня AS [Был долг], Выдача.Пеня AS Оплатить

г) групповая операция:

Читатели.Фамилия, Читатели.Имя, Читатели.Отчество, Авторы.Автор, Заглавия.Заглавие, Выдача.Дата_выдачи, Выдача!Дата_выдачи+Вид_издания!На_какой_срок, Выдача.Когда_вернул, (Выдача!Когда_вернул-(Выдача!Дата_выдачи +Вид_издания!На_какой_срок))*Вид_издания!Начисляемая_пеня, Выдача.Пеня

д) условие отбора:

((([Выдача]![Пеня])<>0) AND ((([Выдача]![Когда_вернул]-([Выдача]! [Дата_выдачи]+[Вид_издания]![На_какой_срок])) *[Вид_издания]! [Начисляемая_пеня])>0)) ORDER BY Читатели.Фамилия, Читатели.Имя

10 новых книг – перечень 10 самых новых книг.

10 самых постоянных читателей – перечень 10 тех читателей, которые брали наибольшее количество книг.

На_поиск_книги – запрос, необходимый для поиска (отбора) книги по необходимым параметрам.

5.2 Корректировка данных средствами запросов

Подсчет пени: обновление данных о сумме задолженности, обновление данных о читателях, которые оплатили свою задолженность.

Весь процесс можно описать в два шага.

Шаг 1: Выполнение запроса Подсчет пени (1)


Таблица Выдача

Номер_билета

Код_экземпляра

Дата_выдачи

Когда_вернул

Пеня

Заплатил_пеню?

Данный запрос, описанный в SQL:

UPDATE ((Вид_издания INNER JOIN Издание ON Вид_издания.Код_вида_издания = Издание.Код_вида_издания) INNER JOIN Экземпляр ON Издание.Код_издания = Экземпляр.Код_издания) INNER JOIN Выдача ON Экземпляр.Код_экземпляра = Выдача.Код_экземпляра SET Выдача.Пеня = (Выдача!Когда_вернул-(Выдача!Дата_выдачи+Вид_издания!На_какой_срок)) *Вид_издания! Начисляемая_пеня WHERE ((([Выдача]![Когда_вернул]-([Выдача]![Дата_выдачи]+ [Вид_издания]! [На_какой_срок]))>0) AND (([Выдача]![Пеня])=0) AND (([Выдача]![Заплатил_пеню?])=False));

Шаг 2: Выполнение запроса Аннулировать пеню (2)

Таблица Выдача
Номер_билета Код_экземпляра Дата_выдачи Когда_вернул
Пеня Заплатил_пеню?

Данный запрос, описанный в SQL:

UPDATE ((Вид_издания INNER JOIN Издание ON Вид_издания.Код_вида_издания = Издание.Код_вида_издания) INNER JOIN Экземпляр ON Издание.Код_издания = Экземпляр.Код_издания) INNER JOIN Выдача ON Экземпляр.Код_экземпляра = Выдача.Код_экземпляра SET Выдача.[Заплатил_пеню?] = True WHERE ((([Выдача]![Когда_вернул]) Is Not Null) AND (([Выдача]![Пеня])=0));

Вернуть_книгу – запрос на обновление: если читатель возвращает книгу, то данный запрос изменяет везде данные, что книга имеется в библиотеке в данный момент (не на руках).

На_руках_ли_книга? – запрос на обновление: проверяется, есть ли книга в фонде библиотеке в данный момент или она на руках.

Создать_таблицу – запрос на создание таблицы: создается временная таблица Заплатить с последним заплатившим пеню.

Оплата_пени – запрос на обновление: сведения из таблицы Заплатить заносятся в соответствующие списки об оплате пени.

6. Реализация пользовательского интерфейса средствами форм

1. Разберем подробно разработку Главной формы и ее вкладки Просроченные книги. Эта вкладка предназначена для просмотра информации о тех книгах, которые читатель просрочил и не заплатил пеню.

1.1) Подсхема данных:

1.2) Наилучший тип формы для построения:

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

1.3) Источники записей формы:

Для Главной формы источником записей являются следующие таблицы:

Улицы, Адрес и Читатели.

Для вложенной формы Просроченные_подчиненная форма форма источником записей являются следующие таблицы:

Заглавия, Вид_издания, Авторы, Издание, Экземпляр, Читатели и Выдача.

1.4) Связанные поля форм:

Вложенная форма Просроченные_подчиненная форма и Главная форма:

Подчиненные поля: Номер_билета.

Основные поля: Номер_билета.

1.5) Поля базы данных, которые отражены в форме:

Вложенная форма Просроченные_подчиненная форма:

Авт_знак

Автор

Заглавие

Год_издания

Вид_издания

Пеня

Главная форма:

Фамилия

1.6) Форма


7. Разработка отчетов

Фонд_библиотеки – отчет, в котором содержится информация обо всех книгах, рассортированная по авторам.

Подсхема данных:

1.2) Тип отчета: составной.

1.3) Источник записей: Издательства, Заглавия, Авторы, Издание.

1.4) Уровни группировки:

Поле/выражение Заголовок группы Примечание группы
Автор Да Нет
Код_автора Да Нет

1.5) Поля:

Заголовок группы 'Автор'

Автор

Заголовок группы 'Код_автора'

Авт_знак

Область данных

Библ_шифр

Заглавие

Издательство

Место_издания

Год_издания

1.6) Сам отчет:

10 читателей – отчет, в котором представлена диаграмма с десятью читателями, которые брали в библиотеке наибольшее количество книг.

Читатели – отчет, в котором содержится информация обо всех читателях библиотеки и книгах, которые они брали: ФИО читателя, книга, которую он брал, дата выдачи).


8. Реализация алгоритмов обработки информации программными средствами

8.1 Реализация алгоритмов средствами макросов

Главная_форма. Оплата – макрос позволяет читателю заплатить пеню и не переплатить.