Ниже приведена законченная программа ведения инвентарной ведомости. Вам следует ввести эту программу в свой компьютер и исследовать ее работу. Внесите некоторые изменения и понаблюдайте, как они отразятся на ее выполнении. Попробуйте также расширить программу, добавив функции поиска в списке заданного товара, удаления уже ненужного элемента или полной очистки инвентарной ведомости.
/* Простая программа ведения инвентарной ведомости, в которой используется массив структур.
*/
#include
#include
#include
#include
using namespace std;
const int SIZE = 100;
struct inv_type {
char item[40]; // наименование товара
double cost; // стоимость
double retail; // розничная цена
int on_hand; // имеющееся в наличии количество
int lead_time; // число дней до пополнения запасов
} invtry[SIZE];
void enter(), init_list(), display();
void update(), input(int i);
int menu();
int main()
{
char choice;
init_list();
fоr (;;) {
choice = menu();
switch(choice) {
case 'e' : enter();
break;
case 'd' : display();
break;
case 'u': update();
break;
case 'q': return 0;
}
}
}
// Инициализация массива структур.
void init_list()
{
int t;
// Имя нулевой длины означает пустое имя.
for(t=0; t
}
//Получение команды меню, выбранной пользователем.
int menu()
{
char ch;
cout << '\n';
do {
cout << "(E)nter\n"; // Ввести новый элемент.
cout << "(D)isplay\n"; // Отобразить всю ведомость.
cout << " (U) pdate\n"; // Изменить элемент.
cout << " (Q) uit\n\n"; // Выйти из программы.
cout << "Выберите команду: ";
cin >> ch;
}while(!strchr("eduq", tolower(ch)));
return tolower(ch);
}
//Ввод элементов в инвентарную ведомость.
void enter()
{
int i;
// Находим первую свободную структуру.
for(i=0; i
if(!*invtry[i].item) break;
// Если массив полон, значение i будет равно SIZE.
if(i==SIZE) {
cout << "Список полон.\n";
return;
}
input(i);
}
// Ввод информации.
void input(int i)
{
cout << "Товар: ";
cin >> invtry[i].item;
cout << "Стоимость: ";
cin >> invtry[i].cost;
cout << "Розничная цена: ";
cin >> invtry[i].retail;
cout << "В наличии: ";
cin >> invtry[i].on_hand;
cout << "Время до пополнения запасов (в днях): ";
cin >> invtry[i].lead_time;
}
// Модификация существующего элемента.
void update()
{
int i;
char name[80];
cout << "Введите наименование товара: ";
cin >> name;
for(i=0; i
if(!strcmp(name, invtry[i].item)) break;
if(i==SIZE) {
cout << "Товар не найден.\n";
return;
}
cout << "Введите новую информацию.\n";
input (i);
}
// Отображение на экране инвентарной ведомости.
void display()
{
int t;
for(t=0; t
if(*invtry[t].item) {
cout << invtry[t].item << '\n';
cout << "Стоимость: $" << invtry[t].cost;
cout << "\nB розницу: $";
cout << invtry[t].retail << '\n';
cout << "В наличии: " << invtry[t].on_hand;
cout << "\nДо пополнения осталось: ";
cout << invtry[t].lead_time << " дней\n\n";
}
}
}