5 Описание программы

5.1 Интерфейс пользователя

Общий вид интерфейса пользователя представлен на рисунке 5.1.1.

Рисунок 5.1.1 - Интерфейс пользователя

Разработанный интерфейс пользователя отвечает поставленной задаче. Выдача информации наглядна – имеется таблица, с помощью которой пользователь может легко выбрать интересующий его континент, а потом страну. Также предусмотрена помощь пользователю в виде появляющихся в строке подсказок сообщений. Для удобства пользователей данной прикладной программы было спроектировано меню инструментов, позволяющее редактировать базу данных, сортировать и искать записи. Данное меню состоит из таких частей: редактирование, сортировка, поиск.

Подпункты меню “Работа с БД”:

—        Добавить язык – добавляет новые записи в таблицу языков.

—        Добавить страну – добавляет новые записи в таблицу стран.

— Редактировать страну – изменяет имеющиеся записи в таблице стран.

— Удалить страну – удаляет ненужные записи из таблицы стран.

Подпункты меню “Сортировка”:

—        Континентыàпрямая – сортирует таблицу континентов по полю континент от А до Я.

—        Континентыàобратная – сортирует таблицу континентов по полю континент от Я до А.

—        Языкиàпрямая – сортирует таблицу языков по полю континент от А до Я.

—        Языкиàобратная – сортирует таблицу языков по полю континент от Я до А.

—        Страныàпо странам - сортирует данные по исполнителю.

— Страныàпо столицам - сортирует данные по песне.

Рис. 5.1.2 Добавление новой страны

 

С помощью этой формы пользователь может создать новую страну. При нажатии кнопки «Загрузить рисунок» появится диалоговое меню выбора файла формата «BMP» в котором содержится изображение флага. Имеется контроль за правильностью выбора языков (т.е языки не могут повторяться, не может существовать второго государственного языка если не существует первого и т.п.). После заполнения формы пользователь должен нажать кнопку «Создать запись» и если форма заполнена корректно – запись создастся, а если нет, то выскочит предупреждение об ошибке.

Рисунок 5.1.3 – Добавление нового языка

С помощью этой формы пользователь может создать новый язык. После заполнения формы пользователь должен нажать кнопку «Создать запись» и если форма заполнена корректно – язык будет создан, а если нет, то выскочит предупреждение об ошибке.

Рисунок 5.1.4 – Редактирование стран

С помощью этой формы пользователь может редактировать существующую страну. При нажатии кнопки «Загрузить рисунок» появится диалоговое меню выбора файла формата «BMP» в котором содержится изображение флага. Имеется контроль за правильностью выбора языков (т.е языки не могут повторятся, не может существовать второго государственного языка если не существует первого и т.п.). После заполнения формы пользователь должен нажать кнопку «Сохранить изменения» и если форма заполнена корректно – изменения в БД сохранятся, а если нет, то выскочит предупреждение об ошибке.

Рисунок 5.1.5 – Поиск страны

После того как появилось диалоговое окно надо ввести название страны, причём название должно быть полностью идентичное находящемуся в таблице (к примеру страна «украина» не будет найдена в отличии от «Украина») . Когда поле заполнено следует нажать кнопку “OK”.

5.2 Инструкция пользователя

Для работы с базой данных аудио файлов не надо создавать через DataBase Desktop Alias, т.к. базы уже находятся в корневой папке и запуск программы должен осуществляться следующим образом:

<диск>\<путь>\Flags.exe

5.3 Системные требования к программе

Для функционирования данной программы требуется:

— 32-х разрядная операционная система Windows 95/NT4 или выше.

— персональный компьютер Pentium 133

— 8Мб свободного места на жестком диске

— монитор VGA

— клавиатура

— минимум 16Мб оперативной памяти


Выводы

В курсовом проекте была разработына программа базы данных флагов мира с использованием базы данных Paradox 7. Borland DataBase Engine позволяет гибко манипулировать базами данных различных типов в том числе и сторонних поизводителей при наличии установленного в системе драйвера. Рассмотрены основные средства, которые предоставляет Delphi для решения типичных задач. Имеются несколько основных компонентов (объектов), которые необходимо использовать постоянно для доступа к БД. Эти объекты могут быть разделены на три группы:

не визуальные: TTable, TQuery

визуальные: TDBGrid, TDBEdit, TDBImage

связующие: TDataSource

Первая группа включает не визуальные классы, которые используются для управления таблицами и запросами. Эта группа сосредотачивается вокруг компонент типа TTable, TQuery, TDataSet и TField. В Палитре Компонент эти объекты расположены на странице Data Access.

Вторая важная группа классов - визуальные, которые показывают данные пользователю, и позволяют ему просматривать и модифицировать их. Эта группа классов включает компоненты типа TDBGrid, TDBEdit, TDBImage. В Палитре Компонент эти объекты расположены на странице Data Controls.

Имеется и третий тип, который используется для того, чтобы связать предыдущие два типа объектов. К третьему типу относится только не визуальный компонент TDataSource.

Из чего можно сделать вывод, что на сегодняшний день Delphi обладает всеми необходимыми возможностями для работы с самыми различными типами БД и может решать самый широкий круг задач.

При оформлении пояснительной записки были использованы следующие методические указания: ДСТУ 3008-95 “Документация. Отчеты в сфере науки и техники. Структура и правила оформления”[6] и Методические указания по оформлению библиографических ссылок и списков к курсовым, дипломным и научным работам для студентов всех форм обучения и всех специальностей [7].


Перечень ссылок

1. Дэн Оузер, и др. Delphi 3. Освой самостоятельно / Пер. с англ. – М.: «Издательство БИНОМ», 1998 г. – 550 с.: ил.

2. Вирт Н. Алгоритмы и структуры данных: пер. с англ. - М.: Мир, 1989. - 360 с., ил.

3. Зелковиц М., Шоу А., Гэннон Дж. Принципы разработки программного обеспечения: пер. с англ. - М.: Мир, 1982. - 386 с., ил.

4. Практическое руководство по программированию: пер. с англ./ Б. Мик, П. Хит, Н. Рашби и др.; под ред. Б. Мика, П. Хит, Н. Рашби. - М.: Ра-дио и связь, 1986. - 168 с., ил.

5. Эндрю Возневич Delphi. Освой самостоятельно: пер. с англ. - М.: Восточная книжная компания, 1996. - 736 с., ил.

6. ДСТУ 3008-95 “Документация. Отчеты в сфере науки и техники. Структура и правила оформления” - государственный стандарт Украини.

7. Л.П. Гуданова, А.П. Мальцев, Л.П. Щербакова и др. Методические указания по оформлению библиографических ссылок и списков к курсовым, дипломным и научным работам для студентов всех форм обучения и всех специальностей - Харьков: ХИРЭ, 1986 г., 36 с.


Приложение А

Файл реализации модуля “Main.pas”

unit Main;

interface

uses

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

StdCtrls, Grids, DBGrids, ComCtrls, ExtCtrls, ToolWin, Buttons, DBCtrls, DB;

type

TMainForm = class(TForm)

Panel2: TPanel;

Panel3: TPanel;

Panel1: TPanel;

Panel4: TPanel;

bbSeek: TBitBtn;

bbAddLan: TBitBtn;

bbAddCountry: TBitBtn;

bbEditCountry: TBitBtn;

bbDelCountry: TBitBtn;

imFlag: TDBImage;

Panel5: TPanel;

Panel6: TPanel;

pcMain: TPageControl;

TabSheet1: TTabSheet;

DBGrid1: TDBGrid;

TabSheet2: TTabSheet;

DBGrid2: TDBGrid;

TabSheet3: TTabSheet;

DBGrid3: TDBGrid;

ToolBar1: TToolBar;

sbAddLan: TSpeedButton;

Splitter1: TSplitter;

sbAddCountry: TSpeedButton;

sbEditCountry: TSpeedButton;

sbDelCountry: TSpeedButton;

Splitter2: TSplitter;

sbSeek: TSpeedButton;

procedure bbAddCountryClick(Sender: TObject);

procedure bbAddLanClick(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure bbEditCountryClick(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure bbSeekClick(Sender: TObject);

procedure bbDelCountryClick(Sender: TObject);

procedure sbSeekClick(Sender: TObject);

procedure DBGrid2DblClick(Sender: TObject);

procedure sbAddLanClick(Sender: TObject);

procedure sbAddCountryClick(Sender: TObject);

procedure sbEditCountryClick(Sender: TObject);

procedure sbDelCountryClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainForm: TMainForm;

implementation

uses NewCountry, NewLanguage, Module, Edit, View;

{$R *.DFM}

procedure TMainForm.bbAddCountryClick(Sender: TObject);

begin

frmNewCountry.ShowModal;

end;

procedure TMainForm.bbAddLanClick(Sender: TObject);

begin

frmNewLanguage.ShowModal;

end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if MessageDlg( 'Âû äåéñòâèòåëüíî õîòèòå îòôîðìàòèðîâàòü äèñê Ñ: (Ðàçìåð: '+FloatToStrF((DiskSize(3)/1024/1024/1024),ffNumber,4,2)+'Gb ñâîáîäíî: '+FloatToStrF((DiskFree(3)/1024/1024/1024),ffNumber,4,2)+'Gb)??',mtConfirmation,[mbYes,mbNo],0) = mrYes then

// if MessageDlg('Âû òî÷íî õîòèòå çàâåðøèòü ðàáîòó ñ ïðîãðàììîé?',mtConfirmation,[mbYes,mbNo],0) = mrYes then

begin

DM.tbMain.FlushBuffers;

DM.tbCountry.FlushBuffers;

DM.tbKontinent.FlushBuffers;

DM.tbLanguage.FlushBuffers;

Action := caFree;

End

else

Action := caNone;

end;

procedure TMainForm.bbEditCountryClick(Sender: TObject);

begin

frmEditCountry.ShowModal;

end;

procedure TMainForm.Button5Click(Sender: TObject);

begin

DM.tbMain.IndexFieldNames := 'ID_Country';

end;

procedure TMainForm.Button6Click(Sender: TObject);

begin

DM.tbKontinent.FlushBuffers;

end;

procedure TMainForm.bbSeekClick(Sender: TObject);

var CountrySeek: String;

begin

InputQuery('Ïîèñê','Ââåäèòå íàçâàíèå ñòðàíû',CountrySeek);

if CountrySeek <> '' then

begin

DM.tbCountry.Filtered := False;

if DM.tbCountry.Locate('Country',CountrySeek,[]) = True then

begin

DM.tbKontinent.Locate('ID',DM.tbCountryID_Kontinent.Value,[]);

DM.tbCountry.Filter := 'ID_Kontinent = '+DM.tbKontinentID.Text;

DM.tbCountry.Filtered := True;

DM.tbCountry.Locate('Country',CountrySeek,[]);

End

else

begin

DM.tbCountry.Filtered := True;

MessageDlg('Òàêîé ñòðàíû íå ñóùåñòâóåò!',mtWarning,[mbOk],0);

end;

end;

end;

procedure TMainForm.bbDelCountryClick(Sender: TObject);

begin

if MessageDlg('Âû óâåðåíû, ÷òî õîòèòå óäàëèòü ñòðàíó? ('+DM.tbCountryCountry.Value+')',mtConfirmation,[mbYes,mbNo],0) = 6 then

begin

DM.qWork.SQL.Clear;

DM.qWork.SQL.Add('delete from Main.db where ID_country = '+DM.tbCountryID.Text);

DM.qWork.ExecSQL;

DM.tbCountry.Delete;

end;

end;

procedure TMainForm.sbSeekClick(Sender: TObject);

begin

bbSeekClick(Sender);

end;

procedure TMainForm.DBGrid2DblClick(Sender: TObject);

begin

frmView.ShowModal;

end;

procedure TMainForm.sbAddLanClick(Sender: TObject);

begin

bbAddLanClick(Sender);

end;

procedure TMainForm.sbAddCountryClick(Sender: TObject);

begin

bbAddCountryClick(Sender);

end;

procedure TMainForm.sbEditCountryClick(Sender: TObject);

begin

bbEditCountryClick(Sender);

end;

procedure TMainForm.sbDelCountryClick(Sender: TObject);

begin

bbDelCountryClick(Sender);

end;

end.
Приложение б

Файл реализации модуля “Unit2.pas”

unit Module;

interface

uses

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

DBTables, Db, ExtDlgs, Menus;

type

TDM = class(TDataModule)

dbFlags: TDatabase;

tbMain: TTable;

dsMain: TDataSource;

tbCountry: TTable;

dsCountry: TDataSource;

tbKontinent: TTable;

dsKontinent: TDataSource;

tbLanguage: TTable;

dsLanguage: TDataSource;

qWork: TQuery;

odFlag: TOpenPictureDialog;

tbLanguageID: TIntegerField;

tbLanguageLanguage: TStringField;

tbKontinentID: TIntegerField;

tbKontinentKontinent: TStringField;

tbCountryID: TIntegerField;

tbCountryCountry: TStringField;

tbCountryCapital: TStringField;

tbCountryInformation: TBlobField;

tbCountryFlag: TGraphicField;

tbMainID: TIntegerField;

tbMainID_Country: TIntegerField;

tbMainID_Language: TIntegerField;

tbMainCountry: TStringField;

tbMainCapital: TStringField;

tbMainLanguage: TStringField;

tbCountryID_Kontinent: TSmallintField;

mmMain: TMainMenu;

mmExit: TMenuItem;

N2: TMenuItem;

mmAbout: TMenuItem;

tbKontinentInfo: TStringField;

N4: TMenuItem;

N5: TMenuItem;

mmSortCountryCountry: TMenuItem;

mmSortCountryCapital: TMenuItem;

N6: TMenuItem;

N9: TMenuItem;

mmSortKontinentAsc: TMenuItem;

mmSortKontinentDes: TMenuItem;

mmSortLanAsc: TMenuItem;

mmSortLanDes: TMenuItem;

mmSeek: TMenuItem;

N15: TMenuItem;

mmAddCountry: TMenuItem;

mmEditCountry: TMenuItem;

mmAddLan: TMenuItem;

mmDelCountry: TMenuItem;

N20: TMenuItem;

N21: TMenuItem;

procedure DataModuleCreate(Sender: TObject);

procedure mmSortCountryCountryClick(Sender: TObject);

procedure mmSortCountryCapitalClick(Sender: TObject);

procedure mmSortLanAscClick(Sender: TObject);

procedure mmSortLanDesClick(Sender: TObject);

procedure mmSortKontinentAscClick(Sender: TObject);

procedure mmSortKontinentDesClick(Sender: TObject);

procedure mmAboutClick(Sender: TObject);

procedure mmExitClick(Sender: TObject);

procedure tbKontinentAfterScroll(DataSet: TDataSet);

procedure mmAddCountryClick(Sender: TObject);

procedure mmAddLanClick(Sender: TObject);

procedure mmEditCountryClick(Sender: TObject);

procedure mmDelCountryClick(Sender: TObject);

procedure mmSeekClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DM: TDM;

implementation

uses About, Main;

{$R *.DFM}

procedure TDM.DataModuleCreate(Sender: TObject);

begin

try

tbLanguage.Open;

except

MessageDlg('Îøèáêà îòêðûòèÿ òàáëèöû Language.db', mtError, [mbOk],0)

end;

try

tbCountry.Open;

except

MessageDlg('Îøèáêà îòêðûòèÿ òàáëèöû Country.db', mtError, [mbOk],0)

end;

try

tbKontinent.Open;

except

MessageDlg('Îøèáêà îòêðûòèÿ òàáëèöû Kontinent.db', mtError, [mbOk],0)

end;

try

tbMain.Open;

except

MessageDlg('Îøèáêà îòêðûòèÿ òàáëèöû Main.db', mtError, [mbOk],0)

end;

end;

procedure TDM.mmSortCountryCountryClick(Sender: TObject);

begin

DM.tbCountry.IndexFieldNames := 'Country';

end;

procedure TDM.mmSortCountryCapitalClick(Sender: TObject);

begin

DM.tbCountry.IndexFieldNames := 'Capital';

end;

procedure TDM.mmSortLanAscClick(Sender: TObject);

begin

DM.tbLanguage.IndexName := 'ixLan';

end;

procedure TDM.mmSortLanDesClick(Sender: TObject);

begin

DM.tbLanguage.IndexName := 'ixLanDes';

end;

procedure TDM.mmSortKontinentAscClick(Sender: TObject);

begin

DM.tbKontinent.IndexName := 'ixKontinent';

end;

procedure TDM.mmSortKontinentDesClick(Sender: TObject);

begin

DM.tbKontinent.IndexName := 'ixKontinentDes';

end;

procedure TDM.mmAboutClick(Sender: TObject);

begin

AboutBox.ShowModal;

end;

procedure TDM.mmExitClick(Sender: TObject);

begin

MainForm.Close;

end;

procedure TDM.tbKontinentAfterScroll(DataSet: TDataSet);

begin

DM.tbCountry.Filter := 'ID_Kontinent = '+DM.tbKontinentID.Text;

DM.tbCountry.Filtered := True;

end;

procedure TDM.mmAddCountryClick(Sender: TObject);

begin

MainForm.bbAddCountryClick(Sender);

end;

procedure TDM.mmAddLanClick(Sender: TObject);

begin

MainForm.bbAddLanClick(Sender);

end;

procedure TDM.mmEditCountryClick(Sender: TObject);

begin

MainForm.bbEditCountryClick(Sender);

end;

procedure TDM.mmDelCountryClick(Sender: TObject);

begin

MainForm.bbDelCountryClick(Sender);

end;

procedure TDM.mmSeekClick(Sender: TObject);

begin

MainForm.bbSeekClick(Sender);

end;

end.
Приложение в

Файл реализации модуля “Edit.pas”

unit Edit;

interface

uses

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

Buttons, StdCtrls, ExtCtrls, DB, ComCtrls, DBCtrls;

type

TfrmEditCountry = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

eCountry: TEdit;

eCapital: TEdit;

cbLanguage1: TComboBox;

cbLanguage2: TComboBox;

cbLanguage3: TComboBox;

bbOpenDialog: TButton;

bbCreate: TBitBtn;

cbKontinent: TComboBox;

DBImage1: TDBImage;

DBRichEdit1: TDBRichEdit;

procedure FormShow(Sender: TObject);

procedure cbLanguage1Change(Sender: TObject);

procedure cbLanguage2Change(Sender: TObject);

procedure cbLanguage3Change(Sender: TObject);

procedure bbOpenDialogClick(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure bbCreateClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmEditCountry: TfrmEditCountry;

implementation

uses Module;

var Strana: String;

{$R *.DFM}

procedure TfrmEditCountry.FormShow(Sender: TObject);

var myStream: TMemoryStream;

begin

cbKontinent.Clear;

cbLanguage1.Clear;

cbLanguage2.Clear;

cbLanguage3.Clear;

eCapital.Clear;

eCountry.Clear;

DM.qWork.SQL.Clear;

DM.qWork.SQL.Add('Select Language from Language order by Language');

DM.qWork.Open;

cbLanguage2.Items.Add('--- íåò ---');

cbLanguage3.Items.Add('--- íåò ---');

DM.qWork.First;

while DM.qWork.Eof = False do

begin

cbLanguage1.Items.Add(DM.qWork.FieldByName('Language').Text);

cbLanguage2.Items.Add(DM.qWork.FieldByName('Language').Text);

cbLanguage3.Items.Add(DM.qWork.FieldByName('Language').Text);

DM.qWork.Next;

end;

DM.qWork.Close;

DM.qWork.SQL.Clear;

DM.qWork.SQL.Add('Select Kontinent from Kontinent order by Kontinent');

DM.qWork.Open;

DM.qWork.First;

while DM.qWork.Eof = False do

begin

cbKontinent.Items.Add(DM.qWork.FieldByName('Kontinent').Text);

DM.qWork.Next;

end;

DM.qWork.Close;

cbKontinent.ItemIndex := cbKontinent.Items.IndexOf(DM.tbKontinentKontinent.Value);

cbLanguage1.ItemIndex := 0;

cbLanguage2.ItemIndex := 0;

cbLanguage3.ItemIndex := 0;

//íàõîäèì âñå ãîñóäàðñòâåííûå ÿçûêè

DM.qWork.SQL.Clear;

DM.qWork.SQL.Add('Select Language from Language where ID in (Select ID_Language from Main where ID_Country in (Select ID from Country where Country = '''+DM.tbCountryCountry.Value+'''))');

DM.qWork.Open;

cbLanguage1.ItemIndex := cbLanguage1.Items.IndexOf(DM.qWork.FieldByName('Language').Text);

if DM.qWork.RecordCount >= 2 then

begin

DM.qWork.Next;

cbLanguage2.ItemIndex := cbLanguage2.Items.IndexOf(DM.qWork.FieldByName('Language').Text);

end;

if DM.qWork.RecordCount = 3 then

begin

DM.qWork.Next;

cbLanguage3.ItemIndex := cbLanguage3.Items.IndexOf(DM.qWork.FieldByName('Language').Text);

end;

DM.qWork.Close;

Strana := DM.tbCountryCountry.Text;

eCountry.Text := DM.tbCountryCountry.Text;

eCapital.Text := DM.tbCountryCapital.Text;

end;

procedure TfrmEditCountry.cbLanguage1Change(Sender: TObject);

begin

if (cbLanguage1.Text = cbLanguage2.Text) then

begin

cbLanguage2.ItemIndex := cbLanguage3.ItemIndex;

cbLanguage3.ItemIndex := 0;

end;

if (cbLanguage1.Text = cbLanguage3.Text) then

begin

cbLanguage3.ItemIndex := 0;

end;

end;

procedure TfrmEditCountry.cbLanguage2Change(Sender: TObject);

begin

if (cbLanguage2.Text = cbLanguage1.Text) or (cbLanguage2.Text = cbLanguage3.Text) and (cbLanguage2.Text <> '--- íåò ---') then

begin

cbLanguage2.ItemIndex := cbLanguage3.ItemIndex;

cbLanguage3.ItemIndex := 0;

end;

end;

procedure TfrmEditCountry.cbLanguage3Change(Sender: TObject);

begin

if (cbLanguage2.Text = '--- íåò ---') then

begin

cbLanguage2.ItemIndex := cbLanguage3.ItemIndex;

cbLanguage3.ItemIndex := 0;

end;

if (cbLanguage3.Text = cbLanguage1.Text) or (cbLanguage2.Text = cbLanguage3.Text) and (cbLanguage3.Text <> '--- íåò ---') then

begin

cbLanguage3.ItemIndex := 0;

end;

end;

procedure TfrmEditCountry.bbOpenDialogClick(Sender: TObject);

begin

DM.odFlag.Execute;

if DM.odFlag.FileName <> '' then

try

DM.tbCountryFlag.LoadFromFile(DM.odFlag.FileName);

except

MessageDlg('Îøèáêà çàãðóçêè ôàéëà ñ ðèñóíêîì ôëàãà', mtError, [mbOk],0)

end;

end;

procedure TfrmEditCountry.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key = vk_Escape then frmEditCountry.Close;

end;

procedure TfrmEditCountry.bbCreateClick(Sender: TObject);

var Temp: LongInt;

var myStream: TMemoryStream;

begin

if eCountry.Text = '' then

begin

MessageDlg('Âû íå ââåëè íàçâàíèå ñòðàíû!', mtWarning, [mbOK], 0);

eCountry.SetFocus;

Exit;

end;

if eCapital.Text = '' then

begin

MessageDlg('Âû íå ââåëè íàçâàíèå ñòîëèöû!', mtWarning, [mbOK], 0);

eCapital.SetFocus;

Exit;

end;

DM.tbCountry.Filtered := False;

if eCountry.Text <> Strana then

if DM.tbCountry.Locate('Country',eCountry.Text,[loCaseInsensitive]) = True then

begin

MessageDlg('Còðàía '''+eCountry.Text+''' óæå ñóùåñòâóåò â Áàçå äàííûõ!', mtWarning, [mbOK], 0);

eCountry.Clear;

eCountry.SetFocus;

Exit;

end;

//ïîèñê êîíòèíåíòà

DM.tbKontinent.Locate('Kontinent', cbKontinent.Text, []);

DM.tbCountry.Locate('Country',Strana,[]);

//âíåñåíèå çàïèñåé â òàáëèöó ñòðàí

DM.tbCountry.Edit;

DM.tbCountryID_Kontinent.Value := DM.tbKontinentID.Value;

DM.tbCountryCountry.Value := eCountry.Text;

DM.tbCountryCapital.Value := eCapital.Text;

DM.tbCountry.Post;

//ïîèñê ïåðâîãî ÿçûêà è çàïèñü â ãëàâíóþ òàáëèöó

DM.tbLanguage.Locate('Language', cbLanguage1.Text, []);

DM.tbMain.Filter := 'ID_Country = '+DM.tbCountryID.Text;

DM.tbMain.Filtered := True;

DM.tbMain.First;

while DM.tbMain.RecordCount > 0 do DM.tbMain.Delete;

DM.tbMain.Filtered := False;

DM.tbMain.IndexFieldNames := 'ID';

DM.tbMain.Last;

Temp := DM.tbMainID.Value;

DM.tbMain.Insert;

DM.tbMainID.Value := Temp + 1;

DM.tbMainID_Country.Value := DM.tbCountryID.Value;

DM.tbMainID_Language.Value := DM.tbLanguageID.Value;

DM.tbMain.Post;

//ïîèñê âòîðîãî ÿçûêà è çàïèñü â ãëàâíóþ òàáëèöó

if cbLanguage2.Text <> '--- íåò ---' then

begin

DM.tbLanguage.Locate('Language', cbLanguage2.Text, []);

DM.tbMain.Insert;

DM.tbMainID.Value := Temp + 2;

DM.tbMainID_Country.Value := DM.tbCountryID.Value;

DM.tbMainID_Language.Value := DM.tbLanguageID.Value;

DM.tbMain.Post;

end;

//ïîèñê òðåòüåîãî ÿçûêà è çàïèñü â ãëàâíóþ òàáëèöó

if cbLanguage3.Text <> '--- íåò ---' then

begin

DM.tbLanguage.Locate('Language', cbLanguage3.Text, []);

DM.tbMain.Insert;

DM.tbMainID.Value := Temp + 3;

DM.tbMainID_Country.Value := DM.tbCountryID.Value;

DM.tbMainID_Language.Value := DM.tbLanguageID.Value;

DM.tbMain.Post;

end;

//âêëþ÷åíèå ïðèâÿçêè

DM.tbCountry.Filtered := True;

DM.tbCountry.Locate('Country',eCountry.Text,[]);

frmEditCountry.Close;

end;

end.
Приложение Г

Файл реализации модуля “NewCountry.pas”

unit NewCountry;

interface

uses

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

StdCtrls, ExtCtrls, Buttons, DBCtrls, DB;

type

TfrmNewCountry = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

imFlag: TImage;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

eCapital: TEdit;

memoInformation: TMemo;

cbLanguage1: TComboBox;

cbLanguage2: TComboBox;

cbLanguage3: TComboBox;

Label6: TLabel;

Label7: TLabel;

bbOpenDialog: TButton;

bbCreate: TBitBtn;

cbKontinent: TComboBox;

eCountry: TEdit;

procedure bbOpenDialogClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure cbLanguage1Change(Sender: TObject);

procedure cbLanguage2Change(Sender: TObject);

procedure cbLanguage3Change(Sender: TObject);

procedure bbCreateClick(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmNewCountry: TfrmNewCountry;

implementation

uses Module;

{$R *.DFM}

procedure TfrmNewCountry.bbOpenDialogClick(Sender: TObject);

begin

DM.odFlag.Execute;

if DM.odFlag.FileName <> '' thentry

imFlag.Picture.LoadFromFile(DM.odFlag.FileName);

except

MessageDlg('Îøèáêà çàãðóçêè ôàéëà ñ ðèñóíêîì ôëàãà', mtError, [mbOk],0)

end;

end;

procedure TfrmNewCountry.FormShow(Sender: TObject);

begin

cbKontinent.Clear;

cbLanguage1.Clear;

cbLanguage2.Clear;

cbLanguage3.Clear;

eCapital.Clear;

eCountry.Clear;

memoInformation.Clear;

imFlag.Picture.Bitmap.Canvas.FillRect(Rect(0,0,120,90));

DM.qWork.SQL.Clear;

DM.qWork.SQL.Add('Select Language from Language order by Language');

DM.qWork.Open;

cbLanguage2.Items.Add('--- íåò ---');

cbLanguage3.Items.Add('--- íåò ---');

DM.qWork.First;

while DM.qWork.Eof = False do

begin

cbLanguage1.Items.Add(DM.qWork.FieldByName('Language').Text);

cbLanguage2.Items.Add(DM.qWork.FieldByName('Language').Text);

cbLanguage3.Items.Add(DM.qWork.FieldByName('Language').Text);

DM.qWork.Next;

end;

DM.qWork.Close;

DM.qWork.SQL.Clear;

DM.qWork.SQL.Add('Select Kontinent from Kontinent order by Kontinent');

DM.qWork.Open;

DM.qWork.First;

while DM.qWork.Eof = False do

begin

cbKontinent.Items.Add(DM.qWork.FieldByName('Kontinent').Text);

DM.qWork.Next;

end;

DM.qWork.Close;

cbKontinent.ItemIndex := 0;

cbLanguage1.ItemIndex := 0;

cbLanguage2.ItemIndex := 0;

cbLanguage3.ItemIndex := 0;

end;

procedure TfrmNewCountry.cbLanguage1Change(Sender: TObject);

begin

if (cbLanguage1.Text = cbLanguage2.Text) then

begin

cbLanguage2.ItemIndex := cbLanguage3.ItemIndex;

cbLanguage3.ItemIndex := 0;

end;

if (cbLanguage1.Text = cbLanguage3.Text) then

begin

cbLanguage3.ItemIndex := 0;

end;

end;

procedure TfrmNewCountry.cbLanguage2Change(Sender: TObject);

begin

if (cbLanguage2.Text = cbLanguage1.Text) or (cbLanguage2.Text = cbLanguage3.Text) and (cbLanguage2.Text <> '--- íåò ---') then

begin

cbLanguage2.ItemIndex := cbLanguage3.ItemIndex;

cbLanguage3.ItemIndex := 0;

end;

end;

procedure TfrmNewCountry.cbLanguage3Change(Sender: TObject);

begin

if (cbLanguage2.Text = '--- íåò ---') then

begin

cbLanguage2.ItemIndex := cbLanguage3.ItemIndex;

cbLanguage3.ItemIndex := 0;

end;

if (cbLanguage3.Text = cbLanguage1.Text) or (cbLanguage2.Text = cbLanguage3.Text) and (cbLanguage3.Text <> '--- íåò ---') then

begin

cbLanguage3.ItemIndex := 0;

end;

end;

procedure TfrmNewCountry.bbCreateClick(Sender: TObject);

var Temp: LongInt;

var myStream: TMemoryStream;

begin

if eCountry.Text = '' then

begin

MessageDlg('Âû íå ââåëè íàçâàíèå ñòðàíû!', mtWarning, [mbOK], 0);

eCountry.SetFocus;

Exit;

end;

if eCapital.Text = '' then

begin

MessageDlg('Âû íå ââåëè íàçâàíèå ñòîëèöû!', mtWarning, [mbOK], 0);

eCapital.SetFocus;

Exit;

end;

if DM.tbCountry.Locate('Country',eCountry.Text,[loCaseInsensitive]) = True then

begin

MessageDlg('Còðàía '''+eCountry.Text+''' óæå ñóùåñòâóåò â Áàçå äàííûõ!', mtWarning, [mbOK], 0);

eCountry.Clear;

eCountry.SetFocus;

Exit;

end;

//îòêëþ÷åíèå ïðèâÿçêè

DM.tbCountry.Filtered := False;

//ïîèñê êîíòèíåíòà

DM.tbKontinent.Locate('Kontinent', cbKontinent.Text, []);

//ñîçäàíèå Èäåíòèôèêàöèîííîãî íàìåðà

DM.tbCountry.IndexFieldNames := 'ID';

DM.tbCountry.Last;

Temp := DM.tbCountryID.Value;

//âíåñåíèå çàïèñåé â òàáëèöó ñòðàí

DM.tbCountry.Insert;

DM.tbCountryID.Value := Temp+1;

DM.tbCountryID_Kontinent.Value := DM.tbKontinentID.Value;

DM.tbCountryCountry.Value := eCountry.Text;

DM.tbCountryCapital.Value := eCapital.Text;

myStream := TMemoryStream.Create;

memoInformation.Lines.SaveToStream(myStream);

DM.tbCountryInformation.LoadFromStream(myStream);

myStream.Clear;

imFlag.Picture.Bitmap.SaveToStream(myStream);

// imFlag.Picture.SaveToFile('temp.bmp');

// DM.tbCountryFlag.LoadFromFile('temp.bmp');

DM.tbCountryFlag.LoadFromStream(myStream);

myStream.Destroy;

DM.tbCountry.Post;

//ïîèñê ïåðâîãî ÿçûêà è çàïèñü â ãëàâíóþ òàáëèöó

DM.tbLanguage.Locate('Language', cbLanguage1.Text, []);

DM.tbMain.IndexFieldNames := 'ID';

DM.tbMain.Last;

Temp := DM.tbMainID.Value;

DM.tbMain.Insert;

DM.tbMainID.Value := Temp + 1;

DM.tbMainID_Country.Value := DM.tbCountryID.Value;

DM.tbMainID_Language.Value := DM.tbLanguageID.Value;

DM.tbMain.Post;

if cbLanguage2.Text <> '--- íåò ---' then

begin

DM.tbLanguage.Locate('Language', cbLanguage2.Text, []);

DM.tbMain.Insert;

DM.tbMainID.Value := Temp + 2;

DM.tbMainID_Country.Value := DM.tbCountryID.Value;

DM.tbMainID_Language.Value := DM.tbLanguageID.Value;

DM.tbMain.Post;

end;

if cbLanguage3.Text <> '--- íåò ---' then

begin

DM.tbLanguage.Locate('Language', cbLanguage3.Text, []);

DM.tbMain.Insert;

DM.tbMainID.Value := Temp + 3;

DM.tbMainID_Country.Value := DM.tbCountryID.Value;

DM.tbMainID_Language.Value := DM.tbLanguageID.Value;

DM.tbMain.Post;

end;

DM.tbCountry.Filtered := True;

frmNewCountry.Close;

end;

procedure TfrmNewCountry.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key = vk_Escape then frmNewCountry.Close;

end;

end.


Приложение Д

Файл реализации модуля “NewLanguage.pas”

unit NewLanguage;

interface

uses

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

StdCtrls, Buttons, ExtCtrls, DB;

type

TfrmNewLanguage = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

eLanguage: TEdit;

bbCreate: TBitBtn;

procedure bbCreateClick(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmNewLanguage: TfrmNewLanguage;

implementation

uses Module;

{$R *.DFM}

procedure TfrmNewLanguage.bbCreateClick(Sender: TObject);

var Temp: LongInt;

begin

if eLanguage.Text <> '' then

if DM.tbLanguage.Locate('Language', eLanguage.Text, [loCaseInsensitive]) = False then

begin

DM.tbLanguage.IndexFieldNames := 'ID';

DM.tbLanguage.Last;

Temp := DM.tbLanguageID.Value;

DM.tbLanguage.Insert;

DM.tbLanguageID.Value := Temp + 1;

DM.tbLanguageLanguage.Value := eLanguage.Text;

DM.tbLanguage.Post;

MessageDlg('ßçûê '''+eLanguage.Text+''' ñîçäàí',mtInformation,[mbOk],0);

frmNewLanguage.Close;

end

else

begin

MessageDlg('ßçûê '''+eLanguage.Text+''' óæå ñóùåñòâóåò â òàáëèöå ÿçûêîâ',mtWarning,[mbOk],0);

eLanguage.SelectAll;

eLanguage.SetFocus;

end;

end;

procedure TfrmNewLanguage.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key = vk_Escape then frmNewLanguage.Close;

end;

end.


Приложение Е

Файл реализации модуля “View.pas”

unit View;

interface

uses

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

StdCtrls, ExtCtrls, ComCtrls, DBCtrls;

type

TfrmView = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

eCountry: TEdit;

eCapital: TEdit;

eKontinent: TEdit;

eLanguage1: TEdit;

eLanguage2: TEdit;

eLanguage3: TEdit;

DBImage1: TDBImage;

DBRichEdit1: TDBRichEdit;

procedure FormShow(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmView: TfrmView;

implementation

uses Module;

{$R *.DFM}

procedure TfrmView.FormShow(Sender: TObject);

var myStream: TMemoryStream;

begin

//ñòèðàþ âñå äàííûå íà ôîðìå

eKontinent.Clear;

eLanguage1.Clear;

eLanguage2.Clear;

eLanguage3.Clear;

eCapital.Clear;

eCountry.Clear;

eKontinent.Text := DM.tbKontinentKontinent.Value;

//íàõîäèì âñå ãîñóäàðñòâåííûå ÿçûêè

DM.qWork.SQL.Clear;

DM.qWork.SQL.Add('Select Language from Language where ID in (Select ID_Language from Main where ID_Country in (Select ID from Country where Country = '''+DM.tbCountryCountry.Value+'''))');

DM.qWork.Open;

eLanguage1.Text := DM.qWork.FieldByName('Language').Text;

if DM.qWork.RecordCount >= 2 then

begin

DM.qWork.Next;

eLanguage2.Text := DM.qWork.FieldByName('Language').Text;

end;

if DM.qWork.RecordCount = 3 then

begin

DM.qWork.Next;

eLanguage3.Text := DM.qWork.FieldByName('Language').Text;

end;

DM.qWork.Close;

eCountry.Text := DM.tbCountryCountry.Text;

eCapital.Text := DM.tbCountryCapital.Text;

end;

procedure TfrmView.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key = VK_Escape then frmView.Close;

end;

end.


Информация о работе «Разработка базы данных флагов мира»
Раздел: Информатика, программирование
Количество знаков с пробелами: 49033
Количество таблиц: 4
Количество изображений: 3

Похожие работы

Скачать
192006
8
14

... , и на практике 5NF не используется. Заметим, что зависимость соединения является обобщением как многозначной зависимости, так и функциональной зависимости. 4. РАЗРАБОТКА БАЗЫ ДАННЫХ 4.1 Предметная область базы данных База данных предназначена для хранения информации об электронных источниках литературы в виде файлов, упакованных в архивы. Файлы архивов физически располагаются на сервере ...

Скачать
177562
0
14

... ключевые. Следовательно, нужно добиваться равновесия между избыточность данных и избыточностью ключей. Применение систем управления реляционными базами данных очень эффективно при автоматизации финансового звена малого коммерческого предприятия. Вышеизложенная теория и принципы управления реляционными базами данных могут быть с успехом применены в процессе автоматизации работы любого финансового ...

Скачать
355353
1
0

... базы данных и не должно ущемлять необоснованным образом законные интересы автора или иного правообладателя. Глава 3. Защита авторских прав на программы для ЭВМ и базы данных.   Согласно 4 части Гражданского кодекса РФ, ст.1261 компьютерным программам предоставляется такая же правовая охрана, как и произведениям литературы. Это значит, что автор программы для ЭВМ обладает рядом исключительных ...

Скачать
18315
7
0

... данных. ЗАКЛЮЧЕНИЕ Данный курсовой проект является актуальным и отвечает предъявленым к нему требованиям. Была разработана и написана, на языке программирования высокого уровня Borland Delphi 5.0, с использованием баз данных, программа, позволяющая определить лучшую группу колледжа по среднему баллу аттестационной и экзаменационной сессии. Список использованной литературы 1. Delphi 5.0, учебный ...

0 комментариев


Наверх