From 86754a763250ce4d3077c7ea575ac21a2fdcbdaa Mon Sep 17 00:00:00 2001 From: Rinats Andrejevs Date: Mon, 29 Apr 2024 20:16:11 +0000 Subject: [PATCH] Upload files to "/" --- FileName.cpp | 316 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 316 insertions(+) create mode 100644 FileName.cpp diff --git a/FileName.cpp b/FileName.cpp new file mode 100644 index 0000000..4e19f7a --- /dev/null +++ b/FileName.cpp @@ -0,0 +1,316 @@ +#include +#include +#include +#include +#include +#include +using namespace std; + +class User { +public: + string name, password; +}; + +class FinancialRecord { +public: + string id, date, description; + double profit, loss; + + // Constructor + FinancialRecord(string id, string date, string description, double profit, double loss) : id(id), date(date), description(description), profit(profit), loss(loss) {} +}; + + +vector split(string str, char delimiter) { + vector result; + stringstream ss(str); + string item; + while (getline(ss, item, delimiter)) { + result.push_back(item); + } + return result; +} + +void register_user(vector& users) { + cout << "\nRegistering a new user\n"; + string name, password; + cout << "Enter new user name: "; + cin >> name; + cout << "Enter new user password: "; + cin >> password; + User user; + user.name = name; + user.password = password; + users.push_back(user); + cout << "\nNew user has been registered successfully."; +} + +bool login_user(const vector& users, string& username, string& password) { + cout << "\nLogging in...\n"; + cout << "Enter username: "; + cin >> username; + cout << "Enter password: "; + cin >> password; + for (const auto& user : users) { + if (user.name == username && user.password == password) { + cout << "\nLogin successful!"; + return true; + } + } + cout << "\nInvalid username or password."; + return false; +} + +void display_additional_menu() { + cout << "\nAdditional Menu:\n"; + cout << "1. Add Record\n"; + cout << "2. Edit User\n"; + cout << "3. Delete User\n"; + cout << "4. Edit Record\n"; + cout << "5. Delete Record\n"; + cout << "6. Output Analytics\n"; + cout << "7. Save Records to File\n"; + cout << "8. User Enter Check\n"; + cout << "9. Draw Graph\n"; + cout << "10. Output Profit\n"; + cout << "11. Output Loss\n"; + cout << "12. Total Value\n"; + cout << "0. Exit\n"; +} + +void add_record(vector& records) { + cout << "\nAdding a new financial record...\n"; + string id, date, description; + double profit, loss; + cout << "Enter ID: "; + cin >> id; + cout << "Enter date (YYYY-MM-DD): "; + cin >> date; + cout << "Enter description: "; + cin.ignore(); // Clear input buffer + getline(cin, description); + cout << "Enter amount: "; + cin >> profit; + cout << "Enter loss amount: "; + cin >> loss; + int next_id = records.empty() ? 1 : stoi(records.back().id) + 1; + records.push_back(FinancialRecord(to_string(next_id), date, description, profit, loss)); +} + +void edit_user(vector& users) { + cout << "\nEditing user details...\n"; + string username, new_name, new_password; + cout << "Enter username to edit: "; + cin >> username; + for (User& user : users) { + if (user.name == username) { + cout << "Enter new name: "; + cin >> new_name; + cout << "Enter new password: "; + cin >> new_password; + user.name = new_name; + user.password = new_password; + cout << "User details updated successfully.\n"; + return; + } + } + cout << "User not found.\n"; +} + +void delete_user(vector& users) { + cout << "\nDeleting a user...\n"; + string username; + cout << "Enter username to delete: "; + cin >> username; + for (auto it = users.begin(); it != users.end(); ++it) { + if (it->name == username) { + users.erase(it); + cout << "User deleted successfully.\n"; + return; + } + } + cout << "User not found.\n"; +} + +void edit_record(vector& records) { + cout << "\nEditing a financial record...\n"; + string record_id; + cout << "Enter the ID of the record you want to edit: "; + cin >> record_id; + + for (FinancialRecord& record : records) { + if (record.id == record_id) { + cout << "Enter new date (YYYY-MM-DD): "; + cin >> record.date; + cout << "Enter new description: "; + cin.ignore(); // Clear input buffer + getline(cin, record.description); + cout << "Enter new profit amount: "; + cin >> record.profit; + cout << "Enter new loss amount: "; + cin >> record.loss; + cout << "Record updated successfully.\n"; + return; + } + } + cout << "Record not found.\n"; +} + +void delete_record(vector& records) { + cout << "\nDeleting a financial record...\n"; + string record_id; + cout << "Enter the ID of the record you want to delete: "; + cin >> record_id; + + for (auto it = records.begin(); it != records.end(); ++it) { + if (it->id == record_id) { + records.erase(it); + cout << "Record deleted successfully.\n"; + return; + } + } + cout << "Record not found.\n"; +} + +void output_analytics(const vector& records) { + cout << "\nGenerating analytics data...\n"; + double total_profit = 0, total_loss = 0; + for (const FinancialRecord& record : records) { + total_profit += record.profit; + total_loss += record.loss; + } + cout << "Total Revenue: $" << total_profit << endl; + cout << "Total Loss: $" << total_loss << endl; + cout << "Net Profit: $" << (total_profit - total_loss) << endl; +} + +void save_records_to_file(const vector& records) { + cout << "\nSaving records to a file...\n"; + ofstream outfile("financial_records.txt"); + if (outfile.is_open()) { + for (const FinancialRecord& record : records) { + outfile << record.id << "," << record.date << "," << record.description << "," << record.profit << "," << record.loss << endl; + } + outfile.close(); + cout << "Records saved to financial_records.txt successfully.\n"; + } + else { + cout << "Unable to open file to save records.\n"; + } +} + +void user_enter_check() { + // Functionality to check user authentication + cout << "\nChecking user authentication..."; +} + +void draw_graph() { + // Functionality to draw graphs + cout << "\nDrawing graphs..."; +} + +void total_value(const vector& records) { + cout << "\nCalculating total value...\n"; + double total_profit = 0; + for (const FinancialRecord& record : records) { + total_profit += record.profit; + } + cout << "Total profit: $" << total_profit << endl; +} + +void output_loss(const vector& records) { + cout << "\nCalculating and displaying loss...\n"; + double total_loss = 0; + for (const FinancialRecord& record : records) { + total_loss += record.loss; + } + cout << "Total loss: $" << total_loss << endl; +} + +void output_profit(const vector& records) { + cout << "\nCalculating and displaying profit...\n"; + double total_value = 0; + for (const FinancialRecord& record : records) { + total_value += record.profit - record.loss; + } + cout << "Total value: $" << total_value << endl; +} + +int main() { + + vector records; + + vector users; + int choice; + string username, password; + do { + cout << "\nMain Menu:\n1. Register New User\n2. Login\n3. Exit\nEnter your choice: "; + cin >> choice; + switch (choice) { + case 1: + register_user(users); + break; + case 2: + if (login_user(users, username, password)) { + int additional_choice; + do { + display_additional_menu(); + cout << "\nEnter your choice: "; + cin >> additional_choice; + switch (additional_choice) { + case 1: + add_record(records); + break; + case 2: + edit_user(users); + break; + case 3: + delete_user(users); + break; + case 4: + edit_record(records); + break; + case 5: + delete_record(records); + break; + case 6: + output_analytics(records); + break; + case 7: + save_records_to_file(records); + break; + case 8: + user_enter_check(); + break; + case 9: + draw_graph(); + break; + case 10: + output_profit(records); + break; + case 11: + output_loss(records); + break; + case 12: + total_value(records); + break; + case 0: + cout << "\nLogging out...\n"; + break; + default: + cout << "\nInvalid choice. Please try again.\n"; + } + } while (additional_choice != 0); + } + break; + case 3: + cout << "\nExiting program...\n"; + break; + default: + cout << "\nInvalid choice. Please try again.\n"; + } + } while (choice != 3); + + + return 0; +}