на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Розробка системних об’єктно-орієнтованих програм мовою С++ в середовищі Windows
p align="left">Основними файлами для створення проекту є:

1. Файли для створення основної програми: код програми на С++ - Mandro.cpp; файл ресурсів - Mandro.RC; заготовочний файл для зв'язку з ресурсами - Resource.h і Mandro.sln - основний файл проекту, що містить посилання на необхідні об'єкти. Також до основного проекту потрібно добавити папку з ресурсами RES, що містить малюнки панелі інструментів, іконки програми(toolbar1.bmp, ICON1.ICO).

2. Файли для створення бібліотеки DLL: MandroDLL.sln - основний файл проекту; MandroDLL.cpp - код програми на С++ і Assembler; StdAfx.cpp - файл що підключає файл заголовків StdAfx.h; MandroDLL.def - файл визначень що містить ім'я експортованої функції;.

11. КЕРІВНИЦТВО ОПЕРАТОРА

Дана програма не вимагає попереднього установлення, для її запуску необхідно скопіювати в один каталог головний завантажувальний файл Mandro.exe, файл динамічно підключуваної бібліотеки MandroDLL.dll (рис. 20).

Вхідна інформація для обчислення потрапляє в програму з клавіатури: вона вводиться у призначеному для цього діалоговому вікні введення, що відкривається при натисканні кнопки «Input». Виведення інформації здійснюється у двох формах. Текстовий результат виводиться при натисненні пункту меню «Run», а графічний - «Result». Відомості про розробника виводяться при натиснені кнопки «About». При натиснені на пункт меню «Open», можна відкрити існуючий файл з даними до виконання, записаних у форматі «Х=[числові дані]». Якщо натиснути на пункт меню «Save» чи відповідну йому кнопку на панелі інструментів або комбінацією клавіш Ctrl+S, результати виконання будуть збережені у файл. Щоб вийти з програми необхідно вибрати пункт меню «Exit».

При роботі програми може виникнути таке повідомлення:

Cannot find or open file MandroDLL.dll - це повідомлення виникає при запуску обчислення функції у разі, коли не знайдено файл динамічної бібліотеки, якому передаються данні для обчислення.

Внаслідок виникнення критичної помилки слід перезавантажити головну програму Mandro.exe.

Рисунок 20 - Зовнішній вигляд основних файлів проекту

ВИСНОВКИ

У результаті виконання даної курсової роботи було створено програму на мові С++ та з використанням підпрограми на мові програмування Assembler. Основна програма містить системне меню, рядок стану, панель інструментів.

Виконується обчислення функції, що написана мовою програмування Assembler та під'єднана до основного проекту як динамічна бібліотека DLL.

Дані для обчислень в програмі вводяться в діалоговому вікні. Результат обчислень виводиться в окремих вікнах (вивід числового результату та графічного). Програма виконує стандартні операції “Open”, “Save”, “Exit”.

Виконуючи завдання курсової роботи я поглибив свої навички з написання системних об'єктно-орієнтованих програм, навчився створювати складні програми з допомогою бібліотек MFC пакету Microsoft Visual Studio 2008, засвоїв основні принципи створення системних програм для середовища Windows 98/XP, а також вивчив структуру і принцип роботи Windows 98/XP.

ЛІТЕРАТУРА

1.Семеренко В.П., Програмування мовами С та С++ в середовищі Windows.- Вінниця: ВДТУ, 2002 р. -128с.

2. Секунов Н.Ю. Самоучитель Visual C++. - СПб.: БХВ-Петербург , 2002. - 736 с.

3. Шеферд Джордж, Программирование на MicroSoft Visual C++/Пер. с англ, - М.: “Русская Редакція”, 2003.--928с.

4. Крупник А. К., Изучаем Ассемблер.- СПб.: Питер, 2004 г. -256с.

5. Поляков А.К., Брусенцев В.С., Методы и алгоритмы компьютерной графики в примерах на Visual C++.- СПб.: БХВ-Петербург, 2003 г. -560с.

6. Семеренко В.П., Програмування мовами С та С++ в середовищі Windows.- Вінниця: ВДТУ, 2002 р. -128с.

7. Герберт Шилдт. Полный справочник по С.-Київ:Вільямс, 2002г.- 365с.

8. Бурдаев О. В., Иванов М. А., Тетерин И. И.- Ассемблер в задачах защиты информации.-Москва: КУДИЦ-Образ, 2004 г.- 320с.

9. Баженова І.Ю., Visual C++ 6.0 Уроки програмування.- Київ:Фоліо,1997. - 634с.

10. http://msdn.microsoft.com/ru-ru/vstudio/default.aspx

11. Lars Powers, Mike Snell, Microsoft Visual Studio 2008 Unleashed, USA, 2008 - 1536c.

ДОДАТОК А

// Mandro.cpp :Defines the class behaviors for the application.

#include <afxwin.h>

#include <afxext.h>

#include "Resource.h"

#include "string.h"

#include "resrc1.h"

CString T="";

char s[80];

//++++++++++++++++++++++++++++++++++++++

class CMyDialog:public CDialog

{

public:

CMyDialog(CWnd* pParent=NULL);

enum {IDD=IDD_DIALOG1};

CEdit edit1;

protected:

virtual void DoDataExchange(CDataExchange* pDX);

protected:

BOOL OnInitDialog();

afx_msg void OnOK();

afx_msg void OnCancel();

DECLARE_MESSAGE_MAP()

};

CMyDialog::CMyDialog(CWnd* pParent)

:CDialog(CMyDialog::IDD, pParent)

{}

void CMyDialog::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Control(pDX, ID_EDIT1, edit1);

}

BEGIN_MESSAGE_MAP(CMyDialog, CDialog)

ON_COMMAND(IDOK,OnOK)

ON_COMMAND(IDCANCEL,OnCancel)

END_MESSAGE_MAP();

void CMyDialog::OnOK()

{

char str[80];

T="";

edit1.GetWindowText(str,80);

for(int i=0;i<=strlen(str);i++)

T=T+str[i];

for(int i=0;i<80;i++)

CDialog::OnOK();

}

void CMyDialog::OnCancel()

{

CDialog::OnCancel();

}

BOOL CMyDialog::OnInitDialog()

{

CDialog::OnInitDialog();

edit1.SetWindowText(CString("0"));

return TRUE;

}

//++++++++++++++++++++++++++++

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

enum { IDD = IDD_ABOUTBOX };

protected:

virtual void DoDataExchange(CDataExchange* pDX);

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

END_MESSAGE_MAP()

//++++++++++++++++++++++++++++++

class CTextWnd:public CFrameWnd

{

public:

CTextWnd(CWnd *Wnd);

};

CTextWnd::CTextWnd(CWnd *WndParent)

{

CRect rect(200,200,500,500);

Create (NULL,"Текстовий результат",WS_OVERLAPPEDWINDOW,rect,WndParent,NULL);

};

class CGraphWnd:public CFrameWnd

{

public:

CGraphWnd(CWnd *Wnd);

};

CGraphWnd::CGraphWnd(CWnd *WndParent)

{

Create (NULL,"Графічний результат", WS_OVERLAPPEDWINDOW, rectDefault,WndParent,NULL);

};

class COpenWnd:public CFrameWnd

{

public:

COpenWnd(CWnd *wnd);

};

COpenWnd::COpenWnd(CWnd *wndParent)

{

CRect rect(300,420,600,620);

Create (NULL,"Відкрити файл",WS_OVERLAPPEDWINDOW,rect,wndParent,NULL);

}

//+++++++++++++++++++++++++++++++

class CMyFrameWin:public CFrameWnd

{

public:

CMyFrameWin();

CMenu PopupMenu;

protected:

CStatusBar m_wndStatusBar;

CToolBar m_wndToolBar;

HICON m_hIcon;

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

afx_msg void OnOpen();

afx_msg void OnSave();

afx_msg void OnInput();

afx_msg void OnRun();

afx_msg void OnResult();

afx_msg void OnExit();

afx_msg void OnAbout();

afx_msg void OnHelp();

afx_msg void OnRButtonDown(UINT nFlags, CPoint point);

DECLARE_MESSAGE_MAP();

};

BEGIN_MESSAGE_MAP(CMyFrameWin, CFrameWnd)

ON_WM_CREATE()

ON_COMMAND(ID_OPEN,OnOpen)

ON_COMMAND(ID_SAVE,OnSave)

ON_COMMAND(ID_EXIT,OnExit)

ON_COMMAND(ID_INPUT,OnInput)

ON_COMMAND(ID_RUN,OnRun)

ON_COMMAND(ID_RESULT,OnResult)

ON_COMMAND(ID_ABOUT,OnAbout)

ON_COMMAND(ID_HELP1,OnHelp)

ON_WM_RBUTTONDOWN()

END_MESSAGE_MAP();

static UINT indicators[] =

{

ID_SEPARATOR,

ID_INDICATOR_CAPS,

ID_INDICATOR_NUM,

ID_INDICATOR_SCRL,

};

CMyFrameWin::CMyFrameWin()

{

Create(NULL,"Курсова робота ст гр 2КС-06 Мандро Олександра",

WS_OVERLAPPEDWINDOW,rectDefault,NULL,

MAKEINTRESOURCE(IDR_MAINFRAME));

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

SetIcon(m_hIcon, true);

this->LoadAccelTable(MAKEINTRESOURCE(IDR_MAINFRAME));

PopupMenu.LoadMenu(IDR_MENUPOPUP);

};

int CMyFrameWin::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

return -1;

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD

| WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS

| CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

{

TRACE0("Failed to create toolbar\n");

return -1;

}

if (!m_wndStatusBar.Create(this) ||

!m_wndStatusBar.SetIndicators(indicators,

sizeof(indicators)/sizeof(UINT)))

{

TRACE0("Failed to create status bar\n");

return -1;

}

return 0;

}

void CMyFrameWin::OnOpen()

{

CString Text;

CFileDialog dlgOpen(TRUE, "txt","", OFN_HIDEREADONLY, "Текстовий файл (*.txt)| *.txt| ALL Files(*.*)|*.*|", this);

if(dlgOpen.DoModal()==IDOK)

{

COpenWnd *OpenWnd=new COpenWnd(this);

OpenWnd -> ShowWindow(SW_SHOWNORMAL);

OpenWnd -> UpdateWindow();

CClientDC dc(OpenWnd);

dc.SetTextColor(RGB(45,52,52));

CStdioFile File(dlgOpen.GetPathName(), CFile::modeRead| CFile::typeBinary);

while(File.ReadString(Text))

{

dc.TextOut(10,0,Text,Text.GetLength());

if (Text[0]=='X')

{

int N=2;

while(N!=Text.GetLength())

{

T=T+Text[N];

N++;

}

}

}

OpenWnd -> UpdateWindow();

File.Close();

}

}

void CMyFrameWin::OnSave()

CString string="Результати обчислень програми: ";

CFileDialog DlgSave(FALSE,"txt","",OFN_HIDEREADONLY,

"Text file (*.txt)

void CMyFrameWin::OnExit()

{

SendMessage(WM_CLOSE);

}

void CMyFrameWin::OnInput()

{

CMyDialog dialog(this);

dialog.DoModal();

}

void CMyFrameWin::OnRun()

{

float res;

float x=atof(T);

HINSTANCE hDll;

hDll=::LoadLibrary("MandroDLL");

typedef float(*FUN)(float);

FUN func;

func=(FUN)::GetProcAddress(hDll,"Calc");

res=(*func)(x);

sprintf(s,"%f",res);

FreeLibrary(hDll);

CTextWnd * TextWnd=new CTextWnd(this);

TextWnd->ShowWindow(SW_SHOWNORMAL);

TextWnd->UpdateWindow();

CClientDC myDC(TextWnd);

myDC.SetTextColor(RGB(13,66,6));

myDC.TextOut(125,125,s,strlen(s));

}

void CMyFrameWin::OnResult()

{

CGraphWnd * GraphWnd=new CGraphWnd(this);

GraphWnd->ShowWindow(SW_SHOWNORMAL);

GraphWnd->UpdateWindow();

CClientDC DCS(GraphWnd);

float z=atof(T);

CPen pen;

CPoint arr[6];

arr[0].x=100;

arr[0].y=220;

arr[1].x=180;

arr[1].y=100;

arr[2].x=260;

arr[2].y=100;

arr[3].x=180;

arr[3].y=220;

arr[4].x=260;

arr[4].y=340;

arr[5].x=180;

arr[5].y=340;

CBrush brush,brush2,brush3;

pen.CreatePen( PS_SOLID, 5, RGB( 0, 0, 0));

brush.CreateHatchBrush(HS_DIAGCROSS, RGB( 0, 0, 255));

brush2.CreateSolidBrush(RGB( 255, 0, 0));

brush3.CreateSolidBrush(RGB( 0, 255, 0));

float m=atof(s);

DCS.SelectObject(&brush);

DCS.Rectangle(200-m,500-m,700+m,700);

DCS.SelectObject(&pen);

DCS.SelectObject( &brush3);

if(z<4)

{

DCS.Polygon(arr,6);

};

if(z>4)

{

arr[0].x=260;

arr[3].x=340;

DCS.Polygon(arr,6);

};

for (int i=20;i>0;i--)

{

CPoint arr2[10];

arr2[0].x=420+i;

arr2[0].y=260+i;

arr2[1].x=540+i;

arr2[1].y=20+i;

arr2[2].x=620+i;

arr2[2].y=20+i;

arr2[3].x=540+i;

arr2[3].y=180+i;

arr2[4].x=700+i;

arr2[4].y=140+i;

arr2[5].x=760+i;

arr2[5].y=60+i;

arr2[6].x=860+i;

arr2[6].y=60+i;

arr2[7].x=640+i;

arr2[7].y=380+i;

arr2[8].x=560+i;

arr2[8].y=380+i;

arr2[9].x=660+i;

arr2[9].y=200+i;

DCS.SelectObject(&brush2);

DCS.Polygon(arr2,10);

}

CString str1="Результати обрахувань програми: ";

DCS.SetTextColor(RGB(155,100,55));

DCS.TextOut(350,550,str1);

DCS.SetTextColor(RGB(100,155,255));

DCS.TextOut(450,600,s);

pen.DeleteObject();

brush.DeleteObject();

brush2.DeleteObject();

brush3.DeleteObject();

}

void CMyFrameWin::OnAbout()

{

CAboutDlg aboutDlg;

aboutDlg.DoModal();

}

void CMyFrameWin::OnHelp()

MB_ICONINFORMATION);

void CMyFrameWin::OnRButtonDown(UINT nFlags, CPoint point)

TPM_LEFTBUTTON,t.x, t.y, this);

class CMyApp:public CWinApp

{public:

virtual BOOL InitInstance();

};

BOOL CMyApp::InitInstance()

{

CMyFrameWin *pMainWnd=new CMyFrameWin;

m_pMainWnd=pMainWnd;

m_pMainWnd->ShowWindow(m_nCmdShow);

m_pMainWnd->UpdateWindow();

return TRUE;

};

CMyApp app;

ДОДАТОК Б

// MandroDLL.cpp : Defines the entry point for the DLL application.

#include "stdafx.h"

BOOL APIENTRY DllMain( HANDLE hModule,

DWORD ul_reason_for_call,

LPVOID lpReserved

)

{

return TRUE;

}

float Calc(float X)

{

float A(5);

float B(2);

float C(6);

float D(0);

float E(0);

float F(4);

float Y(0);

_asm

{

FINIT;

FLD F;//st(1)=4

FLD X;//st(0)=X

FCOM ST(1)

FSTSW ax

AND EAX ,00004500h

CMP EAX ,00000000h

je M_Bigger;

CMP EAX ,00000100h

je M_Lower;

CMP EAX ,00004000h

je M_Equal;

M_Equal:

Finit

Fld E;//ST(6)

Fld D;//ST(5)

Fld A;//ST(4)

Fld B;//ST(3)

Fld C;//ST(2)

Fld X;//ST(1)

Fld Y;//ST(0)

Fadd ST(0),ST(1);//y=x

Fmul ST(0),ST(4);//y=x*a

Fxch ST(5);//d=a*x

Fadd ST(0),ST(1);//y=x

Fmul ST(0),ST(3);//y=x*b

Fxch ST(6);//e=x*b

Fadd ST(0),ST(3);//y=b

Fmul ST(0),ST(4);//y=a*b

Fadd ST(0),ST(5);//y=a*x+a*b

Fsub ST(0),ST(6);//y=a*x+a*b-b*x

Fst Y;

jmp M_END

M_Lower:

Finit

Fld D;//ST(5)

Fld A;//ST(4)

Fld B;//ST(3)

Fld C;//ST(2)

Fld X;//ST(1)

Fld Y;//ST(0)

Fadd ST(0),ST(1);//y=x

Fmul ST(0),ST(4);//y=x*a

Fxch ST(5);//d=a*x

Fadd ST(0),ST(1);//y=x

Fmul ST(0),ST(3);//y=x*b

Fadd ST(0),ST(5);//y=a*x+b*x

Fsub ST(0),ST(2);//y=a*x+b*x-c

Fst Y;

jmp M_END

M_Bigger:

Finit

Fld D;//ST(5)

Fld A;//ST(4)

Fld B;//ST(3)

Fld C;//ST(2)

Fld X;//ST(1)

Fld Y;//ST(0)

Fadd ST(0),ST(4);//y=a

Fmul ST(0),ST(3);//y=a*b

Fxch ST(5);//d=a*b

Fadd ST(0),ST(1);//y=x

Fmul ST(0),ST(1);//y=x*x

Fmul ST(0),ST(4);//y=x*x*a

Fsub ST(0),ST(5);//y=a*x*x-a*b

Fst Y;

M_END:

}

return Y;

}

Страницы: 1, 2, 3, 4



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.