Задание:
Создать файл содержащий сведения об ассортименте обуви в магазине.
- Записи содержать следующую информацию: артикул, наименование, количество, стоимость одной пары.
- Артикул начинается с буквы Ж для женской обуви, М для мужской и Д для детской.
- На печать вывести информацию: о наличии и стоимости обуви артикула X ( вводится с клавиатуры).
- Ассортиментный список женской обуви с указанием наименования и имеющегося в наличии числа пар каждой модели.
Данный проект имеет два типа пользователя: администратор и пользователь.
Администратор может:
- Загрузка данных из файла
- Вывод записей(несколько видов)
- Удаление одной или всех записей
- Поиск записи
- Редактирование записи
- Сортировка записей
- Запись в файл
- Изменение пароля
Пользователь может:
- Просмотр записей(Несколько видов)
- Поиск записи
- Сортировка записи
Содержимое проекта:
Для данной задачи лучше всего подходят текстовые файлы. Во время своей работы, программа оперирует структурами которые ввиду своей простоты без проблем записываются и считываются из текстового файла.
В программе используются 3 основных структуры, ShoesStruct, SortNameStruct, SortCostStruct.
- StoreStruct состоит из следующих полей: позиция, артикул обуви, наименование, количество пар, стоимость одной пары и флаг наличия(есть/нету).
- SortNameStruct структура, предназначенная для сортировки по названию.
- SortCostStructструктура, предназначенная для сортировки по цене.
Для объединения данных внутри программы используется контейнер std::list из стандартной библиотеки
Пример кода:
// Ф-ция просмотра void displayV(list<ShoesStruct> &shoesList) { if (shoesList.empty()) { cout << "Элементов не обнаружено!!!" << endl; return; } int iBuffer = 0; std::string TEXT = ""; cin.ignore(); //Ввод инвентарного номера //Цикл который выполниться минимум 1 раз do { cout << "Выберите способ отображения записей: " << endl; cout << "1. Показать все записи" << endl; cout << "2. Вывести обувь определенного артикула(М/Ж/Д, м/ж/д)" << endl; cout << "3. Вывести список женской обуви имеющейся в наличии" << endl; cout << "0. Выйти из функции просмотра" << endl; getline(cin, TEXT); try { //Конверт данных в число iBuffer = std::stoi(TEXT); } catch(...) { cout << "Неправильный формат инвентарного номера!!! Попробуйте еще!!!" << endl; //tmp->position = 0; iBuffer = -2; } if (iBuffer != -2 && iBuffer < 0) { cout << "Неправильный формат инвентарного номера!!! Попробуйте еще!!!" << endl; } } while(iBuffer < 0); //Обработка выбора пользователя switch (iBuffer) { //Просмотр всех записей case 1: for ( list<ShoesStruct>::iterator iter = shoesList.begin(); iter != shoesList.end(); iter++) { cout << "Инв. номер: "; cout << (*iter).iPosition << endl; cout << "Артикул: "; cout << (*iter).sArticle<< endl; cout << "Наименование: "; cout << (*iter).sName << endl; cout << "Количество пар: ";; cout << (*iter).iCount << endl; cout << "Стоимость одной пары: "; cout << fixed << setprecision(3) << (*iter).dCost << endl; cout << "Имеется ли в наличии: "; if((*iter).bHave == true) { cout << "Да" << endl; } else { cout << "Нет" << endl; } cout << "\n"; } break; //Вывод обуви по определенному артикулу case 2: //Ввод артикула //Цикл который выполниться минимум 1 раз do { cout << "Введите желаемый артикул: " << endl; getline(cin, TEXT); if((TEXT == "М") || (TEXT == "м")) { iBuffer = 0; } else if((TEXT == "Ж") || (TEXT == "ж")) { iBuffer = 0; } else if((TEXT == "Д") || (TEXT == "д")) { iBuffer = 0; } else { iBuffer = -1; } } while(iBuffer < 0); iBuffer = 0; //Обработка введенного артикула for ( list<ShoesStruct>::iterator iter = shoesList.begin(); iter != shoesList.end(); iter++) { //Если в структуре имеется нужные нам значения, то сразу печатаем if ((*iter).sArticle == TEXT) { cout << "Инв. номер: "; cout << (*iter).iPosition << endl; cout << "Артикул: "; cout << (*iter).sArticle<< endl; cout << "Наименование: "; cout << (*iter).sName << endl; cout << "Количество пар: ";; cout << (*iter).iCount << endl; cout << "Стоимость одной пары: "; cout << fixed << setprecision(3) << (*iter).dCost << endl; cout << "Имеется ли в наличии: "; if((*iter).bHave == true) { cout << "Да" << endl; } else { cout << "Нет" << endl; } cout << "\n"; } } break; //Вывод женской обуви case 3: //Обработка введенного артикула for ( list<ShoesStruct>::iterator iter = shoesList.begin(); iter != shoesList.end(); iter++) { //Если в структуре имеется нужные нам значения, то сразу печатаем if (((*iter).sArticle == "Ж") || ((*iter).sArticle == "ж")) { if((*iter).bHave == true) { cout << "Инв. номер: "; cout << (*iter).iPosition << endl; cout << "Наименование: "; cout << (*iter).sName << endl; cout << "Количество пар: ";; cout << (*iter).iCount << endl; cout << "\n"; } } } break; //Выход case 0: break; default: cerr << "Ошибка! Попробуйте снова!" << endl; } }
Содержание архива
-
Исходный код на С++ для Visual Studio
Zicise