Разработка информационно аналитической системы на тему «Конкурс поэтов» с использованием технологии объектно-ориентированного программ

Автор работы: Пользователь скрыл имя, 18 Июня 2013 в 23:17, курсовая работа

Краткое описание

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

Содержание

Введение
1. Задание на разработку
2. Анализ предметной области
3. Разработка оконного приложения
3.1. Разработка информационной модели предметной области
3.2. Выбор и описание средств проектирования
3.3. Реализация приложения
4.Результаты тестирования
Заключение
Список использованных источников
Приложение А. Внешний вид основного окна приложения
Приложение Б. Программный код проекта

Вложенные файлы: 1 файл

курсовик.docx

— 157.33 Кб (Скачать файл)

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


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

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

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

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

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

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


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

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

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


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

 

3.3 Реализация приложения


 

В данной программе используются следующие переменные:

Familiya – CString

Imya – CString

Otchestvo – CString

Zhanr – CComboBox

Poets – CComboBox

Ochered – CString

Proiz – CString

Для типов данных CString и int использовал категорию Value. А для  типа данных CComboBox использовал категорию Control.

Основные элементы программного кода:

Определение списка жанров и списка поэтов:

BOOL CPoets_KonkursDlg::OnInitDialog()

{

CDialogEx::OnInitDialog();

Zhanr.AddString(_T("Зритель"));

Zhanr.AddString(_T("Повесть"));

Zhanr.AddString(_T("Рассказ"));

Zhanr.AddString(_T("Роман"));

Zhanr.AddString(_T("Водевиль"));

Zhanr.AddString(_T("Трагедия"));

Zhanr.AddString(_T("Драма"));

Zhanr.AddString(_T("Поэма"));

Zhanr.AddString(_T("Ямб"));

Zhanr.AddString(_T("Эпопея"));

Zhanr.AddString(_T("Очерк"));

Zhanr.AddString(_T("Сказка"));

Zhanr.AddString(_T("Ода"));

Zhanr.AddString(_T("Миф"));

 

Poets.AddString(_T("Тютчев"));

Poets.AddString(_T("Гоголь"));

Poets.AddString(_T("Пушкин"));

Poets.AddString(_T("Лермонтов"));

Poets.AddString(_T("Есенин"));

Poets.SetCurSel(0);


В переменные Poets и Zhanr записывается строка с названием жанра или фамилии поэта с помощью функции AddString. Начальное значение списка установлено, с помощью функции SetCurSel, установлено только для комбинированного списка с названием переменной Poets, так как жанр должен быть пустым, для того чтобы не приписать его Зрителю в текстовый файл.

Для того, чтобы переключатели активировали и деактивировали поля ввода и комбинированный список создал обработчик событий для каждого и записал код:

Для переключателя Зритель

 

void CPoets_KonkursDlg::OnBnClickedRadio1()

{

GetDlgItem(IDC_EDIT4)->EnableWindow(false);

 

GetDlgItem(IDC_EDIT5)->EnableWindow(false);

 

GetDlgItem(IDC_COMBO1)->EnableWindow(false);

}

 

 

 

Для переключателя Участник

 

void CPoets_KonkursDlg::OnBnClickedRadio2()

{

GetDlgItem(IDC_EDIT4)->EnableWindow(true);

 

GetDlgItem(IDC_EDIT5)->EnableWindow(true);

 

GetDlgItem(IDC_COMBO1)->EnableWindow(true);

 

}

Функция GetDlgItem используется для выбора какого-либо поля, списка, или любого элемента панели инструментов, по его идентификатору.

Функция EnableWindow включает или отключает мышь и ввод с клавиатуры в определенном окне или элементе управления. Когда ввод заблокирован, в скобках после функции стоит значение false, окно не принимает ввод типа щелчков мыши и нажатий клавиш. Когда ввод включен в скобках после функции стоит значение true, окно принимает всю вводимую информацию


 

Запись данных в файл:

void CPoets_KonkursDlg::OnBnClickedButton1()

{

UpdateData(true);

 

if (Familiya>="0"&&Familiya<="9")

{CWnd::MessageBox(_T("В поле <Фамилия>  должно быть текстовое значение"),_T("Ошибка"),0);

return;}

 

 

if (Imya>="0"&&Imya<="9")

{CWnd::MessageBox(_T("В поле <Имя>  должно быть текстовое значение"),_T("Ошибка"),0);

return;}

 

if (Otchestvo>="0"&&Otchestvo<="9")

{CWnd::MessageBox(_T("В поле <Отчество> должно быть текстовое значение"),_T("Ошибка"),0);

return;}

 

 

 

char *locale=setlocale(LC_ALL,"RUS");

CString r;

Zhanr.GetLBText(Zhanr.GetCurSel(),r);

 

fstream datei; 

datei.open("Konkurs_Poetov.txt",ios::app);

if(!datei)

{

cout<<"Error"<<endl;

}

else

{


 

datei<<Familiya<<"   "<<Imya<<"   "<<Otchestvo<<"        "<<r<<"            "<<Proiz<<"           "<<Ochered<<"   "<<endl;

}

datei.close();

 

UpdateData(false);

}

В первую очередь, используя  оператор if, ставлю запрет на ввод числовых данных в поля Фамилия, Имя, Отчество. Для этого использовал оконный класс CWnd. MessageBox указывает на то, что будет создано окно с текстом, который написан в скобках.

 

 

С помощью оператора fstream создал текстовый поток с именем datei.

Строка datei.open("Konkurs_Poetov.txt ",ios::app) открывает поток с именем datei и открывает для записи текстовый файл.

С помощью записи datei<<…. в файл записываются значения всех перечисленных переменных в том порядке, в каком переменные расставлены слева на право.

Сброс значений в полях  Фамилия, Имя, Отчество, Очередь и  Жанр:

void CPoets_KonkursDlg::OnBnClickedButton2()

{

UpdateData(true);

Familiya=Imya=Otchestvo=Proiz=Ochered=" ";

UpdateData(false);

} UpdateData(false);

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

 

Открытие HTML-страниц с творческим багажом поэтов:

 

void CPoets_KonkursDlg::OnBnClickedButton3()

{

switch(Poets.GetCurSel())

{

case 0:

ShellExecute(NULL,_T("open"), _T("http://demo.aiva-studio.ru/gogol.html"), _T(""), _T("c:\\"), SW_SHOWNORMAL);

break;

case 1:

ShellExecute(NULL,_T("open"), _T("http://demo.aiva-studio.ru/esenin.html"), _T(""), _T("c:\\"), SW_SHOWNORMAL);

break;

case 2:

ShellExecute(NULL,_T("open"), _T("http://demo.aiva-studio.ru/lermontov.html"), _T(""), _T("c:\\"), SW_SHOWNORMAL);

break;

case 3:

ShellExecute(NULL,_T("open"), _T("http://demo.aiva-studio.ru/pushkin.html"), _T(""), _T("c:\\"), SW_SHOWNORMAL);

break;

case 4:

ShellExecute(NULL,_T("open"), _T("http://demo.aiva-studio.ru/tutchev.html"), _T(""), _T("c:\\"), SW_SHOWNORMAL);

break;

}} Использовал оператор выбора Switch, который, при нажатии на кнопку Найти,  позволит выбрать одно значение из комбинированного списка и перейти на страничку к конкретно выбранному поэту.

 

4. Результаты тестирования


 

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

 


Заключение


 

 

В ходе выполнения курсового  проекта был проведен анализ предметной области в соответствие с заданием. Разработанная система была написана на языке C++ и библиотеки MFC.

Для создания проекта были использованы знания, полученные в  ходе лекций.

Информация о работе Разработка информационно аналитической системы на тему «Конкурс поэтов» с использованием технологии объектно-ориентированного программ