Приложение, написанное в среде MICROSOFT VISUAL C++ с использованием библиотеки MFC.
Список адресов электронной почты

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Министерство образования и науки Российской Федерации

«Северо-Кавказский государственный технический университет»

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К КУРСОВОМУ ПРОЕКТУ

по дисциплине:

«Высокоуровневые методы информатики и программирования»

на тему:

«Приложение, написанное в среде MICROSOFT VISUAL C++ с использованием библиотеки MFC. Список адресов электронной почты»

Выполнил студент II курса

Специальности _________

«Кошель Евгений Иванович»

гр. ИС — 091

Ставрополь 2011 г.

АННОТАЦИЯ

В данном курсовом проекте на тему «Приложение, написанное на Microsoft Visual C++ с использованием библиотеки MFC» критерием выполнения поставленной задачи является программный продукт, выполняющий все необходимые действия над базой данных, такие как добавление, изменение, удаление записей, фильтрацию, поиск по любому набору параметров и сохранение результатов поиска. Для разработки приложений была выбрана среда программирования Microsoft Visual C++ 6. 0, так как в более новых версиях функции работы с БД перенесены из библиотеки MFC в библиотеку CLR. Программный продукт позволяет создать каталог URL-адресов, где хранится вся информация о данном адресе.

Пояснительная записка содержит 28 страниц, 8 рисунков, 1 таблицу и 2 приложения.

Содержание

  • ВВЕДЕНИЕ
  • 1. Теоретические основы разработки Windows-приложений с использованием библиотеки MFC
  • 1.1 API функции
  • 1.2 Глобальные функции AFX0
  • 1.3 Цикл сообщений
  • 1.4 Создание приложения с помощью Visual C++
  • 1.5 Инструментальное средство — ClassWizard (мастер классов)
  • 1.6 Преимущество MFC библиотек
  • 2. Спецификация программы
  • 2.1 Описание программы
  • 2.2 Функциональное назначение
  • 2.3 Описание логической структуры приложения
  • 2.4 Требования к техническому обеспечению
  • 2.5 Установка и запуск программы
  • 2.6 Работа с приложением
  • 2.7 Входные данные
  • 2.8 Выходные данные
  • 2.9 Описание тестовых прогонов
  • 3. Заключение
  • СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
  • Приложение А. Иерархия классов.
  • Приложение Б. Листинг программы
  • ВВЕДЕНИЕ

В связи с тем, что сегодня уровень сложности программного обеспечения очень высок, разработка приложений Windows с использованием только одного какого-либо языка (например, языка С) значительно затрудняется. Чтобы облегчить работу программиста, все современные компиляторы языка С++ содержат специальные библиотеки классов. Такие библиотеки включают в себя практически весь программный интерфейс Windows и позволяют пользоваться при программировании средствами более высокого уровня, чем обычные вызовы функций. За счет этого значительно упрощается разработка приложений, имеющих сложный интерфейс пользователя, облегчается поддержка технологии OLE и взаимодействие с базами данных. Кроме того, стало проще производить отладку программ, написанных на С++. Современные интегрированные средства разработки приложений Windows позволяют автоматизировать процесс создания приложения. Для этого используются генераторы приложений. Программист отвечает на вопросы генератора приложений и определяет свойства приложения — поддерживает ли оно многооконный режим, технологию OLE, справочную систему. Генератор приложений создаст приложение, отвечающее требованиям, и предоставит исходные тексты. Пользуясь им как шаблоном, программист сможет быстро разрабатывать свои приложения. Подобные средства автоматизированного создания приложений фирма Microsoft включила в продукт Visual C++, разработав библиотеку MFC (Microsoft Foundation Classes). MFC — замечательный пакет, состоящий из заранее написанного и готового к работе кода. Заполнив несколько диалоговых панелей, можно указать характеристики приложения его тексты, снабженные обширными комментариями. MFC AppWizard позволяет создавать однооконные и многооконные приложения, а также приложения, не имеющие главного окна, — вместо него используется диалоговая панель. Прикладную часть приложения программисту придется создавать самостоятельно.

1 Теоретические основы разработки Windows-приложений с использованием библиотеки MFC

На сегодняшний день, Windows является безусловно лидирующей операционной системой на рынке персональных компьютеров. Поэтому успех современного программиста напрямую зависит от его умения разрабатывать качественные и эффективные приложения Windows. Приложения постоянно усложняются и требуют все большего времени для их создания. Для облегчения программирования Windows-приложений фирмой Microsoft была разработана библиотека MFC (Microsoft Foundation Classes — Базовые Классы Microsoft), которая впервые была представлена на рынке в 1992 г вместе с компилятором Microsoft C/C++ 7.0. Сейчас она представляет собой мощный набор классов C++, которые позволяют программировать приложения Windows 95,98/NT на достаточно высоком уровне абстракции, и вместе с тем открывают для опытных программистов легкий доступ к функциям более низкого уровня, что позволяет писать эффективные приложения и полностью использовать все возможности операционной системы [3].

MFC является альтернативой системам визуального программирования, таким как Delphi или Visual Basic, предназначенной для опытных программистов. На сегодняшний день подавляющее большинство программ разрабатывается при помощи Microsoft Visual С++ и MFC. MFC — это стандарт программирования под Windows и «интернациональный язык общения». Такая ситуация объясняется многими причинами. В частности, только MFC позволяет создавать наиболее эффективные и устойчивые приложения, которые будут корректно вести себя не только в системе разработчика, но и в системах реальных пользователей. Также очень важно, что MFC поддерживает все современные технологии, реализованные в Windows, и при дополнении Windows почти сразу же дополняется и MFC.

MFC — это инструмент для программирования сложных приложений, от которых требуется высокая эффективность и надежность. MFC поощряет использование объектно-ориентированного программирования, что дает ощутимые преимущества при решении сложных (не с точки зрения только интерфейса пользователя) задач, по сравнению с компонентно-ориентированным подходом, применяемым в системах RAD (быстрой разработки приложений). Разрабатывая приложение в системе RAD, программист часто вообще не использует ООП, по крайней мере в явном виде, до тех пор, пока не соберется разработать собственный компонент. Это негативно сказывается на возможности последующего расширения возможностей. Тем не менее, не стоит воспринимать сказанное как критику систем RAD. Есть много классов приложений (например, базы данных), которые разумнее всего разрабатывать именно при помощи систем RAD, что и делают даже опытные Windows-программисты [4].

Библиотека MFC содержит большую иерархию классов, написанных на С++. На иерархии вершине находится класс СObject, который содержит различные функции, используемые во время выполнения программы и предназначенные, в частности, для предоставления информации о текущем типе во время выполнения, для диагностики, и для сериализации.

Если указатель или ссылка ссылается на объект, производный от класса CObject, то в этом случае предусмотрен механизм определения реального типа объекта с помощью макроса RUNTIME_CLASS (). Хотя в С++ имеется механизм RTTI, механизм, реализованный в MFC, намного более эффективен по производительности.

Каждый класс, производный от CObject, может по запросу проверить свое внутреннее состояние и выдать диагностическую информацию. Это интенсивно используется в MFC при отладке.

Сериализация — это механизм, позволяющий преобразовать текущее состояние объекта в последовательный поток байт, который обычно затем записывается на диск, и восстановить состояние объекта из последовательного потока, обычно при чтении с диска. Это позволяет сохранять текущее состояние приложения на диске, и восстанавливать его при последующем запуске [5].

Некоторые классы порождаются непосредственно от 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. Эти два класса обязательны для любой программы [6].

1.1 API функции

Большинство функций, вызываемых в MFC-программе, являются членами одного из классов, определенных в библиотеке. Большинство функций API доступны через функции-члены MFC. Тем не менее, всегда можно обращаться к функциям API напрямую. Иногда это бывает необходимым, но все же в большинстве случаев удобнее использовать функции-члены MFC.

1.2 Глобальные функции AFX

В библиотеке есть ряд глобальных функций. Все они начинаются с префикса Afx. Когда MFC только разрабатывалась, то проект назывался AFX, Application Framework. После ряда существенных изменений AFX была переработана в MFC, но прежнее название сохранилось во многих идентификаторах библиотеки и в названиях файлов. Например, очень часто используется функция AfxMessageBox (), отображающая заранее определенное окно сообщения. Но есть и член-функция MessageBox (). Таким образом, часто глобальные функции перекрываются функциями-членами.

Все MFC-программы включают заголовочный файл AFXWIN.H. В нем, а также в различных вспомогательных файлах, содержатся описания классов, структур, переменных и других объектов MFC. Он автоматически подключает большинство заголовочных файлов, относящихся к MFC, в том числе и WINDOWS. H, в котором определены все функции Windows API и другие объекты, которые используются при традиционном программировании на С и «чистом» API.

Windows взаимодействует с программой, посылая ей сообщения.

1.3 Цикл сообщений

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

1.4 Создание приложения с помощью Visual C++

О принципах устройства приложения рассказывалось выше. Теперь рассмотрим, как оно создается с помощью Visual C++. Сначала разберем одно важное понятие — проект. До сих пор приложение рассматривалось, как только как совокупность объектов базовых и производных классов. Но для обеспечения работы приложения требуется нечто большее — наряду с описанием классов необходимо описание ресурсов, связанных с приложением, нужна справочная система и т. п. Термин «проект» как раз и используется, когда имеется в виду такой общий взгляд на приложение.

В среде Visual C++ можно строить различные типы проектов. Такие проекты после их создания можно компилировать и запускать на исполнение. Фирма Microsoft разработала специальный инструментарий, облегчающий и ускоряющий создание проектов в среде Visual C++. Например, мастер MFC AppWizard (exe) позволяет создать проект, Windows-приложения которое имеет однодокументный, многодокументный или диалоговый интерфейс и использует библиотеку MFC [7].

1.5 Инструментальное средство — ClassWizard (мастер классов)

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

Средство ClassWizard предоставляет широкий спектр услуг. Он позволяет не только добавлять к существующему классу новые методы и данные.

1.5.1 Создание нового класса

При помощи ClassWizard можно добавить новый класс, созданный на основе базовых классов. В качестве базового класса можно использовать классы, наследованные от класса CCmdTarget или класса CRecordset. Для наследования классов от других базовых классов использовать средства ClassWizard нельзя. Такие классы надо создавать вручную, непосредственно в текстовом редакторе.

Полученная заготовка класса полностью работоспособна. Ее можно дополнить по своему усмотрению новыми методами и данными. Эту работу можно выполнить вручную, но гораздо лучше и проще воспользоваться услугами ClassWizard. За счет использования ClassWizard процедура создания собственного класса значительно ускоряется и уменьшается вероятность совершить ошибку во время объявления методов[8].

1.5.2 Включение в класс новых методов

Очень удобно использовать ClassWizard для включения в состав класса новых методов. Можно добавлять к классу методы, служащие для обработки сообщений Windows и команд от объектов, а также методы, переопределяющие виртуальные методы базовых классов.

ClassWizard не только позволяет добавить в класс новые методы, но и удалить их. ClassWizard самостоятельно удалит объявление метода из класса.

1.5.3 ключение в класс новых элементов данных

ClassWizard позволяет включать в класс не только новые методы, но и элементы данных, связанные с полями диалоговых панелей, форм просмотра и форм для просмотра записей баз данных и полей наборов записей. ClassWizard использует специальные процедуры, чтобы привязать созданные им элементы данных к класса к полям диалоговых панелей. Эти процедуры носят названия «обмен данными диалоговой панели» и «проверка данных диалоговой панели» (Dialog Data Exchange and Dialog Data Validation — DDX/DDV). Чтобы привязать поля из наборов записей к переменным, используется процедура обмена данными с полями записей (Record Field Exchange — RFX).

1.5.4 Процедуры DDX/DDV и RFX

Значительно упрощают программисту работу с диалоговыми панелями. Они позволяют связать поля диалоговых панелей и переменные. Когда пользователь редактирует поля диалоговых панелей, процедуры DDV проверяют введенные значения и блокируют ввод запрещенных значений. Затем процедуры DDX автоматически копируют содержимое полей диалоговых панелей в привязанные к ним элементы данных класса. И наоборот, когда приложение изменяет элементы данных класса, привязанные к полям диалоговой панели, процедуры DDX могут сразу отобразить новые значения полей на экране компьютера. Процесс получения и обработки сообщений может показаться чересчур сложным, но, тем не менее, ему должны следовать все Windows-программы. К счастью, при использовании библиотеки MFC большинство частных деталей скрыты от программиста, хотя и продолжают неявно присутствовать в программе. В простейшем случае программа, написанная с помощью MFC, содержит два класса, порождаемые от классов иерархии библиотеки: класс, предназначенный для создания приложения, и класс, предназначенный для создания окна. Другими словами, для создания минимальной программы необходимо породить один класс от CWinApp, а другой — от CFrameWnd. Эти два класса обязательны для любой программы. Кроме создания вышеупомянутых классов, в программе также должна быть организована обработка всех сообщений, поступающих от Windows. В данном примере программа еще ничего полезного не делает, поэтому отвечать на каждое сообщение не нужно. MFC обработает все сообщения, которые нас не интересуют. Тем не менее, в этом примере присутствует карта откликов на сообщения, или просто карта сообщений. Позже мы рассмотрим ее подробнее. Как уже упоминалось, MFC — это базовый набор (библиотека) классов, написанных на языке С++ и предназначенных для упрощения и ускорения процесса программирования для Windows. Библиотека содержит многоуровневую иерархию классов, насчитывающую около 200 членов. Они дают возможность создавать Windows-приложения на базе объектно-ориентированного подхода. С точки зрения программиста, MFC представляет собой каркас, на основе которого можно писать программы для Windows [9].

1.6 Преимущество MFC библиотек

Библиотека MFC разрабатывалась для упрощения задач, стоящих перед программистом. Как известно, традиционный метод программирования под Windows требует написания достаточно длинных и сложных программ, имеющих ряд специфических особенностей. В частности, для создания только каркаса программы таким методом понадобится около 75 строк кода. По мере же увеличения сложности программы ее код может достигать поистине невероятных размеров. Однако та же самая программа, написанная с использованием MFC, будет примерно в три раза меньше, поскольку большинство частных деталей скрыто от программиста.

Одним из основных преимуществ работы с MFC является возможность многократного использования одного и того же кода. Так как библиотека содержит много элементов, общих для всех Windows-приложений, нет необходимости каждый раз писать их заново. Вместо этого их можно просто наследовать (говоря языком объектно-ориентированного программирования). Кроме того, интерфейс, обеспечиваемый библиотекой, практически независим от конкретных деталей, его реализующих. Поэтому программы, написанные на основе MFC, могут быть легко адаптированы к новым версиям Windows (в отличие от большинства программ, написанных обычными методами).

Еще одним существенным преимуществом MFC является упрощение взаимодействия с прикладным программным интерфейсом (API) Windows. Любое приложение взаимодействует с Windows через API, которое содержит несколько сот функций. Внушительный размер API затрудняет попытки понять и изучить его целиком. Зачастую, даже сложно проследить, как отдельные части API связанны друг с другом! Но поскольку библиотека MFC объединяет (путем инкапсуляции) функции API в логически организованное множество классов, интерфейсом становится значительно легче управлять. Поскольку MFC представляет собой набор классов, написанных на языке С++, поэтому программы, написанные с использованием MFC, должны быть в то же время программами на С++. Для этого необходимо владеть соответствующими знаниями. Для начала необходимо уметь создавать собственные классы, понимать принципы наследования и уметь переопределять виртуальные функции. Хотя программы, использующие библиотеку MFC, обычно не содержат слишком специфических элементов из арсенала С++, для их написания тем не менее требуются солидные знания в данной области.

2. Спецификация программы

2.1 Описание программы

Windows-приложение, разработанное в среде программирования Microsoft Visual Studio 98 на языке Visual C++ c использованием библиотеки MFC, предназначено для работы с базой данных «каталог URL-адресов», где хранятся все сведения о сайте и владельце. Подключаемая база данных имеет формат ACCESS 2000. В базе хранятся следующие данные: URL, компания, предоставляющая сервер, краткое описание содержимого, имя и e-mail веб-мастера, комментарии. Программа обеспечивает поиск по любому набору параметров, а также выводит результаты поиска. Причем, имеется возможность сохранения результатов поиска в текстовый файл. Программа обеспечивает полную работу с адресами, т. е. предусматривает возможность добавления, изменения, удаления записей.

2.2 Функциональное назначение

Данная программа позволяет пользователю хранить каталог URL-адресов в базе данных Microsoft Access 2000. БД все изменения, сделанные в программе влекут обновление записей в базе данных, что обеспечивает возможность расширения списка за счет добавления новых записей в базу данных.

В разработанной базе данных содержится важнейшая информация об адресах, такая как адрес, фирма предоставляющая хостинг, имя и электронная почта администратора, жанр сайта и комментарий.

В приложении предусмотрены удаление и сортировка записей, а так же программа позволяет осуществлять быстрый поиск по любому полю БД, что способствует применению программы для хранения больших каталогов интернет адресов.

2.3 Описание логической структуры приложения

Приложение разработано в среде Microsoft Visual C++6 и отвечает всем принципам объектно-ориентированного программирования. Оно создано на базе диалогового приложения. База данных подключена путем установки соответствующего драйвера данных ODBC.

Работа с БД осуществляется путем использования библиотеки msado15. dll, которая позволяет напрямую работать с БД избегая реализации собственного класса наследуемого от CRecordset.

Для отображения таблицы БД используется Ole компонент — Microsoft DBGrid 6. 0, получающий доступ к базе данных через указатель на БД _RecordsetPtr описанный в библиотеке msado15. dll.

Иерархия использованных классов показана в Приложении А.

Код класса СWWWKursDlg, спецификация которого представлена в таблице 2. 1, показан в Приложении Б.

Таблица 2.1. — Спецификация класса СWWWKursDlg

Атрибут

Способ доступа

Назначение

OnPaint (CDC*pDC)

Protected

Формирует элементы Microsoft FlexGrid Control и заполняет ячейки записями из БД

OnOk ()

Protected

Создает диалог сохранения файла

OnChangeEdit1()

Protected

Осуществляет поиск по введенным данным

2.4 Требования к техническому обеспечению

Для работы с Windows-приложением необходим персональный компьютер со следующими характеристиками: процессор Intel с тактовой частотой 166 МГц и выше, оперативная память — не менее 32 Мбайт, свободное дисковое пространство — не менее 500 кбайт, дисковод, монитор типа Super VGA (число цветов — 256) с диагональю не менее 14.

Программное обеспечение — операционная система WINDOWS 95 / 98 / NT / ME / 2000 / XP / 2003.

Так же требуется наличие установленной на персональном компьютере Microsoft Access 2000.

2.5 Установка и запуск программы

Для успешной работы с приложением необходимо переписать с дискеты файлы WWWkurs. exe и WWW. mdb в любой каталог жесткого диска. Затем зарегистрировать файл базы данных WWW. mdb. Для этого нажмите «Добавить…» в окне «Администратор источников данных ODBC» (Пуск, настройки, панель управления, администрирование, источники данных ODBC). Выберите из списка драйвер «Driver do Microsoft Access (*. mdb)» и нажмите «Готово». В появившемся окне «Установка драйвера ODBC для Microsoft Access» в поле «Имя источника данных» введите слово «WWW». После чего нажмите кнопку «Выбрать…» в поле «База данных» и выберите файл WWW. mdb из папки, в которую вы скопировали этот файл. Нажмите «ОК». Программа готова к работе. Запустите файл WWWkurs. exe.

2.6 Работа с приложением

После запуска на экран выводится главное окно приложения, на которой расположена таблица, её поля уже заполнены существующими на данный момент в базе данных сведениями. Чтобы удалить ненужную запись, необходимо выполнить щелчок мышью по ней в списке и нажать клавишу Delete. Для добавления необходимо добавить запись в последнюю (пустую) строку таблицы, заполнить данные столбцов (столбец id заполнять не нужно) и щелкнуть левой кнопкой мыши на любую другую.

Для поиска данных выберите столбец по которому вы хотите производить поиск записи. А затем в текстом поле введите условия поиска. Если критерий не был установлен, то будут найдены и отображены данные обо всех записях базы данных. В любой момент можно сохранить результаты представленные в таблице, для этого необходимо нажать на кнопку «Сохранить».

2.7 Входные данные

Для работы приложения требуется БД созданная в среде Microsoft Access 2003. Необходимо подключить источник данных для этого нажмите «Добавить…» в окне «Администратор источников данных ODBC» (Пуск, настройки, панель управления, администрирование, источники данных ODBC). Выберите из списка драйвер «Driver do Microsoft Access (*. mdb)» и нажмите «Готово» задать ему имя «WWW».

Полученная таблица содержит поля:

1. id — Порядковый номер;

2. URL — Адрес сайта;

3. Hoster — Название фирмы предоставляющей сервер;

4. Master — Имя веб-мастера;

5. E-mail — Контактный e-mail для связи с веб-мастером;

6. Комментарий — Комментарий к адресу.

2.8 Выходные данные

На главной форме выводится таблица содержащая структурированные данные об адресе, хостере и e-mail считываемые из БД.

Так же программа предоставляет возможность сохранять результаты поиска в текстовый файл. Для сохранения используется стандартный Windows диалог сохранения файлов

2.9 Описание тестовых прогонов

Запустив программу мы попадаем на главную форму (рис. 2. 1) на которой расположена таблица загружаемая из БД.

Рисунок 2.1 — Главная форма осле запуска

Добавив запись получаем форму с добавленной записью (рис 2. 2)

Рисунок 2.2 — Главная форма после добавления записи

Удалив запись получаем форму с удаленной записью (рис 2. 3)

Рисунок 2.3 — Главная форма после удаления записи

Поиск осуществляется с помощью запроса Select * FROM WWW WHERE [столбец] LIKE *[условие поиска]*, поэтому в результатах отображаются записи в которых условие поиска встречается в любом части выбранного поля (рис 2. 4).

Рисунок 2.4 — Главная форма во время поиска

Форма, представляющая результаты поиска, представлена на рисунке 2.5.

Рисунок 2.5 — Главная форма с результатами поиска

По нажатию на кнопку сохранить открывается стандартный Windows диалог сохранения файла (рис 2. 5)

приложение visual библиотека адрес

Рисунок 2.6 — Windows-диалог сохранения файла

В случае существования файла с именем указанным при сохранении приложение вызывает диалог предупреждения (рис. 2. 7). В зависимости от выбора действия файл, либо заменяет сущеествующий, либо предлагается изменить имя сохраняемого файла

Рисунок 2.7 — Диалог предупреждения при сохранении файла

Рисунок 2.8 — Вид сохраненного файла.

Во время тестирования ошибок не обнаружено.

3 Заключение

При выполнении данной курсового проекта было разработано Windows-приложение, которое позволяет хранить данные об URL-адресах сайтов, а также осуществлять различные способы навигации по базе данных. Для создания приложения была изучена тема программирования на языке Visual С++6, а также выучены многие методы классов библиотеки 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

Приложение А. Иерархия классов

Диаграмма классов

Приложение Б. Листинг программы

// WWWkursDlg. cpp: implementation file

//

#include «stdafx. h»

#include «WWWkurs. h»

#include «WWWkursDlg. h»

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CWWWkursDlg dialog

CWWWkursDlg: :CWWWkursDlg (CWnd* pParent /*=NULL*/)

: CDialog (CWWWkursDlg: :IDD, pParent)

{

//{{AFX_DATA_INIT (CWWWkursDlg)

m_edit = _T (««);

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp ()-> LoadIcon (IDR_MAINFRAME);

}

void CWWWkursDlg: :DoDataExchange (CDataExchange* pDX)

{

CDialog: :DoDataExchange (pDX);

//{{AFX_DATA_MAP (CWWWkursDlg)

DDX_Control (pDX, IDC_COMBO1, m_combo);

DDX_Control (pDX, IDC_DATAGRID1, m_grid);

DDX_Text (pDX, IDC_EDIT1, m_edit);

DDX_Control (pDX, IDC_ADODC1, m_ado);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP (CWWWkursDlg, CDialog)

//{{AFX_MSG_MAP (CWWWkursDlg)

ON_WM_PAINT ()

ON_WM_QUERYDRAGICON ()

ON_EN_CHANGE (IDC_EDIT1, OnChangeEdit1)

//}}AFX_MSG_MAP

END_MESSAGE_MAP ()

/////////////////////////////////////////////////////////////////////////////

// CWWWkursDlg message handlers

BOOL CWWWkursDlg: :OnInitDialog ()

{

CDialog: :OnInitDialog ();

// 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

set. CreateInstance (__uuidof (Recordset));

set-> Open («Select * from WWW»,"Provider=MSDASQL. 1;Persist Security Info=False; Data Source=WWW", adOpenStatic, adLockOptimistic, adCmdText);

FieldsPtr pFields;

FieldPtr pField;

pFields=set-> Fields;

int num=pFields-> Count;

for (float i =0; i< num; i++)

{

if (i≠0)

{

pField=pFields-> GetItem ((_variant_t) i);

m_combo. AddString ((LPCTSTR)pField->Name);

}

}

m_combo. SetCurSel (0);

m_grid. SetRefDataSource ((LPUNKNOWN) set);

m_grid. Refresh ();

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control

}

// 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 CWWWkursDlg: :OnPaint ()

{

if (IsIconic ())

{

CPaintDC dc (this); // device context for painting

SendMessage (WM_ICONERASEBKGND, (WPARAM) 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 to obtain the cursor to display while the user drags

// the minimized window.

HCURSOR CWWWkursDlg: :OnQueryDragIcon ()

{

return (HCURSOR) m_hIcon;

}

void CWWWkursDlg: :OnChangeEdit1()

{

UpdateData ();

CString l, s;

m_combo. GetLBText (m_combo. GetCurSel (), l);

if (m_edit≠"")

{

s. Format («%s LIKE '*%s*'», l, m_edit);

set-> Filter=(_variant_t)s;

m_grid. Refresh ();

}

else

{

set. CreateInstance (__uuidof (Recordset));

set-> Open («Select * from WWW»,"Provider=MSDASQL. 1;Persist Security Info=False; Data Source=WWW", adOpenStatic, adLockOptimistic, adCmdText);

m_grid. SetRefDataSource ((LPUNKNOWN) set);

m_grid. Refresh ();

}// send this notification unless you override the CDialog: :OnInitDialog ()

// function and call CRichEditCtrl (). SetEventMask ()

// with the ENM_CHANGE flag ORed into the mask.

// TODO: Add your control notification handler code here

}

void CWWWkursDlg: :OnOK ()

{

CFileDialog DlgSaveAs (FALSE, NULL,"Результат. txt");

if (DlgSaveAs. DoModal ()==IDOK)

CFile: :modeWrite

}

ПоказатьСвернуть
Заполнить форму текущей работой