《程序設(shè)計(jì)課程設(shè)計(jì)》

上傳人:d**** 文檔編號(hào):117928389 上傳時(shí)間:2022-07-10 格式:DOCX 頁(yè)數(shù):13 大?。?10.35KB
收藏 版權(quán)申訴 舉報(bào) 下載
《程序設(shè)計(jì)課程設(shè)計(jì)》_第1頁(yè)
第1頁(yè) / 共13頁(yè)
《程序設(shè)計(jì)課程設(shè)計(jì)》_第2頁(yè)
第2頁(yè) / 共13頁(yè)
《程序設(shè)計(jì)課程設(shè)計(jì)》_第3頁(yè)
第3頁(yè) / 共13頁(yè)

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《《程序設(shè)計(jì)課程設(shè)計(jì)》》由會(huì)員分享,可在線閱讀,更多相關(guān)《《程序設(shè)計(jì)課程設(shè)計(jì)》(13頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、課程名稱(chēng): 課程設(shè)計(jì)題目: 姓 名: 系: 專(zhuān) 業(yè): 年 級(jí): 學(xué) 號(hào): 指導(dǎo)教師: 職 稱(chēng): 計(jì)算機(jī)系 計(jì)算機(jī)科學(xué)與技術(shù) 課程設(shè)計(jì)報(bào)告 程序設(shè)計(jì)課程設(shè)計(jì) 類(lèi)似于“記事本”的文本編輯器 2011年 11月 7日 1設(shè)計(jì)目的 3 2設(shè)計(jì)題目及要求 3 3設(shè)計(jì)算法分析 3 3.1模塊調(diào)用層次圖 3 3. 2核心算法描述 6 3.3系統(tǒng)特點(diǎn) 6 4程序代碼 6 5調(diào)試情況 11 6結(jié)論 11 參考文獻(xiàn) 12 類(lèi)似于“記事本”的文本編輯器 1. 設(shè)計(jì)目的 本課程設(shè)計(jì)的目的就是要通過(guò)一次集中的強(qiáng)化訓(xùn)練,使學(xué)生能及時(shí)鞏固己學(xué)的知識(shí),補(bǔ) 充未學(xué)的但

2、又必要的內(nèi)容。進(jìn)行課程設(shè)計(jì)目的在于加深對(duì)程序設(shè)計(jì)基礎(chǔ)中基礎(chǔ)理論和基本知 識(shí)的理解,促進(jìn)理論與實(shí)踐的結(jié)合,進(jìn)一步提高程序設(shè)計(jì)的能力。具體目的如下: 1. 使學(xué)生更深入地理解和掌握該課程中的有關(guān)基本概念,程序設(shè)計(jì)思想和方法。 2. 培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí)獨(dú)立完成課題的能力。 3. 培養(yǎng)學(xué)生勇于探索、嚴(yán)謹(jǐn)推理、實(shí)事求是、有錯(cuò)必改,用實(shí)踐來(lái)檢驗(yàn)理論,全方位 考慮問(wèn)題等科學(xué)技術(shù)人員應(yīng)具有的素質(zhì)。 4. 提高學(xué)生對(duì)工作認(rèn)真負(fù)責(zé)、一絲不茍,對(duì)同學(xué)團(tuán)結(jié)友愛(ài),協(xié)作攻關(guān)的基本素質(zhì)。 5. 培養(yǎng)學(xué)生從資料文獻(xiàn)、科學(xué)實(shí)驗(yàn)中獲得知識(shí)的能力,提高學(xué)生從別人經(jīng)驗(yàn)中找到解 決問(wèn)題的新途徑的悟性,初步培養(yǎng)工程意識(shí)和

3、創(chuàng)新能力。 6. 對(duì)學(xué)生掌握知識(shí)的深度、運(yùn)用理論去處理問(wèn)題的能力、實(shí)驗(yàn)?zāi)芰Α⒄n程設(shè)計(jì)能力、 書(shū)面及「1頭表達(dá)能力進(jìn)行考核。 2. 設(shè)計(jì)題目及要求 [1] 類(lèi)似于“記事本”的文本編輯器 設(shè)計(jì)一個(gè)文本編輯器,具有對(duì)文本等進(jìn)行讀寫(xiě)等基本操作,類(lèi)似于Wmdows中的 記事本。 [2] 要求 實(shí)現(xiàn)如下功能: (1) 能夠?qū)崿F(xiàn)基本的文本文件讀取、保存、設(shè)置字體等功能。 (2) 具有菜單、工具欄和狀態(tài)欄。 (3) ★實(shí)現(xiàn)其它相關(guān)功能(如字體、剪貼板的操作,查找、打印預(yù)覽等功能) (4) ★實(shí)現(xiàn)多文檔界面 3. 設(shè)計(jì)算法分析 3. 1模塊調(diào)用層次圖 [1]變量描述 定義形式/名

4、稱(chēng) 含義/作用 結(jié)構(gòu)體 CHOOSECOLOR CHOOSEFONT 一個(gè)是VC類(lèi)庫(kù)給出 的設(shè)置顏色的結(jié)構(gòu) 體,另一個(gè)是VC類(lèi) 庫(kù)給出的設(shè)置字體的 結(jié)構(gòu)體 全局變量 CNotepadApp tlieApp 用tlieApp這個(gè)全局變 量來(lái)獲取當(dāng)前應(yīng)用程 序?qū)嵗木浔? liliistance 文件 頭文件:ChildFimh MauiFrm.h notepad.h notepadDoc.h notepadView.h resource.!! StdAfx.h 源文件:ChildFrm.cpp MainFniLcpp notepad, cpp notepadD

5、oc.cpp notepadView.cpp StdAfx.cpp 定義了從 CMDICluldWnd 派 生的文檔框架窗口對(duì) 象 CTChildFrame 定義了從 CMDIFrameWnd 派 生的框架窗口對(duì)象 CMainFrame 定義了從 CDocument 派生的文檔對(duì)象 CTDoc 定義了從CView派 生的視圖對(duì)象 CTView 標(biāo)準(zhǔn)AFX頭文件 函數(shù) void CNotepadView: :OnColor() void CNotepadView: :OiiFontQ 用來(lái)改變字體顏色 用來(lái)改變字體大小和 格式 [2]系統(tǒng)模塊調(diào)用層次圖 基于而向?qū)?/p>

6、象的設(shè)計(jì),沒(méi)有模塊調(diào)用層次圖。 程序的實(shí)現(xiàn)過(guò)程如卜: 設(shè)計(jì)窗11類(lèi) I 注冊(cè)窗11類(lèi) I 創(chuàng)建窗11 顯小窗I I 更新窗11 消息循環(huán) 窗11處理函數(shù) 首先由全局變量theApp,鏈接到VC類(lèi)庫(kù)中的_tWuiMam()函數(shù),找到這個(gè)windows框架結(jié) 構(gòu)的入II函數(shù)后,再依次以上圖示意調(diào)用各個(gè)類(lèi),最后產(chǎn)生文本編輯器這個(gè)框架程序。 構(gòu)成應(yīng)用程序的對(duì)象之間的關(guān)系: 3. 2核心算法描述 主邊框窗I I對(duì)象 CMDIFrameWnd 工具條對(duì)象 CToorBar 文檔邊框窗II對(duì)象 CMDIChildFrame 視對(duì)象 CView 狀

7、態(tài)欄對(duì)象 CStatusB 3.3系統(tǒng)特點(diǎn) [1] 特點(diǎn):一個(gè)多文檔的界面的類(lèi)似于“記事本”的文本編輯器。 該編輯器與記事本相比多了改變字體大小、顏色、自體類(lèi)型的功能,還增加了 查找,替換,顯示圖片,顯示時(shí)間等功能。 [2] 分工:本程序的編寫(xiě)完全由我個(gè)人完成,未和任何人分組。 4. 程序代碼 [1]程序代碼 void CNoteView::OnFont() { // TODO: Add youi conmiand handler code here CFontDialog dig; if(IDOK==dlg.DoModal()) memcpy(&lf,dlg.m_c

8、f.lpLogFont,sizeof(LOGFONT)); if(m_fbnt.m_hObject) m_font.DeleteObject(); m_fbnt.CreateFontIiiduect(&lf); Invalidate。; Update Wiiidow(); } } void CT

9、; dc.SelectObject(&this->m_font); TEXTMETRIC tm; dc.GetTextMetncs(&tm); if(0x0d=nChar) f m_stiLme .Empty。; nvptOrigm.y+^tm.tniHeight; } else if(0x08=nChai) f COLORREF ch=dc.SetTextColoi(dc.GetBkColorQ); dc.TextOut(m_ptOrigm.xjik_ptOrigm.y,m_strLine); m_stiLme=m_stiLiiie.Left(m_strLine.G

10、etLength()-1); dc.SetTextColor(clr); } else f m_stiLme+=nChar; } C Size sz=dc. GetTextExtent(m_strLme); CPoint pt; pt.x=m_ptOrigin.x+sz.cx; pt.y=m__ptOngin.y; SetCaietPos(pt); dc.TextOut(m_ptOiigm.X4ii_ptOrigm.y,m_stiLine); CView:: OnChai (nChan iiRepCnt, iiFlags); } void C^oteView::O

11、nLButtoiiDown(UINT iiFlags, CPoint point) { // TODO: Add youi message handler code here and/or call default SetCaietPos(point); m_strLiiie .Empty (); m_ptOrigiii=point; C View:: OiiLButtoiiDown(iiFlags, point); } hit CNoteView::OnCreate(LPCREATESTRUCT IpCreateStiuct) { if (CView::OnCreate(

12、lpCreateStmct) == -1) return -1; // TODO: Add your specialized creation code here CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetncs(&tm); CieateSolidCaret(tm.tniAveChaiWidtlv8jm.tniHeight); ShowCaietQ; return 0; }〃用CView生成的記事本的編寫(xiě) void CNoteView::OnFont() { // TODO: Add youi conmiand ha

13、ndler code here CHARFORMAT m_charFormat; GetCharForniatSelection(); CFontDialog dlg(m_charfdrmat,CF_BOTH|CF_NOOEMFONTS); if(dlg.DoModal0=IDOK) dlg.GetChaiFormat(m_chai-format); SetCharForniat(m_chaifdnnat); } }〃在CricKEditView類(lèi)中用CfontDialog實(shí)現(xiàn)字體的變更 static UINT indicators[]= { ID_SEPARATOR,

14、// status line indicator ID_INDICATOR_CLOCK//為狀態(tài)欄增加一個(gè)窗格 ID INDICATOR CAPS, ID INDICATOR NUM. ID_INDICATOR_SCRL, }; void CMainFrame: :OnTuner(UINT iiIDEvent) { // TODO: Add your message handler code here and/or call default CTime time; tmie=CTmie:: GetCunentTime();// 獲得系統(tǒng)時(shí)間 CStrmg s=tiine.

15、Format(M%H: %M”); m_wndStatusBai-.SetPaneText(m_wndStatusBar.ConmiandToIiidex(ED_INDICArOR_CLOC K),s);〃更新時(shí)間窗格顯示的時(shí)間 CMDIFiameWnd:: OnTmiei (iiIDEvent); } void CMainFrame: :OnClose() { // TODO: Add your message handler code here and/or call default CMDIFiameWnd ::OnClose(); } mt CMaiiiFiame:

16、:OnCieate(LPCREATESTRUCT IpCreateStmct) SetTiiner( 1,1000.NULL); retuin 0; }〃在 CMamFrame::OnCreate 中添加 [2]程序執(zhí)行結(jié)果 :我用上面的5?映實(shí)可以實(shí)現(xiàn)2)中的功能,但是上面 【,以及2)的作用怎么在上面的程序中體現(xiàn)出來(lái)的? 在MFC中建立基于對(duì)話框的程序,在上面加了rich edit和BUTTC 1 Notepal 字體 字體但): 字形也): 大?。⊿): 仿宋 _GB2312 云宋珀體書(shū) 彩仿琥楮隸 體文文文文文 黑華華華華華 %0000 粗體 粗斜體 常

17、規(guī) 確定 取消 效果 示例 刪除跋催) 下劃線(U) 顏色(£): 微軟中文羽 字符集(£): CHINESE_GB2312 (3]結(jié)果的討論 結(jié)果不是很讓人滿(mǎn)意,因?yàn)槭冀K不能實(shí)現(xiàn)根據(jù)用戶(hù)的選擇更改字體的愿望,不過(guò)能實(shí)現(xiàn)基本 的字的輸入、刪除、空格等操作。 5. 調(diào)試情況 在調(diào)試過(guò)程中出現(xiàn)的一些問(wèn)題: VC提供的類(lèi)庫(kù)函數(shù)對(duì)大小寫(xiě)的要求是十分嚴(yán)格的,所以很容易出現(xiàn)錯(cuò)誤, 根據(jù)編譯時(shí)提供的錯(cuò)誤信息進(jìn)行修正還是很有幫助的。 成員變量要定義在頭文件中,否則在程序還沒(méi)有生成的時(shí)候這個(gè)變量會(huì)在 程序還沒(méi)有生成之前就被析構(gòu)了,就不能得到我們預(yù)期的效果了。

18、 View類(lèi)始終是覆蓋在框架類(lèi)之上的,所以我們要捕獲鼠標(biāo)左鍵點(diǎn)擊的操 作時(shí)要在View中進(jìn)行,如果在框架類(lèi)中進(jìn)行編程,就會(huì)造成不必要的麻煩, 添加編程的麻煩。 6. 結(jié)論 這個(gè)文本編輯器的代碼編寫(xiě)還是相對(duì)較簡(jiǎn)單的,用VC6.0的MFC開(kāi)發(fā)工具,直接就可 以生成一個(gè)基于wmdows的框架類(lèi)程序,不用編寫(xiě)很煩雜的框架程序調(diào)用函數(shù),只需了解 MFC這個(gè)編程工具,學(xué)會(huì)查詢(xún)MSDN調(diào)用微軟提供的類(lèi)庫(kù)及各種接II,就會(huì)使編寫(xiě)這個(gè)記 事本程序簡(jiǎn)單很多。但是第一次接觸MFC,并且MFC龐大的庫(kù)函數(shù)也并不不易理解,在編 程過(guò)程中也耗費(fèi)了大量的時(shí)間,主要是去學(xué)習(xí)windows框架程序的內(nèi)部調(diào)用機(jī)制,以及VC

19、封裝的各種庫(kù)函數(shù)的點(diǎn)用方法。 我用的是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ū)ο蟮乃枷搿? 參考文獻(xiàn) 1. 《C++實(shí)用教程》丁有和編著電子工業(yè)出版社2009年 2. 《C++語(yǔ)言程序設(shè)計(jì)(第3版)》鄭莉董淵張瑞豐編著清華大學(xué)出版社2009 年 3. 《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)》嚴(yán)蔚敏吳偉民編著清華大學(xué)出版社2010年 4. 《軟件工程導(dǎo)論(第5版)》張海藩 編著清華大學(xué)出版社2011年 5. 《MFC深入淺出》李久進(jìn) 編著1999年

展開(kāi)閱讀全文
溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!