Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет_курсов_пример.doc
Скачиваний:
11
Добавлен:
11.02.2016
Размер:
483.33 Кб
Скачать

Клиентское приложение

Главная форма приложения.

При запуске клиентского приложения "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.

Список литературы

  1. Ковязин А.Н., Востриков С.М. «Архитектура, администрирование и разработка приложений баз данных в InterBase/Firebird/Yaffil»- М.: КУДИЦ-ОБРАЗ, 2002. – 432 с.

  2. Пачеко К., Тейксейра С., «Borland Delphy 6. Руководство разработчика. : - М.: Издательский дом «Вильямс», 2002. – 1120с.

  3. Хомонентко А., Гофман В., «Самоучитель Delphi. – СПб.: БХВ-Петербург, 2003. – 576 с.

  4. Фаронов В. «Программирование баз данных в Delphy6 учебный курс - СПб.: Питер, 2002. – 352с.: ил.

  5. А.Я. Архангельский «Программирование в Delphi7» — М.:ООО «Бином-Пресс», 2004 г. — 1152 с.: ил.

29