Update main.cpp
parent
46205a2cc5
commit
256ca87ec8
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue