Update main.cpp

main
Rinats Andrejevs 2024-04-29 20:59:36 +00:00
parent 46205a2cc5
commit 256ca87ec8
1 changed files with 316 additions and 316 deletions

View File

@ -1,316 +1,316 @@
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
#include <sstream>
#include <windows.h>
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<string> split(string str, char delimiter) {
vector<string> result;
stringstream ss(str);
string item;
while (getline(ss, item, delimiter)) {
result.push_back(item);
}
return result;
}
void register_user(vector<User>& 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<User>& 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<FinancialRecord>& 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<User>& 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<User>& 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<FinancialRecord>& 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<FinancialRecord>& 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<FinancialRecord>& 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<FinancialRecord>& 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<FinancialRecord>& 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<FinancialRecord>& 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<FinancialRecord>& 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<FinancialRecord> records;
vector<User> 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;
}
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
#include <sstream>
#include <windows.h>
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<string> split(string str, char delimiter) {
vector<string> result;
stringstream ss(str);
string item;
while (getline(ss, item, delimiter)) {
result.push_back(item);
}
return result;
}
void register_user(vector<User>& 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<User>& 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<FinancialRecord>& 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<User>& 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<User>& 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<FinancialRecord>& 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<FinancialRecord>& 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<FinancialRecord>& 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<FinancialRecord>& 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<FinancialRecord>& 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<FinancialRecord>& 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<FinancialRecord>& 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<FinancialRecord> records;
vector<User> 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;
}