數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)簡(jiǎn)易文本編輯器_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)簡(jiǎn)易文本編輯器_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)簡(jiǎn)易文本編輯器_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)簡(jiǎn)易文本編輯器_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)簡(jiǎn)易文本編輯器_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 班 級(jí): 10計(jì)本2班 姓 名: 鄧 寅 森 學(xué) 號(hào): 2010305202 指導(dǎo)教師: 楊 老 師 完成日期: 2011年12月 計(jì)算機(jī)科學(xué)與技術(shù)系課程設(shè)計(jì)評(píng)分表 課程名稱: 數(shù)據(jù)結(jié)構(gòu) 簡(jiǎn)易文本編輯器項(xiàng) 目評(píng) 價(jià)設(shè)計(jì)方案的合理性與創(chuàng)造性設(shè)計(jì)與調(diào)試結(jié)果設(shè)計(jì)說明書的質(zhì)量功能完善度綜合成績(jī)學(xué) 號(hào)班 級(jí)姓 名綜合成績(jī)201030520210計(jì)本2班鄧寅森教師評(píng)語 教師簽名: 日 期: 目 錄一、需求分析3二、概要設(shè)計(jì)3三、模塊設(shè)計(jì)5四、詳細(xì)設(shè)計(jì)7五、調(diào)試分析8六、用戶使用說明11七、 參考文獻(xiàn)12八、 對(duì)所設(shè)計(jì)的軟件進(jìn)行自我評(píng)價(jià),如創(chuàng)新點(diǎn)、未解決的問題等情況說明12九、程序源代碼:13一、需求分析

2、1.1 問題描述 傳統(tǒng)的紙質(zhì)文檔已經(jīng)不能滿足大家的需求,有容易丟失、查找不方便等缺點(diǎn)。計(jì)算機(jī)信息管理為人們的生活、工作提供了方便,提高了效率。“簡(jiǎn)易文本編輯器”是為了幫助老師、同學(xué)或其他一些需要使用文本編輯的人員進(jìn)行管理和分析的一種計(jì)算機(jī)應(yīng)用程序。1.2 基本任務(wù) 通過用戶調(diào)查分析及實(shí)際需求,系統(tǒng)需要實(shí)現(xiàn)如下基本任務(wù):(1)輸入數(shù)據(jù)信息建立文本;(2)查詢文本中滿足要求的信息;(3)插入新的信息到文本中;(4)刪除不再需要的文本信息; (5) 查看所有的文本信息。二、概要設(shè)計(jì)為了完成需求分析的基本任務(wù),主要從以下3個(gè)方面進(jìn)行設(shè)計(jì):2.1 主界面設(shè)計(jì) 為了實(shí)現(xiàn)簡(jiǎn)易文本編輯器的各項(xiàng)功能,設(shè)計(jì)了一個(gè)

3、含有多個(gè)菜單項(xiàng)的主控菜單模塊以操作系統(tǒng)的各項(xiàng)功能,以方便用戶使用系統(tǒng)。系統(tǒng)進(jìn)入菜單運(yùn)行界面如圖所示:簡(jiǎn)易文本編輯器主菜單2.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)系統(tǒng)采用線性表的順序存儲(chǔ)結(jié)構(gòu)表示和存儲(chǔ)“簡(jiǎn)易文本編輯器”中的信息。實(shí)現(xiàn)文本的輸入,刪除,插入,查找,顯示功能。2.3 系統(tǒng)功能設(shè)計(jì) 運(yùn)行程序,提示進(jìn)入菜單,按“回車鍵”進(jìn)入主菜單,再可以在主菜單上進(jìn)行各項(xiàng)操作。每次進(jìn)入菜單,選擇“1鍵”新建文本,然后才可以進(jìn)行其他操作,或者按“0鍵”選擇退出。三、模塊設(shè)計(jì)3.1 模塊設(shè)計(jì)系統(tǒng)主要包含主程序模塊和其它操作模塊。其調(diào)用關(guān)系如圖所示。主函數(shù)各操作模塊模塊調(diào)用示意圖3.2 系統(tǒng)子模塊及其功能設(shè)計(jì)本系統(tǒng)共設(shè)計(jì)了16個(gè)

4、子模塊,各程序的函數(shù)名及功能說明如下:1、/*由模式串nextval值*/void GetNextval(SqVString T,int nextval)2、/*模式匹配KMP算法*/int KMPIndex(SqVString S,int pos,int next,SqVString T)3、/*初始化串*/void InitString(SqVString *S,char *str)4、/*串插入*/int StrInsert(SqVString *S,int pos,SqVString T)5、 /*串刪除*/int StrDelete(SqVString *S,int pos,int

5、len)6、/*求子串*/int SubStr(SqVString S,int pos,int len,SqVString *T)7、/*串連接*/int Concat(SqVString *S,SqVString T)8、/*串賦值*/int StrAssign(SqVString *S,char *value)9、 void InputString() /新建 10、void DeleteString()/刪除11、 void DeleteSubstring()/刪除12、 void InsertSubstring()/查找13、void DisplayString()/顯示14、void

6、 cd()/進(jìn)入界面15、void ts()/主菜單16、void tc()/退出3.3 系統(tǒng)模塊之間的調(diào)用關(guān)系系統(tǒng)的16個(gè)子模塊之間的主要調(diào)用關(guān)系所示:系統(tǒng)函數(shù)調(diào)用關(guān)系圖四、詳細(xì)設(shè)計(jì)4.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)系統(tǒng)采用線性表的順序存儲(chǔ)結(jié)構(gòu)存儲(chǔ)通訊錄信息。4.2 系統(tǒng)主要模塊設(shè)計(jì)(1) 建立文本模塊,由void InitString(SqVString *S,char *str)函數(shù)實(shí)現(xiàn)。該模塊的算法思想是:按照給定的線性表存儲(chǔ)空間的初始化分配量分配存儲(chǔ)空間,若分配成功,則往下進(jìn)行;令線性表長(zhǎng)為0;令線性表當(dāng)前存儲(chǔ)容量為給定的線性表存儲(chǔ)空間的初始化分配量。該模塊的算法描述如下:見源程序(2) 查看文本

7、中得所有記錄,需要一個(gè)模式匹配int KMPIndex(SqVString S,int pos,int next,SqVString T)函數(shù)實(shí)現(xiàn)。該模塊的算法思想是:在此略該模塊的算法描述如下:見源程序(其它模塊設(shè)計(jì) 略)五、調(diào)試分析5.1、調(diào)試方法: 首先打開Microsoft Visual C+ 6.0 ,運(yùn)行程序,出現(xiàn)錯(cuò)誤修改再運(yùn)行,直至運(yùn)行結(jié)果0 error ,0 warning結(jié)束。接著進(jìn)入程序界面,看程序能否實(shí)現(xiàn)所要求的各項(xiàng)功能,再作下一步的修改。5.2、調(diào)試結(jié)果主菜單新建顯示刪除查找插入退出5.3、程序出現(xiàn)的問題:還有幾個(gè)程序模塊未能成功調(diào)用。( 其他問題 見“第八項(xiàng)中未能解決

8、的問題” )六、用戶使用說明當(dāng)用戶打開程序,就會(huì)提示按【回車鍵】進(jìn)入,按【回車鍵】則進(jìn)入主菜單頁面,進(jìn)入主菜單,選擇【1鍵】,新建文本信息,編輯好后,按照程序中的文字提示,返回到主菜單,此時(shí)在主菜單選擇其他操作,當(dāng)進(jìn)入各項(xiàng)操作,均有提示。每一操作完成,按【回車鍵】返回主菜單,選擇【0鍵】,安全退出程序!7、 參考文獻(xiàn)數(shù)據(jù)結(jié)構(gòu)理論與實(shí)踐楊永斌8、 對(duì)所設(shè)計(jì)的軟件進(jìn)行自我評(píng)價(jià),如創(chuàng)新點(diǎn)、未解決的問題等情況說明。 拿到該課程題目,準(zhǔn)備仿照電腦上的文本編輯器寫該程序,由于我所學(xué)不是扎實(shí),于是就借助課本上所學(xué)的串與數(shù)組,寫好了這個(gè)程序,程序能夠正確的完成,程序充分包含了本學(xué)期的所學(xué)內(nèi)容,體現(xiàn)了數(shù)據(jù)結(jié)構(gòu)的

9、特點(diǎn)。繼續(xù)沿用了清屏函數(shù),是屏幕看起來很舒服,不至于那么雜亂。 未解決的問題:在完成插入,查找功能的時(shí)候,出現(xiàn)了問題,當(dāng)程序執(zhí)行到此處時(shí),程序未能進(jìn)入下一步,而是直接退出了。當(dāng)進(jìn)入主菜單后,只能選擇【1鍵】或者退出,這是未能得到優(yōu)化的。塊移動(dòng)(行塊,列塊移動(dòng)),正確存盤、取盤;正確顯示總行數(shù)等功能未能完成。九、程序源代碼:#include<iostream.h>#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#define STRSIZE 1

10、00#define MAXSTRING 60#define MAXLINE 24/*存儲(chǔ)結(jié)構(gòu)*/typedef structchar*ch;int length;SqVString;/*由模式串nextval值*/void GetNextval(SqVString T,int nextval)int j=0,k=-1;nextval0=-1;while(j<T.length)if(k=-1|T.chj=T.chk)j+;k+;if(T.chj=T.chk)nextvalj=nextvalk;elsenextvalj=k;elsek=nextvalk;/*模式匹配KMP算法*/int KM

11、PIndex(SqVString S,int pos,int next,SqVString T)int i=pos,j=0,r;while(i<S.length && j<T.length)if(i<S.chi=T.chj)+i;+j;else if(j=0)+i;elsej=nextj;if(j>=T.length)r=i-T.length;elser=-1;return r;/*初始化串*/void InitString(SqVString *S,char *str)int i;char *c;int len=0;c=str;while(*c!=&#

12、39;n')len+;c+;/*求str的長(zhǎng)度*/S->ch=(char *)malloc(len *sizeof(char);/*申請(qǐng)動(dòng)態(tài)數(shù)組空間*/S->length=len;/*置串的當(dāng)前長(zhǎng)度*/for(i=0;i<S->length;i+)S->chi=stri;/*賦值串值*/*串插入*/int StrInsert(SqVString *S,int pos,SqVString T)int i;int len;if(pos<0 | pos>S->length)cout<<" tt插入位置不合法,其取值范圍應(yīng)該

13、是0,length"return 0;len=S->length+T.length;S->ch=(char *)realloc(S->ch,len *sizeof(char);if(!S->ch)cout<<" tt分配空間出錯(cuò),無法完成串插入操作"return 0;for(i=S->length-1;i>=pos;i-)S->chi=T.length=S->chi;for(i=0;i<T.length;i+)S->chi+pos=T.chi;S->length=len;return 1

14、;/*串刪除*/int StrDelete(SqVString *S,int pos,int len)int i;int length;char *str;if(pos<0 | len<=0 | pos>S->length |S->length<=0)cout<<" tt刪除位置pos及刪除長(zhǎng)度len不合法,無法完成刪除操作"return 0;length=S->length-len;if(length<=0)length=pos;/*若pos+len大于串長(zhǎng),則從pos刪到串尾*/str=(char *)mall

15、oc(length*sizeof(char);if(!str)cout<<" tt分配空間出錯(cuò),無法完成串的刪除操作"return 0;for(i=0;i<pos;i+)stri=S->chi;for(i=pos+len;i<S->length;i+)stri-len=S->chi;free(S->ch);S->length=length;S->ch=str;return 1;/*求子串*/int SubStr(SqVString S,int pos,int len,SqVString *T)int i;if(S.

16、length<=0)cout<<" tt空串,無法完成求子串操作"return 0;if(pos<0 | pos>S.length | len<=0)cout<<" tt子串位置pos及子串長(zhǎng)度len不合法,無法完成求子串操作"return 0;if(pos+len>S.length)len=S.length-pos+1;/*當(dāng)子串長(zhǎng)度超過主串長(zhǎng)度,則只取到串尾即可*/if(T->length)free(T->ch);/*釋放S的原有空間*/T->ch=(char *)malloc(

17、len *sizeof(char);if(!T->ch)cout<<" tt分配空間出錯(cuò),無法完成求子串操作"return 0;for(i=0;i<len;i+)T->chi=S.chi+pos;T->length=len;return 1;/*串連接*/int Concat(SqVString *S,SqVString T)int i;int len;len=S->length+T.length;S->ch=(char *)realloc(S->ch,len *sizeof(char);if(!S->ch)cou

18、t<<" tt分配空間出錯(cuò),無法完成串連接操作"return 0;for(i=0;i<T.length;i+)S->chi+S->length=T.chi;S->length=len;return 1;/*串賦值*/int StrAssign(SqVString *S,char *value)int count=0;int i;char *c;/S=(SqVString *)malloc(sizeof(SqVString);if(S->length!=0)free(S->ch);/*釋放S的原有空間*/c=value;whil

19、e(*c!='n')count+;c+;/*求value的長(zhǎng)度*/if(!count)/*value為空串*/S->ch=NULL;S->length=0;elseS->ch=(char *)malloc(count);if(!S->ch) cout<<"tt分配空間出錯(cuò),無法完成串賦值操作"return 0;for(i=0;i<count;i+)S->chi=valuei;S->length=count;return 1;SqVString *linesMAXLINE;void InputString(

20、)char bufferMAXSTRING;SqVString *tmp;int LineNum=0;flushall();cout<<"tt="<<endl;cout<<"tt 新 建 文 本 "<<endl;cout<<"tt="<<endl;cout<<"tt請(qǐng)輸入文本,每以回車結(jié)束,一段以#結(jié)束行"<<endl;docin>>buffer;tmp=(SqVString *)malloc(sizeof(

21、SqVString);InitString(tmp,buffer);linesLineNum=tmp;LineNum+;while(buffer0!='#');/cout<<" ttOK."void DeleteString()int i;cout<<"tt="<<endl;cout<<"tt 刪 除 文 本 "<<endl;cout<<"tt="<<endl;cout<<" tt請(qǐng)輸入要?jiǎng)h除行

22、的行號(hào):"cin>>i;free(linesi-1);while(linesi->ch0!='#')linesi-1=linesi;i+;linesi-1=linesi;cout<<" ttOK."<<endl;void InsertSubstring()int i=0;int pos=0;char bufferMAXSTRING;SqVString tmp;cout<<"tt="<<endl;cout<<"tt 插 入 子 串 "

23、<<endl;cout<<"tt="<<endl;cout<<" tt請(qǐng)輸入子串所在的行號(hào):"cin>>i;cout<<" tt請(qǐng)輸入插入位置:"cin>>pos;cout<<" tt請(qǐng)輸入子串值:"cin>>buffer;InitString(&tmp,buffer);StrInsert(linesi,pos,tmp);cout<<" ttOK."<<en

24、dl;void DeleteSubstring()int i=0;int pos=0;int len=0;cout<<"tt="<<endl;cout<<"tt 刪 除 子 串 "<<endl;cout<<"tt="<<endl;cout<<" tt請(qǐng)輸入子串所在的行號(hào):"cin>>i;cout<<"ntt請(qǐng)輸入刪除的起始位置:"cin>>pos;cout<<&qu

25、ot; tt請(qǐng)輸入刪除的字符數(shù):"cin>>len;StrDelete(linesi,pos,len);cout<<"tt OK."<<endl;void FindSubstring()int i=0;int pos=0;char bufferMAXSTRING;int nextMAXSTRING;SqVString tmp;cout<<"tt="<<endl;cout<<"tt 查 找 文 本 "<<endl;cout<<&qu

26、ot;tt="<<endl;cout<<" tt請(qǐng)輸入要查找的子串:"cin>>buffer;InitString(&tmp,buffer);GetNextval(tmp,next);while(linesi->ch0!='#')if(pos=KMPIndex(* linesi,0,next,tmp)!=-1)cout<<" tt子串"<<buffer<<" 在第"<<i+1<<" 行的&q

27、uot;<<pos<<"位置上出現(xiàn)"<<endl;return;i+;cout<<" ttOK."<<endl;void DisplayString()int i=0;cout<<"tt="<<endl;cout<<"tt 顯 示 文 本 "<<endl;cout<<"tt="<<endl;while(linesi->ch0!='#')cout

28、<<linesi->ch<<endl;i+;cout<<" ttOK."<<endl;void cd()/進(jìn)入界面cout<<endl<<endl;cout<<"tt"<<"_"<<endl;cout<<"tt"<<"-"<<endl;cout<<"tt"<<" 歡·迎·使&

29、#183;用 "<<endl; cout<<"tt"<<""<<endl;cout<<"tt"<<" 簡(jiǎn)易文本編輯器 "<<endl;cout<<"tt"<<"·················

30、3;····"<<endl;cout<<"tt"<<"-"<<endl;cout<<"tt"<<" 重慶工商大學(xué)派斯學(xué)院 "<<endl;cout<<"tt"<<" 計(jì)算機(jī)科學(xué)系 "<<endl;cout<<"tt"<<" 制作人: 10計(jì)本2班 鄧寅森&

31、quot;<<endl;cout<<"tt"<<" 2011年11月 "<<endl;cout<<"tt"<<""<<endl;cout<<"tt"<<"_"<<endl;cout<<"tt"<<" 點(diǎn)擊【回車】 進(jìn) 入 "<<endl;cout<<"tt&qu

32、ot;<<""<<endl;cout<<"tt"void ts() cout<<endl;cout<<"tt-"<<endl;cout<<"tt 主菜單 "<<endl;cout<<"tt-"<<endl;cout<<"tt 1、輸入文本"<<endl;cout<<"tt 2、刪除一行"<<endl;cout<<&quo

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論