Автор работы: Пользователь скрыл имя, 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
3. Реализация Базы Данных.
После описания логической модели выбирается необходимая СУБД и создается физическая модель.
Основной задачей в данном разделе является непосредственно реализация БД на программном продукте.
Необходимо сформулировать основные требования и задачи к будущей системе и, опираясь на поставленные критерии провести анализ и сравнение программ СУБД.
Заключительным этапом является разработка приложения к СУБД.
Таким образом, разработанная база данных полностью отвечает предъявленным к ней требованиям.
unit UMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, jpeg, ExtCtrls;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
bbtnBooks: TBitBtn;
bbtnAuthor: TBitBtn;
bbtnGanr: TBitBtn;
bbtnPuplish: TBitBtn;
bbtnCustomer: TBitBtn;
bbtnPurchases: TBitBtn;
bbtnCountries: TBitBtn;
bbtnCities: TBitBtn;
bbtnIndex: TBitBtn;
Image1: TImage;
procedure bbtnBooksClick(Sender: TObject);
procedure bbtnAuthorClick(Sender: TObject);
procedure bbtnGanrClick(Sender: TObject);
procedure bbtnPuplishClick(Sender: TObject);
procedure bbtnCustomerClick(Sender: TObject);
procedure bbtnPurchasesClick(Sender: TObject);
procedure bbtnCountriesClick(Sender: TObject);
procedure bbtnCitiesClick(Sender: TObject);
procedure bbtnIndexClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses UBooks, UAuthor, UGanr, UPublisher, UCustomers, UPurchases, UCountries,
UCities, UIndex;
{$R *.dfm}
procedure TForm1.bbtnAuthorClick(Sender: TObject);
begin
frmAuthor := TfrmAuthor.Create(Application)
frmAuthor.Show;
end;
procedure TForm1.bbtnBooksClick(Sender: TObject);
begin
frmBooks := TfrmBooks.Create(Application);
frmBooks.Show;
end;
procedure TForm1.bbtnCitiesClick(Sender: TObject);
begin
frmCities := TfrmCities.Create(Application)
frmCities.Show;
end;
procedure TForm1.bbtnCountriesClick(
begin
frmCountries := TfrmCountries.Create(
frmCountries.Show;
end;
procedure TForm1.bbtnCustomerClick(
begin
frmCustomer := TfrmCustomer.Create(
frmCustomer.Show;
end;
procedure TForm1.bbtnGanrClick(Sender: TObject);
begin
frmGanr := TfrmGanr.Create(Application);
frmGanr.Show;
end;
procedure TForm1.bbtnIndexClick(Sender: TObject);
begin
frmIndex := TfrmIndex.Create(Application);
frmIndex.Show;
end;
procedure TForm1.bbtnPuplishClick(
begin
frmPublisher := TfrmPublisher.Create(
frmPublisher.Show;
end;
procedure TForm1.bbtnPurchasesClick(
begin
frmPurchases := TfrmPurchases.Create(
frmPurchases.Show;
end;
end.
unit UBooks;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls, Buttons, DBCtrls, Mask, ComCtrls,
RpCon, RpConDS, RpBase, RpSystem, RpDefine, RpRave;
type
TfrmBooks = class(TForm)
bbtnAddRecorBbook: TBitBtn;
bbtnUpdateDataRecordBook: TBitBtn;
DataSourceBooks: TDataSource;
ADOQueryBooks: TADOQuery;
DBGrid1: TDBGrid;
GroupBox1: TGroupBox;
Edit1: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label2: TLabel;
Label4: TLabel;
Label3: TLabel;
Label1: TLabel;
edtStart: TEdit;
Label5: TLabel;
edtEnd: TEdit;
Label6: TLabel;
Label7: TLabel;
edtMinPrice: TEdit;
edtMaxPrice: TEdit;
bbtnDeleteRecordBook: TBitBtn;
edtYearB: TEdit;
edtYearE: TEdit;
Label8: TLabel;
Label9: TLabel;
GroupBox2: TGroupBox;
RvProject1: TRvProject;
RvSystem1: TRvSystem;
RvDataSetConnection1: TRvDataSetConnection;
Button1: TButton;
procedure bbtnAddRecorBbookClick(Sender: TObject);
procedure bbtnUpdateDataRecordBookClick(
procedure Edit1Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure Edit4Change(Sender: TObject);
procedure Edit5Change(Sender: TObject);
procedure edtStartChange(Sender: TObject);
procedure edtEndChange(Sender: TObject);
procedure edtMinPriceChange(Sender: TObject);
procedure edtMaxPriceChange(Sender: TObject);
procedure edtYearEChange(Sender: TObject);
procedure edtYearBChange(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmBooks: TfrmBooks;
implementation
uses UDM, UModifyBooks;
{$R *.dfm}
procedure TfrmBooks.
begin
try
frmModifyBooks := TfrmModifyBooks.Create(
frmModifyBooks.bbtnAddBooks.
frmModifyBooks.bbtnEditBooks.
frmModifyBooks.ShowModal;
finally
ADOQueryBooks.Requery();
ADOQueryBooks.Last;
end;
end;
procedure TfrmBooks.
var
isb,sql : string;
edit : Boolean;
begin
try
isb := ADOQueryBooks.FieldByName('
frmModifyBooks := TfrmModifyBooks.Create(
frmModifyBooks.bbtnAddBooks.
frmModifyBooks.bbtnEditBooks.
frmModifyBooks.edtISBN.Text := ADOQueryBooks.FieldByName('
frmModifyBooks.edtNameBook.
frmModifyBooks.edtCountPages.
frmModifyBooks.edtPrice.Text := ADOQueryBooks.FieldByName('
frmModifyBooks.edtImprittDate.
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;
procedure TfrmBooks.Button1Click(Sender: TObject);
begin
RvProject1.Execute;
end;
procedure TfrmBooks.Edit1Change(Sender: TObject);
begin
if(Length(Edit1.Text) >0) then
begin
//ADOQueryBooks.Filtered := false;
ADOQueryBooks.Filter := 'ISBN LIKE ' +#39 +'%'+ Edit1.Text+'%' +#39;//+
//' or NAME LIKE '+#39 +'%'+ Edit1.Text+'%' +#39;
ADOQueryBooks.Filtered := true;
end
else
ADOQueryBooks.Filtered:=false;
end;
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;
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;
procedure TfrmBooks.Edit5Change(Sender: TObject);
begin
//if(StrToInt(edtStart.text)
end;
procedure TfrmBooks.edtEndChange(Sender: TObject);
var min:string;
begin
min :='30';
if(Length(edtStart.Text) >0) and (StrToInt(edtStart.Text) > 0) then
min := edtStart.Text;
if(Length(edtEnd.Text) >0) then begin
ADOQueryBooks.Filtered:= false;
ADOQueryBooks.Filter:='count_
' and count_page <= '+ edtEnd.Text;
ADOQueryBooks.Filtered:=true;
end
else
ADOQueryBooks.Filtered:=false;
end;
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;
procedure TfrmBooks.edtStartChange(
var max:string;
begin
max :='30';
if(Length(edtEnd.Text) >0) and (StrToInt(edtEnd.Text) > 0) then
max := edtEnd.Text;
if(Length(edtStart.Text) >0) then begin
ADOQueryBooks.Filtered:= false;
ADOQueryBooks.Filter:='count_
' and count_page <= '+ max;
ADOQueryBooks.Filtered:=true;
end
else
ADOQueryBooks.Filtered:=false;
end;
procedure TfrmBooks.edtYearBChange(
var
max : string;
begin
max :='9999';
if(Length(edtYearE.Text) >0) and (StrToInt(edtYearE.Text) > 0) then
max := edtYearE.Text;
if(Length(edtYearB.Text) >0) and (StrToInt(edtYearB.Text)<= StrToInt(max)) then begin
ADOQueryBooks.Filtered:= false;
ADOQueryBooks.Filter:='
' and imprint_date <= '+ max;
ADOQueryBooks.Filtered:=true;
end
else
ADOQueryBooks.Filtered:=false;
end;
procedure TfrmBooks.edtYearEChange(
var
min : string;
begin
min :='1980';
if(Length(edtYearB.Text) >0) and (StrToInt(edtYearB.Text) > 0) then
min := edtYearB.Text;
if(Length(edtYearE.Text) >0) and (StrToInt(edtYearE.Text)>=
ADOQueryBooks.Filtered:= false;
ADOQueryBooks.Filter:='
' and imprint_date <= '+ edtYearE.Text;
ADOQueryBooks.Filtered:=true;
end
else
ADOQueryBooks.Filtered:=false
end;
end.