Разработка Windows - приложения "Калькулятор" с использованием MFC
Автор работы: Пользователь скрыл имя, 02 Апреля 2014 в 20:56, курсовая работа
Краткое описание
В данном курсовом проекте на тему «Разработка Windows-приложения «Калькулятор» с использованием MFC» критерием выполнения поставленной задачи является программный продукт, выполняющий все арифметические операции, как и в калькуляторе встроенному в Windows (в режиме «обычный»). Для разработки приложений была выбрана среда программирования Microsoft Visual Studio 2008.
Содержание
ВВЕДЕНИЕ……………………………………………...………………….5 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗРАБОТКИ WINDOWS-ПРИЛОЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ БИБЛИОТЕКИ MFC…………..….6 1.1. Общие сведения………………………………………………………..6 1.2. Библиотека MFC……………………………………………………...11 1.3. Проектирование приложений в среде Microsoft Visual C++………14 2. СПЕЦИФИКАЦИЯ ПРОГРАММЫ ……………….………………....20 2.1. Описание программы………………………………………………...20 2.2. Функциональное назначение………………………………………...20 2.3. Описание логической структуры приложения……………………..21 2.4. Требования к техническому обеспечению………………………….23 2.5. Установка и запуск программы……………………………………..23 2.6. Входные и выходные данные………………………………………..24 2.7. Тестирование программы……………………………………………24 ЗАКЛЮЧЕНИЕ………………………….………………………………..25 СПИСОК ЛИТЕРАТУРЫ…………………………………..…………….26 ПРИЛОЖЕНИЕ 1………………………………………..………………..27 ПРИЛОЖЕНИЕ 2……………………………………………..…………..28
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И
НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ
АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«СЕВЕРО-КАВКАЗСКИЙ ФЕДЕРАЛЬНЫЙ
УНИВЕРСИТЕТ»
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
К КУРСОВОМУ ПРОЕКТУ
ПО ДИСЦИПЛИНЕ «Технология
программирования»
НА ТЕМУ: «РАЗРАБОТКА
WINDOWS-ПРИЛОЖЕНИЯ «КАЛЬКУЛЯТОР» С ИСПОЛЬЗОВАНИЕМ
MFC»
Выполнил студент II курса
Специальность 230201.65
«Информационные системы
и технологии»
гр. ИС-101
Б.Н. Иноземцев
Работа защищена с оценкой
________________________________
Комиссия:
Мезенцева О.С.
Дроздова В.И.
Николаев Е.И.
Крахоткина Е.В.
Ставрополь 2012
АННОТАЦИЯ
В данном курсовом проекте на
тему «Разработка Windows-приложения «Калькулятор»
с использованием MFC» критерием выполнения
поставленной задачи является программный
продукт, выполняющий все арифметические
операции, как и в калькуляторе встроенному
в Windows (в режиме «обычный»). Для разработки
приложений была выбрана среда программирования
Microsoft Visual Studio 2008.
Пояснительная записка содержит
47 страниц, 2 таблицы, 2 рисунка и 2 приложения.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ……………………………………………...………………….5
1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗРАБОТКИ
WINDOWS-ПРИЛОЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ БИБЛИОТЕКИ
MFC…………..….6
1.1. Общие сведения………………………………………………………..6
1.2. Библиотека MFC……………………………………………………...11
1.3. Проектирование приложений
в среде Microsoft Visual C++………14
2.3. Описание логической
структуры приложения……………………..21
2.4. Требования к техническому
обеспечению………………………….23
2.5. Установка и запуск
программы……………………………………..23
2.6. Входные и выходные
данные………………………………………..24
2.7. Тестирование программы……………………………………………24
ЗАКЛЮЧЕНИЕ………………………….………………………………..25
СПИСОК ЛИТЕРАТУРЫ…………………………………..…………….26
ПРИЛОЖЕНИЕ 1………………………………………..………………..27
ПРИЛОЖЕНИЕ 2……………………………………………..…………..28
ВВЕДЕНИЕ
Microsoft Visual Studio 2008 является мощным
инструментом для создания приложений
под Windows. Среда разработки позволяет создавать
разного рода программы. От консольных
до DirectX, от простой DLL до ActiveX. Язык C++, который
является базовым в Microsoft Visual C++, имеет
большие возможности. В принципе программу
любой сложности можно написать на любом
языке программирования и с использованием
любой среды программирования. Это, конечно,
так, но хорошая среда программирования
отличается от плохой тем, что в ней на
программирование той же самой задачи
будет затрачено меньше времени, а получившаяся
в результате программа будет работать
быстрее и надежнее. Для создания подобной
среды программирования необходимо досконально
изучить окружение, в котором будет работать
скомпилированная программа, а кто изучил
ОС Windows лучше ее разработчиков? Кроме
того, фирма Microsoft не опубликовала подробного
описания своего творения. Поэтому пользователь,
скорее всего, оценит возможности, предоставляемые
библиотекой базовых классов (Microsoft Foundation
Classes, MFC) Visual C++.
1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗРАБОТКИ
WINDOWS-ПРИЛОЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ БИБЛИОТЕКИ
MFC
1.1 Общие сведения
В связи с тем, что сегодня уровень
сложности программного обеспечения очень
высок, разработка приложений Windows с использованием
только какого-либо языка программирования
(например, языка C) значительно затрудняется.
Программист должен затратить массу времени
на решение стандартных задач по созданию
многооконного интерфейса. Реализация
технологии связывания и встраивания
объектов - OLE - потребует от программиста
еще более сложной работы.
Чтобы облегчить работу программиста
практически все современные компиляторы
с языка C++ содержат специальные библиотеки
классов. Такие библиотеки включают в
себя практически весь программный интерфейс
Windows и позволяют пользоваться при программировании
средствами более высокого уровня, чем
обычные вызовы функций. За счет этого
значительно упрощается разработка приложений,
имеющих сложный интерфейс пользователя,
облегчается поддержка технологии OLE и
взаимодействие с базами данных.
Современные интегрированные
средства разработки приложений Windows позволяют
автоматизировать процесс создания приложения.
Для этого используются генераторы приложений.
Программист отвечает на вопросы генератора
приложений и определяет свойства приложения
- поддерживает ли оно многооконный режим,
технологию OLE, трехмерные органы управления,
справочную систему. Генератор приложений,
создаст приложение, отвечающее требованиям,
и предоставит исходные тексты. Пользуясь
им как шаблоном, программист сможет быстро
разрабатывать свои приложения.
Подобные средства автоматизированного
создания приложений включены в компилятор
Microsoft Visual C++ и называются MFC AppWizard. Заполнив
несколько диалоговых панелей, можно указать
характеристики приложения и получить
его тексты, снабженные обширными комментариями.
MFC AppWizard позволяет создавать однооконные
и многооконные приложения, а также приложения,
не имеющие главного окна, - вместо него
используется диалоговая панель. Можно
также включить поддержку технологии
OLE, баз данных, справочной системы.
Конечно, MFC AppWizard не всесилен.
Прикладную часть приложения программисту
придется разрабатывать самостоятельно.
Исходный текст приложения, созданный
MFC AppWizard, станет только основой, к которой
нужно подключить остальное. Но работающий
шаблон приложения - это уже половина всей
работы. Исходные тексты приложений, автоматически
полученных от MFC AppWizard, могут составлять
сотни строк текста. Набор его вручную
был бы очень утомителен.
Нужно отметить, что MFC AppWizard
создает тексты приложений только с использованием
библиотеки классов MFC (Microsoft Foundation Class
library). Поэтому только изучив язык C++ и библиотеку
MFC, можно пользоваться средствами автоматизированной
разработки и создавать свои приложения
в кратчайшие сроки.
MFC - это базовый набор (библиотека)
классов, написанных на языке С++ и предназначенных
для упрощения и ускорения процесса программирования
под Windows. Перед изучением библиотеки MFC
и ее использованием для создания Windows-приложений,
следует вспомнить, как работает сама
Windows и каковы принципы взаимодействия
программ с ней, какова структура типичной
Windows-программы.
Благодаря интерфейсу вызовов
функций в Windows доступ к системным ресурсам
осуществляется через целый рад системных
функций. Совокупность таких функций называется
прикладным программным интерфейсом,
или API (Application Programming Interfase). Для взаимодействия
с Windows приложение запрашивает функции
API, с помощью которых реализуются все
необходимые системные действия, такие
как выделение памяти, вывод на экран,
создание окон и т.п.
Библиотека MFC инкапсулирует
многие функции API. Хотя программам и разрешено
обращаться к ним напрямую, все же чаще
это будет выполняться через соответствующие
функции-члены. Как правило, функции-члены
либо аналогичны функциям API, либо непосредственно
обращаются к нужной части интерфейса.
Поскольку API состоит из большого
числа функций, может сложиться впечатление,
что при компиляции каждой программы,
написанной для Windows, к ней подключается
код довольно значительного объема. В
действительности это не так. Функции
API содержатся в библиотеках динамической
загрузки (Dynamic Link Libraries, или DLL), которые
загружаются в память только в тот момент,
когда к ним происходит обращение, т.е.
при выполнении программы. Рассмотрим,
как осуществляется механизм динамической
загрузки.
Динамическая загрузка обеспечивает
ряд существенных преимуществ. Во-первых,
поскольку практически все программы
используют API-функции, то благодаря DLL-библиотекам
существенно экономится дисковое пространство,
которое в противном случае занималось
бы большим количеством повторяющегося
кода, содержащегося в каждом из исполняемых
файлов. Во-вторых, изменения и улучшения
в Windows-приложениях сводятся к обновлению
только содержимого DLL-библиотек. Уже существующие
тексты программ не требуют перекомпиляции.
В настоящее время широко распространены
две версии API. Первая называется Win16 и
представляет собой 16-разрядную версию,
используемую в Windows 3.1 Вторая, 32-разрядная
версия, называется Win32 и используется
в Windows 95 и Windows NT. Win32 является надмножеством
для Win16 (т.е. фактически включает в себя
этот интерфейс), так как большинство функций
имеет то же название и применяется аналогичным
образом. Однако, будучи в принципе похожими,
оба интерфейса все же отличаются друг
от друга. Win32 поддерживает 32-разрядную
линейную адресацию, тогда как Win16 работает
только с 16-разрядной сегментированной
моделью памяти. Это привело к тому, что
некоторые функции были модифицированы
таким образом, чтобы принимать 32-разрядные
аргументы и возвращать 32-разрядные значения.
Часть из них пришлось изменить с учетом
32-разрядной архитектуры. Была реализована
поддержка потоковой многозадачности,
новых элементов интерфейса и прочих нововведений
Windows.
Так как Win32 поддерживает полностью
32-разрядную адресацию, то логично, что
целые типы данных (intergers) также объявлены
32-разрядными. Это означает, что переменные
типа int и unsignerd будут иметь длину 32 бита,
а не 16, как в Windows 3.1 Если же необходимо
использовать переменную или константу
длиной 16 бит, они должны быть объявлены
как short. (дальше будет показано, что для
этих типов определены независимые typedef-имена.)
Следовательно, при переносе программного
кода из 16-разрядной среды необходимо
убедиться в правильности использования
целочисленных элементов, которые автоматически
будут расширены до 32 битов, что целочисленных
элементов, которые автоматически будут
расширены до 32 битов, что может привести
к появлению побочных эффектов.
Другим следствием 32-разрядной
адресации является то, что указатели
больше не нужно объявлять как near и far.
Любой указатель может получить доступ
к любому участку памяти. В Windows 95 и Windows
NT константы near и far объявлены (с помощью
директивы #define) пустыми.
Одним из подмножеств API является
GDI (Graphics Device Interfase - интерфейс графического
устройства). GDI - это та часть Windows, которая
обеспечивает поддержку аппаратно-независимой
графики. Благодаря функциям GDI Windows-приложение
может выполняться на самых различных
компьютерах.
Как известно, все версии Windows
поддерживают многозадачность. В Windows
3.1 имеется только один тип многозадачности
- основанный на процессах. В более передовых
системах, таких как Windows 95 и Windows NT, поддерживается
два типа многозадачности: основанный
на процессах и основанный на потоках.
Давайте рассмотрим их чуть подробнее.
Процесс - это программа, которая
выполняется. При многозадачности такого
типа две или более программы могут выполняться
параллельно. Конечно, они по очереди используют
ресурсы центрального процессора и с технической
точки зрения, выполняются неодновременно,
но благодаря высокой скорости работы
компьютера это практически незаметно.
Поток - это отдельная часть
исполняемого кода. Название произошло
от понятия “направление протекания процесса”.
В многозадачности данного типа отдельные
потоки внутри одного процесса также могут
выполняться одновременно. Все процессы
имеют по крайней мере один поток, но в
Windows 95 и Windows NT их может быть несколько.
Отсюда можно сделать вывод,
что в Windows 95 и Windows NT допускается существование
процессов, две или более частей которых
выполняются одновременно. Оказывается,
такое предположение верно. Следовательно,
при работе в этих операционных системах
возможно параллельное выполнение, как
программ, так и отдельных частей самих
программ. Это позволяет писать очень
эффективные программы.
Есть и другое существенное
различие между многозадачностями Windows
3.1 и Windows 95/NT. В Windows 3.1 используется неприоритетная
многозадачность. Это означает, что процесс,
выполняющийся в данный момент, получает
доступ к ресурсам центрального процессора
и удерживает их в течение необходимого
ему времени. Таким образом, неправильно
выполняющаяся программа может захватить
все ресурсы процессора и не давать выполняться
другим процессам. В отличие от этого в
Windows 95 и Windows NT используется приоритетная
многозадачность. В этом случае каждому
активному потоку предоставляется определенный
промежуток времени работы процессора.
По истечению данного промежутка управление
автоматически передается следующему
потоку. Это не дает возможность программам
полностью захватывать ресурсы процессора.
Интуитивно должно быть понятно, что такой
способ более предпочтителен.
Во многих операционных системах
взаимодействие между системой и программой
инициализирует программа. Например, в
DOS программа запрашивает разрешение на
ввод и вывод данных. Говоря другими словами,
не - Windows-программы сами вызывают операционную
систему. Обратного процесса не происходит.
В Windows все совершенно наоборот: именно
система вызывает программу. Это осуществляется
следующим образом: программа ожидает
получения сообщения от Windows. Когда это
происходит, то выполняется некоторое
действие. После его завершения программа
ожидает следующего сообщения.
Windows может посылать программе
сообщения множества различных типов.
Например, каждый раз при щелчке мышью
в окне активной программы посылается
соответствующее сообщение. Другой тип
сообщений посылается, когда необходимо
обновить содержимое активного окна. Сообщения
посылаются также при нажатии клавиши,
если программа ожидает ввода с клавиатуры.
Необходимо запомнить одно: по отношению
к программе сообщения появляются случайным
образом. Вот почему Windows-программы похожи
на программы обработки прерываний: невозможно
предсказать, какое сообщение появиться
в следующий момент [8].