на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Проектирование программного обеспечения банкомата

Проектирование программного обеспечения банкомата

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования Пермский государственный технический университет

Работа на тему:

«Проектирование программного обеспечения банкомата»

2010

Введение

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

Спецификация варианта использования «Аутентификация»

Основное действующее лицо: Клиент.

Краткое описание: Перед выполнением любого действия клиент должен быть аутентифицирован.

Основной сценарий:

Предусловия: Запущен сценарий «Снять деньги» или сценарий «Показать баланс».

1. Система запрашивает пароль.

2. Клиент вводит пароль.

3. Если пароль верен, то происходит возврат в запущенный ранее сценарий.

4. Если пароль не верен, то

4.1Если количество вводов неверного пароля меньше 4, то

4.1.1Выдать предупреждение о неправильном пароле.

4.1.2Вернуться к началу сценария.

4.2Иначе:

4.2.1Выдать сообщение о блокировке карты.

4.2.2Заблокировать карту.

Постусловия: Нет.

Спецификация варианта использования «Снять деньги»

Основное действующее лицо: Клиент.

Краткое описание: Клиент запрашивает некоторую сумму денег. Если на его счету есть необходимая сумма, то система выдает ее.

Основной сценарий:

Предусловия: Клиент вставил карточку в банкомат и выбрал действие «Снять деньги».

1. Переход к подчиненному сценарию «Аутентификация».

2. Если аутентификация прошла успешно, то

2.1Система запрашивает требуемую сумму.

2.2Клиент вводит сумму.

2.3Если эта сумма в наличие на счете, то

2.3.1Сумма списывается со счета.

2.3.1Выдаются деньги.

2.4Иначе, выдается сообщение о невозможности операции.

Постусловия: Клиент переходит к выбору действия.

Спецификация варианта использования «Показать баланс»

Основное действующее лицо: Клиент.

Краткое описание: Клиент запрашивает баланс своего счета.

Основной сценарий:

Предусловия: Клиент вставил карточку в банкомат и выбрал действие «Показать баланс».

1. Переход к подчиненному сценарию «Аутентификация».

2. Если аутентификация прошла успешно, то система показывает баланс счета клиента.

Постусловия: Клиент переходит к выбору действия.

Текст программы

TAccount = class //класс Счет

private

Code: integer; //код счета

Sum: real; //количество денег на счете

public

function WithdrawMoney(Summ: real): real; //снять деньги

function GetBalance(): real; //получить баланс счета

end;

TKlient = class //класс Клиент

private

Code: integer; //код клиента

Password: integer; //пароль клиента

Acct: TAccount; //счет клиента

public

function GetCode():integer; //получить код клиента

function GetPassword(): real; //получить пароль клиента

function GetAccount(): TAccount; //получить счет клиента

procedure Get(Code: integer); //получить информацию о клиенте из платежной системы

end;

TManager = class //класс управляющий

private

function Authenticate(out TrueKlient: TKlient): boolean; //проверить подлинность

public

function GetCode():integer; //получить код карты

function GetPassword():integer; //получить пароль клиента

function GetSum(): real; //получить запрашиваемую сумму

procedure WithdrawMoney(); //снять деньги

procedure GetBalance(); //получить баланс счета

end;

//снять деньги

function TAccount.WithdrawMoney(Summ: real): real;

begin

//если денег на счете не меньше, чем требует клиент

if Self.Sum >= Summ then

//то уменьшить сумму счета

Self.Sum := Self.Sum - Summ;

//вернуть остаток

Result := Self.Sum;

end;

//получить баланс счета

function TAccount.GetBalance(): real;

begin

//вернуть сумму счета

Result := Self.Sum;

end;

//получить код клиента

function TKlient.GetCode():integer;

begin

//вернуть код клиента

Result := Self.Code;

end;

//получить пароль клиента

function TKlient.GetPassword(): real;

begin

//вернуть пароль клиента

Result := Self.Password;

end;

//получить счет клиента

function TKlient.GetAccount(): TAccount;

begin

//вернуть счет клиента

Result := Self.Acct;

end;

//получить информацию о клиенте

procedure TKlient.Get(Code: integer);

begin

//Здесь должен выполняться запрос к платежной системе

//примерно такие данные должны возвращаться:

Self.Code := 12345; //код карты клиента

Self.Password := 54321; //пароль

Self.Acct.Code := 12345; //код счета

Self.Acct.Sum := 111.50; //сумма денег на счете

end;

//получить код карты

function TManager.GetCode():integer;

begin

//Здесь информация должна считываться с банковской карты

Result := 12345;

end;

//получить пароль клиента

function TManager.GetPassword():integer;

begin

//Здесь информация должна считываться с терминала

Result := 12345;

end;

//получить запрашиваемую сумму

function TManager.GetSum(): real;

begin

//Здесь информация должна считываться с терминала

Result := 100;

end;

//проверить подлинность

function TManager.Authenticate(out TrueKlient: TKlient): boolean;

var

KlientCode: integer;

KlientPass: integer;

begin

Result := false;

KlientCode := Manager.GetCode();//получаем код карты клиента

KlientPass := Manager.GetPassword();//получаем пароль, введенный клиентом

TrueKlient.Get(KlientCode);//получаем данные клиента из платежной системы

if TrueKlient.Password = KlientPass then//если пароли совпадают

Result := true;

end;

//снять деньги

Procedure TManager.WithdrawMoney();

var

TrueKlient: TKlient; //клиент

Summ : real; //запрашиваемая клиентом сумма

Rest1, Rest2 : real; //остаток на счете до и после операции

St : string; //текст сообщения

begin

TrueKlient := TKlient.Create; //конструктор класса клиент

if Manager.Authenticate(TrueKlient) then //если клиент аутентифицирован

begin

Summ := Manager.GetSum(); //получаем сумму, запрашиваемую клиентом

if Summ <> 0 then //если введена не 0-вая сумма

begin

Rest1 := TrueKlient.Acct.GetBalance; //получим остаток до снятия денег

Rest2 := TrueKlient.Acct.WithdrawMoney(Summ); //получим остаток после снятия денег

if Rest2 <> Rest1 then exit //если деньги были сняты - выходим из процедуры

else St := 'Операция не может быть выполнена';

end

else St := 'Введите сумму';

Form1.PutMessage(St); //выдать сообщение

end;

end;

//получить баланс счета

Procedure TManager.GetBalance();

var

TrueKlient: TKlient; //клиент

Summ : real; //запрашиваемая клиентом сумма

St : string; //текст сообщения

begin

TrueKlient := TKlient.Create; //конструктор класса клиент

if Manager.Authenticate(TrueKlient) then //если клиент аутентифицирован

begin

Summ := TrueKlient.Acct.GetBalance; //получим остаток на счете

St := 'Остаток средств на вашем счете: ' + FloatToStr(Summ); //переведем число в строку

Form1.PutMessage(St); //выведем на экран

end;

end;



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.