Разработка приложения, позволяющего проводить тестирование по разделу «Логарифмы»
Добавление кода приложения к каркасу реализовано двумя способами. Первый использует механизм наследования: основные программные структуры каркаса представлены в виде классов наследуемых от библиотечных. В этих классах предусмотрено множество виртуальных функций вызываемых в определенный момент работы программы. Путем доопределения (в большинстве случаев необходимо вызвать функцию базового класса… Читать ещё >
Разработка приложения, позволяющего проводить тестирование по разделу «Логарифмы» (реферат, курсовая, диплом, контрольная)
- Введение
- 1. Разработка приложений в Visual Studio 2008
- 1.2 Новый пользовательский интерфейс
- 1.3 Эффективная совместная работа в группе
- 1.4 Microsoft .NET Framework 3.5
- 1.5 Требования к системе
- 1.6 Основы разработки Windows — приложений с использованием библиотеки MFC.
- 1.7 Принцип действия
- 1.8 Добавление кода в каркас приложения
- 1.9 История
- 2. Спецификация программы
- 2.1 Описание программы
- 2.2 Функциональное назначение
- 2.3 Описание логической структуры приложения
- 2.4 Требования к техническому обеспечению
- 2.5 Установка и запуск программы
- 2.6 Работа с приложением
- 2.7 Входные данные
- 2.8 Выходные данные
- 2.9 Описание тестовых прогонов
- Список используемой литературы
- Приложения
Visual Studio 2008 (кодовое имя Orcas; внутренняя версия 9.0) — выпущена 19 ноября 2007, одновременно с .NET Framework 3.5. Нацелена на создание приложений для ОС Windows Vista (но поддерживает и XP), Office 2007 и веб-приложений. Включает в себя LINQ, новые версии языков C# и Visual Basic. В студию не вошёл Visual J#. С 28 октября 2008 года впервые доступна версия на русском языке.
Visual Studio 2008 включает новые возможности, такие как наглядные средства разработки для более быстрой работы с .NET Framework 3.5, усовершенствованные средства разработки веб-приложений и улучшения языков, ускоряющие работу со всеми типами данных. В Visual Studio 2008 вы найдете все необходимые средства для создания ярких веб-приложений с поддержкой AJAX.
Вы сможете воспользоваться мощными клиентскими и серверными платформами для создания клиентских веб-приложений, выполняющихся во всех современных веб-обозревателях, легко интегрирующихся с серверными компонентами и имеющих полный доступ к службам приложений ASP.NET и платформе Майкрософт.
С помощью средств, включенных в состав Visual Studio 2008, можно создавать приложения для широкого спектра платформ — от так называемых разумных устройств (smart personal objects) до сотовых телефонов, планшетных компьютеров и настольных компьютеров и серверов.
1. Разработка приложений в Visual Studio 2008
Для более быстрой разработки в Visual Studio 2008 улучшены функции работы с языками и данными. Например, с помощью LINQ вы, как индивидуальные разработчики можете создавать решения, выполняющие анализ данных.
В Visual Studio 2008 возможно ориентироваться на различные версии .NET Framework в одной и той же среде разработки. Можно создавать приложения для .NET Framework 2.0, 3.0 или 3.5, то есть поддерживать множество проектов в одной среде.
1.2 Новый пользовательский интерфейс
Visual Studio 2008 содержит новые средства разработки, облегчающие создание подключаемых приложений на самых современных платформах, включая веб-приложения, приложения для Windows Vista, Office 2007, SQL Server 2008 и Windows Server 2008. В области веб ASP.NET AJAX и другие новые технологии Visual Studio 2008 позволят быстро создавать высокоэффективные интерактивные веб-интерфейсы.
1.3 Эффективная совместная работа в группе
Visual Studio 2008 предлагает усовершенствованные средства, помогающие наладить совместную деятельность в группах, включая инструменты для объединения в процессе разработки специалистов по базам данных и дизайнеров.
1.4 Microsoft .NET Framework 3.5
пользовательский интерфейс программа логарифм
Платформа .NET обеспечивает быстрое создание подключаемых приложений с удобным пользовательским интерфейсом благодаря набору готовых программных модулей для решения типовых задач программирования. Подключаемые приложения, построенные на платформе .NET Framework, обеспечивают моделирование бизнес-процессов и интеграцию систем в разнородной среде. Вместе Visual Studio и .NET Framework снижают надобность в написании общего связующего кода, сокращая время разработки и позволяя сосредоточить усилия на решении бизнес-задач.
1.5 Требования к системе
Visual Studio 2008 может быть установлена на следующие операционные системы:
· Windows Vista (x86 и x64) — все издания, за исключением Starter Edition;
· Windows XP (x86 и x64) с установленным пакетом обновлений Service Pack 2 или более поздней версии — все издания, за исключением Starter Edition;
· Windows Server 2003 (x86 и x64) с установленным пакетом обновлений Service Pack 1 или более поздней версии;
· Windows Server 2003 R2 (x86 или x64) или более поздней версии;
· Windows Server 2008 (x86 и x64).
· Для установки Visual Studio 2008 потребуется компьютер со следующими характеристиками:
· процессор с частотой не ниже 1,6 ГГц;
· минимум 384 Мбайт оперативной памяти (768 Мбайт или более для работы под Windows Vista);
· 2,2 Гбайт свободного пространства на жестком диске со скоростью не менее 5400 об./мин;
· дисплей с разрешением не менее 1024×768;
· привод DVD
1.6 Основы разработки Windows — приложений с использованием библиотеки MFC.
Пакет Microsoft Foundation Classes (MFC) — библиотека на языке C++, разработанная Microsoft и призванная облегчить разработку GUI — приложений для Microsoft Windows путем использования богатого набора библиотечных классов.
1.7 Принцип действия
Библиотека MFC, как и её основной конкурент, Borland VCL, облегчает работу с GUI путем создания каркаса приложения — «скелетной» программы, автоматически создаваемой по заданному макету интерфейса и полностью берущий на себя рутинные действия по его обслуживанию (отработка оконных событий, пересылка данных между внутренними буферами элементов и переменными программы и т. п.). Программисту после генерации каркаса приложение необходимо только вписать код в места, где требуются специальные действия. Каркас должен иметь вполне определенную структуру, поэтому для его генерации и изменения в Visual С++ предусмотрены мастера.
Кроме того, MFC предоставляет объектно-ориентированный слой оберток (англ. wrappers) над множеством функций Windows API, делающий несколько более удобной работу с ними. Этот слой представляет множество встроенных в систему объектов (окна, виджеты, файлы и т. п.) в виде классов и опять же берет на себя рутинные действия вроде закрытия дескрипторов и выделения/освобождения памяти[5].
1.8 Добавление кода в каркас приложения
Добавление кода приложения к каркасу реализовано двумя способами. Первый использует механизм наследования: основные программные структуры каркаса представлены в виде классов наследуемых от библиотечных. В этих классах предусмотрено множество виртуальных функций вызываемых в определенный момент работы программы. Путем доопределения (в большинстве случаев необходимо вызвать функцию базового класса) этих функций программист может добавлять выполнение в эти моменты своего кода.
Второй способ используется для добавления обработчиков оконных событий. Мастер создает внутри каркасов классов, связанных с окнами, специальные массивы — карты (оконных) сообщений (англ. massage map), содержащие пары «ИД сообщения — указатель на обработчик». При добавленииудалении обработчика мастер вносит изменения в соответствующую карту сообщений[6].
1.9 История
Первая версия MFC была выпущена вместе с седьмой версией 16-разрядного компилятора языка CC++ компании Microsoft 1992 году. Для тех, кто занимался разработкой приложений с использованием API-функций, пакет MFC обещал весьма значительное повышение производительности процесса программирования.
Одной из примечательных особенностей MFC является префикс «Afx», используемый в именах многих функций, макросов и названии стандартного заголовочного файла «stdafx.h». На ранней стадии разработки, то, что впоследствии стало называться MFC, имело название «Application Framework Extensions» и аббревиатуру «Afx». Решение изменить название на Microsoft Foundation Classes (MFC) было принято слишком поздно, чтобы менять упоминания Afx в коде.
Object Windows Library (OWL), разработанная компанией Borland для работы с собственным компилятором C++, была конкурирующим продуктом, представленным в тот же период. В конце концов Borland прекратила разработку OWL и приобрела краткосрочную лицензию на использование библиотек для работы с MFC, но так и не предложила полной поддержки MFC в своих продуктах. Позднее Borland выпустила VCL в качестве замены MFC.
Упор компании Microsoft на MFC был ослаблен в пользу Microsoft.NET Framework. Однако, несмотря на это, MFC по-прежнему остается популярной среди разработчиков.
В апреле 2008 года Microsoft выпустила, после многолетнего бездействия, значительное обновление к MFC под названием MFC Feature Pack. Это обновление предлагалось к установке как дополнение к Visual Studio 2008. В основе своей это были добавочные классы MFC, права на которые были приобретены у российской фирмы BGGSoft. В MFC включалась поддержка нового интерфейса Ribbon и несколько других усовершенствований, связанных с улучшенными интерфейсными элементами управления. После выпущенного пакета обновления для Visual Studio 2008 данные классы стали неотъемлемой частью MFC.
Таблица 1.1 — Версии
Версия продукта | Версия MFC | Год выхода | |
Microsoft CC++ 7.0 | MFC 1.0 | ||
Visual C++ 1.0 | MFC 2.0 (введена архитектура документ-представление) | ||
Visual C++ 1.5 | MFC 2.5 (реализована поддержка технологий ODBC и drag and drop) | ||
Visual C++ 1.52c | MFC 2.5 (последняя платформа разработки для MS Windows 3. x) | ||
Visual C++ 2.0 | MFC 3.0 (появилась возможность реализации многозадачности и поддержка Unicode) | ||
Visual C++ 2.1 | MFC 3.1 | ||
Visual C++ 2.2 | MFC 3.2 | ||
Visual C++ 4.0 | MFC 4.0 (mfc40.dll включена в состав Windows 95) | Август 1995 | |
Visual C++ 4.1 | MFC 4.1 | ||
Visual C++ 4.2 | MFC 4.2 (mfc42.dll включена в первоначальный выпуск Windows 98) | Март 1998 | |
eMbedded Visual C++ 3.0 | MFC 4.2 (mfc42.dll) | ||
Visual C++ 5.0 | MFC 4.21 (mfc42.dll) значительное обновление MFC 4.2 | ||
Visual C++ 6.0 | MFC 6.0 (mfc42.dll) | ||
eMbedded Visual C++ 4.0 | MFC 6.0 (mfcce400.dll) | ||
Visual C++.NET 2002 (Visual C++ 7.0) | MFC 7.0 (mfc70.dll),.NET 1.0 | Февраль 2002 | |
Visual C++ 2003 (Visual C++ 7.1) | MFC 7.1 (mfc71.dll),.NET 1.1 | Апрель 2003 | |
Visual C++ 2005 (Visual C++ 8.0) | MFC 8.0 (mfc80.dll),.NET 3.5 | Октябрь 2005 | |
Visual C++ 2008 (Visual C++ 9.0) | MFC 9.0.21 022 (mfc90.dll),.NET 3.5 | Ноябрь 2007 | |
Visual C++ 2008 with Feature Pack | MFC 9.0.30 411 (mfc90.dll) | Апрель 2008 | |
Visual C++ 2008 SP1 | MFC 9.0.30 729 (mfc90.dll) | Август 2008 | |
Visual C++ 2008 Security Update (KB971092) | MFC 9.0.30 729.4148 (mfc90.dll) | Июль 2009 | |
Visual C++ 2010 | MFC 10.0.30 319.1 (mfc100.dll),.NET 4.0 | Апрель 2010 | |
2. Спецификация программы
2.1 Описание программы
Windows-приложение, разработанное в среде программирования Microsoft Visual Studio 2008 на языке Visual C++ c использованием библиотеки MFC. Задача программы протестировать знания пользователя по разделу математики «логарифмы». Программа задаст пользователю 20 вопросов. Оценка знаний производится по 100 бальной шкале. Максимальный балл вопроса указан в каждом варианте. Также программа содержит дату начала тестирования и ссылку на сайт создателя программы
2.2 Функциональное назначение
При запуске программы открывается главное окно программы (рис. 2.1), в котором имеются кнопки начала тестирования и выхода из программы, число проведения тестирования, приветствие, ссылка на сайт производителя, а по завершению тестирования отображается количество набранных баллов.
Рисунок 2.1 — Главное окно программы
По нажатию на кнопку начать тестирование открывается окно вопроса (рис. 2.1), разделенное на несколько областей номер вопроса, вопрос, варианты ответов, кнопки «Дальше», «Пропустить» и область в которой показано максимальное количество баллов за ответ.
Рисунок 2.2 — Окно вопроса предполагающий 1 вариант ответа
В программе реализовано 2 вида вопросов — предполагающие один правильный ответ (рис. 2.2) и предполагающие выбор нескольких вариантов ответа (рис. 2.3).
Рисунок 2.3 — Окно вопроса предполагающий несколько ответов
По завершению 20-ти вопросов в главном окне программы показываются баллы заработанные пользователем (рис. 4).
Рисунок 2.4 — Пример вывода результатов тестирования
2.3 Описание логической структуры приложения
Приложение разработано в среде Microsoft Visual Studio 2008 и отвечает всем принципам объектно-ориентированного программирования. Оно создано на базе диалогового приложения.
Разработаны формы главного окна и формы 20 вопросов. Для каждой разработанной формы, спроектирован собственный класс, производящий обработку действий пользователя. Иерархия разработанных классов показана в Приложении А. Код класса СProgrammTestDlg, спецификация которого представлена в таблице 2.1, показан в Приложении Б.
Таблица 2.1. — Спецификация класса СProgrammTestDlg
Атрибут | Способ доступа | Назначение | |
OnBnClickedButton1() | Protected | Открывает диалоговые окна вопросов, обрабатывает результаты выполненных пользователем действий | |
OnBnClickedCancel () | Protected | Закрывает программу тестирования | |
OnPaint () | Protected | Отвечает за перерисовку окна и вывод результатов. | |
2.4 Требования к техническому обеспечению Для работы с Windows-приложением необходим персональный компьютер со следующими характеристиками: процессор Intel с тактовой частотой 1000 МГц и выше, оперативная память — не менее 512 Мбайт, свободное дисковое пространство — не менее 500 Мбайт, дисковод, монитор с диагональю не менее 17 .
Программное обеспечение — операционная система 2000 / XP / 2003.
2.5 Установка и запуск программы Для успешной работы с приложением, должны быть выполнены системные требования и установлен NetFramework 3.5, убедившись в соответствии необходимо скопировать на жесткий диск файл ProgrammTest.exe. Запуск программы осуществляется, привычным для Windows пользователей образом, а именно двойным щелчком по файлу ProgrammTest.exe.
2.6 Работа с приложением После запуска приложения, в открывшимся главном окне программы необходимо нажать кнопку «Начать тестирование», затем в открывающихся окнах вопросов, необходимо выбирать ответы, и нажимать кнопку далее. В случае не выбора ни одного ответа, либо нажатии кнопки «Пропустить», баллы не начисляются.
2.7 Входные данные В качестве входных данных программа принимает ответы пользователя на вопросы, путем обработки элементов управления, таких как «Радио кнопка» и «Флажок».
2.8 Выходные данные На главной форме в текстовом поле выводится количество набранных пользователем баллов. Максимальное значение которых равно 100, а минимальное значение равно 0.
2.9 Описание тестовых прогонов При запуске программы открывается главное окно программы (рис. 2.5), в котором имеются кнопки начала тестирования и выхода из программы, число проведения тестирования, приветствие, ссылка на сайт производителя, а по завершению тестирования отображается количество набранных баллов.
Рисунок 2.5 — Главное окно программы По нажатию на кнопку начать тестирование открывается окно вопроса 1 (рис. 2.6).
Рисунок 2.6 — Окно вопроса 1
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 2 (рис. 2.7).
Рисунок 2.7 — Окно вопроса 2
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 3 (рис. 2.8).
Рисунок 2.8 — Окно вопроса 3
По нажатию на кнопку начать тестирование открывается окно вопроса 4 (рис. 2.9).
Рисунок 2.9 — Окно вопроса 4
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 5 (рис. 2.10).
Рисунок 2.10 — Окно вопроса 5
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 6 (рис. 2.11).
Рисунок 2.11 — Окно вопроса 6
По нажатию на кнопку начать тестирование открывается окно вопроса 7 (рис. 2.12).
Рисунок 2.12 — Окно вопроса 7
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 8 (рис. 2.13)
Рисунок 2.13 — Окно вопроса 8
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 9 (рис. 2.14).
Рисунок 2.14 — Окно вопроса 9
По нажатию на кнопку начать тестирование открывается окно вопроса 10 (рис. 2.15).
Рисунок 2.15 — Окно вопроса 10
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 11 (рис. 2.16).
Рисунок 2.16 — Окно вопроса 11
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 12 (рис. 2.17).
Рисунок 2.17 — Окно вопроса 12
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 13 (рис. 2.18).
Рисунок 2.18 — Окно вопроса 13
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 14 (рис. 2.19).
Рисунок 2.19 — Окно вопроса 14
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 15 (рис. 2.20).
Рисунок 2.20 — Окно вопроса 15
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 16 (рис. 2.21).
Рисунок 2.21 — Окно вопроса 16
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 17 (рис. 2.22).
Рисунок 2.22 — Окно вопроса 17
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 18 (рис. 2.23).
Рисунок 2.23 — Окно вопроса 18
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 19 (рис. 2.24).
Рисунок 2.24 — Окно вопроса 19
По нажатию кнопки «Дальше» или «Пропустить» открывается окно вопроса 20 (рис. 2.25).
Рисунок 2.25 — Окно вопроса 20
По завершению 20-ти вопросов в главном окне программы показываются баллы заработанные пользователем (рис. 2.26).
Рисунок 2.26 — Главная форма по завершению тестирования Во время тестирования ошибок не обнаружено.
Заключение
При выполнении данной курсового проекта было разработано Windows-приложение, которое позволяет проводить тестирование знаний по разделу математики «Логарифмы». Для создания приложения была изучена тема программирования на языке Visual С++, а также выучены многие методы классов библиотеки MFC и разобран метод визуального программирования. Было создан дополнительный класс диалоговых окон. Изучена работа с ClassWizard, визуальным оформлением проекта. Над созданным программным продуктом были проведены тестовые прогоны с использованием различных исходных данных. В результате ошибок не было обнаружено. При разработке курсового проекта были углублены знания в области визуального программирования.
Список используемой литературы
1. Кэйт Грегори Использование Visual С++6. Специальное издание.: СПб.; «Вильямс», 2003 — 864стр.
2. О. С. Мезенцева, В. В. Кушнарев. Методические указания по курсовому проектированию по дисциплине «Высокоуровневые методы информатики и программирования». Ставрополь, 2002
3. А. Мешков, Ю.Тихомиров. Visual C++ и MFC. 2-е изд.перераб. и доп. — СПб.: БХВ-Петербург, 2003. — 1040стр.
4. Ю. Олафсен MFC и Visual C++6. Диа-Софт, Киев, 2003
5. Г. Шилдт Программирование на BORLAND C++ для профессионалов/Пер. англ. А. И. Филимонов; - Мн.: ООО «Попурри», 1999. — 800 с.
6. С. Холзнер Microsoft Visual C++ 6 с самого начала — СПб: Питер, 2000 г.
7. К. Паппас, У. Мюррей Полное руководство по Visual C++.-Мн.:ООО «Поппури», 1999г
8. С. Гилберт, Б.Маккарти. Программирование на Visual C++. Этюды профессионалов. Диа-Софт, Киев, 1998.
9. А.Черносвитов. Visual C++ и MFC, курс MCSD для профессионалов. СПб: Питер, 2000
10. И. Ю. Баженова. Visual C++6.0 (Visual Studio 98). Уроки программирования. М.:Диалог-МИФИ, 1999
Приложения
Приложение А
Иерархия классов.
Диаграмма классов
Приложение Б
Листинг программы.
// ProgrammTestDlg. cpp: implementation file
#include «stdafx.h»
#include «ProgrammTest.h»
#include «ProgrammTestDlg.h» \ подключение в библиотеки диалоговые окна
#include «Vopros1.h»
#include «Vopros2.h»
#include «Vopros3.h»
#include «Vopros4.h»
#include «Vopros5.h»
#include «Vopros6.h»
#include «Vopros7.h»
#include «Vopros8.h»
#include «Vopros9.h»
#include «Vopros10.h»
#include «Vopros11.h»
#include «Vopros12.h»
#include «Vopros13.h»
#include «Vopros14.h»
#include «Vopros15.h»
#include «Vopros16.h»
#include «Vopros17.h»
#include «Vopros18.h»
#include «Vopros19.h»
#include «Vopros20.h»
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CAboutDlg dialog used for App About
class CAboutDlg: public CDialog
{
public:
CAboutDlg ();
// Dialog Data
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange (CDataExchange* pDX); // DDX/DDV support
// Implementation
protected:
DECLARE_MESSAGE_MAP ()
};
CAboutDlg:CAboutDlg (): CDialog (CAboutDlg:IDD)
{
}
void CAboutDlg: DoDataExchange (CDataExchange* pDX)
{
CDialog:DoDataExchange (pDX);
}
BEGIN_MESSAGE_MAP (CAboutDlg, CDialog)
END_MESSAGE_MAP ()
// CProgrammTestDlg dialog
CProgrammTestDlg:CProgrammTestDlg (CWnd* pParent /*=NULL*/)
: CDialog (CProgrammTestDlg:IDD, pParent)
res (0)
m_text (_T (««))
{
m_hIcon = AfxGetApp ()->LoadIcon (IDR_MAINFRAME);
}
void CProgrammTestDlg: DoDataExchange (CDataExchange* pDX)
{
CDialog:DoDataExchange (pDX);
DDX_Text (pDX, IDC_EDIT1, m_text);
}
BEGIN_MESSAGE_MAP (CProgrammTestDlg, CDialog)
ON_WM_SYSCOMMAND ()
ON_WM_PAINT ()
ON_WM_QUERYDRAGICON ()
//}}AFX_MSG_MAP
ON_BN_CLICKED (IDC_BUTTON1, &CProgrammTestDlg:OnBnClickedButton1)
ON_BN_CLICKED (IDCLOSE, &CProgrammTestDlg:OnBnClickedClose)
ON_BN_CLICKED (IDCANCEL, &CProgrammTestDlg:OnBnClickedCancel)
END_MESSAGE_MAP ()
// CProgrammTestDlg message handlers
BOOL CProgrammTestDlg: OnInitDialog ()
{
CDialog:OnInitDialog ();
// Add «About…» menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT ((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT (IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu (FALSE);
if (pSysMenu ≠ NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString (IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty ())
{
pSysMenu->AppendMenu (MF_SEPARATOR);
pSysMenu->AppendMenu (MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application’s main window is not a dialog
SetIcon (m_hIcon, TRUE);// Set big icon
SetIcon (m_hIcon, FALSE);// Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CProgrammTestDlg: OnSysCommand (UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal ();
}
else
{
CDialog:OnSysCommand (nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CProgrammTestDlg: OnPaint ()
{
if (IsIconic ())
{
CPaintDC dc (this); // device context for painting
SendMessage (WM_ICONERASEBKGND, reinterpret_cast (dc.GetSafeHdc ()), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics (SM_CXICON);
int cyIcon = GetSystemMetrics (SM_CYICON);
CRect rect;
GetClientRect (&rect);
int x = (rect.Width () — cxIcon + 1) / 2;
int y = (rect.Height () — cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon (x, y, m_hIcon);
}
else
{
CDialog:OnPaint ();
}
}
// The system calls this function to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CProgrammTestDlg: OnQueryDragIcon ()
{
return static_cast (m_hIcon);
}
void CProgrammTestDlg: OnBnClickedButton1()
{
res=0;\обнуление переменной res (результат)
Vopros1 dlg1; \ объявление объекта
if (dlg1.DoModal ()==IDOK)\ подключение клавиши Дальше
{
res+=dlg1.m_otvet;*присвоение переменной res значения ответа 1 вопроса*
}
Vopros2 dlg2;
if (dlg2.DoModal ()==IDOK)
{
res+=dlg2.m_otvet; *присвоение переменной res значения ответа 2 вопроса*
}
Vopros3 dlg3;
if (dlg3.DoModal ()==IDOK)
{
if (dlg3.ch1==TRUE)* объявление переменной ch1 и в случае выбора этого ответа, присвоение значения переменной res*
{
res+=0;\присвоение значения переменной res
}
if (dlg3.ch2==TRUE)
{
res+=3;
}
if (dlg3.ch3==TRUE)
{
res+=0;
}
if (dlg3.ch4==TRUE)
{
res+=3;
}
}
Vopros4 dlg4;
if (dlg4.DoModal ()==IDOK)
{
res+=dlg4.m_otvet; *присвоение переменной res значения ответа 4 вопроса*
}
Vopros5 dlg5;
if (dlg5.DoModal ()==IDOK)
{
res+=dlg5.m_otvet; *присвоение переменной res значения ответа 5 вопроса*
}
Vopros6 dlg6;
if (dlg6.DoModal ()==IDOK)
{
res+=dlg6.m_otvet; *присвоение переменной res значения ответа 6 вопроса*
}
Vopros7 dlg7;
if (dlg7.DoModal ()==IDOK)
{
res+=dlg7.m_otvet; *присвоение переменной res значения ответа 7 вопроса*
}
Vopros8 dlg8;
if (dlg8.DoModal ()==IDOK)
{
res+=dlg8.m_otvet; *присвоение переменной res значения ответа 8 вопроса*
}
Vopros9 dlg9;
if (dlg9.DoModal ()==IDOK)
{
res+=dlg9.m_otvet; *присвоение переменной res значения ответа 9 вопроса*
}
Vopros10 dlg10;
if (dlg10.DoModal ()==IDOK)
{
if (dlg10.c1==TRUE)
{
res+=0;
}
if (dlg10.c2==TRUE)
{
res+=3;
}
if (dlg10.c3==TRUE)
{
res+=3;
}
if (dlg10.c4==TRUE)
{
res+=0;
}
}
Vopros11 dlg11;
if (dlg11.DoModal ()==IDOK)
{
res+=dlg11.m_otvet; *присвоение переменной res значения ответа 11 вопроса*
}
Vopros12 dlg12;
if (dlg12.DoModal ()==IDOK)
{
res+=dlg12.m_otvet; *присвоение переменной res значения ответа 12 вопроса*
}
Vopros13 dlg13;
if (dlg13.DoModal ()==IDOK)
{
res+=dlg13.m_otvet; *присвоение переменной res значения ответа 13 вопроса*
}
Vopros14 dlg14;
if (dlg14.DoModal ()==IDOK)
{
res+=dlg14.m_otvet; *присвоение переменной res значения ответа 14 вопроса*
}
Vopros15 dlg15;
if (dlg15.DoModal ()==IDOK)
{
if (dlg15.ch1==TRUE)
{
res+=0;
}
if (dlg15.ch2==TRUE)
{
res+=0;
}
if (dlg15.ch3==TRUE)
{
res+=3;
}
if (dlg15.ch4==TRUE)
{
res+=3;
}
}
Vopros16 dlg16;
if (dlg16.DoModal ()==IDOK)
{
res+=dlg16.m_otvet; *присвоение переменной res значения ответа 16 вопроса*
}
Vopros17 dlg17;
if (dlg17.DoModal ()==IDOK)
{
res+=dlg17.m_otvet; *присвоение переменной res значения ответа 17 вопроса*
}
Vopros18 dlg18;
if (dlg18.DoModal ()==IDOK)
{
res+=dlg18.m_otvet; *присвоение переменной res значения ответа 18 вопроса*
}
Vopros19 dlg19;
if (dlg19.DoModal ()==IDOK)
{
if (dlg19.c1==TRUE)
{
res+=3;
}
if (dlg19.c2==TRUE)
{
res+=0;
}
if (dlg19.c3==TRUE)
{
res+=3;
}
if (dlg19.ch4==TRUE)
{
res+=0;
}
}
Vopros20 dlg20;
if (dlg20.DoModal ()==IDOK)
{
res+=dlg20.m_otvet; *присвоение переменной res значения ответа 20 вопроса*
}
m_text.Format (L" сумма балов: %d", res);*вывод результат в текстовое поле*
UpdateData (false);
// TODO: Add your control notification handler code here
}
void CProgrammTestDlg: OnBnClickedButton2()
{
// TODO: Add your control notification handler code here
}
void CProgrammTestDlg: OnBnClickedClose ()
{
// TODO: Add your control notification handler code here
}
void CProgrammTestDlg: OnBnClickedCancel ()
{
// TODO: Add your control notification handler code here
OnCancel ();
}