已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)與算法分析課程設(shè)計報告課題名稱: 文本編輯器 課題設(shè)計人(學(xué)號): 劉佳玉2012141461134 指導(dǎo)教師: 朱宏評閱成績: 評閱意見: 提交報告時間:20 13 年 12 月 22 日文本編輯器計算機科學(xué)與技術(shù) 專業(yè)學(xué)生 劉佳玉 指導(dǎo)老師 朱宏摘要 文本編輯器(或稱文字編輯器)是用作編寫普通文字的應(yīng)用軟件,它與文檔編輯器(或稱文字處理器)不同之處在于它并非用作桌面排版(例如文檔格式處理)。它常用來編寫程序的源代碼。專業(yè)的計算機用戶使用的文本編輯器往往不限制打開文件的大小。這樣的編輯器在編輯大文件時,啟動仍然很快,而且它們還能夠編輯超過內(nèi)存大小的文件。而簡單的文本編輯器通常直接把文件讀至內(nèi)存。這樣在處理較大文件時速度較慢,對于更大的文件,則干脆無法處理。我所做的這個文本編輯器包含插入、移除、替換、查找、顯示和新建的功能,是一種簡單的文本編輯器。關(guān)鍵詞:簡單的文本編輯器 插入 移除 替換 查找 顯示 新建一、實驗名稱:文本編輯器二、實驗的目的和要求:1.采用C+的ASCII碼文件和串函數(shù)實現(xiàn);2.熟練掌握串運算的應(yīng)用;3.熟練掌握計算機系統(tǒng)的基本操作方法,了解如何編輯、編譯、鏈接和運行一個C+程序;4.上機調(diào)試程序,掌握查錯、排錯使程序能正確運行。三、實驗的環(huán)境:指硬件和軟件環(huán)境1.硬件環(huán)境: G405+4G內(nèi)存+320G硬盤+川大校園網(wǎng)2.軟件環(huán)環(huán)境:操作系統(tǒng):Windows 7編譯系統(tǒng)的版本的特點:Dev-C+是一套用于開發(fā)C/C+的自由的集成開發(fā)環(huán)境(IDE),并以GPL作為散布許可。使用MinGW及GDB作為編譯系統(tǒng)與除錯系統(tǒng)。Dev-C+的IDE是利用Delphi開發(fā)的。編輯軟件特點:包含強大的類和內(nèi)嵌WinAPI的MFC,具有可視化的編程界面。四、算法描述:1、用戶可以選擇自己輸入文本或者直接使用程序以初始化的文本,用switch case語句就可以根據(jù)用戶不同的選擇執(zhí)行相應(yīng)的代碼。相應(yīng)代碼:couta代表自己輸入文本,b代表使用電腦設(shè)置的文本endl;cout請輸入你的選擇:ch;switch(ch)/對用戶的不同選擇執(zhí)行不同的代碼case a:/當用戶選擇自行輸入文本時break;case b:/當用戶選擇使用電腦設(shè)置的文本時break;2、當用戶選擇自己輸入文本時,就需要寫一些函數(shù)來存儲這些信息,可以將這些函數(shù)封裝在一個模板類中,只要定義一個之歌類的對象(bianji)就可以在需要的時候調(diào)用類的函數(shù)。在這個時候需要調(diào)用的函數(shù)有:bianji.Sethang(h);/設(shè)置文本的行數(shù)bianji.Setlie(l);/設(shè)置文本的列數(shù)bianji.Setwenben();/輸入文本bianji.Showwenben();/顯示文本3、單用戶選擇使用程序初始化的文本時,只要顯示文本即可。這個時候需要的函數(shù)有:bianji.Showwenben();/顯示文本4、該文本編輯器有插入,移除,替換,查找,顯示和重置的功能,通過輸出語句告知用戶文本編輯器的功能,并詢問用戶要使用哪個功能。相應(yīng)代碼:char ch=s;/初始化chwhile(ch!=q)/當ch!=q時,就不會退出循環(huán)couti代表插入文本 ;coutR代表移除文本 ;coutr代表替換文本 ;coutf代表查找文本 ;couts代表顯示當前文本 ;coutn代表重新建立一個文本 ;coutq代表退出 endl;coutch;5、當用戶選擇插入(insert)功能時,就只需要將當前行數(shù)加1,將要插入的行及其后面的行的文本往后移一行,在輸入要插入的行的文本即可,相應(yīng)代碼:while(h0bianji.Gethang()|h01)/如果要插入的行大于已有的/最大行或者小于第一行就會要求重新輸入一個couth0;bianji.Sethang(bianji.Gethang()+1);/當前行數(shù)加1int i,j;for(i=bianji.Gethang()-1;i=h0;i-)/把要插入行及后面的行的/文本往后一次移一行for(j=0;jbianji.Getlie();j+)bianji.Xiugaiwenben(i,j,i-1,j);for(i=0;ibianji.Getlie();i+)/輸入要插入的那一行的文本cout請輸入第h0行第i+1個字符:;bianji.Fuzhiwenben(h0-1,i);coutbianji.Gethang()|h11)/如果要移除的行大于已有的/最大行或者小于第一行就會要求重新輸入一個couth1;bianji.Sethang(bianji.Gethang()-1);/將當前行數(shù)減1int i1,j1;for(i1=h1-1;i1bianji.Gethang();i1+)/把要移除的行的后面的/行一次往前移一行就順便把要移除的那一行給覆蓋 /了,從而達到移除的效果for(j1=0;j1bianji.Getlie();j1+) bianji.Xiugaiwenben(i1,j1,i1+1,j1);bianji.Showwenben();7、當用戶選擇替換(replace)功能時,只需要重新輸入要替換行的文本即可,其他行的文本不變,相應(yīng)代碼:for(i2=0;i2bianji.Getlie();i2+) /得到要替換的那一行的列/數(shù),然后輸入新的文本cout請輸入第h2行第i2+1個字符:;bianji.Fuzhiwenben(h2-1,i2);coutendl;bianji.Showwenben();8、當用戶選擇查找(find)功能時,只要用戶輸入相應(yīng)列數(shù)的文本,然后將其與每一行的文本進行比較,如果完全相同,則會輸出相應(yīng)的行號,通過循環(huán)語句來進行匹配,相應(yīng)代碼:for(i3=0;i3bianji.Getlie();i3+)/根據(jù)當前文本的列數(shù)來輸入/要查找的文本cout請輸入第i3+1列的字符:;bianji.Fuzhiwenben(bianji.Gethang(),i3);/將輸入的文本放/到當前的最后一行,只是暫時的 /在這個功能完了后就會/消失,因為沒有改變文本的行列for(i3=0;i3bianji.Gethang();i3+)/根據(jù)輸入的文本,一行一行/的搜,將每一行的文本域輸入的文本進行匹配 /如果匹配成功就會輸出相應(yīng)的行數(shù)j3=0; while(bianji.Findwenben(i3,j3)=bianji.Findwenben(bianji.Gethang(),j3)&j3bianji.Getlie()j3+;/相同就會在查下一列的字符是否相同,直到這一完/ 了if(j3=bianji.Getlie()cout你要找的文本在第i3+1行endl;count+=1;if(count=0)cout你要找的文本不在現(xiàn)有文本中endl;coutendl;9、當用戶選擇顯示(show)功能時,只需要調(diào)用模板類中的顯示函數(shù)即可,相應(yīng)代碼:bianji.Showwenben();與初始化的部分相同,也只是要調(diào)用模板類中的相應(yīng)函數(shù)即可,相應(yīng)代碼:couth4;bianji.Sethang(h4);/新行coutl4;bianji.Setlie(l4);/新列bianji.Setwenben();/新文本bianji.Showwenben();/顯示文本10、當用戶選擇重置(new)功能時,五、源程序清單:該程序代碼分為3部分,分別是:1、模板類的代碼,文件名“l(fā)inklist.h”,相應(yīng)代碼:#ifndef LINKLIST_H_#define LINKLIST_H_#includeusing namespace std;template/隊列的模板類class LinkListprivate:ElemType wenben256256;/創(chuàng)立一個二維數(shù)組作為存儲文本的空間int hang;/數(shù)組的行int lie;/數(shù)組的列public:LinkList()/構(gòu)造函數(shù)hang=1;/初始化行數(shù)為1lie=1;/初始化列數(shù)為1wenben00=a;/初始化文本為aLinkList()/析構(gòu)函數(shù)void Xiugaiwenben(int h1,int l1,int h2,int l2)/修改文本,將文本中h2行l(wèi)2列的 /字符賦給h1行l(wèi)1列 wenbenh1l1=wenbenh2l2;void Fuzhiwenben(int h,int l)/給文本中h行l(wèi)列賦一個字符cinwenbenhl;ElemType Findwenben(int h,int l)/返回h行l(wèi)列的字符return wenbenhl;void Sethang(int h)/設(shè)定數(shù)組的行數(shù)hang=h;int Gethang()/得到數(shù)組的行數(shù)return hang;void Setlie(int l)/設(shè)定數(shù)組的列數(shù)lie=l;int Getlie()/得到數(shù)組的列數(shù)return lie;void Setwenben()/設(shè)立一個文本int i,j;for(i=0;ihang;i+)cout請輸入第i+1行的文本:endl;for(j=0;jlie;j+)cout請輸入第i+1行第j+1列的字符wenbenij;void Showwenben()/顯示當前文本cout當前文本是:endl;int i,j;for(i=0;ihang;i+)for(j=0;jlie;j+)coutwenbenij;coutendl;#endif2、編輯類的代碼,文件名是“editor.h”,相應(yīng)代碼:#includelinklist.hclass Editorprivate:LinkListbianji;/模板類的char型對象,用來調(diào)用模板類中的函數(shù)int count;/在使用查找功能時用來判斷是否要查找的文本在當前文本中public:void Chushihua()/設(shè)置文本的函數(shù)couta代表自己輸入文本,b代表使用電腦設(shè)置的文本endl;cout請輸入你的選擇:ch;switch(ch)/對用戶的不同選擇執(zhí)行不同的代碼case a:/當用戶選擇自行輸入文本時couth;coutendl;coutl;bianji.Sethang(h);/設(shè)置文本的行數(shù)bianji.Setlie(l);/設(shè)置文本的列數(shù)bianji.Setwenben();/輸入文本bianji.Showwenben();/顯示文本break;case b:/當用戶選擇使用電腦設(shè)置的文本時bianji.Showwenben();/顯示初始化的文本break;void Edite()/編輯文本的函數(shù)char ch=s;/初始化chwhile(ch!=q)/當ch!=q時,就不會退出循環(huán)couti代表插入文本 ;coutR代表移除文本 ;coutr代表替換文本 ;coutf代表查找文本 ;couts代表顯示當前文本 ;coutn代表重新建立一個文本 ;coutq代表退出 endl;coutch;switch(ch)/根據(jù)用戶的不同選擇執(zhí)行不同的代碼case i:/選擇插入(insert)功能bianji.Showwenben();/顯示當前文本couth0;while(h0bianji.Gethang()|h01)/如果要插入的行大于已有的最大行或者小于第一行就會要求重新輸入一個couth0;bianji.Sethang(bianji.Gethang()+1);/當前行數(shù)加1int i,j;for(i=bianji.Gethang()-1;i=h0;i-)/把要插入行及后面的行的文本往后一次移一行for(j=0;jbianji.Getlie();j+)bianji.Xiugaiwenben(i,j,i-1,j);for(i=0;ibianji.Getlie();i+)/輸入要插入的那一行的文本cout請輸入第h0行第i+1個字符:;bianji.Fuzhiwenben(h0-1,i);coutendl;bianji.Showwenben();/顯示文本break;case R:/選擇移除(remove)功能bianji.Showwenben();couth1;while(h1bianji.Gethang()|h11)/如果要移除的行大于已有的最大行或者小于第一行就會要求重新輸入一個couth1;bianji.Sethang(bianji.Gethang()-1);/將當前行數(shù)減1int i1,j1;for(i1=h1-1;i1bianji.Gethang();i1+)/把要移除的行的后面的行一次往前移一行就順便把要移除的那一行給覆蓋 /了,從而達到移除的效果for(j1=0;j1bianji.Getlie();j1+)bianji.Xiugaiwenben(i1,j1,i1+1,j1);bianji.Showwenben();break;case r:/選擇替換(replace)功能bianji.Showwenben();couth2;int i2;for(i2=0;i2bianji.Getlie();i2+)/得到要替換的那一行的列數(shù),然后輸入新的文本cout請輸入第h2行第i2+1個字符:;bianji.Fuzhiwenben(h2-1,i2);coutendl;bianji.Showwenben();break;case f:/選擇查找(find)功能bianji.Showwenben();cout請輸入要查找的文件:endl;int i3,j3;count=0;for(i3=0;i3bianji.Getlie();i3+)/根據(jù)當前文本的列數(shù)來輸入要查找的文本cout請輸入第i3+1列的字符:;bianji.Fuzhiwenben(bianji.Gethang(),i3);/將輸入的文本放到當前的最后一行,只是暫時的 /在這個功能完了后就會消失,因為沒有改變文本的行列/*cout第h3行的文本是:endl;/輸入行數(shù)就會將當前文本中那一行的文本輸出for(i3=0;i3bianji.Getlie();i3+)coutbianji.Findwenben(h3-1,i3);*/for(i3=0;i3bianji.Gethang();i3+)/根據(jù)輸入的文本,一行一行的搜,將每一行的文本域輸入的文本進行匹配 /如果匹配成功就會輸出相應(yīng)的行數(shù)j3=0;while(bianji.Findwenben(i3,j3)=bianji.Findwenben(bianji.Gethang(),j3)&j3bianji.Getlie()j3+;/相同就會在查下一列的字符是否相同,直到這一行完了if(j3=bianji.Getlie()cout你要找的文本在第i3+1行endl;count+=1;if(count=0)cout你要找的文本不在現(xiàn)有文本中endl;coutendl;break;case s:/選擇顯示當前文本bianji.Showwenben();break;case n:/選擇重置(new)功能int h4,l4;couth4;bianji.Sethang(h4);/新行 coutl4;bianji.Setlie(l4);/新列bianji.Setwenben();/新文本bianji.Showwenben();/顯示文本break;case q:break;3、主函數(shù)的代碼,文件名是“main.cpp”,相應(yīng)代碼:#includelinklist.h#
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年寶雞職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年安徽電氣工程職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 2025年天津交通職業(yè)學(xué)院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 2025年廈門華天涉外職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 2025至2031年中國小名片PVC卡行業(yè)投資前景及策略咨詢研究報告
- 全基因組關(guān)聯(lián)研究進展-第1篇-深度研究
- 2025年度國際組織在華項目外籍志愿者聘用合同
- 二零二五年度沈陽生姜種植戶與經(jīng)銷商合作合同
- 二零二五年度燃氣行業(yè)風(fēng)險管理咨詢合同
- 科技發(fā)展對學(xué)校道德教育的影響與應(yīng)對
- 2024夏季廣東廣州期貨交易所招聘高頻難、易錯點500題模擬試題附帶答案詳解
- 浙江省2024年高考化學(xué)模擬試題(含答案)2
- 2024新人教七年級英語上冊 Unit 2 Were Family!(大單元教學(xué)設(shè)計)
- 材料力學(xué)之材料疲勞分析算法:S-N曲線法:疲勞分析案例研究與項目實踐.Tex.header
- 中國醫(yī)美行業(yè)2024年度洞悉報告-德勤x艾爾建-202406
- 藥用植物種植制度和土壤耕作技術(shù)
- 《火力發(fā)電企業(yè)設(shè)備點檢定修管理導(dǎo)則》
- 重慶市渝北區(qū)2024年八年級下冊數(shù)學(xué)期末統(tǒng)考模擬試題含解析
- 保安服務(wù)項目信息反饋溝通機制
- 《團隊介紹模板》課件
- 運動技能學(xué)習(xí)與控制課件第十一章運動技能的練習(xí)
評論
0/150
提交評論