Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Требования к программному обеспечению




 

- среда разработки – MS Visual C++ 2010 и новее.

 

2.2.4 Варианты контрольной работы “Композиция классов и объектов”

 

Разработать консольное объектно-ориентированное приложение на языке С++, в котором создаются два-три класса. Один класс является основным, остальные – вспомогательные. Вспомогательные классы должны быть определены как независимые. Объекты вспомогательных классов должны использоваться в качестве полей основного класса.

Вариант 1. Создайте класс Account (Счет), используя для представления суммы класс Money (Деньги).

Класс Account представляет банковский счет и содержит четыре поля: фамилия владельца, номер счета, процент начисления и сумма в рублях. Открытие нового счета выполняется операцией инициализации. Реализуйте операции: сменить владельца счета, снять сумму денег со счета, положить деньги на счет, начислить проценты, перевести сумму в доллары, получить сумму в евро.

Класс Money используется для работы с денежными суммами. Число представляется двумя полями: типа long для рублей и типа unsigned char – для копеек. Дробная часть (копейки при выводе на экран) должна быть отделена от целой части запятой. Реализуйте операции сложения, вычитания, деления сумм, деление суммы на дробное число, умножение на дробное число и операции сравнения.

Вариант 2. Создайте класс HomeAddress (домашний адрес), содержащий информацию: почтовый индекс, страна, область, район, город, улица, дом, квартира.

Создайте класс Patient (пациент), содержащий информацию: фамилия, имя, год рождения, номер телефона, домашний адрес, номер медицинской карты, группа крови. В классе Patient объект класса HomeAddress должен выступать закрытым членом. Разработайте программу, в которой создается массив объектов типа Patient. В программе организуйте:

- заполнение массива с клавиатуры;

- вывод данных массива на экран в виде таблицы;

- поиск и вывод информации о всех пациентах данного города;

- поиск и вывод информации о пациенте по заданному номеру медицинской карты;

- вывод отчета о количестве пациентов в каждом из представленных городов.

Вариант 3. Создайте класс Payment (платеж), предназначенный для хранения информации об оплате за месяц, выполненной слушателем курсов. Оплата характеризуется номером квитанции, датой оплаты и суммой.

Создайте класс Lerner (слушатель курсов), который должен характеризоваться набором полей: фамилия, имя, название курса, общая стоимость курса и множество выполненных оплат. Множество выполненных платежей организуйте в виде массива объектов типа Payment. Для класса Learner определите следующие методы:

- добавление очередной оплаты;

- вычисление общей суммы выполненных платежей;

- вычисление суммы, которую предстоит заплатить.

Вариант 4. Создайте класс Account (Счет). Добавьте поле-дату открытия счета, используя класс Date (Дата). Добавьте метод, вычисляющий количество дней, прошедших с начала открытия счета, и добавляющий по 0,01% к проценту начисления за каждый день.

Класс Account представляет банковский счет и содержит четыре поля: фамилия владельца, номер счета, процент начисления и сумма в рублях. Открытие нового счета выполняется операцией инициализации. Реализуйте операции: сменить владельца счета, снять сумму денег со счета, положить деньги на счет, начислить проценты, перевести сумму в доллары, получить сумму в евро.

Класс Date используется для работы с датами в формате «год.месяц.день». Дата представляется структурой с тремя полями типа unsigned int: для года, месяца и дня. Класс должен включать не менее трех функций инициализации: числами, строкой вида «год.месяц.день» (например, «2011.08.30») и датой. Реализуйте операции: вычисление даты через заданное количество дней, вычитание заданного количества дней из даты, определение високосности года, присвоение и получение отдельных частей (год, месяц, день), сравнение дат (равно, до, после), вычисление количества дней между датами.

Вариант 5. Создайте класс Calculator (калькулятор) с полным набором арифметических операций. Используя класс Fraction.

Класс Fraction (дробь) используется для работы с дробными числами. Число представляется двумя полями: целая часть – длинное целое со знаком, дробная часть –беззнаковое короткое целое. Реализуйте арифметические операции сложения, вычитания, умножения и операции сравнения.

Вариант 6. Создайте класс Bankomat (банкомат), используя для представления класс Money (Деньги).

Класс Bankomat моделирует работу банкомата. В классе содержатся поля для хранения идентификационного номера, информации о текущей сумме денег, оставшейся в банкомате, минимальной и максимальной суммах, которые позволяется снять клиенту в один день. Сумма денег представляется полями-номиналами 10-1000. Реализуйте метод инициализации банкомата, метод загрузки купюр в банкомат и метод снятия определенной суммы денег. Метод снятия денег должен выполнять проверку на корректность снимаемой суммы: она не должна быть меньше минимального значения и не должна превышать максимальное значение.

Класс Money используется для работы с денежными суммами. Сумма представляется полями-номиналами, значениями которых должно быть количество купюр данного достоинства. Номиналы российских рублей принимают значения 1, 2, 10, 50, 100, 500, 1000, 5000. Копейки представляются как 0,01 (1 копейка), 0,05 (5 копеек), 0,1 (10 копеек), 0,5 (50копеек). Реализуйте операции сложения сумм, вычитание сумм, деление сумм, деление суммы на дробное число, умножение на дробное число и операции сравнения. Дробная часть (копейки) при выводе на экран должна быть отделена от целой части запятой.

Вариант 7. Создайте класс Fraction (Дробь), используя для представления целой части класс LongLong (Длинное целое), а для представления дробной части положительное дробное число типа double.

Класс Fraction используется для работы с дробными числами. Число представляется двумя полями: целая часть – длинное целое со знаком, дробная часть –беззнаковое короткое целое. Реализуйте арифметические операции сложения, вычитания, умножения и операции сравнения.

Класс LongLong используется для работы с целыми числами из 64 бит. Число должно быть представлено двумя полями: long – старшая часть, unsigned long – младшая часть. Должны быть реализованы арифметические операции, присутствующие в С++(без присваивания), и сравнения.

Вариант 8. Создайте класс Triangle (треугольник), используя класс Angle (угол) для представления углов.

Класс Triangle используется для представления треугольника. Поля данных включают углы и стороны. Реализуйте операции: получения и изменения полей данных, вычисления площади, вычисления периметра, вычисления высот и определения вида треугольника (равносторонний, равнобедренный или прямоугольный).

Класс Angle используется для работы с углами на плоскости, задаваемыми величиной в градусах и минутах. Реализуйте операции: перевод в радианы, приведение к диапазону 0-360, увеличение и уменьшение угла на заданную величину, получение синуса, сравнение углов.

Вариант 9. Создайте класс Goods (товары), добавив поле-дату поступления товара на склад, используя класс Date. Реализуйте метод, вычисляющий срок хранения товара.

Класс Goods используется для представления товара. Поля класса: наименование товара, дата оформления, цена товара, количество единиц товара, номер накладной, по которой товар поступил на склад. Реализуйте методы изменения цены товара, изменения количества товара (увеличения и уменьшения), вычисления стоимости товара.

Класс Date используется для работы с датами в формате «год.месяц.день». Дата представляется структурой с тремя полями типа unsigned int: для года, месяца и дня. Класс должен включать не менее трех функций инициализации: числами, строкой вида «год.месяц.день» (например, «2011.08.30») и датой. Реализуйте операции: вычисление даты через заданное количество дней, вычитание заданного количества дней из даты, определение високосности года, присвоение и получение отдельных частей (год, месяц, день), сравнение дат (равно, до, после), вычисление количества дней между датами.

Вариант 10. Создайте класс Goods (товары), используя для представления цены класс Money (Деньги). Реализуйте метод уценки товара, уменьшая цену на 1% за каждый день просрочки срока годности.

Класс Goods используется для представления товара. Поля класса: наименование товара, дата оформления, цена товара, количество единиц товара, номер накладной, по которой товар поступил на склад. Реализуйте методы изменения цены товара, изменения количества товара (увеличения и уменьшения), вычисления стоимости товара.

Класс Money используется для работы с денежными суммами. Число представляется двумя полями: типа long для рублей и типа unsigned char – для копеек. Дробная часть (копейки при выводе на экран) должна быть отделена от целой части запятой. Реализуйте операции сложения, вычитания, деления сумм, деление суммы на дробное число, умножение на дробное число и операции сравнения.

Вариант 11. Создайте класс Triangle (треугольник), с полями-координатами вершин. Для представления координат вершин используйте класс Point.

Класс Triangle используется для представления треугольника. Поля данных включают углы и стороны. Реализуйте операции: получения и изменения полей данных, вычисления площади, вычисления периметра, вычисления высот и определения вида треугольника (равносторонний, равнобедренный или прямоугольный).

Класс Point используется для работы с точками на плоскости. Координаты точки – декартовы. Реализуйте операции: перемещение точки по оси X, перемещение точки по оси Y, определение расстояния до начала координат, расстояния между двумя точками, преобразование в полярные координаты, сравнение на совпадение и несовпадение.

Вариант 12. Создайте класс Payment (зарплата), используя вместо поля-года поле-дату класса Date (дата). Вычисление стажа осуществляется посредством использования методов класса Date.

Класс Payment содержит поля: фамилия-имя-отчество, оклад, год поступления на работу, процент надбавки, подоходный налог, количество отработанных дней в месяце, количество рабочих дней в месяце, начисленная и удержанная суммы. Реализуйте методы: вычисления начисленной суммы, вычисления удержанной суммы, вычисления суммы, выдаваемой на руки, вычисления стажа. Стаж вычисляется как полное количество лет, прошедших от года поступления на работу, до текущего года. Начисления представляют собой сумму, начисленную за отработанные дни, и надбавки, то есть доли от первой суммы. Удержания представляют собой отчисления в пенсионный фонд (1% от начисленной суммы) и подоходный налог. Подоходный налог составляет 13% от начисленной суммы без отчислений в пенсионный фонд.

Класс Date используется для работы с датами в формате «год.месяц.день». Дата представляется структурой с тремя полями типа unsigned int: для года, месяца и дня. Класс должен включать не менее трех функций инициализации: числами, строкой вида «год.месяц.день» (например, «2011.08.30») и датой. Реализуйте операции: вычисление даты через заданное количество дней, вычитание заданного количества дней из даты, определение високосности года, присвоение и получение отдельных частей (год, месяц, день), сравнение дат (равно, до, после), вычисление количества дней между датами.

Вариант 13. Создайте класс Payment (зарплата), используя для представления полей-начислений и удержаний класс Money (Деньги).

Класс Payment содержит поля: фамилия-имя-отчество, оклад, год поступления на работу, процент надбавки, подоходный налог, количество отработанных дней в месяце, количество рабочих дней в месяце, начисленная и удержанная суммы. Реализуйте методы: вычисления начисленной суммы, вычисления удержанной суммы, вычисления суммы, выдаваемой на руки, вычисления стажа. Стаж вычисляется как полное количество лет, прошедших от года поступления на работу, до текущего года. Начисления представляют собой сумму, начисленную за отработанные дни, и надбавки, то есть доли от первой суммы. Удержания представляют собой отчисления в пенсионный фонд (1% от начисленной суммы) и подоходный налог. Подоходный налог составляет 13% от начисленной суммы без отчислений в пенсионный фонд.

Класс Money используется для работы с денежными суммами. Число представляется двумя полями: типа long для рублей и типа unsigned char – для копеек. Дробная часть (копейки при выводе на экран) должна быть отделена от целой части запятой. Реализуйте операции сложения, вычитания, деления сумм, деление суммы на дробное число, умножение на дробное число и операции сравнения.

Вариант 14. Создайте класс Money (Деньги), используя класс Fraction (Дробь).

Класс Money используется для работы с денежными суммами. Число представляется двумя полями: типа long для рублей и типа unsigned char – для копеек. Дробная часть (копейки при выводе на экран) должна быть отделена от целой части запятой. Реализуйте операции сложения, вычитания, деления сумм, деление суммы на дробное число, умножение на дробное число и операции сравнения.

Класс Fraction (дробь) используется для работы с дробными числами. Число представляется двумя полями: целая часть – длинное целое со знаком, дробная часть –беззнаковое короткое целое. Реализуйте арифметические операции сложения, вычитания, умножения и операции сравнения.

Вариант 15. Создайте класс ModelWindow (модель экранного окна), добавив поле для курсора. Используйте для представления поля курсора класс Cursor (курсор).

Класс ModelWindow используется для работы с моделями экранных окон. В качестве полей задаются заголовок окна, координаты левого верхнего угла, размер по горизонтали, размер по вертикали, цвет окна, состояние «видимое/невидимое», состояние «с рамкой/без рамки». Координаты и размеры указываются в целых числах. Реализуйте операции: передвижение окна по горизонтали, по вертикали; изменение высоты и/или ширины окна; изменение цвета; изменение состояния, опрос состояния. Операции передвижения и изменения размера должны осуществлять проверку на пересечение границ экрана. Функция вывода на экран должна индуцировать состояние полей объекта.

Класс Cursor включает поля: координаты по горизонтали и вертикали – целые положительные числа, вид курсора – горизонтальный или вертикальный, размер курсора –целое от 1 до 15. Реализуйте методы изменения координат курсора, изменение вида курсора, изменения размера курсора, метод гашения и восстановления курсора.

Вариант 16. Создайте класс Bill (счет), представляющий разовый платеж за телефонный разговор. Класс должен включать поля: фамилия плательщика, номер телефона, тариф за минуту разговора, скидка (в процентах), время начала разговора, время окончания разговора, сумма к оплате. Для представления времени используйте класс Time (Время). Реализуйте методы извлечения и изменения полей. Время разговора, подлежащее оплате, вычисляется в минутах; неполная минута считается за полную.

Класс Time используется для работы со временем в формате «час:минута:секунда» и включает четыре функции инициализации: числами, строкой (например, «23:59:59»), секундами и временем. Операциями являются: вычисление разницы между двумя моментами времени в секундах, сложение времени и заданного количества секунд, вычитание из времени заданного количества секунд, сравнение моментов времени, перевод в секунды, перевод в минуты (с округлением до целой минуты).

Вариант 17. Создайте класс Set (Множество) не более чем из 64 элементов целых чисел, используя класс BitString (Битовая строка). Множество должно обеспечивать включение элемента в множество, исключение элемента из множества, объединение, пересечение и разность множеств, вычисление количества элементов в множестве.

Класс BitString используется для работы с дробными числами. Число должно быть представлено двумя полями: целая часть – длинное целое со знаком, дробная часть – беззнаковое короткое целое. Реализуйте арифметические операции сложения, вычитания, умножения и операции сравнения.

Вариант 18. Создайте класс Rational (Рациональная дробь), используя для представления числителя и знаменателя класс LongLong (Длинное целое).

Класс Rational используется для работы с рациональными дробями. Рациональная (несократимая) дробь представляется парой целых чисел (a,b), где a – числитель, b – знаменатель. Требуется реализовать операции: сложения add: (a, b) + (c, d)=(a*d+b*c, b*d); вычитания sub: (a, b) – (c,d)=(a*d-b*c, b*d); умножения mul: (a, b) * (c,d)=(a*c, b*d); деления div: (a, b)/(c, d)=(a*d, b*c); сравнения equal, greater, less. Должна быть реализована приватная функция сокращения дроби reduce, которая обязательно вызывается при выполнении арифметических операций.

Класс LongLong используется для работы с целыми числами из 64 бит. Число должно быть представлено двумя полями: long – старшая часть, unsigned long – младшая часть. Должны быть реализованы арифметические операции, присутствующие в С++(без присваивания), и сравнения.

Вариант 19. Создайте класс Money (Деньги), используя для представления рублей класс LongLong (Длинное целое).

Класс Money используется для работы с денежными суммами. Число представляется двумя полями: типа long для рублей и типа unsigned char – для копеек. Дробная часть (копейки при выводе на экран) должна быть отделена от целой части запятой. Реализуйте операции сложения, вычитания, деления сумм, деление суммы на дробное число, умножение на дробное число и операции сравнения.

Класс LongLong используется для работы с целыми числами из 64 бит. Число должно быть представлено двумя полями: long – старшая часть, unsigned long – младшая часть. Должны быть реализованы арифметические операции, присутствующие в С++(без присваивания), и сравнения.

Вариант 20. Создайте класс Cursor (курсор), используя для представления координат класс LongLong.

Класс Cursor, используется для представления курсора. Поля класса: координаты по горизонтали и вертикали – целые положительные числа, вид курсора – горизонтальный или вертикальный, размер курсора –целое от 1 до 15. Реализуйте методы изменения координат курсора, изменение вида курсора, изменения размера курсора, метод гашения и восстановления курсора.

Класс LongLong используется для работы с целыми числами из 64 бит. Число должно быть представлено двумя полями: long – старшая часть, unsigned long – младшая часть. Должны быть реализованы арифметические операции, присутствующие в С++(без присваивания), и сравнения.

 

Курсовая работа.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...