版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p><b> 課程設計報告</b></p><p> 2011年 11月 7日</p><p> 目 錄</p><p> 1設計目的………………………………………………………………………3</p><p> 2 設計題目及要求……………………………………………………3<
2、;/p><p> 3設計算法分析………………………………………………………………3</p><p> 3.1 模塊調(diào)用層次圖………………………………………………3</p><p> 3.2 核心算法描述………………………………………………………6</p><p> 3.3 系統(tǒng)特點………………………………………………………6</p&
3、gt;<p> 4程序代碼………………………………………………………………………6</p><p> 5調(diào)試情況……………………………………………………………………11</p><p> 6結(jié)論……………………………………………………………………………11</p><p> 參考文獻 ………………………………………………………………12&l
4、t;/p><p> 類似于“記事本” 的文本編輯器</p><p><b> 1.設計目的</b></p><p> 本課程設計的目的就是要通過一次集中的強化訓練,使學生能及時鞏固已學的知識,補充未學的但又必要的內(nèi)容。進行課程設計目的在于加深對程序設計基礎中基礎理論和基本知識的理解,促進理論與實踐的結(jié)合,進一步提高程序設計的能力。具體目的如下
5、:</p><p> 1.使學生更深入地理解和掌握該課程中的有關(guān)基本概念,程序設計思想和方法。</p><p> 2.培養(yǎng)學生綜合運用所學知識獨立完成課題的能力。</p><p> 3.培養(yǎng)學生勇于探索、嚴謹推理、實事求是、有錯必改,用實踐來檢驗理論,全方位考慮問題等科學技術(shù)人員應具有的素質(zhì)。</p><p> 4.提高學生對工作認真
6、負責、一絲不茍,對同學團結(jié)友愛,協(xié)作攻關(guān)的基本素質(zhì)。</p><p> 5.培養(yǎng)學生從資料文獻、科學實驗中獲得知識的能力,提高學生從別人經(jīng)驗中找到解決問題的新途徑的悟性,初步培養(yǎng)工程意識和創(chuàng)新能力。</p><p> 6.對學生掌握知識的深度、運用理論去處理問題的能力、實驗能力、課程設計能力、書面及口頭表達能力進行考核。</p><p><b> 2
7、.設計題目及要求</b></p><p> 【1】類似于“記事本”的文本編輯器</p><p> 設計一個文本編輯器,具有對文本等進行讀寫等基本操作,類似于Windows中的記事本。</p><p><b> 【2】要求</b></p><p><b> 實現(xiàn)如下功能:</b>&
8、lt;/p><p> 能夠?qū)崿F(xiàn)基本的文本文件讀取、保存、設置字體等功能。</p><p> 具有菜單、工具欄和狀態(tài)欄。</p><p> ★實現(xiàn)其它相關(guān)功能(如字體、剪貼板的操作,查找、打印預覽等功能)</p><p><b> ★實現(xiàn)多文檔界面</b></p><p><b>
9、3.設計算法分析</b></p><p> 3.1 模塊調(diào)用層次圖</p><p><b> 【1】變量描述</b></p><p> 【2】系統(tǒng)模塊調(diào)用層次圖</p><p> 基于面向?qū)ο蟮脑O計,沒有模塊調(diào)用層次圖。</p><p> 程序的實現(xiàn)過程如下:</p&g
10、t;<p><b> 設計窗口類</b></p><p><b> 注冊窗口類</b></p><p><b> 創(chuàng)建窗口</b></p><p><b> 顯示窗口</b></p><p><b> 更新窗口</b
11、></p><p><b> 消息循環(huán)</b></p><p><b> 窗口處理函數(shù)</b></p><p> 首先由全局變量theApp,鏈接到VC類庫中的_tWinMain()函數(shù),找到這個windows框架結(jié)構(gòu)的入口函數(shù)后,再依次以上圖示意調(diào)用各個類,最后產(chǎn)生文本編輯器這個框架程序。</p>
12、<p> 構(gòu)成應用程序的對象之間的關(guān)系:</p><p><b> 3.2核心算法描述</b></p><p><b> 3.3 系統(tǒng)特點</b></p><p> 【1】特點:一個多文檔的界面的類似于“記事本”的文本編輯器。</p><p> 該編輯器與記事本相比多了改變字
13、體大小、顏色、自體類型的功能,還增加了查找,替換,顯示圖片,顯示時間等功能。</p><p> 【2】分工:本程序的編寫完全由我個人完成,未和任何人分組。</p><p><b> 4. 程序代碼</b></p><p><b> 【1】程序代碼</b></p><p> void CNot
14、eView::OnFont() </p><p><b> {</b></p><p> // TODO: Add your command handler code here</p><p> CFontDialog dlg;</p><p> if(IDOK==dlg.DoModal())</p>
15、<p><b> {</b></p><p> memcpy(&lf,dlg.m_cf.lpLogFont,sizeof(LOGFONT));</p><p> if(m_font.m_hObject)</p><p> m_font.DeleteObject();</p><p> m_
16、font.CreateFontIndirect(&lf);</p><p> Invalidate();</p><p> UpdateWindow();</p><p><b> }</b></p><p><b> }</b></p><p> void
17、 CNoteView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) </p><p><b> {</b></p><p> // TODO: Add your message handler code here and/or call default</p><p> CClientDC
18、dc(this);</p><p> dc.SelectObject(&this->m_font);</p><p> TEXTMETRIC tm;</p><p> dc.GetTextMetrics(&tm);</p><p> if(0x0d==nChar)</p><p><
19、b> {</b></p><p> m_strLine.Empty();</p><p> m_ptOrigin.y+=tm.tmHeight;</p><p><b> }</b></p><p> else if(0x08==nChar)</p><p><b
20、> {</b></p><p> COLORREF clr=dc.SetTextColor(dc.GetBkColor());</p><p> dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);</p><p> m_strLine=m_strLine.Left(m_strLine.GetLe
21、ngth()-1);</p><p> dc.SetTextColor(clr);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> m_strLine+=
22、nChar;</p><p><b> }</b></p><p> CSize sz=dc.GetTextExtent(m_strLine);</p><p> CPoint pt;</p><p> pt.x=m_ptOrigin.x+sz.cx;</p><p> pt.y=m_p
23、tOrigin.y;</p><p> SetCaretPos(pt);</p><p> dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);</p><p> CView::OnChar(nChar, nRepCnt, nFlags);</p><p><b> }</b
24、></p><p> void CNoteView::OnLButtonDown(UINT nFlags, CPoint point) </p><p><b> {</b></p><p> // TODO: Add your message handler code here and/or call default</p&
25、gt;<p> SetCaretPos(point);</p><p> m_strLine.Empty();</p><p> m_ptOrigin=point;</p><p> CView::OnLButtonDown(nFlags, point);</p><p><b> }</b>&l
26、t;/p><p> int CNoteView::OnCreate(LPCREATESTRUCT lpCreateStruct) </p><p><b> {</b></p><p> if (CView::OnCreate(lpCreateStruct) == -1)</p><p> return -1;<
27、;/p><p> // TODO: Add your specialized creation code here</p><p> CClientDC dc(this);</p><p> TEXTMETRIC tm;</p><p> dc.GetTextMetrics(&tm);</p><p>
28、CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);</p><p> ShowCaret();</p><p><b> return 0;</b></p><p> }//用CView生成的記事本的編寫</p><p> void CNoteView::OnFo
29、nt() </p><p><b> {</b></p><p> // TODO: Add your command handler code here</p><p> CHARFORMAT m_charFormat;</p><p> GetCharFormatSelection(); </p>
30、<p> CFontDialog dlg(m_charformat,CF_BOTH|CF_NOOEMFONTS); </p><p> if(dlg.DoModal()==IDOK) </p><p><b> { </b></p><p> dlg.GetCharFormat(m_charformat); </p&
31、gt;<p> SetCharFormat(m_charformat); </p><p><b> } </b></p><p> }//在CrichEditView類中用CfontDialog實現(xiàn)字體的變更</p><p> static UINT indicators[] =</p><p>
32、<b> {</b></p><p> ID_SEPARATOR, // status line indicator</p><p> ID_INDICATOR_CLOCK,//為狀態(tài)欄增加一個窗格</p><p> ID_INDICATOR_CAPS,</p><p> ID_INDICA
33、TOR_NUM,</p><p> ID_INDICATOR_SCRL,</p><p><b> };</b></p><p> void CMainFrame::OnTimer(UINT nIDEvent) </p><p><b> {</b></p><p>
34、 // TODO: Add your message handler code here and/or call default</p><p> CTime time;</p><p> time=CTime::GetCurrentTime();//獲得系統(tǒng)時間</p><p> CString s=time.Format("%H: %M&quo
35、t;);</p><p> m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),s);//更新時間窗格顯示的時間</p><p> CMDIFrameWnd::OnTimer(nIDEvent);</p><p><b> }</b>&l
36、t;/p><p> void CMainFrame::OnClose() </p><p><b> {</b></p><p> // TODO: Add your message handler code here and/or call default</p><p> KillTimer(1);</p&
37、gt;<p> CMDIFrameWnd::OnClose();</p><p><b> }</b></p><p> int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)</p><p><b> {</b></p><
38、p> SetTimer(1,1000,NULL);</p><p><b> return 0;</b></p><p> }//在CMainFrame::OnCreate中添加</p><p><b> 【2】程序執(zhí)行結(jié)果</b></p><p><b> 【3】結(jié)果的討
39、論</b></p><p> 結(jié)果不是很讓人滿意,因為始終不能實現(xiàn)根據(jù)用戶的選擇更改字體的愿望,不過能實現(xiàn)基本的字的輸入、刪除、空格等操作。</p><p><b> 5.調(diào)試情況</b></p><p> 在調(diào)試過程中出現(xiàn)的一些問題:</p><p> VC提供的類庫函數(shù)對大小寫的要求是十分嚴格的,
40、所以很容易出現(xiàn)錯誤,根據(jù)編譯時提供的錯誤信息進行修正還是很有幫助的。</p><p> 成員變量要定義在頭文件中,否則在程序還沒有生成的時候這個變量會在程序還沒有生成之前就被析構(gòu)了,就不能得到我們預期的效果了。</p><p> View類始終是覆蓋在框架類之上的,所以我們要捕獲鼠標左鍵點擊的操作時要在View中進行,如果在框架類中進行編程,就會造成不必要的麻煩,添加編程的麻煩。<
41、;/p><p><b> 6.結(jié)論</b></p><p> 這個文本編輯器的代碼編寫還是相對較簡單的,用VC6.0的MFC開發(fā)工具,直接就可以生成一個基于windows的框架類程序,不用編寫很煩雜的框架程序調(diào)用函數(shù),只需了解MFC這個編程工具,學會查詢MSDN調(diào)用微軟提供的類庫及各種接口,就會使編寫這個記事本程序簡單很多。但是第一次接觸MFC,并且MFC龐大的庫函數(shù)
42、也并不不易理解,在編程過程中也耗費了大量的時間,主要是去學習windows框架程序的內(nèi)部調(diào)用機制,以及VC封裝的各種庫函數(shù)的點用方法。</p><p> 我用的是C++這個高級程序語言開發(fā)工具,通過這次的課程設計,增加了對MFC編程環(huán)境的認識,也加深了對c++語言的認識了解,基本能明白windows框架程序內(nèi)部生成的一個過程以及其內(nèi)部調(diào)用的機制,一定程度上也深一步地認意識到面向?qū)ο蟮乃枷搿?lt;/p>
43、<p><b> 參考文獻</b></p><p> 《C++實用教程》 丁有和 編著 電子工業(yè)出版社 2009年</p><p> 《C++語言程序設計(第3版)》 鄭莉 董淵 張瑞豐 編著 清華大學出版社 2009年</p><p> 《數(shù)據(jù)結(jié)構(gòu)(C語言版)》 嚴蔚敏 吳偉民 編著 清華大學出版社 2010年</
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文本編輯器課程設計
- 文本編輯器課程設計報告
- java課程設計--- 記事本程序設計
- java課程設計--文本編輯器
- java課程設計---文本編輯器
- java課程設計---文本編輯器
- vb課程設計文本編輯器
- java課程設計(文本編輯器)
- java語言課程設計---記事本程序設計
- c語言課程設計--文本編輯器
- vb課程設計報告----文本編輯器
- vb課程設計報告---文本編輯器
- c_文本編輯器課程設計
- 簡易文本編輯器課程設計報告
- c_語言程序設計課程設計-- 記事本
- 課程設計----基于于java的記事本編輯器的設計與實現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設計--文本編輯器
- 操作系統(tǒng)課程設計---文本編輯器
- 微機原理課程設計—簡易文本編輯器
- c_編寫的文本編輯器課程設計
評論
0/150
提交評論