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

Разработка Windows-приложений с использованием библиотеки MFC. Базовый набор классов, написанных на языке С++ и предназначенных для упрощения процесса программирования под Windows. Фундаментальные идеи объектно-ориентированного программирования.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 02.07.2011
Размер файла 348,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

После запуска на экран выводится главное окно приложения. Программа предлагает продолжить работу или выйти. Её поля уже заполнены существующими на данный момент в базе данных сведениями об адресах. Чтобы удалить ненужную запись, необходимо выполнить щелчок мышью по ней в списке и в меню приложения выбрать пункт «Delete record». Для добавления записи нажмите в меню приложения «ADD Record». Для сортировки данных сделайте щелчок мышью на панели меню, по пункту «Sort» и выберите значение по которому вы хотите отсортировать записи. Можно устанавливать любой порядок сортировки, при этом список адресов будет автоматически выводится, согласно установленной сортировке. Кнопка «Search» выводит диалоговое окно, в котором нужно ввести критерий поиска. По завершению поиска приложение предлагает сохранить результаты Если критерий не был установлен, то будут найдены и отображены данные обо всех записях базы данных.

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

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

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

1.Код - Порядковый номер;

2.Имя - Имя владельца электронной почты;

3.Адрес - Адрес электронной почты;

4.Комментарий - Комментарий к адресу электронной почты.

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

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

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

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

При запуске программы открывается окно приветствия (рис. 2.1) По нажатью на кнопку продолжить открывается рабочая область программы (рис 2.2)

Рисунок 2.1 - Окно приветствия

Рисунок 2.2 - Рабочая область программы

При добавлении записи необходимо открыть окно добавления записи (рис 2.3). Новая запись добавляется в конец таблицы с присвоением номера, следующего за последним имеющимся в таблице.

Рисунок 2.3 - Добавление записи

Поиск записей производится с помощью окна поиска записи (рис. 2.4)

Рисунок 2.4 - Поиск записи

Результаты поиска отображаются в рабочей области после нажатия кнопки “Ok”. Вид рабочей области после поиска представлении на рисунке 2.5

Рисунок 2.5 - Результат поиска

Удаление записи происходит путем выделения записи в рабочей области и выбора пункта меню Delete Record. (рис. 2.8)

Рисунок 2.6 - Удаление записи

Результат удаления сразуже отображается на рабочей области (рис. 2.7)

Рисунок 2.7 - Результат удаления

В результате тестовых прогонов ошибок не обнаружено.

Заключение

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

Приложение А

Иерархия классов

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

Рис

Приложение Б

Листинг программы

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

// CVisualStudiodbView message handlers

void CVisualStudiodbView::OnDraw(CDC* pDC)

{

CRect m_rect; // координаты окна приложения

int n_Rows=1; // число строк таблицы

// Вычисляем размеры окна приложения

GetClientRect(&m_rect);

// Задаем размеры таблицы

m_grid.MoveWindow(m_rect);

m_grid.RedrawWindow();

char str[100];

if(m_pSet->IsEOF())

{

m_grid.SetRows(1);

return;

}

for(m_pSet->MoveFirst();!m_pSet->IsEOF();m_pSet->MoveNext())

n_Rows++;

m_grid.SetRows(n_Rows);

m_grid.SetCols(4);

m_pSet->MoveFirst();

// Задаем ширину столбцов таблицы

m_grid.SetColWidth(-1,2000);

//подпись

m_grid.SetRow(0);

m_grid.SetCol(1);

sprintf(str,"Имя");

m_grid.SetText(str);

m_grid.SetCol(2);

sprintf(str,"Адрес");

m_grid.SetText(str);

m_grid.SetCol(3);

sprintf(str,"Комментарий");

m_grid.SetText(str);

m_grid.SetRow(1);

m_grid.SetCol(1);

for(int n_Row=1;n_Row<n_Rows;n_Row++)

{

m_grid.SetRow(n_Row);

m_grid.SetCol (0);

sprintf(str,"%d",m_pSet->m_cod);

m_grid.SetText(str);

m_grid.SetCol (1) ;

m_grid.SetText(m_pSet->m_name);

m_grid.SetCol (2);

m_grid.SetText(m_pSet->m_price);

m_grid.SetCol (3);

m_grid.SetText(m_pSet->m_komment);

m_pSet->MoveNext();

}

m_pSet->MoveFirst();

m_grid.SetRow(1);

m_grid.SetCol(1);

}

BOOL CVisualStudiodbView::OnMove(UINT nIDMoveCommand)

{

//int m_nFields=4;

int CurRow;

CurRow=m_grid.GetRow();

switch(nIDMoveCommand)

{

case ID_RECORD_PREV:

{

if(!m_pSet->IsBOF())

{

m_grid.SetRow(CurRow-1);

m_grid.SetCol(0);

m_grid.SetRowSel(CurRow-1);

m_grid.SetColSel(2);

m_pSet->MovePrev();

}

} break;

case ID_RECORD_FIRST:

{

m_grid.SetRow(1);

m_grid.SetCol(0);

m_grid.SetRowSel(1);

m_grid.SetColSel(2);

m_pSet->MoveFirst();

} break;

case ID_RECORD_NEXT:

{

if(!m_pSet->IsEOF())

{

m_grid.SetRow(CurRow+1);

m_grid.SetCol(0);

m_grid.SetRowSel(CurRow+1);

m_grid.SetColSel(2);

m_pSet->MoveNext();

}

} break;

case ID_RECORD_LAST:

{

m_grid.SetRow(m_pSet->GetRecordCount());

m_grid.SetCol(0);

m_grid.SetRowSel(m_pSet->GetRecordCount());

m_grid.SetColSel(2);

m_pSet->MoveLast();

} break;

}

return true;

return CRecordView::OnMove(nIDMoveCommand);

}

BEGIN_EVENTSINK_MAP(CVisualStudiodbView, CRecordView)

//{{AFX_EVENTSINK_MAP(CVisualStudiodbView)

ON_EVENT(CVisualStudiodbView, IDC_MSFLEXGRID1, -600 /* Click */, OnClickMsflexgrid1, VTS_NONE)

//}}AFX_EVENTSINK_MAP

END_EVENTSINK_MAP()

void CVisualStudiodbView::OnClickMsflexgrid1()

{

int CurRow;

CurRow=m_grid.GetRow();

for(m_pSet->MoveFirst();CurRow>1;CurRow--)

m_pSet->MoveNext();

}

void CVisualStudiodbView::OnRecordAdd()

{

AddRec dlg;

if(dlg.DoModal()==IDOK)

{

if(!m_pSet->CanAppend())

MessageBox("Запись на может быть добавлена","Ошибка открытия базы данных",MB_OK|MB_ICONERROR);

else

{

//if(!m_pSet->IsEOF())m_pSet->MoveLast();

///long lastCod=m_pSet->m_cod;

m_pSet->AddNew();

m_pSet->m_name=dlg.m_name;

m_pSet->m_price=dlg.m_cena;

m_pSet->m_komment=dlg.m_komentarii;

m_pSet->m_cod=m_pSet->GetRecordCount();

m_pSet->Update();

m_pSet->Close();

m_pSet->Open();

}

}

InvalidateRect(NULL);

UpdateWindow();

}

void CVisualStudiodbView::OnRecordDel()

{

long n=m_grid.GetRow();

m_grid.SetRowSel(n-1);

/*m_pSet->Move(n);*/

if(m_pSet->CanUpdate())

m_pSet->Delete();

m_pSet->Requery();

InvalidateRect(NULL);

UpdateWindow();

}

void CVisualStudiodbView::OnRecordSort()

{

CSortRec dlg;

if(dlg.DoModal()==IDOK)

{

switch(dlg.m_sort)

{

case 0:m_pSet->m_strSort="["+dlg.m_fields+"] ASC"; break;

case 1: m_pSet->m_strSort="["+dlg.m_fields+"] DESC";

}

m_pSet->Requery();

}

InvalidateRect(NULL);

UpdateWindow();

}

void CVisualStudiodbView::OnRecordSearch()

{

CSearchRec dlg;

if(dlg.DoModal()==IDOK)

{

if(dlg.m_fields!="")

{

m_pSet->m_strFilter="["+dlg.m_fields+"]LIKE'%";

m_pSet->m_strFilter+=dlg.m_value+"%'";

}

else

m_pSet->m_strFilter.Empty();

m_pSet->Requery();

if(m_pSet->GetRecordCount()==0)

{

MessageBox("В базе данных нет записей, удовлетворяющих заданному критерию",

"Сообщение", MB_OK|MB_ICONINFORMATION);

m_pSet->m_strFilter.Empty();

m_pSet->Requery();

}

}

InvalidateRect(NULL);

UpdateWindow();

}

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.