
Курсовая работа
2 Курс, 3 семестр Задание на курсовую работу
Общие положения
Курсовая работа завершает 3-х семестровый курс изучения программирования.
Целью курсовой работы является применение знаний, накопленных за период обучения для решения достаточно больших задач.
В курсовой работе необходимо:
1. Спроектировать классы, которые будут использоваться в программе.
2. Защитить архитектуру программы при собеседовании с преподавателем.
3. Разработать и отладить программу в соответствии с вариантом.
4. Протестировать программу
5. Сдать протестированную программу преподавателю. Доказать, что программа удовлетворяет принципам инкапсуляции, абстракции и полиморфизма.
6. Подготовить пояснительную записку к курсовой работе
7. Подготовить доклад и плакаты (презентацию).
8. Защитить курсовую работу на публичной защите.
Оценка по экзамену не может превышать оценку, полученную на защите курсовой работы!
Базовый уровень (на оценку “3”)
Разработать на языке С++ программу, в текстовом режиме выполняющую следующие действия со списком окон:
Очистка текущего списка (с обязательным запросом на подтверждение) – окна из текущего списка уничтожаются.
Добавление нового окна к списку (параметры задаются с клавиатуры) – с клавиатуры нужно ввести все параметры окна и место в списке, куда новое окно нужно вставить. Вставленное окно выводится на экран и становится активным.
Перемещение по списку окон – выбор окна (текущего) – для перемещения необходимо использовать клавиши указанные в варианте.
Изменение положения на экране и цвета текущего окна – при помощи указанных в варианте клавиш.
Удаление текущего окна (с обязательным запросом на подтверждение) – действие выполняется из меню.
Сохранение списка окон в файле (в бинарном формате) - в файле сохраняется информация, достаточная для восстановления текущего состояния списка окон.
Загрузка списка окон из файла – восстановление сохраненного состояния списка окон.
Сохранение списка окон в текстовом файле в виде таблицы. В таблице сохраняется полная информация по каждому окну.
Вывод окна помощи – с перечислением всех действий и горячих клавиш.
Сохранение (оба вариант) должно включать в себя и сжатие сохраненного файла. Т.е. если например пользователь выбрал сохранение в «data.txt», то генерируется 2 файла – «data.txt» и «data.cmp» (cmp - compressed). При загрузке данных пользователь выбирает, из какого файла грузить. Тип сжатия выбирается по списку в соответствии с вариантом в конце документа
Окна могут быть 2х типов – прямоугольное и не прямоугольное. Непрямоугольные окна рисуются с помощью символов псевдографики.
Программа реализуется в Borland C++ 3.1 под DOS или в Visual Studio 2010 C++
Внешний вид программы:
При запуске программы на экране вверху появляется строка с информацией об авторе программы, а внизу - строка подсказки. Подсказка содержит клавиши вызова меню, вызова окна помощи и наиболее часто используемые горячие клавиши.
Между строкой меню и строкой подсказки демонстрируется список окон.
Схематически внешний вид окна изображен на рисунке:
Пользователь должен иметь возможность выполнить операции при помощи выбора соответствующего пункта меню и/или при помощи горячей клавиши.
Внешний вид окна:
Каждое окно имеет заголовок, одну строку текста и уникальный номер. Окно имеет произвольные размеры и произвольное размещение на экране. При этом окно должно целиком помещаться в пределах экрана между строкой, содержащей сведения об авторе, и строкой-подсказкой. Заголовком окна с номером окна должны помещаться в одной строке. Также в одной строке должен помещаться текст окна. Каждое окно может иметь свой собственный цвет окна, цвет рамки, цвет заголовка и цвет текста. Цвет рамки, цвет заголовка и цвет текста не может совпадать с цветом окна. Рамка неактивного окна имеет одинарную толщину, рамка активного (текущего) окна имеет двойную толщину (в текством режиме – двойную линию). Активное окно показывается полностью (как бы спереди – перед другими). В любой момент времени имеется одно активное окно. Активному окну можно установить новый цвет и изменить его положение на экране. Его можно удалить.
Схематически внешний вид окна изображен на рисунке:
Меню:
Для выполнения действий, не доступных при помощи горячих клавиш, пользователь вызывает меню (нажатием соответствующей горячей клавиши). Во время работы в меню нельзя работать со списком окон при помощи горячих клавиш. После выполнения действия из меню, меню с экрана удаляется и продолжается работа со списком окон. Внешний вид работающей программы с вызванным меню приводится на рисунке ниже:
Требования к реализации:
В программе необходимо использовать следующие классы:
Окно
Элемент списка (может быть не класс, а структура)
Список окон
Меню
Использование других классов в программе приветствуется.
ВАРИАНТЫ:
Тип меню:
1 Вертикальное, "выплывающее" из нижнего края экрана
2 Вертикальное, "выплывающее" из верхнего края экрана
3 Вертикальное, "выплывающее" из левого края экрана
4 Вертикальное, "выплывающее" из правого края экрана
5 Вертикальное "раскрывающееся"
Тип списка
1. Односвязанный
2. Односвязанный циклический
3. Двухсвязанный
4. Двухсвязанный циклический
5. Двухстековая машина
Горячие клавиши:
Для всех вариантов: вызов меню <F10>, вызов помощи <F1>
Варианты
Выбор активного окна:
следующее <F5>
предыдущее (только для двухсвязанного списка) <F6>
первое <F2>
последнее (только для двухсвязанного списка) <F3>
Изменение положения окна: стрелки
Изменение цвета окна <F4>
Выбор активного окна:
следующее <n>
предыдущее (только для двухсвязанного списка) <p>
первое <f>
последнее (только для двухсвязанного списка) <e>
Изменение положения окна: стрелки
Изменение цвета окна <c>
Выбор активного окна:
следующее <PgDn>
предыдущее (только для двухсвязанного списка) <PgUp>
первое <Home>
последнее (только для двухсвязанного списка) <End>
Изменение положения окна: стрелки
Изменение цвета окна <Ins>
Таблица вариантов
№ варианта |
Тип меню |
Тип списка |
Горячие клавиши |
Группа |
ФИО |
1 |
1 |
1 |
1 |
|
|
2 |
2 |
1 |
2 |
|
|
3 |
3 |
1 |
3 |
|
|
4 |
4 |
2 |
1 |
|
|
5 |
5 |
2 |
2 |
|
|
6 |
1 |
2 |
3 |
|
|
7 |
2 |
3 |
1 |
|
|
8 |
3 |
3 |
2 |
|
|
9 |
4 |
3 |
3 |
|
|
10 |
5 |
4 |
1 |
|
|
11 |
1 |
4 |
2 |
|
|
12 |
2 |
4 |
3 |
|
|
13 |
3 |
5 |
1 |
|
|
14 |
4 |
5 |
2 |
|
|
15 |
5 |
5 |
3 |
|
|