版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 計算機學院網(wǎng)絡(luò)工程專業(yè)</p><p><b> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計</b></p><p> 題 目: 簡易文本編輯器 </p><p> 班 級: </p><p> 姓 名:
2、 </p><p> 同組人姓名: </p><p> 起 迄 日 期: 2011-12-27~2011-12-30 </p><p> 課程設(shè)計地點: </p><
3、;p> 指導(dǎo)教師: </p><p> 完成日期:2011年12月</p><p><b> 目錄</b></p><p> 設(shè)計的目的和要求……………………………………………………………1</p><p> 課程設(shè)計的目的………………………………
4、………………………………1</p><p> 基本要求………………………………………………………………………1</p><p> 課程設(shè)計任務(wù)要求……………………………………………………………1</p><p> 需求分析………………………………………………………………………1</p><p> 具體設(shè)計………………………………………
5、………………………………1</p><p> 主程序流程圖…………………………………………………………………1</p><p> 詳細設(shè)計功能分析……………………………………………………………1</p><p> 函數(shù)分析 源程序代碼………………………………………………………6</p><p> 調(diào)試分析和測試結(jié)果………………………
6、………………………………19</p><p> 代碼測試截圖結(jié)果分析……………………………………………………19</p><p> 問題解決與分析……………………………………………………………23</p><p> 總結(jié)心得與體會……………………………………………………………24</p><p> 附錄一 參考文獻………………………
7、…………………………………25</p><p> 一.課程設(shè)計目的和要求</p><p><b> 設(shè)計目的</b></p><p> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計是一門實踐性非常強的課程,不但結(jié)合了C語言的設(shè)計基本知識,更加注重技能的培養(yǎng),是學生能夠允許漸進的把握C語言C++的程序設(shè)計的技能。通過此課程設(shè)計可以提高學生的思維能力,促進學生的綜合應(yīng)用
8、能力和專業(yè)素質(zhì)的提高,同時提以下幾個方面的能力。</p><p> 了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計方法,具備初步的獨立分析和設(shè)計能力;</p><p> 初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;</p><p> 提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力;</p><p> 訓(xùn)練用系統(tǒng)
9、的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學的工作方法和作風。</p><p><b> 設(shè)計要求</b></p><p><b> 在C環(huán)境下可以運行</b></p><p> 完成老師任務(wù)書上面的要求</p><p> 二.課程設(shè)計任務(wù)要求</p>&
10、lt;p><b> 需求分析</b></p><p><b> 具有圖形菜單界面;</b></p><p> 查找,替換(等長,不等長),插入(插串,文本塊的插入)、塊移動(行塊,列塊移動),刪除</p><p><b> 可正確存盤、取盤;</b></p><p&g
11、t;<b> 正確顯示總行數(shù)。</b></p><p><b> 三.具體設(shè)計</b></p><p> 主程序流程圖 如(圖1)所示</p><p> 程序中用鏈表來保存文本,每一行為一個單向鏈表,每一行的表頭保存在一個行鏈表中,形成了一個2維鏈表,結(jié)構(gòu)如下(圖2)所示:</p><p>
12、<b> 詳細設(shè)計功能實現(xiàn)</b></p><p><b> 打開文件</b></p><p> 提示用戶輸入文件路徑</p><p> 判斷文件路徑是否有效,若無效,則提示錯誤信息并返回,否則繼續(xù)執(zhí)行。</p><p> 若文件成功打開并且文件指針沒有到文件尾,則從文件中一次讀取一個字符
13、,并將該字符添加到一列單鏈表節(jié)點中,直至遇到換行符(ASCII碼10)。當列單鏈表形成后,它的首地址將被保存至行單鏈表的相應(yīng)節(jié)點的數(shù)據(jù)域中,如此動作,直至文件指針指向文件尾部而結(jié)束。</p><p><b> 新建文件</b></p><p> 若行鏈表中有數(shù)據(jù)存在,則提示用戶保存文件。</p><p> 提示用戶輸入新建文件的保存路徑。
14、</p><p> 測試新文件路徑是否有效。</p><p><b> 保存文件</b></p><p><b> 打開文件。</b></p><p> 遍歷行單鏈表,遍歷行單鏈表節(jié)點指向的列單鏈表,并將數(shù)據(jù)輸出到文件,每個列單鏈表遍歷完后,輸出換行符到文件。</p><
15、p><b> 關(guān)閉文件</b></p><p><b> ?。▓D1)</b></p><p><b> 插入字符串</b></p><p> 提示用戶輸入要插入字符串的位置(行號row,列號col)以及要插入的字符串。</p><p> 先在行單鏈表中找到該行(第
16、row行),若超出現(xiàn)有行數(shù),則添加空行補齊;</p><p> 將字符串插入該行(第row行)節(jié)點指向的列鏈表中的col-1位置,若超出現(xiàn)有節(jié)點數(shù),則添加保存字符為空格的節(jié)點補齊。</p><p><b> 刪除字符串</b></p><p> 提示用戶輸入要刪除字符串的開始位置(行號row,列號col)以及要插入的字符串的長度len。&
17、lt;/p><p> 在鏈表中定位到該行節(jié)點,若不存在,則提示無法刪除并返回;否則繼續(xù)執(zhí)行。</p><p> 在該行中定位到該col字符節(jié)點node,若不存在,則提示無法刪除并返回;否則繼續(xù)執(zhí)行。</p><p> 刪除從node字符節(jié)點開始的len個節(jié)點。若不滿len個,則全部刪除。</p><p><b> 查找替換<
18、;/b></p><p> 提示用戶輸入要查找的字符串。</p><p> 遍歷鏈表,找到每一個出現(xiàn)此字符串的位置并輸出。</p><p> 詢問用戶是否要進行替換。若選是,則提示用戶輸入要替換后的字符串,然后先在鏈表中刪除原字符串,再在該位置插入要替換為的字符串。</p><p><b> 行移動</b>
19、</p><p> 提示用戶輸入要移動的行row和移動后的位置pos。</p><p> 將行鏈表中的row-1節(jié)點移動到pos-1位置。</p><p><b> 列移動</b></p><p> 提示用戶輸入要移動的列col和移動后的位置pos。</p><p> 遍歷每一行(列鏈表
20、),將每一行的col-1節(jié)點移動到pos位置處;若col-1節(jié)點不存在則不處理。</p><p><b> 顯示文本</b></p><p> ?。?)遍歷行、列鏈表,并將數(shù)據(jù)輸出到控制臺;</p><p><b> (圖2)</b></p><p> 函數(shù)分析 源程序代碼</p>
21、;<p> #include <iostream></p><p> #include <fstream></p><p> #include <string></p><p> using namespace std;</p><p> //#include "Struc
22、t.h"</p><p> //1、 具有圖形菜單界面;</p><p> //2、 查找,替換(等長,不等長),插入(插串,文本塊的插入)、塊移動(行塊,列塊移動),刪除</p><p> //3、 可正確存盤、取盤;</p><p> //4、正確顯示總行數(shù)。</p><p><b>
23、 //字符節(jié)點</b></p><p> struct Node</p><p><b> {</b></p><p><b> char ch;</b></p><p> Node* next;</p><p><b> };</b&g
24、t;</p><p><b> //行節(jié)點</b></p><p> struct Row</p><p><b> {</b></p><p> Node* line;</p><p> Row* next;</p><p><b&g
25、t; };</b></p><p> //創(chuàng)建一個Node對象</p><p> Node* createNode(char ch)</p><p><b> {</b></p><p> Node* p = new Node;</p><p><b> p-&g
26、t;ch=ch;</b></p><p> p->next=NULL;</p><p><b> return p;</b></p><p><b> }</b></p><p> //創(chuàng)建一個Row對象</p><p> Row* createR
27、ow(Node* line)</p><p><b> {</b></p><p> Row* p=new Row;</p><p> p->line=line;</p><p> p->next=NULL;</p><p><b> return p;</b
28、></p><p><b> }</b></p><p> //定位到index處</p><p> Node* locate(Node* line,int index)</p><p><b> {</b></p><p> Node* p=line;<
29、;/p><p><b> int i=-1;</b></p><p> while(p!=NULL&&i<index)</p><p><b> {</b></p><p> p=p->next;</p><p><b> i++;
30、</b></p><p><b> }</b></p><p><b> return p;</b></p><p><b> }</b></p><p> Row* locate(Row* list,int index)</p><p&
31、gt;<b> {</b></p><p> Row* p=list;</p><p><b> int i=-1;</b></p><p> while(p!=NULL&&i<index)</p><p><b> {</b></p>
32、;<p> p=p->next;</p><p><b> i++;</b></p><p><b> }</b></p><p><b> return p;</b></p><p><b> }</b></p>
33、<p><b> //插入節(jié)點</b></p><p> bool insert(Node* list,int index,char c)</p><p><b> {</b></p><p> Node* p= locate(list,index-1);</p><p>&l
34、t;b> if(p)</b></p><p><b> {</b></p><p> Node* node=createNode(c);</p><p> node->next=p->next;</p><p> p->next=node;</p><p&
35、gt; return true;</p><p><b> }</b></p><p> return false;</p><p><b> }</b></p><p> bool insert(Row* list,int index,Node* line)</p><
36、;p><b> {</b></p><p> Row* p= locate(list,index-1);</p><p><b> if(p)</b></p><p><b> {</b></p><p> Row* row=createRow(line);&l
37、t;/p><p> row->next=p->next;</p><p> p->next=row;</p><p> return true;</p><p><b> }</b></p><p> return false;</p><p>&l
38、t;b> }</b></p><p><b> //刪除節(jié)點</b></p><p> bool remove(Node* list,int index)</p><p><b> {</b></p><p> Node* p=locate(list,index-1);&
39、lt;/p><p> Node* q=NULL;</p><p> if(p&&p->next)</p><p><b> {</b></p><p> q = p->next;</p><p> p->next=q->next;</p>
40、<p><b> delete q;</b></p><p> return true;</p><p><b> }</b></p><p> return false;</p><p><b> }</b></p><p>&l
41、t;b> //清空鏈表</b></p><p> void clear(Node* line)</p><p><b> {</b></p><p> Node* p=line->next;</p><p><b> Node* q;</b></p>
42、<p><b> while(p)</b></p><p><b> {</b></p><p> q=p->next;</p><p><b> delete p;</b></p><p><b> p=q;</b></p
43、><p><b> }</b></p><p><b> }</b></p><p> bool remove(Row* list,int index)</p><p><b> {</b></p><p> Row* p=locate(list,
44、index-1);</p><p> Row* q=NULL;</p><p> if(p&&p->next)</p><p><b> {</b></p><p> q = p->next;</p><p> p->next=q->next;&l
45、t;/p><p> clear(q->line); //清空字符鏈表</p><p> delete q->line; //刪除字符鏈表表頭</p><p><b> delete q;</b></p><p> return true;</p><p><b> }&
46、lt;/b></p><p> return false;</p><p><b> }</b></p><p> void clear(Row* text)</p><p><b> {</b></p><p> Row* p=text->next;&
47、lt;/p><p><b> Row* q;</b></p><p><b> while(p)</b></p><p><b> {</b></p><p> q=p->next;</p><p> clear(p->line);&l
48、t;/p><p> delete p->line; //刪除字符鏈表表頭</p><p><b> delete p;</b></p><p><b> p=q;</b></p><p><b> }</b></p><p><b>
49、 }</b></p><p> void Line(int i)</p><p><b> {</b></p><p><b> if(i==1)</b></p><p><b> {</b></p><p> cout<&
50、lt;"-----------------------------------------------------------------------"<<endl;</p><p><b> }</b></p><p> else if(i==2)</p><p><b> {</b>
51、;</p><p> cout<<"======================================================================="<<endl;</p><p><b> }</b></p><p><b> }</b>&l
52、t;/p><p> int YesOrNo()</p><p><b> {</b></p><p><b> char c;</b></p><p><b> cin>>c;</b></p><p> if(c=='Y'
53、;||c=='y')</p><p><b> {</b></p><p><b> return 1;</b></p><p><b> }</b></p><p> else if(c=='N'||c=='n')<
54、;/p><p><b> {</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> return -1;</p><p><b> }</b></p>
55、<p><b> //主菜單</b></p><p> void Menu()</p><p><b> {</b></p><p> cout<<"*****************************************************************
56、*****"<<endl;</p><p> cout<<"* 簡易文本編輯器 *"<<endl;</p><p> cout<<"*******************************************
57、***************************"<<endl;</p><p> cout<<"\t1.打開文件"<<endl;</p><p> cout<<"\t2.新建文件"<<endl;</p><p> cout<<&qu
58、ot;\t3.保存文件"<<endl;</p><p> cout<<"\t4.插入字符串"<<endl;</p><p> cout<<"\t5.刪除字符串"<<endl;</p><p> cout<<"\t6.查找替換&qu
59、ot;<<endl;</p><p> cout<<"\t7.行移動"<<endl;</p><p> cout<<"\t8.列移動"<<endl;</p><p> cout<<"\t9.顯示文本"<<endl;&l
60、t;/p><p> cout<<"\t0.退出"<<endl;</p><p><b> Line(1);</b></p><p><b> }</b></p><p><b> //輸出當前文本</b></p>&
61、lt;p> void PrintText(Row* text)</p><p><b> {</b></p><p> cout<<endl;</p><p><b> Line(2);</b></p><p> cout<<"當前文本為:"
62、;<<endl;</p><p><b> Line(1);</b></p><p> Row* p=text->next;</p><p><b> Node* q;</b></p><p><b> int i=0;</b></p>
63、<p> while(p!=NULL)</p><p><b> {</b></p><p><b> i++;</b></p><p> cout<<"行"<<i<<" ";</p><p> q =
64、 p->line->next;</p><p> while(q!=NULL)</p><p><b> {</b></p><p> cout<<q->ch;</p><p> q=q->next;</p><p><b> }</b
65、></p><p> cout<<endl;</p><p> p=p->next;</p><p><b> }</b></p><p><b> Line(1);</b></p><p> cout<<"總共 &
66、quot;<<i<<" 行"<<endl;</p><p><b> Line(2);</b></p><p><b> }</b></p><p><b> //打開文件</b></p><p> bool Op
67、enFile(char * fileName,Row* text)</p><p><b> {</b></p><p> ifstream file(fileName,ios::in);</p><p><b> if(!file)</b></p><p><b> {</
68、b></p><p> cout<<"文件讀取失敗!"<<endl;</p><p> return false;</p><p><b> }</b></p><p><b> char c;</b></p><p>
69、;<b> Row* rp;</b></p><p><b> rp=text;</b></p><p> while(!file.eof())</p><p><b> {</b></p><p> Node* line=new Node;</p>&
70、lt;p> line->next=NULL;</p><p> Node* p=line;</p><p> file.get(c);</p><p> while(c!=10&&!file.eof())</p><p><b> {</b></p><p>
71、 Node* q=createNode(c);</p><p> q->next=NULL;</p><p> p->next=q;</p><p> p=p->next;</p><p> file.get(c);</p><p><b> }</b></p&
72、gt;<p> /*if(c==10)</p><p><b> {</b></p><p> row.add('\n');</p><p><b> }*/</b></p><p> if(!file.eof())</p><p>&
73、lt;b> {</b></p><p> Row* rq = createRow(line);</p><p> rp->next=rq;</p><p> rp=rp->next;</p><p><b> }</b></p><p><b>
74、 }</b></p><p> file.close();</p><p> cout<<"文件讀取完成!"<<endl;</p><p> return true;</p><p><b> }</b></p><p><b&
75、gt; //創(chuàng)建文件</b></p><p> bool CreateFile(const char * fileName,Row* text)</p><p><b> {</b></p><p> ofstream file(fileName);</p><p><b> if(!fi
76、le)</b></p><p><b> {</b></p><p> cout<<"文件創(chuàng)建失??!"<<endl;</p><p> return false;</p><p><b> }</b></p><p&
77、gt; file.close();</p><p> cout<<"文件創(chuàng)建成功!"<<endl;</p><p> return true;</p><p><b> }</b></p><p><b> //保存</b></p>
78、<p> bool SaveFile(const char * fileName,Row* text)</p><p><b> {</b></p><p> ofstream file(fileName);</p><p><b> if(!file)</b></p><p>
79、<b> {</b></p><p> cout<<"文件保存失??!"<<endl;</p><p> return false;</p><p><b> }</b></p><p> Row* p=text->next;</p&g
80、t;<p> Node* q=NULL;</p><p> while(p!=NULL)</p><p><b> {</b></p><p> q = p->line->next;</p><p> while(q!=NULL)</p><p><b&g
81、t; {</b></p><p> //if(q->data=='\n')</p><p> file<<q->ch;</p><p> q=q->next;</p><p><b> }</b></p><p> file&l
82、t;<endl;</p><p> p=p->next;</p><p><b> }</b></p><p> file.close();</p><p> cout<<"文件保存成功!"<<endl;</p><p> retu
83、rn true;</p><p><b> }</b></p><p><b> //插入字符串</b></p><p> void InsertStr(Row* text,int row,int col)</p><p><b> {</b></p>&
84、lt;p> int i=-1,j=-1;</p><p> Row *rp,*rq;</p><p> Node *np,*nq;</p><p><b> rp=text;</b></p><p> while(rp->next&&i<row)</p><
85、p><b> {</b></p><p> rp=rp->next;</p><p><b> i++;</b></p><p><b> }</b></p><p> while(i<row)</p><p><b&g
86、t; {</b></p><p> nq=createNode(' ');//定義一個新行鏈表</p><p> rq=createRow(nq);</p><p> rp->next=rq;</p><p> rp=rp->next;</p><p><b>
87、; i++;</b></p><p><b> }</b></p><p> np=rp->line;</p><p> while(np->next&&j<col-1)</p><p><b> {</b></p><p&
88、gt; np=np->next;</p><p><b> j++;</b></p><p><b> }</b></p><p> while(j<col-1)</p><p><b> {</b></p><p> nq=cr
89、eateNode(' ');</p><p> np->next=nq;</p><p> np=np->next;</p><p><b> j++;</b></p><p><b> }</b></p><p> cin.get();
90、</p><p><b> string s;</b></p><p> getline(cin,s);</p><p> for(int k=0;k<s.length();k++)</p><p><b> {</b></p><p> nq=createN
91、ode(s[k]);</p><p> nq->next=np->next;</p><p> np->next=nq;</p><p> np=np->next;</p><p><b> }</b></p><p><b> }</b>&
92、lt;/p><p><b> //行移動</b></p><p> bool MoveRow(Row* text,int row,int poz)</p><p><b> {</b></p><p> if(row==poz)</p><p><b> {&
93、lt;/b></p><p> return true;</p><p><b> }</b></p><p> Row* p=locate(text,row-1);</p><p> Row* t=locate(text,poz-1);</p><p><b> Row
94、* q;</b></p><p> if(p&&p->next&&t)</p><p><b> {</b></p><p> q=p->next;</p><p> p->next=q->next;</p><p>
95、q->next=t->next;</p><p> t->next=q;</p><p> return true;</p><p><b> }</b></p><p> return false;</p><p><b> }</b></
96、p><p><b> //列移動</b></p><p> void MoveCol(Row* text,int col,int poz)</p><p><b> {</b></p><p> if(col==poz)</p><p><b> return
97、;</b></p><p> Row* rp=text->next;</p><p><b> while(rp)</b></p><p><b> {</b></p><p> Node* np=locate(rp->line,col-1);</p>
98、<p> Node* nt=locate(rp->line,poz-1);</p><p><b> Node* nq;</b></p><p> if(np&&np->next&&nt)</p><p><b> {</b></p><p&
99、gt; nq=np->next;</p><p> np->next=nq->next;</p><p> nq->next=nt->next;</p><p> nt->next=nq;</p><p><b> }</b></p><p>
100、 rp=rp->next;</p><p><b> }</b></p><p><b> }</b></p><p><b> //查找替換</b></p><p> void FindStr(Row* text)</p><p><
101、;b> {</b></p><p> string str,rep;</p><p> int pos,k=0,row=1,col=0;</p><p> cout<<"請輸入你要查找的字符串:"<<endl;</p><p><b> cin>>s
102、tr;</b></p><p> Row* p=text->next;</p><p><b> while(p)</b></p><p><b> {</b></p><p> string line;</p><p> Node* nq=p-&
103、gt;line->next;</p><p><b> while(nq)</b></p><p><b> {</b></p><p> line.append(1,nq->ch);</p><p> nq=nq->next;</p><p>&l
104、t;b> }</b></p><p> pos=line.find(str.c_str(),0);</p><p> while(pos!=string::npos)</p><p><b> {</b></p><p><b> col=pos;</b></p&g
105、t;<p><b> k++;</b></p><p> cout<<str<<" 第"<<k<<"次出現(xiàn)的位置是:第"<<row<<"行,第"<<col+1<<"列"<<endl;<
106、;/p><p> cout<<"是否替換?(Y/N) ";</p><p> int yon=YesOrNo();</p><p> while(yon==-1)</p><p><b> {</b></p><p> cout<<"是否
107、替換?(Y/N) ";</p><p> yon=YesOrNo();</p><p><b> }</b></p><p> if(yon==1)</p><p><b> {</b></p><p> cout<<"將 "
108、;<<str<<" 替換為:";</p><p><b> cin>>rep;</b></p><p><b> int j;</b></p><p> for(j=0;j<str.length();j++)</p><p><
109、;b> {</b></p><p> remove(p->line,col);</p><p><b> }</b></p><p> for(j=0;j<rep.length();j++)</p><p><b> {</b></p><
110、p> insert(p->line,col+j,rep[j]);</p><p><b> }</b></p><p> cout<<"替換成功!"<<endl;</p><p><b> }</b></p><p> pos=lin
111、e.find(str.c_str(),col+str.length());</p><p><b> }</b></p><p><b> row++;</b></p><p> p=p->next;</p><p><b> }</b></p>&
112、lt;p><b> if(k==0)</b></p><p><b> {</b></p><p> cout<<"當前文本中找不到該字符串!"<<endl;</p><p><b> }</b></p><p><
113、;b> }</b></p><p> void DelStr(Row* text,int row,int col,int len)</p><p><b> {</b></p><p> Row* rp = locate(text,row);</p><p> if(rp==NULL)<
114、/p><p><b> {</b></p><p> cout<<"無法刪除,因為該位置沒有字符串!"<<endl;</p><p><b> return;</b></p><p><b> }</b></p>&
115、lt;p> Node* np = locate(rp->line,col-1);</p><p> if(np==NULL)</p><p><b> {</b></p><p> cout<<"無法刪除,因為該位置沒有字符串!"<<endl;</p><p&g
116、t;<b> return;</b></p><p><b> }</b></p><p> Node* nq=np->next;</p><p><b> string s;</b></p><p><b> int k=0;</b>&l
117、t;/p><p> while(nq&&k<len)</p><p><b> {</b></p><p> s.append(1,nq->ch);</p><p> np->next=nq->next;</p><p> delete nq;<
118、/p><p> nq=np->next;</p><p><b> k++;</b></p><p><b> }</b></p><p> cout<<"成功刪除字符串 "<<s<<endl;</p><p>
119、;<b> }</b></p><p> int main()</p><p><b> {</b></p><p> bool flag=false;</p><p> int sel,row,col,poz;</p><p> Row* text=new Ro
120、w;</p><p> text->next=NULL;</p><p> string fileName;</p><p><b> Menu();</b></p><p> cout<<"請選擇操作:";</p><p><b> ci
121、n>>sel;</b></p><p> while(sel!=0)</p><p><b> {</b></p><p> switch(sel)</p><p><b> {</b></p><p> case 1: //打開文件
122、</p><p> cout<<"請輸入要打開的文件路徑(例如 E:\\1.txt):";</p><p> cin>>fileName;</p><p> flag = OpenFile((char *)fileName.c_str(),text);</p><p><b>
123、 if(flag)</b></p><p><b> {</b></p><p> PrintText(text);</p><p><b> }</b></p><p><b> break;</b></p><p> case
124、 2: //新建文件</p><p><b> if(flag)</b></p><p><b> {</b></p><p> cout<<"要保存前一個文件嗎?(Y/N) ";</p><p> int yon=YesOrNo();</p&
125、gt;<p> while(yon==-1)</p><p><b> {</b></p><p> cout<<"要保存前一個文件嗎?(Y/N) ";</p><p> yon=YesOrNo();</p><p><b> }</b>&l
126、t;/p><p> if(yon==1)</p><p><b> {</b></p><p> SaveFile((char *)fileName.c_str(),text);</p><p><b> }</b></p><p> flag = false;
127、</p><p><b> }</b></p><p> clear(text);</p><p> cout<<"請輸入要新建的文件路徑(例如 E:\\1.txt):";</p><p> cin>>fileName;</p><p>
128、 flag = CreateFile((char *)fileName.c_str(),text);</p><p><b> if(flag)</b></p><p><b> {</b></p><p> PrintText(text);</p><p><b> }</
129、b></p><p><b> break;</b></p><p> case 3: //保存文件</p><p><b> if(flag)</b></p><p><b> {</b></p><p> SaveFile((cha
130、r *)fileName.c_str(),text);</p><p> flag = false;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> co
131、ut<<"請輸入文件路徑:";</p><p> cin>>fileName;</p><p> flag = SaveFile((char *)fileName.c_str(),text);</p><p><b> }</b></p><p><b> b
132、reak;</b></p><p> case 4: //插入字符串</p><p> cout<<"請選擇要插入的位置(第x行第y個字符之后):"<<endl;</p><p> cout<<"行: ";</p><p><b> c
133、in>>row;</b></p><p> cout<<"列:";</p><p><b> cin>>col;</b></p><p> cout<<"請輸入要插入的字符串:";</p><p><b>
134、 row--;</b></p><p><b> col--;</b></p><p> InsertStr(text,row,col);</p><p> cout<<"插入成功!"<<endl;</p><p> PrintText(text);<
135、;/p><p><b> break;</b></p><p> case 5: //刪除字符串</p><p><b> int len;</b></p><p> cout<<"請選擇要刪除的字符串的開始位置(第x行第y個字符):"<<endl;
136、</p><p> cout<<"行: ";</p><p><b> cin>>row;</b></p><p> cout<<"列:";</p><p><b> cin>>col;</b></
137、p><p> cout<<"請輸入要刪除的字符串的長度:";</p><p><b> cin>>len;</b></p><p><b> row--;</b></p><p><b> col--;</b></p>
138、<p> DelStr(text,row,col,len);</p><p> PrintText(text);</p><p><b> break;</b></p><p> case 6: //查找替換字符串</p><p> FindStr(text);</p><p
139、> PrintText(text);</p><p><b> break;</b></p><p> case 7: //行移動</p><p> cout<<"請選擇你要移動的行:";</p><p><b> cin>>row;</b&g
140、t;</p><p> cout<<"你想要將第"<<row<<"行移動到第幾行之前? >:";</p><p><b> cin>>poz;</b></p><p><b> row--;</b></p>&
141、lt;p><b> poz--;</b></p><p> if(MoveRow(text,row,poz))</p><p><b> {</b></p><p> cout<<"移動完成!"<<endl;</p><p><b>
142、; }</b></p><p><b> else</b></p><p><b> {</b></p><p> cout<<"無法移動!"<<endl;</p><p><b> }</b></p>
143、;<p> PrintText(text);</p><p><b> break;</b></p><p> case 8: //列移動</p><p> cout<<"請選擇你要移動的列:";</p><p><b> cin>>col;&
144、lt;/b></p><p> cout<<"你想要將第"<<col<<"列移動到第幾列之前? >:";</p><p><b> cin>>poz;</b></p><p><b> col--;</b></p
145、><p><b> poz--;</b></p><p> MoveCol(text,col,poz);</p><p> cout<<"移動完成!"<<endl;</p><p> PrintText(text);</p><p><b>
146、; break;</b></p><p> case 9: //顯示文本</p><p> PrintText(text);</p><p><b> break;</b></p><p><b> default:</b></p><p><b&
147、gt; break;</b></p><p><b> }</b></p><p> cout<<"請選擇操作:";</p><p><b> cin>>sel;</b></p><p><b> }</b>&l
148、t;/p><p><b> if(flag)</b></p><p><b> {</b></p><p> cout<<"要保存前一個文件嗎?(Y/N) ";</p><p> int yon=YesOrNo();</p><p>
149、while(yon==-1)</p><p><b> {</b></p><p> cout<<"要保存前一個文件嗎?(Y/N) ";</p><p> yon=YesOrNo();</p><p><b> }</b></p><p&
150、gt; if(yon==1)</p><p><b> {</b></p><p> SaveFile((char *)fileName.c_str(),text);</p><p><b> }</b></p><p> flag = false;</p><
151、p><b> }</b></p><p> clear(text);</p><p> delete text;</p><p><b> return 0;</b></p><p><b> }</b></p><p> 四.調(diào)試分析
152、和測試結(jié)果</p><p> 代碼測試截圖結(jié)果分析</p><p><b> 主菜單圖形界面</b></p><p> 注:通過該見面進入簡易文本編輯器的操作</p><p><b> 新建文本運行界面</b></p><p> 注:在選擇了正確的存儲路徑后才可新建
153、文件,新建文件后就自動保存一空的文檔</p><p><b> 插入字符串運行界面</b></p><p> 注:在新建的文件中插入字符串</p><p><b> 刪除字符串運行界面</b></p><p><b> 插入替換運行界面</b></p>&
154、lt;p><b> 移動行列運行界面</b></p><p> 注:在編輯文本時可能出現(xiàn)錯誤,用有些移動刪除來及解決,此界面對比出文本前后</p><p><b> 顯示文本運行界面</b></p><p> 注:每進行一次操作文本就更新,操作9 是又新建的空文本經(jīng)過一些列的操作后最終顯示的文件</p&
155、gt;<p><b> 3問題解決與分析</b></p><p><b> 如下界面</b></p><p> 當你保存的文件路徑不對時,程序運行會出現(xiàn)異常,輸入了正確的路徑如代碼中的示范程序才正常運行</p><p> 沒有按照程序代碼的指令來,會導(dǎo)致運行錯誤</p><p>
156、;<b> 五.總結(jié)心得與體會</b></p><p> 這次課程的設(shè)計使我認識到知識的學習不能只局限于課本,更使我明白時間的編碼能力和實踐能力非常重要,而在以后我們所編寫的程序是面向?qū)ο蟮?,編寫的程序是給用戶用的,不能單單的以控制臺輸出,這是我現(xiàn)在所未想到的最大缺陷。通過此次的課程設(shè)計,我又更好的掌握了Visual C++的環(huán)境和語法,熟悉了其結(jié)構(gòu),提高的程序的編寫能力和程序分析能力,
157、并學會了用Visual C++來解決實際中的一些簡單的問題,了解了程序的設(shè)計原則及方法,也學會了一些算法的思想,并切實感受到好的算法對編程所帶來的巨大好處,這同時也提高了我對實際問題的分析能力,為以后的學習做了一個好的開端。同時明白要學的東西太多了,非常感謝這次給予我?guī)妥⒌耐瑢W,要虛心請教,這樣才能更快的提高自己去的更大的進步。</p><p> 附錄一 參考文獻:</p><p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--簡易文本編輯器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-簡易文本編輯器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--文本編輯器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-小型文本編輯器的設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計總結(jié)報告--文本編輯器
- 簡易文本編輯器課程設(shè)計報告
- 微機原理課程設(shè)計—簡易文本編輯器
- 文本編輯器課程設(shè)計
- 文本編輯器課程設(shè)計報告
- java課程設(shè)計--文本編輯器
- java課程設(shè)計---文本編輯器
- java課程設(shè)計---文本編輯器
- vb課程設(shè)計文本編輯器
- java課程設(shè)計(文本編輯器)
- c語言課程設(shè)計--文本編輯器
- vb課程設(shè)計報告----文本編輯器
- vb課程設(shè)計報告---文本編輯器
- c_文本編輯器課程設(shè)計
- 操作系統(tǒng)課程設(shè)計---文本編輯器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--文字編輯器
評論
0/150
提交評論