

版權(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ō) 明 書(shū)</p><p> 2012 年 8月 30 日</p><p> 學(xué) 院:電子與計(jì)算機(jī)科學(xué)技術(shù)學(xué)院</p><p> 專(zhuān) 業(yè):網(wǎng)絡(luò)工程/計(jì)算機(jī)科學(xué)與技術(shù)</p><p> 題 目:簡(jiǎn)單行
2、編輯器</p><p> 指導(dǎo)教師:</p><p> 組長(zhǎng)姓名:學(xué)號(hào)</p><p> 組員姓名:學(xué)號(hào)</p><p> 組員姓名:學(xué)號(hào)</p><p> 組員姓名:學(xué)號(hào)</p><p> 組員姓名:學(xué)號(hào)</p><p><b> 1. 概述1</b
3、></p><p> 1.1 設(shè)計(jì)目的1</p><p> 1.2 設(shè)計(jì)目標(biāo)及要求設(shè)計(jì)要求1</p><p> 1.3 設(shè)計(jì)進(jìn)度1</p><p><b> 1.4 分工1</b></p><p> 2. 需求分析及總體設(shè)計(jì)1</p><p>
4、2.1 數(shù)據(jù)結(jié)構(gòu)1</p><p> 2.2 功能框架2</p><p> 3.功能模塊詳細(xì)設(shè)計(jì)2</p><p><b> 3.1設(shè)計(jì)流程2</b></p><p> 3.2主要源代碼2</p><p> 4.功能模塊詳細(xì)設(shè)計(jì)2</p><p>&l
5、t;b> 4.1設(shè)計(jì)流程2</b></p><p> 4.2主要源代碼3</p><p><b> 1. 概述 </b></p><p><b> 1.1 設(shè)計(jì)目的</b></p><p> 被編輯的文本文件可能很大,全部讀入編輯程序的數(shù)據(jù)空間(內(nèi)存)的作法既不經(jīng)濟(jì),
6、也不總能實(shí)現(xiàn)。所以設(shè)計(jì)這一種以行為單位進(jìn)行的編輯程序。主要是逐段地編輯。任何時(shí)刻只把待編輯文件的一段放在內(nèi)存,稱(chēng)為活區(qū)。需要用到的數(shù)據(jù)結(jié)構(gòu)是鏈表。</p><p> 1.2 設(shè)計(jì)目標(biāo)及要求設(shè)計(jì)要求</p><p><b> (1)行插入:</b></p><p> 格式: i<回車(chē)><行號(hào)><回車(chē)>&l
7、t;文本><回車(chē)> </p><p> 功能: 在指定行之后插入一行或幾行。</p><p><b> ?。?)行刪除:</b></p><p> 格式: d<回車(chē)><行號(hào)1>[<空格><行號(hào)2>]<回車(chē)></p><p> 功能: 在
8、指定行之后插入一行或幾行。</p><p><b> ?。?)行替換:</b></p><p> 格式: i<回車(chē)><行號(hào)><回車(chē)><文本><回車(chē)></p><p> 功能: 在指定行之后插入一行或幾行。</p><p><b> ?。?)活區(qū)切換
9、:</b></p><p><b> 格式: n<回車(chē)></b></p><p> 功能: 將活區(qū)寫(xiě)入文件,并從文件中讀入下一段,作為新的活區(qū)。</p><p><b> ?。?)活區(qū)顯示:</b></p><p> 格式: p<回車(chē)></p>
10、<p> 功能: 逐頁(yè)地(每頁(yè)20行)顯示活區(qū)內(nèi)容,每顯示一頁(yè)之后請(qǐng)用戶決定是否繼續(xù)顯示以后備頁(yè)(如果存在)。印出的每一行要前置行號(hào)和一個(gè)空格符,行號(hào)固定占4位,增量為1。</p><p><b> ?。?)模式匹配:</b></p><p> 格式: k<回車(chē)><匹配文本><回車(chē)></p>&l
11、t;p><b> 1.3 設(shè)計(jì)進(jìn)度</b></p><p> 1》2012.8.20——2012.8.21需求分析</p><p> 2》2012.8.21下午交需求分析,主要分析課題的內(nèi)容,需要用的數(shù)據(jù)結(jié)構(gòu),小組分工情況</p><p> 3》2012.8.22——2012.8.29編寫(xiě)源代碼</p><p&
12、gt; 4》2012.8.30完成設(shè)計(jì)并書(shū)寫(xiě)課程設(shè)計(jì)說(shuō)明書(shū)</p><p> 5》2012.8.31 等待老師驗(yàn)收</p><p><b> 1.4 分工</b></p><p> 薛建明 :進(jìn)行插入功能的編寫(xiě)。</p><p> 叢 前 :進(jìn)行刪除功能的編寫(xiě)。</p><p> 甘
13、 煬 :進(jìn)行活區(qū)的切換功能的編寫(xiě)。</p><p> 楊志文 :進(jìn)行活區(qū)顯示,KMP算法,界面的編寫(xiě)。</p><p> 2. 需求分析及總體設(shè)計(jì)</p><p><b> 2.1 數(shù)據(jù)結(jié)構(gòu)</b></p><p> 用到數(shù)據(jù)結(jié)構(gòu)的雙向鏈表:</p><p> typedef stru
14、ct text</p><p><b> {</b></p><p> char string[80];</p><p> struct text *next;</p><p> struct text *pre;</p><p><b> int flat;</b&g
15、t;</p><p><b> } text;</b></p><p><b> 2.2 功能框架</b></p><p> (1)行插入:在指定行之后插入一行或幾行。</p><p> (2)行刪除:在指定行之后插入一行或幾行。</p><p> ?。?)行替換:在
16、指定行之后插入一行或幾行。</p><p> ?。?)活區(qū)切換: 將活區(qū)寫(xiě)入輸出文件,并從輸入文件中讀入下一段,作為新的活區(qū)。</p><p> ?。?)活區(qū)顯示:逐頁(yè)地(每頁(yè)20行)顯示活區(qū)內(nèi)容,每顯示一頁(yè)之后請(qǐng)用戶決定是否繼續(xù)顯示以后備頁(yè)(如果存在)。印出的每一行要前置行號(hào)和一個(gè)空格符,行號(hào)固定占4位,增量為1。</p><p> ?。?)模式匹配:在當(dāng)前活區(qū)中
17、查找所要匹配的文本。</p><p> 3.功能模塊詳細(xì)設(shè)計(jì)</p><p><b> 3.1設(shè)計(jì)流程</b></p><p> 行插入功能:找到要插入的結(jié)點(diǎn)對(duì)應(yīng)的指針,然后開(kāi)辟新的空間,把開(kāi)辟出的新的空間,與剛才的結(jié)點(diǎn)連接,同時(shí)再把新節(jié)點(diǎn)的指針域只向出入的下一個(gè)節(jié)點(diǎn)。</p><p> 主要思想: p=(
18、text *)malloc(sizeof(text)); // p為新插入節(jié)點(diǎn) </p><p> p->next=p1->next; // p1為要出入結(jié)點(diǎn)的</p><p> p->pre=p1;</p><p> p1->next->pre=p;</p>
19、<p> p1->next=p;</p><p><b> 3.2主要源代碼</b></p><p> void insert()</p><p><b> {</b></p><p> int i,j,hang,increhang=1,incre;</p>
20、<p><b> char s;</b></p><p> text *p,*p1,*p2; </p><p> printf("(Note: the i-th row insert text in the i-th row!! Inserted text in # Please enter the line number for t
21、he end of the flag):\n"); </p><p> scanf("%d",&hang);</p><p> p=p1=NULL;</p><p> if(hang==0)</p><p><b> {</b></p><p> p
22、=(text *)malloc(sizeof(text));</p><p> p->flat=1;</p><p> p->next=head;</p><p> head->pre=p;</p><p><b> head=p;</b></p><p><b&g
23、t; }</b></p><p> if(hang!=0)</p><p><b> {</b></p><p> for(i=0,p1=head; i<hang-1; i++,p1=p1->next); //找到要插入行的前一行</p><p> p=(text *)ma
24、lloc(sizeof(text)); //為插入行分配空間</p><p> p->flat=1;</p><p> p->next=p1->next;</p><p> p->pre=p1;</p><p> p1->next->pre=p;</p&
25、gt;<p> p1->next=p;</p><p> } //從此行將插入行插入到鏈表中</p><p> p->string[0]=getchar();</p><p> p->string[0]=getchar();</p><p><b> i=0;</b><
26、/p><p><b> incre=1;</b></p><p> while(p->string[i]!='#')</p><p><b> {</b></p><p> if(incre==80)</p><p><b> {<
27、/b></p><p> s=getchar();</p><p> if(s=='#')</p><p><b> {</b></p><p><b> i++;</b></p><p> p->string[i]=s;</p&g
28、t;<p><b> break;</b></p><p><b> }</b></p><p><b> p1=p;</b></p><p> p=(text *)malloc(sizeof(text));</p><p> p->flat=1;
29、</p><p> p->next=p1->next;</p><p> p->pre=p1;</p><p> p1->next->pre=p;</p><p> p1->next=p; //從此行將插入行插入到鏈表中</p><p><b> i=0
30、;</b></p><p><b> incre=1;</b></p><p> p->string[i]=s;</p><p><b> }</b></p><p><b> i++;</b></p><p><b>
31、; incre++;</b></p><p> p->string[i]=getchar();</p><p><b> }</b></p><p> p->string[i]='\n';</p><p> p->string[i+1]='\0';&
32、lt;/p><p> puts("Modified text:\n");</p><p> head->flat=1;</p><p> for(p2=head,j=1; (j<=20)&&(p2!=NULL); j++,p2=p2->next) //顯示出修改后的鏈表</p><p>
33、; if(p2->flat==1)</p><p> printf("line %2d: %s",j,p2->string);</p><p> if(feof(fp))</p><p> printf("File has ended!");</p><p><b> }
34、</b></p><p> 4.功能模塊詳細(xì)設(shè)計(jì)</p><p><b> 4.1設(shè)計(jì)流程</b></p><p> 行刪除:找到要?jiǎng)h除的第一行和要?jiǎng)h除的最后一行,分別把他們的指針域記錄下 來(lái),把要?jiǎng)h除的最后一行之后的文本往前移使的一頁(yè)達(dá)到20行。</p><p><b> 4.2主要源
35、代碼</b></p><p> void del()</p><p><b> {</b></p><p> text *p1,*p2,*p3,*p4;</p><p><b> int i,j;</b></p><p><b> xiugai
36、=1;</b></p><p> printf("the first line and the last lineyou want to delete \n");</p><p> scanf("%d %d",&min,&max);</p><p> if(head==NULL)</p&
37、gt;<p> printf("\n list null! \n");</p><p> p1=p2=head;</p><p> if(min==1)</p><p><b> p1=head;</b></p><p><b> else</b><
38、/p><p><b> {</b></p><p> for(i=0; i<min-1; i++) /*找到要?jiǎng)h除的第一行*/</p><p> p1=p1->next;</p><p><b> }</b></p><p><b> p3=p1;
39、</b></p><p> for(i=0; i<max; i++) /*找到要?jiǎng)h除的最后一行*/</p><p> p2=p2->next;</p><p><b> p4=p2;</b></p><p> for(; p4!=NULL; p3=p3->next) /*刪除中間節(jié)點(diǎn)
40、,將 flat 賦值 0*/</p><p><b> {</b></p><p> strcpy(p3->string,p4->string);</p><p> p3->flat=p4->flat;</p><p> p4=p4->next;</p><p&g
41、t;<b> }</b></p><p> for(; p3!=NULL; p3=p3->next)</p><p> fgets(p3->string,sizeof(p3->string),fp);</p><p> printf("Modified text:\n");</p>&
42、lt;p> for(i=0,j=0,p3=head; i<20; i++,p3=p3->next)</p><p><b> {</b></p><p> if(p3->flat==1)</p><p> printf("line %2d : %s",j+1,p3->string);&l
43、t;/p><p><b> j++;</b></p><p><b> }</b></p><p><b> }</b></p><p> 5.功能模塊詳細(xì)設(shè)計(jì) </p><p><b> 5.1設(shè)計(jì)流程</b></p&
44、gt;<p><b> 活區(qū)切換:</b></p><p><b> 5.2主要源代碼</b></p><p> void saveshow()</p><p><b> {</b></p><p> int i=0,j=0;</p>&l
45、t;p> char conti='y';</p><p> text *p=NULL,*p1,*p2,*p3;</p><p> for(i=0,p=head; (p!=NULL)&&(i<20); i++,p=p->next)</p><p> if(p->flat==1)</p>&l
46、t;p> fputs(p->string,out);</p><p> p3=p1=head;</p><p> if(p==NULL)</p><p> for(i=0; i<20; i++)</p><p><b> {</b></p><p> p3->f
47、lat=1;</p><p> p3=p3->next;</p><p><b> }</b></p><p> if(p!=NULL)</p><p> { for(i=0; (p!=NULL)&&(i<20); i++,p=p->next)</p><p&
48、gt; if(p->flat==1)</p><p><b> {</b></p><p> strcpy(p1->string,p->string);</p><p><b> j=j+1;</b></p><p> p->flat=0;</p>&
49、lt;p> p1=p1->next;</p><p> p1->flat=1;</p><p><b> }</b></p><p><b> }</b></p><p><b> if(j<20)</b></p><p&g
50、t;<b> {</b></p><p><b> p2=p1;</b></p><p> for(; (j<20)&&(!feof(fp)); j++,p2=p2->next) //從文件讀入活區(qū)</p><p> fgets(p2->string,sizeo
51、f(p2->string),fp);</p><p> if(j<20 && (feof(fp)))</p><p> { p2=p2->pre;</p><p> for(; p2!=NULL;p2=p2->next) </p><p> p2->flat=0;</p&g
52、t;<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 6.功能模塊詳細(xì)設(shè)計(jì)</p><p><b> 6.1設(shè)計(jì)流程</b></p><p
53、> 模式匹配 KMP 算法, 編輯函數(shù),用來(lái)接受處理編輯命令,活區(qū)顯示,行替換,活區(qū)顯示,保存</p><p><b> 6.2主要源代碼</b></p><p><b> //活區(qū)顯示</b></p><p> void appear()</p><p><b> {&l
54、t;/b></p><p> void EXIT() ;</p><p><b> int i,j;</b></p><p> char conti='Y';</p><p><b> text *p2;</b></p><p> if(
55、!feof(fp) )</p><p><b> {</b></p><p><b> page++;</b></p><p> printf("*******************************page %d ***************************************
56、**\n",page);</p><p> for(i=0,p2=head; i<20; i++,p2=p2->next)</p><p><b> {</b></p><p> if(p2->flat==1)</p><p> printf("line %2d : %s&q
57、uot;,i+1,p2->string);</p><p><b> }</b></p><p> puts("Should continue to read into it?( Y / N ) :");</p><p> conti=getchar();</p><p> conti=
58、getchar();</p><p> if((conti=='y'||conti=='Y'))</p><p><b> {</b></p><p> saveshow();</p><p><b> appear();</b></p><
59、;p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> page++;</b></p>
60、<p> printf("*******************************page %d *****************************************\n",page);</p><p> for(i=0,p2=head; i<20; i++,p2=p2->next)</p><p><b>
61、{</b></p><p> if(p2->flat==1)</p><p> printf("line %2d : %s",i+1,p2->string);</p><p><b> }</b></p><p> puts("\nFile has ended
62、!\n");</p><p><b> }</b></p><p><b> }</b></p><p> //****************退出編輯函數(shù)后執(zhí)行的函數(shù),將所有的內(nèi)容存盤(pán)******************</p><p> void saveall()</p
63、><p><b> {</b></p><p><b> int i;</b></p><p><b> text *p;</b></p><p> for(i=0,p=head; i<20; i++,p=p->next) //將活區(qū)寫(xiě)入文件</p>
64、<p> if(p->flat==1)</p><p><b> {</b></p><p> fputs(p->string,out);</p><p> p->flat=0;</p><p><b> }</b></p><p>
65、 while(!feof(fp))//將其余的內(nèi)容寫(xiě)入文件</p><p> fputc(fgetc(fp),out);</p><p><b> }</b></p><p> void change()</p><p><b> {</b></p><p> i
66、nt i,j,hang,incre,inc;</p><p><b> char s;</b></p><p> text *p,*p1,*p2;</p><p><b> xiugai=1;</b></p><p> printf("Please input the line n
67、umber you want to replace (replace text in # is the ending):\n");</p><p> scanf("%d",&hang);</p><p> p=p1=NULL;</p><p> if(hang==1)</p><p><b&g
68、t; p=head;</b></p><p><b> else</b></p><p> for(i=0,p=head; i<hang-1; i++,p=p->next);</p><p> p->string[0]=getchar();</p><p> p->strin
69、g[0]=getchar();</p><p> p->flat=1;</p><p><b> i=0;</b></p><p><b> incre=1;</b></p><p> while(p->string[i]!='#')</p><
70、;p><b> {</b></p><p><b> i++;</b></p><p><b> incre++;</b></p><p> p->string[i]=getchar();</p><p> if(incre==80)</p>
71、<p><b> {</b></p><p><b> inc++;</b></p><p> p->string[i+1]='\n';</p><p> p->string[i+2]='\0';</p><p> s=getchar
72、();</p><p> if(s=='#')</p><p><b> {</b></p><p><b> i++;</b></p><p> p->string[i]=s;</p><p><b> break;</b&g
73、t;</p><p><b> }</b></p><p><b> p1=p;</b></p><p> p=(text *)malloc(sizeof(text));</p><p> p->flat=1;</p><p> p->next=p1-&
74、gt;next;</p><p> p->pre=p1;</p><p> p1->next->pre=p;</p><p> p1->next=p;</p><p><b> i=0;</b></p><p><b> incre=1;</b&g
75、t;</p><p> p->string[i]=s;</p><p><b> }</b></p><p><b> }</b></p><p> p->string[i]='\n';</p><p> p->string[i+1
76、]='\0';</p><p> puts("Modified text:\n");</p><p> for(p2=head,j=1; (j<=20)&&(p2!=NULL); j++,p2=p2->next)</p><p><b> {</b></p>&
77、lt;p> if(p2->flat==1)</p><p> printf("line %2d : %s",j,p2->string);</p><p><b> }</b></p><p> if(feof(fp))</p><p> printf("File
78、has ended!");</p><p><b> }</b></p><p> //*************模式匹配 KMP 算法***************</p><p> void KMP()</p><p><b> {</b></p><p&g
79、t; int m=1,next[80];</p><p> int i=0,j=-1;</p><p><b> text *p;</b></p><p> int a=0,b=0,F=0;</p><p> char s[80],t[80];</p><p> int lens,le
80、nt,k;</p><p><b> p=head;</b></p><p> printf("Please enter the string you want to pattern matching:\n");</p><p> scanf("%s",t);</p><p>
81、; lent=strlen(t);</p><p><b> do</b></p><p><b> {</b></p><p> lens=strlen(p->string);</p><p> strcpy(s,p->string);</p><p>
82、; next[0]=-1;</p><p> while(i<lent-1)</p><p><b> {</b></p><p> if(j==-1||t[i]==t[j])</p><p><b> {</b></p><p><b> ++i
83、;</b></p><p><b> ++j;</b></p><p> next[i]=j;</p><p><b> }</b></p><p> else j=next[j];</p><p><b> }</b></p
84、><p> while(a<lens && b<lent)</p><p><b> {</b></p><p> if(b==-1||s[a]==t[b])</p><p><b> {</b></p><p><b> ++a;
85、</b></p><p><b> ++b;</b></p><p><b> }</b></p><p><b> else</b></p><p> b=next[b];</p><p><b> }</b>
86、;</p><p> if(b>(lent-1))</p><p><b> {</b></p><p> k=a-lent+1;</p><p> printf("You want to match in the string: line%2d words%d \n",m,k);&l
87、t;/p><p><b> F=1;</b></p><p><b> }</b></p><p><b> i=0;</b></p><p><b> j=-1;</b></p><p><b> a=0;<
88、/b></p><p><b> b=0;</b></p><p> p=p->next;</p><p><b> m++;</b></p><p><b> }</b></p><p> while(m<=20);<
89、/p><p><b> if(F==0)</b></p><p> printf("Sorry!Failed to find the string you want to match in the current text\n");</p><p> else printf("Match is ready! !\
90、n");</p><p><b> }</b></p><p> void drawmain() /*畫(huà)主窗口函數(shù)*/</p><p><b> {</b></p><p><b> int i,j;</b></p><p> got
91、oxy(1,1); /*在文本窗口中設(shè)置光標(biāo)至(1,1)處*/</p><p> insline(); /*在文本窗口的(1,1)位置處中插入一個(gè)空行*/</p><p> gotoxy(20,1);</p><p> cprintf("%c %c File %c %c",179,17,16,179); /*
92、 | < > |*/</p><p> gotoxy(45,1);</p><p> cprintf("%c %c Edit %c %c",179,17,16,179); /* | < > |*/</p><p> gotoxy(5,25); /*跳至窗口底端*/</p><p><
93、b> }</b></p><p> void drawmenu(int m,int n) /*畫(huà)菜單,m:第幾項(xiàng)菜單,n:第m項(xiàng)的第n個(gè)子菜單*/</p><p><b> {</b></p><p><b> int i;</b></p><p> if(m%2==0)
94、 /*畫(huà)File菜單項(xiàng)*/</p><p><b> {</b></p><p> window(21,2,32,6);</p><p> textcolor(0);</p><p> textbackground(7);</p><p> for(i=0; i<4; i++) /
95、*在上面定義的文本窗口中先輸出5個(gè)空行*/</p><p><b> {</b></p><p> gotoxy(1,1+i);</p><p> insline();</p><p><b> }</b></p><p> window(1,1,80,25);&l
96、t;/p><p> gotoxy(20,1);</p><p> for(i=1; i<=5; i++)</p><p><b> {</b></p><p> gotoxy(21,1+i);</p><p> cprintf("%c",179); /*窗口內(nèi)文本的
97、輸出函數(shù),在窗口左邊輸出 | */</p><p> gotoxy(32,1+i);</p><p> cprintf("%c",179); /*窗口內(nèi)文本的輸出函數(shù),在窗口右邊輸出 | */</p><p><b> }</b></p><p> for(i=1; i<=11; i++
98、)</p><p><b> {</b></p><p> gotoxy(21+i,2);</p><p> cprintf("%c",196); /*窗口內(nèi)文本的輸出函數(shù),在窗口上邊輸出 - */</p><p> gotoxy(21+i,6);</p><p>
99、 cprintf("%c",196); /*窗口內(nèi)文本的輸出函數(shù),在窗口下邊輸出 - */</p><p><b> }</b></p><p> /*以上為顯示菜單項(xiàng)的外觀*/</p><p> textbackground(7);</p><p> gotoxy(21,2);</p
100、><p> cprintf("%c",218); /*輸出四個(gè)邊角表格符*/</p><p> gotoxy(21,6);</p><p> cprintf("%c",192);</p><p> gotoxy(32,2);</p><p> cprintf("%
101、c",191);</p><p> gotoxy(32,6);</p><p> cprintf("%c",217);</p><p> gotoxy(22,3);</p><p> cprintf(" Open ");</p><p> gotoxy(
102、22,4);</p><p> cprintf(" Save ");</p><p> gotoxy(22,5);</p><p> cprintf(" Exit ");</p><p> textcolor(15);</p><p> textbackgrou
103、nd(0);</p><p> gotoxy(20,1);</p><p> cprintf("%c %c File %c %c",179,17,16,179);</p><p> switch(n%3)</p><p><b> {</b></p><p><
104、;b> case 0:</b></p><p> gotoxy(22,3);</p><p> cprintf(" Open ");</p><p><b> break;</b></p><p><b> case 1:</b></p&
105、gt;<p> gotoxy(22,4);</p><p> cprintf(" Save ");</p><p><b> break;</b></p><p><b> case 2:</b></p><p> gotoxy(22,5);<
106、;/p><p> cprintf(" Exit ");</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> /**********
107、**********************************************/</p><p> if(m%2==1) /*畫(huà)Edit菜單項(xiàng)*/</p><p><b> {</b></p><p> window(46,2,57,8);</p><p> textcolor(0);</p&
108、gt;<p> textbackground(7);</p><p> for(i=0; i<7; i++)</p><p><b> {</b></p><p> gotoxy(1,1+i);</p><p> insline();</p><p><b>
109、; }</b></p><p> window(1,1,80,25);</p><p> gotoxy(45,1);</p><p> for(i=1; i<=8; i++)</p><p><b> {</b></p><p> gotoxy(46,1+i);<
110、;/p><p> cprintf("%c",179);</p><p> gotoxy(57,1+i);</p><p> cprintf("%c",179);</p><p><b> }</b></p><p> for(i=1; i<=11
111、; i++)</p><p><b> {</b></p><p> gotoxy(46+i,2);</p><p> cprintf("%c",196);</p><p> gotoxy(46+i,9);</p><p> cprintf("%c"
112、;,196);</p><p><b> }</b></p><p> textbackground(7);</p><p> gotoxy(46,2);</p><p> cprintf("%c",218);</p><p> gotoxy(46,9);</p
113、><p> cprintf("%c",192);</p><p> gotoxy(57,2);</p><p> cprintf("%c",191);</p><p> gotoxy(57,9);</p><p> cprintf("%c",217);&
114、lt;/p><p> gotoxy(47,3);</p><p> cprintf(" del ");</p><p> gotoxy(47,4);</p><p> cprintf(" insert ");</p><p> gotoxy(47,5);<
115、;/p><p> cprintf(" change ");</p><p> gotoxy(47,6);</p><p> cprintf(" KMP ");</p><p> gotoxy(47,7);</p><p> cprintf(" sa
116、veshow");</p><p> gotoxy(47,8);</p><p> cprintf(" appear ");</p><p> textcolor(15);</p><p> textbackground(0);</p><p> gotoxy(45,1);&
117、lt;/p><p> cprintf("%c %c Edit %c %c",179,17,16,179);</p><p> switch(n%6)</p><p><b> {</b></p><p><b> case 0:</b></p><p&
118、gt; gotoxy(47,3);</p><p> cprintf(" del ");</p><p><b> break;</b></p><p><b> case 1:</b></p><p> gotoxy(47,4);</p>&l
119、t;p> cprintf(" insert ");</p><p><b> break;</b></p><p><b> case 2:</b></p><p> gotoxy(47,5);</p><p> cprintf(" change
120、 ");</p><p><b> break;</b></p><p><b> case 3:</b></p><p> gotoxy(47,6);</p><p> cprintf(" KMP ");</p><p>&l
121、t;b> break;</b></p><p><b> case 4:</b></p><p> gotoxy(47,7);</p><p> cprintf(" saveshow");</p><p><b> break;</b></p&
122、gt;<p><b> case 5:</b></p><p> gotoxy(47,8);</p><p> cprintf(" appear ");</p><p><b> break;</b></p><p><b> }</b
123、></p><p><b> }</b></p><p><b> }</b></p><p> int menuctrl(int A) /*菜單控制*/</p><p><b> {</b></p><p> int x,y,i,B,v
124、alue,flag=6,a,b;</p><p> x=wherex();</p><p> y=wherey();</p><p><b> if(A==F1)</b></p><p><b> {</b></p><p> drawmenu(0,flag);
125、 /*顯示File及其子菜單,并將光帶顯示在第一個(gè)子菜單上*/</p><p> value=300;</p><p><b> }</b></p><p><b> if(A==F2)</b></p><p><b> {</b></p><
126、p> drawmenu(1,flag); /*顯示Edit及其子菜單,并將光帶顯示在第一個(gè)子菜單上*/</p><p> value=301;</p><p><b> }</b></p><p> if(A==F1||A==F2)</p><p><b> {</b>&l
127、t;/p><p> while((B=bioskey(0))!=ESC) /*選擇用戶按鍵*/</p><p><b> {</b></p><p> if(flag==0) flag=100;</p><p> if(value==0) value=300; /*此value為局部變量*/</p>
128、;<p> if(B==UP) drawmenu(value,--flag); /*循環(huán)上下移*/</p><p> if(B==DOWN) drawmenu(value,++flag); /*循環(huán)上下移*/</p><p> if(B==LEFT) /*菜單項(xiàng)之間循環(huán)選擇(左移)*/</p><p><b> {<
129、/b></p><p><b> flag=100;</b></p><p> drawmain();</p><p> window(1,2,80,25);</p><p> for(i=0; i<24; i++)</p><p> insline();</p>
130、<p> window(2,3,80,25);</p><p> textcolor(10);</p><p> drawmenu(--value,flag);</p><p><b> }</b></p><p> if(B==RIGHT)/*菜單項(xiàng)之間循環(huán)選擇(右移)*/</p>
131、<p><b> {</b></p><p><b> flag=100;</b></p><p> drawmain();</p><p> window(1,2,80,25);</p><p> for(i=0; i<24; i++)</p><p
132、> insline();</p><p> window(1,3,80,25);</p><p> textcolor(10);</p><p> drawmenu(++value,flag);</p><p><b> }</b></p><p> if(B==ENTER) /
133、*選中某主菜單項(xiàng)的子菜單項(xiàng)(選中某項(xiàng))*/</p><p><b> {</b></p><p> if(value%2==0) b=3; /*File下有5個(gè)子菜單項(xiàng)*/</p><p> if(value%3==1) b=6; /*Edit下有4個(gè)子菜單項(xiàng)*/</p><p> a=(value%3)*1
134、0+flag%b;/*a表示選擇子菜單的編號(hào)*/</p><p> drawmain();</p><p> window(1,2,80,25);</p><p> for(i=0; i<25; i++)</p><p> insline();</p><p> window(1,3,80,25);&l
135、t;/p><p> textcolor(10);</p><p> gotoxy(x,y);</p><p> if(a==0) return 100; /*Open*/</p><p> if(a==1) return 101; /*Save*/</p><p> if(a==2) return 1
136、02; /*Exit*/</p><p> if(a==10) return 110; /*del*/</p><p> if(a==11) return 111; /*insert*/</p><p> if(a==12) return 112; /*change*/</p><p> if(a==13) return 11
137、3; /*KMP*/</p><p> if(a==14) return 114; /*saveshow*/</p><p> if(a==15) return 115; /*appear*/</p><p><b> }</b></p><p><b> }</b></p>
138、<p><b> }</b></p><p><b> return A;</b></p><p><b> } </b></p><p> void main()</p><p><b> {</b></p>&l
139、t;p> int a,b,A,B,i=1;</p><p> drawmain();</p><p> window(1,2,80,25);</p><p> while((A=bioskey(0))!=ESC)</p><p><b> {</b></p><p> windo
140、w(2,2,80,25);</p><p><b> if(A==F1)</b></p><p><b> {</b></p><p> B=menuctrl(A);</p><p> if(B==100)</p><p> Openfiles();</p&g
141、t;<p> Createlist();</p><p> if(B==101) </p><p> saveall();</p><p> if(B==102)</p><p><b> EXIT();</b></p><p><b>
142、}</b></p><p><b> if(A==F2)</b></p><p><b> {</b></p><p> B=menuctrl(A);</p><p> if(B==110) </p><p><b> d
143、el();</b></p><p> if(B==111) </p><p> insert(); </p><p> if(B==112) </p><p> change(); </p><p> if(B
144、==113) </p><p> KMP(); </p><p> if(B==114)</p><p><b> {</b></p><p><b> if( i==1)</b></p><p><b> pa
145、ge=1;</b></p><p> saveshow();</p><p><b> }</b></p><p> if(B==115)</p><p><b> {</b></p><p><b> i=2;</b></p
146、><p><b> appear();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b><
溫馨提示
- 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ù)結(jié)構(gòu)課程設(shè)計(jì)——簡(jiǎn)單行編輯程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--文章編輯系統(tǒng)
- 文章編輯(數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì))
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---文章編輯
- 文章編輯_數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 文章編輯_數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-文章編輯
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----行編輯程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--簡(jiǎn)單的員工管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--文章編輯
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)—文章編輯設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---簡(jiǎn)單的職工管理系統(tǒng)
- c語(yǔ)言數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---文章編輯
- c語(yǔ)言數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-文章編輯
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--文章編輯集合運(yùn)算
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----huffman編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--文本編輯器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--文字編輯器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--簡(jiǎn)單計(jì)算器
- 數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)-- 簡(jiǎn)單工資管理系統(tǒng)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論