Клиентское приложение
Главная форма приложения.
При запуске клиентского приложения "Inventarization" появляется главная форма:
С помощью этих кнопок производится навигация по таблицам базы данных, добавление и удаление данных, а также подтверждение всех произведенных с таблицей действий.
При выборе в главном меню «AboutProgramm» появляется окноcименем автора программы. Нажав на кнопку «Book» откроется окно таблицы, в котороый можно добавлять, удалять и редактировать данные о книгах которые есть либо пока что ещё нету в нашей базе данных:
Удаление, добавление и редактирование данных реализуется с помощью компонента TDBNavigator:
.
Все остальные формы созданы и реализованы аналогичным способом, и в каждой из них можно добавлять, удалять и редактировать данные уже существующие в нашей базе данных.
Вывод
В курсовом проекте мною было проведено проектирование и создание базы данных, а также клиентского приложения в среде разработки Delphy2007 в соответствии с заданием проекта.
При этом в процессе работы была создана база данных предназначеная для формирования и хранения имеющихся книг в библиотеке. Кроме того база данных позволяет хранить информацию так же об авторах книг, год публикации, кол-во страниц и место где хранится книга.
Созданное к базе данных клиентское приложение позволяет быстро найти нужного автора, книгу, отбор книг по жанрам.
Приложение
Скрипт для создания базы данных:
/*
*ER/Studio 4.3 SQL Code Generation
* Project : DATA MODEL
*
* Date Created : Monday, April 29, 2013 18:38:09
* Target DBMS : InterBase
*/
CREATE DATABASE "Plibrary8" USER "SYSDBA" PASSWORD "masterkey";
CONNECT "Plibrary8" USER "SYSDBA" PASSWORD "masterkey";
CREATE EXCEPTION ER_INSERT_ERR "Cannot insert because primary key value not found in parent";
CREATE EXCEPTION ER_DELETE_ERR "Cannot delete because foreign keys still exist in child";
CREATE EXCEPTION ER_UPDATE_ERR "Cannot update.";
/*
* TABLE: Avtor
*/
CREATE TABLE Avtor(
ID_Avtor INTEGER NOT NULL,
First_Name VARCHAR(20),
Last_Name VARCHAR(20),
CONSTRAINT PK8 PRIMARY KEY (ID_Avtor)) ;
/*
* TABLE: Avtor_Of_The_Book
*/
CREATE TABLE Avtor_Of_The_Book(
ISBN CHAR(20) NOT NULL,
ID_Avtor INTEGER NOT NULL,
CONSTRAINT PK10 PRIMARY KEY (ISBN,ID_Avtor)) ;
/*
* TABLE: Book
*/
CREATE TABLE Book(
ISBN CHAR(20) NOT NULL,
Title_Of_The_Book CHAR(50) NOT NULL,
City CHAR(30) NOT NULL,
Publishing CHAR(30) NOT NULL,
Year INTEGER NOT NULL,
Pages INTEGER NOT NULL,
Quantity INTEGER NOT NULL,
CONSTRAINT PK1 PRIMARY KEY (ISBN)) ;
/*
* TABLE: Book_janre
*/
CREATE TABLE Book_janre(
ID_janre INTEGER NOT NULL,
ISBN CHAR(20) NOT NULL,
CONSTRAINT PK13 PRIMARY KEY (ID_janre,ISBN)) ;
/*
* TABLE: BookItem
*/
CREATE TABLE BookItem(
InvNumber INTEGER NOT NULL,
ISBN CHAR(20) NOT NULL,
Date_Of_Purchase DATE NOT NULL,
room CHAR(10),
shelf INTEGER,
place INTEGER,
CONSTRAINT PK2 PRIMARY KEY (InvNumber)) ;
/*
* TABLE: Purchase
*/
CREATE TABLE Purchase(
ISBN CHAR(20) NOT NULL,
Date_Of_Purchase DATE NOT NULL,
Price FLOAT NOT NULL,
CONSTRAINT PK11 PRIMARY KEY (ISBN,Date_Of_Purchase)) ;
/*
* TABLE: Theme
*/
CREATE TABLE Theme(
ID_janre INTEGER NOT NULL,
Janre VARCHAR(20) NOT NULL,
CONSTRAINT PK12 PRIMARY KEY (ID_janre)) ;
/*
* INDEX: Ref817
*/
CREATE INDEX Ref817 ON Avtor_Of_The_Book(ID_Avtor);
/*
* INDEX: Ref118
*/
CREATE INDEX Ref118 ON Avtor_Of_The_Book(ISBN);
/*
* INDEX: Ref1221
*/
CREATE INDEX Ref1221 ON Book_janre(ID_janre);
/*
* INDEX: Ref122
*/
CREATE INDEX Ref122 ON Book_janre(ISBN);
/*
* INDEX: Ref1120
*/
CREATE INDEX Ref1120 ON BookItem(ISBN,Date_Of_Purchase);
/*
* INDEX: Ref119
*/
CREATE INDEX Ref119 ON Purchase(ISBN);
/*
* TABLE: Avtor_Of_The_Book
*/
ALTER TABLE Avtor_Of_The_Book ADD CONSTRAINT RefAvtor17
FOREIGN KEY (ID_Avtor)
REFERENCES Avtor(ID_Avtor);
ALTER TABLE Avtor_Of_The_Book ADD CONSTRAINT RefBook18
FOREIGN KEY (ISBN)
REFERENCES Book(ISBN);
/*
* TABLE: Book_janre
*/
ALTER TABLE Book_janre ADD CONSTRAINT RefTheme21
FOREIGN KEY (ID_janre)
REFERENCES Theme(ID_janre);
ALTER TABLE Book_janre ADD CONSTRAINT RefBook22
FOREIGN KEY (ISBN)
REFERENCES Book(ISBN);
/*
* TABLE: BookItem
*/
ALTER TABLE BookItem ADD CONSTRAINT RefPurchase20
FOREIGN KEY (ISBN,Date_Of_Purchase)
REFERENCES Purchase(ISBN,Date_Of_Purchase);
/*
* TABLE: Purchase
*/
ALTER TABLE Purchase ADD CONSTRAINT RefBook19
FOREIGN KEY (ISBN)
REFERENCES Book(ISBN);
/*
* PROCEDURE: AvtorInsProc
*/
SET TERM !! ;
CREATE PROCEDURE AvtorInsProc(
v_ID_Avtor INTEGER,
v_First_Name VARCHAR(20),
v_Last_Name VARCHAR(20))
AS
BEGIN
INSERT INTO Avtor(ID_Avtor,
First_Name,
Last_Name)
VALUES(:v_ID_Avtor,
:v_First_Name,
:v_Last_Name);
END;!!
SET TERM ; !!
/*
* PROCEDURE: AvtorUpdProc
*/
SET TERM !! ;
CREATE PROCEDURE AvtorUpdProc(
v_ID_Avtor INTEGER,
v_First_Name VARCHAR(20),
v_Last_Name VARCHAR(20))
AS
BEGIN
UPDATE Avtor
SET First_Name = :v_First_Name,
Last_Name = :v_Last_Name
WHERE ID_Avtor = :v_ID_Avtor;
END;!!
SET TERM ; !!
/*
* PROCEDURE: AvtorDelProc
*/
SET TERM !! ;
CREATE PROCEDURE AvtorDelProc(
v_ID_Avtor INTEGER)
AS
BEGIN
DELETE
FROM Avtor
WHERE ID_Avtor = :v_ID_Avtor;
END;!!
SET TERM ; !!
/*
* PROCEDURE: Avtor_Of_The_BookInsProc
*/
SET TERM !! ;
CREATE PROCEDURE Avtor_Of_The_BookInsProc(
v_ISBN CHAR(20),
v_ID_Avtor INTEGER)
AS
BEGIN
INSERT INTO Avtor_Of_The_Book(ISBN,
ID_Avtor)
VALUES(:v_ISBN,
:v_ID_Avtor);
END;!!
SET TERM ; !!
/*
* PROCEDURE: Avtor_Of_The_BookDelProc
*/
SET TERM !! ;
CREATE PROCEDURE Avtor_Of_The_BookDelProc(
v_ISBN CHAR(20),
v_ID_Avtor INTEGER)
AS
BEGIN
DELETE
FROM Avtor_Of_The_Book
WHERE ISBN = :v_ISBN
AND ID_Avtor = :v_ID_Avtor;
END;!!
SET TERM ; !!
/*
* PROCEDURE: BookInsProc
*/
SET TERM !! ;
CREATE PROCEDURE BookInsProc
(
v_ISBN CHAR(20),
v_Title_Of_The_Book CHAR(50),
v_City CHAR(30),
v_Publishing CHAR(30),
v_Year INTEGER,
v_Pages INTEGER,
v_Quantity INTEGER)
AS
BEGIN
INSERT INTO Book(ISBN,
Title_Of_The_Book,
City,
Publishing,
Year,
Pages,
Quantity)
VALUES(:v_ISBN,
:v_Title_Of_The_Book,
:v_City,
:v_Publishing,
:v_Year,
:v_Pages,
:v_Quantity);
END;!!
SET TERM ; !!
/*
* PROCEDURE: BookUpdProc
*/
SET TERM !! ;
CREATE PROCEDURE BookUpdProc(
v_ISBN CHAR(20),
v_Title_Of_The_Book CHAR(50),
v_City CHAR(30),
v_Publishing CHAR(30),
v_Year INTEGER,
v_Pages INTEGER,
v_Quantity INTEGER)
AS
BEGIN
UPDATE Book
SET Title_Of_The_Book = :v_Title_Of_The_Book,
City = :v_City,
Publishing = :v_Publishing,
Year = :v_Year,
Pages = :v_Pages,
Quantity = :v_Quantity
WHERE ISBN = :v_ISBN;
END;!!
SET TERM ; !!
/*
* PROCEDURE: BookDelProc
*/
SET TERM !! ;
CREATE PROCEDURE BookDelProc(
v_ISBN CHAR(20))
AS
BEGIN
DELETE
FROM Book
WHERE ISBN = :v_ISBN;
END;!!
SET TERM ; !!
/*
* PROCEDURE: Book_janreInsProc
*/
SET TERM !! ;
CREATE PROCEDURE Book_janreInsProc(
v_ID_janre INTEGER,
v_ISBN CHAR(20))
AS
BEGIN
INSERT INTO Book_janre(ID_janre,
ISBN)
VALUES(:v_ID_janre,
:v_ISBN);
END;!!
SET TERM ; !!
/*
* PROCEDURE: Book_janreDelProc
*/
SET TERM !! ;
CREATE PROCEDURE Book_janreDelProc(
v_ID_janre INTEGER,
v_ISBN CHAR(20))
AS
BEGIN
DELETE
FROM Book_janre
WHERE ID_janre = :v_ID_janre
AND ISBN = :v_ISBN;
END;!!
SET TERM ; !!
/*
* PROCEDURE: BookItemInsProc
*/
SET TERM !! ;
CREATE PROCEDURE BookItemInsProc(
v_InvNumber INTEGER,
v_ISBN CHAR(20),
v_Date_Of_Purchase DATE,
v_room CHAR(10),
v_shelf INTEGER,
v_place INTEGER)
AS
BEGIN
INSERT INTO BookItem(InvNumber,
ISBN,
Date_Of_Purchase,
room,
shelf,
place)
VALUES(:v_InvNumber,
:v_ISBN,
:v_Date_Of_Purchase,
:v_room,
:v_shelf,
:v_place);
END;!!
SET TERM ; !!
/*
* PROCEDURE: BookItemUpdProc
*/
SET TERM !! ;
CREATE PROCEDURE BookItemUpdProc(
v_InvNumber INTEGER,
v_ISBN CHAR(20),
v_Date_Of_Purchase DATE,
v_room CHAR(10),
v_shelf INTEGER,
v_place INTEGER)
AS
BEGIN
UPDATE BookItem
SET ISBN = :v_ISBN,
Date_Of_Purchase = :v_Date_Of_Purchase,
room = :v_room,
shelf = :v_shelf,
place = :v_place
WHERE InvNumber = :v_InvNumber;
END;!!
SET TERM ; !!
/*
* PROCEDURE: BookItemDelProc
*/
SET TERM !! ;
CREATE PROCEDURE BookItemDelProc(
v_InvNumber INTEGER)
AS
BEGIN
DELETE
FROM BookItem
WHERE InvNumber = :v_InvNumber;
END;!!
SET TERM ; !!
/*
* PROCEDURE: PurchaseInsProc
*/
SET TERM !! ;
CREATE PROCEDURE PurchaseInsProc(
v_ISBN CHAR(20),
v_Date_Of_Purchase DATE,
v_Price FLOAT)
AS
BEGIN
INSERT INTO Purchase(ISBN,
Date_Of_Purchase,
Price)
VALUES(:v_ISBN,
:v_Date_Of_Purchase,
:v_Price);
END;!!
SET TERM ; !!
/*
* PROCEDURE: PurchaseUpdProc
*/
SET TERM !! ;
CREATE PROCEDURE PurchaseUpdProc(
v_ISBN CHAR(20),
v_Date_Of_Purchase DATE,
v_Price FLOAT)
AS
BEGIN
UPDATE Purchase
SET Price = :v_Price
WHERE ISBN = :v_ISBN
AND Date_Of_Purchase = :v_Date_Of_Purchase;
END;!!
SET TERM ; !!
/*
* PROCEDURE: PurchaseDelProc
*/
SET TERM !! ;
CREATE PROCEDURE PurchaseDelProc(
v_ISBN CHAR(20),
v_Date_Of_Purchase DATE)
AS
BEGIN
DELETE
FROM Purchase
WHERE ISBN = :v_ISBN
AND Date_Of_Purchase = :v_Date_Of_Purchase;
END;!!
SET TERM ; !!
/*
* PROCEDURE: ThemeInsProc
*/
SET TERM !! ;
CREATE PROCEDURE ThemeInsProc(
v_ID_janre INTEGER,
v_Janre VARCHAR(20))
AS
BEGIN
INSERT INTO Theme(ID_janre,
Janre)
VALUES(:v_ID_janre,
:v_Janre);
END;!!
SET TERM ; !!
/*
* PROCEDURE: ThemeUpdProc
*/
SET TERM !! ;
CREATE PROCEDURE ThemeUpdProc(
v_ID_janre INTEGER,
v_Janre VARCHAR(20))
AS
BEGIN
UPDATE Theme
SET Janre = :v_Janre
WHERE ID_janre = :v_ID_janre;
END;!!
SET TERM ; !!
/*
* PROCEDURE: ThemeDelProc
*/
SET TERM !! ;
CREATE PROCEDURE ThemeDelProc(
v_ID_janre INTEGER)
AS
BEGIN
DELETE
FROM Theme
WHERE ID_janre = :v_ID_janre;
END;!!
SET TERM ; !!
Код модуля Inventarization:
unit Inventarization;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, StdCtrls, Grids, DBGrids, DB, Menus, Mask,
IWBaseComponent, IWBaseHTMLComponent, IWBaseHTML40Component, IWExtCtrls;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
AboutProgramm1: TMenuItem;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
procedure AboutProgramm1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses DataModul, Janre, Avtor, BOOK, AOTB, BookJanre, Purchase, BookItem;
{$R *.dfm}
procedure TForm1.AboutProgramm1Click(Sender: TObject);
begin
ShowMessage('Author Ustich Arthur');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
BOOK.Form4.Visible:=True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Avtor.Form3.Visible:=True;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Janre.Form2.Visible:=True;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Close();
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
AOTB.Form5.Visible:=True;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
BookJanre.Form6.Visible:=True;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
Purchase.Form7.Visible:=True;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
BookItem.Form8.Visible:=True;
end;
end.
Код модуля BOOK:
unit BOOK;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, StdCtrls, DB, Grids, DBGrids;
type
TForm4 = class(TForm)
DBGrid1: TDBGrid;
Label2: TLabel;
DBNavigator1: TDBNavigator;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses Avtor, DataModul, Inventarization, Janre;
{$R *.dfm}
end.
Код модуля AOTB:
unit AOTB;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls, DB, Grids, DBGrids, ExtCtrls;
type
TForm5 = class(TForm)
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses DataModul;
{$R *.dfm}
end.
Код модуля Avtor:
unit Avtor;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls, ExtCtrls, DB, Grids, DBGrids;
type
TForm3 = class(TForm)
DBNavigator2: TDBNavigator;
DataSource4: TDataSource;
DataSource2: TDataSource;
Label1: TLabel;
DBEdit2: TDBEdit;
DBEdit1: TDBEdit;
DBEdit3: TDBEdit;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
procedure DBNavigator2Click(Sender: TObject; Button: TNavigateBtn);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses DataModul, AOTB;
{$R *.dfm}
procedure TForm3.DBNavigator2Click(Sender: TObject; Button: TNavigateBtn);
var
SelectedAvtor: string;
begin
dataModule4.qrAvtor.Active:=false;
SelectedAvtor:=DBEdit3.Text;
DataModul.DataModule4.qrAvtor.ParamByName('BookAvtor').Value:= SelectedAvtor;
dataModule4.qrAvtor.Active:=true;
end;
end.
Код модуля BookItem:
unit BookItem;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids;
type
TForm8 = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form8: TForm8;
implementation
{$R *.dfm}
uses DataModul;
end.
Код модуля BookJanre:
unit BookJanre;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids;
type
TForm6 = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
uses DataModul;
{$R *.dfm}
end.
Код модуля Janre:
unit Janre;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls, DB, Mask;
type
TForm2 = class(TForm)
DataSource2: TDataSource;
Label1: TLabel;
DataSource4: TDataSource;
DBNavigator2: TDBNavigator;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
DBEdit1: TDBEdit;
DBGrid2: TDBGrid;
procedure DBNavigator2Click(Sender: TObject; Button: TNavigateBtn);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses DataModul, Inventarization;
{$R *.dfm}
procedure TForm2.DBNavigator2Click(Sender: TObject; Button: TNavigateBtn);
var
SelectedJanre: string;
begin
dataModule4.qrRed.Active:=false;
SelectedJanre:=DBEdit1.Text;
DataModul.DataModule4.qrRed.ParamByName('BookJanre').Value:= SelectedJanre;
dataModule4.qrRed.Active:=true;
end;
end.
Код модуля Purchse:
unit Purchase;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids;
type
TForm7 = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
implementation
{$R *.dfm}
uses DataModul;
end.
Список литературы
Ковязин А.Н., Востриков С.М. «Архитектура, администрирование и разработка приложений баз данных в InterBase/Firebird/Yaffil»- М.: КУДИЦ-ОБРАЗ, 2002. – 432 с.
Пачеко К., Тейксейра С., «Borland Delphy 6. Руководство разработчика. : - М.: Издательский дом «Вильямс», 2002. – 1120с.
Хомонентко А., Гофман В., «Самоучитель Delphi. – СПб.: БХВ-Петербург, 2003. – 576 с.
Фаронов В. «Программирование баз данных в Delphy6 учебный курс - СПб.: Питер, 2002. – 352с.: ил.
А.Я. Архангельский «Программирование в Delphi7» — М.:ООО «Бином-Пресс», 2004 г. — 1152 с.: ил.