程序設(shè)計(jì)課程設(shè)計(jì)---類(lèi)似于“記事本”的文本編輯器_第1頁(yè)
已閱讀1頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  2011年 11月 7日</p><p>  目 錄</p><p>  1設(shè)計(jì)目的………………………………………………………………………3</p><p>  2 設(shè)計(jì)題目及要求……………………………………………………3<

2、;/p><p>  3設(shè)計(jì)算法分析………………………………………………………………3</p><p>  3.1 模塊調(diào)用層次圖………………………………………………3</p><p>  3.2 核心算法描述………………………………………………………6</p><p>  3.3 系統(tǒng)特點(diǎn)………………………………………………………6</p&

3、gt;<p>  4程序代碼………………………………………………………………………6</p><p>  5調(diào)試情況……………………………………………………………………11</p><p>  6結(jié)論……………………………………………………………………………11</p><p>  參考文獻(xiàn) ………………………………………………………………12&l

4、t;/p><p>  類(lèi)似于“記事本” 的文本編輯器</p><p><b>  1.設(shè)計(jì)目的</b></p><p>  本課程設(shè)計(jì)的目的就是要通過(guò)一次集中的強(qiáng)化訓(xùn)練,使學(xué)生能及時(shí)鞏固已學(xué)的知識(shí),補(bǔ)充未學(xué)的但又必要的內(nèi)容。進(jìn)行課程設(shè)計(jì)目的在于加深對(duì)程序設(shè)計(jì)基礎(chǔ)中基礎(chǔ)理論和基本知識(shí)的理解,促進(jìn)理論與實(shí)踐的結(jié)合,進(jìn)一步提高程序設(shè)計(jì)的能力。具體目的如下

5、:</p><p>  1.使學(xué)生更深入地理解和掌握該課程中的有關(guān)基本概念,程序設(shè)計(jì)思想和方法。</p><p>  2.培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí)獨(dú)立完成課題的能力。</p><p>  3.培養(yǎng)學(xué)生勇于探索、嚴(yán)謹(jǐn)推理、實(shí)事求是、有錯(cuò)必改,用實(shí)踐來(lái)檢驗(yàn)理論,全方位考慮問(wèn)題等科學(xué)技術(shù)人員應(yīng)具有的素質(zhì)。</p><p>  4.提高學(xué)生對(duì)工作認(rèn)真

6、負(fù)責(zé)、一絲不茍,對(duì)同學(xué)團(tuán)結(jié)友愛(ài),協(xié)作攻關(guān)的基本素質(zhì)。</p><p>  5.培養(yǎng)學(xué)生從資料文獻(xiàn)、科學(xué)實(shí)驗(yàn)中獲得知識(shí)的能力,提高學(xué)生從別人經(jīng)驗(yàn)中找到解決問(wèn)題的新途徑的悟性,初步培養(yǎng)工程意識(shí)和創(chuàng)新能力。</p><p>  6.對(duì)學(xué)生掌握知識(shí)的深度、運(yùn)用理論去處理問(wèn)題的能力、實(shí)驗(yàn)?zāi)芰?、課程設(shè)計(jì)能力、書(shū)面及口頭表達(dá)能力進(jìn)行考核。</p><p><b>  2

7、.設(shè)計(jì)題目及要求</b></p><p>  【1】類(lèi)似于“記事本”的文本編輯器</p><p>  設(shè)計(jì)一個(gè)文本編輯器,具有對(duì)文本等進(jìn)行讀寫(xiě)等基本操作,類(lèi)似于Windows中的記事本。</p><p><b>  【2】要求</b></p><p><b>  實(shí)現(xiàn)如下功能:</b>&

8、lt;/p><p>  能夠?qū)崿F(xiàn)基本的文本文件讀取、保存、設(shè)置字體等功能。</p><p>  具有菜單、工具欄和狀態(tài)欄。</p><p>  ★實(shí)現(xiàn)其它相關(guān)功能(如字體、剪貼板的操作,查找、打印預(yù)覽等功能)</p><p><b>  ★實(shí)現(xiàn)多文檔界面</b></p><p><b>  

9、3.設(shè)計(jì)算法分析</b></p><p>  3.1 模塊調(diào)用層次圖</p><p><b>  【1】變量描述</b></p><p>  【2】系統(tǒng)模塊調(diào)用層次圖</p><p>  基于面向?qū)ο蟮脑O(shè)計(jì),沒(méi)有模塊調(diào)用層次圖。</p><p>  程序的實(shí)現(xiàn)過(guò)程如下:</p&g

10、t;<p><b>  設(shè)計(jì)窗口類(lèi)</b></p><p><b>  注冊(cè)窗口類(lèi)</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類(lèi)庫(kù)中的_tWinMain()函數(shù),找到這個(gè)windows框架結(jié)構(gòu)的入口函數(shù)后,再依次以上圖示意調(diào)用各個(gè)類(lèi),最后產(chǎn)生文本編輯器這個(gè)框架程序。</p>

12、<p>  構(gòu)成應(yīng)用程序的對(duì)象之間的關(guān)系:</p><p><b>  3.2核心算法描述</b></p><p><b>  3.3 系統(tǒng)特點(diǎn)</b></p><p>  【1】特點(diǎn):一個(gè)多文檔的界面的類(lèi)似于“記事本”的文本編輯器。</p><p>  該編輯器與記事本相比多了改變字

13、體大小、顏色、自體類(lèi)型的功能,還增加了查找,替換,顯示圖片,顯示時(shí)間等功能。</p><p>  【2】分工:本程序的編寫(xiě)完全由我個(gè)人完成,未和任何人分組。</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生成的記事本的編寫(xiě)</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類(lèi)中用CfontDialog實(shí)現(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)欄增加一個(gè)窗格</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)時(shí)間</p><p>  CString s=time.Format("%H: %M&quo

35、t;);</p><p>  m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),s);//更新時(shí)間窗格顯示的時(shí)間</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é)果不是很讓人滿(mǎn)意,因?yàn)槭冀K不能實(shí)現(xiàn)根據(jù)用戶(hù)的選擇更改字體的愿望,不過(guò)能實(shí)現(xiàn)基本的字的輸入、刪除、空格等操作。</p><p><b>  5.調(diào)試情況</b></p><p>  在調(diào)試過(guò)程中出現(xiàn)的一些問(wèn)題:</p><p>  VC提供的類(lèi)庫(kù)函數(shù)對(duì)大小寫(xiě)的要求是十分嚴(yán)格的,

40、所以很容易出現(xiàn)錯(cuò)誤,根據(jù)編譯時(shí)提供的錯(cuò)誤信息進(jìn)行修正還是很有幫助的。</p><p>  成員變量要定義在頭文件中,否則在程序還沒(méi)有生成的時(shí)候這個(gè)變量會(huì)在程序還沒(méi)有生成之前就被析構(gòu)了,就不能得到我們預(yù)期的效果了。</p><p>  View類(lèi)始終是覆蓋在框架類(lèi)之上的,所以我們要捕獲鼠標(biāo)左鍵點(diǎn)擊的操作時(shí)要在View中進(jìn)行,如果在框架類(lèi)中進(jìn)行編程,就會(huì)造成不必要的麻煩,添加編程的麻煩。<

41、;/p><p><b>  6.結(jié)論</b></p><p>  這個(gè)文本編輯器的代碼編寫(xiě)還是相對(duì)較簡(jiǎn)單的,用VC6.0的MFC開(kāi)發(fā)工具,直接就可以生成一個(gè)基于windows的框架類(lèi)程序,不用編寫(xiě)很煩雜的框架程序調(diào)用函數(shù),只需了解MFC這個(gè)編程工具,學(xué)會(huì)查詢(xún)MSDN調(diào)用微軟提供的類(lèi)庫(kù)及各種接口,就會(huì)使編寫(xiě)這個(gè)記事本程序簡(jiǎn)單很多。但是第一次接觸MFC,并且MFC龐大的庫(kù)函數(shù)

42、也并不不易理解,在編程過(guò)程中也耗費(fèi)了大量的時(shí)間,主要是去學(xué)習(xí)windows框架程序的內(nèi)部調(diào)用機(jī)制,以及VC封裝的各種庫(kù)函數(shù)的點(diǎn)用方法。</p><p>  我用的是C++這個(gè)高級(jí)程序語(yǔ)言開(kāi)發(fā)工具,通過(guò)這次的課程設(shè)計(jì),增加了對(duì)MFC編程環(huán)境的認(rèn)識(shí),也加深了對(duì)c++語(yǔ)言的認(rèn)識(shí)了解,基本能明白windows框架程序內(nèi)部生成的一個(gè)過(guò)程以及其內(nèi)部調(diào)用的機(jī)制,一定程度上也深一步地認(rèn)意識(shí)到面向?qū)ο蟮乃枷搿?lt;/p>

43、<p><b>  參考文獻(xiàn)</b></p><p>  《C++實(shí)用教程》 丁有和 編著 電子工業(yè)出版社 2009年</p><p>  《C++語(yǔ)言程序設(shè)計(jì)(第3版)》 鄭莉 董淵 張瑞豐 編著 清華大學(xué)出版社 2009年</p><p>  《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)》 嚴(yán)蔚敏 吳偉民 編著 清華大學(xué)出版社 2010年</

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論