|
||||||||||||
|
||||||||||||
|
|||||||||
МЕНЮ
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Разработка автоматизированной системы "Библиотека"Разработка автоматизированной системы "Библиотека"МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Дальневосточная государственная академия экономики и управления Кафедра математики и моделирования Курсовая работа по базам данных и базы знаний Разработка автоматизированной системы “Библиотека” Студент Нестеренко М.В. 131-ПИ Руководитель Озерова Г.П. Владивосток, 2002 Оглавление 1. Введение 2. Функциональные возможности системы 3. Построение информационно-логической модели базы данных 3.1. Выделение информационных объектов 3.2. Структура информационных объектов базы данных 3.3. Связи между информационными объектами 4. Проектирование алгоритмов обработки данных 5. Разработка запросов для корректировки и выборки данных 5.1. Запросы на выборку данных 5.2 Корректировка данных средствами запросов. 6. Реализация пользовательского интерфейса средствами форм 7. Разработка отчетов 8. Реализация алгоритмов обработки информации программными средствами 8.1. Реализация алгоритмов средствами макросов 8.2. Реализация алгоритмов средствами Visual Basic 9. Разработка приложения пользователя Приложения 1. Введение Имеется некоторая библиотека, в которой хранятся книги. Они различаются по авторам, по жанру, году издания, издательству, которое их выпустило, по месту издания. Каждый жанр книги имеет свою продолжительность держания на руках и пеню, начисляемую в случае не возврата книги вовремя. В библиотеке записано некоторое количество читателей, данные о которых хранятся в специальной ведомости. Каждый читатель имеет возможность взять любую книгу, которая в данный момент находится в библиотеке. После того, как человек взял книгу на руки, считается, что никакому другому читателю она не доступна до тех пор, пока взявший ее не вернет назад. Дата взятия книги заносится в ведомость и когда читатель возвращает книгу, учитывается, вернул ли он ее вовремя или же просрочил. В этом случае ему за каждый день просрочки начисляется пеня в установленном размере. 2. Функциональные возможности системы Система “Библиотека” предоставляет следующие возможности для пользователей: Занесение новых книг в фонд библиотеки Просмотр информации о каждом зарегистрированном читателе Просмотр всех книг, которые читатель брал за все время пользования библиотекой Поиск необходимой читателю книги по нескольким параметрам Просмотр книг, которые находятся на руках у читателя, а также тех, за которые он не заплатил пеню Оплата пени за ту книгу, сдачу которой читатель просрочил Просмотреть информацию обо всех читателях, которые зарегистрированы в библиотеке (ФИО, адрес, телефон) 3. Построение информационно-логической модели базы данных 3.1 Выделение информационных объектов а) документы и их реквизиты, подлежащие хранению в базе данных
б) зависимые реквизиты
в) группировка реквизитов
3.2 Структура информационных объектов базы данных Авторы
Заглавия
Вид_издания
Издательства
Издание
Экземпляр
Улицы
Адрес
Читатели
Ведомость
Выдача
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. Отчеты |
РЕКЛАМА
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА | ||
© 2010 |