Лабораторная работа №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)