Информационная система библиотеки

СОДЕРЖАНИЕ

Введение 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

Приложение 1 SQL-скрипт создания базы данных 33

Приложение 2 SQL-скрипт хранимых процедур 38

Приложение 3 Тексты основных модулей программы 42

Приложение 4 Графическая часть 67

Введение

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

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

Для достижения поставленной цели предполагается составление  технического задания в соответствии с требованиями предметной области, разработка инфологической и физической модели базы данных на платформе Oracle, написание информационной системы на язык программирования C#.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 Техническое  задание

1.1 Описание предметной области

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

1.1.2 Данные о читателях хранятся в картотеке. Каждый читатель может одновременно держать на руках не более пяти библиотечных книг и не более одного экземпляра каждой книги.

1.2 Модели вариантов использования1

1.2.1 Читатель должен иметь возможность:

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

1.2.2 Библиотекарь должен:

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

1.2.3 Администрация библиотеки должна:

    • иметь возможность получать сведения о должниках;
    • получать сведения о популярных и непопулярных среди читателей книгах, исходя из количества взятых экземпляров;
    • получать сведения о стоимости книги, чтобы установить возможность возмещения или замены утерянной книги.

1.3 Требования  к информационному и программному  обеспечению

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

1.3.2 Программные модули реализуются в виде приложения                C# Windows Forms на платформе .NET Framework 4.5. Для генерации и отображения отчетов используется интегрированный в .NET Framework компонент Report Viewer.

1.3.3 Для управления базой данных используется  СУБД Oracle 11g Express Edition.

1.3.4 Используемая операционная система – Windows 7.

 

 

 

 

 

 

 

2 Технический проект

2.1 Модели локальных представлений

2.1.1 Пользователями информационной системы являются читатели, библиотекари и администрация библиотеки. Локальные ER-диаграммы для указанных групп пользователей приведены на рисунках 1, 2 и 3 соответственно.

Рисунок 1. Локальная ER-диаграмма читателя

Рисунок 2. Локальная ER-диаграмма библиотекаря

Рисунок 3.  Локальная ER-диаграмма администрации

 

2.1.2 Основные  запросы

2.1.2.1 Запросы для пользователей группы «Администрация»:

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

2.1.2.2 Запросы  для пользователей группы «Библиотекари»:

    • получить список книг, находящихся на руках у читателя;
    • получить список экземпляров книги, с указанием места расположения и дат выдачи и возврата.

 

2.1.2.3 Запросы  для пользователей группы «Читатели»:

    • получить номер свободного экземпляра и место расположения выбранной книги;
    • при отсутствии свободного экземпляра получить ближайшую дату ожидаемого возврата.

2.2 Инфологическая  модель предметной области

2.2.1 ER-диаграмма инфологической модели представлена на      рисунке 4.

Рисунок 4. Обобщенная ER-диаграмма

 

 

 

2.2.2 Спецификация сущностей представлена в таблице 1.

Таблица 1. Спецификация сущностей

Название 

Код

Тип

Длина

Обяз.

Первич.

Раздел каталога (Section)

Код раздела

sCode

Integer

 

X

X

Название раздела

sName

Variable characters(50)

50

X

 

Книга (Book)

ISBN

ISBN

Characters(13)

13

X

X

Название книги

bName

Variable characters(50)

50

X

 

Автор(ы)

bAuthor

Variable characters(50)

50

X

 

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

bPlace

Variable characters(20)

20

X

 

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

bPublish

Variable characters(20)

20

X

 

Год издания

bYear

Integer

 

X

 

Количество страниц

bPages

Integer

 

X

 

Экземпляр книги (Copy)

Номер экземпляра

cNumber

Integer

 

X

X

Стоимость экземпляра

cCost

Money

 

X

 

Дата поставки

cDate

Date

 

X

 

Утерян

cLost

Boolean

     

Место размещения (Place)

Код места

plCode

Integer

 

X

X

Отдел

plSection

Variable characters(50)

50

X

 

Стеллаж

plRack

Integer

 

X

 

Полка

plShelf

Integer

 

X

 

Сектор

plSector

Variable characters(2)

2

X

 

 

 

 

Окончание таблицы 1

Название 

Код

Тип

Длина

Обяз.

Первич.

Выдача (Issuance)

Номер выдачи

iNumber

Integer

 

X

X

Дата выдачи

iIssuance

Date

 

X

 

Дата ожидаемого возврата

iExpReturn

Date

 

X

 

Дата фактического возврата

iFactReturn

Date

     

Выбор книги читателем

ICHOICE

Boolean

     

Читатель (Reader)

Номер читательского билета

rNumber

Number(6)

6

X

X

ФИО

rFullName

Variable characters(50)

50

X

 

Адрес

rAddress

Variable characters(100)

100

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.2.3 Спецификация связей представлена  в таблице 2.

Таблица 2. Спецификация связей

Связь

Тип связи

От сущности

К сущности

По атрибуту

хранится

М:М

Книга

Раздел каталога

ISBN / Код раздела

имеется

1:М

Книга

Экземпляр книги

ISBN

расположен

1:М

Место размещения

Экземпляр книги

Код места

выдается

1:М

Экземпляр книги

Выдача

Номер экземпляра

берет

1:М

Читатель

Выдача

Номер читательского билета

заменяется

1:М

Замена

Экземпляр книги

Код замены

списывается

1:М

Списание

Экземпляр книги

Код списания


 

2.3 Физическая модель базы данных

2.3.1 Диаграмма  физической модели представлена на рисунке 5.

Рисунок 5. Диаграмма физической модели базы данных

2.3.2 Спецификация  таблиц базы данных представлена в таблице 3.

Таблица 3. Спецификация таблиц

Название 

Код

Тип

Длина

Первич.

Внеш.

Обяз.

Раздел каталога (Section)

Код раздела

sCode

INTEGER

 

X

 

X

Название раздела

sName

VARCHAR2(100)

100

   

X

хранится (saved)

Код раздела

sCode

INTEGER

   

X

X

ISBN

ISBN

CHAR(13)

13

 

X

X

Книга (Book)

ISBN

ISBN

CHAR(13)

13

X

 

X

Название книги

bName

VARCHAR2(100)

100

   

X

Автор(ы)

bAuthor

VARCHAR2(100)

100

   

X

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

bPlace

VARCHAR2(40)

40

   

X

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

bPublish

VARCHAR2(40)

40

   

X

Год издания

bYear

INTEGER

     

X

Количество страниц

bPages

INTEGER

     

X

Экземпляр книги (Copy)

Номер экземпляра

cNumber

INTEGER

 

X

 

X

Код списания

woCode

INTEGER

   

X

X

ISBN

ISBN

CHAR(13)

13

 

X

X

Код замены

repCode

INTEGER

   

X

X

Код места

plCode

INTEGER

   

X

X

Стоимость экземпляра

cCost

NUMBER(8, 2)

8

   

X

Дата поставки

cDate

DATE

     

X

Утерян

cLost

SMALLINT

       

Место размещения (Place)

Код места

plCode

INTEGER

 

X

 

X

Отдел

plSection

VARCHAR2(100)

100

   

X

Стеллаж

plRack

INTEGER

     

X

Полка

plShelf

INTEGER

     

X

Сектор

plSector

VARCHAR2(4)

4

   

X


 

 

 

Окончание таблицы 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. Формулировка  на естественном языке

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, а дата выдачи максимальна среди выдач этого экземпляра.

 

      1. Формулировка в виде выражения  реляционной алгебры

2.4.2.1 Выборка  недобросовестных читателей:

где Ч – отношение Читатель ( Номер читательского билета, ФИО, Адрес, Телефон, Дата рождения); B – отношение Выдача (Номер выдачи, Номер экземпляра, Номер читательского билета, Дата выдачи, Дата ожидаемого возврата, Дата фактического возврата); dateBegin и dateEnd – введенные начальная и конечная даты соответственно

 

2.4.2.2 Выборка стоимости утерянных книг:

где  К  – отношение Книга(ISBN, Название книги, Автор(ы), Место издания, Издательство, Год издания, Количество страниц, Количество экземпляров);         Э – отношение Экземпляр книги (Номер экземпляра, ISBN, Код списания, Код замены, Код места, Стоимость экземпляра, Дата поставки, Утерян).

 

 

 

 

 

      1. Формулировка в виде выражений  реляционного исчисления с переменными-кортежами

2.4.3.1 Выборка книг, находящихся на руках:

 

где  К  – отношение Книга(ISBN, Название книги, Автор(ы), Место издания, Издательство, Год издания, Количество страниц, Количество экземпляров),         Э – отношение Экземпляр книги (Номер экземпляра, ISBN, Код списания, Код замены, Код места, Стоимость экземпляра, Дата поставки, Утерян),                                       B – отношение Выдача (Номер выдачи, Номер экземпляра, Номер читательского билета, Дата выдачи, Дата ожидаемого возврата, Дата фактического возврата).

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') from dual) AND (select to_date('dateEnd','dd-mm-rr') from dual) OR I."iFactReturn" IS NULL)

GROUP BY R."rFullName",R."rAddress",R."rPhone",R."rData"

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') from dual) AND (select to_date('dateEnd','dd-mm-rr') from dual)

GROUP BY  B."bName",B."bAuthor",B."bPublish",B."bYear"

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 Хранимые процедуры

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 Архитектура информационной системы

2.6.1 Архитектуру информационной системы можно представить в виде совокупности трех элементов: базы данных, СУБД, приложения.

Приложение  DBLibrary.exe реализует пользовательский интерфейс для работы с данными, хранящимися в базе. Приложение взаимодействует с базой данных посредством объектно-реляционной СУБД Oracle 11g Express Edition.

2.6.2 Концептуальная схема информационной системы представлена на рисунке 13.

Рисунок 13. Архитектура информационной системы

3 Рабочий проект

3.1 SQL-скрипт создания базы данных (см. Приложение 1)

3.2 SQL-скрипт хранимых процедур (см. Приложение 2)

3.3 Текст программы    (см. Приложение 3).

3.4 Руководство пользователя

3.4.1 Введение

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

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

Пользователи  системы  должны  иметь  опыт  работы  с  персональным компьютером  на  базе  операционных  систем  Microsoft  Windows  на  уровне квалифицированного пользователя и свободно осуществлять базовые операции.

Перед  началом  работы  с  приложением  необходимо  ознакомиться  с

Руководством  пользователя.

3.4.2 Назначение и условия применения

3.4.2.1 Приложение DBLibrary предназначено для автоматизации приведенных ниже функций пользователей.

Функции читателей:

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

 

 

 

Функции библиотекаря:

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

Функции администрации:

    • получение сведений о должниках;
    • получение сведений о популярных и непопулярных среди читателей книгах;
    • получение сведений о стоимости книги, чтобы установить возможность возмещения или замены утерянной книги.

3.4.2.2 Минимальные  требования для запуска программы:

    • Процессор Intel Pentium IV;
    • Наличие не менее 128Mб ОЗУ;
    • Наличие не менее 20Мб свободного дискового пространства;
    • SVGA – графический адаптер;
    • Минимальный набор периферийного оборудования.

3.4.2.3 Программное обеспечение, необходимое для функционирования программы:

Информационная система библиотеки