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

Автор работы: Пользователь скрыл имя, 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

Вложенные файлы: 1 файл

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

— 1.11 Мб (Скачать файл)
    • Операционная система Microsoft Windows Vista/7/8;
    • СУБД Oracle 11g Express Edition;
    • программная платформа .NET Framework 4.5 и выше.

 

 

 

 

3.4.3 Подготовка к работе

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

3.4.3.2 Для начала работы требуется запустить исполняемый файл DBLibrary.exe, предварительно скопировав его с дистрибутивного носителя на жесткий диск ПК.  В случае успешного запуска приложения можно приступать к работе.

3.4.4 Описание операций

После загрузки программы отображается окно выбора пользователя (рисунок 14). Кликнув на один из элементов RadioButton и, для читателя, указав номер читательского билета,  пользователь переходит в один из режимов работы в приложении.

Рисунок 14. Диалоговое окно выбора пользователя

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

Рисунок 15. Выбор экземпляра книги читателем

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

 

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

Для просмотра результата запроса необходимо кликнуть его название в меню и при необходимости указать временно  интервал – результат будет отображен в таблице (рисунок 16).

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

В режиме работы библиотекаря форма состоит  из двух вкладок: первая - для просмотра  данных о  книгах и их экземплярах, вторая – для просмотра данных о читателях и выданных им книгах.

Определить, что читатель выбрал книгу библиотекарь может по значению поля «Выбор_книги» в строке читателя. Для подтверждения выдачи библиотекарь должен кликнуть заголовок строки читателя и выбрать в основном меню пункт «Выдать». Отобразится окно с данными о выбранных читателем книгах, после чего библиотекарь может подтвердить выдачу книг читателю, либо отменить ее.

Для редактирования данных читателя, необходимо кликнуть заголовок строки читателя и выбрать в меню «Правка» пункт  «Редактировать».  Отобразиться окно редактирования, в котором библиотекарь может изменить указанные данные читателя и сохранить изменения. Для отображения изменений в таблице читателей необходимо выбрать пункт «Обновить» в меню «Правка».

Для добавления читателя необходимо выбрать  в пункте «Зарегистрировать» основного  меню программы подпункт «Читателя». В отобразившемся окне по завершении ввода данных во все информационные поля нажать кнопку подтверждения и  обновить данные в таблице читателей  способом, описанным ранее (рисунок 17).

Рисунок 17. Окно добавления читателя

На  вкладке «Книги» библиотекарь может  просматривать книги,  из разделов каталога, а также получать данные об экземплярах этих книг.

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

Для экземпляров книг, не возвращенных в срок, библиотекарь может установить флаг «Утерян», щелкнув заголовок строки экземпляра и  выбрав в основном меню пункт «Пометить как утерянный».

Утерянные книги могут быть заменены читателем. Для оформления замены необходимо кликнуть по заголовку строки утерянного экземпляра и выбрать в основном меню пункт  «Заменить» (рисунок 18). В появившемся окне необходимо будет ввести информацию о поступившей взамен книге.

 

 

Рисунок 18. Выбор акта замены или списания для утерянного экземпляра

Утраченные  или старые книги могут быть списаны. Для этого необходимо, выделив  строку экземпляра в таблице, выбрать  в основном меню пункт «Списать».

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

3.4.5 Аварийные ситуации

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

3.4.6 Рекомендации по освоению

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

Заключение

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

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

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

На  заключительном  этапе  создания  информационной  системы  было разработано  приложение  на  языке  С#,  позволяющее пользователям изменять содержимое базы данных интуитивно понятным для них способом без знания принципов её устройства и функционирования.

Разработанное приложение обеспечивает достижение поставленной цели – автоматизации ведения базы  данных библиотеки.

Список источников

    1. Гарсиа-Молина Г., Ульман Дж. Д., Уидом Дж. Системы баз данных. Полный курс. – М.: Вильямс, 2003. 1089 с.
    2. Дейт К. Дж. Введение в системы баз данных. – М.: Вильямс, 2005. - 1328 с.

 

 

 

 

 

Приложение 1

SQL-скрипт создания базы данных

 

/*==============================================================*/

/* DBMS name:      ORACLE Version 11g                           */

/* Created on:     02.01.2014 6:01:07                           */

/*==============================================================*/

 

 

alter table "Copy"

   drop constraint FK_COPY_LOCATED_PLACE;

 

alter table "Copy"

   drop constraint FK_COPY_REPLACED_REPLACEM;

 

alter table "Copy"

   drop constraint FK_COPY_THERE_IS_BOOK;

 

alter table "Copy"

   drop constraint FK_COPY_WRITEOFF_WRITEOFF;

 

alter table "Issuance"

   drop constraint FK_ISSUANCE_ISSUED_COPY;

 

alter table "Issuance"

   drop constraint FK_ISSUANCE_TAKES_READER;

 

alter table "saved"

   drop constraint FK_SAVED_SAVED_SECTION;

 

alter table "saved"

   drop constraint FK_SAVED_SAVED2_BOOK;

 

drop table "Book" cascade constraints;

 

drop index "located_FK";

 

drop index "writeoff_FK";

 

drop index "replaced_FK";

 

drop index "there_is_FK";

 

drop table "Copy" cascade constraints;

 

drop index "issued_FK";

 

drop index "takes_FK";

 

drop table "Issuance" cascade constraints;

 

drop table "Place" cascade constraints;

 

drop table "Reader" cascade constraints;

 

drop table "Replacement" cascade constraints;

 

drop table "Section" cascade constraints;

 

drop table "Writeoff" cascade constraints;

 

drop index "saved2_FK";

 

drop index "saved_FK";

 

drop table "saved" cascade constraints;

 

/*==============================================================*/

/* Table: "Book"                                                */

/*==============================================================*/

create table "Book"

(

   ISBN                 CHAR(13)             not null,

   "bName"              VARCHAR2(100)        not null,

   "bAuthor"            VARCHAR2(100)        not null,

   "bPlace"             VARCHAR2(40)         not null,

   "bPublish"           VARCHAR2(40)         not null,

   "bYear"              INTEGER              not null,

   "bPages"             INTEGER              not null,

   constraint PK_BOOK primary key (ISBN)

);

 

/*==============================================================*/

/* Table: "Copy"                                                */

/*==============================================================*/

create table "Copy"

(

   "cNumber"            INTEGER              not null,

   "woCode"             INTEGER,

   ISBN                 CHAR(13)             not null,

   "repCode"            INTEGER,

   "plCode"             INTEGER              not null,

   "cCost"              NUMBER(8,2)          not null,

   "cDate"              DATE                 not null,

   "cLost"              SMALLINT,

   constraint PK_COPY primary key ("cNumber")

);

 

/*==============================================================*/

/* Index: "there_is_FK"                                         */

/*==============================================================*/

create index "there_is_FK" on "Copy" (

   ISBN ASC

);

 

/*==============================================================*/

/* Index: "replaced_FK"                                         */

/*==============================================================*/

create index "replaced_FK" on "Copy" (

   "repCode" ASC

);

 

/*==============================================================*/

/* Index: "writeoff_FK"                                         */

/*==============================================================*/

create index "writeoff_FK" on "Copy" (

   "woCode" ASC

);

 

/*==============================================================*/

/* Index: "located_FK"                                          */

/*==============================================================*/

create index "located_FK" on "Copy" (

   "plCode" ASC

);

 

 

 

/*==============================================================*/

/* Table: "Issuance"                                            */

/*==============================================================*/

create table "Issuance"

(

   "iNumber"            INTEGER              not null,

   "cNumber"            INTEGER              not null,

   "rNumber"            NUMBER(6)            not null,

   "iIssuance"          DATE                 not null,

   "iExpReturn"         DATE                 not null,

   "iFactReturn"        DATE,

   ICHOICE              SMALLINT,

   constraint PK_ISSUANCE primary key ("iNumber")

);

 

/*==============================================================*/

/* Index: "takes_FK"                                            */

/*==============================================================*/

create index "takes_FK" on "Issuance" (

   "rNumber" ASC

);

 

/*==============================================================*/

/* Index: "issued_FK"                                           */

/*==============================================================*/

create index "issued_FK" on "Issuance" (

   "cNumber" ASC

);

 

/*==============================================================*/

/* Table: "Place"                                               */

/*==============================================================*/

create table "Place"

(

   "plCode"             INTEGER              not null,

   "plSection"          VARCHAR2(100)        not null,

   "plRack"             INTEGER              not null,

   "plShelf"            INTEGER              not null,

   "plSector"           VARCHAR2(4)          not null,

   constraint PK_PLACE primary key ("plCode")

);

 

/*==============================================================*/

/* Table: "Reader"                                              */

/*==============================================================*/

create table "Reader"

(

   "rNumber"            NUMBER(6)            not null,

   "rFullName"          VARCHAR2(100)        not null,

   "rAddress"           VARCHAR2(200)        not null,

   "rPhone"             NUMBER(11)           not null,

   "rData"              DATE                 not null,

   constraint PK_READER primary key ("rNumber")

);

 

 

 

 

 

 

 

 

/*==============================================================*/

/* Table: "Replacement"                                         */

/*==============================================================*/

create table "Replacement"

(

   "repCode"            INTEGER              not null,

   "repDate"            DATE                 not null,

   constraint PK_REPLACEMENT primary key ("repCode")

);

/*==============================================================*/

/* Table: "Section"                                             */

/*==============================================================*/

create table "Section"

(

   "sCode"              INTEGER              not null,

   "sName"              VARCHAR2(100)        not null,

   constraint PK_SECTION primary key ("sCode")

);

 

/*==============================================================*/

/* Table: "Writeoff"                                            */

/*==============================================================*/

create table "Writeoff"

(

   "woCode"             INTEGER              not null,

   "woDate"             DATE                 not null,

   constraint PK_WRITEOFF primary key ("woCode")

);

 

/*==============================================================*/

/* Table: "saved"                                               */

/*==============================================================*/

create table "saved"

(

   "sCode"              INTEGER              not null,

   ISBN                 CHAR(13)             not null,

   constraint PK_SAVED primary key ("sCode", ISBN)

);

 

/*==============================================================*/

/* Index: "saved_FK"                                            */

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