Задание:
Создать файл содержащий сведения об ассортименте обуви в магазине.
- Записи содержать следующую информацию: артикул, наименование, количество, стоимость одной пары.
- Артикул начинается с буквы Ж для женской обуви, М для мужской и Д для детской.
- На печать вывести информацию: о наличии и стоимости обуви артикула 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
Телеграм
-