Базы данных - библиотека

Автор работы: Пользователь скрыл имя, 25 Декабря 2013 в 23:50, курсовая работа

Описание работы

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

Содержание работы

Задание.
Задание на курсовую работу в соответствии с выбранным вариантом.
Анализ. Предметная область.
Описание предметной области.
Перечень и описание сущностей и атрибутов базы данных.
Проектирование. Нормализация базы данных. Схема данных.
Нормализации базы данных (методом ER-диаграмм).
Схема данных.
Перечень и описание таблиц и их полей (с указанием типов данных и ограничений) в сводной таблице.
Программная часть.
Тестирование. Результаты тестирования.
Сопровождение. Руководство пользователя.
Список использованной литературы
Приложение 1. Исходный текст приложения.

Файлы: 1 файл

курсовая БД (библиотека).docx

— 302.05 Кб (Скачать файл)

Федеральное государственное  бюджетное образовательное учреждение высшего профессионального образования 

"Чувашский государственный  университет имени И.Н. Ульянова"

 

Факультет информатики и  вычислительной техники 

 

Дисциплина: базы данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Библиотека

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполнил ст. гр. ИВТ-11-10

Волкова А.А

Проверил Буланкина Е.Ю.

 

 

 

 

 

 

 

 

Чебоксары 2013

Содержание

  1. Задание.

Задание на курсовую работу в соответствии с выбранным вариантом.

  1. Анализ. Предметная область.
    1. Описание предметной области.
    2. Перечень и описание сущностей и атрибутов базы данных.
  2. Проектирование. Нормализация базы данных. Схема данных.
    1. Нормализации базы данных (методом ER-диаграмм).
    2. Схема данных.
    3. Перечень и описание таблиц и их полей (с указанием типов данных и ограничений) в сводной таблице.
  3. Программная часть.
  4. Тестирование. Результаты тестирования.
  5. Сопровождение. Руководство пользователя.
  6. Список использованной литературы
  7. Приложение 1. Исходный текст приложения.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Задание.

 

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

Предусмотреть следующие ограничения  на информацию в системе:

  • Не может быть информации о соавторах, если нет информации об авторе. Книга может не иметь ни автора ни соавтора.
  • В библиотеке должны быть записаны читатели не моложе 17 лет.
  • В библиотеке присутствуют книги, изданные начиная с 1960 по текущий год
  • Каждый читатель может держать на руках не более 5 книг.
  • Каждый читатель при регистации в библиотеке должен дать телефон для связи он может быть рабочим или домашним.
  • Каждая область знаний может содержать ссылки на множество книг, но каждая книга может относиться к различным областям.

 

  1. Анализ. Предметная область 
    1. Описание предметной области.

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

В библиотеке ведется картотека  читателей. На каждого читателя в картотеку заносятся следующие сведения:

    • Фамилия, Имя , Отчество
    • домашний адрес
    • телефон (Будем считать, что у нас два телефона - рабочий и домашний)
    • дата рождения

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

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

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

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

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

    • номер билета читателя, который взял книгу
    • дата выдачи книги
    • дата возврата.

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

    • Не может быть информации о соавторах, если нет информации об авторе. Книга может не иметь ни автора ни соавтора.
    • В библиотеке должны быть записаны читатели не моложе 17 лет.
    • В библиотеке присутствуют книги, изданные начиная с 1960 по текущий год
    • Каждый читатель может держать на руках не более 5 книг.
    • Каждый читатель при регистации в библиотеке должен дать телефон для связи он может быть рабочим или домашним.
    • Каждая область знаний может содержать ссылки на множество книг, но каждая книга может относиться к различным областям.

 

 

    1. Перечень и описание сущностей и атрибутов базы данных.

Сущности базы данных:

      1. Читатель
      2. Книги
      3. Экземпляр
      4. История
      5. Область Знаний

Перечень и  описание всех атрибутов базы данных:

 

Имя атрибута

Описание

1.

КодЧитателя

Уникальный код читателя

2.

ФИО

Фамилия, имя, отчество читателя

3.

Адрес

Адрес проживания читателя

4.

Телефон

Телефон читателя

5.

ДатаРождения

Дата рождения читателя

6.

КодКниги

Уникальный код книги

7.

Название

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

8.

ФамАвтора

Фамилия автора книги

9.

ФамСоавторов

Фамилия соавторов книги

10.

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

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

11.

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

Издательство книги

12.

КолСтраниц

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

13.

КолЭкземпляров

Количество экземпляров  книги

14.

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

Уникальный код экземпляра

15.

КодОблЗнани

Уникальный код области  знаний

16.

Описание

Описание области знаний

17.

КодИстории

Уникальный код истории

18.

ДатаВыдачи

Дата выдачи книги

19.

ДатаВозврата

Дата возврата книги читателем

20.

ГодИздания

Год издания книги


 

 

 

  1. Проектирование. Нормализация базы данных. Схема данных.
    1. ER диаграмма нормализованной базы данных:

    1. Перечень и описание таблиц и их полей (с указанием типов данных и ограничений) в сводной таблице.

 

Имя атрибута

Тип

Описание

Читатель

КодЧитателя

 

Уникальный код читателя

ФИО

 

Фамилия, имя, отчество читателя

Адрес

 

Адрес проживания читателя

Телефон

 

Телефон читателя

ДатаРождения

 

Дата рождения читателя

Книги

КодКниги

 

Уникальный код книги

Название

 

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

ФамАвтора

 

Фамилия автора книги

ФамСоавторов

 

Фамилия соавторов книги

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

 

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

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

 

Издательство книги

ГодИздания

 

Год издания книги

КолСтраниц

 

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

КолЭкземпляров

 

Количество экземпляров  книги

Экземпляр

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

 

Уникальный код экземпляра

КодКниги

 

Уникальный код книги

КодИстории

 

Уникальный код истории

ОблатьЗнаний

КодОблЗнани

 

Уникальный код области  знаний

Описание

 

Описание области знаний

История

КодИстории

 

Уникальный код истории

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

 

Уникальный код экземпляра

КодЧитателя

 

Уникальный код читателя

ДатаВыдачи

 

Дата выдачи книги

ДатаВозврата

 

Дата возврата книги читателем

ОблЗнанийКнииги

КодКниги

 

Уникальный код книги

КодОблЗнаний

 

Уникальный код области  знаний


 

  1. Программная часть.

 

Запросы

Запрос  для отображении информации о читателе

select k.КодКниги, e.КодЭкземпляра, k.Название, o.Описание, i.КодИстории, ch.КодЧитателя

from Читатель ch

inner join История i

on ch.КодЧитателя=i.КодЧитателя

inner join Экземпляр e

on i.КодЭкземпляра=e.КодЭкземпляра

inner join Книги k

on e.КодКниги=k.КодКниги

inner join ОблЗнанийКниги ok

on k.КодКниги=ok.КодКниги

inner join ОблЗнаний o

on ok.КодОблЗнаний=o.КодОблЗнаний

where ch.ФИО='Афанасьев Виктор Николаевич'

group by k.КодКниги, e.КодЭкземпляра, k.Название,o.КодОблЗнаний, o.Описание, i.КодИстории, ch.КодЧитателя

 

Запрос выведении информации об истории

select История.КодИстории,Читатель.КодЧитателя,Читатель.ФИО,История.КодЭкземпляра,Книги.Название,История.ДатаВыдачи,История.ДатаВозврата from История,Читатель,Книги,Экземпляр where История.КодЭкземпляра=Экземпляр.КодЭкземпляра and Экземпляр.КодКниги=Книги.КодКниги and История.КодЧитателя=Читатель.КодЧитателя

 

 
Хранимая процедура

 

Добавление  новой записи в таблицу ОблЗнаний

USE [BDCur]

GO

/****** Object:  StoredProcedure [dbo].[NewOblZ]    Script Date: 06/09/2012 16:57:40 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author:  BDCur

-- Create date:

-- Description: 

-- =============================================

ALTER PROCEDURE [dbo].[NewOblZ]

-- Add the parameters for the stored procedure here

@Описание nchar(50)

 

AS insert into ОблЗнаний(Описание) values(@Описание)

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

 

    -- Insert statements for procedure here

SELECT @Описание

END

 

Проверка  даты выдачи книги и даты возврата книги (дата выдачи должен быть раньше даты возвращения книги)

 

USE [BDCur]

GO

/****** Object:  StoredProcedure [dbo].[date_test]    Script Date: 06/13/2012 15:04:00 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author:  BDCur

-- Create date:

-- Description: 

-- =============================================

ALTER PROCEDURE [dbo].[date_test]

-- Add the parameters for the stored procedure here

@date_vi date,

@date_vo date

AS

BEGIN

declare @a int

set @a=(select datediff(DAY,@date_vi,@date_vo))

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

 

    -- Insert statements for procedure here

SELECT @a

RETURN @a

END

 

Проверка  дат на корректность ввода

 

USE [BDCur]

GO

/****** Object:  StoredProcedure [dbo].[date_test2]    Script Date: 06/13/2012 15:09:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author:  BDCur

-- Create date:

-- Description: 

-- =============================================

ALTER PROCEDURE [dbo].[date_test2]

-- Add the parameters for the stored procedure here

@Дата_выдачи nvarchar(50),

@Дата_возврата nvarchar(50)

AS

BEGIN

declare @a int

declare @b int

declare @c int

set @a=1;

set @b=0;

set @a=(select ISDATE(@Дата_выдачи))

set @b=(select ISDATE(@Дата_возврата))

set @c=@a*@b

 

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

 

    -- Insert statements for procedure here

SELECT @Дата_выдачи,@Дата_возврата,@a

return @a

END

 

 

Транзакции

 

Добавление  новой записи в таблицу История  и редактирование таблицы Экземпляр

USE [BDCur]

GO

/****** Object:  StoredProcedure [dbo].[NewHistory]    Script Date: 06/09/2012 16:59:08 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author:  DBCur

-- Create date:

-- Description: 

-- =============================================

ALTER PROCEDURE [dbo].[NewHistory]

-- Add the parameters for the stored procedure here

@КодЭкземпляра int = NULL,

@КодЧитателя int = NULL,

@ДатаВыдачи date = '1960-01-01',

@ДатаВозврата date = '1960-01-01'

AS

 

 

 

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

 

BEGIN TRANSACTION

DECLARE @re int

DECLARE @pe int

DECLARE @ta TABLE (qw int NULL);--OUTPUT inserted.КодИстории into @ta

insert into История(КодЭкземпляра,КодЧитателя,ДатаВыдачи,ДатаВозврата) OUTPUT inserted.КодИстории into @ta values (@КодЭкземпляра,@КодЧитателя,@ДатаВыдачи,@ДатаВозврата)

--OUTPUT inserted.* into @pe

set @re=(select qw from @ta)

--set @re=(SELECT КодИстории FROM История where КодЭкземпляра=@КодЭкземпляра and КодЧитателя=@КодЧитателя and ДатаВыдачи=@ДатаВыдачи and ДатаВозврата=@ДатаВозврата)

set @pe=(select КодИстории from Экземпляр where КодЭкземпляра=@КодЭкземпляра)

update Экземпляр set КодИстории=@re where КодЭкземпляра=@КодЭкземпляра and КодИстории is NULL

 

IF @@ERROR=1

ROLLBACK TRANSACTION

IF @pe is NULL

COMMIT TRANSACTION

ELSE

ROLLBACK TRANSACTION

 

 

 

SET NOCOUNT ON;

 

    -- Insert statements for procedure here

SELECT @КодЭкземпляра, @КодЧитателя,@ДатаВыдачи, @ДатаВозврата,@pe,@re

END

 

 

Листинг программы

 

Unit1.cpp

 

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

 

#include "Unit1.h"

#include "modul.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit6.h"

#include "Unit7.h"

#include "Unit9.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

 

int de=1;

void del_his(){

Form1->Label3->Visible=0;

   Form1->Label3->Enabled=0;

   Form1->Button10->Visible=0;

   Form1->Button10->Enabled=0;

   return;

}

void searh(){

Form1->Button11->Visible=0;

Form1->Button11->Enabled=0;

return;

}

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

Form1->Caption="История";

del_his();

searh();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Form1->DBGrid1->DataSource=DataModule2->DataSource1;

de=1;

Информация о работе Базы данных - библиотека