РефератыИнформатика, программированиеПрПроектирование программного обеспечения банкомата

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

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


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


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


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


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


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


ifSelf.Sum >= Summthen


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


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;


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


procedureTKlient.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;

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

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

Слов:802
Символов:9664
Размер:18.88 Кб.