Автор работы: Пользователь скрыл имя, 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
Рис. 2.4 Таблица «Города»
Рис. 2.5 Таблица «Страны»
Рис. 2.6 Таблица «Покупатели»
Рис. 2.7 Таблица «Покупки»
Рис. 2.8 Таблица «Издательство»
Рис. 2.9 Таблица «Индекс»
Запускаем 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.
begin
if (edtISBN.Text = '') or (edtNameBook.Text = '') or
(DBLookupComboBoxGanri.Text = '') or (DBLookupComboBoxPublishers.
begin ShowMessage('Заполнены не все поля!'); exit; end;
try
DataModule1.ADOConnection1.
with DataModule1.spInsertBooks do
begin
Parameters.ParamByName('@isbn'
Parameters.ParamByName('@name'
Parameters.ParamByName('@ganr'
//ShowMessage(
Parameters.ParamByName('@
Parameters.ParamByName('@
Parameters.ParamByName('@
Parameters.ParamByName('@
Parameters.ParamByName('@
ExecProc;
end;
DataModule1.ADOConnection1.
frmModifyBooks.Close;
except
DataModule1.ADOConnection1.
ShowMessage('Невозможно выполнить. Повторите.');
end;
end;
Далее напишем код, который изменяет данные в таблице
procedure TfrmBooks.
var
isb,sql : string;
edit : Boolean;
begin
try
isb := ADOQueryBooks.FieldByName('
//ShowMessage(isb);
frmModifyBooks := TfrmModifyBooks.Create(
frmModifyBooks.bbtnAddBooks.
frmModifyBooks.bbtnEditBooks.
frmModifyBooks.edtISBN.Text := ADOQueryBooks.FieldByName('
frmModifyBooks.edtNameBook.
frmModifyBooks.edtCountPages.
frmModifyBooks.edtPrice.Text := ADOQueryBooks.FieldByName('
frmModifyBooks.edtImprittDate.
//frmModifyBooks.ShowModal;
if frmModifyBooks.ShowModal = mrOk then
begin
if (frmModifyBooks.edtISBN.Text
= '') or (frmModifyBooks.edtNameBook.
(frmModifyBooks.
(frmModifyBooks.
or ( frmModifyBooks.
(frmModifyBooks.edtCountPages.
or ( frmModifyBooks.edtImprittDate.
then
begin
ShowMessage('Заполнены не все поля!'); exit;
end;
with frmModifyBooks, DataModule1.spUpdateBooks.
begin
ParamByName('@id').Value := edtISBN.Text;
ParamByName('@name').Value := edtNameBook.Text;
ParamByName('@ganr').Value
:= DBLookupComboBoxGanri.
ParamByName('@publish').Value
:= DBLookupComboBoxPublishers.
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.
end;
ADOQueryBooks.Requery();
ADOQueryBooks.Last;
end;
except
ShowMessage('Произошла ошибка! Повторите еще раз.');
end;
ADOQueryBooks.Requery();
ADOQueryBooks.Last;
end;
Далее реализуем процедуры, которые будут выполнять фильтрацию данных. Фильтрацию будем выполнять по следующим полям: № книги (ISBN), «Жанр», «Автор», «Кол-во стр.», «Цена», «Год издания»
Процедуры TfrmBooks.edtMaxPriceChange и TfrmBooks.edtMinPrice-
Change фильтруют данные по полю «Цена»
procedure TfrmBooks.edtMaxPriceChange(
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(
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;
Для остальных таблиц аналогичным способом создаем обработчики добавления/изменения данных в БД
Для того
чтобы приложение 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 Выбор драйвера поставщика данных
В следующем
окне выберем ранее созданный
компонент соединения
Далее для упрощения создания отчета воспользуемся мастером построения отчетов. Для этого выполним пункт меню Tools–Report Wizards–Simple Table. В ходе выполнения мастера потребуется выбрать поля, включаемые в отчет, и порядок следования полей, а также задать текст заголовка отчета. Пример отчета, созданного с помощью мастера, представлен на Рис. 2.12
Рис. 2.12 Форма отчета в Rave Reports.
Теперь
можно отредактировать
3. В компоненте RvProject задать свойство
ProjectFile, указав в нем имя ранее созданного
файла проекта отчета.
Теперь добавим кнопку и написав для нее обработчик, вызывающий предварительный просмотр отчета или выполняющий его печать:
procedure TfrmBooks.Button1Click(Sender: TObject);
begin
RvProject1.Execute;
end;
Запускаем наше приложение , на главной форме (см. Рис. 2.10) жмем кнопку «Книги» и перед нами открывается форма для работы с данными таблицы «Книги»(Рис. 2.13)
Рис. 2.13 Форма для работы с таблицей «Книги»
Для того чтобы добавить информацию о книге жмем кнопку «Добавить книгу» откроется следующее окно (Рис. 2.14). Вводим информацию и жмем «Добавить». После чего в таблицу добавиться новая запись.
Рис. 2.14 Добавление данных о книге
Аналогичным образом можно изменить выделенную запись в таблице, нажав на кнопку «Изменить данные»
Чтобы отфильтровать данные в таблице по определенным критерия нужно воспользоваться панелью «Фильтрация»(Рис. 2.15).
Рис. 2.15 Панель для фильтрации данных в таблице
При вводе данных в соответствующие поля автоматически происходит фильтрация записей по заданным на текущий момент данным. Вводить можно как и фразы целиком, так и их часть. Для отмены фильтрации просто очистите соответствующее поле.
Для просмотра отчета необходимо нажать на кнопку «Отчет ‘Все книги’» и получим отчет по книгам всей таблицы или по отфильтрованным данным (Рис. 2.16)
Рис. 2.16 Отчет по книгам
3. Технологическая часть
3.1 Требования
к составу и параметрам
Системные требования:
Функциональное назначение
Данная программа представляет собой конечную БД по теме «Книжный магазин».
Выполнение программы
Программа запускается при помощи файла «Project1.exe».
В данной курсовой работе была разработана база данных книжного магазина.
В проекте были исследованы три основных составляющих проектирования и создания БД, а именно:
1. Анализ предметной области.
В ходе анализа предметной области библиотеки, стало выявление цели суть, которой является автоматизация информационной деятельности библиотеки, постановка и достижение следующих задач:
2. Проектирование логической модели.
В данной главе описаны основные принципы и требования построения логической модели БД. В виду анализа предметной области было решено выбрать реляционный вид логической модели. Основной задачей на данном этапе исследования является разработка, и определение первичных и альтернативных ключей, разработка индексов, установка вида связей между таблицами, а также приведение модели к требуемому уровню нормальной формы – в данной модели отношения заданы в третьей нормальной форме.