Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <windows.h>
- #include <fstream>
- #include <sstream>
- #include <vector>
- #include <format>
- using namespace std;
- struct Product {
- string name{};
- double quantity{};
- double price{};
- double total{};
- string code{};
- string location{};
- };
- void updateTotal(Product& p) {
- p.total = p.quantity * p.price;
- }
- void readProducts(vector<Product>& products, const string& filename) {
- ifstream fin(filename);
- if (!fin.is_open()) {
- cout << "Не вдалося відкрити вихідний файл";
- return;
- }
- string line;
- while (getline(fin, line)) {
- stringstream ss(line);
- string field{};
- Product p{};
- getline(ss, p.name, ';');
- getline(ss, field, ';');
- p.quantity = stod(field);
- getline(ss, field, ';');
- p.price = stod(field);
- getline(ss, field, ';');
- p.total = stod(field);
- getline(ss, p.code, ';');
- getline(ss, p.location, ';');
- products.push_back(p);
- }
- fin.close();
- }
- void printProducts(vector<Product>& products) {
- cout << "Залишки на складі:" << endl;
- cout << format("{:^20}{:^20}{:^20}{:^20}{:^20}{:^20}\n", "Найменування", "Кількість (кг)", "Ціна (грн)", "Сума (грн)", "Артикул", "Місце розташування");
- for (int i = 0; i < products.size(); i++) {
- Product p = products[i];
- cout << format("{:^20}{:^20.2f}{:^20.2f}{:^20.2f}{:^20}{:^20}\n", p.name, p.quantity, p.price, p.total, p.code, p.location);
- }
- }
- void addProduct(vector<Product>& products) {
- Product p;
- cout << "Введіть найменування товару: ";
- cin.ignore();
- getline(cin, p.name);
- cout << "Введіть кількість товару (кг): ";
- cin >> p.quantity;
- cout << "Введіть ціну товару (грн): ";
- cin >> p.price;
- cout << "Введіть артикул товару: ";
- cin >> p.code;
- cout << "Введіть місце розташування товару: ";
- cin.ignore();
- getline(cin, p.location);
- updateTotal(p);
- products.push_back(p);
- cout << "Товар додано." << endl;
- }
- void editProduct(vector<Product>& products) {
- string code;
- cout << "Введіть артикул товару для редагування: ";
- cin >> code;
- for (int i = 0; i < products.size(); i++) {
- if (products[i].code == code) {
- cout << "Редагування товару " << products[i].name << ":" << endl;
- cout << "Нове найменування: ";
- cin.ignore();
- getline(cin, products[i].name);
- cout << "Нова кількість (кг): ";
- cin >> products[i].quantity;
- cout << "Нова ціна (грн): ";
- cin >> products[i].price;
- cout << "Нове місце розташування: ";
- cin.ignore();
- getline(cin, products[i].location);
- updateTotal(products[i]);
- cout << "Товар оновлено." << endl;
- return;
- }
- }
- cout << "Товар з таким артикулом не знайдено." << endl;
- }
- void deleteProduct(vector<Product>& products) {
- string code;
- cout << "Введіть артикул товару для видалення: ";
- cin >> code;
- for (int i = 0; i < products.size(); i++) {
- if (products[i].code == code) {
- products.erase(products.begin() + i);
- cout << "Товар видалено." << endl;
- return;
- }
- }
- cout << "Товар з таким артикулом не знайдено." << endl;
- }
- void saveProducts(vector<Product>& products, const string& filename) {
- ofstream fout(filename);
- if (!fout.is_open()) {
- cout << "Не вдалося відкрити файл для запису!" << endl;
- return;
- }
- for (int i = 0; i < products.size(); i++) {
- Product p = products[i];
- fout << p.name << ";" << p.quantity << ";"
- << p.price << ";" << p.total << ";"
- << p.code << ";" << p.location << endl;
- }
- fout.close();
- cout << "\nДані успішно збережено!" << endl;
- }
- void Menu() {
- cout << "Меню складу" << endl;
- cout << "1. Перегляд товарів" << endl;
- cout << "2. Додати товар" << endl;
- cout << "3. Редагувати товар" << endl;
- cout << "4. Видалити товар" << endl;
- cout << "5. Зберегти у файл" << endl;
- cout << "6. Вийти" << endl;
- }
- int main() {
- SetConsoleOutputCP(1251);
- SetConsoleCP(1251);
- vector<Product> products;
- readProducts(products, "D:/files/products.txt");
- int choice{};
- do {
- Menu();
- cout << "Оберіть номер опції: " << endl;
- cin >> choice;
- switch (choice) {
- case 1:
- printProducts(products);
- break;
- case 2:
- addProduct(products);
- break;
- case 3:
- editProduct(products);
- break;
- case 4:
- deleteProduct(products);
- break;
- case 5:
- saveProducts(products, "D:/files/products.txt");
- break;
- case 6:
- cout << "Вихід з програми." << endl;
- break;
- default: cout << "Номер опції обрано неправильно. Спробуйте ще раз!" << endl;
- }
- } while (choice != 6);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement