Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
 Аватар для BaLahmuT
88 / 32 / 16
Регистрация: 01.06.2019
Сообщений: 672

Класс имитирующий Банкомат

15.12.2019, 21:40. Показов 2432. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать систему имитирующую класс Банкомат.
При снятии наличных со счета банкомат предлагает указать сумму (100, 200, 500, 1000 гривен – доступная валюта). После выбора клиентом суммы банкомат запрашивает, нужно ли печатать справку по операции. Затем банкомат проверяет, имеется ли требуемая сумма в его хранилище денег, и может ли он выдать запрошенную сумму банкнотами, имеющимися в наличии (например, если в банкомате нет банкнот достоинством менее 500 гривен, он не может выдать никакую сумму не кратную 500). Если банкомат может выдать деньги, то на дисплей выводится сообщение "Выньте карту".
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.12.2019, 21:40
Ответы с готовыми решениями:

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

Класс Int имитирующий встроенный тип int
Создать класс Int (с заглавной буквы) имитирующий встроенный тип int и позволяющий следующие конструкции: Int i = 0; i = i+1; i++; ...

Создать класс "Банкомат" с реализацией функций банкомата.
Всем привет. Есть задание: создать класс "банкомат" с реализацией функций банкомата. То есть это определение клиента (можно по номеру карты...

1
 Аватар для BaLahmuT
88 / 32 / 16
Регистрация: 01.06.2019
Сообщений: 672
17.12.2019, 23:04  [ТС]
Я тут часть написал класса

ATM.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "сurrency.h"
#include<string>
#include<cstdlib>
class ATM
{
    char* bankName;
    long number;
    int amountOfCurrency;
    Currency* arrCurrency;
public:
    ATM(const char* bankName);
    ATM(const ATM& obj);
    ~ATM();
 
    ATM& operator=(const ATM& obj);
 
    void setBankName(const char* bankName);
    const char* getbankName();
    long getNumber();
    int getAmountOfCurrency();
 
    void showInfo();
 
    bool availableCurrency(const char* code);
    bool availableCurrency(const char* code, int banknote);
    bool addCurrency(Currency obj);
    bool withdrawMony(const char* code, int nmoney);
};
ATM.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include "ATM.h"
#include<iostream>
using namespace std;
ATM::ATM(const char* bankName)
{
    this->bankName = new char[strlen(bankName) + 1];
    strcpy_s(this->bankName, strlen(bankName) + 1, bankName);
    number = rand() % 900000 + 100000;
    amountOfCurrency = 0;
    arrCurrency = nullptr;
}
 
ATM::ATM(const ATM& obj)
{
    this->bankName = new char[strlen(obj.bankName) + 1];
    strcpy_s(this->bankName, strlen(obj.bankName) + 1, bankName);
    this->number = rand() % 900000 + 100000;
    this->amountOfCurrency = obj.amountOfCurrency;
    this->arrCurrency = new Currency[this->amountOfCurrency];
    for (int i = 0; i < this->amountOfCurrency; i++)
    {
        this->arrCurrency[i] = obj.arrCurrency[i];
    }
}
 
ATM::~ATM()
{
    delete[] bankName;
    if (arrCurrency != nullptr)
        delete[]arrCurrency;
}
 
ATM& ATM::operator=(const ATM& obj)
{
    // TODO: вставьте здесь оператор return
    this->bankName = new char[strlen(obj.bankName) + 1];
    strcpy_s(this->bankName, strlen(obj.bankName) + 1, bankName);
    this->number = rand() % 900000 + 100000;
    this->amountOfCurrency = obj.amountOfCurrency;
    this->arrCurrency = new Currency[this->amountOfCurrency];
    for (int i = 0; i < this->amountOfCurrency; i++)
    {
        this->arrCurrency[i] = obj.arrCurrency[i];
    }
    return *this;
}
 
void ATM::setBankName(const char* bankName)
{
    delete[] this->bankName;
    this->bankName = new char[strlen(bankName) + 1];
    strcpy_s(this->bankName, strlen(bankName) + 1, bankName);
}
 
const char* ATM::getbankName()
{
    return bankName;
}
 
long ATM::getNumber()
{
    return number;
}
 
int ATM::getAmountOfCurrency()
{
    return amountOfCurrency;
}
 
void ATM::showInfo()
{
    cout << "Bank:" << bankName << endl;
    cout << " Number: " << number << endl;
    if (amountOfCurrency == 0)
        cout << "not found currency\n";
    else
    {
        cout << "Available currency:\n";
        for (int i = 0; i < amountOfCurrency; i++)
        {
            arrCurrency[i].showInfo();
        }
    }
 
}
 
bool ATM::availableCurrency(const char* code)
{
    for (int i = 0; i < this->amountOfCurrency; i++)
    {
        if (strcmp(code, arrCurrency[i].getCode()) == 0)
        {
            return true;
        }
    }
    return false;
}
 
bool ATM::availableCurrency(const char* code, int banknote)
{
    for (int i = 0; i < this->amountOfCurrency; i++)
    {
        if (strcmp(code, arrCurrency[i].getCode()) == 0
            && banknote == arrCurrency[i].getBaknote())
        {
            return true;
        }
    }
    return false;
}
 
bool ATM::addCurrency(Currency obj)
{
    if (availableCurrency(obj.getCode(), obj.getBaknote()))
    {
        for (int i = 0; i < this->amountOfCurrency; i++)
        {
            if (strcmp(obj.getCode(), arrCurrency[i].getCode()) == 0
                && obj.getBaknote() == arrCurrency[i].getBaknote())
            {
                arrCurrency[i].addAmount(obj.getAmount());
                return true;
            }
        }
    }
    else
    {
        Currency* tmp = new Currency[++this->amountOfCurrency];
        // Копируем старые данные
        for (int i = 0; i < this->amountOfCurrency - 1; i++)
        {
            tmp[i] = arrCurrency[i];
        }
        // чистим память
        if (arrCurrency != NULL) delete[]arrCurrency;
        //Добавляем новый эл-т в последнюю ячейку
        tmp[this->amountOfCurrency - 1] = obj;
        arrCurrency = tmp;
 
        return true;
    }
    return false;
}
currency.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Currency
{
 
    char* code;
    int banknote;
    int amount;
public:
    Currency();
    Currency(int baknote, int amount = 1, const char* code = "UAH");
    Currency(const Currency& obj);
    ~Currency();
 
    void setCode(const char* code);
    const char* getCode();
    void setBanknote(int banknote);
    int getBaknote();
    int getAmount();
 
    bool addAmount(int n);
    bool delAmount(int n);
 
    void showInfo();
 
    Currency& operator=(const Currency& obj);
 
 
};
Currency.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "сurrency.h"
#include <string>
#include <iostream>
using namespace std;
Currency::Currency()
{
 
    code = new char[4];
    strcpy_s(code, 4, "UAN");
    banknote = 100;
    amount = 1;
}
 
Currency::Currency(int banknote, int amount, const char* code)
{
    this->banknote = banknote;
    this->amount = amount;
    this->code = new char[strlen(code) + 1];
    strcpy_s(this->code, strlen(code) + 1, code);
}
 
Currency::Currency(const Currency& obj)
{
    this->code = new char[strlen(obj.code) + 1];
    strcpy_s(this->code, strlen(obj.code) + 1, obj.code);
    this->banknote = obj.banknote;
    this->amount = obj.amount;
}
 
Currency::~Currency()
{
    delete[] code;
}
 
void Currency::setCode(const char* code)
{
    delete[] this->code;
    this->code = new char[strlen(code) + 1];
    strcpy_s(this->code, strlen(code) + 1, code);
}
 
const char* Currency::getCode()
{
    return code;
}
 
void Currency::setBanknote(int banknote)
{
    this->banknote = banknote;
}
 
int Currency::getBaknote()
{
    return banknote;
}
 
int Currency::getAmount()
{
    return amount;
}
 
bool Currency::addAmount(int n)
{
    if (n > 0) {
        amount += n;
        return true;
    }
}
 
bool Currency::delAmount(int n)
{
    if (n > 0 && n <= amount) {
        amount -= n;
        return true;
    }
    return false;
}
 
void Currency::showInfo()
{
    cout << banknote << " " << code << " = " << amount << endl;
}
 
Currency& Currency::operator=(const Currency& obj)
{
    // TODO: вставьте здесь оператор return
    this->code = new char[strlen(obj.code) + 1];
    strcpy_s(this->code, strlen(obj.code) + 1, obj.code);
    this->banknote = obj.banknote;
    this->amount = obj.amount;
    return *this;
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "сurrency.h"
#include "ATM.h"
int main() {
    //Currency bnote1(200);
    //bnote1.showInfo();
 
    //Currency bnote2 = bnote1;
    //bnote2.showInfo();
    //bnote2.setCode("USD");
 
    //bnote1.showInfo();
    //bnote2.showInfo();
 
    ATM atm("Privat");
    //Добавления аннонимного объекта
    atm.addCurrency(Currency(200, 20));
    //Добавления явного объекта
    Currency bnote1(500, 10);
    atm.addCurrency(bnote1);
 
    atm.addCurrency(Currency(200, 5));
    atm.showInfo();
    system("pause");
 
    return 0;
}
Добавлено через 1 минуту
Поможете подогнать под задачу?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.12.2019, 23:04
Помогаю со студенческими работами здесь

Реализовать класс "Банкомат"
есть две задачи, хочу их реализовать в С++, используя классы..., я новичок в программировании... Создать класс «банкомат» для работы с...

Класс "Банкомат"
Класс «Банкомат». В классе должны содержаться поля для хранения идентификационного номера банкомата, информация о текущей сумме денег,...

Создать класс имитирующий класс стек
Господа Программисты! Помогите с программой, а то я зашёл в тупик... using System; using System.Linq; class GStack&lt;T&gt; {...

Класс имитирующий стек
Доброго времени суток! Помогите пожалуйста с таким вопросом. Как можно реализовать собственный класс, имитирующий работу стека?

Написать класс, описывающий банкомат
Создать класс, описывающий банкомат. Набор купюр, находящихся в банкомате должен задаваться тремя свойствами: количеством купюр...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru