Раздел 2. Моделирование сложных систем.
Формулировка задания:
Создать модель системы банковского обслуживания на основе банкомата, осуществляющего выдачу наличных и работу с картами.
Математическое описание поставленной задачи:
Описание методов решения задания: для создания программы использовалось ADO соединения, запросы SQL: выборки, удаления, добавления и изменения данных. Для работы с текстовым файлом была создана функция.
Описание программной реализации модели: программа создана в среде Delphi с использованием программы Microsoft Access, Блокнот исходный код приведен в приложении.
Описание созданного приложения: в результате реализации модели была создана программа, которая выполняет следующие свойства: добавление, удаление, изменение и сохранение данных.
Результаты работы приложения:
Рисунок2.Форма базы данных.
Добавление и удаление в базе данных реализуется при нажатии соответствующих кнопок, с использованием информации введенной в верхние поля.
Нижние поля с лево отвечают за проверку введенного кода соответствующей карты, при нажатии кнопки ОК. Нижнее поле с право отвечает за снятие введенной суммы, при нажатии соответствующей кнопки.
Исходный код приложения.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, StdCtrls, ADODB, Buttons, ExtCtrls;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
GroupBox1: TGroupBox;
DBGrid1: TDBGrid;
ADOTable1: TADOTable;
DataSource1: TDataSource;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
LabeledEdit3: TLabeledEdit;
LabeledEdit4: TLabeledEdit;
BitBtn1: TBitBtn;
ADOQuery1: TADOQuery;
LabeledEdit5: TLabeledEdit;
BitBtn2: TBitBtn;
GroupBox2: TGroupBox;
LabeledEdit6: TLabeledEdit;
LabeledEdit7: TLabeledEdit;
BitBtn3: TBitBtn;
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Label2: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ADOQuery1.SQL.Clear;\\создание запроса на добавление
ADOQuery1.SQL.Add('INSERT INTO cards VALUES ('+LabeledEdit5.Text+',"'+LabeledEdit1.Text+'", "'+LabeledEdit2.Text+'", '+LabeledEdit3.Text+', '+LabeledEdit4.Text+');');
ADOQuery1.ExecSQL;
ADOTable1.Active := FALSE;\\обновление таблицы
ADOTable1.Active := TRUE;
LabeledEdit1.Text := '';\\очищение полей
LabeledEdit2.Text := '';
LabeledEdit3.Text := '';
LabeledEdit4.Text := '';
LabeledEdit5.Text := '';
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
ADOQuery1.SQL.Clear;\\создание запроса на удаление
ADOQuery1.SQL.Add('DELETE FROM cards WHERE Код='+LabeledEdit5.Text);
ADOQuery1.ExecSQL;
ADOTable1.Active := FALSE;\\обновление таблицы
ADOTable1.Active := TRUE;
LabeledEdit5.Text := '';\\очищение поля
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
ADOQuery1.SQL.Clear;\\создание запроса поиска
ADOQuery1.SQL.Add('SELECT * FROM cards WHERE Код='+LabeledEdit6.Text +' AND Пароль='+LabeledEdit7.Text);
ADOQuery1.Active := TRUE;
if ADOQuery1.RecordCount > 0 then\\проверка кода
begin
Label1.Caption := ADOQuery1.Fields.Fields[4].AsString;
Label1.Visible := TRUE;
Button1.Visible := TRUE;
Edit1.Visible := TRUE;
end
else
ShowMessage('НЕВЕРНЫЙ ПАРОЛЬ');
end;
procedure TForm1.Button1Click(Sender: TObject);
var f : textfile;\\создание текстовой функции
begin
if StrToint(Edit1.Text)>StrToInt(Label1.Caption) \\условие снятия денег
then ShowMessage('Недостаточно средств на счете') else
begin
ADOQuery1.SQL.Clear;\\создание запроса на изменение
ADOQuery1.SQL.Add('UPDATE cards SET Счет='+ IntToStr(StrToInt(Label1.Caption) - StrToInt(Edit1.text))+' WHERE Код='+LabeledEdit6.Text);
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Clear;\\создание запроса поиска
ADOQuery1.SQL.Add('SELECT * FROM cards WHERE Код='+LabeledEdit6.Text +' AND Пароль='+LabeledEdit7.Text);
ADOQuery1.Active := TRUE;
Label1.Caption := ADOQuery1.Fields.Fields[4].AsString;\\списание со счета денег
ADOTable1.Active := FALSE;\\обновление таблицы
ADOTable1.Active := TRUE;
AssignFile(f, '1.txt');\\создание текстового файла
rewrite(f);
writeln(f, '---------------');\\запись в файл
writeln(f, DateToStr(Now));
writeln(f, TimeToStr(Time));
writeln(f, LabeledEdit6.Text);
writeln(f, 'снято: ' + Edit1.Text);
writeln(f, 'остаток: ' + label1.Caption);
writeln(f, '---------------');
CloseFile(f);
LabeledEdit6.Text := '';\\очищение полей
LabeledEdit7.Text := '';
Label1.Caption := '';
Edit1.Text := '';
Edit1.Visible := FALSE;
Button1.Visible := False;
ShowMessage('ПЕЧАТЬ ЧЕКА');
end;
end;
end.