Реферат: Разработка автоматизированной системы Библиотека - Refy.ru - Сайт рефератов, докладов, сочинений, дипломных и курсовых работ

Разработка автоматизированной системы Библиотека

Рефераты по информатике » Разработка автоматизированной системы Библиотека

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Дальневосточная государственная академия экономики и управления

Кафедра математики и моделирования


Курсовая работа

по базам данных и базы знаний

Разработка автоматизированной системы “Библиотека”


Студент

Нестеренко М.В.

131-ПИ

Руководитель

Озерова Г.П.


Владивосток, 2002


Оглавление




1. Введение


Имеется некоторая библиотека, в которой хранятся книги. Они различаются по авторам, по жанру, году издания, издательству, которое их выпустило, по месту издания. Каждый жанр книги имеет свою продолжительность держания на руках и пеню, начисляемую в случае не возврата книги вовремя.

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

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


2. Функциональные возможности системы


Система “Библиотека” предоставляет следующие возможности для пользователей:

Занесение новых книг в фонд библиотеки

Просмотр информации о каждом зарегистрированном читателе

Просмотр всех книг, которые читатель брал за все время пользования библиотекой

Поиск необходимой читателю книги по нескольким параметрам

Просмотр книг, которые находятся на руках у читателя, а также тех, за которые он не заплатил пеню

Оплата пени за ту книгу, сдачу которой читатель просрочил

Просмотреть информацию обо всех читателях, которые зарегистрированы в библиотеке (ФИО, адрес, телефон)



3. Построение информационно-логической модели базы данных


3.1 Выделение информационных объектов


а) документы и их реквизиты, подлежащие хранению в базе данных

Документ Наименование реквизита Идентификатор Функциональная зависимость
Список Код_автора Код_автора
книг Автор_книги Автор

Авт_знак Авт_знак

Код_заглавия Код_заглавия

Заглавие_книги Заглавие

Код_вида_издания Код_вида_издания

Вид_издания Вид_издания

На_какой_срок На_какой_срок

Начисляемая_пеня Начисляемая_пеня

Код_издательства Код_издательства

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

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

Код_издания

Библ_шифр

Год_издания

Аннотация

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

На_руках?

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

Код_издания Библ_шифр

Год_издания

Аннотация

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

На_руках?

Список Код_улицы Код_улицы
читателей Улица_проживания Улица

Дом Дом

Квартира Квартира

Код_адреса Код_адреса

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

Фамилия_читателя Фамилия

Имя Имя

Отчество Отчество

Телефон Телефон

Код_ведомости Код_ведомости

Дата_оплаты Дата_оплаты

Заплачено Заплачено

Дата_выдачи Дата_выдачи

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

Пеня Пеня

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

б) зависимые реквизиты

Описательные реквизиты Ключевые реквизиты
Код_автора Код_издания
Автор Код_автора
Авт_знак Код_автора
Код_заглавия Код_издания
Заглавие Код_заглавия
Код_вида_издания Код_издания
Вид_издания Код_вида_издания
На_какой_срок Код_вида_издания
Исчисляемая_пеня Код_вида_издания
Код_издательства Код_издания
Издательство Код_издательства
Место_издания Код_издательства
Код_издания Код_экземпляра
Библ_шифр Код_издания
Год_издания Код_издания
Аннотация Код_издания
Код_экземпляра Номер_билета
На_руках? Код_экземпляра
Код_улицы Код_адреса
Улица Код_улицы
Дом Код_адреса
Квартира Код_адреса
Код_адреса Номер_билета
Номер_билета Код_ведомости
Фамилия Номер_билета
Имя Номер_билета
Отчество Номер_билета
Телефон Номер_билета
Код_ведомости -------------------
Дата_оплаты Код_ведомости
Заплачено Код_ведомости
Дата_выдачи Номер_билета
Когда_вернул Номер_билета
Пеня Номер_билета
Заплатил_пеню? Номер_билета

в) группировка реквизитов

Реквизиты Ключ Имя инф. объекта Описание
Автор
Авторы
Авт_знак

Код_автора
1
Заглавие
Заглавия
Код_заглавия

1
Вид_издания
Вид_издания

На_какой_срок

Начисляемая_пеня

Код_вида_издания



1


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

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

Код_издательства



1

Код_вида_издания
Издание
Код_автора

Заглавие

Библ_шифр

Код_издательства

Год_издания

Аннотация

Код_издания



1


Код_издания
Экземпляр
На_руках?

Код_экземпляра
1
Улица
Улица
Код_улицы
1
Улица
Адрес
Дом

Квартира

Код_адреса
1
Фамилия
Читатели
Имя

Отчество

Код_адреса

Телефон



Номер_билета
1
Номер_билета
Выдача

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

Дата_выдачи

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

Пеня

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



Код_читателя

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

Дата_оплаты

Заплачено

Код_ведомости


Ведомость




3.2 Структура информационных объектов базы данных


Авторы

Название столбца Тип Ключ
1 Автор текстовый
2 Авт_знак текстовый
3 Код_автора счетчик

Заглавия

Название столбца Тип Ключ
1 Заглавие текстовый
2 Код_заглавия счетчик

Вид_издания

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

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

Название столбца Тип Ключ
1 Издательство текстовый
2 Место_издания текстовый
3 Код_издательства счетчик

Издание

Название столбца Тип Ключ
1 Код_вида_издательства числовой
2 Код_автора числовой
3 Заглавие числовой
4 Библ_шифр текстовый
5 Код_издательства числовой
6 Год_издания числовой
7 Аннотация Поле MEMO
8 Код_издания счетчик

Экземпляр

Название столбца Тип Ключ
1 Код_издания числовой
2 На_руках? логический
3 Код_экземпляра счетчик

Улицы

Название столбца Тип Ключ
1 Улица текстовый
2 Код_улицы счетчик

Адрес

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

Читатели

Название столбца Тип Ключ
1 Фамилия текстовый
2 Имя текстовый
3 Отчество текстовый
4 Код_адреса числовой
5 Телефон текстовый
6 Номер_билета счетчик

Ведомость

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

Выдача

Название столбца Тип Ключ
1 Номер_билета числовой
2 Код_экземпляра числовой
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 Реализация алгоритмов средствами макросов


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

а) Сообщение

Сообщение: Вы ввели слишком большую сумму.

Сигнал: Да

Тип: Информационное

Заголовок: Слишком большая сумма

Макрокоманда выдает сообщение, если сумма, заплаченная пользователем, больше той, которую следует заплатить.

б) КЭлементуУправления

Имя элемента: [ОплатитьДолг]

Происходит переход ко вкладке ОплатитьДолг.

в) КЭлементуУправления

Имя элемента: [Заплачено]

Происходит переход к элементу Заплачено вкладки ОплатитьДолг.

г) ОткрытьЗапрос

Имя запроса: Создать_таблицу

Режим: Таблица

Режим данных: Изменение

Макрокоманда открывает запрос на создание таблицы о сумме, которую заплатил читатель.

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

д) ОткрытьЗапрос

Имя запроса: Создать_таблицу

Режим: Таблица

Режим данных: Изменение

Макрокоманда открывает запрос на создание таблицы о сумме, которую заплатил читатель.

е) ОткрытьЗапрос

Имя запроса: Оплата_пени

Режим: Таблица

Режим данных: Изменение

Макрокоманда открывает запрос на обновление той суммы, которую внес читатель и которую ему осталось оплатить.



Главная_форма.Выбор_читателя – реагирование системы на выбор пользователем определенного читателя.

Главная_форма.Пеня, Главная_форма.Пеня_присвоение – переход на вкладку с оплатой пени и занесение данных в нужные ячейки.

Главная_форма.Переход – вспомогательный макрос для перехода на последнюю запись при оплате пени пользователем.

Главная_форма.Возврат_книги – возвращение читателем книги, снятие ее с рук, подсчет пени для читателя и убирание тех, кто заплатил.

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

Главная_форма.Закрытие_формы – закрытие формы Главная форма и применение запроса Аннулировать_долг(2), что позволяет изменить в таблицах долг читателя, если он оплатил его.

Адреса_клиентов.Кнопки – макрос по выбору читателей по заданной первой букве фамилии.

Сумма_оплаченная – переход к выбранному читателю из возможных

Поиск_книги.Фильтр – применение фильтра на основании заданных параметров.

Поиск_книги.Ошибка – выдается сообщение, если читатель пытается взять книгу, которая на руках у другого человека.

Поиск_книги.Взять – вспомогательный макрос для поиска книги.

Поиск_книги.Взял – закрывает форму Поиск_книги и записывает выбранную книгу за читателем.

Поиск_книги.Error – выдает сообщение, если при поиске книги по критериям читатель указал более или менее пяти критериев.


8.2 Реализация алгоритмов средствами Visual Basic


Следующий алгоритм предназначен для перехода на форму Адреса_клиентов после нажатия кнопки Просмотр всех читателей на главной форме:

Private Sub ВсеЧитатели_Click()

On Error GoTo Err_ВсеЧитатели_Click

Dim stDocName As String

Dim stLinkCriteria As String

stDocName = ChrW(1040) & ChrW(1076) & ChrW(1088) & ChrW(1077) & ChrW(1089) & ChrW(1072) & ChrW(95) & ChrW(1082) & ChrW(1083) & ChrW(1080) & ChrW(1077) & ChrW(1085) & ChrW(1090) & ChrW(1086) & ChrW(1074)

DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_ВсеЧитатели_Click:

Exit Sub

Err_ВсеЧитатели_Click:

MsgBox Err.Description

Resume Exit_ВсеЧитатели_Click

End Sub

Кроме того, в автоматизированной системе “Библиотека” присутствуют и другие события, написанные средствами Visual Basic:

Событие, позволяющее подсчитать пеню читателя.

Событие, предназначенное для открытия формы Поиск_книги после нажатия кнопки Поиск_книги.

Событие, которое происходит после выбора читателем пяти критериев при поиске книги. Оно позволяет вывести на экран только те критерии, которые выбрал пользователь и после производить действия с ними.

Событие, которое происходит при нажатии читателем при выборе понравившейся ему книги.

Событие, которое скрывает все поля для ввода критериев при запуске формы Поиск_книги или повторном поиске книги.



9. Разработка приложения пользователя


Главной формой базы данных “Библиотека” является Главная форма, содержащая в себе 6 вкладок.

Вкладка Сведения о книгах.



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

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



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

Вкладка Какие книги на руках отвечает за информацию о тех книгах, которые находятся на руках у читателя (если таковые имеются).

Вкладка Сведения о читателе содержит информацию о выбранном читателе. При нажатии кнопки Просмотр всех читателей открывается форма Адреса_клиентов, в которой представлена информация обо всех читателях с их адресами и телефонами.



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



Приложения


1. Формы


2. Отчеты