Автор работы: Пользователь скрыл имя, 18 Июня 2013 в 23:17, курсовая работа
Данная программа будет незаменима организаторам подобных мероприятий. Целью курсового проекта является разработка аналитической системы, в которой должны поддерживаться режимы учета зрителей и выступающих, их произведений, жанра, творческого багажа, порядка проведения. Система будет реализована на основе языка программирования C++ и библиотеки MFC. Для достижения намеченной цели необходимо будет решить следующие задачи:
Введение
1. Задание на разработку
2. Анализ предметной области
3. Разработка оконного приложения
3.1. Разработка информационной модели предметной области
3.2. Выбор и описание средств проектирования
3.3. Реализация приложения
4.Результаты тестирования
Заключение
Список использованных источников
Приложение А. Внешний вид основного окна приложения
Приложение Б. Программный код проекта
Таблица 1 –Переменные, планируемые к использованию
Имя переменной |
Описание |
Тип данных |
Familiya |
Фамилия поэта или зрителя |
Текстовый |
Imya |
Имя поэта или зрителя |
Текстовый |
Otchestvo |
Отчество поэта или зрителя |
Текстовый |
Zhanr |
Жанр произведения |
Текстовый |
Poets |
Фамилии поэтов |
Текстовый |
Ochered |
Очередь участника |
Числовой |
Proiz |
Название произведения |
Текстовый |
Окно приложения должно обеспечивать необходимые функции системы, связи между ее компонентами, его модель может выглядеть как на рисунке 1:
Рисунок 1 – Главное окно программы
Главное окно программы разделено на 2 области. Первая область предусматривает занесение основных сведений об участниках конкурса или зрителях. Вторая область нужна просмотра творческого багажа поэтов.
Так для добавления фамилии, имени, отчества поэта или зрителя, очереди или произведения, с которым будет выступать участник, нужно ввести необходимые данные в соответствующие поля. Так как жанр это исторически сложившиеся группы литературных произведений, то они заранее известны, а значит есть возможность создания комбинированного списка для выбора основных видов жанра. Так же у постоянных участников конкурса накапливается творческих багаж. Им заводится уникальная HTML-страничка с фамилией, именем, отчеством, фотографией и работами поэта. Для того чтобы перейти на страничку поэта на главном окне программы используется комбинированный список с фамилиями. Так же присутствуют два переключателя. При выборе переключателя Зритель поля: Очередь, произведение и жанр становятся неактивными, так как выступать могут только участники конкурса.
При нажатии кнопки Запись данные введенные в поля ввода или выбранные в комбинированном списке будут занесены в текстовый файл, который будет являться базой данных для данной системы, являющийся базой данный для этой системы.
Нажав кнопку Следующий, главное
окно обновляется, поля ввода и комбинированные
списки примут начальные значения.
Это позволит быстрее перейти
к записи нового посетителя конкурса.
При нажатии пользователем
3.2 Выбор и описание средств проектирования
MFC является альтернативой
MFC - это инструмент для
Библиотека MFC содержит большую иерархию
классов, написанных на С++. На иерархии
вершине находится класс
Если указатель или ссылка ссылается на объект, производный от класса CObject, то в этом случае предусмотрен механизм определения реального типа объекта с помощью макроса RUNTIME_CLASS(). Хотя в С++ имеется механизм RTTI, механизм, реализованный в MFC, намного более эффективен по производительности.
Каждый класс, производный от CObject, может по запросу проверить свое внутреннее состояние и выдать диагностическую информацию. Это интенсивно используется в MFC при отладке.
Сериализация - это механизм, позволяющий
преобразовать текущее
Некоторые классы порождаются непосредственно от CObject. Наиболее широко используемыми среди них являются CCmdTarget, CFile, CDC, CGDIObject и CMenu. Класс ССmdTarget предназначен для обработки сообщений. Класс СFile предназначен для работы с файлами. Класс CDC обеспечивает поддержку контекстов устройств. Об контекстах устройств мы будем говорить несколько позднее. В этот класс включены практически все функции графики GDI. CGDIObject является базовым классом для различных DGI-объектов, таких как перья, кисти, шрифты и другие. Класс СMenu предназначен для манипуляций с меню. От класса CCmdTarget порождается очень важный класс CWnd. Он является базовым для создания всех типов окон, включая масштабируемые ("обычные") и диалоговые, а также различные элементы управления. Наиболее широко используемым производным классом является CFrameWnd. Как Вы увидите в дальнейшем, в большинстве программ главное окно создается с помощью именно этого класса.
От класса CCmdTarget, через класс CWinThread, порождается, наверное, единственный из наиболее важных классов, обращение к которому в MFC-программах происходит напрямую: CWinApp. Это один из фундаментальных классов, поскольку предназначен для создания самого приложения. В каждой программе имеется один и только один объект этого класса. Как только он будет создан, приложение начнет выполняться.
Большинство функций, вызываемых в MFC-программе, являются членами одного из классов, определенных в библиотеке. Большинство функций API доступны через функции-члены MFC. Тем не менее, всегда можно обращаться к функциям API напрямую. Иногда это бывает необходимым, но все же в большинстве случаев удобнее использовать функции-члены MFC.
В библиотеке есть ряд глобальных
функций. Все они начинаются с
префикса Afx. (Когда MFC только разрабатывалась,
то проект назывался AFX, Application Framework. После
ряда существенных изменений AFX была переработана
в MFC, но прежнее название сохранилось
во многих идентификаторах библиотеки
и в названиях файлов.) Например,
очень часто используется функция
AfxMessageBox(), отображающая заранее определенное
окно сообщения. Но есть и член-функция
MessageBox(). Таким образом, часто глобальные
функции перекрываются
Все MFC-программы включают заголовочный файл AFXWIN.H. В нем, а также в различных вспомогательных файлах, содержатся описания классов, структур, переменных и других объектов MFC. Он автоматически подключает большинство заголовочных файлов, относящихся к MFC, в том числе и WINDOWS.H, в котором определены все функции Windows API и другие объекты, которые используются при традиционном программировании на С и "чистом" API.
В простейшем случае программа, написанная с помощью MFC, содержит два класса, порождаемые от классов иерархии библиотеки: класс, предназначенный для создания приложения, и класс, предназначенный для создания окна. Другими словами, для создания минимальной программы необходимо породить один класс от CWinApp, а другой - от CFrameWnd. Эти два класса обязательны для любой программы .
API функции
Большинство функций, вызываемых в MFC-программе, являются членами одного из классов, определенных в библиотеке. Большинство функций API доступны через функции-члены MFC. Тем не менее, всегда можно обращаться к функциям API напрямую. Иногда это бывает необходимым, но все же в большинстве случаев удобнее использовать функции-члены MFC.
Глобальные функции AFX
В библиотеке есть ряд глобальных
функций. Все они начинаются с
префикса Afx. Когда MFC только разрабатывалась,
то проект назывался AFX, Application Framework. После
ряда существенных изменений AFX была переработана
в MFC, но прежнее название сохранилось
во многих идентификаторах библиотеки
и в названиях файлов. Например,
очень часто используется функция
AfxMessageBox(), отображающая заранее определенное
окно сообщения. Но есть и член-функция
MessageBox(). Таким образом, часто глобальные
функции перекрываются
Все MFC-программы включают заголовочный файл AFXWIN.H. В нем, а также в различных вспомогательных файлах, содержатся описания классов, структур, переменных и других объектов MFC. Он автоматически подключает большинство заголовочных файлов, относящихся к MFC, в том числе и WINDOWS.H, в котором определены все функции Windows API и другие объекты, которые используются при традиционном программировании на С и "чистом" API.
Windows взаимодействует с программой, посылая ей сообщения.
Цикл сообщений
Все приложения Windows должны организовать так называемый цикл сообщений (обычно внутри функции WinMain()). В этом цикле каждое необработанное сообщение должно быть извлечено из очереди сообщений данного приложения и передано назад в Windows, которая затем вызывает функцию окна программы с данным сообщением в качестве аргумента. В традиционных Windows-программах необходимо самостоятельно создавать и активизировать такой цикл. При использовании MFC это также выполняется автоматически. Однако важно помнить, что цикл сообщений все же существует. Он является неотъемлемой частью любого приложения Windows.
Создание приложения с помощью Visual C++
О принципах устройства приложения рассказывалось выше. Теперь рассмотрим, как оно создается с помощью Visual C++. Сначала разберем одно важное понятие - проект. До сих пор приложение рассматривалось, как только как совокупность объектов базовых и производных классов. Но для обеспечения работы приложения требуется нечто большее - наряду с описанием классов необходимо описание ресурсов, связанных с приложением, нужна справочная система и т.п. Термин "проект" как раз и используется, когда имеется в виду такой общий взгляд на приложение.
В среде Visual C++ можно строить различные
типы проектов. Такие проекты после
их создания можно компилировать
и запускать на исполнение. Фирма
Microsoft разработала специальный
Инструментальное средство - ClassWizard (мастер классов)
Создаваемый остов приложения составлен
так, что в дальнейшей работе с
проектом можно использовать другое
инструментальное средство - ClassWizard (мастер
классов), предназначенное для создания
остовов новых производных
Средство ClassWizard предоставляет широкий
спектр услуг. Он позволяет не только
добавлять к существующему
Создание нового класса
При помощи ClassWizard можно добавить новый класс, созданный на основе базовых классов. В качестве базового класса можно использовать классы, наследованные от класса CCmdTarget или класса CRecordset . Для наследования классов от других базовых классов использовать средства ClassWizard нельзя. Такие классы надо создавать вручную, непосредственно в текстовом редакторе.
Полученная заготовка класса полностью работоспособна. Ее можно дополнить по своему усмотрению новыми методами и данными. Эту работу можно выполнить вручную, но гораздо лучше и проще воспользоваться услугами ClassWizard. За счет использования ClassWizard процедура создания собственного класса значительно ускоряется и уменьшается вероятность совершить ошибку во время объявления методов.