Приложение для работы с базой данных (dBase)

 

Содержание


1. Введение

2.Постановка задачи

3. Практическая часть: Приложение телефонный справочник ПГТУ

Заключение

Список использованной литературы


Введение


С начала 60-70хх началось бурное развитие компьютеризации всех крупных промышленных центров. Ближе к 80-ым, компьютеры стали появляться и в учебных заведениях, предмету «Информатика» стали уделять огромное внимание. Стали появляться языки программирования высокого уровня такие, как Delphi, C++.

Далее пойдет речь о языке программирования Delphi и о базах данных.

В России Borland Delphi появляется в конце 1993 г. и сразу же завоевывает широкую популярность. Новые версии выходят практически каждый год. В них реализуются все новые мастера, компоненты и технологии программирования.

Действительно, процесс разработки в Delphi предельно упрощен. В первую очередь это относится к созданию интерфейса, на который уходит 80% времени разработки программы. Вы просто помещаете нужные компоненты на поверхность Windows-окна (в Delphi оно называется формой) и настраиваете их свойства с помощью специального инструмента (Object Inspector). С его помощью можно связать события этих компонентов (нажатие на кнопку, выбор мышью элемента в списке и т.д.) с кодом его обработки - и вот простое приложение готово. Причем разработчик получает в свое распоряжение мощные средства отладки (вплоть до пошагового выполнения команд процессора), удобную контекстную справочную систему (в том числе и по Microsoft API), средства коллективной работы над проектом, всего просто не перечислить. Вы можете создавать компоненты ActiveX без использования Microsoft IDL, расширять возможности web-сервера (скрипты на стороне сервера), практически ничего не зная об HTML, XML или ASP. Можно создавать распределенные приложения на базе СОМ и CORBA, Интернет- и intranet-приложения, используя для доступа к данным Borland DataBase Engine, ODBC-драйверы или Microsoft ADO. Появившаяся, начиная с Delphi 3, поддержка многозвенной технологии (multi-tiered) доступа к данным позволяет создавать масштабируемые приложения (относительно слабо зависящие от сервера БД) за счет перенесения методов обработки информации (бизнес-правил) на среднее звено.

Как уже говорилось ранее, в Delphi используется язык Object Pascal, который постоянно расширяется и дополняется Borland. Язык в полной мере поддерживает все требования, предъявляемые к объектно-ориентированному языку программирования. Как и положено строго типизированному языку, классы поддерживают только простое наследование, но зато интерфейсы могут иметь сразу несколько предков. К числу особенностей языка следует отнести поддержку обработки исключительных ситуаций (exceptions), а также перегрузку методов и подпрограмм (overload) в стиле C++. К числу удачных, на взгляд автора, относится также поддержка длинных строк в формате WideChar и AnsiChar. Последний тип (AnsiStrmg) позволяет использовать все прелести динамического размещения информации в памяти без всяких забот о ее выделении и сборке мусора Delphi делает это автоматически. Для поклонников свободного стиля программирования имеются открытые массивы, варианты и вариантные массивы, позволяющие размещать в памяти все, что душе угодно и смешивать типы данных.

Вы можете создавать свои собственные компоненты, импортировать ОСХ-компоненты, создавать <шаблоны> проектов и <мастеров>, создающих <заготовки> проектов. Мало того, Delphi предоставляет разработчику интерфейс для связи ваших приложений (или внешних программ) с интегрированной оболочкой Delphi (IDE).

Таким образом, вы можете использовать Delphi для создания как самых простых приложений, на разработку которых требуется 2-3 часа, так и серьезных корпоративных проектов, предназначенных для работы десятков и сотен пользователей. Причем для этого можно использовать самые последние веяния в мире компьютерных технологий с минимальными затратами времени и сил.

Ну, и одна из самых последних новостей от Inprise обещает, что в ближайшем будущем вы сможете переносить приложения, разработанные в Delphi, на платформу Linux. Более подробную информацию о Delphi можно получить на сайтах. Существует большое количество сайтов, посвященных Delphi, например <Королевство Delphi> - delphi.vitpc.com, Torry's Delphi Pages.Последний содержит большое число ссылок на ресурсы, связанные с Delphi. Ну а если вы уже давно знакомы с этим продуктом, то на сайте можно бесплатно протестироваться в качестве программиста Delphi и получить по почте сертификат.

Мощность и гибкость Delphi при работе с базами данных основана на низкоуровневом ядре - процессоре баз данных Borland Database Engine (BDE). Его интерфейс с прикладными программами называется Integrated Database Application Programming Interface (IDAPI).

В принципе, сейчас не различают эти два названия (BDE и IDAPI) и считают их синонимами. BDE позволяет осуществлять доступ к данным как с использованием традиционного record-ориентированного (навигационного) подхода, так и с использованием set-ориентированного подхода, используемого в SQL-серверах баз данных. Кроме BDE, Delphi позволяет осуществлять доступ к базам данных, используя технологию (и, соответственно, драйверы) Open DataBase Connectivity (ODBC) фирмы Microsoft. Но, как показывает практика, производительность систем с использованием BDE гораздо выше, чем оных при использовании ODBC. ODBC драйвера работают через специальный ODBC socket, который позволяет встраивать их в BDE.

Все инструментальные средства баз данных Borland - Paradox, dBase, Database Desktop - используют BDE. Все особенности, имеющиеся в Paradox или dBase, наследуются BDE, и поэтому этими же особенностями обладает и Delphi.


2. Постановка задачи


Необходимо создать приложение позволяющие создать базу данных, делать сортировку базы данных, производить новые записи или удаление полей базы данных.


3. Практическая часть: Приложение телефонный справочник ПГТУ


Что бы базу данных можно было переносить с компьютера на другой компьютер программа должна сама создавать алиасы. Так как dBase сохраняет базу данных в виде файла с названием базы dBase.DBF. Удобно не просто указывать путь доступа к таблицам базы данных, а использовать для этого некий заменитель - псевдоним, называемый алиасом. Он сохраняется в отдельном конфигурационном файле в произвольном месте на диске и позволяет исключить из программы прямое указание пути доступа к базе данных. Такой подход дает возможность располагать данные в любом месте, не перекомпилируя при этом программу. Кроме пути доступа, в алиасе указываются тип базы данных, языковый драйвер и много другой управляющей информации.

Ниже приведен листинг программы которая производит индексацию и проверку базы данных, а также изображение работы программы (PROGRESS.PAS)


Рис.1 Индексация базы данных

unit Progress;

interface, SysUtils, Classes, Forms, Dialogs, StdCtrls,, DBTables, Controls, ComCtrls, Registry,ShellApi, Messages, Graphics,;_BASE = WM_USER;_OKSTART = MM_BASE + $1;_DATAERROR = MM_BASE + $2;_KeyDown = MM_BASE + $3;_ENDTHREAD = MM_BASE + $4;= class(TForm): TProgressBar;: TLabel;: TTable;: TImage;: TTable;: TTimer;: TLabel;FormCreate(Sender: TObject);ProgressAOM (var MSG: tagMSG; var Handled: boolean);DataError(var Message: TMessage); message MM_DATAERROR;Timer1Timer(Sender: TObject);EndThread(var Message:TMessage); message MM_ENDTHREAD;: boolean;: cardinal;SearchFile(FileName: string): boolean;

{ Public declarations };EPhoneException = class (Exception);: TMainForm;: cardinal;: boolean = true;= 'Data.dbf';= 'Data.mdx';= 'DataBuff.dbf';= 'DataBuff2.dbf';= 'LutskPhone';= 'options.ini';= 'Ошибка при работе с базаю данных '+#10#13+

'Проверьте наличии файла базы!';= 'Ошибка работы с BDE!';

implementationTeldov, Thread, ActiveX, ComObj, ShlObj;

{$R *.dfm}TMainForm.FormCreate(Sender: TObject);: tagmsg;:boolean;:= false;:= (Screen.Height - Height) div 2-200;:= (Screen.Width - Width) div 2;.OnMessage := ProgressAOM ;

// создание ярлыка, запись в реестр.TableName := sBuffFile;// Check BDE.CreateTable;.Close;

// ShowMessage(DBIgetErrorString);(ExtractFilePath(ParamStr(0))+'/'+sBuffFile);EPhoneException.Create(sBDEError); // error BDE;not SearchFile(sDataFile)raise EPhoneException.Create(sDataFileError);not SearchFile(sIndexFile)DataThread.create(false)IsCanStart := true;E: Exception do(e.Message, mtError, [mbOk],0);(MainFOrm.Handle, MM_DATAERROR, 0, 0);;;;;TMainForm.ProgressAOM (var MSG: tagMSG; var Handled: boolean);MSG.message = MM_OKSTART then.Enabled := false;.CreateForm(TPhoneForm, PhoneForm);.Hide;.Show;.OnMessage := PhoneForm.AOM;;;TMainForm.SearchFile(FileName: string): boolean;: TSearchRec;FindFirst(GetCurrentDir +'\'+FileName, faAnyFile, CurrFIle)=0Result := trueResult := false;;TMainForm.DataError(var Message: TMessage);;;TMainForm.Timer1Timer(Sender: TObject);IsFirst then:= false;:= 0; // GetTickCount;;IsCanStart then:= GetTickCount;Tick > (FStartTime + 0) // 1000PostMessage(MainFOrm.Handle, MM_OKSTART, 1, 0);;TMainForm.EndThread(var Message: TMessage);.Visible := true;:= '';.Visible := false;.Visible := false;.Visible := false;:= true;

end;.

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


Рис.2 Главное окно программы

На рисунке 3 показан результат поиска в базе данных по номеру телефона.


Рис. 3 Поиск в базе данных по номеру телефона


База данных состоит из шести полей : номер телефона, ФИО, улица, номер дома, номер квартиры, категория.

Что соответствует полям в базе данных: номер телефона - NUMTEL, ФИО - FAMIL, улиуа - STREET, номер дома - HOUSE, номер квартиры - KVART, категория - PR09.

Ниже приведен листинг программы (TElDov.pas):

база данные справочник приложение

unit TElDov;

interface, SysUtils, Thread, Progress, ExtCtrls, ComCtrls, Menus,, DBCtrls, ImgList, Classes, Controls, StdCtrls, Grids,, DBTables, DBGrids, Forms, Messages, Dialogs,Clipbrd;= class(TForm): TDataSource;: TTable;: TStatusBar;: TGroupBox;: TButton;: TToolBar;: TToolButton;: TToolButton;: TDBGrid;: TImageList;: TToolButton;: TPopupMenu;: TImageList;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TPopupMenu;: TDBNavigator;FormCreate(Sender: TObject);SearchClick(Sender: TObject);AOM(var Msg: tagMSG; var Handled: Boolean);EraseButtonClick(Sender: TObject);MyPopupHandler(Sender: TObject);MyPopupHandler2(Sender: TObject);MyEditPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);FormClose(Sender: TObject; var Action: TCloseAction);MInMaxSize(var Message: TMessage); message WM_GETMINMAXINFO;N20Click(Sender: TObject);N13Click(Sender: TObject);N14Click(Sender: TObject);N15Click(Sender: TObject);N16Click(Sender: TObject);ExitButtonClick(Sender: TObject);SearchButtonClick(Sender: TObject);FormDestroy(Sender: TObject);CreatePopupFields;UpdateStatusBar;CalculateEditSize;SortMode (Sender: tObject);ReadIni;WriteIni; // Ini-file;: TPhoneForm;: array [0..4] of TEdit;: DataThread;: boolean;: integer;: array[0..2] of string =('по Телефону','по Имени','по Улице');: array [0..2] of string =('ByNumTel','ByFamil','ByStreet');_TO_CLIPBOARD = 'Копировать';_FROM_CLIPBOARD = 'Вставить';IndexOfItem(Item: string): integer;IniFiles, DBITypes, DBIProcs, Graphics,ShellApi;

{$R *.dfm}TPhoneForm.FormCreate(Sender: TObject);i, j: integer;: tMenuItem;.TableName := sDataFile;.Open;;;;;.onMessage := Aom;;TPhoneForm.MyPopupHandler(Sender: TObject);Sender is TMenuItem then with (Sender as TMenuItem) dotag of

..2: begin Table1.IndexName := IndexName[(Sender as TMenuItem).tag ];(Sender);;

: Clipboard.AsText := DBGrid1.SelectedField.DisplayText;;;;;TPhoneForm.CreatePopupFields;: integer;: array [0..4] of TMenuItem;: TMenuItem;i := 0 to 4 do //Создание полей ввода[i] := TEdit.Create(self);[i].Parent := GroupBox1;[i].PopupMenu := PopupMenu2;[i].OnContextPopup := MyEditPopup;[i].Tag := i;;i := 0 to 4 do with PopupMenu1 do//Создание меню сортирования[i] := TMenuItem.Create(self);i<3 then MyPopupMenuItem[i].Caption := SortName[i];[i].Tag := i;[i].OnClick := MyPopupHandler;.Items.add(MyPopupMenuItem[i]);;[3].Caption := '-';[4].Caption := COPY_TO_CLIPBOARD;[4].ShortCut := ShortCut(Word('C'), [ssCtrl]);.Items[0].Checked := true;:= TMenuItem.Create(self);.Caption := PASTE_FROM_CLIPBOARD;.OnClick := MyPopupHandler2;.Items.add(MenuItem);(nil, Point(0,0), bool);;TPhoneForm.CalculateEditSize;: integer;: integer;:=13; //Размер полей вводаi := 0 to 4 do[i].Left := Offset;:= Offset + DbGrid1.Columns[i].width + 8;[i].Width := DBGrid1.Columns[i].width;[i].Top := 24;[i].MaxLength :=Table1.Fields[i].Size;;;TPhoneForm.UpdateStatusBar;SortMode: string;.Panels[0].Text := ' Найдено абонентов: '+ InttoStr(Table1.RecordCount);:= SortName[0];PopupMenu1.Items[1].Checked then sortMode := SortName[1];PopupMenu1.Items[2].Checked then sortMode := SortName[2];.Panels[1].Text := ' Отсортировано: '+SortMode;;tPhoneForm.AOM(var Msg: tagMSG; var Handled: Boolean);key : word;:= false;msg.message = Wm_keydown then// Обробка клавиш:= msg.wParam;:= true;key of // Обробка клавиш_up: SendMessage(DBGrid1.Handle,wm_keydown, vk_up, 0);_Down: SendMessage(DBGrid1.Handle,wm_keydown, vk_down, 0);_Prior: SendMessage(DBGrid1.Handle,wm_keydown, vk_Prior, 0);_Next: SendMessage(DBGrid1.Handle,wm_keydown, vk_Next, 0);_return: Search.OnClick(Search);_f1: Application.HelpCommand(HELP_CONTENTS, 0);handled := false;;;;TPhoneForm.SearchClick(Sender: TObject);: string;: integer;:= '';i:= 0 to 4 do //with table1 doInputs[i].Text <> ''filters := filters + '('+Table1.Fields[i].FieldName + '='+ QuotedStr(Inputs[i].Text + '*')+ ') and';;filters <> '' then:= copy(Filters, 0, Length(filters)-4);.Filter := filters;;;TPhoneForm.EraseButtonClick(Sender: TObject);: integer;i := 0 to 4 do Inputs[i].Text := '';;TPhoneForm.SortMode (Sender: tObject);: integer;i := 0 to 2 do.Items[i].Checked := false;

(sender as TMenuItem).Checked := true;;TPhoneForm.FormClose(Sender: TObject; var Action: TCloseAction);.OnMessage := MainForm.progressAom;;(MainForm.Handle, WM_CLOSE, 0, 0);;TPhoneForm.ReadIni;TIniFile.Create(ExtractFilePath(Application.exename)+sIniFile) do.IndexName := IndexName[ReadInteger('Defaults','SortIndex', 0)];:= ReadInteger('Position','left', 100);:= ReadInteger('Position','top', 100);:= ReadInteger('Position','height', 50);;;IndexOfItem(Item: string): integer;Item = SortName[1] then result := 1if Item = SortName[2] then result := 2result := 0;;TPhoneForm.WriteIni;TIniFile.Create(ExtractFilePath(Application.exename)+sIniFile) do('Defaults','SortIndex', IndexOfItem(Table1.indexName));('Position','left', PhoneForm.left);('Position','top', PhoneForm.top);('Position','height', PhoneForm.height);;;TPhoneForm.MInMaxSize(var Message: TMessage);TwmGetMinMaxInfo(Message) do.ptMaxTrackSize.X := PhoneForm.Width;.ptMaxTrackSize.y := Screen.Height- 100;.ptMinTrackSize.X := PhoneForm.Width;.ptMinTrackSize.y := 200;;;TPhoneForm.MyPopupHandler2(Sender: TObject);Sender is TMenuItem thenClipboard.HasFormat(CF_TEXT) then // number of edit send by popupmenu2.tag[PopupMenu2.Tag].Text := Clipboard.AsText;;TPhoneForm.MyEditPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);.Items[0].Enabled := Clipboard.HasFormat(CF_TEXT);Sender is TEdit then PopupMenu2.Tag := (Sender as TEdit).Tag;TPhoneForm.N20Click(Sender: TObject);.HelpCommand(HELP_WM_HELP ,0);;TPhoneForm.N13Click(Sender: TObject);.First;;TPhoneForm.N14Click(Sender: TObject);.Prior;;TPhoneForm.N15Click(Sender: TObject);.Next;;TPhoneForm.N16Click(Sender: TObject);.Last;;TPhoneForm.ExitButtonClick(Sender: TObject);.Close;.Close;;TPhoneForm.SearchButtonClick(Sender: TObject);.OnClick(Sender);;TPhoneForm.FormDestroy(Sender: TObject);.HelpCommand(HELP_QUIT,0);

end;.


Заключение


В результате выполнения курсовой работы мною было создано приложение для работы с базой данных (dBase) создание алиасов к базе данных.


Список использованной литературы


1. А. Я. Архангельский Программирование в Delphi 7.2003г.

. Никита Культин. Основы программирования в Delphi 7. Самоучитель.2002г.

. Delphi 7. Учебный курс. Бобровский С.


Содержание 1. Введение 2.Постановка задачи 3. Практическая часть: Приложение телефонный справочник ПГТУ Заключение Список использованной лите

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ