- •1 Аналіз індивідуального завдання
- •2 Загальна структура проекту
- •3 Розробка меню програми
- •4 Панель інструментів та рядок стану
- •4.1 Створення панелі інструментів
- •4.2 Рядок стану
- •5 Створення діалогових вікон
- •5.1 Етапи розробки діалогових вікон
- •5.2 Створення діалогу
- •6 Реалізація математичної функції мовою assembler
- •7 Створення та підключення бібліотеки dll
- •8 Основні операції над файлами
- •8.1 Відкриття файлу
- •8.2 Збереження файлу
- •8.3 Видалення файлу
- •9 Виведення результатів обчислень
- •9.1 Числове виведення результату
- •9.2 Графічне виведення результату
- •10 Керівництво системного програміста
- •11 Керівництво оператора
- •Висновки
- •Перелік посилань
- •Додаток а
- •Додаток б
Перелік посилань
1. Семеренко В. П., Програмування мовами С та С++ в середовищі Windows.– Вінниця: ВНТУ, 2002 р. –128с.
2. Секунов Н. Ю. Самоучитель Visual C++. – СПб.: БХВ-Петербург , 2002. – 736 с.
3. Шеферд Джордж, Программирование на MicroSoft Visual C++/Пер. с англ, - М.: “Русская Редакція”, 2003.—928с.
4. Крупник А. К., Изучаем Ассемблер.– СПб.: Питер, 2004 г. –256с.
5. Нікітченко М. С. Теоретичні основи програмування : навчальний посібник / М.С Нікітченко — Ніжин : Видавництво НДУ імені Миколи Гоголя, 2010. — 121с.
6. Поляков А. К., Брусенцев В.С., Методы и алгоритмы компьютерной графики в примерах на Visual C++.– СПб.: БХВ-Петербург, 2003 г. –560с.
7. Герберт Шилдт. Полный справочник по С.–Київ: Вільямс, 2002г.– 365с.
8. Бурдаев О. В., Иванов М. А., Тетерин И. И.– Ассемблер в задачах защиты информации.–Москва: КУДИЦ-Образ, 2004 г.– 320с.
9. Баженова І. Ю., Visual C++ 6.0 Уроки програмування.– Київ: Фоліо,1997. – 634с.
ДОДАТКИ
Додаток а
Лістинг головної програми
#include <afxwin.h>
#include <afxext.h>
#include "Resource.h"
CString buf, bufI, bufII;
class CGraphWnd:public CFrameWnd
{
public:
CGraphWnd(CWnd *Wnd);
};
CGraphWnd::CGraphWnd(CWnd *WndParent)
{
Create(NULL,"Draw",WS_SYSMENU,rectDefault,WndParent,NULL);
};
class CMyDialogI:public CDialog{
public:
CMyDialogI(CWnd* pParent=NULL);
enum {IDD=IDD_DIALOG1};
CEdit edit1;
protected:
virtual void DoDataExchange(CDataExchange* pDX);
protected:
BOOL OnInitDialog();
afx_msg void OnOK();
DECLARE_MESSAGE_MAP()
};
CMyDialogI::CMyDialogI(CWnd* pParent):CDialog(CMyDialogI::IDD, pParent)
{}
void CMyDialogI::DoDataExchange(CDataExc hange* pDX){
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, ID_EDIT1, edit1);
}
BEGIN_MESSAGE_MAP(CMyDialogI, CDialog)
ON_COMMAND(IDOK,OnOK)
END_MESSAGE_MAP();
BOOL CMyDialogI::OnInitDialog(){
CDialog::OnInitDialog();
CString Text;
CFileDialog dlgOpen(TRUE, "txt","", OFN_HIDEREADONLY, "Текстовий файл (*.txt)| *.txt| ALL Files(*.*)|*.*|", this);
if(dlgOpen.DoModal()==IDOK){
CStdioFile File(dlgOpen.GetPathName(), CFile::modeRead| CFile::typeBinary);
edit1.SetWindowText(dlgOpen.GetPathName());
bufI=dlgOpen.GetPathName();
File.Close();
}
return TRUE;
}
void CMyDialogI::OnOK()
{
edit1.GetWindowText(bufII);
DeleteFile(bufII);
CDialog::OnOK();
}
class CMyDialogII:public CDialog{
public:
CMyDialogII(CWnd* pParent=NULL);
enum {IDD=IDD_DIALOG2};
CEdit edit1;
protected:
virtual void DoDataExchange(CDataExchange* pDX);
protected:
BOOL OnInitDialog();
afx_msg void OnOK();
DECLARE_MESSAGE_MAP()
};
CMyDialogII::CMyDialogII(CWnd* pParent):CDialog(CMyDialogII::IDD, pParent)
{}
void CMyDialogII::DoDataExchange(CDataExchange* pDX){
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, ID_EDIT1, edit1);
}
BEGIN_MESSAGE_MAP(CMyDialogII, CDialog)
ON_COMMAND(IDOK,OnOK)
END_MESSAGE_MAP();
BOOL CMyDialogII::OnInitDialog(){
CDialog::OnInitDialog();
CString Text;
CFileDialog dlgOpen(TRUE, "txt","", OFN_HIDEREADONLY, "Текстовий файл (*.txt)| *.txt| ALL Files(*.*)|*.*|", this);
if(dlgOpen.DoModal()==IDOK){
CStdioFile File(dlgOpen.GetPathName(), CFil e::modeRead| CFile::typeBinary);
edit1.SetWindowText(dlgOpen.GetPathName());
bufI=dlgOpen.GetPathName();
File.Close();
}
return TRUE;
}
void CMyDialogII::OnOK()
{
edit1.GetWindowText(bufII);
MoveFile(bufI,bufII);
CDialog::OnOK();
}
class CMyDialog:public CDialog
{
public:
CMyDialog(CWnd* pParent=NULL);
enum {IDD=IDD_DIALOG3};
CEdit edit1;
protected:
virtual void DoDataExchange(CDataExchange* pDX);
protected:
BOOL OnInitDialog();
afx_msg void OnOK();
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)
END_MESSAGE_MAP();
void CMyDialog::OnOK()
{
char str[80];
edit1.GetWindowText(buf);
CDialog::OnOK();
}
BOOL CMyDialog::OnInitDialog()
{
CDialog::OnInitDialog();
edit1.SetWindowText(CString("0"));
return TRUE;
}
class CMyFrameWnd:public CFrameWnd
{
public:
CMyFrameWnd();
protected:
CStatusBar m_wndStatusBar;
CToolBar m_wndToolBar;
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
DECLARE_MESSAGE_MAP();
public:
afx_msg void OnExit();
afx_msg void OnAboutHelp();
afx_msg void OnAboutAbout();
afx_msg void OnFileDelete();
afx_msg void OnFileSave40003();
afx_msg void OnCalcRun();
afx_msg void OnFileRename();
afx_msg void OnCalcDraw();
};
BEGIN_MESSAGE_MAP(CMyFrameWnd, CFrameWnd)
ON_WM_CREATE()
ON_COMMAND(ID_EXIT, &CMyFrameWnd::OnExit)
ON_COMMAND(ID_ABOUT_HELP, &CMyFrameWnd::OnAboutHelp)
ON_COMMAND(ID_ABOUT_ABOUT, &CMyFrameWnd::OnAboutAbout)
ON_COMMAND(ID_FILE_DELETE, &CMyFrameWnd::OnFileDelete)
ON_COMMAND(ID_FILE_SAVE40003, &CMyFrameWnd::OnFileSave40003)
ON_COMMAND(ID_CALC_RUN, &CMyFrameWnd::OnCalcRun)
ON_COMMAND(ID_FILE_RENAME, &CMyFrameWnd::OnFileRename)
ON_COMMAND(ID_CALC_DRAW, &CMyFrameWnd::OnCalcDraw)
END_MESSAGE_MAP();
static UINT indicators[] =
{
ID_SEPARATOR,
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
CMyFrameWnd::CMyFrameWnd()
{
Create(NULL,"Студенка 1КІ-11Б Колесніченко Марина Андріївна",
WS_OVERLAPPEDWINDOW,rectDefault,NULL,
MAKEINTRESOURCE(IDR_MAINFRAME));
};
int CMyFrameWnd::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;
}
class CMyApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};
BOOL CMyApp::InitInstance()
{
CMyFrameWnd *pMainWnd=new CMyFrameWnd;
m_pMainWnd=pMainWnd;
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
};
CMyApp app;
void CMyFrameWnd::OnExit()
{
SendMessage(WM_CLOSE);
}
void CMyFrameWnd::OnAboutHelp()
{
::MessageBox(NULL,"Для перевірки програми прочитайте індевідуалне завдання.","Help",MB_OK|MB_ICONINFORMATION);
}
void CMyFrameWnd::OnAboutAbout()
{
MessageBox("Виконала студентка групи 1КІ-11Б \nКолесніченко Марина Андріївна","About");
}
void CMyFrameWnd::OnFileDelete()
{
CMyDialogI dialog(this);
dialog.DoModal();
}
void CMyFrameWnd::OnFileSave40003()
{
CString string="Виконала студентка групи 1КІ-11Б \nКолесніченко Марина Андріївна";
CFileDialog DlgSave(FALSE,"txt","",OFN_HIDEREADONLY,
"Text file (*.txt)|*.txt|All Files(*.*)|*.*|",this);
if(DlgSave.DoModal()==IDOK){
CStdioFile File(DlgSave.GetPathName(),
CFile::modeCreate | CFile::modeWrite);
File.WriteString(LPCSTR(string));
}
void CMyFrameWnd::OnCalcRun()
{
CMyDialog dialog(this);
dialog.DoModal();
}
void CMyFrameWnd::OnFileRename()
{
CMyDialogII dialog(this);
dialog.DoModal();
}
void CMyFrameWnd::OnCalcDraw()
{
CGraphWnd * GraphWnd=new CGraphWnd(t his);
GraphWnd->ShowWindow(SW_SHOWNORMAL);
GraphWnd->UpdateWindow();
CClientDC DCS(GraphWnd);
char s[255];
float res;
float x=atof(buf);
HINSTANCE Dllasm;
Dllasm = LoadLibraryA("Dll.dll");
typedef float(* fDll)(float);
fDll calc;
calc=(fDll)GetProcAddress(Dllasm, "Calc");
res=calc(x);
sprintf(s,"%f",res);
FreeLibrary(Dllasm);
CPen pen;
CBrush brush;
pen.CreatePen( PS_SOLID, 2, RGB( 20, 100, 150));
brush.CreateHatchBrush(HS_CROSS, RGB( 200, 100, 100));
DCS.SelectObject(&pen);
DCS.SelectObject(&brush);
DCS.MoveTo(100, 110);
DCS.LineTo(500, 110);
CRect rect(60,300,460,250);
DCS.Rectangle(&rect);
CPoint mas[3];
mas[0].x=260;
mas[0].y=130;
mas[1].x=200;
mas[1].y=200;
mas[2].x=320;
mas[2].y=200;
DCS.Polygon(mas,3);
DCS.TextOut(200,350,"Result: ");
DCS.TextOut(250,350,s);
DCS.TextOut(600,100,"Курсова робота");
DCS.TextOut(600,120,"Колесніченко Марини Андріївни");
if(x<=0){
pen.CreatePen( PS_SOLID, 2, RGB( 20, 100, 150));
brush.CreateHatchBrush(HS_CROSS, RGB( 255, 0, 0));
}else if(x==12){
pen.CreatePen( PS_SOLID, 2, RGB( 20, 100, 150));
brush.CreateHatchBrush(HS_CROSS, RGB( 0, 0, 255));
}else if(x==24){
pen.CreatePen( PS_SOLID, 2, RGB( 20, 100, 150));
brush.CreateHatchBrush(HS_CROSS, RGB( 0, 255, 0));
}else{
pen.CreatePen( PS_SOLID, 2, RGB( 20, 100, 150));
brush.CreateHatchBrush(HS_CROSS, RGB( 200, 100, 100));
}
DCS.SelectObject(&pen);
DCS.SelectObject(&brush);
DCS.Ellipse(20, 20, 200, 200);
DCS.Ellipse(500, 20, 320, 200);
}
