Читайте также:
|
|
Main – программа эмулирует операции видеомагазина. Первоначально весь перечень фильмов списывается из файла films и сохраняется в списке с именем InvenoryList. Мы наблюдаем короткий промежуток времени деятельности видеомагазина и рассматриваем заказы четырёх клиентов на прокат фильмов. В каждом случае мы вводим имя клиента и заказ фильма и определяем, имеется ли этот фильм в наличии в настоящее время. Если да, то мы удаляем его из инвентаризационного списка и добавляем клиента в список лиц, взявших фильмы напрокат. Если фильма нет в наличии, клиент уведомляется об этом.
#nclude <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <string.h>
#include "video.h" // объявление видео-данных
#include "aseqlist" // включить класс SeqList
// читать таблицу фильмов с диска
void SetupInventoryList(seqList &inventoryList)
{
ifstream filmFile;
FilmData fd;
//открыть файл, с проверкой ошибок
filmFile.open("Films", ios::in | ios::nocreate);
if (!filmFile)
{
cerr << "Файл 'films' не найден!" << endl;
exit(1);
}
// читать строки до конца файла;
// вставлять наименования фильмов в инвентаризационный список
while(filmFile.getline(fd.filmName, 32,'\n'))
inventoryList.insert(fd);
}
// печать наименований фильмов
void PrintInventoryList(const SeqList &invetoryList)
{
int i;
FilmData fd;
for (i = 0; i < inventoryList.ListSize(); i++)
{
fd = inventoryList.GetData(i); //
cout << fd.filmName << endl; //
}
}
// цикл по списку клиентов. печать клиентов и фильмов
void PrintCustomerList(const SeqList &customerList)
{
int i;
filmData fd;
for (i = 0; i < customerList.ListSize(); i++)
{
fd = customerList.GetData(i); //
cout << fd.customerName << " (" << fd.filmName << ") " <<endl;
}
}
void main(void)
{
//
SeqList inventoryList, customerList;
int i;
//
FilmData fdata;
char customer[20];
SetupinventoryList(inventoryList); // Читать файл с фильмами
// запрос имени клиента и названия фильма
// если запрошенный файл имеется в наличии, он вносится в список клиентов
// и удаляется из списка фильмов; в противном случае выдаётся
// сообщение об отсутствии фильма
for (i = 0; i < 4; i++)
{
//ввод имени клиента и названия фильма
cout<< "Имя клиента: ";
cin.getline(customer,32,'\n');
cout<< "Запрашиваемый фильм: ";
cin.getline(fdata.filmName,32,'\n');
if(inventoryList.Find(fdata))
{
{
strcpy(fdata.customerName,customer);
// втавить название фильма в список клиентов
customerList.Insert(fdata);
// удалить из списка фильмов
inventoryList.Delete(fdata);
}
else
cout<< "Сожалею! "<<fdata.filmName
<< "отсутствует."<< endl;
}
cout << endl;
// печать списков клиентов и фильмов
cout << "Коиенты, взявшие фильмы для просмотра" << endl;
PrintCustomerList(customerList);
cout << endl;
cout << "Фильмы, оставшиеся в ведомости:"<< endl;
PrintInventoryList(inventoryList);
}
/*
< Входной файл "Films">
Война миров
Кассабланка
Грязный Гарри
Дом животных
Десять заповедей
Красавица и зверь
Список Шиндлера
Звуки музыки
La Strata
Звёздные войны
<Выполнение программы 4.2>
имя клиента: Дон Бекер
Запрашиваемый фильм: Дом животных
имя клиента: Тери Молтон
Запрашиваемый фильм: Красавица и зверь
имя клиента: Деррик Лопез
Запрашиваемый фильм: La Strata
имя клиента: Хиллари Дэн
Запрашиваемый фильм: Дом животных
Сожалею! Дом Животных отсутствует.
Клиенты, взявшие фильмы для просмотра
Дон Бекер (Дом животных)
Тери Молтон (Красавица и зверь)
Деррик Лопез (La Strata)
Фильмы, оставшиеся в ведомости:
Война миров
Кассабланка
Грязный Гарри
Десять заповедей
Список Шиндлера
Звуки музыки
Звёздные войны
*/
Дата добавления: 2015-07-15; просмотров: 82 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
DataType SeqList : : GetData ( int pos ) const | | | Базовый курс Autodesk 3ds Max |