2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  數(shù) 據(jù) 結(jié) 構(gòu)</b></p><p>  課 程 設(shè) 計 說 明 書</p><p>  2012 年 8月 30 日</p><p> 學(xué) 院:電子與計算機科學(xué)技術(shù)學(xué)院</p><p> 專 業(yè):網(wǎng)絡(luò)工程/計算機科學(xué)與技術(shù)</p><p> 題 目:簡單行

2、編輯器</p><p> 指導(dǎo)教師:</p><p> 組長姓名:學(xué)號</p><p> 組員姓名:學(xué)號</p><p> 組員姓名:學(xué)號</p><p> 組員姓名:學(xué)號</p><p> 組員姓名:學(xué)號</p><p><b>  1. 概述1</b

3、></p><p>  1.1 設(shè)計目的1</p><p>  1.2 設(shè)計目標及要求設(shè)計要求1</p><p>  1.3 設(shè)計進度1</p><p><b>  1.4 分工1</b></p><p>  2. 需求分析及總體設(shè)計1</p><p>  

4、2.1 數(shù)據(jù)結(jié)構(gòu)1</p><p>  2.2 功能框架2</p><p>  3.功能模塊詳細設(shè)計2</p><p><b>  3.1設(shè)計流程2</b></p><p>  3.2主要源代碼2</p><p>  4.功能模塊詳細設(shè)計2</p><p>&l

5、t;b>  4.1設(shè)計流程2</b></p><p>  4.2主要源代碼3</p><p><b>  1. 概述 </b></p><p><b>  1.1 設(shè)計目的</b></p><p>  被編輯的文本文件可能很大,全部讀入編輯程序的數(shù)據(jù)空間(內(nèi)存)的作法既不經(jīng)濟,

6、也不總能實現(xiàn)。所以設(shè)計這一種以行為單位進行的編輯程序。主要是逐段地編輯。任何時刻只把待編輯文件的一段放在內(nèi)存,稱為活區(qū)。需要用到的數(shù)據(jù)結(jié)構(gòu)是鏈表。</p><p>  1.2 設(shè)計目標及要求設(shè)計要求</p><p><b> ?。?)行插入:</b></p><p>  格式: i<回車><行號><回車>&l

7、t;文本><回車> </p><p>  功能: 在指定行之后插入一行或幾行。</p><p><b>  (2)行刪除:</b></p><p>  格式: d<回車><行號1>[<空格><行號2>]<回車></p><p>  功能: 在

8、指定行之后插入一行或幾行。</p><p><b> ?。?)行替換:</b></p><p>  格式: i<回車><行號><回車><文本><回車></p><p>  功能: 在指定行之后插入一行或幾行。</p><p><b>  (4)活區(qū)切換

9、:</b></p><p><b>  格式: n<回車></b></p><p>  功能: 將活區(qū)寫入文件,并從文件中讀入下一段,作為新的活區(qū)。</p><p><b>  (5)活區(qū)顯示:</b></p><p>  格式: p<回車></p>

10、<p>  功能: 逐頁地(每頁20行)顯示活區(qū)內(nèi)容,每顯示一頁之后請用戶決定是否繼續(xù)顯示以后備頁(如果存在)。印出的每一行要前置行號和一個空格符,行號固定占4位,增量為1。</p><p><b> ?。?)模式匹配:</b></p><p>  格式: k<回車><匹配文本><回車></p>&l

11、t;p><b>  1.3 設(shè)計進度</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編寫源代碼</p><p&

12、gt;  4》2012.8.30完成設(shè)計并書寫課程設(shè)計說明書</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. 需求分析及總體設(shè)計</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>  (3)行替換:在

16、指定行之后插入一行或幾行。</p><p> ?。?)活區(qū)切換: 將活區(qū)寫入輸出文件,并從輸入文件中讀入下一段,作為新的活區(qū)。</p><p> ?。?)活區(qū)顯示:逐頁地(每頁20行)顯示活區(qū)內(nèi)容,每顯示一頁之后請用戶決定是否繼續(xù)顯示以后備頁(如果存在)。印出的每一行要前置行號和一個空格符,行號固定占4位,增量為1。</p><p> ?。?)模式匹配:在當前活區(qū)中

17、查找所要匹配的文本。</p><p>  3.功能模塊詳細設(shè)計</p><p><b>  3.1設(shè)計流程</b></p><p>  行插入功能:找到要插入的結(jié)點對應(yīng)的指針,然后開辟新的空間,把開辟出的新的空間,與剛才的結(jié)點連接,同時再把新節(jié)點的指針域只向出入的下一個節(jié)點。</p><p>  主要思想: p=(

18、text *)malloc(sizeof(text)); // p為新插入節(jié)點 </p><p>  p->next=p1->next; // p1為要出入結(jié)點的</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.功能模塊詳細設(shè)計</p><p><b>  4.1設(shè)計流程</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.功能模塊詳細設(shè)計 </p><p><b>  5.1設(shè)計流程</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.功能模塊詳細設(shè)計</p><p><b>  6.1設(shè)計流程</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ù),將所有的內(nèi)容存盤******************</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))//將其余的內(nèi)容寫入文件</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); /*在文本窗口中設(shè)置光標至(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); /*窗口內(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>  /*以上為顯示菜單項的外觀*/</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)系上傳者。文件的所有權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論