База данных библиотеки "Стэлс"

Проблемы, обзор и анализ публикаций процесса функционирования библиотеки и обоснование его автоматизации. Анализ альтернативного программного обеспечения по автоматизации работы библиотек. Моделирование процесса функционирования библиотеки "Стэлс".

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 09.01.2014
Размер файла 1,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

end;

var

LitFrm: TLitFrm;

implementation

uses MainUnit, DataUnit, BookNameUnit, MPNameUnit;

{$R *.dfm}

procedure TLitFrm.FormCreate(Sender: TObject);

begin

case MainFrm.LitTypeCB.ItemIndex of

0: begin

LName.Caption := 'Имя автора';

NameLit.Text := MainFrm.AuthorName.Text;

GetBooks;

end;

1: begin

LName.Caption := 'Название журнала';

NameLit.Text := MainFrm.LitName.Text;

GetMagazines;

end;

2: begin

LName.Caption := 'Название газеты';

NameLit.Text := MainFrm.LitName.Text;

GetPapers;

end;

end;

end;

procedure TLitFrm.GetBooks;

begin

with DModule.IBLitDataSet do begin

close;

SelectSQL.Clear;

SelectSQL.Add( 'select * from GetBooks( ''' +

NameLit.Text + ''', ''' +

SDate.Text + ''', ''' +

EDate.Text + ''' );' );

open;

end;

end;

procedure TLitFrm.GetMagazines;

begin

with DModule.IBLitDataSet do begin

close;

SelectSQL.Clear;

SelectSQL.Add( 'select * from GetMagazines( ''' +

AnsiUpperCase( NameLit.Text ) + ''', ''' +

SDate.Text + ''', ''' +

EDate.Text + ''' );' );

open;

end;

end;

procedure TLitFrm.GetPapers;

begin

with DModule.IBLitDataSet do begin

close;

SelectSQL.Clear;

SelectSQL.Add( 'select * from GetNewsPaper( ''' +

AnsiUpperCase( NameLit.Text ) + ''', ''' +

SDate.Text + ''', ''' +

EDate.Text + ''' );' );

open;

end;

end;

procedure TLitFrm.AddBook;

begin

if Trim( NameLit.Text ) = '' then begin

MessageDlg( 'Введите имя автора!', mtWarning, [mbOk], 0 );

exit;

end;

Application.CreateForm( TBookNameFrm, BookNameFrm );

BookNameFrm.ShowModal;

if not res then

exit;

with Dmodule.IBProc do begin

StoredProcName := 'ADDBOOK';

ParamByName( 'iLitName' ).AsString := AnsiUpperCase( LitName );

ParamByName( 'iAuthorName' ).AsString := AnsiUpperCase( NameLit.Text );

ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );

ParamByName( 'iPrintDate' ).AsDate := PrintDate;

try

ExecProc;

case ParamByName( 'oResult' ).AsInteger of

-1: begin

MessageDlg( 'Ошибка: информация об указанном авторе не найдена!',

mtError, [mbOk], 0 );

end;

-2: begin

MessageDlg( 'Ошибка: информация об указанной тепографии не найдена!',

mtError, [mbOk], 0 );

exit;

end;

-3: begin

MessageDlg( 'Ошибка: информация об указанной книге уже хранится в базе данных!',

mtError, [mbOk], 110 );

exit;

end;

else begin

GetBooks;

with DModule.IBLitDataSet do begin

RecNo := DModule.IBProc.ParamByName( 'oResult' ).AsInteger;

end;

end;

end;

except on e: exception do

MessageDlg( 'Неизвестная ошибка!', mtError, [mbOk], 0 );

end;

end;

end;

procedure TLitFrm.AddPaper;

begin

if Trim( NameLit.Text ) = '' then begin

MessageDlg( 'Введите название газеты!', mtWarning, [mbOk], 0 );

exit;

end;

Application.CreateForm( TMPNameFrm, MPNameFrm );

MPNameFrm.ShowModal;

if not res then

exit;

with Dmodule.IBProc do begin

StoredProcName := 'ADDPAPER';

ParamByName( 'iLitName' ).AsString := AnsiUpperCase( LitName );

ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );

ParamByName( 'iPrintDate' ).AsDate := PrintDate;

try

ExecProc;

case ParamByName( 'oResult' ).AsInteger of

-1: begin

MessageDlg( 'Ошибка: информация об указанной тепографии не найдена!',

mtError, [mbOk], 0 );

exit;

end;

-2: begin

MessageDlg( 'Ошибка: информация об указанной книге уже хранится в базе данных!',

mtError, [mbOk], 110 );

exit;

end;

else begin

GetPapers;

with DModule.IBLitDataSet do begin

RecNo := DModule.IBProc.ParamByName( 'oResult' ).AsInteger;

end;

end;

end;

except on e: exception do

MessageDlg( 'Неизвестная ошибка!', mtError, [mbOk], 0 );

end;

end;

end;

procedure TLitFrm.AddMagazine;

begin

if Trim( NameLit.Text ) = '' then begin

MessageDlg( 'Введите название журнала!', mtWarning, [mbOk], 0 );

exit;

end;

Application.CreateForm( TMPNameFrm, MPNameFrm );

MPNameFrm.ShowModal;

if not res then

exit;

with Dmodule.IBProc do begin

StoredProcName := 'ADDMAGAZINE';

ParamByName( 'iLitName' ).AsString := AnsiUpperCase( LitName );

ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );

ParamByName( 'iPrintDate' ).AsDate := PrintDate;

try

ExecProc;

case ParamByName( 'oResult' ).AsInteger of

-1: begin

MessageDlg( 'Ошибка: информация об указанной тепографии не найдена!',

mtError, [mbOk], 0 );

exit;

end;

-2: begin

MessageDlg( 'Ошибка: информация об указанной книге уже хранится в базе данных!',

mtError, [mbOk], 110 );

exit;

end;

else begin

GetMagazines;

with DModule.IBLitDataSet do begin

RecNo := DModule.IBProc.ParamByName( 'oResult' ).AsInteger;

end;

end;

end;

except on e: exception do

MessageDlg( 'Неизвестная ошибка!', mtError, [mbOk], 0 );

end;

end;

end;

procedure TLitFrm.UpdBook;

begin

if Trim( NameLit.Text ) = '' then begin

MessageDlg( 'Введите имя автора!', mtWarning, [mbOk], 0 );

exit;

end;

Application.CreateForm( TBookNameFrm, BookNameFrm );

BookNameFrm.ShowModal;

if not res then

exit;

with Dmodule.IBProc do begin

StoredProcName := 'UPDBOOK';

ParamByName( 'iNumLit' ).AsInteger := DModule.IBLitDataSet.FieldByName( 'oNumLit' ).AsInteger;

ParamByName( 'iLitName' ).AsString := AnsiUpperCase( LitName );

ParamByName( 'iAuthorName' ).AsString := AnsiUpperCase( NameLit.Text );

ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );

ParamByName( 'iPrintDate' ).AsDate := PrintDate;

try

ExecProc;

case ParamByName( 'oResult' ).AsInteger of

-1: begin

MessageDlg( 'Ошибка: информация об указанном авторе не найдена!',

mtError, [mbOk], 0 );

end;

-2: begin

MessageDlg( 'Ошибка: информация об указанной тепографии не найдена!',

mtError, [mbOk], 0 );

exit;

end;

-3: begin

MessageDlg( 'Ошибка: информация об указанной книге уже хранится в базе данных!',

mtError, [mbOk], 110 );

exit;

end;

else begin

GetBooks;

with DModule.IBLitDataSet do begin

RecNo := DModule.IBProc.ParamByName( 'oResult' ).AsInteger;

end;

end;

end;

except on e: exception do

MessageDlg( 'Неизвестная ошибка!', mtError, [mbOk], 0 );

end;

end;

end;

procedure TLitFrm.UpdMagazine;

begin

if Trim( NameLit.Text ) = '' then begin

MessageDlg( 'Введите название журнала!', mtWarning, [mbOk], 0 );

exit;

end;

Application.CreateForm( TMPNameFrm, MPNameFrm );

MPNameFrm.ShowModal;

if not res then

exit;

with Dmodule.IBProc do begin

StoredProcName := 'UPDMAGAZINE';

ParamByName( 'iNumLit' ).AsInteger := DModule.IBLitDataSet.FieldByName( 'oNumLit' ).AsInteger;

ParamByName( 'iLitName' ).AsString := AnsiUpperCase( LitName );

ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );

ParamByName( 'iPrintDate' ).AsDate := PrintDate;

try

ExecProc;

case ParamByName( 'oResult' ).AsInteger of

-1: begin

MessageDlg( 'Ошибка: информация об указанной тепографии не найдена!',

mtError, [mbOk], 0 );

exit;

end;

-2: begin

MessageDlg( 'Ошибка: информация об указанной книге уже хранится в базе данных!',

mtError, [mbOk], 110 );

exit;

end;

else begin

GetMagazines;

with DModule.IBLitDataSet do begin

RecNo := DModule.IBProc.ParamByName( 'oResult' ).AsInteger;

end;

end;

end;

except on e: exception do

MessageDlg( 'Неизвестная ошибка!', mtError, [mbOk], 0 );

end;

end;

end;

procedure TLitFrm.UpdPaper;

begin

if Trim( NameLit.Text ) = '' then begin

MessageDlg( 'Введите название газеты!', mtWarning, [mbOk], 0 );

exit;

end;

Application.CreateForm( TMPNameFrm, MPNameFrm );

MPNameFrm.ShowModal;

if not res then

exit;

with Dmodule.IBProc do begin

StoredProcName := 'UPDPAPER';

ParamByName( 'iNumLit' ).AsInteger := DModule.IBLitDataSet.FieldByName( 'oNumLit' ).AsInteger;

ParamByName( 'iLitName' ).AsString := AnsiUpperCase( LitName );

ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );

ParamByName( 'iPrintDate' ).AsDate := PrintDate;

try

ExecProc;

case ParamByName( 'oResult' ).AsInteger of

-1: begin

MessageDlg( 'Ошибка: информация об указанной тепографии не найдена!',

mtError, [mbOk], 0 );

exit;

end;

-2: begin

MessageDlg( 'Ошибка: информация об указанной книге уже хранится в базе данных!',

mtError, [mbOk], 110 );

exit;

end;

else begin

GetPapers;

with DModule.IBLitDataSet do begin

RecNo := DModule.IBProc.ParamByName( 'oResult' ).AsInteger;

end;

end;

end;

except on e: exception do

MessageDlg( 'Неизвестная ошибка!', mtError, [mbOk], 0 );

end;

end;

end;

procedure TLitFrm.DelLit( litType: byte );

begin

if MessageDlg( 'Удалить инфо о литературе: ' +

DModule.IBLitDataSet.FieldByName( 'oLitName' ).AsString + '?',

mtConfirmation, [mbYes, mbNo], 0 ) = mrYes then

with DModule.IBProc do begin

StoredProcName := 'DELLIT';

ParamByName( 'iNumLit' ).asInteger := DModule.IBLitDataSet.FieldByName( 'oNumLit' ).AsInteger;

ExecProc;

if ( DModule.IBProc.ParamByName( 'oResult' ).AsInteger = -1 ) then

MessageDlg( 'Ошибка: данная литература выдана читателю!' + #10 +

' Удаление невозможно!', mtError, [mbOk], 180 )

else

case litType of

0: GetBooks;

1: GetMagazines;

2: GetPapers;

end;

end;

end;

procedure TLitFrm.LitSearchBtnClick(Sender: TObject);

begin

case MainFrm.LitTypeCB.ItemIndex of

0: GetBooks;

1: GetMagazines;

2: GetPapers;

end;

end;

procedure TLitFrm.AddLitBitClick(Sender: TObject);

begin

case MainFrm.LitTypeCB.ItemIndex of

0: AddBook;

1: AddMagazine;

2: AddPaper;

end;

end;

procedure TLitFrm.BitBtn5Click(Sender: TObject);

begin

case MainFrm.LitTypeCB.ItemIndex of

0: begin

MainFrm.LitName.Text := DModule.IBLitDataSet.FieldByName( 'oLitName' ).AsString;

MainFrm.PDate.Text := DModule.IBLitDataSet.FieldByName( 'oPrintDate' ).AsString;

end;

1, 2: begin

MainFrm.LitName.Text := DModule.IBLitDataSet.FieldByName( 'oLitName' ).AsString;

MainFrm.PDate.Text := DModule.IBLitDataSet.FieldByName( 'oPrintDate' ).AsString;

end;

end;

MainFrm.LitNum := DModule.IBLitDataSet.FieldByName( 'oNumLit' ).AsInteger;

Close;

end;

procedure TLitFrm.BitBtn3Click(Sender: TObject);

begin

case MainFrm.LitTypeCB.ItemIndex of

0: UpdBook;

1: UpdMagazine;

2: UpdPaper;

end;

end;

procedure TLitFrm.BitBtn4Click(Sender: TObject);

begin

DelLit( MainFrm.LitTypeCB.ItemIndex );

end;

procedure TLitFrm.SDateKeyPress(Sender: TObject; var Key: Char);

var keys: set of char;

begin

keys := ['0'..'9', '.', chr( 8 )];

if not( key in keys ) then

key := #0;

end;

end.

unit MPNameUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TMPNameFrm = class(TForm)

GroupBox1: TGroupBox;

PDate: TEdit;

GroupBox2: TGroupBox;

OkBtn: TButton;

CancelBtn: TButton;

procedure OkBtnClick(Sender: TObject);

procedure CancelBtnClick(Sender: TObject);

procedure PDateKeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MPNameFrm: TMPNameFrm;

implementation

uses MainUnit, LitUnit;

{$R *.dfm}

procedure TMPNameFrm.OkBtnClick(Sender: TObject);

begin

if ( Trim( LitFrm.NameLit.Text ) = '' ) or

( Trim( PDate.Text ) = '' ) then begin

MessageDlg( 'Ошибка: не введены все обязательные значения полей!',

mtWarning, [mbOk], 0 );

exit;

end;

with LitFrm do begin

try

LitName := NameLit.Text;

PrintDate := StrToDate( Trim( PDate.Text ) );

res := true;

MPNameFrm.Close;

except on EConvertError do begin

MessageDlg( 'Ошибка: введено ошибочное значение в поле "дата"',

mtError, [mbOk], 0 );

res := false;

end;

end;

end;

end;

procedure TMPNameFrm.CancelBtnClick(Sender: TObject);

begin

LitFrm.res := false;

Close;

end;

procedure TMPNameFrm.PDateKeyPress(Sender: TObject; var Key: Char);

var keys: set of char;

begin

keys := ['0'..'9', '.', chr( 8 )];

if not( key in keys ) then

key := #0;

end;

end.

unit AuthorNameUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

type

TAuthorNameFrm = class(TForm)

GroupBox1: TGroupBox;

EFamNP: TEdit;

EBDate: TEdit;

EDDate: TEdit;

GroupBox2: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

OkBtn: TBitBtn;

CancelBtn: TBitBtn;

procedure OkBtnClick(Sender: TObject);

procedure CancelBtnClick(Sender: TObject);

procedure EFamNPKeyPress(Sender: TObject; var Key: Char);

procedure EBDateKeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

AuthorNameFrm: TAuthorNameFrm;

implementation

uses AuthorUnit;

{$R *.dfm}

procedure TAuthorNameFrm.OkBtnClick(Sender: TObject);

begin

if ( EFamNP.Text = '' ) or ( EBDate.Text = '' ) then begin

MessageDlg( 'Ошибка: не введены все обязательные значения полей!',

mtWarning, [mbOk], 0 );

exit;

end;

try

with AuthorFrm do begin

Res := true;

FamNP := Trim( EFamNP.Text );

BDate := StrToDate( Trim( EBDate.Text ) );

if ( EDDate.Text <> '' ) then

DDate := StrToDate( Trim( EDDate.Text ) );

end;

Close;

except on EConvertError do

MessageDlg( 'Ошибка: введено ошибочное значение в поле "дата"',

mtError, [mbOk], 111 );

end;

end;

procedure TAuthorNameFrm.CancelBtnClick(Sender: TObject);

begin

AuthorFrm.Res := false;

Close;

end;

procedure TAuthorNameFrm.EFamNPKeyPress(Sender: TObject; var Key: Char);

var keys: set of char;

begin

keys := ['а'..'я', 'А'..'Я', ' ', chr( 8 )];

if not( key in keys ) then

key := #0;

end;

procedure TAuthorNameFrm.EBDateKeyPress(Sender: TObject; var Key: Char);

var keys: set of char;

begin

keys := ['0'..'9', '.', chr( 8 )];

if not( key in keys ) then

key := #0;

end;

end.

unit BookNameUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TBookNameFrm = class(TForm)

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

BName: TEdit;

TName: TEdit;

PDate: TEdit;

Button1: TButton;

Button2: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure BNameKeyPress(Sender: TObject; var Key: Char);

procedure PDateKeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

BookNameFrm: TBookNameFrm;

implementation

uses MainUnit, LitUnit;

{$R *.dfm}

procedure TBookNameFrm.FormCreate(Sender: TObject);

begin

Caption := LitFrm.NameLit.Text;

BName.Text := MainFrm.LitName.Text;

TName.Text := MainFrm.Tepography.Text;

end;

procedure TBookNameFrm.Button1Click(Sender: TObject);

begin

if ( Trim( BName.Text ) = '' ) or

( Trim( PDate.Text ) = '' ) then begin

MessageDlg( 'Ошибка: не введены все обязательные значения полей!',

mtWarning, [mbOk], 0 );

exit;

end;

with LitFrm do begin

LitName := Trim( BName.Text );

TepName := Trim( TName.Text );

try

PrintDate := StrToDate( Trim( PDate.Text ) );

res := true;

BookNameFrm.Close;

except on EConvertError do begin

MessageDlg( 'Ошибка: введено ошибочное значение в поле "дата"',

mtError, [mbOk], 0 );

res := false;

end;

end;

end;

end;

procedure TBookNameFrm.Button2Click(Sender: TObject);

begin

LitFrm.Res := false;

Close;

end;

procedure TBookNameFrm.BNameKeyPress(Sender: TObject; var Key: Char);

var keys: set of char;

begin

keys := ['а'..'я', 'А'..'Я', ' ', chr( 8 )];

if not( key in keys ) then

key := #0;

end;

procedure TBookNameFrm.PDateKeyPress(Sender: TObject; var Key: Char);

var keys: set of char;

begin

keys := ['0'..'9', '.', chr( 8 )];

if not( key in keys ) then

key := #0;

end;

end.

unit TepUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, Grids, DBGrids;

type

TTepFrm = class(TForm)

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

GroupBox4: TGroupBox;

DBGrid: TDBGrid;

CitiesCB: TComboBox;

BitBtn1: TBitBtn;

BitBtn3: TBitBtn;

CountriesCB: TComboBox;

BitBtn2: TBitBtn;

BitBtn4: TBitBtn;

BitBtn5: TBitBtn;

Label1: TLabel;

Label2: TLabel;

procedure FormShow(Sender: TObject);

procedure CountriesCBChange(Sender: TObject);

procedure CitiesCBChange(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn4Click(Sender: TObject);

procedure BitBtn5Click(Sender: TObject);

private

procedure FillCountryCB;

procedure FillCityCB;

procedure GetTepography;

public

res: boolean;

TepName: ShortString;

end;

var

TepFrm: TTepFrm;

implementation

uses DataUnit, TepNameUnit, CityUnit, CountryUnit, MainUnit;

{$R *.dfm}

procedure TTepFrm.FillCountryCB;

var i: integer;

begin

with DModule.IBCountryDataSet do begin

CountriesCB.Items.Clear;

Close;

Open;

i := 0;

while not EOF do begin

i := CountriesCB.Items.Add( FieldByName( 'oCountryName' ).AsString );

if CountriesCB.Items.Strings[i] =

DModule.IBCountryDataSet.FieldByName( 'oCountryName' ).AsString then

CountriesCB.ItemIndex := i;

next;

end;

Close;

end;

end;

procedure TTepFrm.FillCityCB;

begin

with DModule.IBCityDataSet do begin

CitiesCB.Items.Clear;

CitiesCB.Text := '';

Close;

SelectSQL.Clear;

SelectSQL.Add( 'select * from GetCities( ''' +

CountriesCB.Items.Strings[ CountriesCB.ItemIndex ] + ''' );' );

Open;

while not EOF do begin

CitiesCB.Items.Add( FieldByName( 'oCityName' ).AsString );

next;

end;

CitiesCB.ItemIndex := 0;

Close;

end;

end;

procedure TTepFrm.GetTepography;

begin

with DModule.IBTepDataSet do begin

close;

SelectSQL.Clear;

SelectSQL.Add( 'select * from GetTepography( ''' +

CitiesCB.Items.Strings[ CitiesCB.ItemIndex ] + ''' );' );

Open;

end;

end;

procedure TTepFrm.FormShow(Sender: TObject);

begin

FillCountryCB;

FillCityCB;

GetTepography;

end;

procedure TTepFrm.CountriesCBChange(Sender: TObject);

begin

FillCityCB;

GetTepography;

end;

procedure TTepFrm.CitiesCBChange(Sender: TObject);

begin

GetTepography;

end;

procedure TTepFrm.BitBtn3Click(Sender: TObject);

begin

if ( CitiesCB.ItemIndex = -1 ) or( CitiesCB.text = '' ) then begin

MessageDlg( 'Для ввода новой тепографии выберите город,' + #10 +

' к которой она относится!', mtWarning, [mbOk], 0 );

exit;

end;

Application.CreateForm( TTepNameFrm, TepNameFrm );

TepNameFrm.ShowModal;

if not res then

exit;

with Dmodule.IBProc do begin

StoredProcName := 'ADDTEPOGRAPHY';

ParamByName( 'iCityName' ).AsString :=

AnsiUpperCase( CitiesCB.Items.Strings[ CitiesCB.ItemIndex ] );

ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );

try

ExecProc;

GetTepography;

with DModule do

IBTepDataSet.RecNo := IBProc.ParamByName( 'oResult' ).AsInteger;

except on e: exception do

MessageDlg( 'Ошибка: информация о данной тепографии уже хранится в базе данных!',

mtError, [mbOk], 0 );

end;

end;

end;

procedure TTepFrm.BitBtn2Click(Sender: TObject);

begin

if ( CitiesCB.ItemIndex = -1 ) or( CitiesCB.text = '' ) then begin

MessageDlg( 'Для ввода новой тепографии выберите город,' + #10 +

' к которой она относится!', mtWarning, [mbOk], 0 );

exit;

end;

Application.CreateForm( TTepNameFrm, TepNameFrm );

TepNameFrm.ShowModal;

if not res then

exit;

with Dmodule.IBProc do begin

StoredProcName := 'UPDTEPOGRAPHY';

ParamByName( 'iNumTep' ).AsString :=

DModule.IBTepDataSet.FieldByName( 'oNumTep' ).AsString;

ParamByName( 'iTepName' ).AsString := AnsiUpperCase( TepName );

try

ExecProc;

GetTepography;

with DModule do

IBTepDataSet.RecNo := IBProc.ParamByName( 'oResult' ).AsInteger;

except on e: exception do

MessageDlg( 'Ошибка: информация о данной тепографии уже хранится в базе данных!',

mtError, [mbOk], 0 );

end;

end;

end;

procedure TTepFrm.BitBtn1Click(Sender: TObject);

begin

Application.CreateForm( TCityFrm, CityFrm );

CityFrm.ShowModal;

end;

procedure TTepFrm.BitBtn4Click(Sender: TObject);

begin

if MessageDlg( 'Удалить информацию о типографии: ' +

DModule.IBTepDataSet.FieldByName( 'oTepName' ).AsString +

'?' + #10 +

'ПРЕДУПРИЖДЕНИЕ: будет удалена инфо о книгах, выпущенных данной типографией!',

mtConfirmation, [mbYes, mbNo], 0 ) = mrNo then

exit;

with Dmodule.IBProc do begin

StoredProcName := 'DELTEPOGRAPHY';

ParamByName( 'iNumTep' ).AsString :=

DModule.IBTepDataSet.FieldByName( 'oNumTep' ).AsString;

ExecProc;

if ParamByName( 'oResult' ).AsInteger <> 0 then

MessageDlg( 'Ошибка: литература, которая была выпущена удаляемой тепографией,' + #10 +

' выдана читателю!', mtError, [mbOk], 170 )

else

with DModule.IBTepDataSet do begin

Close;

Open;

end;

end;

end;

procedure TTepFrm.BitBtn5Click(Sender: TObject);

begin

MainFrm.Tepography.text := DModule.IBTepDataSet.FieldByName( 'oTepName' ).asString;

Close;

end;

end.

unit TepNameUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TTepNameFrm = class(TForm)

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

ETepName: TEdit;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

TepNameFrm: TTepNameFrm;

implementation

uses TepUnit;

{$R *.dfm}

procedure TTepNameFrm.Button1Click(Sender: TObject);

begin

with TepFrm do begin

TepName := AnsiUpperCase( Trim( ETepName.Text ) );

res := true;

end;

close;

end;

procedure TTepNameFrm.Button2Click(Sender: TObject);

begin

TepFrm.res := false;

close;

end;

end.

unit CityUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, Grids, DBGrids;

type

TCityFrm = class(TForm)

GroupBox1: TGroupBox;

DBGrid: TDBGrid;

GroupBox2: TGroupBox;

AddCityBtn: TBitBtn;

UpdCityBtn: TBitBtn;

DelCityBtn: TBitBtn;

OkBtn: TBitBtn;

GroupBox3: TGroupBox;

CountriesCB: TComboBox;

CountryBtn: TBitBtn;

procedure CountriesCBSelect(Sender: TObject);

procedure OkBtnClick(Sender: TObject);

procedure AddCityBtnClick(Sender: TObject);

procedure UpdCityBtnClick(Sender: TObject);

procedure DelCityBtnClick(Sender: TObject);

procedure AddCountryBtnClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure CountryBtnClick(Sender: TObject);

private

public

CityName:ShortString;

procedure FillCountryCB;

procedure GetDataFromCity;

end;

var

CityFrm: TCityFrm;

implementation

{$R *.dfm}

uses MainUnit, DataUnit, CountryUnit, CNameUnit, CityNameUnit, WorkerUnit,

TepUnit;

procedure TCityFrm.FillCountryCB;

var i: integer;

begin

with DModule.IBCountryDataSet do begin

CountriesCB.Items.Clear;

Close;

Open;

i := 0;

while not EOF do begin

i := CountriesCB.Items.Add( FieldByName( 'oCountryName' ).AsString );

if CountriesCB.Items.Strings[i] =

DModule.IBCountryDataSet.FieldByName( 'oCountryName' ).AsString then

CountriesCB.ItemIndex := i;

next;

end;

Close;

end;

end;

procedure TCityFrm.GetDataFromCity;

begin

with DModule.IBCityDataSet do begin

Close;

SelectSQL.Clear;

SelectSQL.Add( 'select * from GetCities( ''' +

CountriesCB.Items.Strings[ CountriesCB.ItemIndex ] + ''' );' );

Open;

end;

end;

procedure TCityFrm.CountriesCBSelect(Sender: TObject);

begin

GetDataFromCity;

end;

procedure TCityFrm.OkBtnClick(Sender: TObject);

begin

with DModule do

case MainFrm.ActiveWnd of

1: MainFrm.RDocCity.Text := AnsiUpperCase( IBCityDataSet.FieldByName( 'oCityName' ).AsString );

2: WorkerFrm.WDocCity.Text := AnsiUpperCase( IBCityDataSet.FieldByName( 'oCityName' ).AsString );

4: TepFrm.OnShow( sender );

end;

Close;

end;

procedure TCityFrm.AddCityBtnClick(Sender: TObject);

begin

if CountriesCB.ItemIndex = -1 then begin

MessageDlg( 'Для ввода нового города выберите страну,' + #10 +

' к которой он относится!', mtWarning, [mbOk], 0 );

exit;

end;

Application.CreateForm( TCityNameFrm, CityNameFrm );

CityNameFrm.ShowModal;

if CityName = '' then

exit;

with Dmodule.IBProc do begin

StoredProcName := 'ADDCITY';

ParamByName( 'iCountryName' ).AsString :=

AnsiUpperCase( CountriesCB.Items.Strings[ CountriesCB.ItemIndex ] );

ParamByName( 'iCityName' ).AsString := AnsiUpperCase( CityName );

try

ExecProc;

if ParamByName( 'oResult' ).AsInteger = 0 then

MessageDlg( 'Ошибка: информация об указанной стране не найдена!',

mtError, [mbOk], 0 )

else

with DModule.IBCityDataSet do begin

Close;

Open;

RecNo := DModule.IBProc.ParamByName( 'oResult' ).AsInteger;

end;

except on e: exception do

MessageDlg( 'Ошибка: информация о данном городе уже хранится в базе данных!',

mtError, [mbOk], 110 );

end;

end;

end;

procedure TCityFrm.UpdCityBtnClick(Sender: TObject);

begin

Application.CreateForm( TCityNameFrm, CityNameFrm );

CityNameFrm.ShowModal;

if CityName = '' then

exit;

with Dmodule.IBProc do begin

StoredProcName := 'UPDCITY';

ParamByName( 'iCityName' ).AsString := AnsiUpperCase( CityName );

ParamByName( 'iNumCity' ).AsString :=

DModule.IBCityDataSet.FieldByName( 'oNumCity' ).AsString;

try

ExecProc;

with DModule.IBCityDataSet do begin

Close;

Open;

end;

except on e: exception do

MessageDlg( 'Ошибка: информация о данном городе уже хранится в базе данных!',

mtError, [mbOk], 110 );

end;

end;

end;

procedure TCityFrm.DelCityBtnClick(Sender: TObject);

begin

if MessageDlg( 'Удалить информацию о городе: ' +

DModule.IBCityDataSet.FieldByName( 'oCityName' ).AsString +

'?', mtConfirmation, [mbYes, mbNo], 0 ) = mrNo then

exit;

with Dmodule.IBProc do begin

StoredProcName := 'DELCITY';

ParamByName( 'iNumCity' ).AsString :=

DModule.IBCityDataSet.FieldByName( 'oNumCity' ).AsString;

ExecProc;

if ParamByName( 'oResult' ).AsInteger <> 0 then

MessageDlg( 'Ошибка: в базе данных содержится информация о райотделах удаляемого города!',

mtError, [mbOk], 140 )

else

with DModule.IBCityDataSet do begin

Close;

Open;

end;

end;

end;

procedure TCityFrm.AddCountryBtnClick(Sender: TObject);

begin

Application.CreateForm( TCountryFrm, CountryFrm );

CountryFrm.ShowModal;

end;

procedure TCityFrm.FormShow(Sender: TObject);

begin

FillCountryCB;

GetDataFromCity;

end;

procedure TCityFrm.CountryBtnClick(Sender: TObject);

begin

Application.CreateForm( TCountryFrm, CountryFrm );

CountryFrm.ShowModal;

end;

end.

unit CountryUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, DBGrids, StdCtrls, Buttons;

type

TCountryFrm = class(TForm)

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

DBGrid1: TDBGrid;

AddCountryBtn: TBitBtn;

UpdCountryBtn: TBitBtn;

DelCountryBtn: TBitBtn;

OkBtn: TBitBtn;

procedure FormShow(Sender: TObject);

procedure AddCountryBtnClick(Sender: TObject);

procedure OkBtnClick(Sender: TObject);

procedure UpdCountryBtnClick(Sender: TObject);

procedure DelCountryBtnClick(Sender: TObject);

private

{ Private declarations }

public

CountryName: ShortString;

procedure GetDataFromCountry;

end;

var

CountryFrm: TCountryFrm;

implementation

{$R *.dfm}

uses DataUnit, MainUnit, CNameUnit, CityUnit, WorkerUnit, AuthorUnit,

TepUnit;

procedure TCountryFrm.GetDataFromCountry;

begin

with DModule.IBCountryDataSet do begin

Close;

Open;

end;

end;

procedure TCountryFrm.FormShow( Sender: TObject );

begin

GetDataFromCountry;

end;

procedure TCountryFrm.AddCountryBtnClick(Sender: TObject);

begin

Application.CreateForm( TNameFrm, NameFrm );

NameFrm.ShowModal;

if CountryName = '' then

exit;

with Dmodule.IBProc do begin

StoredProcName := 'ADDCOUNTRY';

ParamByName( 'iCountryName' ).AsString := AnsiUpperCase( CountryName );

try

ExecProc;

GetDataFromCountry;

except on e: exception do

MessageDlg( 'Ошибка: информация о данной стране уже хранится в базе данных!',

mtError, [mbOk], 1 );

end;

end;

end;

procedure TCountryFrm.OkBtnClick(Sender: TObject);

begin

with DModule.IBCountryDataSet do

case MainFrm.ActiveWnd of

1: CityFrm.OnShow( sender );

2: WorkerFrm.OnShow( sender );

3: AuthorFrm.OnShow( sender );

4: TepFrm.OnShow( sender );

end;

Close;

end;

procedure TCountryFrm.UpdCountryBtnClick(Sender: TObject);

begin

Application.CreateForm( TNameFrm, NameFrm );

NameFrm.ShowModal;

with Dmodule.IBProc do begin

StoredProcName := 'UPDCOUNTRY';

ParamByName( 'iNumCountry' ).AsString := DModule.IBCountryDataSet.FieldByName( 'oNumCountry' ).AsString;

ParamByName( 'iCountryName' ).AsString := AnsiUpperCase( CountryName );

try

ExecProc;

GetDataFromCountry;

except on e: exception do

MessageDlg( 'Ошибка: информация о данной стране уже хранится в базе данных!',

mtError, [mbOk], 1 );

end;

end;

end;

procedure TCountryFrm.DelCountryBtnClick(Sender: TObject);

begin

if MessageDlg( 'Удалить информацию о стране: ' +

DModule.IBCountryDataSet.FieldByName( 'oCountryName' ).AsString +

'?', mtConfirmation, [mbYes, mbNo], 0 ) = mrNo then

exit;

with DModule.IBProc do begin

StoredProcName := 'DELCOUNTRY';

ParamByName( 'iNumCountry' ).asInteger :=

DModule.IBCountryDataSet.FieldByName( 'oNumCountry' ).asInteger;

ExecProc;

case ParamByName( 'oResult' ).AsInteger of

-1: MessageDlg( 'Ошибка: в базе данных содержится информация о городах удаляемой страны!' + #10 +

' Операция прервана!',

mtError, [mbOk], 130 );

-2: MessageDlg( 'Ошибка: в базе данных содержится информация о авторах удаляемой страны!' + #10 +

' Операция прервана!',

mtError, [mbOk], 130 );

else

GetDataFromCountry;

end;

end;

end;

end.

unit CityNameUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TCityNameFrm = class(TForm)

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

CName: TEdit;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure CNameKeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

CityNameFrm: TCityNameFrm;

implementation

{$R *.dfm}

uses CityUnit;

procedure TCityNameFrm.Button1Click(Sender: TObject);

begin

CityFrm.CityName := CName.Text;

Close;

end;

procedure TCityNameFrm.Button2Click(Sender: TObject);

begin

CityFrm.CityName := '';

Close;

end;

procedure TCityNameFrm.CNameKeyPress(Sender: TObject; var Key: Char);

var keys: set of char;

begin

keys := ['а'..'я', 'А'..'Я', ' ', chr( 8 )];

if not( key in keys ) then

key := #0;

end;

end.

unit CNameUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TNameFrm = class(TForm)

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

CName: TEdit;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure CNameKeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

end;

var

NameFrm: TNameFrm;

implementation

{$R *.dfm}

uses CountryUnit, CityUnit;

procedure TNameFrm.Button1Click(Sender: TObject);

begin

CountryFrm.CountryName := CName.Text;

Close;

end;

procedure TNameFrm.Button2Click(Sender: TObject);

begin

CountryFrm.CountryName := '';

Close;

end;

procedure TNameFrm.CNameKeyPress(Sender: TObject; var Key: Char);

var keys: set of char;

begin

keys := ['а'..'я', 'А'..'Я', ' ', chr( 8 )];

if not( key in keys ) then

key := #0;

end;

end.

Размещено на Allbest.ru


Подобные документы

  • Анализ основных направлений автоматизации бизнес-процессов с информационными технологиями. Разработка баз данных для решения проблем хранения и систематизации информации. Проектирование и реализация логической модели бизнес-процесса на примере библиотеки.

    курсовая работа [505,8 K], добавлен 25.10.2011

  • Простые системы для отслеживания заявок. Информационные потоки, возникающие на этапе поступления запроса для решения инцидента. Концептуальная и логическая модель данных. Разработка программного обеспечения по автоматизации процесса Службы Service Desk.

    дипломная работа [2,6 M], добавлен 11.06.2017

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

    курсовая работа [2,5 M], добавлен 17.09.2011

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

    курсовая работа [1,2 M], добавлен 10.09.2015

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

    дипломная работа [1,1 M], добавлен 06.09.2015

  • Определение программного модуля. Принципы использования dll-библиотеки. Преимущества и недостатки использования dll-библиотек. Описание коэффициентов моделей. Разработка структуры классов. Реализация библиотеки классов в среде разработки MS Visual Studio.

    дипломная работа [676,6 K], добавлен 16.06.2015

  • Проектирование базы данных для библиотеки и разработка программы для её удобного использования. Пример работы приложения на примере поиска статей по заданным условиям, а также основных операций с данными – добавления в базу, редактирования и удаления.

    курсовая работа [2,5 M], добавлен 23.02.2014

  • Организация и эволюция развития поискового аппарата электронного каталога библиотеки. Функции и структурные особенности справочно-библиографического аппарата. Электронные каталоги библиотек г. Омска. Общий функционал программного обеспечения OPAC.

    курсовая работа [106,8 K], добавлен 16.09.2017

  • Компиляция программ на языке C/C++. Компиляция нескольких файлов. Библиотеки объектных файлов. Создание статической и динамической библиотеки. Функции работы. Создание динамической библиотеки для решения системы линейных уравнений.

    курсовая работа [27,4 K], добавлен 07.08.2007

  • Постановка задачи автоматизации учебного процесса колледжа и описание предметной области. Работа с базами данных в Delphi: способы, компоненты доступа к данным и работы с ними. Язык запросов SQL. База данных в Microsoft Access и результаты исследований.

    дипломная работа [55,6 K], добавлен 16.07.2008

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.