版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 數(shù) 據(jù) 結(jié) 構(gòu)</b></p><p> 課 程 設(shè) 計(jì) 說(shuō) 明 書</p><p> 2011年12月20日</p><p><b> 1.設(shè)計(jì)目的</b></p><p><b> 簡(jiǎn)易文本編輯器</b></p><
2、p><b> 2.設(shè)計(jì)內(nèi)容和要求</b></p><p> 1) 具有圖形菜單界面;</p><p> 2) 查找,替換(等長(zhǎng),不等長(zhǎng)),插入(插串,文本塊的插入)、塊移動(dòng)(行塊,列塊移動(dòng)),刪除</p><p> 3) 可正確存盤、取盤;</p><p> 4)
3、正確顯示總行數(shù)。</p><p> 3.本設(shè)計(jì)所采用的數(shù)據(jù)結(jié)構(gòu)</p><p> 本程序是對(duì)輸入的文字進(jìn)行操作,故使用的數(shù)據(jù)結(jié)構(gòu)為單鏈表操作</p><p> 線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的特點(diǎn)是用一組任意的存儲(chǔ)單元存儲(chǔ)線性表的數(shù)據(jù)元素。它包括兩個(gè)域:其中存儲(chǔ)數(shù)據(jù)元素信息的域稱為數(shù)據(jù)域;存儲(chǔ)直接后繼存儲(chǔ)位置的域稱為指針域。另有全局變量*head,作為文章的頭指針。&
4、lt;/p><p> 在文章內(nèi)容創(chuàng)建部分中使用線性表的鏈?zhǔn)酱鎯?chǔ),并使用全局變量對(duì)文本的各種信息進(jìn)行存儲(chǔ);</p><p> 文章的內(nèi)容統(tǒng)計(jì)、刪除、查找、插入都采用鏈表操作完成。</p><p> 4.功能模塊詳細(xì)設(shè)計(jì)</p><p> 4.1 詳細(xì)設(shè)計(jì)思想</p><p> 本程序所定義函數(shù)的設(shè)計(jì)思想:</
5、p><p> CreatWord()文本內(nèi)容輸入函數(shù)</p><p> 定義LinkList指針變量*temp: LinkList *temp;</p><p> 定義文本輸入變量ch,記錄文本行數(shù)變量j,記錄每行字符數(shù)變量i;</p><p> 申請(qǐng)動(dòng)態(tài)存儲(chǔ)空間:head->next=(LinkList *)malloc(siz
6、eof(LinkList));</p><p> 首行頭指針的前驅(qū)指針為空:head->pre=NULL;</p><p> 利用循環(huán)進(jìn)行文本輸入</p><p> PrintWord()當(dāng)前文本輸出函數(shù)</p><p> 定義文本行數(shù)變量j,每行字符數(shù)i:int i,j;</p><p> 定義指針變
7、量:LinkList *p;</p><p> 將指針p指向鏈表表頭: p=head->next;</p><p> 利用循環(huán)輸出鏈表中信息:</p><p> for(j=0;j<=NUM&&p!=NULL;j++)</p><p> {=for(i=0;(i<80)&&(p->
8、;data[i])!='#';i++)</p><p> {=printf("%c",p->data[i]);}</p><p> p=p->next; </p><p> SearchWord( ) 文本內(nèi)容查找函數(shù)</p><p> 定義一個(gè)數(shù)組,用來(lái)記錄需要查找的字符內(nèi)容:char
9、 Data[20];</p><p> 定義定義文本行數(shù)變量j,每行字符數(shù)i,記錄字符出現(xiàn)的次數(shù)變量:</p><p> 利用循環(huán)進(jìn)行查找操作,核心算法為:</p><p> if((temp->data[i])==Data[k]) </p><p> k++;//將輸入的查找字符與鏈表中信息比較,找到第一個(gè)相同的字符<
10、/p><p> else if(Data[k]!='\0')</p><p> {i=i-k; k=0; } // //從主串第i-k個(gè)位置重新查找</p><p> if(Data[k]=='\0') </p><p> {sum++;//此字符出現(xiàn)的次數(shù)加1</p><p>
11、i=i-k+1; //i記錄下該字符串出現(xiàn)的位置</p><p> printf("\t\t第%d次出現(xiàn)在第%d行第%d列\(zhòng)n",l,j+1,i);</p><p><b> l++;</b></p><p><b> k=0;</b></p><p> continue
12、;} </p><p> temp=temp->next; //指向下一行</p><p> DeleteWord( ) 文本內(nèi)容刪除函數(shù)</p><p> 定義一個(gè)數(shù)組用來(lái)存儲(chǔ)需要?jiǎng)h除的字符或者字符串:char Data[20];</p><p> 定義指針變量:LinkList *temp,*term;</p>
13、<p> 使用VC++中拷貝函數(shù)講形參中需要?jiǎng)h除的字符或字符串賦值給已定義的數(shù)組:</p><p> strcpy(Data,str2);</p><p> 使用循環(huán)進(jìn)行刪除操作:</p><p><b> 其核心算法為:</b></p><p> for(j=0;j<=NUM;j++) &l
14、t;/p><p> { for(i=0;i<80;i++) </p><p> { if((temp->data[i])==Data[k]) k++; </p><p> else if(Data[k]!='\0') {i=i-k;k=0;} </p><p> if(Data[k]=='\0'
15、) </p><p> {num=i;break; } } </p><p> if(num<80) break; }</p><p> 首先是使用循環(huán)查找到需要?jiǎng)h除字符或者字符串的字符數(shù)以及字符或者字符串的位置,以便于刪除;</p><p> for(;j<=NUM;j++) </p><p>
16、 { for(;i<80;i++) </p><p> { if(i+1<k) </p><p> { term->data[80-k+num]=temp->data[i+1]; } //刪除的字符串不在最后一行,將下一行的字符(由temp指向)前移到前行</p><p> else temp->data[i-k+1]=te
17、mp->data[i+1];} //當(dāng)要?jiǎng)h除的字符串在最后一行只要將最后一行的字符前移</p><p> term=temp;</p><p> temp=temp->next;</p><p> j=0;}//在使用循環(huán),從查找到的字符或者字符串開(kāi)始進(jìn)行刪除,在一行刪除完畢之后,轉(zhuǎn)至下一行進(jìn)行刪除。</p><p>
18、 本程序所定義的函數(shù):</p><p> 1、HeadWord() 標(biāo)題函數(shù),即一個(gè)輸出標(biāo)題,永遠(yuǎn)出現(xiàn)在程序的最頂端。</p><p> 2、save() 文件存儲(chǔ)函數(shù)</p><p> 3、load() 文件讀取函數(shù)</p><p> 4、CreatWord() 文本輸入函數(shù)</p><p> 5、
19、PrintWord() 當(dāng)前文本內(nèi)容輸出函數(shù)</p><p> 6、SearchWord() 文章內(nèi)容查找函數(shù)</p><p> 7、DelWord() 文章內(nèi)容刪除函數(shù)</p><p> 8、InsertWord() 文章內(nèi)容插入函數(shù)</p><p> 9、Replace() 文章內(nèi)容替換函數(shù)</p><p
20、> 10、Bmenu() 第二子菜單函數(shù)</p><p> 11、menu() 主菜單函數(shù)</p><p> 12、main()主函數(shù)</p><p><b> 4.2 運(yùn)行結(jié)果</b></p><p> ?。?)執(zhí)行完menu() 主菜單函數(shù)后的結(jié)果</p><p><b&
21、gt; 輸入文章內(nèi)容的結(jié)果</b></p><p> ?。?)讀取當(dāng)前文本內(nèi)容信息</p><p> 進(jìn)入文本內(nèi)容處理菜單</p><p> (5)查找文章中字符或者字符串</p><p> ?。?)顯示當(dāng)前文章內(nèi)容</p><p><b> ?。?)返回主菜單</b></
22、p><p><b> 4.3 核心代碼</b></p><p> #include "stdafx.h"</p><p> #include "stdio.h"</p><p> #include "conio.h"</p><p>
23、 #include"malloc.h"</p><p> #include"string.h"</p><p> #include"iostream.h"</p><p> #include"stdlib.h"</p><p> #define Link
24、_Size 100</p><p> int NUM,C,N,hang; /*定義全局變量,Num用來(lái)記錄行號(hào),C用來(lái)記錄子串在主串中出現(xiàn)的總次數(shù)*/</p><p> #define MAXLEN 80</p><p> char buffer[MAXLEN],fname[120];</p><p> char *lineptr[L
25、ink_Size];;</p><p><b> FILE *fp;</b></p><p> int modified=0,/*正文被修改標(biāo)志*/</p><p> last;/*當(dāng)前正文行數(shù)*/</p><p> char *chpt;/*輸入命令行字符指針*/</p><p> t
26、ypedef struct _list/*行表結(jié)構(gòu)*/</p><p><b> { </b></p><p> char data[80];/*記錄一行字符*/</p><p> int length;/*記錄一行字符長(zhǎng)度*/</p><p> struct _list *next;/* 后繼指針*
27、/</p><p> struct _list *pre;/*前趨指針*/</p><p> int row;/*記錄整篇文章的行數(shù)*/</p><p> }LinkList;</p><p> LinkList *head; /*定義全局變量*head,文章首行頭指針*/</p><p> void
28、HeadWord()</p><p><b> {</b></p><p> printf("\t\t****************************************************\n");</p><p> printf("\t\t**** 歡迎使用簡(jiǎn)單的文本編輯器
29、 ****\n");</p><p> printf("\t\t****************************************************\n");</p><p><b> }</b></p><p> int save(char *fname)</p
30、><p><b> {</b></p><p><b> int i;</b></p><p><b> FILE *fp;</b></p><p> char name[80];</p><p> if(!*fname)</p>&
31、lt;p><b> {</b></p><p> printf("filename:");</p><p> gets(name);</p><p><b> }</b></p><p> else strcpy(name,fname);</p>&
32、lt;p> if((fp=fopen(name,"wb"))==NULL)</p><p><b> return 0;</b></p><p> for(i=0;i<last;i++)</p><p><b> {</b></p><p> fputs(l
33、ineptr[i],fp);</p><p> free(lineptr[i]);</p><p><b> }</b></p><p> fclose(fp);</p><p> printf("file %s already saved.",name);</p><p&
34、gt;<b> getch();</b></p><p><b> return 1;</b></p><p><b> }</b></p><p> int load(char *fname)</p><p><b> {</b></p&
35、gt;<p><b> FILE *fp;</b></p><p> char ch,*p;</p><p><b> int i;</b></p><p> if((fp=fopen(fname,"rb"))==NULL) return 0;</p><p&g
36、t; while(!feof(fp))</p><p><b> {</b></p><p> ch=getc(fp);</p><p> if(ch=='\x09')</p><p> for(i=0;i<8;i++,p++) *p='\x20';</p>
37、<p> else if(ch!='\n'&&ch!=EOF)</p><p><b> {</b></p><p><b> *p=ch;</b></p><p><b> p++;</b></p><p><b>
38、 }</b></p><p><b> }</b></p><p><b> *p='\0';</b></p><p> fclose(fp);</p><p><b> }</b></p><p> LinkLi
39、st *CreatWord()</p><p><b> {</b></p><p> LinkList *temp;</p><p><b> char ch;</b></p><p> int i,j;/*記錄文本行數(shù)變量j,記錄每行字符數(shù)變量i*/</p><p&g
40、t; head->next=(LinkList *)malloc(sizeof(LinkList));</p><p> head->pre=NULL;</p><p> temp=head->next;</p><p> temp->pre=NULL;</p><p> temp->length=0;
41、</p><p> for(i=0;i<80;i++)</p><p> temp->data[i]='\0';</p><p> printf("開(kāi)始創(chuàng)建文本,請(qǐng)輸入文章(按#結(jié)束):\n");</p><p> for(j=0;j<Link_Size;j++)</p>
42、;<p><b> {</b></p><p> for(i=0;i<80;i++)</p><p><b> {</b></p><p> ch=getchar();</p><p> temp->data[i]=ch;</p><p>
43、 temp->length++;</p><p> if(ch=='\n')</p><p><b> hang++;</b></p><p> if(ch=='#')</p><p><b> {</b></p><p>&l
44、t;b> NUM=j;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(ch=='#')</p><p&g
45、t;<b> { </b></p><p> temp->length=i;</p><p> temp->next=NULL;</p><p><b> break;</b></p><p><b> }</b></p><p>
46、; temp->next=(LinkList *)malloc(sizeof(LinkList)) ;</p><p> temp->next->pre=temp;</p><p> temp=temp->next;</p><p> for(i=0;i<80;i++)</p><p> temp-&g
47、t;data[i]='\0';</p><p><b> }</b></p><p> temp->row=NUM+1;</p><p> system("cls");</p><p> return temp;</p><p><b>
48、 }</b></p><p> void PrintWord()</p><p><b> {</b></p><p> int i,j;/*記錄文本行數(shù)變量j,記錄每行字符數(shù)變量i*/</p><p> LinkList *p;</p><p> p=head->n
49、ext;</p><p> system("cls"); </p><p> HeadWord();</p><p> printf("\n當(dāng)前文章的內(nèi)容是:");</p><p> for(j=0;j<=NUM&&p!=NULL;j++)</p><p
50、><b> {</b></p><p> for(i=0;(i<80)&&(p->data[i])!='#';i++)</p><p><b> {</b></p><p> printf("%c",p->data[i]);</p&g
51、t;<p><b> }</b></p><p> p=p->next;</p><p><b> }</b></p><p> printf("\n當(dāng)前文章行數(shù)為:%d\n",hang);</p><p><b> }</b>
52、</p><p> void SearchWord(char *str1,LinkList* temp) </p><p><b> { </b></p><p> char Data[20] ; </p><p> int i,j,k=0,sum=0;</p><p>
53、<b> int l=1;</b></p><p> temp=head->next; </p><p> strcpy(Data,str1);</p><p> for(i=0;i<=NUM;i++) </p><p><b> { </b></p><p
54、> for(j=0;j<80;j++) </p><p><b> { </b></p><p> if((temp->data[j])==Data[k]) k++;</p><p> else if(Data[k]!='\0')</p><p><b> {<
55、/b></p><p><b> j=j-k;</b></p><p><b> k=0;</b></p><p><b> } </b></p><p> if(Data[k]=='\0') </p><p><b&
56、gt; {</b></p><p><b> sum++;</b></p><p><b> j=j-k+1;</b></p><p> printf("\t\t第%d次出現(xiàn)在第%d行第%d列\(zhòng)n",l,i+1,j+1);</p><p><b>
57、 l++;</b></p><p><b> k=0;</b></p><p> continue;} </p><p><b> } </b></p><p> temp=temp->next; </p><p><b> } <
58、/b></p><p> printf("\t\t\t字符串總共出現(xiàn)次數(shù)為:%d\n\n",sum); </p><p><b> C=sum;</b></p><p><b> N=i*80+j;</b></p><p><b> } </b&g
59、t;</p><p> void DelWord(char *str2) </p><p> {char Data[20];</p><p> LinkList *temp,*term; </p><p> int i,j,k,m,y,num;</p><p> str
60、cpy(Data,str2);</p><p> for(y=0;y<C;y++) </p><p><b> { </b></p><p><b> num=80;</b></p><p><b> k=0,m=0; </b></p><p&
61、gt; temp=head; </p><p> for(i=0;i<=NUM;i++) </p><p><b> { </b></p><p> term=temp; </p><p> temp=temp->next; </p><p> for(j=0;j<8
62、0;j++) </p><p><b> { </b></p><p> if((temp->data[j])==Data[k]) k++; </p><p> else if(Data[k]!='\0') {j=j-k;k=0;} </p><p> if(Data[k]=='\0
63、') </p><p><b> {</b></p><p><b> num=j;</b></p><p><b> break;</b></p><p><b> } </b></p><p><b>
64、 } </b></p><p> if(num<80) break; </p><p><b> } </b></p><p> for(;i<=NUM;i++) </p><p><b> { </b></p><p> for(;j&l
65、t;80;j++) </p><p><b> { </b></p><p> if(j+1<k) </p><p><b> { </b></p><p> term->data[80-k+num]=temp->data[j+1]; </p><p&g
66、t;<b> } </b></p><p><b> else</b></p><p> temp->data[j-k+1]=temp->data[j+1]; </p><p><b> } </b></p><p> term=temp; </p&
67、gt;<p> temp=temp->next;</p><p><b> j=0; </b></p><p><b> } </b></p><p><b> } </b></p><p><b> }</b></p&
68、gt;<p> LinkList * InsertWord(LinkList *temp)</p><p><b> { </b></p><p> char Data[20];</p><p><b> int h,l;</b></p><p> printf(&quo
69、t;\n\t\t請(qǐng)輸入要插入的字符或字符串:");</p><p> getchar();</p><p> gets(Data);</p><p> printf("\n\t\t當(dāng)前文章內(nèi)容為:");</p><p> PrintWord();</p><p> printf(
70、"\n\t\t請(qǐng)輸入要插入的行:");</p><p> scanf("%d",&h);</p><p> printf("\n\t\t請(qǐng)輸入要插入的列:");</p><p> scanf("%d",&l);</p><p> int i
71、=(h-1)*80+l;</p><p> LinkList *a;</p><p> int n=strlen(Data);</p><p><b> int m ;</b></p><p> int insertRow=i/80+1;</p><p> int row=temp-&g
72、t;row;</p><p><b> int j;</b></p><p> if(insertRow==row)</p><p><b> {</b></p><p> for(m=temp->length-1;m>=(i%80)&&n>0;m--)&
73、lt;/p><p> temp->data[m+n]=temp->data[m];</p><p> for(m=(i%80),j=0;m<n+(i%80);m++,j++)</p><p><b> {</b></p><p> temp->data[m]=Data[j];</p
74、><p><b> }</b></p><p><b> } </b></p><p><b> else</b></p><p><b> {</b></p><p><b> int r=0;</b>
75、;</p><p> for(int p=insertRow; p<row;p++)</p><p><b> {</b></p><p> if(p == insertRow) </p><p><b> r=0;</b></p><p><b>
76、 else</b></p><p><b> r=n;</b></p><p> for(m=temp->length-1-r;m>=0&&n>0;m--)</p><p> temp->data[m+n]=temp->data[m];</p><p>&l
77、t;b> a=temp;</b></p><p> temp = temp->pre;</p><p> temp->length = 80;</p><p> for(m = temp->length-n,j=0;m<temp->length;m++,j++)</p><p> a
78、->data[j]=temp->data[m];</p><p><b> }</b></p><p> for(m=temp->length-n-1;m>=(i%80);m--) </p><p> temp->data[m+n]=temp->data[m];</p><p>
79、 for(m=(i%80),j=0;m<(i%80)+n;m++,j++) </p><p> temp->data[m] =Data[j];</p><p><b> }</b></p><p> return temp;</p><p><b> }</b></p&g
80、t;<p> void Replace()</p><p><b> {</b></p><p> int k,m,n,i,j;</p><p> sscanf(chpt,"%d%d%d",&k,&m,&n); /* 讀入?yún)?shù) */</p><p> i
81、f(m<=0||m>last||n<m||last-(n-m+1)+k>=Link_Size)/* 檢查參數(shù)合理性 */</p><p><b> {</b></p><p> printf("Error!\n");</p><p><b> return;</b><
82、/p><p><b> }</b></p><p> /* 先完成刪除 */</p><p> if(n>last)</p><p> n=last; /* 修正參數(shù) */</p><p> for(i=m;i<=n;i++) /* 刪除正文 */</p>
83、<p> free(lineptr[i-1]);</p><p> for(i=m,j=n+1;j<=last;i++,j++)</p><p> lineptr[i-1]=lineptr[j-1];</p><p><b> last=i-1;</b></p><p> /* 以下完成插入
84、 */</p><p> for(i=last;i>=m;i--)</p><p> lineptr[i+k-1]=lineptr[i-1];</p><p> for(i=0;i<k;i++)</p><p><b> {</b></p><p> fgets(buffer
85、,MAXLEN,stdin);</p><p> lineptr[m+i-1]=(char *)malloc(strlen(buffer)+1);</p><p> strcpy(lineptr[m+i-1],buffer);</p><p><b> }</b></p><p> last+=k; /*
86、修正正文行數(shù) */</p><p> modified=1; /* 正文被修改 */</p><p><b> }</b></p><p> void Bmenu(LinkList *temp)</p><p><b> { </b></p><p> char
87、str1[20];</p><p> char str2[20];</p><p><b> int a;</b></p><p><b> do</b></p><p><b> {</b></p><p> HeadWord();</
88、p><p> printf("\n\t\t****************************************************\n");</p><p> printf("\t\t**** 文章內(nèi)容處理菜單 ****\n");</p><p> prin
89、tf("\t\t****************************************************\n");</p><p> printf("\t\t**** 1、查找文章中的字符或者字符串 ****\n");</p><p> printf("\t\t**** 2、刪除文章中的字
90、符或者字符串 ****\n");</p><p> printf("\t\t**** 3、向文章中插入字符或者字符串 ****\n");</p><p> printf("\t\t**** 4、替換文章中的字符或者字符串 ****\n");</p>&
91、lt;p> printf("\t\t**** 5、顯示當(dāng)前文章內(nèi)容 ****\n");</p><p> printf("\t\t**** 6、返回主菜單 ****\n");</p><p> printf("\t\t****
92、 7、直接退出系統(tǒng) ****\n");</p><p> printf("\t\t****************************************************\n");</p><p> printf("\t\t 請(qǐng)選擇:");</p>
93、<p> scanf("%d",&a);</p><p><b> switch(a)</b></p><p><b> {</b></p><p> case 1: </p><p> system("cls"); <
94、/p><p> HeadWord();</p><p> printf("\t\t\t請(qǐng)輸入您需要查找的字符或字符串:");</p><p> getchar();</p><p> gets(str1);</p><p> SearchWord(str1,temp);</p>
95、<p> printf("按回車鍵繼續(xù)·····");</p><p> getchar();</p><p> getchar();</p><p> system("cls");</p><p><b> break;&
96、lt;/b></p><p><b> case 2:</b></p><p> system("cls"); </p><p> HeadWord();</p><p> printf("\t\t\t請(qǐng)輸入您需要?jiǎng)h除的字符或字符串:");</p>&l
97、t;p> getchar();</p><p> gets(str2);</p><p> SearchWord(str2,temp);</p><p> DelWord(str2);</p><p> printf("\t\t\t刪除 %s 后的文章為:",str2);</p><p&
98、gt; PrintWord();</p><p> printf("按回車鍵繼續(xù)·····");</p><p> getchar();</p><p> getchar();</p><p> system("cls");</p>
99、<p><b> break;</b></p><p><b> case 3:</b></p><p> system("cls"); </p><p> HeadWord();</p><p> InsertWord(temp);</p>
100、<p> printf("\t\t\t插入字符或字符串后文章為:");</p><p> PrintWord();</p><p> printf("按回車鍵繼續(xù)·····");</p><p> getchar();</p><p>
101、; getchar();</p><p> system("cls");</p><p><b> break;</b></p><p><b> case 4:</b></p><p> system("cls"); </p><
102、;p> HeadWord();</p><p> Replace();</p><p> printf("\t\t\t替換字符或字符串后文章為:");</p><p> printf("按回車鍵繼續(xù)·····");</p><p> ge
103、tchar();</p><p> getchar();</p><p> system("cls");</p><p><b> break;</b></p><p><b> case 5:</b></p><p> system("
104、;cls"); </p><p> HeadWord();</p><p> PrintWord();</p><p> printf("按回車鍵繼續(xù)·····");</p><p> getchar();</p><p> ge
105、tchar();</p><p> system("cls");</p><p><b> break;</b></p><p><b> }</b></p><p> if(a==6) </p><p><b> {</b&g
106、t;</p><p> system("cls"); </p><p><b> break;</b></p><p><b> }</b></p><p> if(a==7) exit(0); </p><p> }while(1);
107、 </p><p><b> }</b></p><p> void menu(LinkList *temp)</p><p><b> {</b></p><p> char name[20];</p><p><b> int t;<
108、/b></p><p><b> do{</b></p><p> HeadWord();</p><p> printf("\n");</p><p> printf("\t\t*************************************************
109、***\n");</p><p> printf("\t\t**** 主菜單 ****\n");</p><p> printf("\t\t****************************************************\n");</p
110、><p> printf("\t\t**** 1、文章內(nèi)容輸入 ****\n");</p><p> printf("\t\t**** 2、保存文本 ****\n");</p><p> printf(&quo
111、t;\t\t**** 3、讀取文本 ****\n");</p><p> printf("\t\t**** 4、當(dāng)前文本內(nèi)容信息 ****\n");</p><p> printf("\t\t**** 5、進(jìn)入文章內(nèi)容處理菜單
112、 ****\n");</p><p> printf("\t\t**** 6、退出文本編輯器 ****\n");</p><p> printf("\t\t****************************************************\n"
113、;);</p><p> printf("\t\t**** 注:第一次運(yùn)行本程序時(shí)請(qǐng)選擇1號(hào)功能 ****\n");</p><p> printf("\t\t****************************************************\n");</p><p> printf(
114、" \t\t 請(qǐng)選擇:");</p><p> scanf("%d",&t);</p><p> if((t>6)&&(t<1))</p><p><b> { </b></p><p> printf("對(duì)不起,無(wú)此功
115、能,請(qǐng)輸入正確的功能序號(hào)!\n");</p><p><b> }</b></p><p><b> else</b></p><p><b> switch(t)</b></p><p><b> { </b></p>
116、<p><b> case 1: </b></p><p> system("cls"); </p><p> HeadWord();</p><p> temp=CreatWord();</p><p><b> break;</b></p>
117、<p><b> case 2: </b></p><p> save(name);</p><p><b> break;</b></p><p><b> case 3: </b></p><p> load(name);</p>&l
118、t;p><b> break;</b></p><p><b> case 4: </b></p><p> PrintWord();</p><p> printf("\n");</p><p> printf("按回車鍵繼續(xù)··
119、···");</p><p> getchar();</p><p> getchar();</p><p> system("cls");</p><p><b> break;</b></p><p><b> c
120、ase 5: </b></p><p> system("cls"); </p><p> Bmenu(temp);</p><p><b> break;</b></p><p><b> }</b></p><p> if(t=
121、=6) break;</p><p> }while(1);</p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><p> head=(LinkList *)malloc(sizeof(Lin
122、kList));</p><p> LinkList *temp;</p><p> menu(temp);</p><p><b> }</b></p><p> 5.課程設(shè)計(jì)心得及存在問(wèn)題</p><p> 本程序是在線性表的基礎(chǔ)上改進(jìn)的,用到了雙向鏈表和一些c++里面的知識(shí)。線性表
123、的操作數(shù)是浮點(diǎn)形,而文本編輯器的操作數(shù)是字符型,在線性表的程序上加進(jìn)插入刪除查找數(shù)據(jù)結(jié)構(gòu),然后建立一個(gè)文件保存線性表中的數(shù)據(jù),就是我寫的程序。</p><p> 本次課程設(shè)計(jì)還算順利,但是在設(shè)計(jì)過(guò)程中由于自己的不細(xì)心,忽略了一些關(guān)鍵的細(xì)節(jié),導(dǎo)致了在編寫過(guò)程中出現(xiàn)了一些錯(cuò)誤。例如:少了分號(hào),或忘了定義函數(shù),又如能運(yùn)行但輸出結(jié)果錯(cuò)誤,結(jié)果不正確。又由于自己打字時(shí)犯得小錯(cuò)誤,導(dǎo)致出現(xiàn)不易發(fā)現(xiàn)的錯(cuò)誤,最終在老師及編程能
124、力比較強(qiáng)的同學(xué)幫助下,查找到并及時(shí)改正。</p><p> 該程序不僅可以利用線性表還可以利用串、單鏈表司實(shí)現(xiàn),通過(guò)做該程序,我又對(duì)課本做了新的解讀,加深了對(duì)所學(xué)知識(shí)的印象及了解,同時(shí)也了解了我還有許多不足,對(duì)許多所學(xué)過(guò)的知識(shí)掌握得不夠透徹,不夠深入,應(yīng)用不夠靈活,今后我會(huì)彌補(bǔ)這方面的不足,加深理解課本知識(shí),同時(shí)注重應(yīng)用。</p><p> 通過(guò)這次課程設(shè)計(jì)讓我又學(xué)到了很多東西,加深了
125、對(duì)數(shù)據(jù)結(jié)構(gòu)這門課程的理解和學(xué)會(huì)了如何在實(shí)際中應(yīng)用數(shù)據(jù)結(jié)構(gòu)編程。讓我了解到自己在這門課程上還存在很多缺陷,尤其是對(duì)文件操作問(wèn)題。通過(guò)對(duì)線性表的應(yīng)用,查找課本資料加深了對(duì)線性表的了解,并學(xué)會(huì)了靈活運(yùn)用。通過(guò)調(diào)試,我學(xué)會(huì)了借助逐步調(diào)試功能和數(shù)據(jù)窗口,加快找到程序中的錯(cuò)誤點(diǎn),調(diào)試能力有所提高。</p><p> 本程序中運(yùn)用了大量的循環(huán)結(jié)構(gòu)和條件結(jié)構(gòu),在編寫程序時(shí)要注意條件的判斷和循環(huán)條件的正確編寫。該程序中程序代碼較
126、多,引用較多指針和定義的許多變量,理解起來(lái)較難。而且對(duì)于文件的存儲(chǔ)和讀取還是存在問(wèn)題。有待于我自己進(jìn)一步再去研究這段程序,并且改進(jìn)它。我現(xiàn)在初步的解決辦法是定義一個(gè)類,類里包含一些靜態(tài)的屬性和動(dòng)態(tài)的函數(shù),然后在繼承這些函數(shù)。這樣可以簡(jiǎn)化程序代碼,然后精確存取的文件路徑,使之在文件的存取方面便于更好的理解,使程序功能更全面。</p><p> 總之,通過(guò)本次課程設(shè)計(jì),不僅鍛煉了我的實(shí)際操作能力,而且培養(yǎng)了嚴(yán)密的思
溫馨提示
- 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ì)報(bào)告
- 微機(jī)原理課程設(shè)計(jì)—簡(jiǎn)易文本編輯器
- 文本編輯器課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---簡(jiǎn)易文本編輯器
- vb課程設(shè)計(jì)報(bào)告----文本編輯器
- vb課程設(shè)計(jì)報(bào)告---文本編輯器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--簡(jiǎn)易文本編輯器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-簡(jiǎn)易文本編輯器
- java課程設(shè)計(jì)--文本編輯器
- java課程設(shè)計(jì)---文本編輯器
- java課程設(shè)計(jì)---文本編輯器
- vb課程設(shè)計(jì)文本編輯器
- java課程設(shè)計(jì)(文本編輯器)
- c語(yǔ)言課程設(shè)計(jì)--文本編輯器
- c_文本編輯器課程設(shè)計(jì)
- 文本編輯器_java課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告
- visual_basic課程設(shè)計(jì)報(bào)告---文本編輯器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--文本編輯器
- 操作系統(tǒng)課程設(shè)計(jì)---文本編輯器
- java 課程設(shè)計(jì)報(bào)告---用 java 設(shè)計(jì)文本編輯器mytxt
評(píng)論
0/150
提交評(píng)論