Створення та виконання однодокументної Windows-програми на «рідному» С++ з використанням бібліотеки MFC

Страницы работы

Содержание работы

Міністерство освіти і науки, молоді та спорту України

                                          Сумський державний університет      

Кафедра комп`ютерних наук

Курсова робота

з курсу «Системне програмування»

варіант 10

Виконала:

студентка групи ІН-91

Татарченко А. С.

Перевірила:

Скаковська А.М.

Суми-2012

Задача 1

Умова задачі

Створити та виконати однодокументну Windows- програму на «рідному» С++ з використанням бібліотеки MFC. Передбачити запуск з меню  fileдіалогового режиму, зчитування з вікна текстового редактора вихідних даних для табуляції функції, запуск процесу табуляції, вивід результатів в вікно списку, а також у файл при виборі пункту меню  file ->save або file ->save as  та подальше зчитування з диску по file->open.

Опис виконання роботи

     1)Create project  odz1  :  Project types- MFC,

Templates-  MFC Application, Application type - single document.Убрати флажок Use Unicode libraries.

2) Додати пункт меню File/Show dialog….

3) Створити обробник події вибору цього пункту меню та залишити його поки що порожнім.

4) Створити діалогове вікно. Розмістити у ньому кнопку «Пуск», три текстових вікна ab| Edit control і один  List box. Проти кожного з вікон ab|Edit control в вікнах  Aa Static Text розмістити символічні назви відповідних змінних.

5) Натиснути на діалоговому вікні, викликати контекстне меню Add class. В появленому вікні ввести ім’я діалогового класу Dlg.

6) В класс Dlg  додати елементи даних medit1, medit2, medit3 для трьох вікон  ab|Edit control. Для List box додати елемент даних  mlist1. Викликати для нього properties та вимкнути сортування (в рядку Sort  увстановити false). Створити обробник події вибору кнопки «Пуск».В ньому запрограмувати табуляцію функції:

Обробник має вигляд:

voidDlg::OnBnClickedButton1()

{

        CString s1;

        double x,an,da,ak,a, b;

        medit1.GetWindowTextA(s1);

        an=atof(s1);

        medit2.GetWindowTextA(s1);

        da=atof(s1);

        medit3.GetWindowTextA(s1);

        ak=atof(s1);

        medit4.GetWindowTextA(s1);

        b=atof(s1);

        s1.Format("Результаты:");

        for(a=an;a<=ak;a+=da)

        {

                if(a>=b)

                {

                        x=pow(pow(a,2),1/2)+exp(1+a*b);

                        s1.Format(" a=%lf x=%lf",a,x);

                        mlist.AddString(s1);

                }

                else

                {

                        x=pow(tan(abs(a+pow(b,1/2))),2);

                        s1.Format(" a=%lf x=%lf",a,x);

                        mlist.AddString(s1);

                }

str+=s1;

}

}

Щоб він працював, в файл Dlg.cpp необхідно додати  #include”Dlg.h” та #include<math.h>.

Тут використовується локальна змінна CString  s1.

Необхідно звернути увагу на те, що в циклі формується  str типу CString, яка є елементом данних класу Dlg.

7) Заповнити обробник події вибору пункту меню «Show Dialog». Обробник має вигляд:

void Codz1View::OnMenu()

{

Dlg  dlg1;

        int rezult=(int)dlg1.DoModal();

        if(rezult==IDOK)

        {

                Codz1Doc*pDoc=GetDocument();

                ASSERT_VALID(pDoc);

                if(!pDoc)

                        return;

                pDoc->m_stroka=dlg1.str;

                Invalidate();

        }

}

В ньому відбувається копіювання інформації з елемента даних str класса Dlg в елемент даних m_stroka класса odz1. Це необхідно для того щоб здійснити серіалізацію отриманих результатів.

8) Тепер необхідно вивести строки символів m_stroka на екран в клієнтську область. Для цього використовуємо функцію OnDraw()класу Codz1View. Функція має вигляд:

void Codz1View::OnDraw(CDC* pDC)

{

        Codz1Doc* pDoc = GetDocument();

        ASSERT_VALID(pDoc);

        if (!pDoc)

                return;

        pDC->TextOutA(0,0,pDoc->m_stroka);

}

9) Заповнимо функцію Serialize(). Для цього виберемо вкладку Class View, виділимо класс Codz1Doc, з методів цього класу виберемо Serialize()  та додамо до неї коди вивода на диск та зчитування з нього.

Функція має вигляд:

void Codz1Doc::Serialize(CArchive& ar)

{

        if (ar.IsStoring())

{

                ar<<m_stroka;//Вывод m_stroka в файл на диск

// TODO: add storing code here

        }

else

        {

              ar>>m_stroka;//чтение из файла

// TODO: add loading code here

       }

}

10) Необхідно забезпечити очистку екрану при створенні нового документа. Для цього необхідно виділити клас C odz1Doc, розкрити метод OnNewDocument(). В нього додати обнулювання рядка символів m_stroka, а також функцію UpdateAllViews(NULL) . Вона інформує усі види , пов’язані з документом, що цей документ був модифікований та має бути оновлення усіх видів програми новими даними документа. Функція має вигляд:

BOOL Codz1Doc::OnNewDocument()

{

        if (!CDocument::OnNewDocument())

                return FALSE;

        m_stroka="";

UpdateAllViews(NULL);

        return TRUE;

}

Программа готова.

Результат роботи програми

Задача2

Умова задачі

Створити проект консольного додатку Win 32, який містить клас “figura” з полями  name, a, b, h. Передбачити функції-члени:

-  Для введення значень елементів даних з клавіатури;

-  Для розрахунку периметру, площі та об’єму фігури;

-  Виведення на екран значеньвихідних даних та обчислень величин;

У головній функції описати об’єкт класу і реалізувати виклик всіх членів-функцій .

Опис виконання роботи:

Похожие материалы

Информация о работе