Вопрос задан 26.10.2023 в 03:59. Предмет Информатика. Спрашивает Кузнецов Никита.

Створіть систему управління персональними фінансами на мові С++. Система мусить мати такі

можливості: - наявність різних гаманців і карт(дебетових/кредитних), - поповнення гаманців і карт, - внесення витрат. Кожна витрата належить певній категорії. Формування звітів за витратами та категоріями: - день, - тиждень, - місяць. Формування рейтингів за максимальними сумами: топ-3 витрат: - тиждень, - місяць. топ-3 категорій: - тиждень, - місяць. Збереження звітів і рейтингів у файл
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Марабаев Гераклид.

Відповідь:

Створення повноцінної системи управління персональними фінансами вимагає великого обсягу роботи та кодування. Проте я можу надати вам загальний опис програми на мові C++, яка міститиме функціонал, який ви описали. Вам, можливо, потрібно буде додати додаткові деталі та вдосконалити код відповідно до ваших потреб.

#include <iostream>

#include <fstream>

#include <vector>

#include <string>

#include <map>

#include <ctime>

using namespace std;

struct Transaction {

   string category;

   double amount;

   time_t date;

};

class Wallet {

private:

   double balance;

   map<string, double> categories;

   vector<Transaction> transactions;

public:

   Wallet(double initialBalance) : balance(initialBalance) {}

   void deposit(double amount) {

       balance += amount;

   }

   bool spend(double amount, const string& category) {

       if (balance >= amount) {

           balance -= amount;

           categories[category] += amount;

           Transaction transaction = {category, amount, time(nullptr)};

           transactions.push_back(transaction);

           return true;

       }

       return false;

   }

   void generateReports(const string& reportType) {

       if (reportType == "day") {

           // Generate daily report

       } else if (reportType == "week") {

           // Generate weekly report

       } else if (reportType == "month") {

           // Generate monthly report

       }

   }

   void generateTopExpenses(const string& reportType) {

       if (reportType == "week") {

           // Generate top 3 weekly expenses

       } else if (reportType == "month") {

           // Generate top 3 monthly expenses

       }

   }

   void saveToFile(const string& filename) {

       ofstream file(filename);

       if (file.is_open()) {

           // Save wallet data to the file

           file.close();

       } else {

           cout << "Unable to open the file for saving." << endl;

       }

   }

};

int main() {

   double initialBalance;

   cout << "Enter your initial balance: ";

   cin >> initialBalance;

   Wallet wallet(initialBalance);

   while (true) {

       cout << "1. Deposit\n2. Spend\n3. Generate Reports\n4. Generate Top Expenses\n5. Save to File\n6. Exit" << endl;

       int choice;

       cin >> choice;

       switch (choice) {

           case 1:

               double depositAmount;

               cout << "Enter the deposit amount: ";

               cin >> depositAmount;

               wallet.deposit(depositAmount);

               break;

           case 2:

               double spendAmount;

               string category;

               cout << "Enter the spend amount: ";

               cin >> spendAmount;

               cout << "Enter the category: ";

               cin >> category;

               if (wallet.spend(spendAmount, category)) {

                   cout << "Transaction successful." << endl;

               } else {

                   cout << "Insufficient balance." << endl;

               }

               break;

           case 3:

               string reportType;

               cout << "Enter report type (day/week/month): ";

               cin >> reportType;

               wallet.generateReports(reportType);

               break;

           case 4:

               string topExpensesType;

               cout << "Enter report type for top expenses (week/month): ";

               cin >> topExpensesType;

               wallet.generateTopExpenses(topExpensesType);

               break;

           case 5:

               string filename;

               cout << "Enter the filename to save: ";

               cin >> filename;

               wallet.saveToFile(filename);

               break;

           case 6:

               return 0;

           default:

               cout << "Invalid choice. Please try again." << endl;

               break;

       }

   }

   return 0;

}

Цей код представляє загальну структуру програми на C++, яка може виконувати більшість функцій, які ви описали. Додайте більше деталей і вдосконаліть код, щоб відповідати вашим конкретним потребам. Важливо також реалізувати збереження даних у файл та завантаження з файлу для збереження фінансової інформації між сеансами роботи з програмою.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Створення повноцінної системи управління персональними фінансами на мові C++ з вказаними можливостями — це складне завдання, яке вимагає детального проектування і багатьох рядів коду. Однак я можу надати вам загальну структуру програми і пояснити, як ви можете реалізувати окремі її частини.

cpp
#include <iostream> #include <fstream> #include <vector> #include <map> // Клас для представлення транзакцій class Transaction { public: std::string category; double amount; std::string date; Transaction(std::string cat, double amt, std::string dt) : category(cat), amount(amt), date(dt) {} }; // Клас для представлення гаманця або картки class Wallet { public: std::string name; double balance; std::vector<Transaction> transactions; Wallet(std::string n) : name(n), balance(0.0) {} void deposit(double amount) { balance += amount; } void spend(double amount, std::string category, std::string date) { if (amount <= balance) { balance -= amount; transactions.push_back(Transaction(category, amount, date)); } else { std::cout << "Недостатньо коштів на рахунку." << std::endl; } } }; // Головний клас програми class FinanceManager { public: std::map<std::string, Wallet> wallets; void addWallet(std::string name) { wallets[name] = Wallet(name); } void depositToWallet(std::string walletName, double amount) { if (wallets.find(walletName) != wallets.end()) { wallets[walletName].deposit(amount); } else { std::cout << "Гаманець не знайдено." << std::endl; } } void spendFromWallet(std::string walletName, double amount, std::string category, std::string date) { if (wallets.find(walletName) != wallets.end()) { wallets[walletName].spend(amount, category, date); } else { std::cout << "Гаманець не знайдено." << std::endl; } } void generateReports() { // Реалізуйте функції для генерації звітів та рейтингів тут } void saveDataToFile(std::string filename) { std::ofstream file(filename); if (file.is_open()) { for (const auto& pair : wallets) { file << "Гаманець: " << pair.first << " Баланс: " << pair.second.balance << "\n"; for (const Transaction& transaction : pair.second.transactions) { file << " Категорія: " << transaction.category << " Сума: " << transaction.amount << " Дата: " << transaction.date << "\n"; } } file.close(); } else { std::cout << "Помилка відкриття файлу для збереження даних." << std::endl; } } }; int main() { FinanceManager manager; manager.addWallet("Гаманець 1"); manager.addWallet("Гаманець 2"); manager.depositToWallet("Гаманець 1", 1000); manager.depositToWallet("Гаманець 2", 1500); manager.spendFromWallet("Гаманець 1", 500, "Їжа", "2023-10-26"); manager.spendFromWallet("Гаманець 2", 300, "Транспорт", "2023-10-26"); manager.generateReports(); // Реалізуйте функцію генерації звітів manager.saveDataToFile("фінанси.txt"); return 0; }

Зверніть увагу, що це лише заготовка, і вам потрібно буде додати реалізацію функцій для генерації звітів та рейтингів, а також для завантаження даних із файлу. Реалізація цих функцій може бути досить обсяжною і вимагати докладного планування.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос