База данных книжного магазина

Автор работы: Пользователь скрыл имя, 03 Октября 2013 в 23:35, курсовая работа

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

В данной курсовой работе была разработана база данных книжного магазина.
В проекте были исследованы три основных составляющих проектирования и создания БД, а именно:
1. Анализ предметной области. 2. Проектирование логической модели. 3. Реализация Базы Данных.

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

Введение 5
1. Исследовательская часть 7
1.1 Постановка задачи 7
1.2 Анализ предметной области 8
1.3 Описание предметной области 8
1.4 Сбор данных по выбранной теме 9
1.5 Средства реализации 10
2. Конструкторская часть 16
2.1 Основные этапы разработки 16
2.2 Создание структуры базы данных 16
2.3 Создание таблиц 19
2.4 Создание приложения в Delphi 2010 22
2.5 Создание отчётов по базе данных 30
2.6 Тестирование разработанного продукта 32
3. Технологическая часть 35
Заключение 35
Список литературы 37
Приложение А 38
Приложение Б 39
Приложение В 42

Файлы: 1 файл

Курсак БД копия.docx

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

 

Рис. 2.4 Таблица  «Города»

 

Рис. 2.5 Таблица  «Страны»

 

Рис. 2.6 Таблица  «Покупатели»

 

Рис. 2.7 Таблица  «Покупки»

 

Рис. 2.8 Таблица  «Издательство»

 

 

Рис. 2.9 Таблица  «Индекс»

 

2.4 Создание приложения  в Delphi 2010

 

Запускаем Delphi 2010 и создаем главную форму Form1(Рис. 2.10), которая буде служить для доступа ко всем таблицам нашей базы  данных. На ней размещаем кнопки для от работы с таблицами и создаем обработчики события OnButtonClick, в которых будет реализована логика работы приложения.

Рис. 2.10 Главная  форма

 

Для кнопки «Книги»  создаем следующий обработчик, выполнение которого привод к созданию формы для работы с таблицей «Книги»

procedure TForm1.bbtnBooksClick(Sender: TObject);

begin

  frmBooks := TfrmBooks.Create(Application);

  frmBooks.Show;

end;

Для загрузки данных из БД в компонент  BDGrid необходимо добавить компоненты ADOQuery и DataSource.  В ADOQuery свойство Connection устанавливаем на ADOConntion, в свойстве SQL пишем следующий SQL запрос :

select  books.isbn, books.name, author.name_a, ganri.name_ganr,

publishers.name, books.count_page,books.price, books.imprint_date

from Books,Ganri,Publishers, Author

where

Ganri.id_ganr = Books.ganr and Publishers.ID_PUPISHER = books.publishers

And Books.author = Author.id_author

 

Для того чтобы добавлять данные в таблицу  «Книги» добавим кнопку «Добавить  книгу», которая отображает форму  для ввода/редактирования данных.  

Следующая процедура добавляет данные в  таблицу «Книги»

procedure TfrmModifyBooks.bbtnAddBooksClick(Sender: TObject);

begin

if (edtISBN.Text = '') or (edtNameBook.Text = '') or

  (DBLookupComboBoxGanri.Text = '') or (DBLookupComboBoxPublishers.Text = '')  or ( DBLookupComboBox1.Text = '') or (edtCountPages.Text = '') or (edtPrice.Text = '')  or ( edtImprittDate.Text = '')     then

  begin    ShowMessage('Заполнены не все поля!');   exit;  end;

  try

     DataModule1.ADOConnection1.BeginTrans;

     with DataModule1.spInsertBooks do

     begin

       Parameters.ParamByName('@isbn').Value := edtISBN.Text;

       Parameters.ParamByName('@name').Value := edtNameBook.Text;

       Parameters.ParamByName('@ganr').Value:=              DBLookupComboBoxGanri.KeyValue;

       //ShowMessage(DBLookupComboBoxGanri.KeyValue);

       Parameters.ParamByName('@publisher').Value := DBLookupComboBoxPublishers.KeyValue;

       Parameters.ParamByName('@count_p').Value := StrToInt(edtCountPages.Text);

       Parameters.ParamByName('@price').Value := StrToFloat(edtPrice.Text);

       Parameters.ParamByName('@imprint_date').Value := StrToInt(edtImprittDate.Text);

       Parameters.ParamByName('@AUTHOR').Value := DBLookupComboBox1.KeyValue;

       ExecProc;

     end;

    DataModule1.ADOConnection1.CommitTrans;

    frmModifyBooks.Close;

  except

    DataModule1.ADOConnection1.RollbackTrans;

    ShowMessage('Невозможно выполнить. Повторите.');

  end;

end;

Далее напишем код, который изменяет данные в таблице

procedure TfrmBooks.bbtnUpdateDataRecordBookClick(Sender: TObject);

var

isb,sql : string;

edit : Boolean;

begin

   try

      isb := ADOQueryBooks.FieldByName('isbn').AsString;

      //ShowMessage(isb);

     frmModifyBooks := TfrmModifyBooks.Create(Application);

     frmModifyBooks.bbtnAddBooks.Enabled := false;

     frmModifyBooks.bbtnEditBooks.Caption := 'Изменить';

     frmModifyBooks.edtISBN.Text := ADOQueryBooks.FieldByName('isbn').AsString;

     frmModifyBooks.edtNameBook.Text := ADOQueryBooks.FieldByName('name').AsString;

     frmModifyBooks.edtCountPages.Text := ADOQueryBooks.FieldByName('count_page').AsString;

     frmModifyBooks.edtPrice.Text := ADOQueryBooks.FieldByName('price').AsString;

     frmModifyBooks.edtImprittDate.Text := ADOQueryBooks.FieldByName('imprint_date').AsString;

     //frmModifyBooks.ShowModal;

     if frmModifyBooks.ShowModal = mrOk then

     begin

         if (frmModifyBooks.edtISBN.Text = '') or (frmModifyBooks.edtNameBook.Text = '') or

        (frmModifyBooks.DBLookupComboBoxGanri.Text = '') or

        (frmModifyBooks.DBLookupComboBoxPublishers.Text = '')

        or ( frmModifyBooks.DBLookupComboBox1.Text = '') or

        (frmModifyBooks.edtCountPages.Text = '') or (frmModifyBooks.edtPrice.Text = '')

        or ( frmModifyBooks.edtImprittDate.Text = '')

           then

        begin

          ShowMessage('Заполнены не все поля!');   exit;

        end;

       with frmModifyBooks, DataModule1.spUpdateBooks.Parameters do

       begin

           ParamByName('@id').Value := edtISBN.Text;

           ParamByName('@name').Value := edtNameBook.Text;

           ParamByName('@ganr').Value := DBLookupComboBoxGanri.KeyValue;

           ParamByName('@publish').Value := DBLookupComboBoxPublishers.KeyValue;

           ParamByName('@c_page').Value := StrToInt(edtCountPages.Text);

           ParamByName('@price').Value := StrToFloat(edtPrice.Text);

           ParamByName('@date').Value := StrToInt(edtImprittDate.Text);

           ParamByName('@author').Value := DBLookupComboBox1.KeyValue;

           DataModule1.spUpdateBooks.ExecProc;

       end;

        ADOQueryBooks.Requery();

        ADOQueryBooks.Last;

     end;

   except

      ShowMessage('Произошла ошибка! Повторите еще раз.');

   end;

    ADOQueryBooks.Requery();

    ADOQueryBooks.Last;

end;

Далее реализуем  процедуры, которые будут выполнять  фильтрацию данных. Фильтрацию будем  выполнять по следующим полям: №  книги (ISBN), «Жанр», «Автор», «Кол-во стр.», «Цена», «Год издания»

Процедуры TfrmBooks.edtMaxPriceChange и TfrmBooks.edtMinPrice-

Change фильтруют данные по полю «Цена»

procedure TfrmBooks.edtMaxPriceChange(Sender: TObject);

var min : string;

begin

  min :='10.0';

if(Length(edtMinPrice.Text) >0)  and (StrToFloat(edtMinPrice.Text) > 0) then

  min := edtMinPrice.Text;

   if(Length(edtMaxPrice.Text) > 0) then begin

  ADOQueryBooks.Filtered:= false;

  ADOQueryBooks.Filter:='price >= '+  min +

   ' and price <= '+ edtMaxPrice.Text;

  ADOQueryBooks.Filtered:=true;

end

else  ADOQueryBooks.Filtered:=false;

end;

procedure TfrmBooks.edtMinPriceChange(Sender: TObject);

var max : string;

begin

  max :='1000.0';

if(Length(edtMaxPrice.Text) >0)  and (StrToFloat(edtMaxPrice.Text) > 0) then

  max := edtMaxPrice.Text;

   if(Length(edtMinPrice.Text) >0) then begin

  ADOQueryBooks.Filtered:= false;

  ADOQueryBooks.Filter:='price >= '+  edtMinPrice.Text+

   ' and price <= '+ max;

  ADOQueryBooks.Filtered:=true;

end

else   ADOQueryBooks.Filtered:=false;

end;

Процедура TfrmBooks.Edit4Change фильтрует данные по полю «Автор»

procedure TfrmBooks.Edit4Change(Sender: TObject);

begin

if(Length(Edit4.Text) > 0) then

begin

  ADOQueryBooks.Filtered := false;

  ADOQueryBooks.Filter := 'name_a LIKE ' + #39 + '%'+ Edit4.Text + '%' +#39;

  ADOQueryBooks.Filtered := true;

end

else ADOQueryBooks.Filtered := false;

end;

Процедура TfrmBooks.Edit3Change фильтрует данные по полю «Жанр»

procedure TfrmBooks.Edit3Change(Sender: TObject);

begin

  if(Length(Edit3.Text) > 0) then

  begin

    ADOQueryBooks.Filtered := false;

    ADOQueryBooks.Filter := 'name_ganr LIKE ' + #39 + '%'+Edit3.Text '%'+#39;

    ADOQueryBooks.Filtered := true;

  end

  else ADOQueryBooks.Filtered := false; end;

Для  остальных  таблиц аналогичным способом  создаем обработчики добавления/изменения данных в БД

 

 

 

 

 

 

 

 

2.5 Создание отчётов  по базе данных

 

Для того чтобы приложение Delphi могло выполнять функции печати отчетов, разработчик должен выполнить следующий набор операций. 
Создадим отчет аналогичный рассмотренному ранее, используя набор компонентов Rave Reports.

Порядок создания отчета следующий: 
1. Разместить на главной форме приложения следующие компоненты: TRvProject, TRvSystem, TRvDataSetConnection, TADOConnection и TADOQuery,. С помощью свойства Engine связать компонент RvProject с компонентом RvSystem. Настроить компонент RvDataSetConnection, подключив его к компоненту TADOQuery с помощью свойства DataSet. Связать компоненты TADOQuery и ADOConnection, подключить компонент ADOConnection к требуемой БД. Для компонента TADOQuery задать следующий текст запроса:

 

select  books.isbn, books.name, author.name_a, ganri.name_ganr,

publishers.name, books.count_page,books.price, books.imprint_date

from Books,Ganri,Publishers, Author

where Ganri.id_ganr = Books.ganr and Publishers.ID_PUPISHER = books.publishers  and Books.author = Author.id_author

 

2. При помощи  визуальной среды разработки  Rave Reports создать проект отчета. Для этого выполнить двойной щелчок по компоненту RvProject или выбрать пункт меню Tools–Rave Designer. В открывшемся редакторе отчетов выполним пункт меню File–New Data Objects, чтобы настроить соединение с БД. В открывшемся окне выберем пункт меню Direct Data View (Рис 2.11)

Рис. 2.11 Выбор драйвера поставщика данных

В следующем  окне выберем ранее созданный  компонент соединения RvDataSetConnection и нажмем кнопку Finish

Далее для  упрощения создания отчета воспользуемся  мастером построения отчетов. Для этого выполним пункт меню Tools–Report Wizards–Simple Table. В ходе выполнения мастера потребуется выбрать поля, включаемые в отчет, и порядок следования полей, а также задать текст заголовка отчета. Пример отчета, созданного с помощью мастера, представлен на Рис. 2.12

Рис. 2.12 Форма отчета в  Rave Reports.

Теперь  можно отредактировать сгенерированный  отчет, задав необходимые настройки  шрифтов. После окончания редактирования необходимо сохранить отчет, выбрав пункт меню File–Save As и задав имя отчета, например, goods.rav. Для предварительного просмотра отчета следует нажать F9.Далее следует закрыть окно Rave Reports.

 
3. В компоненте RvProject задать свойство ProjectFile, указав в нем имя ранее созданного файла проекта отчета.

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

procedure TfrmBooks.Button1Click(Sender: TObject);

begin

   RvProject1.Execute;

end;

 

    1.  Тестирование разработанного продукта

 

Запускаем  наше приложение ,  на главной форме (см. Рис. 2.10)  жмем кнопку «Книги»  и перед нами открывается  форма  для работы  с данными  таблицы  «Книги»(Рис. 2.13)

Рис. 2.13 Форма  для работы с таблицей «Книги»

Для того чтобы  добавить информацию о книге жмем кнопку «Добавить книгу» откроется  следующее окно  (Рис. 2.14).  Вводим информацию и жмем «Добавить». После чего в таблицу добавиться новая запись.

Рис. 2.14 Добавление данных о книге

Аналогичным образом  можно изменить выделенную запись в таблице, нажав на кнопку «Изменить данные»

Чтобы  отфильтровать  данные  в таблице по определенным критерия нужно воспользоваться  панелью «Фильтрация»(Рис. 2.15).

Рис. 2.15 Панель для фильтрации данных в таблице

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

Для просмотра  отчета необходимо нажать на кнопку «Отчет ‘Все книги’» и получим отчет по книгам всей таблицы или по отфильтрованным данным (Рис. 2.16)

Рис. 2.16 Отчет  по книгам

 

 

3. Технологическая  часть

 

3.1 Требования  к составу и параметрам технических  средств

Системные требования:

  • ОС Windows XP SP2 и старше
  • Процессор Pentium 4 2000 MHz.
  • Оперативную память 256 Mb.
  • Видеа directx совместимая с размером памяти не менее 128Mb.
  • Клавиатура.
  • Мышь.
  • Монитор c поддержкой разрешения 800х600.

Функциональное  назначение

Данная программа представляет собой конечную БД по теме «Книжный магазин».

Выполнение  программы

Программа запускается при помощи файла  «Project1.exe».

Заключение

 

В данной курсовой работе была разработана база данных книжного магазина.

В проекте  были исследованы три основных составляющих проектирования и создания БД, а  именно:

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

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

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

2. Проектирование  логической модели.

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

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