版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 數(shù) 據(jù) 結 構</b></p><p> 課 程 設 計 說 明 書</p><p> 2012 年 8月 30 日</p><p> 學 院:電子與計算機科學技術學院</p><p> 專 業(yè):網(wǎng)絡工程/計算機科學與技術</p><p> 題 目:簡單行
2、編輯器</p><p> 指導教師:</p><p> 組長姓名:學號</p><p> 組員姓名:學號</p><p> 組員姓名:學號</p><p> 組員姓名:學號</p><p> 組員姓名:學號</p><p><b> 1. 概述1</b
3、></p><p> 1.1 設計目的1</p><p> 1.2 設計目標及要求設計要求1</p><p> 1.3 設計進度1</p><p><b> 1.4 分工1</b></p><p> 2. 需求分析及總體設計1</p><p>
4、2.1 數(shù)據(jù)結構1</p><p> 2.2 功能框架2</p><p> 3.功能模塊詳細設計2</p><p><b> 3.1設計流程2</b></p><p> 3.2主要源代碼2</p><p> 4.功能模塊詳細設計2</p><p>&l
5、t;b> 4.1設計流程2</b></p><p> 4.2主要源代碼3</p><p><b> 1. 概述 </b></p><p><b> 1.1 設計目的</b></p><p> 被編輯的文本文件可能很大,全部讀入編輯程序的數(shù)據(jù)空間(內存)的作法既不經濟,
6、也不總能實現(xiàn)。所以設計這一種以行為單位進行的編輯程序。主要是逐段地編輯。任何時刻只把待編輯文件的一段放在內存,稱為活區(qū)。需要用到的數(shù)據(jù)結構是鏈表。</p><p> 1.2 設計目標及要求設計要求</p><p><b> ?。?)行插入:</b></p><p> 格式: i<回車><行號><回車>&l
7、t;文本><回車> </p><p> 功能: 在指定行之后插入一行或幾行。</p><p><b> ?。?)行刪除:</b></p><p> 格式: d<回車><行號1>[<空格><行號2>]<回車></p><p> 功能: 在
8、指定行之后插入一行或幾行。</p><p><b> (3)行替換:</b></p><p> 格式: i<回車><行號><回車><文本><回車></p><p> 功能: 在指定行之后插入一行或幾行。</p><p><b> ?。?)活區(qū)切換
9、:</b></p><p><b> 格式: n<回車></b></p><p> 功能: 將活區(qū)寫入文件,并從文件中讀入下一段,作為新的活區(qū)。</p><p><b> ?。?)活區(qū)顯示:</b></p><p> 格式: p<回車></p>
10、<p> 功能: 逐頁地(每頁20行)顯示活區(qū)內容,每顯示一頁之后請用戶決定是否繼續(xù)顯示以后備頁(如果存在)。印出的每一行要前置行號和一個空格符,行號固定占4位,增量為1。</p><p><b> ?。?)模式匹配:</b></p><p> 格式: k<回車><匹配文本><回車></p>&l
11、t;p><b> 1.3 設計進度</b></p><p> 1》2012.8.20——2012.8.21需求分析</p><p> 2》2012.8.21下午交需求分析,主要分析課題的內容,需要用的數(shù)據(jù)結構,小組分工情況</p><p> 3》2012.8.22——2012.8.29編寫源代碼</p><p&
12、gt; 4》2012.8.30完成設計并書寫課程設計說明書</p><p> 5》2012.8.31 等待老師驗收</p><p><b> 1.4 分工</b></p><p> 薛建明 :進行插入功能的編寫。</p><p> 叢 前 :進行刪除功能的編寫。</p><p> 甘
13、 煬 :進行活區(qū)的切換功能的編寫。</p><p> 楊志文 :進行活區(qū)顯示,KMP算法,界面的編寫。</p><p> 2. 需求分析及總體設計</p><p><b> 2.1 數(shù)據(jù)結構</b></p><p> 用到數(shù)據(jù)結構的雙向鏈表:</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> ?。?)行插入:在指定行之后插入一行或幾行。</p><p> ?。?)行刪除:在指定行之后插入一行或幾行。</p><p> ?。?)行替換:在
16、指定行之后插入一行或幾行。</p><p> ?。?)活區(qū)切換: 將活區(qū)寫入輸出文件,并從輸入文件中讀入下一段,作為新的活區(qū)。</p><p> ?。?)活區(qū)顯示:逐頁地(每頁20行)顯示活區(qū)內容,每顯示一頁之后請用戶決定是否繼續(xù)顯示以后備頁(如果存在)。印出的每一行要前置行號和一個空格符,行號固定占4位,增量為1。</p><p> (6)模式匹配:在當前活區(qū)中
17、查找所要匹配的文本。</p><p> 3.功能模塊詳細設計</p><p><b> 3.1設計流程</b></p><p> 行插入功能:找到要插入的結點對應的指針,然后開辟新的空間,把開辟出的新的空間,與剛才的結點連接,同時再把新節(jié)點的指針域只向出入的下一個節(jié)點。</p><p> 主要思想: p=(
18、text *)malloc(sizeof(text)); // p為新插入節(jié)點 </p><p> p->next=p1->next; // p1為要出入結點的</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.功能模塊詳細設計</p><p><b> 4.1設計流程</b></p><p> 行刪除:找到要刪除的第一行和要刪除的最后一行,分別把他們的指針域記錄下 來,把要刪除的最后一行之后的文本往前移使的一頁達到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++) /*找到要刪除的第一行*/</p><p> p1=p1->next;</p><p><b> }</b></p><p><b> p3=p1;
39、</b></p><p> for(i=0; i<max; i++) /*找到要刪除的最后一行*/</p><p> p2=p2->next;</p><p><b> p4=p2;</b></p><p> for(; p4!=NULL; p3=p3->next) /*刪除中間節(jié)點
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.功能模塊詳細設計 </p><p><b> 5.1設計流程</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.功能模塊詳細設計</p><p><b> 6.1設計流程</b></p><p
53、> 模式匹配 KMP 算法, 編輯函數(shù),用來接受處理編輯命令,活區(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ù),將所有的內容存盤******************</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ū)寫入文件</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))//將其余的內容寫入文件</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() /*畫主窗口函數(shù)*/</p><p><b> {</b></p><p><b> int i,j;</b></p><p> got
91、oxy(1,1); /*在文本窗口中設置光標至(1,1)處*/</p><p> insline(); /*在文本窗口的(1,1)位置處中插入一個空行*/</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) /*畫菜單,m:第幾項菜單,n:第m項的第n個子菜單*/</p><p><b> {</b></p><p><b> int i;</b></p><p> if(m%2==0)
94、 /*畫File菜單項*/</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個空行*/</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); /*窗口內文本的
97、輸出函數(shù),在窗口左邊輸出 | */</p><p> gotoxy(32,1+i);</p><p> cprintf("%c",179); /*窗口內文本的輸出函數(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); /*窗口內文本的輸出函數(shù),在窗口上邊輸出 - */</p><p> gotoxy(21+i,6);</p><p>
99、 cprintf("%c",196); /*窗口內文本的輸出函數(shù),在窗口下邊輸出 - */</p><p><b> }</b></p><p> /*以上為顯示菜單項的外觀*/</p><p> textbackground(7);</p><p> gotoxy(21,2);</p
100、><p> cprintf("%c",218); /*輸出四個邊角表格符*/</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) /*畫Edit菜單項*/</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及其子菜單,并將光帶顯示在第一個子菜單上*/</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及其子菜單,并將光帶顯示在第一個子菜單上*/</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) /*菜單項之間循環(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)/*菜單項之間循環(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、*選中某主菜單項的子菜單項(選中某項)*/</p><p><b> {</b></p><p> if(value%2==0) b=3; /*File下有5個子菜單項*/</p><p> if(value%3==1) b=6; /*Edit下有4個子菜單項*/</p><p> a=(value%3)*1
134、0+flag%b;/*a表示選擇子菜單的編號*/</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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結構課程設計——簡單行編輯程序
- 數(shù)據(jù)結構課程設計--文章編輯系統(tǒng)
- 文章編輯(數(shù)據(jù)結構課程設計)
- 數(shù)據(jù)結構課程設計---文章編輯
- 文章編輯_數(shù)據(jù)結構課程設計
- 文章編輯_數(shù)據(jù)結構課程設計
- 數(shù)據(jù)結構課程設計-文章編輯
- 數(shù)據(jù)結構課程設計----行編輯程序
- 數(shù)據(jù)結構課程設計--簡單的員工管理系統(tǒng)
- 數(shù)據(jù)結構課程設計報告--文章編輯
- 數(shù)據(jù)結構課程設計—文章編輯設計報告
- 數(shù)據(jù)結構課程設計報告---簡單的職工管理系統(tǒng)
- c語言數(shù)據(jù)結構課程設計---文章編輯
- c語言數(shù)據(jù)結構課程設計-文章編輯
- 數(shù)據(jù)結構課程設計--文章編輯集合運算
- 數(shù)據(jù)結構課程設計--數(shù)據(jù)結構課程設計----huffman編碼
- 數(shù)據(jù)結構課程設計--文本編輯器
- 數(shù)據(jù)結構課程設計--文字編輯器
- 數(shù)據(jù)結構課程設計報告--簡單計算器
- 數(shù)據(jù)結構與算法課程設計-- 簡單工資管理系統(tǒng)設計
評論
0/150
提交評論