Лабораторная работа №2 (классы, наследование)
Вариант 1
Отдел кадров. База данных сотрудников. Сотрудники двух типов: штатники (с постоянным окладом) и почасовики (зарплата вычисляется как «ставка»*«кол-во часов»).
Список людей реализован при помощи абстрактного класса Worker (свойства char* FIO, int Age, char* Position, Worker* Next, виртуальный метод double Salary() ). У класса Worker есть классы-наследники:
- Staff.[1] Добавляется свойство double MonthPayment, метод Salary возвращает значение MonthPayment. PartTime.[2] Добавляются свойства int Hours и double HourPayment, метод Salary возвращает (Hours * HourPayment).
На входе программы текстовый файл со списком сотрудников. Формат файла:
<FIO> <Age> <Position> <тип сотрудника (s/p)> <соответствующие свойства зарплаты>
…
Пример файла:
Ivanov Ivan Ivanovich 25 manager s 10500.0
Petrov Petr Petrovich 36 driver p 120 100.0
Sidorov Sidor Sidorovich 54 security p 65 120.0
Программа помещает список в память и реализует меню из трех пунктов:
<t> Total salary (напечатать сумму всех зарплат)
<l> Largest salary (напечатать фио человека с наибольшей зарплатой)
<w> Workers (напечатать список пар «сотрудников-зарплата», отсортированный по фамилии)
<q> Quit
Вариант 2 МОЯ
Blackjack. Абстрактный класс «Колода карт» (методы “перетасовать”, “взять верхнюю карту”, другие необходимые свойства и методы). Классы-наследники «Колода36», «колода54». Реализовать игру в «очко» (blackjack) с компьютером. Пользователь выбирает вид колоды, затем набирает карты, затем карты набирает компьютер.
Вариант 3
Адресная книга. База данных людей и их контактов (телефоны, email, icq). Список людей реализован при помощи класса Man (свойства char* FIO, Contact* Contacts (указатель на объект типа Contact, являющийся первым элементом списка контактов данного человека), Man* Next). Списки контактов реализованы при помощи абстрактного класса Contact (свойство Contact* Next, виртуальный метод char* Print() ). У класса Contact есть классы-наследники:
- Email. Добавляется свойство char Address[255], метод Print возвращает строку «email: <Address>». Phone. Добавляются свойства char CountryCode[3], char CityCode[5], char Number[7], метод Print возвращает строку «phone: <CountryCode>(<CityCode>)<Number>». ICQ. Добавляется свойство char Number[8], метод Print возвращает строку «ICQ: <Number>».
На входе программы текстовый файл со списком людей и их контактов. Формат файла:
<FIO> <кол-во контактов>
<тип контакта1 (e/p/i)> <соответствующие свойства контакта1>
<тип контакта2 (e/p/i)> <соответствующие свойства контакта2>
…
<FIO> <кол-во контактов>
<тип контакта1 (e/p/i)> <соответствующие свойства контакта1>
<тип контакта2 (e/p/i)> <соответствующие свойства контакта2>
…
Пример файла:
Ivanov Ivan Ivanovich 2
e *****@***ru
p 7 4852 555123
Petrov Petr Petrovich 3
i 55512345
e *****@***com
p 7 495 5551234
Sidorov Sidor Sidorovich 1
p 7 4852 5550000
Люди в списке могут повторяться! Контроль уникальности – по полю ФИО.
Программа помещает соответствующие списки в память и реализует меню из трех пунктов:
<p> Print persons only (напечатать список людей – только ФИО)
<a> Print all contacts (напечатать полностью список людей и их контактов в соответствующем стандартном формате)
<q> Quit
Вариант 4
Справочник поставщиков пиломатериалов. База данных поставщиков и их поставок (два типа пиломатериала: «бревно» и «брус»). Список поставщиков реализован при помощи класса Supplier (свойства char* Name, Supply* Supplies (указатель на объект типа Supply, являющийся первым элементом списка поставок данного поставщика), Supplier* Next). Списки поставок реализованы при помощи абстрактного класса Supply (свойства char Species[3], int NumOfUnits[4], Supply* Next, виртуальный метод double UnitVolume(), метод double TotalVolume()[5] ).
У класса Supply есть классы-наследники:
- Log (бревно). Добавляются свойства double Length и double Diameter, метод UnitVolume возвращает объем цилиндра. Beam (брус). Добавляются свойства double Length, double Height и double Width, метод UnitVolume возвращает объем параллелепипеда.
На входе программы текстовый файл со списком поставщиков и их поставок. Формат файла:
<Поставщик> <кол-во поставок>
<тип поставки1 (l/b)> <порода1 (b/s/e)> <кол-во единиц1> <размеры единицы1>
<тип поставки2 (l/b)> <порода2 (b/s/e)> <кол-во единиц2> <размеры единицы2>
…
<Поставщик> <кол-во поставок>
<тип поставки1 (l/b)> <порода1 (b/s/e)> <кол-во единиц1> <размеры единицы1>
<тип поставки2 (l/b)> <порода2 (b/s/e)> <кол-во единиц2> <размеры единицы2>
…
Пример файла:
BrevnoService 3
l e 100 10 0.3
b s 200 10 0.4 0.4
NorthWood 4
l b 50 4 0.25
b s 100 4 0.4 0.4
b e 300 4 0.3 0.3
b s 150 5 0.4 0.4
Karelia 1
b e 300 4 0.3 0.3
Поставщики могут повторяться! Контроль уникальности – по полю «Название».
Программа помещает соответствующие списки в память и реализует меню из трех пунктов:
<s> Suppliers (напечатать список пар «поставщик - общий объем его поставок»)
<w> Wood Species (напечатать общий объем поставок по каждой породе древесины)
<q> Quit
[1] Штатник
[2] Почасовик
[3] B – берёза, S – сосна, E – ель
[4] Количество единиц (бревен, бруса) в поставке
[5] Невиртуальный метод, возвращает (UnitVolume() * NumOfUnits)


