




已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu)與算法分析課程設(shè)計(jì)報(bào)告課題名稱: 文本編輯器 課題設(shè)計(jì)人(學(xué)號(hào)): 劉佳玉2012141461134 指導(dǎo)教師: 朱宏評(píng)閱成績(jī): 評(píng)閱意見: 提交報(bào)告時(shí)間:20 13 年 12 月 22 日文本編輯器計(jì)算機(jī)科學(xué)與技術(shù) 專業(yè)學(xué)生 劉佳玉 指導(dǎo)老師 朱宏摘要 文本編輯器(或稱文字編輯器)是用作編寫普通文字的應(yīng)用軟件,它與文檔編輯器(或稱文字處理器)不同之處在于它并非用作桌面排版(例如文檔格式處理)。它常用來編寫程序的源代碼。專業(yè)的計(jì)算機(jī)用戶使用的文本編輯器往往不限制打開文件的大小。這樣的編輯器在編輯大文件時(shí),啟動(dòng)仍然很快,而且它們還能夠編輯超過內(nèi)存大小的文件。而簡(jiǎn)單的文本編輯器通常直接把文件讀至內(nèi)存。這樣在處理較大文件時(shí)速度較慢,對(duì)于更大的文件,則干脆無法處理。我所做的這個(gè)文本編輯器包含插入、移除、替換、查找、顯示和新建的功能,是一種簡(jiǎn)單的文本編輯器。關(guān)鍵詞:簡(jiǎn)單的文本編輯器 插入 移除 替換 查找 顯示 新建一、實(shí)驗(yàn)名稱:文本編輯器二、實(shí)驗(yàn)的目的和要求:1.采用C+的ASCII碼文件和串函數(shù)實(shí)現(xiàn);2.熟練掌握串運(yùn)算的應(yīng)用;3.熟練掌握計(jì)算機(jī)系統(tǒng)的基本操作方法,了解如何編輯、編譯、鏈接和運(yùn)行一個(gè)C+程序;4.上機(jī)調(diào)試程序,掌握查錯(cuò)、排錯(cuò)使程序能正確運(yùn)行。三、實(shí)驗(yàn)的環(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)的版本的特點(diǎn):Dev-C+是一套用于開發(fā)C/C+的自由的集成開發(fā)環(huán)境(IDE),并以GPL作為散布許可。使用MinGW及GDB作為編譯系統(tǒng)與除錯(cuò)系統(tǒng)。Dev-C+的IDE是利用Delphi開發(fā)的。編輯軟件特點(diǎn):包含強(qiáng)大的類和內(nèi)嵌WinAPI的MFC,具有可視化的編程界面。四、算法描述:1、用戶可以選擇自己輸入文本或者直接使用程序以初始化的文本,用switch case語句就可以根據(jù)用戶不同的選擇執(zhí)行相應(yīng)的代碼。相應(yīng)代碼:couta代表自己輸入文本,b代表使用電腦設(shè)置的文本endl;cout請(qǐng)輸入你的選擇:ch;switch(ch)/對(duì)用戶的不同選擇執(zhí)行不同的代碼case a:/當(dāng)用戶選擇自行輸入文本時(shí)break;case b:/當(dāng)用戶選擇使用電腦設(shè)置的文本時(shí)break;2、當(dāng)用戶選擇自己輸入文本時(shí),就需要寫一些函數(shù)來存儲(chǔ)這些信息,可以將這些函數(shù)封裝在一個(gè)模板類中,只要定義一個(gè)之歌類的對(duì)象(bianji)就可以在需要的時(shí)候調(diào)用類的函數(shù)。在這個(gè)時(shí)候需要調(diào)用的函數(shù)有:bianji.Sethang(h);/設(shè)置文本的行數(shù)bianji.Setlie(l);/設(shè)置文本的列數(shù)bianji.Setwenben();/輸入文本bianji.Showwenben();/顯示文本3、單用戶選擇使用程序初始化的文本時(shí),只要顯示文本即可。這個(gè)時(shí)候需要的函數(shù)有:bianji.Showwenben();/顯示文本4、該文本編輯器有插入,移除,替換,查找,顯示和重置的功能,通過輸出語句告知用戶文本編輯器的功能,并詢問用戶要使用哪個(gè)功能。相應(yīng)代碼:char ch=s;/初始化chwhile(ch!=q)/當(dāng)ch!=q時(shí),就不會(huì)退出循環(huán)couti代表插入文本 ;coutR代表移除文本 ;coutr代表替換文本 ;coutf代表查找文本 ;couts代表顯示當(dāng)前文本 ;coutn代表重新建立一個(gè)文本 ;coutq代表退出 endl;coutch;5、當(dāng)用戶選擇插入(insert)功能時(shí),就只需要將當(dāng)前行數(shù)加1,將要插入的行及其后面的行的文本往后移一行,在輸入要插入的行的文本即可,相應(yīng)代碼:while(h0bianji.Gethang()|h01)/如果要插入的行大于已有的/最大行或者小于第一行就會(huì)要求重新輸入一個(gè)couth0;bianji.Sethang(bianji.Gethang()+1);/當(dāng)前行數(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請(qǐng)輸入第h0行第i+1個(gè)字符:;bianji.Fuzhiwenben(h0-1,i);coutbianji.Gethang()|h11)/如果要移除的行大于已有的/最大行或者小于第一行就會(huì)要求重新輸入一個(gè)couth1;bianji.Sethang(bianji.Gethang()-1);/將當(dāng)前行數(shù)減1int i1,j1;for(i1=h1-1;i1bianji.Gethang();i1+)/把要移除的行的后面的/行一次往前移一行就順便把要移除的那一行給覆蓋 /了,從而達(dá)到移除的效果for(j1=0;j1bianji.Getlie();j1+) bianji.Xiugaiwenben(i1,j1,i1+1,j1);bianji.Showwenben();7、當(dāng)用戶選擇替換(replace)功能時(shí),只需要重新輸入要替換行的文本即可,其他行的文本不變,相應(yīng)代碼:for(i2=0;i2bianji.Getlie();i2+) /得到要替換的那一行的列/數(shù),然后輸入新的文本cout請(qǐng)輸入第h2行第i2+1個(gè)字符:;bianji.Fuzhiwenben(h2-1,i2);coutendl;bianji.Showwenben();8、當(dāng)用戶選擇查找(find)功能時(shí),只要用戶輸入相應(yīng)列數(shù)的文本,然后將其與每一行的文本進(jìn)行比較,如果完全相同,則會(huì)輸出相應(yīng)的行號(hào),通過循環(huán)語句來進(jìn)行匹配,相應(yīng)代碼:for(i3=0;i3bianji.Getlie();i3+)/根據(jù)當(dāng)前文本的列數(shù)來輸入/要查找的文本cout請(qǐng)輸入第i3+1列的字符:;bianji.Fuzhiwenben(bianji.Gethang(),i3);/將輸入的文本放/到當(dāng)前的最后一行,只是暫時(shí)的 /在這個(gè)功能完了后就會(huì)/消失,因?yàn)闆]有改變文本的行列for(i3=0;i3bianji.Gethang();i3+)/根據(jù)輸入的文本,一行一行/的搜,將每一行的文本域輸入的文本進(jìn)行匹配 /如果匹配成功就會(huì)輸出相應(yīng)的行數(shù)j3=0; while(bianji.Findwenben(i3,j3)=bianji.Findwenben(bianji.Gethang(),j3)&j3bianji.Getlie()j3+;/相同就會(huì)在查下一列的字符是否相同,直到這一完/ 了if(j3=bianji.Getlie()cout你要找的文本在第i3+1行endl;count+=1;if(count=0)cout你要找的文本不在現(xiàn)有文本中endl;coutendl;9、當(dāng)用戶選擇顯示(show)功能時(shí),只需要調(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、當(dāng)用戶選擇重置(new)功能時(shí),五、源程序清單:該程序代碼分為3部分,分別是:1、模板類的代碼,文件名“l(fā)inklist.h”,相應(yīng)代碼:#ifndef LINKLIST_H_#define LINKLIST_H_#includeusing namespace std;template/隊(duì)列的模板類class LinkListprivate:ElemType wenben256256;/創(chuàng)立一個(gè)二維數(shù)組作為存儲(chǔ)文本的空間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)列賦一個(gè)字符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è)立一個(gè)文本int i,j;for(i=0;ihang;i+)cout請(qǐng)輸入第i+1行的文本:endl;for(j=0;jlie;j+)cout請(qǐng)輸入第i+1行第j+1列的字符wenbenij;void Showwenben()/顯示當(dāng)前文本cout當(dāng)前文本是: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型對(duì)象,用來調(diào)用模板類中的函數(shù)int count;/在使用查找功能時(shí)用來判斷是否要查找的文本在當(dāng)前文本中public:void Chushihua()/設(shè)置文本的函數(shù)couta代表自己輸入文本,b代表使用電腦設(shè)置的文本endl;cout請(qǐng)輸入你的選擇:ch;switch(ch)/對(duì)用戶的不同選擇執(zhí)行不同的代碼case a:/當(dāng)用戶選擇自行輸入文本時(shí)couth;coutendl;coutl;bianji.Sethang(h);/設(shè)置文本的行數(shù)bianji.Setlie(l);/設(shè)置文本的列數(shù)bianji.Setwenben();/輸入文本bianji.Showwenben();/顯示文本break;case b:/當(dāng)用戶選擇使用電腦設(shè)置的文本時(shí)bianji.Showwenben();/顯示初始化的文本break;void Edite()/編輯文本的函數(shù)char ch=s;/初始化chwhile(ch!=q)/當(dāng)ch!=q時(shí),就不會(huì)退出循環(huán)couti代表插入文本 ;coutR代表移除文本 ;coutr代表替換文本 ;coutf代表查找文本 ;couts代表顯示當(dāng)前文本 ;coutn代表重新建立一個(gè)文本 ;coutq代表退出 endl;coutch;switch(ch)/根據(jù)用戶的不同選擇執(zhí)行不同的代碼case i:/選擇插入(insert)功能bianji.Showwenben();/顯示當(dāng)前文本couth0;while(h0bianji.Gethang()|h01)/如果要插入的行大于已有的最大行或者小于第一行就會(huì)要求重新輸入一個(gè)couth0;bianji.Sethang(bianji.Gethang()+1);/當(dāng)前行數(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請(qǐng)輸入第h0行第i+1個(gè)字符:;bianji.Fuzhiwenben(h0-1,i);coutendl;bianji.Showwenben();/顯示文本break;case R:/選擇移除(remove)功能bianji.Showwenben();couth1;while(h1bianji.Gethang()|h11)/如果要移除的行大于已有的最大行或者小于第一行就會(huì)要求重新輸入一個(gè)couth1;bianji.Sethang(bianji.Gethang()-1);/將當(dāng)前行數(shù)減1int i1,j1;for(i1=h1-1;i1bianji.Gethang();i1+)/把要移除的行的后面的行一次往前移一行就順便把要移除的那一行給覆蓋 /了,從而達(dá)到移除的效果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請(qǐng)輸入第h2行第i2+1個(gè)字符:;bianji.Fuzhiwenben(h2-1,i2);coutendl;bianji.Showwenben();break;case f:/選擇查找(find)功能bianji.Showwenben();cout請(qǐng)輸入要查找的文件:endl;int i3,j3;count=0;for(i3=0;i3bianji.Getlie();i3+)/根據(jù)當(dāng)前文本的列數(shù)來輸入要查找的文本cout請(qǐng)輸入第i3+1列的字符:;bianji.Fuzhiwenben(bianji.Gethang(),i3);/將輸入的文本放到當(dāng)前的最后一行,只是暫時(shí)的 /在這個(gè)功能完了后就會(huì)消失,因?yàn)闆]有改變文本的行列/*cout第h3行的文本是:endl;/輸入行數(shù)就會(huì)將當(dāng)前文本中那一行的文本輸出for(i3=0;i3bianji.Getlie();i3+)coutbianji.Findwenben(h3-1,i3);*/for(i3=0;i3bianji.Gethang();i3+)/根據(jù)輸入的文本,一行一行的搜,將每一行的文本域輸入的文本進(jìn)行匹配 /如果匹配成功就會(huì)輸出相應(yīng)的行數(shù)j3=0;while(bianji.Findwenben(i3,j3)=bianji.Findwenben(bianji.Gethang(),j3)&j3bianji.Getlie()j3+;/相同就會(huì)在查下一列的字符是否相同,直到這一行完了if(j3=bianji.Getlie()cout你要找的文本在第i3+1行endl;count+=1;if(count=0)cout你要找的文本不在現(xiàn)有文本中endl;coutendl;break;case s:/選擇顯示當(dāng)前文本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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 景區(qū)旅游項(xiàng)目開發(fā)可行性研究考核試卷
- 租賃設(shè)備的遠(yuǎn)程技術(shù)支持考核試卷
- 糖果的糖果生產(chǎn)質(zhì)量管理與體系建設(shè)考核試卷
- 精神康復(fù)患者的情緒智力培養(yǎng)考核試卷
- 焙烤食品制造中的環(huán)境保護(hù)與可持續(xù)性考核試卷
- 珠海市高三月摸底考試生物試題
- 山東省廣饒縣稻莊鎮(zhèn)大營(yíng)小學(xué)2025年小升初數(shù)學(xué)自主招生備考卷含解析
- 南京市聯(lián)合體2024-2025學(xué)年初三下學(xué)期第一次階段考試(月考)數(shù)學(xué)試題含解析
- 遼寧中醫(yī)藥大學(xué)《建筑技術(shù)設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西省長(zhǎng)治市2025年數(shù)學(xué)五下期末統(tǒng)考試題含答案
- 車內(nèi)日常衛(wèi)生管理制度
- 客運(yùn)資格考試題及答案
- 液壓安全知識(shí)培訓(xùn)課件
- 工貿(mào)企業(yè)綜合應(yīng)急預(yù)案
- 中國(guó)安全生產(chǎn)中介服務(wù)市場(chǎng)深度調(diào)研分析及投資前景研究預(yù)測(cè)報(bào)告
- 2025年建投國(guó)電準(zhǔn)格爾旗能源有限公司招聘筆試參考題庫含答案解析
- 運(yùn)輸考試試題及答案
- 2025年交通事故經(jīng)濟(jì)賠償協(xié)議書模板
- 履帶高空作業(yè)車施工方案
- 2025年專業(yè)技術(shù)人員培訓(xùn)心得體會(huì)(6篇)
- 兒童心理學(xué)常識(shí)題單選題100道及答案
評(píng)論
0/150
提交評(píng)論