Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Домашнее задание ЛИПО

.docx
Скачиваний:
8
Добавлен:
09.02.2015
Размер:
23.84 Кб
Скачать

Московский государственный технический университет

им. Н.Э.Баумана

Калужский филиал

Домашнее задание

по курсу

Лингвистическое и программное обеспечение промышленных роботов

«Создание оконного приложения для Windows»

Калуга, 2013

Цель домашнего задания: закрепление у студента практических навыков, использования различных механизмов объектно-ориентированного программирования, а также обретение базовых навыков создания графического интерфейса приложений для Windows. Студент осуществляет разбиение поставленной задачи на подзадачи, формируя объектную модель предметной области задачи; проектирует интерфейс.

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

Задание: написать оконное приложение, реализующее функционал, в соответствии с вариантом.

Варианты заданий:

1. Написать приложение "Библиотека". Реализовать функции добавления, удаления книг из библиотеки. Добавляемая литература должна иметь параметры: идентификационный номер, название, число страниц, год выпуска, тип издания(журнал, научная литература, сказки); автор книги указывается для всех типов издания, кроме журнала. Предусмотреть функции поиска книг по названию и идентификационному номеру.

Добавить функции добавления, удаления пользователей библиотеки (имя, фамилия, идентификационный номер), и прикрепления, открепления книг к/от учетной записи пользователя.

Должна быть реализована возможность просмотра всех книг прикрепленных к данному пользователю.

2. Написать приложение "Склад". Реализовать функции добавления, удаления деталей на склад. Детали, хранящиеся на складе, должны иметь параметры: идентификационный номер, название, номер секции и ячейки, в которой храниться деталь, поставщик. Предусмотреть возможность добавления детали в склад, без указания поставщика. Также реализовать функцию поиска деталей по названию и идентификатору.

Добавить функции добавления, удаления поставщиков (название организации, идентификационный номер).

Должна быть реализована возможность просмотра всех деталей, данного поставщика.

3. Написать приложение "Фигуры". Реализовать функции создания, удаления плоских фигур. Объект фигура характеризуется геометрическими параметрами (в зависимости от типа фигуры). Пользователю должна предоставляться возможность добавления следующих фигур: треугольник, круг, прямоугольник, трапеция, параллелограмм.

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

4. Написать приложение "Конструктор математических выражений". Пользователю приложения должны предоставляться возможности составить сумму из шаблонных функций от одной переменной Х. Реализовать вывод на экран, результата вычисления полученной функции в зависимости от вводимых значений X.

Предусмотреть отрисовку графика полученной функции.

5. Написать приложение "Тотализатор". Программа должна принимать ставки пользователей, и симулировать собачьи бега. В программе необходимо добавлять участников соревнования (идентификационный номер, кличка, максимальная скорость, выносливость). Реализовать возможность добавления пользователей тотализатора, а также ставок от них (возможно несколько ставок от одного пользователя).

После приема ставок должен запускаться симулятор собачьих бегов( причем должна задаваться длина дистанции забега). В зависимости от параметров участников забега и дистанции забега определяется победитель забега и соответственно выигравшие ставки.

Обеспечить вывод победителей забега и победителей тотализатора.

6. Описать шаблонный класс List для работы с однонаправленными списками.

Для объектов класса List определить операции проверки списка на пустоту, добавления элемента в начало списка, в конец списка, подсчет числа вхождений элемента в список, удаление элемента из списка.

Продемонстрировать работу с шаблонным классом для списка с целыми элементами.

7. Описать шаблонный класс List для работы с двунаправленными списками.

Для объектов класса List определить операции проверки списка на пустоту, добавления элемента в список (в любую часть списка), подсчет числа вхождений элемента в список, удаление элемента из списка.

Продемонстрировать работу с шаблонным классом для списка с целыми элементами.

8. Написать программу "Офис". Построить три класса (базовый и 2 потомка), описывающих некоторых работников с почасовой оплатой (один из потомков) и фиксированной оплатой (второй потомок). Описать в базовом классе абстрактный метод для расчета среднемесячной заработной платы. Для «повременщиков» формула для расчета такова: «среднемесячная заработная плата = 20.8 * 8 * почасовую ставку», для работников с фиксированной оплатой «среднемесячная заработная плата = фиксированной месячной оплате».

Реализуемые функции:

  • Добавить работника в список.

  • Удалить работника из списка.

  • Поиск работника по имени/идентификатору.

  • Упорядочить всю последовательность работников по убыванию среднемесячного заработка. Вывести идентификатор работника, имя и среднемесячный заработок для всех элементов списка.

  • Вывести работников.

9. Написать приложение "Фигуры", по аналогии задания варианта 3. Исключить функции поиска площади и периметра. Добавить параметры - координаты фигуры на плоскости. Обеспечить функцию отрисовки фигуры на форме.

10. Написать приложение "Пинг понг". Управление с клавиатуры для двух пользователей.

11. Написать программу "Бинарный калькулятор". Реализовать функции складывания, умножения, вычитания, деления двоичных чисел, вводимых пользователем. Обеспечить ввод операндов в десятичной системе счисления (СС), и дальнейший перевод в двоичную СС. Вывод результата в двоичной и десятичной СС.

12. Написать программу, которая предоставляет возможность пользователю добавлять на форму новые элементы управления (кнопка текстовое поле ввода, список), с параметрами (размеры положение).

13. Написать программу "Банк". Программа позволяет создавать клиентов банка (фамилия имя, идентификационный номер, год рождения) и вклады (название, идентификационный номер, процентная ставка, минимальный взнос, период на который делается вклад).

Предусмотреть возможности вывода информации по вкладу данного клиента. Выводить также сумму которую получит пользователь по истечению срока вклада.

14. Написать графический редактор с инструментами карандаш и кисть. Пользователю предоставляется интерфейс, включающий в себя полотно для рисования и 3 функции: выбрать инструмент "карандаш", выбрать инструмент "кисть", очистить полотно.

15. Написать калькулятор. Функции калькулятора: сложение, вычитание, умножение, деление, синус, косинус, тангенс, степень, факториал, логарифм по основанию 10. Реализовать функции сложения и вычитания также и для комплексных чисел. Все функции реализовать в статическом классе.

16. Написать программу тестирования. Приложение должно считывать текстовый документ с списком вопросов и ответов, находящийся в корневой папке приложения, и на его основе проводить тестирование пользователя. Минимальное число вопросов - 20. По окончанию тестирования, выводится результат относительное число правильных ответов в процентах.

17. Создать приложение по работе с рациональными дробями. Создать класс рациональных дробей, выбрав для него необходимые поля. Выделение целой части в классе реализовывать не нужно. Создать конструкторы, позволяющие явно задавать дробь, указывая числитель и знаменатель, а также создавать дробь, вводя числитель и знаменатель с клавиатуры. Добавить необходимые ограничения на допустимые значения. Реализовать в классе метод, позволяющий сокращать дробь на наибольший общий делитель. Реализовать в классе операции (перегрузкой * и +) умножения и сложения дробей, с приведением к наименьшему общему знаменателю.

Реализовать интерфейс пользователя позволяющий использовать функции разработанного класса.

18. Написать приложение по работе с окружностями. Создать класс окружностей на плоскости, описав в нём все необходимые свойства, подобрав им понятные имена и правильные типы данных. Описать в классе конструктор, позволяющий при создании нового объекта явно задать все его свойства, а также конструктор, позволяющий задать свойства с клавиатуры. Если это необходимо, то проверить допустимость значений свойств. Создать в классе метод, вычисляющий площадь круга. Создать в классе метод, вычисляющий расстояние между центрами окружностей. Создать в классе метод, проверяющий, касаются ли окружности.

Реализовать интерфейс пользователя, позволяющий использовать функции разработанного класса.

19. Написать приложение по работе со студентами и группами. Реализовать возможность добавления, удаления групп; добавления, удаления студента из группы, смены группы, поиск студента среди всех групп по фамилии; отображение всех групп, отображение студентов группы.

20. Написать приложение по учету лошадкоподобных животных: коровка, зебра, единорог. Лошадь базовый класс, остальные наследуются о него. Реализовать возможность поиска животного по имени, отображения информации по всем лошадкам, добавление, удаление.

21. Написать приложение "конвейер ЛАДА КАЛИНА". Создать объектную модель ЛАДЫ, которая должна включать в себя такой класс как автомобиль, который включает в себя классы сиденье, коробка передач (котрая включает в себя шестеренки и болты), двигатель (который включает в себя шестеренки, болты, поршни), руль.

Приложение должно предоставить пользователю возможность ввести параметры автомобиля, на что приложение должно создать ЛАДУ, добавить ее в список выпущщеных машин, отобразить это на форме в ListBox'e, при нажатии на элемент списка, отобразить параметры.

22. Написать приложение "Дерево". В программе существует два основных класса - узел, лист. Программа автоматически должна генерировать случайное дерево, и выводить его на экран в наглядном виде (графическое отображение, либо с помощью элементов управления Windows). Предусмотреть функцию, позволяющую определить цепочку элементов от указанного пользователем листа до корневого элемента.

От одного узла может идти максимум два ответвления (либо узел либо ветка). Конечные узлы должны быть обязательно листьями. Начальный элемент - всегда узел.

23. Написать шикарную лекцию с презентацией по теме "Делегаты и события", разобраться в теме, и доложиться с ней на лекции.

Список вопросов к защите:

  1. Что такое класс?

  2. Что такое объект класса?

  3. Перечислить члены класса.

  4. Что такое метод?

  5. Особенности использования статичных членов класса.

  6. Перечислить модификаторы доступа. Особенности применения.

  7. Что такое свойства класса?

  8. Что такое перегрузка методов?

  9. Что такое конструктор класса?

  10. Перегрузка конструктора класса.

  11. Особенности применения ссылочного типа.

  12. Особенности применения типов значения.

  13. Сколько параметров может принимать метод?

  14. Как реализовать контролируемый доступ к закрытому полю класса из другого класса?

  15. Виртуальные методы. Определение, особенности применения.

  16. Интерфейсы. Определение.

  17. Абстрактные методы. Отличие от виртуальных.

  18. Наследование. Основные термины и понятия.

  19. Ключевое слово return. Формальные параметры метода. Аргументы метода.

  20. Классификация операторов по количеству операндов.

  21. Способы задания итерационных циклов.

  22. Бесконечные циклы. Выход из цикла. Выход из текущей итерации.

  23. Операторы ветвления хода выполнения программы.