Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <fstream>
- #include <string>
- using namespace std;
- bool success = false;
- class Account
- {
- public:
- string id;
- long double balance;
- double percent;
- long overdraft;
- Account(string sid)
- {
- id = sid;
- ifstream fin("id" + sid + ".txt");
- if (fin.fail())
- {
- system("color 0C");
- cout << "E: Файл " << "id" + sid + ".txt" << " не существует.\n";
- system("pause");
- exit(0);
- }
- else if (fin.eof())
- {
- system("color 0C");
- cout << "E: Файл " << "id" + sid + ".txt" << " повреждён.\n";
- system("pause");
- exit(0);
- }
- fin >> balance;
- if (fin.eof())
- {
- system("color 0C");
- cout << "E: Файл " << "id" + sid + ".txt" << " повреждён.\n";
- system("pause");
- exit(0);
- }
- fin >> overdraft;
- if (fin.eof())
- {
- system("color 0C");
- cout << "E: Файл " << "id" + sid + ".txt" << " повреждён.\n";
- system("pause");
- exit(0);
- }
- fin >> percent;
- fin.close();
- system("color 0A");
- success = true;
- cout << "I: Считывание из файла " << "id" + sid + ".txt" << " выполнено.\n";
- system("pause");
- system("cls");
- }
- ~Account()
- {
- if (success)
- {
- ofstream fout("id" + id + ".txt");
- fout << balance << " " << overdraft << " " << percent;
- system("color 0A");
- cout << "I: Запись в файл " << "id" + id + ".txt" << " выполнена.\n";
- system("pause");
- system("cls");
- }
- }
- bool change(double amount)
- {
- if (amount == 0)
- {
- cout << "E: Не указано сколько вводить/выводить.\n";
- system("color 0C");
- return false;
- }
- else if (balance + overdraft <= -amount)
- {
- cout << "E: Недостаточно средств.\n";
- system("color 0C");
- return false;
- }
- else
- {
- balance += amount;
- cout << "I: Операция выполнена.\n";
- system("color 0A");
- return true;
- }
- }
- bool adv_change()
- {
- char confirm = 'n';
- system("color 0D");
- system("cls");
- cout << "W: Изменение переменных напрямую является небезопасным, при вводе неправильного значения вы можете сломать программу и повредить файл клиента.\nПродолжить? (y/n)\n>> ";
- cin >> confirm;
- if (confirm == 'n' || confirm == 'N') return true;
- system("cls");
- system("color 0C");
- cout << "CHNG [НЕБЕЗОПАСНО]:\nВведите новое значение ID (старое - " << id << ")\n>> ";
- cin >> id;
- cout << "Введите новое значение баланса (старое - " << balance << ")\n>> ";
- cin >> balance;
- cout << "Введите новое значение овердрафта (старое - " << overdraft << ")\n>> ";
- cin >> overdraft;
- cout << "Введите новое значение процентной ставки (старое - " << percent << ")\n>> ";
- cin >> percent;
- cout << "I: Операция выполнена.\n";
- return true;
- }
- };
- int main()
- {
- setlocale(0, "");
- system("color 0E");
- system("title Bank Simulator (old)");
- string chosen_id;
- /*Account account;
- account.id = 1024;
- account.balance = 767.3;
- account.percent = 0.06;
- account.overdraft = 1000;*/
- cout << "Введите ID клиента: ";
- getline(cin, chosen_id);
- Account account(chosen_id);
- while (true)
- {
- system("color 0E");
- double amount;
- long action;
- cout << "Какую операцию вы желаете выполнить?\n 1 -- APND - положить деньги на счет\n 2 -- TAKE - снять деньги со счета\n 3 -- INFO - информация о клиенте\n 4 -- CHNG - вручную изменить информацию о клиенте [НЕБЕЗОПАСНО]\n 0 -- QUIT - сохранить и выйти\n>> ";
- cin >> action;
- if (action < 0) // При введении буквы буфер переходит в состояние ошибки и замусоривается. Необходимо переинициализировать и очистить его.
- {
- system("color 0C");
- cout << "E: Команда не распознана.\n";
- cin.clear();
- cin.sync();
- system("pause");
- system("cls");
- continue;
- }
- system("cls");
- switch (action)
- {
- case 1: cout << "Введите кол-во: "; cin >> amount; account.change(amount); break;
- case 2: cout << "Введите кол-во: "; cin >> amount; account.change(-amount); break;
- case 3: cout << "INFO:\n ID: " << account.id << "\n Баланс: " << account.balance << "\n Овердрафт: " << account.overdraft << "\n % ставка: " << account.percent << endl; break;
- case 4: account.adv_change(); break;
- case 0: return 0;
- default: system("color 0C"); cout << "E: Команда не распознана.\n"; break;
- }
- system("pause");
- system("cls");
- cin.clear(); // При введении букву значение в буфере не всегда минусовое: переинициализация при каждой итерации цикла.
- cin.sync();
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment