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

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

Відповідь:
Створення повноцінної системи управління персональними фінансами вимагає великого обсягу роботи та кодування. Проте я можу надати вам загальний опис програми на мові 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++, яка може виконувати більшість функцій, які ви описали. Додайте більше деталей і вдосконаліть код, щоб відповідати вашим конкретним потребам. Важливо також реалізувати збереження даних у файл та завантаження з файлу для збереження фінансової інформації між сеансами роботи з програмою.



Створення повноцінної системи управління персональними фінансами на мові 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;
}
Зверніть увагу, що це лише заготовка, і вам потрібно буде додати реалізацію функцій для генерації звітів та рейтингів, а також для завантаження даних із файлу. Реалізація цих функцій може бути досить обсяжною і вимагати докладного планування.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili