
- •Методические указания к лабораторным работам
- •Порядок выполнения лабораторных работ
- •Оборудование, технические средства, инструмент
- •Требования к оформлению отчета
- •Требования к защите лабораторных работ
- •Лабораторная работа №2. Отношения между классами
- •2.1 Наследование и полиморфизм
- •Int year; //год издания
- •Virtual void Display();//вывод описания публикации
- •Void cPublication:: Display()
- •2.2 Отношение между классами «содержит»
- •Void cMenu::p_menu_find() const // поиск по ключу
- •Void cMenu::p_menu_view() const // просмотр
- •Void cMenu::p_menu_ins()// добавление
Void cMenu::p_menu_find() const // поиск по ключу
{ string title;
cout << "\nВведите название книги -> ";
getline(cin, title);
int iKey = m_p->find(title);
if (iKey != -1)
{ cout << "Автор: ";
cout << m_p->m_pBook[iKey]->getAuthor()<<endl;
cout << "Название: ";
cout << m_p->m_pBook[iKey]->getTitle()<<endl;
cout << "Год издания: ";
cout << m_p->m_pBook[iKey]->getYear()<<endl;
}
else cout << title << " - не найдена";
}
Void cMenu::p_menu_view() const // просмотр
{ int n = m_p -> getNumberOfBook();
align(20); cout << "Автор"; align(30);
cout << "Название";align(10);
cout << "Год издания"; cout<<endl;
for (int i=0;i<n;i++)
{ align(20); cout << m_p->m_pBook[i]->getAuthor();
align(30); cout << m_p->m_pBook[i]->getTitle();
align(10); cout << m_p->m_pBook[i]->getYear();
cout<<endl;
}
}
Void cMenu::p_menu_ins()// добавление
{ string author, title; int year;
cout << "\nВведите название -> ";
getline(cin,title);
if (m_p -> find(title) < 0)
{ cout << "\nВведите автора -> ";
getline(cin,author);
cout << "\nВведите год издания -> ";
cin >> year;
if (m_p->ins(author, title, year))
cout << "\nINSERTION IS COMPLETED!\n";
} else
cout << title << " - INSERTION IS IMPOSSIBLE\n";
}
void CMenu::p_menu_del() // удаление
{ string title ;
cout << "\nEnter Title -> "; getline(cin, title);
if (m_p -> del(title))
cout << "\nDELETION IS COMPLETED!\n";
else cout << title << " - DELETION IS IMPOSSIBLE\n";
}
void CMenu::p_menu_sort() // сортировка
{ m_p -> sort();
cout << "\nSORTING IS COMPLETED!\n";
}
void CMenu::align(int n) const // выравнивание
{ cout.width(n); cout.setf(ios_base::left);}
int main(void)
{ CMenu menu ;
menu.showMenuAndSelect();
return 0;
}
Рисунок 2.2 – Добавление книги
Рисунок 2.3 – Сортировка и просмотр каталога книг
Рисунок 2.4 – Поиск книги по названию
Рисунок 2.5 – Удаление книги
Задание 2 Для каждого индивидуального варианта необходимо создать консольную программу на С++, реализующую отношение между классами «содержит».
Класс «КОМНАТА», содержит закрытые поля: сведения о метраже, высоте потолков и количестве окон и метод подсчета площади комнаты. Класс «КВАРТИРА», содержит закрытые поля: номер этажа, массив объектов класса «КОМНАТА», метод подсчета площади квартиры и метод вывода информации о комнатах квартиры.
Класс «СТУДЕНТ» содержит закрытые поля: номер студенческого билета, Фамилия, Имя, Отчество, дата рождения, массив из пяти оценок и метод подсчета среднего балла. Класс «СТУДЕНЧЕСКАЯ ГРУППА» содержит закрытые поля: название группы, курс, массив объектов класса «СТУДЕНТ», метод подсчета среднего балла для группы и метод вывода списка студентов, отсортированный по фамилиям в алфавитном порядке.
Класс «АВТОМОБИЛЬ» содержит закрытые поля: гос. номер, цвет, фамилия владельца и признак присутствия на стоянке и метод вывода сведений об автомобиле. Класс «АВТОСТОЯНКА», содержит закрытые поля: название автостоянки, массив объектов класса «АВТОМОБИЛЬ», методы поиска автомобиля по разным критериям и методы вывода списка присутствующих и отсутствующих на стоянке автомобилей.
Класс «ЗАПИСЬ» содержит закрытые поля: фамилия, имя, номер телефона, дата рождения. Класс «ЗАПИСНАЯ КНИЖКА», содержащий закрытые поля: фамилия и инициалы владельца, массив объектов класса «ЗАПИСЬ», метод поиска номера телефона и даты рождения по фамилии и имени, а также метод получения списка людей, номер телефона которых начинается на три заданные цифры.
Класс «САМОЛЕТ» содержит закрытые поля: шестизначный номер рейса, название пункта назначения, время отправления и метод вывода сведений о самолете. Класс «АЭРОПОРТ» содержит закрытые поля: название аэропорта, массив объектов класса «САМОЛЕТ», метод поиска информации о самолетах, отправляющихся в течении часа после введенного с клавиатуры времени и метод вывода информации о самолетах, отправляющихся в заданный пункт назначения. Информация должна быть отсортирована по времени отправления.
Класс «КОМПЛЕКТУЮЩЕЕ» содержит закрытые поля: название, цена, гарантийный срок и метод вывода сведений о комплектующем. Класс «КОМПЬЮТЕР» содержит закрытые поля: серийный номер, марка, массив объектов класса «КОМПЛЕКТУЮЩЕЕ», метод замены комплектующих компьютера и метод вывода списка комплектующих компьютера.
Класс «ПЕСНЯ» содержит закрытые поля: номер песни, название песни, композитор, поэт, исполнитель и метод вывода сведений о песне. Класс «ДИСКИ» содержит закрытые поля: название диска, цена, массив объектов класса «ПЕСНЯ», метод поиска песни по названию, метод поиска песни по исполнителю и метод вывода списка песен диска, упорядоченный по названию песни.
Класс «ПОЕЗД» содержит закрытые поля: номер поезда, название пункта назначения, время отправления и метод вывода сведений о поезде. Класс «ВОКЗАЛ» содержит закрытые поля: название вокзала, массив объектов класса «ВОКЗАЛ», метод поиска информации о поездах, отправляющихся после введенного с клавиатуры времени и метод вывода информации о поездах, отправляющихся в заданный пункт назначения. Информация должна быть отсортирована по времени отправления.
Класс «ТОВАР» содержит закрытые поля: название товара, стоимость единицы товара в рублях, количество единиц товара и метод подсчета стоимости товара. Класс «СКЛАД» содержит закрытые поля: название склада и массив объектов класса «ТОВАР», метод подсчета стоимости всего товара и метод вывода списка товаров, отсортированный по названию товара.
Класс «ЛЕКАРСТВО» содержит закрытые поля: название лекарства, цена, показания к применению, противопоказания и метод вывода сведений о лекарстве. Класс «АПТЕКА» содержит закрытые поля: название аптеки, номер аптеки, массив объектов класса «ЛЕКАРСТВО», метод поступления новых лекарств в аптеку, метод поиска лекарства по названию и метод вывода списка лекарств аптеки.
Класс «АВТОБУС» содержит закрытые поля: номер автобуса название пункта назначения, время отправления и метод вывода сведений об автобусе. Класс «АВТОВОКЗАЛ» содержит закрытые поля: название автовокзала, массив объектов класса «АВТОБУС», метод поиска информации об автобусах, отправляющихся после введенного с клавиатуры времени в заданный пункт назначения. Информация должна быть отсортирована по времени отправления.
Класс «ЖИВОТНОЕ» содержит закрытые поля: кличка животного, название вида, возраст, вес и метод вывода сведений о животном. Класс «ЗООПАРК» содержит закрытые поля: название зоопарка, массив объектов класса «ЖИВОТНОЕ», метод поступления новых животных в зоопарк, метод убытия животных из зоопарка и метод вывода списка животных зоопарка.