ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 14.06.2023

Просмотров: 437

Скачиваний: 10

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Если PIN-код введен верно, на дисплее отображаются кнопки выбора дальнейшего действия.

Рисунок 20 – «Выберите действие»

При нажатии кнопки «Запросить баланс» банкомат обращается к серверу, где происходит проверка баланса по номеру карты. Полученная информация отображается на дисплее (рисунок 21).

Рисунок 21 – Проверка баланса

При нажатии кнопки «Получить наличные» на дисплее отображаются кнопки выбора суммы. Затем банкомат обращается к серверу, где происходит проверка на наличие требуемой суммы на балансе данной карты и вычитание этой суммы из баланса. При выдаче наличных отображается сообщение, какими купюрами и в каком количестве была выдана данная сумма. На дисплее отображается предложение распечатать квитанцию (рисунок 22).

Рисунок 22 – Выдача наличных

При печати квитанции отображается сообщение, содержащее номер счета, выданную сумму и остаток на счете (рисунок 23).

Рисунок 23 – Печать квитанции

При нажатии кнопки «Безналичные переводы» на дисплее банкомата отображается панель с кнопками выбора вида перевода (рисунок 24).

Рисунок 24 – «Выберите вид перевода»

При нажатии кнопки «Денежный перевод» на дисплее банкомата отображается панель с элементами ввода номера карты и суммы для перевода. После ввода данных и нажатия на кнопку «Выполнить перевод» банкомат отправляет запрос серверу на проверку номера карты. Если указанный номер счета в базе на сервере не найдет, отображается сообщение об ошибке (рисунок 25).

Рисунок 25 – «Номер карты не найден»

После проверки номера карты осуществляется проверка, достаточно ли средств на текущем счете для выполнения запрашиваемой операции. Если средств недостаточно, отображается сообщение об ошибке (рисунок 26).

Рисунок 26 – «Недостаточно средств на счете»

Если средств достаточно, выполняется списание указанной суммы с текущего счета и зачисление на счет, на который производится перевод. Об успешном переводе средств пользователь оповещается сообщением (рисунок 27).


Рисунок 27 – Денежный перевод

При нажатии на кнопку «Оплата сотовой связи» на дисплее банкомата отображается панель с элементами ввода номера телефон и суммы. После ввода требуемых данных и нажатии на кнопку «Выполнить перевод» выполняется проверка, достаточно ли на остатке по счету средств для выполнения операции. Если средств достаточно, производится списание указанной суммы, пользователь оповещается сообщением об успешном выполнении операции (рисунок 28).

Рисунок 28 – Оплата сотовой связи

При нажатии на кнопки «Коммунальные платежи» или «Оплата электроэнергии» открывается форма «Коммунальные платежи». На ней необходимо выбрать поставщика услуг, отобразится номер счета поставщика для перевода. Далее требуется ввести номер лицевого счета клиента и указать сумму платежа. Будет выполнена проверка лицевого счета и баланса клиента. ОБ у спешном переводе средств пользователь будет оповещен сообщением (рисунок 29).

Рисунок 29 – Коммунальные платежи

При нажатии на кнопку «История операций» открывается форма «История операций о карте», на которой необходимо указать период и нажать кнопку «Поиск». На дисплее будет отображена история совершенных операций (рисунок 30).

Рисунок 30 – История операций по карте

При нажатии на кнопку «Выход» выполняется очистка поля ввода номера карты, на дисплее отображается надпись «Вставьте карту».

Заключение

В процессе выполнения данной работы было спроектировано и реализовано приложение, имитирующее работу банкомата. Для достижения данной цели были решены следующие задачи:

- были сформулированы требования к системе, которые описаны в виде алгоритмов;

- спроектирована и разработана база данных приложения;

- спроектирована структура приложения, разработана диаграмма классов;

- разработан пользовательский интерфейс;

- разработан программный код;

- приложение было отлажено, все возникшие в ходе реализации ошибки были исправлены.

Приложение было реализовано в среде разработки программного обеспечения MicrosoftVisulStudio 2010, на языке программирования высокого уровня C#.

Список литературы


  1. Балдин, К.В. Информационные системы в экономике: учеб.для вузов по спец. 351400 "Прикл. информатика" (по обл.) и др. междисциплинар. спец. / Балдин, К.В., Уткин, В.Б. - М.: Дашков и К, 2008. - 394 с.
  2. Брауде, Э.Дж. Технология разработки программного обеспечения / Э.Дж. Брауде. - Питер, 2004. - 656 с.
  3. Гагарина, Л.Г. Технология разработки программного обеспечения / Л.Г. Гагарина, Е.В. Кокорева, Б.Д. Виснадул. - М.: Инфра-М, 2008. - 400 с.
  4. Нейгел Кристиан, Ивьен Билл, Глинн Джей, Уотсон Карл и Скиннер Морган. Н45 С# 2008 и платформа .NET 3.5 для профессионалов. : Пер. с англ. — М. : ООО "И.Д. Вильяме", 2009. - 1392 с.: ил. - Парал. тит. англ.
  5. www.mdsn.com

Приложение 1. Листинг кода приложения

Листинг кода формы «Банкомат»

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

using System.Data.OleDb;

namespace Банкомат

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

ClassBankServer server; //экземпляр класса для связи с сервером

private void Form1_Load(object sender, EventArgs e)

{

lAction.Text = "Вставьте карту";

server = new ClassBankServer();

tbCard.PasswordChar = '*'; //скрыть вводимые символы номера карты

}

string numAccount = ""; //номер счета

bool access; //переменная, определяющая, дан ли доступ данной карте

private void btEnterCard_Click(object sender, EventArgs e) //ввод карты

{

numAccount = tbCard.Text;

access = server.CheckCard(numAccount); //связь с сервром: проверка карты

if (access == true) //если карта есть в базе

{ //ввести пин-код

lAction.Text = "Введите PIN-код";

lPin.Text = "PIN: ";

lPin.Visible = true;

pin = "";

string numCard = "********" + numAccount.Substring(8); //номер карты, где отображены только последние 4 цифры

gbDisplay.Text = numCard; //отобразить его на форме в углу дисплея

}

else

{

lAction.Text = "Данная карта недействительна";

}

}

string pin = ""; //введенный пин-код

void DisplayPIN(string code) //метод отображения на форме вводимого пин-кода

{

string pinCode = "PIN: ";

if (code.Length <= 4) //максимальная длина кода - 4 символа

{

foreach (char ch in code)

pinCode += "*"; //отображать на форме в виде *

lPin.Text = pinCode;

}

}

private void bt1_Click(object sender, EventArgs e) //при нажатии кнопки на цифровом блоке

{

if (tbCardTansact.Visible == true && mtbMobile.Visible == false) //если отображена форма ввода номера карты для перевода

{

tbCardTansact.Text += "1"; //добавить цифру в поле номера карты

}

else if (tbCardTansact.Visible == false && mtbMobile.Visible == false) //если панель ввода не отображена

{ //происходит ввод пин-кода


if (access == true && pin.Length < 4) pin += "1"; //если карта действительна и длина введенного пин-кода меньше 4 символов, добавить цифру к пин-коду

DisplayPIN(pin); //выполнить функцию отображения пин-кода на дисплее

}

}

int attempt = 3; //количество попыток ввода пин-кода

private void btEnterPin_Click(object sender, EventArgs e)

{

access = server.CheckPin(numAccount, pin); //проверка правильности пин-кода

if (access == true) //если пин верен

{ //отобразить на форме элементы управления

lAction.Text = "Выберите действие"; //для совершения операций по карте

lPin.Visible = false;

gbButtons.Visible = true;

}

else

{ //если пин введен неверно

lAction.Text = "Неверный PIN-код";

pin = "";

DisplayPIN(pin);

attempt--; //уменьшение количества доступных попыток

if (attempt > 0) MessageBox.Show("Осталось попыток: " + attempt.ToString());

else

{ //если пин введен неверно 3 раза

MessageBox.Show("PIN-код неверно введен 3 раза. Обслуживание прекращено");

btExit_Click(sender, e); //прекратить обслуживание и отобразить первоначальную форму

}

access = true;

}

}

private void bt0_Click(object sender, EventArgs e)

{

if (tbCardTansact.Visible == true && mtbMobile.Visible == false)

{

tbCardTansact.Text += "0";

}

else if (tbCardTansact.Visible == false && mtbMobile.Visible == false)

{

if (access == true && pin.Length < 4) pin += "0";

DisplayPIN(pin);

}

}

private void btCorrect_Click(object sender, EventArgs e) //кнопка корректировки введенных символов

{

if (tbCardTansact.Visible == true && mtbMobile.Visible == false) //корректировка номера карты для перевода

{

tbCardTansact.Text = tbCardTansact.Text.Remove(tbCardTansact.TextLength - 1);

}

else if (tbCardTansact.Visible == false && mtbMobile.Visible == false) //корректировка пин-кода

{

if (access == true) pin = pin.Remove(pin.Length - 1);

DisplayPIN(pin);

}

}

private void bt9_Click(object sender, EventArgs e)

{

if (tbCardTansact.Visible == true && mtbMobile.Visible == false)

{

tbCardTansact.Text += "9";

}

else if (tbCardTansact.Visible == false && mtbMobile.Visible == false)

{

if (access == true && pin.Length < 4) pin += "9";

DisplayPIN(pin);

}

}

private void bt8_Click(object sender, EventArgs e)

{

if (tbCardTansact.Visible == true && mtbMobile.Visible == false)

{

tbCardTansact.Text += "8";

}

else if (tbCardTansact.Visible == false && mtbMobile.Visible == false)

{

if (access == true && pin.Length < 4) pin += "8";

DisplayPIN(pin);

}

}

private void bt7_Click(object sender, EventArgs e)

{

if (tbCardTansact.Visible == true && mtbMobile.Visible == false)

{

tbCardTansact.Text += "7";

}

else if (tbCardTansact.Visible == false && mtbMobile.Visible == false)

{

if (access == true && pin.Length < 4) pin += "7";

DisplayPIN(pin);

}

}

private void bt6_Click(object sender, EventArgs e)

{

if (tbCardTansact.Visible == true && mtbMobile.Visible == false)

{

tbCardTansact.Text += "6";

}

else if (tbCardTansact.Visible == false && mtbMobile.Visible == false)

{

if (access == true && pin.Length < 4) pin += "6";

DisplayPIN(pin);

}

}

private void bt5_Click(object sender, EventArgs e)

{

if (tbCardTansact.Visible == true && mtbMobile.Visible == false)


{

tbCardTansact.Text += "5";

}

else if (tbCardTansact.Visible == false && mtbMobile.Visible == false)

{

if (access == true && pin.Length < 4) pin += "5";

DisplayPIN(pin);

}

}

private void bt4_Click(object sender, EventArgs e)

{

if (tbCardTansact.Visible == true && mtbMobile.Visible == false)

{

tbCardTansact.Text += "4";

}

else if (tbCardTansact.Visible == false && mtbMobile.Visible == false)

{

if (access == true && pin.Length < 4) pin += "4";

DisplayPIN(pin);

}

}

private void bt3_Click(object sender, EventArgs e)

{

if (tbCardTansact.Visible == true && mtbMobile.Visible == false)

{

tbCardTansact.Text += "3";

}

else if (tbCardTansact.Visible == false && mtbMobile.Visible == false)

{

if (access == true && pin.Length < 4) pin += "3";

DisplayPIN(pin);

}

}

private void bt2_Click(object sender, EventArgs e)

{

if (tbCardTansact.Visible == true && mtbMobile.Visible == false)

{

tbCardTansact.Text += "2";

}

else if (tbCardTansact.Visible == false && mtbMobile.Visible == false)

{

if (access == true && pin.Length < 4) pin += "2";

DisplayPIN(pin);

}

}

//проверка баланса карты

private void btBalance_Click(object sender, EventArgs e)

{

lAction.Text = "";

lPin.Visible = true;

lPin.Text = "Остаток по счету: \n"+ server.GetBalance(numAccount).ToString()+" рублей"; //связь с сервером: проверка баланса

btYes.Visible = false;

btNo.Visible = false;

gbSum.Visible = false;

pTransact.Visible = false;

pWireTransfer.Visible = false;

}

private void btGetCash_Click(object sender, EventArgs e) //получить наличные

{

lPin.Visible = false; //отобразить на форме элементы

lAction.Text = "Выберите сумму"; //выбора суммы для получения

gbSum.Visible = true;

pTransact.Visible = false;

pWireTransfer.Visible = false;

}

DateTime dateTransact;

double givenSum = 0; //выданная сумма

void GetCash(int sum) //выдача наличных

{

access = false;

givenSum = 0;

dateTransact = DateTime.Now;

lAction.Text = "Получить "+sum.ToString()+" рублей";

if (sum <= server.GetBalance(numAccount)) access = true; //связь с сервером: проверка наличия требуемой суммы на счете

if (access == true) //если такая сумма имеется

{

lPin.Visible = true; //отображение на форме

lPin.Text = "Распечатать квитанцию?"; //предложения распечать чек

btYes.Visible = true;

btNo.Visible = true;

string given = "Выдано: ";

int count5tr = sum / 5000; //количесто выдаваемых купюр по 5000

int count = GetCountBanknotes("5000");

if (count >= count5tr)

{

givenSum += count5tr * 5000;

sum -= count5tr * 5000; //вычислить остаток, который выдавать другими купюрами

given += ("5000 - " + count5tr.ToString() + ", ");

}

else if (count < count5tr)

{

givenSum += count * 5000;

sum -= count * 5000; //вычислить остаток, который выдавать другими купюрами

given += ("5000 - " + count.ToString() + ", ");

count5tr = count;

}

int count1tr = sum / 1000;

count = GetCountBanknotes("1000");

if (count >= count1tr)

{

givenSum += count1tr * 1000;

sum -= count1tr * 1000; //вычислить остаток, который выдавать другими купюрами

given += ("1000 - " + count1tr.ToString() + ", ");

}

else if (count < count1tr)

{

givenSum += count * 1000;

sum -= count * 1000; //вычислить остаток, который выдавать другими купюрами