版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院</p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p><b> 年 月 日</b></p><p> 課程設(shè)計(jì)報(bào)告結(jié)果評(píng)定</p><p><b> 目 錄</b></p><p&
2、gt; 采用技術(shù)----------------------------------------------------------</p><p> 1、visual studio 2005編輯環(huán)境-------------------------------</p><p> 2、C#的窗體編程-------------------------------------------
3、-------</p><p> 二、選題說(shuō)明------------------------------------------------------------ 三、總體說(shuō)明-----------------------------------------------------</p><p> 1、程序的基本結(jié)構(gòu)------------------------------
4、-----------------</p><p> 程序的主要技術(shù)---------------------------------------------</p><p> 四、詳細(xì)設(shè)計(jì)------------------------------------------------------------</p><p> 1、文件操作----------
5、----------------------------------------------</p><p> 編輯操作-------------------------------------------------------</p><p> 工具操作-------------------------------------------------------</p>
6、<p> 關(guān)于操作-------------------------------------------------------</p><p> 五、編碼與調(diào)試分析--------------------------------------------------</p><p> 六、運(yùn)行結(jié)果-------------------------------------
7、-----------------------</p><p> 七、課程設(shè)計(jì)心得體會(huì)----------------------------------------------</p><p> 八、部分程序代碼-----------------------------------------------------</p><p><b> 一、
8、采用技術(shù)</b></p><p> 1. visual studio 2005編輯環(huán)境</p><p> Visual Studio 是微軟公司推出的開(kāi)發(fā)環(huán)境。是目前最流行的 Windows 平臺(tái)應(yīng)用程序開(kāi)發(fā)環(huán)境。目前已經(jīng)開(kāi)發(fā)到 8.0 版本,也就是 Visual Studio 2005。 Visual Studio 可以用來(lái)創(chuàng)建 Windows 平臺(tái)下的 Win
9、dows 應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序,也可以用來(lái)創(chuàng)建網(wǎng)絡(luò)服務(wù)、智能設(shè)備應(yīng)用程序和 Office 插件。</p><p> Visual Studio 是一套完整的開(kāi)發(fā)工具集,用于生成 ASP.NET Web 應(yīng)用程序、XML Web Services、桌面應(yīng)用程序和移動(dòng)應(yīng)用程序。Visual Basic、Visual C++、Visual C# 和 Visual J# 全都使用相同的集成開(kāi)發(fā)環(huán)境 (IDE),利用此
10、 IDE 可以共享工具且有助于創(chuàng)建混合語(yǔ)言解決方案。另外,這些語(yǔ)言利用了 .NET Framework 的功能,通過(guò)此框架可使用簡(jiǎn)化 ASP Web 應(yīng)用程序和 XML Web Services 開(kāi)發(fā)的關(guān)鍵技術(shù)。</p><p><b> 2.C#的窗體編程</b></p><p> Windows 窗體是用于 Microsoft Windows 應(yīng)用程序開(kāi)發(fā)的、
11、基于 .NET Framework 的新平臺(tái)。此框架提供一個(gè)有條理的、面向?qū)ο蟮?、可擴(kuò)展的類集,使您能夠開(kāi)發(fā)功能豐富的 Windows 應(yīng)用程序。另外,Windows 窗體可作為多層分布式解決方案中的本地用戶界面。</p><p> 窗體是一種文檔,可以用來(lái)收集信息。它包括兩部分,一部分是由窗體設(shè)計(jì)者輸入的,填寫窗體的人無(wú)法更改的文字或圖形。窗體設(shè)計(jì)者可以插入希望得到回答的問(wèn)題、選項(xiàng)列表、信息表格等。另一部分是
12、由窗體填寫者輸入的,用于從填寫窗體者處收集信息并進(jìn)行整理的空白區(qū)域。窗體設(shè)計(jì)者可以在文檔中插入窗體域或 ActiveX 控件,為窗體填寫者提供用于收集數(shù)據(jù)的位置。</p><p><b> 二、選題說(shuō)明</b></p><p> 隨著科技的發(fā)展,人們對(duì)精神生活要求的越來(lái)越高,紙質(zhì)的手動(dòng)式的書寫方式已經(jīng)不是能夠代表新世紀(jì)的生活需要了,所以現(xiàn)在各種不同功能的文本編輯器
13、已經(jīng)悄悄走進(jìn)我們的生活和學(xué)習(xí)中,像簡(jiǎn)單的就有記事本。 但是一個(gè)簡(jiǎn)單的文本編輯器也是很重要的,是基礎(chǔ)。所以在結(jié)合自己的一個(gè)學(xué)期的很認(rèn)真的學(xué)習(xí)c#后,決定自己編譯一個(gè)類似與記事本的,但功能比記事本強(qiáng)大的文本編輯器。</p><p> 文本編輯器的基本功能: </p><p> 該文本編輯器是用windows編寫的一個(gè)程序,運(yùn)行后彈出文本編輯器的主界面,由鍵盤輸入或以打開(kāi)的方式輸入或顯示文本
14、文件內(nèi)容。其中程序的編輯項(xiàng)可對(duì)當(dāng)前的文本進(jìn)行撤銷、刪除、剪切、復(fù)制、粘貼、在文本里顯示當(dāng)前時(shí)間、全選、清除、查找、替換、統(tǒng)計(jì)等功能。程序的文件項(xiàng)可以對(duì)電腦上txt,c++等格式文件的打開(kāi)、對(duì)當(dāng)前文本的保存和另存、對(duì)當(dāng)前文本的的新建以及退出文本編輯系統(tǒng)。程序的工具項(xiàng)為背景音樂(lè),為用戶提供了優(yōu)美動(dòng)聽(tīng)的音樂(lè),僅在用戶編輯疲憊乏力的時(shí)候盡情的享用。最后在程序的幫助項(xiàng)有對(duì)該小型文本編輯器的關(guān)于,用來(lái)介紹該程序,還有訪問(wèn)鏈接百度,訪問(wèn)114網(wǎng)頁(yè)大全
15、,為用戶提供查找資料等功能服務(wù)。</p><p><b> 輸入形式:</b></p><p> ?、僦苯釉谖谋揪庉嬁蛑休斎胛谋緝?nèi)容;</p><p> ?、谝源蜷_(kāi)的方式打開(kāi)并在文本框中顯示電腦的上文本。</p><p><b> 輸出形式:</b></p><p>
16、①對(duì)編輯框中尚無(wú)文本內(nèi)容時(shí)進(jìn)行查找、替換、統(tǒng)計(jì)等,程序會(huì)彈出一個(gè)提示尚無(wú)文本信息的小對(duì)話框,需輸入文本后再進(jìn)行以上操作。</p><p> ?、趯?duì)編輯框中已有文本內(nèi)容后進(jìn)行查找、替換、統(tǒng)計(jì)操作,程序?qū)棾雠c之對(duì)應(yīng)的對(duì)話框,根據(jù)所彈出的對(duì)話框的按鍵要求進(jìn)行之后的操作就可以。保存文件,另存為等功能都異曲同工,撤銷、刪除、剪切、復(fù)制、 粘貼、等就直接在主文本編輯框中操作,直接在其顯示操作后的文本信 息。</p&
17、gt;<p> 測(cè)試數(shù)據(jù)要求:任意一文本文件。</p><p><b> 三.總體說(shuō)明</b></p><p><b> 程序的基本結(jié)構(gòu)</b></p><p> 操作界面的主窗口為文本編輯器的主入口,類似于記事本的形式,菜單欄要如下的幾項(xiàng)(),另外還有兩個(gè)簡(jiǎn)單的toolstripe式的圖片按鈕,分別
18、是新建和保存。當(dāng)點(diǎn)擊新建的時(shí)候,會(huì)彈出我們將要編輯的文檔文本窗口,這是我們編寫文字的地方。書寫完畢后,要先確認(rèn)是否保存此文件夾,這樣就不會(huì)發(fā)生自己所編輯的內(nèi)容會(huì)丟失。</p><p><b> 程序的主要技術(shù)</b></p><p> (1)編寫要先新建,編寫之后要有保存功能; </p><p> (2)基本的操作功能如,復(fù)制、粘貼、剪切
19、、撤銷等;</p><p> ?。?)還可以設(shè)置文字的字體字形和字體的顏色。</p><p><b> 四、詳細(xì)設(shè)計(jì)</b></p><p><b> 〔1〕、文件操作:</b></p><p> 1、文件的新建的實(shí)現(xiàn):</p><p> int ret=Messag
20、eBox(NULL,TEXT("是否把更改保存到新建的文本文檔!!!"),TEXT("溫馨提示"),MB_YESNO | MB_ICONQUESTION);</p><p> if(ret==IDYES) //根據(jù)選擇如果保存</p><p><b> {</b></p><p> OPENFIL
21、ENAME ofn; //文件對(duì)象</p><p> char szFile[MAX_PATH]; //文件的大小,最大</p><p> ZeroMemory(&ofn,sizeof(ofn)); //文件的初始化</p><p> ofn.lStructSize = sizeof(ofn);</p><p> ofn.
22、lpstrFile = szFile;</p><p> ofn.lpstrFile[0] = TEXT('\0');</p><p> ofn.nMaxFile = sizeof(szFile);</p><p> ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.TXT\0C++\0*.cpp\0
23、"); //保存的文件類型</p><p> ofn.nFilterIndex = 1;</p><p> ofn.lpstrFileTitle = NULL;</p><p> ofn.nMaxFileTitle = 0;</p><p> ofn.lpstrInitialDir = NULL;</p>&
24、lt;p> ofn.hwndOwner = hwnd;</p><p> ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;</p><p> ofn.lpstrTitle=TEXT("保存");</p><p> if (GetSaveFileName(
25、&ofn)) </p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> fp=fopen(szFile,"w"); //打開(kāi)文件</p><p> if(fp==NULL)</p><p&
26、gt;<b> {</b></p><p> MessageBox(NULL,TEXT("文件無(wú)法保存"),TEXT("嗚嗚"),MB_OK);</p><p><b> }</b></p><p> TCHAR str[10000];</p><p>
27、; TCHAR end[10000];</p><p> memset(end,0,10000);</p><p> GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));</p><p> fputs(str,fp);</p><p> fclose(fp);</p><
28、p><b> }</b></p><p> SetDlgItemText(hwnd,IDC_EDIT1,"");</p><p><b> }</b></p><p><b> else</b></p><p><b> {<
29、/b></p><p> SetDlgItemText(hwnd,IDC_EDIT1,"");</p><p><b> }</b></p><p> 2、文件打開(kāi)的實(shí)現(xiàn):</p><p> case ID_MENUITEMOPEN: //文本的打開(kāi)</p>
30、<p><b> {</b></p><p> OPENFILENAME ofn;</p><p> char szFile[MAX_PATH]; //保存路徑變量</p><p> ZeroMemory(&ofn,sizeof(ofn));</p><p> 在這里我們使用ZeroMem
31、ory“函數(shù)”,ZeroMemory其實(shí)并不是函數(shù),看一下ZeroMemory的定義:</p><p> ofn.lStructSize = sizeof(ofn);</p><p> ofn.lpstrFile = szFile; </p><p> //szFile是一個(gè)字符數(shù)組,那么szFile這個(gè)名字就代表這個(gè)字符數(shù)組的首地址</p>
32、<p> 這是一個(gè)指針的應(yīng)用,把接收選擇文件名的數(shù)組的地址傳遞到GetOpenFileName函數(shù)中。 ofn.lpstrFile[0] = TEXT('\0');</p><p> ofn.lpstrFile[0] = TEXT('\0');效果等價(jià)于ZeroMemory(szFile,sizeof(szFile)/sizeof(char));&l
33、t;/p><p> ofn.nMaxFile = sizeof(szFile);</p><p> ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.txt\0");</p><p><b> 文件過(guò)濾器</b></p><p> *.*就表示所有文件*.tx
34、t就表示所有文本文件abc*.*就表示所有以abc開(kāi)頭的文件abc*.txt就表示所有以abc開(kāi)頭的文本文件(txt) </p><p> ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.TXT\0");用“\0”分割出幾個(gè)段,每?jī)啥问且唤M過(guò)濾器,每組的第一個(gè)段代表過(guò)濾器的顯示的值,而第二段表示真正的過(guò)濾器</p><p>
35、 ofn.nFilterIndex = 1; //選擇一個(gè)過(guò)濾器</p><p> ofn.lpstrFileTitle = NULL;</p><p> windows的一個(gè)慣例:結(jié)構(gòu)體的指針類型別名一般是LP+結(jié)構(gòu)體的名字GetOpenFileName(&ofn)而不是GetOpenFileName(ofn),因?yàn)镚etOpenFileName函數(shù)要的是OPENFILE
36、NAME的指針(8)只要用戶還沒(méi)關(guān)閉對(duì)話框,那么GetOpenFileName函數(shù)是停住的,同步模式的PlaySound以及getchar、scanf是一樣的。用戶關(guān)閉對(duì)話框,GetOpenFileName函數(shù)返回,返回值是BOOL,等于TRUE表示用戶選擇了文件,如果等于FALSE就表示用戶選擇了【取消】按鈕</p><p> ofn.nMaxFileTitle = 0;</p><p
37、> ofn.lpstrInitialDir = NULL;</p><p> ofn.hwndOwner = hwnd;</p><p> ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;</p><p> if(GetOpenFileName(&ofn)) <
38、;/p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> fp=fopen(szFile,"r");</p><p> if(fp==NULL)</p><p><b> {</b&
39、gt;</p><p> MessageBox(NULL,TEXT("文件打開(kāi)錯(cuò)誤!"),TEXT("記事本"),MB_OK);</p><p><b> }</b></p><p> TCHAR line[256];</p><p> TCHAR end[10000];&
40、lt;/p><p> memset(line,0,256);</p><p> memset(end,0,256);</p><p> while(!feof(fp))</p><p><b> {</b></p><p> fgets(line,sizeof(line),fp);</
41、p><p> lstrcat(end,line);</p><p> int w=strlen(end);</p><p> end[w-1]='\0';</p><p> lstrcat(end,"\r\n");</p><p><b> }</b>&l
42、t;/p><p> SetDlgItemText(hwnd,IDC_RICHEDIT1,end);</p><p> fclose(fp); //關(guān)閉文件</p><p><b> }</b></p><p><b> break;</b></p><p><
43、b> }</b></p><p><b> break;</b></p><p> 3、文件保存的實(shí)現(xiàn):</p><p> case ID_MENUITEMSAVE: //文本的保存</p><p><b> {</b></p><p&
44、gt; OPENFILENAME ofnb;</p><p> char bcFile[MAX_PATH];</p><p> ZeroMemory(&ofnb,sizeof(ofnb));</p><p> ofnb.lStructSize = sizeof(ofnb);</p><p> ofnb.lpstrFile =
45、 bcFile;</p><p> ofnb.lpstrFile[0] = TEXT('\0');</p><p> ofnb.nMaxFile = sizeof(bcFile);</p><p> ofnb.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.txt\0");</p>
46、<p> ofnb.nFilterIndex = 1;</p><p> ofnb.lpstrFileTitle = NULL;</p><p> ofnb.nMaxFileTitle = 0;</p><p> ofnb.lpstrInitialDir = NULL;</p><p> ofnb.hwndOwner =
47、hwnd;</p><p> ofnb.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST|OFN_OVERWRITEPROMPT;</p><p> if (GetSaveFileName(&ofnb))</p><p><b> {</b></p>
48、<p> FILE * fp = fopen (".txt","w"); //保存所有文件都為txt格式</p><p> TCHAR baoc [100000]; //保存的最大容量為100000</p><p> GetDlgItemText(hwnd,IDC_RICHEDIT1,baoc,sizeof(baoc))
49、;</p><p> fputs(baoc,fp);</p><p> fclose(fp);</p><p><b> }</b></p><p><b> }</b></p><p><b> break;</b></p>&
50、lt;p> 退出文本編輯器的實(shí)現(xiàn):</p><p> int ret=MessageBox(NULL,TEXT("是否把更改保存到新建的文本文檔!!!"),TEXT("溫馨提示"),MB_YESNO | MB_ICONQUESTION);</p><p> if(ret==IDYES)</p><p><b&
51、gt; {</b></p><p> OPENFILENAME ofn;</p><p> char szFile[MAX_PATH];</p><p> ZeroMemory(&ofn,sizeof(ofn));</p><p> ofn.lStructSize = sizeof(ofn);</p>
52、<p> ofn.lpstrFile = szFile;</p><p> ofn.lpstrFile[0] = TEXT('\0');</p><p> ofn.nMaxFile = sizeof(szFile);</p><p> ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.
53、TXT\0C++\0*.cpp\0");</p><p> ofn.nFilterIndex = 1;</p><p> ofn.lpstrFileTitle = NULL;</p><p> ofn.nMaxFileTitle = 0;</p><p> ofn.lpstrInitialDir = NULL;</p&
54、gt;<p> ofn.hwndOwner = hwnd;</p><p> ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;</p><p> ofn.lpstrTitle=TEXT("保存");</p><p> if (GetSaveFil
55、eName(&ofn)) </p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> fp=fopen(szFile,"w");</p><p> if(fp==NULL)</p><p>
56、;<b> {</b></p><p> MessageBox(NULL,TEXT("文件無(wú)法保存"),TEXT("嗚嗚"),MB_OK);</p><p><b> }</b></p><p> TCHAR str[10000];</p><p>
57、 TCHAR end[10000];</p><p> memset(end,0,10000);</p><p> GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));</p><p> fputs(str,fp);</p><p> fclose(fp);</p><p&
58、gt;<b> }</b></p><p> MessageBox(NULL,TEXT("文件保存成功!放心關(guān)閉!!!"),TEXT("嘻嘻"),MB_OK);</p><p><b> }</b></p><p> EndDialog(hwnd, 0);</p>
59、<p><b> 〔2〕、編輯操作:</b></p><p><b> 1、剪切的實(shí)現(xiàn):</b></p><p> case ID_MENUITEMCUT: //剪切</p><p> {SendDlgItemMessage(hwnd,IDC_RICHEDIT1,WM_CUT,0,0);<
60、;/p><p> //傳遞對(duì)話框中的內(nèi)容首先獲取RichEdit中的內(nèi)容,WM_CUT,傳遞要進(jìn)行操作的內(nèi)容,0,0為兩個(gè)WPARAM和LPARAM是約定的消息參數(shù)類型。</p><p><b> break;</b></p><p><b> }</b></p><p><b> 2
61、、復(fù)制的實(shí)現(xiàn):</b></p><p> case ID_MENUITEMCOPY: //復(fù)制</p><p> {SendDlgItemMessage(hwnd,IDC_RICHEDIT1,WM_COPY,0,0);</p><p> //傳遞對(duì)話框中的內(nèi)容首先獲取RichEdit中的內(nèi)容,WM_COPY,,傳遞要進(jìn)行操作的內(nèi)容,0,0
62、為兩個(gè)WPARAM和LPARAM是約定的消息參數(shù)類型。</p><p><b> break;</b></p><p><b> }</b></p><p><b> 3、粘貼的實(shí)現(xiàn):</b></p><p> case ID_MENUITEMPASTE: //粘貼
63、</p><p> { SendDlgItemMessage(hwnd,IDC_RICHEDIT1,WM_PASTE,0,0);</p><p><b> break;</b></p><p><b> }</b></p><p><b> 4、清除的實(shí)現(xiàn):</b>
64、;</p><p> case ID_MENUITEMEMPTY: //清除</p><p><b> {</b></p><p> SetDlgItemText(hwnd,IDC_RICHEDIT1,"");</p><p><b> break;</b><
65、/p><p><b> }</b></p><p><b> 5、撤銷的實(shí)現(xiàn):</b></p><p> case ID_MENUITEMUNDO: //“撤銷”菜單</p><p><b> {</b></p><p> SendD
66、lgItemMessage(hwnd,IDC_RICHEDIT1, EM_UNDO, 0, 0);</p><p><b> break;</b></p><p><b> }</b></p><p><b> 6、刪除的實(shí)現(xiàn):</b></p><p> case ID
67、_MENUITEMDELETE: //刪除</p><p><b> {</b></p><p> SendMessage(GetDlgItem(hwnd, IDC_RICHEDIT1), WM_CLEAR, 0, 0);</p><p><b> }</b></p><p><
68、b> break;</b></p><p><b> 7、全選的實(shí)現(xiàn):</b></p><p> case ID_MENUITEMSELECTALL: //全選</p><p><b> {</b></p><p> SendMessage(GetDlgItem(hw
69、nd, IDC_RICHEDIT1), EM_SETSEL, 0, -1);</p><p><b> }</b></p><p><b> break;</b></p><p> 8、系統(tǒng)時(shí)間的實(shí)現(xiàn):</p><p> VOID CALLBACK MyTimerFun(HWND hwnd,
70、 UINT message, UINT iTimerID, DWORD dwTime)</p><p><b> { </b></p><p> SYSTEMTIME strLocal; //當(dāng)前時(shí)間</p><p> GetLocalTime(&strLocal);</p><p> TCHAR
71、 str[256];</p><p> wsprintf(str,"%04d-%02d-%02d %02d:%02d:%02d",strLocal.wYear,strLocal.wMonth,</p><p> strLocal.wDay,strLocal.wHour,strLocal.wMinute,strLocal.wSecond);</p>&l
72、t;p> SetDlgItemText(hwnd,IDC_EDIT2,str);</p><p><b> }</b></p><p> 9、查找功能的實(shí)現(xiàn):</p><p> int count=0;</p><p> int Line_count=1;</p><p> in
73、t Row_count=1;</p><p> int num=0;</p><p> int flag=0;</p><p> TCHAR str1[256];</p><p> TCHAR temp1[5000];</p><p> TCHAR temp2[5000];</p><p&
74、gt; memset(temp1,0,5000);</p><p> memset(temp2,0,5000);</p><p> memset(str1,0,256);</p><p> GetDlgItemText(hwnd,IDC_EDIT_FINDWORD,str1,sizeof(str1));</p><p> if(st
75、rlen(str1)==0)</p><p><b> {</b></p><p> MessageBox(NULL,TEXT("查找的內(nèi)容為空,請(qǐng)輸入內(nèi)容后再查找!!!"),TEXT("嗚嗚"),MB_OK);</p><p><b> }</b></p>&l
76、t;p><b> else</b></p><p><b> {</b></p><p><b> int i=0;</b></p><p><b> int j=0;</b></p><p> while(str2[i]!='\0
77、' )</p><p><b> {</b></p><p> if((str2[i]=='\n') || (Row_count==63))</p><p><b> {</b></p><p> Line_count++;</p><p>
78、 Row_count=0;</p><p><b> }</b></p><p> if(str2[i]==str1[j])</p><p> { </p><p><b> i++;</b></p><p><b> j++;&l
79、t;/b></p><p> Row_count++;</p><p> if(str1[j]=='\0')</p><p><b> {</b></p><p><b> j=0;</b></p><p><b> count++;
80、</b></p><p> wsprintf(temp2,"<%i>你要尋找的內(nèi)容在第:%i 行,第:%i 列至第:%i 列!!!",count,Line_count,(Row_count-strlen(str1)),(Row_count-1));</p><p> strcat(temp1,temp2);</p><p&
81、gt; strcat(temp1,"\r\n"); </p><p><b> flag=1;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b>&l
82、t;/p><p><b> {</b></p><p><b> i=i-j+1;</b></p><p><b> j=0;</b></p><p> Row_count++; </p><p><b> }</b>&l
83、t;/p><p> if(str2[i]=='\0' && flag==1)</p><p><b> {</b></p><p> SetDlgItemText(hwnd,IDC_EDIT2,temp1);</p><p> MessageBox(NULL,temp1,TEXT(&q
84、uot;嘿嘿"),MB_OK);</p><p><b> }</b></p><p> if(str2[i]=='\0' && flag==0)</p><p><b> { </b></p><p> MessageBox(NULL,TEXT(&
85、quot;沒(méi)有你想要找的內(nèi)容,請(qǐng)重新輸入查找的內(nèi)容"),TEXT("嗚嗚"),MB_OK);</p><p><b> break;</b></p><p><b> }</b></p><p><b> } </b></p><p>&
86、lt;b> }</b></p><p><b> } </b></p><p><b> break;</b></p><p> 通過(guò)簡(jiǎn)單的字符串比配算法實(shí)現(xiàn)其功能。</p><p> 9、替換功能的實(shí)現(xiàn):</p><p> TCHAR *cha
87、nge::D_change(TCHAR S[], TCHAR T1[] ,TCHAR T2[]) //替換功能的主算法</p><p><b> {</b></p><p><b> int i=0;</b></p><p><b> int j=0;</b></p><p
88、><b> int k=0;</b></p><p><b> int l=0;</b></p><p> TCHAR *S1;</p><p> while((S[i]!='\0'))</p><p><b> {</b></p>
89、<p> if(S[i]==T1[j])</p><p><b> {</b></p><p><b> i++;</b></p><p><b> j++;</b></p><p><b> count1=i;</b></p&
90、gt;<p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> i=i-j+1;</b></p><p><b> j=0;</b>
91、;</p><p><b> count1=i;</b></p><p><b> }</b></p><p> if(T1[j]=='\0')</p><p><b> {</b></p><p><b> i=i-
92、j;</b></p><p> if(strlen(T1)==strlen(T2))</p><p><b> {</b></p><p> int num1=strlen(T1);</p><p> for(k=i;k<i+num1;k++)</p><p><b
93、> {</b></p><p> S[k]=T2[l];</p><p><b> l++;</b></p><p><b> }</b></p><p><b> j=0;</b></p><p><b> l=
94、0;</b></p><p><b> }</b></p><p> else if(strlen(T1)>strlen(T2))</p><p><b> {</b></p><p> int num2=strlen(T1)-strlen(T2);</p>
95、<p> int lengthT2=strlen(T2);</p><p> for(k=i;k<strlen(S)-num2;k++)</p><p><b> {</b></p><p> S[k]=S[k+num2];</p><p><b> }</b></p
96、><p> for(k=(strlen(S)-num2);k<=strlen(S);k++)</p><p><b> {</b></p><p> S[k]='\0';</p><p><b> } </b></p><p> for(k=i;k
97、<(i+lengthT2);k++)</p><p><b> {</b></p><p> S[k]=T2[l];</p><p><b> l++;</b></p><p><b> }</b></p><p><b> j
98、=0;</b></p><p><b> l=0;</b></p><p><b> }</b></p><p> else if(strlen(T1)<strlen(T2))</p><p><b> {</b></p><p&g
99、t; int num3=strlen(T2)-strlen(T1);</p><p> S1=new TCHAR[strlen(S)+num3];</p><p> for(int k=0;k<i;k++)</p><p><b> {</b></p><p> S1[k]=S[k];</p>
100、<p><b> }</b></p><p> for(int k2=i;k2<strlen(T2)+i;k2++)</p><p><b> {</b></p><p> S1[k2]=T2[k2-i];</p><p><b> }</b>&l
101、t;/p><p> for(int k3=i+strlen(T1);k3<strlen(S);k3++)</p><p><b> {</b></p><p> S1[k3+num3]=S[k3];</p><p><b> }</b></p><p> S1[k
102、3+num3]='\0';</p><p> if(S[i]=='\0')</p><p><b> {</b></p><p> return S1;</p><p><b> }</b></p><p><b> els
103、e</b></p><p><b> {</b></p><p> strcpy(S,S1);</p><p><b> j=0;</b></p><p><b> }</b></p><p><b> }</b&g
104、t;</p><p><b> }</b></p><p><b> }</b></p><p><b> return S;</b></p><p><b> }</b></p><p> 也通過(guò)字符算的比配,一一找到后
105、,一一替換,最后返回替換后的文本內(nèi)容;</p><p> 9、統(tǒng)計(jì)功能的實(shí)現(xiàn):</p><p> void Total_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)</p><p><b> {</b></p><p> int Line
106、_count=1;</p><p> int Row_count=0;</p><p> int Total_count=0;</p><p> int English_count=0;</p><p> int math_count=0;</p><p> int other_count=0;</p&
107、gt;<p> int space_count=0;</p><p> int punct_count=0;</p><p> TCHAR temp1[256];</p><p> TCHAR temp2[256];</p><p> memset(temp1,0,256);</p><p>
108、 memset(temp2,0,256);</p><p><b> int i=0;</b></p><p> while(total2[i]!='\0')</p><p><b> {</b></p><p> if((total2[i]!=' ') &a
109、mp;& (total2[i]!='\r') && (total2[i]!='\n'))</p><p><b> {</b></p><p> Total_count++;</p><p><b> }</b></p><p> if
110、((total2[i]>='a' && total2[i]<='z') || (total2[i]>='A' && total2[i]<='Z'))</p><p><b> {</b></p><p> English_count++;<
111、/p><p><b> }</b></p><p> if(total2[i]>='0' && total2[i]<='9')</p><p><b> {</b></p><p> math_count++;</p>&
112、lt;p><b> }</b></p><p> if(total2[i]==33 || total2[i]==34 || total2[i]==39 || total2[i]==44 || total2[i]==46 || total2[i]==58 || total2[i]==59 || total2[i]==63)</p><p><b>
113、 {</b></p><p> punct_count++;</p><p><b> }</b></p><p> if(total2[i]==' ')</p><p><b> {</b></p><p> space_count+
114、+;</p><p><b> }</b></p><p> if((total2[i]=='\n') || (Row_count==62))</p><p><b> {</b></p><p> Line_count++;</p><p> Ro
115、w_count=0;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> Row_count++; </p><p><b> }</b&
116、gt;</p><p><b> i++;</b></p><p><b> }</b></p><p> other_count=Total_count-English_count-math_count-punct_count;</p><p> wsprintf(temp2,"
117、<1>文本的行數(shù)為:%i !",Line_count-1);</p><p> strcat(temp1,temp2);</p><p> strcat(temp1,"\r\n");</p><p> memset(temp2,0,256);</p><p> wsprintf(temp2,&
118、quot;<2>文本的總字符數(shù)為:%i !",Total_count);</p><p> strcat(temp1,temp2);</p><p> strcat(temp1,"\r\n");</p><p> memset(temp2,0,256);</p><p> wsprintf(t
119、emp2,"<3>文本的英文字符數(shù)為:%i !",English_count);</p><p> strcat(temp1,temp2);</p><p> strcat(temp1,"\r\n");</p><p> memset(temp2,0,256);</p><p> w
120、sprintf(temp2,"<4>文本的數(shù)字字符數(shù)為:%i !",math_count);</p><p> strcat(temp1,temp2);</p><p> strcat(temp1,"\r\n");</p><p> memset(temp2,0,256);</p><p&
121、gt; wsprintf(temp2,"<5>文本的空格數(shù)為:%i !",space_count);</p><p> strcat(temp1,temp2);</p><p> strcat(temp1,"\r\n");</p><p> memset(temp2,0,256);</p>&
122、lt;p> wsprintf(temp2,"<6>文本的標(biāo)點(diǎn)符號(hào)數(shù)為:%i !",punct_count);</p><p> strcat(temp1,temp2);</p><p> strcat(temp1,"\r\n");</p><p> memset(temp2,0,256);</p
123、><p> wsprintf(temp2,"<7>文本的其它字符數(shù)為:%i !",other_count);</p><p> strcat(temp1,temp2);</p><p> strcat(temp1,"\r\n");</p><p> memset(temp2,0,256)
124、;</p><p> SetDlgItemText(hwnd,IDC_EDIT1,temp1);</p><p><b> }</b></p><p> 通過(guò)傳參,把文本信息傳到副對(duì)話框中。然后對(duì)文本進(jìn)行各項(xiàng)簡(jiǎn)單的統(tǒng)計(jì)</p><p><b> 〔3〕、工具操作:</b></p>
125、<p><b> 北京音樂(lè)的實(shí)現(xiàn):</b></p><p> case ID_MENU_MUSIC:</p><p><b> {</b></p><p> TCHAR shortPath[MAX_PATH];</p><p> GetShortPathName("
126、C:\\Documents and Settings\\user\\桌面\\edit\\鄧紫棋 - 寂寞星球的玫瑰.mp3",shortPath,sizeof(shortPath)); //獲取音樂(lè)的途徑</p><p> TCHAR cmd[MAX_PATH+10];</p><p> wsprintf(cmd,"play %s",shortPath)
127、;</p><p> mciSendString(cmd," ",0,NULL);</p><p> int ret = MessageBox(NULL,TEXT("你當(dāng)前正在享受音樂(lè)!!!是否要退出"),TEXT("嘻嘻"),MB_YESNO | MB_ICONQUESTION);</p><p>
128、 if(ret==IDYES)</p><p><b> {</b></p><p> MessageBox(NULL,TEXT("還好聽(tīng)吧!歡迎再欣賞!再見(jiàn)!!!"),TEXT("嘿嘿"),MB_OK);</p><p> mciSendString("CLOSE cmd",&
129、quot; ",0,NULL);</p><p><b> break;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p&g
130、t;<b> break;</b></p><p><b> }</b></p><p><b> break;</b></p><p><b> }</b></p><p> 主要是通過(guò)mciSendString()API函數(shù)的使用。</
131、p><p><b> 〔4〕、關(guān)于操作:</b></p><p> 1、關(guān)于對(duì)話框的彈出實(shí)現(xiàn):</p><p> case ID_MENU_ABOUT:</p><p><b> {</b></p><p> HINSTANCE hInstance=(HINSTANCE
132、)GetWindowLong(hwnd,GWL_HINSTANCE);</p><p> DialogBox(hInstance, MAKEINTRESOURCE(IDD_ABOUT), NULL, Main_Proc);</p><p><b> break;</b></p><p><b> }</b></
133、p><p> 用DialogBox()函數(shù)實(shí)現(xiàn)對(duì)話框的彈出。</p><p><b> 2、訪問(wèn)百度實(shí)現(xiàn):</b></p><p> case IDM_BAIDU: //訪問(wèn)百度網(wǎng)</p><p><b> {</b></p><p> ShellExecute
134、(hwnd,TEXT("open"),TEXT("www.baidu.com"),NULL,NULL,SW_SHOWNORMAL);</p><p><b> break;</b></p><p><b> }</b></p><p> 3、訪問(wèn)114實(shí)現(xiàn):</p>
135、<p> case IDM_GOOGLE:</p><p><b> {</b></p><p> ShellExecute(hwnd,TEXT("open"),TEXT("www.114la.com"),NULL,NULL,SW_SHOWNORMAL);</p><p><b&
136、gt; break;</b></p><p><b> }</b></p><p> 都是ShellExecute()函數(shù)的使用。</p><p><b> 五、編碼與調(diào)試分析</b></p><p> 1.確定好語(yǔ)言后,設(shè)計(jì)主界面,參考windows自帶的記事本開(kāi)始設(shè)計(jì),需要
137、實(shí)現(xiàn)的各個(gè)功能現(xiàn)在主界面的下拉菜單中顯示,還有時(shí)間的顯示框的設(shè)計(jì),關(guān)于對(duì)話框的設(shè)計(jì),替換對(duì)話框的設(shè)計(jì),查找對(duì)話框的設(shè)計(jì),以及統(tǒng)計(jì)對(duì)話框的設(shè)計(jì)。接下來(lái)開(kāi)始一一實(shí)現(xiàn)其功能。</p><p> 2. 編碼與調(diào)試過(guò)程中遇到的問(wèn)題及解決辦法:</p><p> 問(wèn)題1:未考慮到生成文檔窗體在主窗體中的顯示</p><p> 解決辦法:在參照樣例程序的時(shí)候,發(fā)現(xiàn)文檔是顯示
138、在主窗體內(nèi)部,結(jié)合自己的所學(xué),發(fā)現(xiàn)設(shè)置主窗體的屬性記事本 f = new 記事本();</p><p> f.MdiParent = this;</p><p><b> count++;</b></p><p> f.Text = "新建文本" + count;</p><p> 設(shè)置成Md
139、iparent屬性即可。</p><p> 問(wèn)題2:不知到什么屬性被修改,導(dǎo)致主窗體關(guān)閉失效</p><p> 解決辦法:在菜單文件中設(shè)置關(guān)閉程序的命令,并申請(qǐng)了菜單合并,不需要在新建文檔的情況下就能關(guān)閉主窗體,現(xiàn)在仍然留下一個(gè)讓人深究的問(wèn)題,究竟是什么樣的屬性才是控制最大化,最小化,以及關(guān)閉的顯隱性,有待繼續(xù)學(xué)習(xí)。這是自己在程序完成的時(shí)候出現(xiàn)的意外,但是確是我在編寫過(guò)程中遇到的最大難
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 文本編輯器課程設(shè)計(jì)
- 文本編輯器課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)--文本編輯器
- java課程設(shè)計(jì)---文本編輯器
- java課程設(shè)計(jì)---文本編輯器
- vb課程設(shè)計(jì)文本編輯器
- java課程設(shè)計(jì)(文本編輯器)
- c語(yǔ)言課程設(shè)計(jì)--文本編輯器
- vb課程設(shè)計(jì)報(bào)告----文本編輯器
- vb課程設(shè)計(jì)報(bào)告---文本編輯器
- c_文本編輯器課程設(shè)計(jì)
- 簡(jiǎn)易文本編輯器課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--文本編輯器
- 微機(jī)原理課程設(shè)計(jì)—簡(jiǎn)易文本編輯器
- 文本編輯器
- c_編寫的文本編輯器課程設(shè)計(jì)
- visual_basic課程設(shè)計(jì)報(bào)告---文本編輯器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---簡(jiǎn)易文本編輯器
- 文本編輯器_java課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--簡(jiǎn)易文本編輯器
評(píng)論
0/150
提交評(píng)論