Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
unit BankUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TBankForm = class(TForm)
Panel: TPanel;
Ok: TButton;
Cansel: TButton;
BankMaster: TButton;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
StaticText1: TStaticText;
StaticText2: TStaticText;
Panel1: TPanel;
Image: TImage;
Image1: TImage;
procedure FormCreate(Sender: TObject);
procedure ImageDblClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Image1DblClick(Sender: TObject);
procedure CanselClick(Sender: TObject);
procedure BankMasterClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Edit: TEdit;
stSetPin: TStaticText;
stMessage: TStaticText;
stGiveMoney: TStaticText;
stGiveSaldo: TStaticText;
intCountPicture: integer;
intCounter: integer;
procedure BeginOperation;
procedure InputText;
procedure DestroyText;
procedure stGiveMoneyClick(Sender: TObject);
procedure stGiveSaldoClick(Sender: TObject);
procedure ShowButtons;
procedure HideButtons;
procedure QuantityMoney;
procedure PinRegistry(Sender: TObject);
procedure MoneyRegistry(Sender: TObject);
procedure GiveMoney;
function MoneyCalc(const sum: integer): boolean;
end;
var
BankForm: TBankForm;
implementation
uses ChildForm, MoneyStruct;
{$R *.DFM}
//Ввод начальных данных
procedure TBankForm.FormCreate(Sender: TObject);
begin
Image.Picture.LoadFromFile('Card.bmp');
Image.Stretch := true;
Image.Center := true;
intCountPicture:=0;
HideButtons;
Money.Ten:= 50;
Money.Fifty:= 20;
Money.Hundred:= 10;
Money.FiveHundred:= 5;
end;
//Обработка нажатия на картинку
//Загрузка картинки и начало операций
procedure TBankForm.ImageDblClick(Sender: TObject);
begin
if intCountPicture = 0
then
begin
Image.Picture.LoadFromFile('CardInsert.bmp');
Image.Hint := 'Click for Remove Card';
end
else
begin
Image.Picture.LoadFromFile('Card.bmp');
Image.Hint := 'Click for Remove Card';
end;
intCountPicture := (intCountPicture + 1) mod 2;
beep;
BeginOperation;
end;
//Выводит текст Классы операций
procedure TBankForm.BeginOperation;
begin
intCounter := 0;
if intCountPicture = 1
then
begin
StaticText1.Visible := false;
StaticText2.Visible := false;
InputText;
end
else
begin
while(Panel.ComponentCount <> 0) do
begin
Panel.Components[0].Free;
end;
StaticText1.Visible:= true;
StaticText2.Visible:= true;
end;
end;
//Выводит стандартный текст
procedure TBankForm.InputText;
begin
stGiveMoney := TStaticText.Create(Panel);
stGiveMoney.Parent := Panel;
stGiveMoney.Top := 60;
stGiveMoney.Left := 35;
stGiveMoney.AutoSize := true;
stGiveMoney.Caption := 'To take off money';
stGiveMoney.Font.Charset := RUSSIAN_CHARSET;
stGiveMoney.Font.Color := clWindowText;
stGiveMoney.Font.Name := 'Tahoma';
stGiveMoney.Font.Size := 20;
stGiveMoney.Cursor := crHandPoint;
stGiveMoney.Font.Style := [fsBold,fsUnderline];
stGiveMoney.Visible := true;
{-------------}
stGiveSaldo := TStaticText.Create(Panel);
stGiveSaldo.Parent := Panel;
stGiveSaldo.Top := 120;
stGiveSaldo.Left := 2;
stGiveSaldo.AutoSize := true;
stGiveSaldo.Caption := 'The rest on the account';
stGiveSaldo.Font.Charset := RUSSIAN_CHARSET;
stGiveSaldo.Font.Color := clWindowText;
stGiveSaldo.Font.Name := 'Tahoma';
stGiveSaldo.Font.Size := 20;
stGiveSaldo.Font.Style := [fsBold,fsUnderline];
stGiveSaldo.Cursor := crHandPoint;
stGiveSaldo.Visible := true;
stGiveMoney.OnClick:= stGiveMoneyClick;
stGiveSaldo.OnClick:= stGiveSaldoClick;
{----------------}
stMessage := TStaticText.Create(Panel);
stMessage.Parent := Panel;
stMessage.Top := 10;
stMessage.Left := 100;
stMessage.AutoSize := true;
stMessage.Caption := 'Operations:';
stMessage.Font.Charset := RUSSIAN_CHARSET;
stMessage.Font.Color := clWindowText;
stMessage.Font.Name := 'Tahoma';
stMessage.Font.Size := 15;
stMessage.Font.Style := [fsBold];
stMessage.Visible := true;
end;
//метод обработки при нажитии на текст Взять деньги
procedure TBankForm.stGiveMoneyClick(Sender: TObject);
begin
DestroyText;
ShowButtons;
Edit:= TEdit.Create(Panel);
Edit.Parent:= Panel;
Edit.Top := 60;
Edit.Left := 90;
Edit.AutoSize := true;
Edit.Font.Charset := RUSSIAN_CHARSET;
Edit.Font.Color := clWindowText;
Edit.Font.Name := 'Tahoma';
Edit.Font.Size := 12;
Edit.Font.Style := [fsBold];
Edit.Enabled:= false;
Edit.Visible := true;
{-------------}
stSetPin:= TStaticText.Create(Panel);
stSetPin.Parent:= Panel;
stSetPin.Top := 10;
stSetPin.Left := 60;
stSetPin.AutoSize := true;
stSetPin.Caption := 'Enter Your PinCode:';
stSetPin.Font.Charset := RUSSIAN_CHARSET;
stSetPin.Font.Color := clWindowText;
stSetPin.Font.Name := 'Tahoma';
stSetPin.Font.Size := 15;
stSetPin.Font.Style := [fsBold];
stSetPin.Visible := true;
{---------------}
Ok.OnClick:= PinRegistry;
end;
//процедура роверки правильности Pina
procedure TBankForm.PinRegistry(Sender: TObject);
begin
if ((intCounter > 9999) or (intCounter < 1000))
then
begin
intCounter:=0;
Edit.Text:='';
Edit.Refresh;
ShowMessage('Incorrect Pin');
end
else QuantityMoney;
end;
//процедура проверки правильности ввода количества денег
procedure TBankForm.MoneyRegistry(Sender: TObject);
begin
if (intCounter > 1000) or (intCounter = 0) or ((intCounter mod 10) <> 0)
or (not MoneyCalc(intCounter))
then
begin
Edit.Text:='';
Edit.Refresh;
if ((intCounter mod 10) <> 0) then
ShowMessage('Incorrect Sum')
else if (intCounter > 1000) then
ShowMessage('You do not have so much money')
else ShowMessage('In Bank there is no so much money');
intCounter:=0;
end
else GiveMoney;
end;
//метод при нажитии на текст Остаток на счёте
procedure TBankForm.stGiveSaldoClick(Sender: TObject);
begin
stMessage.Caption := 'Give a Check';
stMessage.Visible := true;
Image.Enabled:= false;
Image1.Picture.LoadFromFile('Check.bmp');
Image1.Enabled:= true;
Image1.Cursor:= crHandPoint;
stGiveMoney.Visible:= false;
stGiveSaldo.Visible:= false;
end;
//метод обработки при нажатии кнопок 1,2,....0
procedure TBankForm.Button1Click(Sender: TObject);
begin
case (Sender as TButton).Tag of
1: intCounter := intCounter*10 + 1;
2: intCounter := intCounter*10 + 2;
3: intCounter := intCounter*10 + 3;
4: intCounter := intCounter*10 + 4;
5: intCounter := intCounter*10 + 5;
6: intCounter := intCounter*10 + 6;
7: intCounter := intCounter*10 + 7;
8: intCounter := intCounter*10 + 8;
9: intCounter := intCounter*10 + 9;
10: intCounter := intCounter*10;
end;
Edit.Text:= inttostr(intCounter);
Edit.Refresh;
end;
//уничтожение вспомогательного текста
procedure TBankForm.DestroyText;
begin
stGiveMoney.Free;
stGiveSaldo.Free;
stMessage.Visible:= false;
end;
//метод делающий кнопки видимыми
procedure TBankForm.ShowButtons;
begin
Ok.Enabled:= true;
Cansel.Enabled:= true;
Button1.Enabled:= true;
Button2.Enabled:= true;
Button3.Enabled:= true;
Button4.Enabled:= true;
Button5.Enabled:= true;
Button6.Enabled:= true;
Button7.Enabled:= true;
Button8.Enabled:= true;
Button9.Enabled:= true;
Button10.Enabled:= true;
end;
//метод делающий кнопки невидимыми
procedure TbankForm.HideButtons;
begin
Ok.Enabled:= false ;
Cansel.Enabled:= false;
Button1.Enabled:= false;
Button2.Enabled:= false;
Button3.Enabled:= false;
Button4.Enabled:= false;
Button5.Enabled:= false;
Button6.Enabled:= false;
Button7.Enabled:= false;
Button8.Enabled:= false;
Button9.Enabled:= false;
Button10.Enabled:= false;
end;
//выводит надпись 'Quantity cash Multiple 10:' и запускает
//процедуру проверки правильности ввода денег
procedure TBankForm.QuantityMoney;
begin
stSetPin.Free;
stMessage.Caption:= 'Quantity cash Multiple 10:';
stMessage.Left:= 30;
stMessage.Visible:= true;
Panel.Refresh;
intCounter:= 0;
Edit.Text:= '';
Edit.Refresh;
Ok.OnClick:= MoneyRegistry;
end;
//загружает картинку Деньги
procedure TBankForm.GiveMoney;
begin
Image1.Picture.LoadFromFile('BoxMoney.bmp');
Image1.Cursor:= crHandPoint;
Edit.Free;
stMessage.Caption:= 'Give Money';
beep;
HideButtons;
Image.Enabled:= false;
end;
//метод обработки при нажатии на вторую картинку
procedure TBankForm.Image1DblClick(Sender: TObject);
begin
stMessage.Free;
StaticText1.Visible:= true;
StaticText2.Visible:= true;
intCountPicture:= 0;
Image.Picture.LoadFromFile('Card.bmp');
Image1.Picture.LoadFromFile('Box.bmp');
Image1.Cursor:= crDefault;
Image.Enabled:= true;
end;
//метод обработки нажатия на кнопку Cansel
procedure TBankForm.CanselClick(Sender: TObject);
begin
Edit.Text:='';
Edit.Refresh;
intCounter:=0;
end;
//вычисляет сколько каких денег выдаёт банкомат
function TBankForm.MoneyCalc(const sum: integer): boolean;
var
t,f,h,fh,s: integer;
begin
s:= sum;
fh:= Money.FiveHundred;
h:= Money.Hundred;
f:= Money.Fifty;
t:= Money.Ten;
while(fh <> 0) and ((s div 500) > 0) do
begin
dec(fh);
dec(s,500);
end;
while(h <> 0) and ((s div 100) > 0) do
begin
dec(h);
dec(s,100);
end;
while(f <> 0) and ((s div 50) > 0) do
begin
dec(f);
dec(s,50);
end;
while(t <> 0) and ((s div 10) > 0) do
begin
dec(t);
dec(s,10);
end;
if s = 0 then
begin
Money.FiveHundred:= fh;
Money.Hundred:= h;
Money.Fifty:= f;
Money.Ten:= t;
result:= true;
end
else result:= false;
end;
//запуск второй формы
procedure TBankForm.BankMasterClick(Sender: TObject);
begin
MoneyEdit:= TMoneyEdit.Create(Application);
MoneyEdit.Ok.OnClick:= MoneyEdit.OkClick;
MoneyEdit.show;
end;
end.