版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> C++面向?qū)ο笳n程設(shè)計報告</p><p> 院(系): 計算機工程學(xué)院 </p><p> 專業(yè): 網(wǎng)絡(luò)工程專業(yè) </p><p> 學(xué)生姓名: </p>&l
2、t;p> 班級:_ __ 學(xué)號: 000 </p><p> 題目: _吹泡泡課程設(shè)計________ </p><p><b> 一.需求分析: </b></p><p><b> 1.要求與功能:</b></p><p> 世界經(jīng)濟的快
3、速發(fā)展和計算機技術(shù)的日益成熟,計算機被應(yīng)用到人類生活的各個領(lǐng)域,各種應(yīng)用軟件相繼問世,嚴峻的形勢在提醒我們要跟上時代的步伐,不斷的去創(chuàng)新和完善。所以,我們必須學(xué)習更多的知識和編程工具來提高自身的能力。</p><p> 要求用鼠標左鍵隨機在客戶區(qū)任何地方單擊,可產(chǎn)生一個圓形的泡泡(泡泡的大小隨機產(chǎn)生);可通過顏色對話框選擇不同的顏色,繪出不同顏色的泡泡;可以保存文檔,并能打開文檔。程序?qū)儆谝粋€簡單的小游戲,需要
4、用到畫圖,文檔等的操作,更考驗了對MFC對程序的封裝性及內(nèi)聯(lián)函數(shù)的掌握與應(yīng)用。當代社會,目前Windows已成為微機上的主流操作系統(tǒng),幾乎成為大家離不開的必要需求,在Windows平臺上進行軟件開發(fā)也已成為程序設(shè)計的主流,所以熟悉并掌握初級的可視化編程方法對我們未來的發(fā)展有直觀重要的作用,也幫助我們把握了現(xiàn)代化使用工具的流行趨勢。程序使用的MFC應(yīng)用程序必須有且只能有一個從WinApp類派生的全局應(yīng)用程序?qū)ο螅藢ο笤谶\行時刻控制應(yīng)用程
5、序中所有其他對象的活動。通過此項設(shè)計,了解C++編程的基本工作原理和思想,培養(yǎng)分析,解決問題的能力。</p><p> 2. 程序功能分析:</p><p> 能夠在客戶區(qū)任意地方點擊即產(chǎn)生一個圓形的泡泡;利用基于框架窗口的應(yīng)用程序使編程更加簡單清晰。能夠?qū)Ξa(chǎn)生的文檔進行保存,打印,打印預(yù)覽等一些的功能;并可以在窗口區(qū)新建文檔或者關(guān)閉,打開新文檔。程序運行過程中須保證不因操作頻繁而產(chǎn)生
6、系統(tǒng)錯誤,系統(tǒng)安全,可靠,功能齊全,操作方便,界面友好,容易對程序的不足之處進行修改,在程序已有的功能上利用修改,或添加一些數(shù)據(jù)成員或函數(shù)來增加更多的功能,保證程序有良好的移植性和可擴充性。例如可以改善文檔的打印預(yù)覽效果,進一步可以添加函數(shù)使得在泡泡窗口可以畫出矩形或其他圖形并錄入字符,且對字符可是進行各種增刪,修改操作。程序應(yīng)用了對話框,程序利用它可以和用戶進行交互式操作,對話框是應(yīng)用程序,用于顯示或提示并等待用戶輸入一個或多個控件,
7、利用這些控件,用戶可以輸入文本,選擇選項,并完成某一些特定命令。</p><p><b> 二.設(shè)計內(nèi)容</b></p><p> 1.程序模塊圖 </p><p><b> 程序流程圖</b></p><p><b> 是 </b></p&g
8、t;<p> 否 </p><p><b> 3.程序代碼</b></p><p> // 文檔類 /////</p><p> class CMyDoc : public CDocument</p
9、><p><b> {</b></p><p> DECLARE_DYNCREATE(CMyDoc)</p><p> CArray <CRect, CRect&> m_rectBubble;</p><p><b> public:</b></p><
10、p><b> CMyDoc();</b></p><p> intGetListSize(){return m_rectBubble.GetSize();}</p><p> CRectGetBubble(int index){return m_rectBubble[index];}</p><p> voidAddBubb
11、le(CRect rect){m_rectBubble.Add(rect);}</p><p> virtual BOOL OnNewDocument();</p><p> virtual void DeleteContents();</p><p> virtual void Serialize(CArchive& ar);</p>
12、<p><b> };</b></p><p> IMPLEMENT_DYNCREATE(CMyDoc, CDocument)</p><p> // 構(gòu)造函數(shù):調(diào)用SDI,做初始化工作.SDI為單文檔界面程序</p><p> CMyDoc::CMyDoc()</p><p><b> {
13、</b></p><p> m_rectBubble.SetSize(256, 256);// 設(shè)置數(shù)組參數(shù)</p><p><b> }</b></p><p> // 打開新文檔時調(diào)用,做初始化工作</p><p> BOOL CMyDoc::OnNewDocument()</p>
14、<p><b> {</b></p><p> if (!CDocument::OnNewDocument())</p><p> return FALSE;</p><p> srand((unsigned)time(NULL)); // 初始化隨機數(shù)發(fā)生器</p><p> return TRU
15、E;</p><p><b> }</b></p><p> // 關(guān)閉文檔、建立新文檔前調(diào)用</p><p> void CMyDoc::DeleteContents() </p><p><b> {</b></p><p> m_rectBubble.Remo
16、veAll(); // 泡泡數(shù)組清零</p><p> CDocument::DeleteContents();</p><p><b> }</b></p><p> //讀寫文檔時自動調(diào)用</p><p> void CMyDoc::Serialize(CArchive &ar) </p>
17、<p><b> {</b></p><p> m_rectBubble.Serialize(ar);</p><p><b> }</b></p><p> // 視圖類 /////// </p><p> class CMyView : public CView</
18、p><p><b> {</b></p><p> DECLARE_DYNCREATE(CMyView)</p><p><b> public:</b></p><p> CMyDoc* GetDocument(){return (CMyDoc*)m_pDocument;}</p>
19、<p> virtual void OnInitialUpdate();</p><p> virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);</p><p> virtual void OnDraw(CDC* pDC);</p><p> afx_msg void OnLButtonDown(
20、UINT nFlags, CPoint point); //afx_msg標記的消息處理成員函數(shù)</p><p> DECLARE_MESSAGE_MAP()</p><p><b> };</b></p><p> IMPLEMENT_DYNCREATE(CMyView, CView)</p><p> BEG
21、IN_MESSAGE_MAP(CMyView, CView)</p><p> ON_WM_LBUTTONDOWN()</p><p> ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)</p><p> ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)</
22、p><p> ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)</p><p> END_MESSAGE_MAP()</p><p> // 建立新文檔,打開文檔時調(diào)用</p><p> void CMyView::OnInitialUpdate()</p&
23、gt;<p><b> {</b></p><p> CView::OnInitialUpdate();</p><p> Invalidate(); </p><p><b> }</b></p><p> void CMyView::OnDraw(CDC* pDC)<
24、;/p><p><b> {</b></p><p> CMyDoc* pDoc = GetDocument();</p><p> ASSERT_VALID(pDoc);</p><p> pDC->SelectStockObject(LTGRAY_BRUSH); </p><p&
25、gt; for(int i=0; i<pDoc->GetListSize(); i++)</p><p> pDC->Ellipse(pDoc->GetBubble(i));</p><p><b> }</b></p><p><b> // 消息響應(yīng)函數(shù)</b></p>&
26、lt;p> void CMyView::OnLButtonDown(UINT nFlags, CPoint point)</p><p><b> {</b></p><p> CMyDoc* pDoc = GetDocument();// 取文檔指針</p><p> ASSERT_VALID(pDoc);</p>
27、;<p> int r = rand()%50+5;</p><p> CRect rectBubble(point.x-r, point.y-r, point.x+r, point.y+r);</p><p> pDoc->AddBubble(rectBubble);// 修改文檔數(shù)據(jù)</p><p> pDoc->Se
28、tModifiedFlag();</p><p> InvalidateRect(rectBubble, FALSE);//文檔數(shù)據(jù)產(chǎn)生變更后,要更新試圖數(shù)據(jù)</p><p><b> }</b></p><p> // 設(shè)置打印參數(shù)</p><p> BOOL CMyView::OnPreparePri
29、nting(CPrintInfo* pInfo)</p><p><b> {</b></p><p> pInfo->SetMaxPage(1); </p><p> return DoPreparePrinting(pInfo);</p><p><b> }</b></p
30、><p> // 框架窗口類 ////// </p><p> class CMainFrame : public CFrameWnd</p><p><b> {</b></p><p> DECLARE_DYNCREATE(CMainFrame)</p><p><b> };
31、</b></p><p> IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)</p><p> // 應(yīng)用程序類 // </p><p> #define IDR_MAINFRAME128</p><p> class CMyApp : public CWinApp</p&g
32、t;<p><b> {</b></p><p><b> public:</b></p><p> virtual BOOL InitInstance();</p><p> DECLARE_MESSAGE_MAP()</p><p><b> };</b&
33、gt;</p><p> BEGIN_MESSAGE_MAP(CMyApp, CWinApp)</p><p> ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)</p><p> ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)</p><p> ON
34、_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)</p><p> END_MESSAGE_MAP()</p><p> // 建立,登記文檔</p><p> BOOL CMyApp::InitInstance()</p><p><b> {</b&
35、gt;</p><p> CSingleDocTemplate* pDocTemplate;</p><p> pDocTemplate = new CSingleDocTemplate( // 登記文檔模板</p><p> IDR_MAINFRAME,</p><p> RUNTIME_CLASS(CMyDoc),</p&g
36、t;<p> RUNTIME_CLASS(CMainFrame),</p><p> RUNTIME_CLASS(CMyView));</p><p> AddDocTemplate(pDocTemplate);</p><p> CCommandLineInfo cmdInfo; // 創(chuàng)建及處理命令行信息 SDI</p>
37、<p> ParseCommandLine(cmdInfo);</p><p> if (!ProcessShellCommand(cmdInfo))</p><p> return FALSE;</p><p> m_pMainWnd->ShowWindow(SW_SHOW);</p><p> m_pMainW
38、nd->UpdateWindow();</p><p> return TRUE;</p><p><b> }</b></p><p> // 全局應(yīng)用程序?qū)ο?lt;/p><p> CMyApp theApp;</p><p><b> 資源腳本文件:</b>
39、</p><p> #include "afxres.h"</p><p> #define IDR_MAINFRAME128</p><p> IDR_MAINFRAME MENU PRELOAD DISCARDABLE </p><p><b> BEGIN</b></p>
40、<p> POPUP "網(wǎng)絡(luò)082 張?zhí)靽蹬菖莩绦蛟O(shè)計"</p><p><b> BEGIN</b></p><p> MENUITEM "新建(&N)\tCtrl+N", ID_FILE_NEW</p><p> MENUITEM "打開(&O).
41、..\tCtrl+O", ID_FILE_OPEN</p><p> MENUITEM "保存(&S)\tCtrl+S", ID_FILE_SAVE</p><p> MENUITEM "另存為(&A)...", ID_FILE_SAVE_AS</p><p> MENUITE
42、M SEPARATOR</p><p> MENUITEM "打印(&P)...\tCtrl+P", ID_FILE_PRINT</p><p> MENUITEM "打印預(yù)覽(&V)", ID_FILE_PRINT_PREVIEW</p><p> MENUITEM "打印設(shè)置(
43、&R)...", ID_FILE_PRINT_SETUP</p><p> MENUITEM SEPARATOR</p><p> MENUITEM "退出(&X)", ID_APP_EXIT</p><p><b> END</b></p><
44、;p><b> END</b></p><p> STRINGTABLE PRELOAD DISCARDABLE </p><p><b> BEGIN</b></p><p> IDR_MAINFRAME "吹泡泡\n\nBub\nBub 文件 (*.egg)\n.egg"</p
45、><p><b> END</b></p><p> #include "l.chs\\afxres.rc"</p><p> #include "l.chs\\afxprint.rc"</p><p><b> 三.調(diào)試分析 </b></p>
46、<p> 1.程序完成的功能及支持的數(shù)據(jù)類型:</p><p> 程序完成了在客戶區(qū)打開一窗口程序,并在其中任意位置點擊即可產(chǎn)生一隨機的圓形泡泡。在菜單欄可對文檔進行保存,打印,預(yù)覽,設(shè)置,新建,打開等的功能。程序支持的數(shù)據(jù)類型:程序支持int型,bool型,(非true即false) 數(shù)組型。</p><p> 2,程序的性能分析:</p><p&
47、gt; 程序中一共用到4個類,即CMyApp、CMyWnd、CMyView和CMyDoc,它們分別是應(yīng)用程序類CWinApp、框架窗口類CFrameWnd、視圖類CView和文檔類CDocument的派生類。 </p><p> 文檔派生類CMyDoc用于管理吹泡泡程序的數(shù)據(jù),由于泡泡的數(shù)量是不定的,而大小和位置是通過int r = rand()%50+5;CRect rectBubble(point.x-
48、r, point.y-r, point.x+r, point.y+r);實現(xiàn)的,所以聲明了一個數(shù)組m_rectBubble來存放所有泡泡的數(shù)據(jù)。m_rectBubble是CMyDoc類的私有數(shù)據(jù)成員,在類外不可見;所以要定義一組成員函數(shù)作為該數(shù)據(jù)成員與外界的接口函數(shù)。函數(shù)GetListSize()用來統(tǒng)計數(shù)組中泡泡的個數(shù);函數(shù)GetBubble()用于從數(shù)組中取一個泡泡數(shù)據(jù);函數(shù)AddBubble()用于將一個泡泡的數(shù)據(jù)加入數(shù)組。 &l
49、t;/p><p> 視圖派生類的OnLButtonDown()函數(shù)用于響應(yīng)操作的鼠標消息,OnDraw()函數(shù)是試圖標準輸出函數(shù),在框架窗口的客戶區(qū)輸出,應(yīng)用程序類設(shè)置了三個消息響應(yīng)宏,用于進行文檔設(shè)置的菜單欄的選項。標準化的輸出函數(shù),不需要對這些消息響應(yīng)函數(shù)進行重載。在應(yīng)用程序類的InitInstance()函數(shù)中建立了一個文檔模板。 </p><p> 3.上機過程出現(xiàn)的問題及解決方案
50、:</p><p> 最開始編制的程序只是單純的畫出泡泡,本應(yīng)顯示的菜單欄沒有出現(xiàn),也不能完成相應(yīng)的操作,查找關(guān)于MFC的相關(guān)資料和請教他人發(fā)現(xiàn),問題出在沒有將所建文檔與響應(yīng)的操作對應(yīng)聯(lián)系起來,后來設(shè)置了文檔指針CMyDoc* pDoc = GetDocument();各個操作都必須將文檔初始化后利用指針進行關(guān)聯(lián),用pDoc->AddBubble(rectBubble);修改文檔數(shù)據(jù),在每次對文檔的打開,
51、關(guān)閉,創(chuàng)建新文檔前需進行對視圖的更新操作。</p><p> 由于畫出的泡泡一開始沒有設(shè)置大小和位置范圍,在對程序進行了多次運行后出現(xiàn)了錯誤,有時候會在文檔邊角出現(xiàn)半個或者不完整的泡泡,仔細分析發(fā)現(xiàn)是沒有對泡泡的半徑進行限制,后來加入設(shè)置位置和大小的函數(shù),int r = rand()%50+5;CRect rectBubble(point.x-r, point.y-r, point.x+r, point.y+r
52、);重新運行后解決了問題。</p><p> 4.程序中可以改進的地方及說明:</p><p> 1. 在對文檔進行打印預(yù)覽的時候,文檔中的泡泡出現(xiàn)在過于偏上的位置,用戶對文檔的內(nèi)容不能有很清楚的了解,修改一部分函數(shù),可以達到打印輸出與屏幕顯示的比例想接近。</p><p> 實現(xiàn)這個功能必須在CGraphicView類中重載虛函數(shù)OnPrepareDC()。
53、</p><p> 首先,在CGraphicView類的聲明中加上:</p><p> virtual void OnPrepareDC(CDC *pDC,CPrintInfo *pInfo=NULL);</p><p> 然后采用跟鼠標響應(yīng)消息函數(shù)一樣的方法,設(shè)置映射模式。</p><p> void CGraphicView::O
54、nPrepareDC(CDC *pDC,CPrintInfo *pInfo){pDC->SetMapMode(MM_LOMETRIC);CView::OnPrepareDC(pDC,pInfo);}</p><p> 在修改消息映射函數(shù)OnLButtonDown(),</p><p> void CGraphicView::OnLButtonDown(UINT nFlag
55、s,CPoint point){CMyDoc* pDoc = GetDocument(); </p><p> ASSERT_VALID(pDoc);CClientDC dc(this); OnPrepareDC(&dc);int r = rand()%50+5; CRect rect(point.x-r,point.y-r,point.x+r,point.y+r);Invalidate
56、Rect(rect,FALSE); dc.DPtoLP(rect); pDoc->AddBubble(rect); pDoc->SetModifiedFlag(); }</p><p> 這樣打印預(yù)覽效果比較好,文檔基本顯示在打印紙中部。</p><p> 輸入輸出:用鼠標左鍵在窗口客戶區(qū)吹泡泡。使用文件菜單中的打印選項可打印窗口圖象,圖象位于打印紙上部,比例恰當
57、.分 析:由于OnDraw()函數(shù)輸出使用邏輯坐標,所以存儲數(shù)據(jù)(泡泡的包含矩形)也使用邏輯坐標。在OnLButtonDown()函數(shù)中鼠標位置參數(shù)point為物理坐標,首先據(jù)此生成泡泡的包含矩形(物理坐標),更新窗口客戶區(qū)的相關(guān)區(qū)域(物理坐標),然后將物理坐標的泡泡包含矩形轉(zhuǎn)換為邏輯坐標并存入文檔。CView類的虛函數(shù)OnPrepareDC()用于設(shè)置設(shè)備環(huán)境,其原型為:virtual void OnPrepareDC( CDC
58、* pDC,CPrintInfo* pInfo = NULL );其中參數(shù)pDC為指向設(shè)備環(huán)境的指針,pInfo為指向CPrintInfo類對象的指針。CPrintInfo類用來存放與打印有關(guān)的信息,其數(shù)據(jù)成員m_nCurPage為當前打印頁的號碼;m_rectPage存放著當前打印紙上的可打印區(qū)域。常用成員函數(shù)有:設(shè)置從第幾頁開始打印。其原型為:void SetMinPage( UINT nMinPage );其中參數(shù)nMin
59、Page為開</p><p> 2. 繪制五顏六色的泡泡</p><p> 1.在程序首部添加文件包含命令:#include <afxdlgs.h>2.在框架窗口類聲明中添加一個COLORREF類型的數(shù)組,存放各泡泡的顏色:COLORREF m_colorBubble [MAX_BUBBLE];3.修改鼠標左鍵消息映射函數(shù),添加使用顏色選擇公用對話框的代碼:voi
60、d CMyWnd::OnLButtonDown ( UINT nFlags,CPoint point ){if(m_nBubbleCount < MAX_BUBBLE){m_colorBubble[m_nBubbleCount] = RGB(200,200,200);CColorDialog dlg(m_colorBubble[m_nBubbleCount]);if(dlg.DoModal() == IDOK)m_c
61、olorBubble[m_nBubbleCount] = dlg.GetColor();int r = rand()%50+10;CRect rect(point.x-r,point.y-r,point.x+r,point.y+r);m_rectBubble[</p><p> 5.程序中可以擴充的功能及設(shè)計實現(xiàn)構(gòu)想:</p><p> 修改程序部分功能,希望實現(xiàn)在文檔區(qū)中央顯示
62、一個矩形的框,并在其中可以顯示某個你提前設(shè)置的字符。</p><p> 在原程序中向派生類CmyWnd中添加OnPaint()函數(shù)。函數(shù)中設(shè)置畫筆以及繪制矩形的長,寬的參數(shù)。還要設(shè)置控制矩形位置的參數(shù),可以將上,下,左,右的坐標賦值,以此限定矩形在文檔中出現(xiàn)的位置。再添加字符串處理函數(shù),對要鍵入的字符進行錄入。更進一步的,可以在文檔中對顯示的字符進行刪除,修改等的操作。這需要設(shè)置數(shù)組指針,存放字符數(shù)組,便于對其
63、進行操作。由于程序中的鼠標消息響應(yīng)函數(shù),所以,需設(shè)法將數(shù)組指針與消息宏映射聯(lián)系起來。</p><p><b> 四.用戶手冊</b></p><p><b> 1.運行環(huán)境:</b></p><p> 操作系統(tǒng):windowXP</p><p> 開發(fā)軟件:Visual C++ 6.0<
64、;/p><p><b> 2.操作過程及演示</b></p><p> 1.)用戶首先打開VC++6.0運行環(huán)境,在新建選項卡工程中選擇“win32 Application”,鍵入工程名,在新建文件中選擇選C++ source file鍵入文件名。</p><p><b> 2.)輸入源程序。</b></p>
65、<p> 3.)在新建選項卡中選擇資源腳本,鍵入名稱。將剛建立的資源文件關(guān)閉,然后使用菜單選項“File/Open”調(diào)出打開文件對話框,在其中選擇資源文件XX.rc,并在對話框底部的Open As組合框中選擇Text(以文本方式打開),按下“打開(O)”按鈕以文本方式重新打開資源文件。將原來的所有內(nèi)容刪除,替換為文本02.Txt的內(nèi)容。(02.txt內(nèi)容見附錄)。在菜單欄工程欄選擇設(shè)置,在常規(guī)選項卡下選擇“使用MFC作為
66、共享的DLL”。如圖</p><p> 4.)運行程序,出現(xiàn)畫出泡泡的界面。鼠標左鍵點擊隨即畫出圓形泡泡,大小隨機。使用顏色設(shè)置對話框選擇改變泡泡顏色。完成后可以對文檔進行新建,打開,保存,另存等的操作。至此,程序運行結(jié)束。</p><p><b> 3.運行結(jié)果</b></p><p><b> 程序截圖如下:</b&g
67、t;</p><p><b> 畫泡泡:</b></p><p><b> 保存:</b></p><p> 打印預(yù)覽(可以改進)</p><p><b> 關(guān)閉,新建:</b></p><p><b> 五.設(shè)計總結(jié)</b&g
68、t;</p><p> 此次課程設(shè)計的內(nèi)容為在客戶區(qū)實現(xiàn)吹泡泡的功能,程序的完成需要用到數(shù)組,類,派生,重載,以及封裝,內(nèi)聯(lián)函數(shù),以及對消息響應(yīng)函數(shù)的了解和簡單操作。MFC中用包含矩形表示。需要設(shè)置一數(shù)組,每當用戶按下鼠標左鍵時,就產(chǎn)生一個泡泡的數(shù)據(jù)存入數(shù)組中。</p><p> 首先程序中需設(shè)置一個存放所有泡泡的包含矩形的數(shù)組m_rectBubble。m_rectBubble設(shè)置為類
69、CMyDoc的私有數(shù)據(jù)成員。函數(shù)函數(shù)GetBubble()用于從數(shù)組中取一個泡泡的包含矩形;函數(shù)AddBubble()用于將一個泡泡的包含矩形加入數(shù)組。以上為對泡泡數(shù)據(jù)的存放與處理過程。由于是首次接觸MFC編程,MFC的封裝性能使程序的書寫變得很簡單,但同時增加了理解難度,找了很多關(guān)于MFC的資料和視頻學(xué)習基本的類和派生,更重要的是它的消息響應(yīng)函數(shù)的實現(xiàn)功能;可視化的編程界面友好,清晰而美觀。通過吹泡泡的課程設(shè)計,總結(jié)了一點經(jīng)驗,一開始
70、的程序只能實現(xiàn)單純的吹泡泡,因為有了MFC的強大的擴展功能,在一個簡單的程序中修改添加響應(yīng)函數(shù),進一步實現(xiàn)了保存等的菜單功能,在此基礎(chǔ)上,程序可以實現(xiàn)更多的功能,MFC為此提供了很好的平臺。在兩周的學(xué)習中,時間緊迫,有點手忙腳亂,程序做的也不盡人意,還有很多要改進和完善的地方。最大的收獲是學(xué)習了新的編程知識,擴展了視野。自己學(xué)習的過程,對產(chǎn)生的錯誤需要多方查證才能進行改善,這樣比平時更加深了對知識的理解與掌握力。對學(xué)習是很好的鞏固和提高
71、。</p><p> 由于對MFC來說我還是個初學(xué)者,一開始照著資料慢慢的測試運行,很多東西只看懂形勢而不懂意義。在調(diào)試與實現(xiàn)的過程中逐步開始對程序有了深入的認識,逐漸熟練并掌握了它的編程方法。對各種控制結(jié)構(gòu)及語句、數(shù)組的基本與高級應(yīng)用、指針數(shù)組、字符數(shù)組、動態(tài)數(shù)組、函數(shù)的定義、調(diào)用方式;函數(shù)在編程中的具體應(yīng)用;以及變量存儲特征與標識符的作用域,通過實踐,使我在這些方面有了認識和提高。課程設(shè)計它是一項任務(wù),更是
72、一種挑戰(zhàn)和歷練。在課程設(shè)計中,為了使用時方便,著重對不足方面的知識進行了分析與理解,在這一過程中對文件的操作有了很大的提高。通過實際的演練,可以增強對知識的理解和運用能力。</p><p> 大體上對MFC有個了解,知道它的概念、組成,從較簡單的類入手,由淺入深,循序漸進、不斷學(xué)習。一開始使用MFC提供的類時,只了解了它的一些常用的方法、外部接口,它的細節(jié)和內(nèi)部實現(xiàn)比較復(fù)雜,把它當做一個模塊來用,學(xué)會了一種抽象
73、的學(xué)習方法。在學(xué)到一定程度時,再稍微深入研究,采用繼承的方法對原有的類的行為進行修改和擴充,派生出自己所需的類。在研究MFC的類時,MSDN內(nèi)的幫助信息對我提供了重要的幫助。 學(xué)習MFC,我感受到很重要的一點是學(xué)會理解MFC應(yīng)用程序的框架結(jié)構(gòu),而不是強迫記憶大量的類成員、方法及其參數(shù)等細節(jié)。這樣不斷再繼續(xù)研究學(xué)習,進一步對MFC的使用方法達到深入的掌握。</p><p> 這次歷時兩周的課程設(shè)計,發(fā)現(xiàn)自己有很多
74、不足,自己有很多知識漏洞,看到了自己的實踐經(jīng)驗比較缺乏,理論聯(lián)系實際的能了還需要提高。但在實際動手的過程中,學(xué)到了比在課本上還深刻的理論和實際操作知識,積累了寶貴的經(jīng)驗,這為以后的學(xué)習進步提供了借鑒和基礎(chǔ)。</p><p> C++課程設(shè)計是計算機科學(xué)與技術(shù)專業(yè)重要的實踐性教學(xué)環(huán)節(jié)之一,本次設(shè)計結(jié)合實際應(yīng)用的要求,使課程設(shè)計既覆蓋C++的知識點,又接近工程實際需要。目的是通過課程設(shè)計的綜合訓(xùn)練,培養(yǎng)我們實際分析
75、問題、解決問題的能力,以及編程和動手能力,最終目標是通過課程設(shè)計這種形式,幫助自身系統(tǒng)掌握C++這門課程的主要內(nèi)容,養(yǎng)成良好的編程習慣,更好的完成教學(xué)任務(wù)。</p><p><b> 六.附錄</b></p><p> #include <afxwin.h></p><p> #include <afxext.h>
76、</p><p> #include <afxtempl.h></p><p> #include "afxres.h"</p><p> #include "l.chs\\afxres.rc"</p><p> #include "l.chs\\afxprint.rc&q
77、uot;</p><p><b> 吹泡泡.cpp</b></p><p><b> 吹泡泡.rc</b></p><p><b> 七.主要參考文獻:</b></p><p> 1.鄭莉.C++語言程序設(shè)計(第3版).北京:清華大學(xué)出版社,2005.7</p&g
78、t;<p> 2.錢能.C++程序設(shè)計教程(第2版).北京:清華大學(xué)出版社,2005.8</p><p> 3. 黃維通. Visual C++面向?qū)ο笈c可視化程序設(shè)計(第2版).北京:清華大學(xué)出版社,2003.12</p><p> 4. 劉路放. Visual C++與面向?qū)ο蟪绦蛟O(shè)計教程(第二版). 北京:高等教育出版社,2007.8</p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論