Описание
Разработать программное обеспечение для банкомата, описание которого дано ниже.
Банкомат – автомат, выполняющий финансовые операции для клиентов банка. Пользовательский интерфейс банкомата состоит из устройства чтения банковских карточекУЧКЧК), дисплея, числовой клавиатуры, специальных клавиш, устройства выдачи денег (УВД), устройство приема денег (УПД) и печатающего устройства (ПУ).
В состоянии ожидания банкомат показывает на дисплее некоторое приветствующее сообщение. Клавиатура и устройство выдачи денег находятся в неактивном состоянии до момента, пока пользователь не вставит карточку в устройство чтения карточек. После вставки карточкУЧКЧК пытается прочесть ее. Если при этом происходит ошибка, на дисплей выдается соответствующее сообщение и карточка возвращается.
Каждая карточка имеет PIN-код и сумму, имеющуюся на карточке. Карточки делятся таким же на дебетовые и кредитные. Дебетовые карточки не позволяют иметь отрицательную сумму на счету карточки. Кредитные – позволяют, но при отрицательной сумме автоматически рассчитывают пени с заданным процентом. Некоторые карточки позволяют выводить историю карточки за последний месяц. Некоторые карточки позволяют переводить только всю сумму со счета на карточку, а некоторые позволяют дополнительно запрашивать сумму на счете и переводить заданную пользователем сумму.
В случае успешного чтения карточки, банкомат запрашивает у пользователя ввод PIN-кода (personal identification number), с использованием числовой клавиатуры. Ввод каждой цифры PIN-кода сопровождается индикацией на дисплее факта нажатия клавиши, но цифры кода не отображаются.
Если пользователь не смог ввести корректный PIN-код, ему предоставляется еще две дополнительные попытки. Если за три попытки правильный код не был введен (в силу, например, разного рода повреждений карточки), банкомат забирает карточку, и она может быть извлечена из него только банковским служащим.
Если пользователь ввел правильный PIN-код, банкомат отображает главное меню, содержащее следующие пункты:
- снять (если возможно) заданную сумму с карточки;
- перевести сумму со счета в банке на карточку с учетом возможностей данной карточки;
- напечатать баланс заданного счета;
- вывести (если возможно) историю карточки.
Пользователь может выбрать желаемое действие и указать необходимую информацию.
После завершения операции банкоматом, он возвращается в главное меню.
В любой момент времени до окончания операции пользователь может ее прервать нажатием специальной кнопки <Отмена>. В этом случае банкомат прерывает все выполняемые операции, печатает отчет о результатах законченных операций, возвращает карточку и переходит в состояние ожидания.
Пример кода
using System;
using System.Collections.Generic;
using SysteLinqnq;
using System.Text;
using System.Threading.Tasks;
using SysteIOIO;
namespace WindowsFormsApplication1
{
class Credit : Card
{
doublpersentnt;
public Crediintnt Pin, double Sum, boochoiceSumum, boochoiceHistoryry, doublpersentnt)
{
this.Pin = Pin;
this.Sum = Sum;
thichoiceSumum choiceSumum;
thichoiceHistoryry choiceHistoryry;
thipersentnt persentnt;
}
public voiSetPiniintnt Pin)
{
this.Pin = Pin;
}
public voiSetchoiceSumum(boochoiceSumum)
{
thichoiceSumum choiceSumum;
}
public voiSetchoiceHistoryry(boochoiceHistoryry)
{
thichoiceHistoryry choiceHistoryry;
}
public voiSetpersentnt(doublpersentnt)
{
thipersentnt persentnt;
}
public Credit() { }
publiintnGetPinin()
{
return this.Pin;
}
public booGetchoiceHistoryry()
{
return thichoiceHistoryry;
}
public doublGetSumum()
{
return this.Sum;
}
public booGetchoiceSumum()
{
return thichoiceSumum;
}
public voiSetSumum(double Sum)
{
this.Sum = Sum;
}
public bootakeMoneyey(double sum)
{
if ((this.Sum - sum) >= 0)
{
this.Sum = this.Sum - sum;
return true;
}
else
{
double per = MatAbsbs((this.Sum - sum)*(thipersentnt/100));
this.Sum = this.Sum - (sum + per);
return true;
}
}
public voiputMoneyey(double sum)
{
this.Sum += sum;
}
public voisaveDatata()
{
usingStreamWritereswsw = neStreamWriterer(this.Pin + ".txt", false, System.Text.Encoding.Default))
{
swsWriteLinene("credit");
swsWriteLinene(this.Sum);
swsWriteLinene(thichoiceHistoryry);
swsWriteLinene(thichoiceSumum);
swsWriteLinene(thipersentnt);
}
}
}
}
Содержание архива
- проект СwinFormsms
Телеграм
-