From 93611c81c1fead61be1bba8e5e7b5c23a5511980 Mon Sep 17 00:00:00 2001 From: Rinats Andrejevs Date: Fri, 26 Apr 2024 11:02:53 +0000 Subject: [PATCH] Upload files to "/" --- FileName.cpp | 299 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 299 insertions(+) create mode 100644 FileName.cpp diff --git a/FileName.cpp b/FileName.cpp new file mode 100644 index 0000000..3c81279 --- /dev/null +++ b/FileName.cpp @@ -0,0 +1,299 @@ +#include +#include +#include +#include +#include +#include +#include +using namespace std; + + +class User { // Product class declaration with public variables +public: //Product order number in the menu + string name, password, date; + double number{};//Product name and manufacturing date //Product price +}; + +vector split(string str, char delimeter) { //Function to split rows in txt file + vector result; + stringstream ss(str); + string item; + while (getline(ss, item, delimeter)) + { + result.push_back(item); + } + return result; +} + + +void show_menu(vector& menu) { //Function to write out menu file content in console + cout << "\nVending machine menu: "; + for (User i : menu) + { + cout << "\n\nUser number: " << i.number + << "\nUser name: " << i.name; + } +} +/* +void fill_menu(vector& menu) { //Function to fill menu vector with products objects + ifstream myfile; + myfile.open("menu.txt"); + string data; + vector row; + if (myfile.is_open()) + { + while (myfile) + { + getline(myfile, data); + row = split(data, ','); //Splitting text in menu.txt file + if (row.size() > 1) + { + Product product; + product.number = stoi(row[0]); + product.name = row[1]; + product.date = row[2]; + product.price = stod(row[3]); + menu.push_back(product); + } + } + } + else + { + cout << "Error: couldnt open menu file\n"; + } + myfile.close(); +} +*/ +void add_user(vector& menu) { //Function to add user + cout << "Adding new User\n"; + string name, password; + int last_product_number{}; + + cout << "\nEnter new user name: "; + cin >> name; + cout << "\nEnter new user password: "; + cin >> password; + + User user; //Declaring an object + + last_product_number = menu[menu.size() - 1].number; //Getting last user number by its size + + user.number = last_product_number + 1; + user.name = name; + user.password = password; + menu.push_back(user); + + cout << "\nNew User have been succesfully added to the list"; +} + +void edit_user(vector& menu) { //Function to edit user details + + show_menu(menu); + cout << "Editing user\n"; + cout << "\nEnter number of user you want to edit: "; + int number; + cin >> number; + + for (int i = 0; i < menu.size(); i++) + { + if (menu[i].number == number) + { + cout << "\n\nUser number: " << number //Program write current details about the user he want to edit to console + << "\nCurrent user name: " << menu[i].name + << "\nCurrent product password: " << menu[i].password; + + cout << "\n\nEnter new name for user: "; + cin >> menu[i].name; //entering new user details + cout << "\nEnter new password for user: "; + cin >> menu[i].password; + } + else if (number > menu.size() || number < 0) + { + cout << "\n\nInvalid user number!\n"; + break; + } + } + +} + +void remove_user(vector& menu) { //Function to remove User from the menu + int choice = MessageBox(0, (LPCWSTR)L"Are you sure that you want to remove a User from the menu?", (LPCWSTR)L"Confirmation", MB_YESNO | MB_ICONQUESTION); + if (choice == IDYES) + { + show_menu(menu); + cout << "Enter number of User to remove: "; + int number; + cin >> number; + for (int i = 0; i < menu.size(); i++) + { + if (menu[i].number == number) + { + menu.erase(menu.begin() + i); //Delete the row with the User from the menu + cout << "\nUser is deleted from the menu!\n"; + } + else if (number > menu.size() || number < 0) + { + cout << "\n\nInvalid User number!\n"; + break; + } + } + } + else { + return; + } +} + +void addRecord(vector& menu) { //Function to add financial record + int counter = 0, answer = 1; + double revenue = 0, loss = 0; + vector records_name; + vector records_price; + fstream myfile("records.txt", ios::app); + + + /* + cout << "Enter date (YYYY-MM-DD): "; + cin >> menu.date; + cout << "Enter revenue: "; + cin >> record.revenue; + cout << "Enter profit: "; + cin >> record.profit; + */ + myfile.close(); +} + +void records_report() { //Writing records info from the records.txt file + string line; + ifstream myfile("records.txt"); //Reading from the file + while (getline(myfile, line)) { + cout << "\n" << line; + } + myfile.close(); +} + +void add_edit_remove_menu(vector& menu) { //Function to display add/menu/remove menu from workers menu + int answer; + cout << "\n\nInventory configuration menu\n\n1. Add User\n2. Edit User\n3. Remove User\n4. Return to worker menu\n\nEnter your option and press return: "; + cin >> answer; + switch (answer) + { + case 1: + add_user(menu); + break; + case 2: + edit_user(menu); + break; + case 3: + remove_user(menu); + break; + case 4: + return; + default: //Handling not valid and non numeric input + cin.clear(); + cin.ignore(9999, '\n'); + cout << "\nPlease enter valid option!\n"; + break; + } +} + +void client_menu(vector& menu) { //Function to display users menu + int answer; + cout << "\nClient menu\n\n1. Add Record\n2. Back to main menu\n\nEnter your option and press return: "; + cin >> answer; + switch (answer) { + case 1: + addRecord(menu); + break; + case 2: + return; + default: //Handling not valid and non numeric input + cin.clear(); + cin.ignore(9999, '\n'); + cout << "\nPlease enter valid option!\n"; + break; + } +} + +void user_menu(vector& menu) { //Function to display workers menu + while (true) { + int answer; + cout << "\nWorker menu\n\n1. Check records history\n2. Add/Edit/Remove record\n3. Show menu\n4. Back to main menu\nEnter your option and press return: "; + cin >> answer; + + switch (answer) + { + case 1: + records_report(); + break; + case 2: + add_edit_remove_menu(menu); + break; + case 3: + show_menu(menu); + break; + case 4: + return; + default: //Handling not valid and non numeric input + cin.clear(); + cin.ignore(9999, '\n'); + cout << "\nPlease enter valid option!\n"; + break; + } + } +} + +void worker_menu_access(vector& menu) { //Function asks password (1234) from an user to access the worker menu or 0 to return back + int access_code = 0; + do { + cout << "\n\nEnter code to gain access to the worker menu or 0 to return back (format: 0000): "; + cin >> access_code; + if (access_code == 1234 && to_string(access_code).length() == 4) { + user_menu(menu); + break; + } + else if (access_code != 1234 && access_code != 0 || to_string(access_code).length() != 4 && access_code != 0) { + cout << "\nIncorrect password or wrong format "; + } + else if (access_code == 0) { + return; + } + else if (cin.eof()) { + cin.clear(); + cin.ignore(9999, '\n'); + cout << "\nPlease enter valid option!\n"; + break; + } + } while (access_code != 1234 || access_code != 0); +} + + +int main() { + vector menu; + int answer = 0; + //fill_menu(menu); + ofstream myfile("records.txt", ios::app); //Creating bills text file + myfile.close(); + do { + cout << "\n\Accounting software\n\n1. Create new user\n2. Log in user\n3. Exit\n\nEnter your option and press return: "; + cin >> answer; + switch (answer) + { + case 1: + client_menu(menu); + break; + case 2: + worker_menu_access(menu); + break; + case 3: + exit(0); + default: //Handling not valid and non numeric input + cin.clear(); + cin.ignore(9999, '\n'); + cout << "\nPlease enter valid option!\n"; + break; + + } + } while (answer != 3); + myfile.close(); + return 0; +} \ No newline at end of file