Автор работы: Пользователь скрыл имя, 25 Января 2014 в 13:25, курсовая работа
Целью данной работы является разработка системы, автоматизирующей ведение базы данных библиотеки. Данная система упрощает процесс учета книг, связанный с обработкой больших объемов информации, а также позволяет читателям осуществлять в интерактивном режиме поиск и выбор интересующих книг.
Для достижения поставленной цели предполагается составление технического задания в соответствии с требованиями предметной области, разработка инфологической и физической модели базы данных на платформе Oracle, написание информационной системы на язык программирования C#.
Введение 5
1 Техническое задание 6
1.1 Описание предметной области 6
1.2 Модели вариантов использования 6
1.3 Требования к информационному и программному обеспечению 7
2 Технический проект 8
2.1 Модели локальных представлений 8
2.2 Инфологическая модель предметной области 11
2.3 Физическая модель базы данных 14
2.4 Основные запросы к базе данных 17
2.5 Хранимые процедуры 21
2.6 Архитектура информационной системы 24
3 Рабочий проект 25
3.1 SQL-скрипт создания базы данных 25
3.2 SQL-скрипт хранимых процедур 25
3.3 Текст программы 25
3.4 Руководство пользователя 25
Заключение 32
Список источников 32
Окончание таблицы 3
Название |
Код |
Тип |
Длина |
Первич. |
Внеш. |
Обяз. |
Выдача (Issuance) | ||||||
Номер выдачи |
iNumber |
INTEGER |
X |
X | ||
Номер экземпляра |
cNumber |
INTEGER |
X |
X | ||
Номер читательского билета |
rNumber |
NUMBER(6) |
6 |
X |
X | |
Дата выдачи |
iIssuance |
DATE |
X | |||
Дата ожидаемого возврата |
iExpReturn |
DATE |
X | |||
Дата фактического возврата |
iFactReturn |
DATE |
||||
Выбор книги читателем |
ICHOICE |
SMALLINT |
||||
Читатель | ||||||
Номер читательского билета |
rNumber |
NUMBER(6) |
6 |
X |
X | |
ФИО |
rFullName |
VARCHAR2(100) |
100 |
X | ||
Адрес |
rAddress |
VARCHAR2(200) |
200 |
X | ||
Телефон |
rPhone |
NUMBER(11) |
11 |
X | ||
Дата рождения |
rDate |
DATE |
X | |||
Замена (Replacement) | ||||||
Код замены |
repCode |
INTEGER |
X |
X | ||
Дата замены |
repDate |
DATE |
X | |||
Списание (Writeoff) | ||||||
Код списания |
woCode |
INTEGER |
X |
X | ||
Дата списания |
woDate |
DATE |
X |
2.4.1.1 Выборка недобросовестных читателей
Из естественного соединения таблиц Читатель и Выдача выбрать ФИО, адрес, телефон читателей для которых дата фактического возврата больше даты ожидаемого возврата, либо имеет null-значение; подсчитать для каждого читателя количество выдач, удовлетворяющих данному условию (количество опозданий/долгов). Отсортировать по убыванию количества опозданий/долгов.
2.4.1.2 Выборка популярных книг за период
Выбрать из естественного соединения таблиц Книга, Экземпляр книги и Выдача название книги и сумму выдач для всех экземпляров данной книги, у которых дата выдачи лежит в заданном интервале.
2.4.1.3 Выборка цены утерянных книг
Из естественного соединения таблиц Книга, Экземпляр книги, Выдача и Читатель выбрать название книги, номер экземпляра, его цену и ФИО читателя, если флаг Утерян равен 1 и код акта замены не указан.
2.4.1.4 Выборка читателей
Из таблицы Читатель выбрать ФИО, адрес, телефон, дату рождения читателя. Если количество выдач читателю в которых ICHOICE не равен null
2.4.1.5 Выборка книг, находящихся на руках у читателя
Из естественного соединения таблиц Книга, Экземпляр книги, Выдача и Читатель выбрать ISBN и название книги для книг, у которых не указана дата фактического возврата и номер читательского соответствует заданному.
2.4.1.6 Выборка свободных экземпляров книги
Выбрать из естественного соединения таблиц Книга, Экземпляр книги, Место расположения и Выдача отдел, стеллаж, полку и сектор для экземпляров книги, ISBN которой соответствует заданному, дата фактического возврата не равна null, а дата выдачи максимальна среди выдач этого экземпляра.
2.4.2.1 Выборка недобросовестных читателей:
где Ч – отношение Читатель ( Номер читательского билета, ФИО, Адрес, Телефон, Дата рождения); B – отношение Выдача (Номер выдачи, Номер экземпляра, Номер читательского билета, Дата выдачи, Дата ожидаемого возврата, Дата фактического возврата); dateBegin и dateEnd – введенные начальная и конечная даты соответственно
2.4.2.2 Выборка стоимости утерянных книг:
где К – отношение Книга(ISBN, Название книги, Автор(ы), Место издания, Издательство, Год издания, Количество страниц, Количество экземпляров); Э – отношение Экземпляр книги (Номер экземпляра, ISBN, Код списания, Код замены, Код места, Стоимость экземпляра, Дата поставки, Утерян).
2.4.3.1 Выборка книг, находящихся на руках:
где К
– отношение Книга(ISBN, Название книги,
Автор(ы), Место издания, Издательство,
Год издания, Количество страниц, Количество
экземпляров),
Э – отношение Экземпляр книги (Номер
экземпляра, ISBN, Код списания, Код замены,
Код места, Стоимость экземпляра, Дата
поставки, Утерян),
2.4.3.2 Выборка стоимости утерянных книг:
где Ч – отношение Читатель ( Номер читательского билета, ФИО, Адрес, Телефон, Дата рождения); B – отношение Выдача (Номер выдачи, Номер экземпляра, Номер читательского билета, Дата выдачи, Дата ожидаемого возврата, Дата фактического возврата); К – отношение Книга(ISBN, Название книги, Автор(ы), Место издания, Издательство, Год издания, Количество страниц, Количество экземпляров); Э – отношение Экземпляр книги (Номер экземпляра, ISBN, Код списания, Код замены, Код места, Стоимость экземпляра, Дата поставки, Утерян).
2.4.4 Формулировка на языке SQL
2.4.4.1 Выборка недобросовестных читателей
SELECT R."rFullName" AS ФИО, R."rAddress" AS Адрес, R."rPhone" AS Телефон, R."rData" AS Дата_рождения, COUNT(I."iNumber") AS Опоздания_Долги
FROM "Reader" R, "Issuance" I
WHERE R."rNumber" = I."rNumber" AND
(I."iExpReturn" < I."iFactReturn" OR I."iFactReturn" IS NULL) AND
(I."iFactReturn" BETWEEN (select to_date('dateBegin','dd-mm-rr'
GROUP BY R."rFullName",R."rAddress",R."
ORDER BY Опоздания_Долги DESC
2.4.4.2 Выборка популярных книг за период
SELECT B."bName" AS Книга, B."bAuthor" AS Автор,B."bPublish" AS Издательство, B."bYear" AS Год_издания, COUNT(I."iNumber") AS Выдач
FROM "Book" B, "Issuance" I, "Copy" C
WHERE B."ISBN" = C."ISBN" AND C."cNumber"
= I."cNumber" AND I."iIssuance" BETWEEN (select
to_date('dateBegin','dd-mm-rr'
GROUP BY B."bName",B."bAuthor",B."
ORDER BY Выдач DESC
2.4.4.3 Выборка стоимости утерянных книг
SELECT B."bName" AS Книга, C."cNumber" AS Номер, C."cCost" AS "Цена",R."rFullName" AS ФИО_читателя
FROM "Book" B, "Issuance" I, "Copy" C, "Reader" R
WHERE B."ISBN" = C."ISBN" AND C."cNumber" = I."cNumber" AND I."rNumber"=R."rNumber" AND C."cLost"=1 AND C."repCode" IS NULL
2.4.4.4 Выборка читателей
SELECT R."rNumber" AS Номер_билета, R."rFullName" AS ФИО, R."rAddress" AS Адрес, R."rPhone" AS Телефон, R."rData" AS Дата_рождения, case when (select count(I."iNumber") from "Issuance" I, "Reader" R2 where I."rNumber" = R2."rNumber" AND R2."rNumber" = R."rNumber" AND I.ICHOICE IS NOT NULL group by R2."rNumber") IS NULL then 'нет' else 'да' end AS Выбрал_книгу FROM "Reader" R
2.4.4.5 Выборка книг, находящихся на руках у читателя
SELECT B.ISBN, B. "bName"
FROM "Book" B, "Copy" C, "Issuance" I, "Reader" R
WHERE I. "cNumber" = C. "cNumber" AND C. ISBN = B.ISBN AND I. "rNumber" = R. "rNumber" AND R. "rNumber" = 'RNUMBER' AND I. "iFactReturn" IS NULL AND C."cLost" = 0 AND C."repCode" IS NULL
2.4.4.6 Выбор свободных экземпляров книги читателем
SELECT C."cNumber" AS Номер, P."plSection" AS Отдел,P."plRack" AS Стеллаж,P."plShelf" AS Полка,P."plSector" AS Сектор
FROM "Book" B INNER JOIN "Copy" C ON B.ISBN = C.ISBN AND B."bName" = 'Конспект лекций по высшей математике' AND C."cLost" = 0 AND C."woCode" IS NULL
INNER JOIN "Place" P ON C."plCode" = P."plCode"
INNER JOIN "Issuance" I ON I."cNumber" = C."cNumber" AND I."iFactReturn" IS NOT NULL AND I."iIssuance"=(select max(I2."iIssuance") from "Book" B2 INNER JOIN "Copy" C2 ON B2.ISBN = C2.ISBN AND B2."bName" = 'Конспект лекций по высшей математике' AND C2."cLost" = 0 AND C2."woCode" IS NULL
INNER JOIN "Place" P2 ON C2."plCode" = P2."plCode"
INNER JOIN "Issuance" I2 ON I2."cNumber" = C2."cNumber"
WHERE C2."cNumber"=C."cNumber"
GROUP BY C2."cNumber")
2.5.1 Блок-схема алгоритма
2.5.1.1 Алгоритм регистрации нового читателя представлен на рисунке 6.
Рисунок 6. Алгоритм регистрации нового читателя
2.5.1.2 Алгоритм регистрации новой книги представлен на рисунке 7.
Рисунок 7. Алгоритм регистрации книги
2.5.1.3 Алгоритм добавления экземпляра книги представлен на рисунке 8.
Рисунок 8. Алгоритм добавления экземпляра книги
2.5.1.4 Алгоритм добавления книги в раздел каталога представлен на рисунке 9.
Рисунок 9. Алгоритм добавления книги в раздел каталога
2.5.1.5 Алгоритм редактирования экземпляра книги и изменения его места расположения представлен на рисунке 10.
Рисунок 10. Алгоритм
редактирования экземпляра книги и
изменения его места
2.5.1.6 Алгоритм редактирования данных книги представлен на рисунке 11.
Рисунок 11. Алгоритм редактирования данных книги
2.5.1.7 Алгоритм редактирования данных читателя представлен на рисунке 12.
Рисунок 12. Алгоритм редактирования данных читателя
2.5.2 Код на языке PL/SQL (см. Приложение 2)
2.6.1 Архитектуру информационной системы можно представить в виде совокупности трех элементов: базы данных, СУБД, приложения.
Приложение DBLibrary.exe реализует пользовательский интерфейс для работы с данными, хранящимися в базе. Приложение взаимодействует с базой данных посредством объектно-реляционной СУБД Oracle 11g Express Edition.
2.6.2 Концептуальная схема информационной системы представлена на рисунке 13.
Рисунок 13. Архитектура информационной системы
3.1
SQL-скрипт создания базы
3.2 SQL-скрипт хранимых процедур (см. Приложение 2)
3.3 Текст программы (см. Приложение 3).
3.4.1 Введение
В данном руководстве описывается приложение DBLibrary, обеспечивающее автоматизацию ведения базы данных библиотеки.
Приложение реализует возможности, требуемые читателям, библиотекарям и администрации библиотеки по поиску и учету книг.
Пользователи системы должны иметь опыт работы с персональным компьютером на базе операционных систем Microsoft Windows на уровне квалифицированного пользователя и свободно осуществлять базовые операции.
Перед началом работы с приложением необходимо ознакомиться с
Руководством пользователя.
3.4.2 Назначение и условия применения
3.4.2.1 Приложение DBLibrary предназначено для автоматизации приведенных ниже функций пользователей.
Функции читателей:
Функции библиотекаря:
Функции администрации:
3.4.2.2 Минимальные
требования для запуска
3.4.2.3 Программное обеспечение, необходимое для функционирования программы: