Описание
Разработать программное обеспечение для банкомата, описание которого дано ниже.
Банкомат – автомат, выполняющий финансовые операции для клиентов банка. Пользовательский интерфейс банкомата состоит из устройства чтения банковских карточек (УЧК), дисплея, числовой клавиатуры, специальных клавиш, устройства выдачи денег (УВД), устройство приема денег (УПД) и печатающего устройства (ПУ).
В состоянии ожидания банкомат показывает на дисплее некоторое приветствующее сообщение. Клавиатура и устройство выдачи денег находятся в неактивном состоянии до момента, пока пользователь не вставит карточку в устройство чтения карточек. После вставки карточки УЧК пытается прочесть ее. Если при этом происходит ошибка, на дисплей выдается соответствующее сообщение и карточка возвращается.
Каждая карточка имеет PIN-код и сумму, имеющуюся на карточке. Карточки делятся таким же на дебетовые и кредитные. Дебетовые карточки не позволяют иметь отрицательную сумму на счету карточки. Кредитные – позволяют, но при отрицательной сумме автоматически рассчитывают пени с заданным процентом. Некоторые карточки позволяют выводить историю карточки за последний месяц. Некоторые карточки позволяют переводить только всю сумму со счета на карточку, а некоторые позволяют дополнительно запрашивать сумму на счете и переводить заданную пользователем сумму.
В случае успешного чтения карточки, банкомат запрашивает у пользователя ввод PIN-кода (personal identification number), с использованием числовой клавиатуры. Ввод каждой цифры PIN-кода сопровождается индикацией на дисплее факта нажатия клавиши, но цифры кода не отображаются.
Если пользователь не смог ввести корректный PIN-код, ему предоставляется еще две дополнительные попытки. Если за три попытки правильный код не был введен (в силу, например, разного рода повреждений карточки), банкомат забирает карточку, и она может быть извлечена из него только банковским служащим.
Если пользователь ввел правильный PIN-код, банкомат отображает главное меню, содержащее следующие пункты:
- снять (если возможно) заданную сумму с карточки;
- перевести сумму со счета в банке на карточку с учетом возможностей данной карточки;
- напечатать баланс заданного счета;
- вывести (если возможно) историю карточки.
Пользователь может выбрать желаемое действие и указать необходимую информацию.
После завершения операции банкоматом, он возвращается в главное меню.
В любой момент времени до окончания операции пользователь может ее прервать нажатием специальной кнопки <Отмена>. В этом случае банкомат прерывает все выполняемые операции, печатает отчет о результатах законченных операций, возвращает карточку и переходит в состояние ожидания.
Пример кода
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace WindowsFormsApplication1 { class Credit : Card { double persent; public Credit(int Pin, double Sum, bool choiceSum, bool choiceHistory, double persent) { this.Pin = Pin; this.Sum = Sum; this.choiceSum = choiceSum; this.choiceHistory = choiceHistory; this.persent = persent; } public void SetPin(int Pin) { this.Pin = Pin; } public void SetchoiceSum(bool choiceSum) { this.choiceSum = choiceSum; } public void SetchoiceHistory(bool choiceHistory) { this.choiceHistory = choiceHistory; } public void Setpersent(double persent) { this.persent = persent; } public Credit() { } public int GetPin() { return this.Pin; } public bool GetchoiceHistory() { return this.choiceHistory; } public double GetSum() { return this.Sum; } public bool GetchoiceSum() { return this.choiceSum; } public void SetSum(double Sum) { this.Sum = Sum; } public bool takeMoney(double sum) { if ((this.Sum - sum) >= 0) { this.Sum = this.Sum - sum; return true; } else { double per = Math.Abs((this.Sum - sum)*(this.persent/100)); this.Sum = this.Sum - (sum + per); return true; } } public void putMoney(double sum) { this.Sum += sum; } public void saveData() { using (StreamWriter sw = new StreamWriter(this.Pin + ".txt", false, System.Text.Encoding.Default)) { sw.WriteLine("credit"); sw.WriteLine(this.Sum); sw.WriteLine(this.choiceHistory); sw.WriteLine(this.choiceSum); sw.WriteLine(this.persent); } } } }
Содержание архива
- проект С# winForms
Nekit203