Автор работы: Пользователь скрыл имя, 18 Июня 2013 в 23:17, курсовая работа
Данная программа будет незаменима организаторам подобных мероприятий. Целью курсового проекта является разработка аналитической системы, в которой должны поддерживаться режимы учета зрителей и выступающих, их произведений, жанра, творческого багажа, порядка проведения. Система будет реализована на основе языка программирования C++ и библиотеки MFC. Для достижения намеченной цели необходимо будет решить следующие задачи:
Введение
1. Задание на разработку
2. Анализ предметной области
3. Разработка оконного приложения
3.1. Разработка информационной модели предметной области
3.2. Выбор и описание средств проектирования
3.3. Реализация приложения
4.Результаты тестирования
Заключение
Список использованных источников
Приложение А. Внешний вид основного окна приложения
Приложение Б. Программный код проекта
Включение в класс новых методов
Очень удобно использовать ClassWizard для включения в состав класса новых методов. Можно добавлять к классу методы, служащие для обработки сообщений Windows и команд от объектов, а также методы, переопределяющие виртуальные методы базовых классов.
ClassWizard не только позволяет добавить в класс новые методы, но и удалить их. ClassWizard самостоятельно удалит объявление метода из класса.
Включение в класс новых элементов данных
ClassWizard позволяет включать в
класс не только новые методы,
но и элементы данных, связанные
с полями диалоговых панелей,
форм просмотра и форм для
просмотра записей баз данных
и полей наборов записей. ClassWizard
использует специальные
Процедуры DDX/DDV и RFX
Значительно упрощают программисту работу
с диалоговыми панелями. Они позволяют
связать поля диалоговых панелей
и переменные. Когда пользователь
редактирует поля диалоговых панелей,
процедуры DDV проверяют введенные
значения и блокируют ввод запрещенных
значений. Затем процедуры DDX автоматически
копируют содержимое полей диалоговых
панелей в привязанные к ним
элементы данных класса. И наоборот,
когда приложение изменяет элементы
данных класса, привязанные к полям
диалоговой панели, процедуры DDX могут
сразу отобразить новые значения
полей на экране компьютера. Процесс
получения и обработки
Преимущество MFC библиотек
Библиотека MFC разрабатывалась для
упрощения задач, стоящих перед
программистом. Как известно, традиционный
метод программирования под Windows требует
написания достаточно длинных и
сложных программ, имеющих ряд
специфических особенностей. В частности,
для создания только каркаса программы
таким методом понадобится
Одним из основных преимуществ работы с 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::
{
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::
{
GetDlgItem(IDC_EDIT4)->
GetDlgItem(IDC_EDIT5)->
GetDlgItem(IDC_COMBO1)->
}
Для переключателя Участник
void CPoets_KonkursDlg::
{
GetDlgItem(IDC_EDIT4)->
GetDlgItem(IDC_EDIT5)->
GetDlgItem(IDC_COMBO1)->
}
Функция GetDlgItem используется для выбора какого-либо поля, списка, или любого элемента панели инструментов, по его идентификатору.
Функция EnableWindow включает или отключает мышь и ввод с клавиатуры в определенном окне или элементе управления. Когда ввод заблокирован, в скобках после функции стоит значение false, окно не принимает ввод типа щелчков мыши и нажатий клавиш. Когда ввод включен в скобках после функции стоит значение true, окно принимает всю вводимую информацию
Запись данных в файл:
void CPoets_KonkursDlg::
{
UpdateData(true);
if (Familiya>="0"&&Familiya<="9")
{CWnd::MessageBox(_T("В поле <Фамилия>
должно быть текстовое
return;}
if (Imya>="0"&&Imya<="9")
{CWnd::MessageBox(_T("В поле <Имя>
должно быть текстовое
return;}
if (Otchestvo>="0"&&Otchestvo<="
{CWnd::MessageBox(_T("В поле <Отчество>
должно быть текстовое
return;}
char *locale=setlocale(LC_ALL,"RUS"
CString r;
Zhanr.GetLBText(Zhanr.
fstream datei;
datei.open("Konkurs_Poetov.
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::
{
UpdateData(true);
Familiya=Imya=Otchestvo=Proiz=
UpdateData(false);
} UpdateData(false);
После нажатия кнопки Следующий, все перемененные принимают свои начальные значения.
Открытие HTML-страниц с творческим багажом поэтов:
void CPoets_KonkursDlg::
{
switch(Poets.GetCurSel())
{
case 0:
ShellExecute(NULL,_T("open"), _T("http://demo.aiva-studio.
break;
case 1:
ShellExecute(NULL,_T("open"), _T("http://demo.aiva-studio.
break;
case 2:
ShellExecute(NULL,_T("open"), _T("http://demo.aiva-studio.
break;
case 3:
ShellExecute(NULL,_T("open"), _T("http://demo.aiva-studio.
break;
case 4:
ShellExecute(NULL,_T("open"), _T("http://demo.aiva-studio.
break;
}} Использовал оператор выбора Switch, который, при нажатии на кнопку Найти, позволит выбрать одно значение из комбинированного списка и перейти на страничку к конкретно выбранному поэту.
4. Результаты тестирования
Тестовые испытания программы
представляют собой процесс, направленный
на то, чтобы гарантировать ее нормальную
работу во всех предполагаемых практических
ситуациях. При этом должны осуществляться
два вида испытаний: на соответствие
созданной программы
Первый вид испытаний невозможно провести,
если задача определена не полностью,
нечетко и непоследовательно. Все результаты,
соответствующие той или иной совокупности
входов, должны быть предусмотрены. Требование
четкости означает, что как постановщик
задачи, так и программист должны ясно
представлять себе, чего они хотят добиться
от программы,
Требование последовательности предполагает
недопустимость какой-либо неопределенности.
Когда программная спецификация обладает
свойствами полноты, четкости и последовательности,
то человек может не заботится о ее внутренней
структуре.
.
Заключение
В ходе выполнения курсового проекта был проведен анализ предметной области в соответствие с заданием. Разработанная система была написана на языке C++ и библиотеки MFC.
Для создания проекта были использованы знания, полученные в ходе лекций.