Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Федеральное агентство по образованию.docx
Скачиваний:
4
Добавлен:
18.12.2018
Размер:
185.5 Кб
Скачать

Раздел 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.