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

2016-07-29СтудИзба

Описание файла

Документ из архива "Проектирование программного обеспечения банкомата", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "контрольные работы и аттестации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "50181"

Текст из документа "50181"

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

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





















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

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

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;

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
437
Средний доход
с одного платного файла
Обучение Подробнее