Технология программирования

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

Алгоритм решения задачи

Программа написана на языке программирования Delphi версии 6.0. При написании программы использовались лишь стандартные компоненты интегрированной среды разработки. Технологии и типы, которые получили реализации в проекте:

  • Borland Database Engine (BDE) – орган управления базами данных (в нашем случае мы используем БД Paradox версии 7.0).
  • Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls, Buttons, Menus, DB, DBTables, ImgList – юниты, с помощью которых я получил доступ к процедурам и фукнциям работы с операционной системой, меню, базами данных, визуальными компонентами Delphi.
  • String, Integer, Boolean – типы данных, на которых основана данная программа. Соответственно строковый, целочисленный, логический типы.

При написании курсовой работы я обращался к использованию визуальных и не визуальных компонентов. Давайте, перечислим всех их:

  • TButton — обычная кнопка, нам нужно лишь ее событие onClick(для обработки).
  • TCombobox – представляет собой TEdit с выпадающим вниз меню, элементы которого можно программировать.
  • TDBGrid – компоненты отображения таблиц базы данных в удобочитаемой форме, в виде сетки ячеек и столбцов.
  • TDBNavigator – набор соединенных вместе кнопок навигации по таблице БД. Действия: Назад, Вперед, Вставить, Удалить, Сохранить, Отменить и т.д. над ячейками и строками таблиц.
  • TDatasource – компонент управления потоком данных между базой данных и программой.
  • TTable – является виртуальной таблицей, копией физической таблицы, все операции над ней затем сохраняются в физической таблице.
  • TImage – список графических изображений.
  • TQuery – компоненты для реализации в своей программе SQL-запросов. В данном проекте только для реализации выборки из других таблиц БД.

БД создавалась с помощью SQL Explorer. Имя псевдонима – “mishel ”. Тип драйвера «STANDART».

После создания локальных БД, я приступил к написанию исходного кода будущей программы. Заострять особого внимания на данной стадии разработки мы не будем, а сразу перейдем к рассмотрению принципа работы продукта.

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

Поиск в программе реализован при помощи SQL запроса. Задавая определенные критерии в появившемся окне, мы можем без проблем отыскать интересующую нас информацию.

Добавление новых людей в базу осуществить можно двумя способами:

  • Нажав на панели на кнопку «Вставить» и вручную заполнить все поля.
  • Далее нажать «Готово», и программа сама заполнит и создаст за вас новую запись в БД.

Завершение работы программы осуществляется либо нажатием кнопки «крестик» в заголовке программы, либо выбором кнопки «EXIT.

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

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

Исходный код

unit UnitMishel;

interface

uses

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

Dialogs, StdCtrls, Mask, DBCtrls, DB, DBTables, ExtCtrls, Grids, DBGrids,

ImgList, jpeg, ShellCtrls, Outline, DirOutln, FileCtrl;

type

TForm1 = class(TForm)

DataSource1: TDataSource;

Table1: TTable;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

DBEdit1: TDBEdit;

DBEdit2: TDBEdit;

DBEdit3: TDBEdit;

DBEdit4: TDBEdit;

Label4: TLabel;

DBNavigator1: TDBNavigator;

Table2: TTable;

DBGrid1: TDBGrid;

Button1: TButton;

Query1: TQuery;

Button2: TButton;

Button3: TButton;

DataSource3: TDataSource;

DBEdit5: TDBEdit;

Label5: TLabel;

Image1: TImage;

DBMemo1: TDBMemo;

DBMemo2: TDBMemo;

DirectoryListBox1: TDirectoryListBox;

DriveComboBox1: TDriveComboBox;

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

procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);

procedure Table1BeforeOpen(DataSet: TDataSet);

procedure Table1AfterScroll(DataSet: TDataSet);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

BmpPath: string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

form1.Close

end;

procedure TForm1.Button2Click(Sender: TObject);

var

nickname: ShortString;

begin

nickname:=InputBox(‘Sample of information from DB’,

 ‘Enter name of star and click on OK.’, »);

if nickname <> » then

begin

with form1.Query1 do begin

Close;

SQL.Clear;

SQL.Add(‘SELECT * from stars where ‘);

SQL.Add(‘upper(Nickname) like «%’ + UpperCase(nickname) + ‘%» ‘);

SQL.Add(‘ORDER BY Nickname’);

Open;

end;

if Query1.RecordCount = 0 then

ShowMessage(‘In a database there is not record’);

end;

image1.Picture.LoadFromFile(‘D:\000Student\STARS\DATA\’ + DBEdit5.Text);

//Edit2.Text := DirectoryListBox1.Directory;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Query1.Active := false;

Query1.SQL.Clear;

Query1.SQL.Text := ‘select * from stars order by nickname’;

Query1.Active := true;

end;

procedure ShowFoto(foto: string);

begin

try

Form1.Image1.Picture.LoadFromFile(BmpPath+foto);

Form1.Image1.Visible:=True;

except

on EFOpenError do

begin

ShowMessage(‘picture ‘+foto+’ not found.’) ;

end;

end;

end;

procedure TForm1.Table1AfterScroll(DataSet: TDataSet);

begin

if form1.DBEdit5.Visible then

begin

form1.DBEdit5.Visible:= False;

form1.Label5.Visible:=False;

end;

if Form1.DBEdit5.Text <> »

then ShowFoto(Form1.DBEdit5.Text)

else form1.Image1.Visible:=False;

end;

procedure TForm1.DBEdit5KeyPress(Sender: TObject; var Key: Char);

begin

if (key = #13) then

if Form1.DBEdit5.Text <>»

then ShowFoto(Form1.DBEdit5.Text)

else form1.Image1.Visible:=False;

end;

procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);

begin

//image1.Picture.LoadFromFile(DirectoryListBox1.Directory + ‘\’ + DBEdit5.Text);

//’D:\000Student\STARS\DATA\’ + DBEdit5.Text);

case Button of

nbinsert: begin

Image1.Visible:=False;

DBEdit5.Visible:=True;

Label5.Visible:=True;

end;

nbEdit: begin

DBEdit5.Visible:=True;

Label5.Visible:=True;

end;

end;

end;

procedure TForm1.Table1BeforeOpen(DataSet: TDataSet);

begin

BmpPath:=ExtractFilePath(ParamStr(0))+’data\’;

end;

end. 

Блок-схема