簡(jiǎn)單的行編輯器課程設(shè)計(jì)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  C語(yǔ)言課程設(shè)計(jì)</b></p><p>  題目編號(hào)和名稱 簡(jiǎn)單的行編輯器 </p><p>  教師姓名 </p><p>  學(xué)生姓名

2、 </p><p>  學(xué)生學(xué)號(hào) </p><p>  學(xué)生班級(jí) </p><p>  所在院系

3、 </p><p>  日期 2011 年 6 月 日</p><p><b>  1.【題目要求】</b></p><p>  設(shè)計(jì)一個(gè)簡(jiǎn)單的行編輯器 </p><p><b>  【要求】 </b></p><p>  

4、(1) 設(shè)置一個(gè)簡(jiǎn)單的行編輯器,每行以回車結(jié)束 </p><p> ?。?) 數(shù)據(jù)以文件形式存儲(chǔ) </p><p> ?。?) 編輯器具有查找、替換、修改數(shù)據(jù)的功能</p><p><b>  2.【需求分析】</b></p><p>  根據(jù)題目要求,行編輯器的數(shù)據(jù)以文本文件存放在文件中,故需要提供文件的輸入、輸出等操

5、作;在程序運(yùn)行過(guò)程中要實(shí)現(xiàn)查找、替換、修改數(shù)據(jù)的功能應(yīng)提供查找、替換、修改數(shù)據(jù)等操作;另外還應(yīng)提供鍵盤式選擇菜單功能選擇。</p><p><b>  3.【總體設(shè)計(jì)】</b></p><p>  根據(jù)上面的需求分析,可以將這一系統(tǒng)的設(shè)計(jì)分為輸入、查找、替換修改數(shù)據(jù)、退出等四個(gè)模塊(系統(tǒng)功能模塊如圖1所示)</p><p>  圖1 行編輯器

6、功能模塊圖</p><p><b>  4.【詳細(xì)設(shè)計(jì)】</b></p><p><b>  主函數(shù)</b></p><p>  主函數(shù)的設(shè)計(jì)一般較簡(jiǎn)單,一般只提供輸入、功能處理和輸出部分的函數(shù)調(diào)用其中各功能模塊用菜單方式選擇。主函數(shù)流程圖如圖1-1 程序如下</p><p>  void main

7、()</p><p><b>  {</b></p><p>  cout<<"\t\t\t 簡(jiǎn)單行編輯.\n";</p><p><b>  Str s1;</b></p><p><b>  Str s2; </b></p>

8、<p><b>  Str ss;</b></p><p><b>  Str ss1;</b></p><p><b>  Str ss2;</b></p><p><b>  int n;</b></p><p>  s1.input_st

9、r();</p><p>  int choice=-1;</p><p>  while(choice!=0) 圖1-1 行編輯器主函數(shù)流程</p><p><b>  {</b></p><p>  //system("cls");&l

10、t;/p><p>  cout<<"\t\t\t *******簡(jiǎn)單行編輯******\n";</p><p>  cout<<"\t\t\t ***********************\n";</p><p>  cout<<"\t\t\t 1: 打印字符串.\n&quo

11、t;;</p><p>  cout<<"\t\t\t 2: 插入字符串.\n";</p><p>  cout<<"\t\t\t 3: 刪除字符串.\n";</p><p>  cout<<"\t\t\t 4: 復(fù)制整個(gè)字符串.\n";</p>

12、<p>  cout<<"\t\t\t 5: 替換字符串.\n";</p><p>  cout<<"\t\t\t 6: 查找一個(gè)字符串的位置.\n";</p><p>  cout<<"\t\t\t 7: 繼續(xù)輸入. \n";</p><p> 

13、 cout<<"\t\t\t 0: 退出.\n";</p><p>  cout<<"\t\t\t ************************\n";</p><p>  cout<<"\t\t\t 請(qǐng)選擇 : ";</p><p>  cin>&g

14、t;choice;</p><p>  switch(choice)</p><p><b>  {</b></p><p>  case 1: cout<<"\t\t\t1: 打印出字符串.\n";</p><p>  s1.print_str(s1);</p><

15、p><b>  break;</b></p><p>  case 2: cout<<"\t\t\t2: 插入字符串.\n";</p><p>  s1.insert_str(s1,s2,ss);</p><p><b>  break;</b></p><p&g

16、t;  case 3: cout<<"\t\t\t3: 刪除字符串.\n";</p><p>  s1.delete_str(s1,s2);</p><p><b>  break;</b></p><p>  case 4: cout<<"\t\t\t4: 復(fù)制整個(gè)字符串.\n&quo

17、t;;</p><p>  s1.copy_str(s1,s2);</p><p><b>  break;</b></p><p>  /*case 5: cout<<"\t\t\t5: 替換字符串.\n";</p><p>  s1.instead_str(s1,s2,ss1,ss

18、2,n);</p><p><b>  break;*/</b></p><p>  case 6: cout<<"\t\t\t6: 查找一個(gè)字符串的位置.\n";</p><p>  s1.find_position(s1,ss,n);</p><p><b>  break

19、;</b></p><p>  case 7: cout<<"\t\t\t7: 繼續(xù)輸入.\n";</p><p>  s1.go_on_input(s1);</p><p><b>  break;</b></p><p>  case 0: cout<<&qu

20、ot;\t\t\t0: 退出.\n";</p><p><b>  break;</b></p><p>  default:cout<<"\t\t\terror.\n";</p><p><b>  break;</b></p><p><b>

21、;  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  2.各功能模塊的設(shè)計(jì)</p><p> ?。?)輸入、打印模塊</p><p>  該程序需要輸入一段字符串作為其待處理數(shù)據(jù),所以通過(guò)鍵盤輸入字符

22、串作為待處理數(shù)據(jù),以回車進(jìn)入主函數(shù)界面。選擇菜單1打印出該段字符串。其程序如下,程序運(yùn)行截圖如圖2-1 2-2</p><p>  void Str::input_str()</p><p><b>  { </b></p><p>  cout<<"\t\t\t 請(qǐng)輸入字符串以#結(jié)束:";</p&g

23、t;<p><b>  int k;</b></p><p><b>  k=0; </b></p><p>  ch[k]='x'; </p><p>  while( cin>>ch[k],ch[k]!='#' ) k++;</p><p&

24、gt;  ch[k]='#';</p><p><b>  len=k;</b></p><p><b>  }</b></p><p>  //下面的程序?yàn)椋猴@示整個(gè)字符串。</p><p>  void Str::print_str(Str &s1)</p>

25、<p><b>  {</b></p><p>  cout<<"\n\t\t\t整個(gè)字符串為:";</p><p>  for(int k=0;s1.ch[k]!='#';k++)</p><p>  cout<<ch[k];</p><p>  

26、cout<<"\n\n";</p><p><b>  }</b></p><p><b>  圖2-1</b></p><p><b>  圖2-2</b></p><p><b>  (2)數(shù)據(jù)修改模塊</b></

27、p><p>  該功能可通過(guò)數(shù)據(jù)插入與數(shù)據(jù)修改兩部分完成對(duì)數(shù)據(jù)的修改。1】插入 完成插入操作時(shí) 須先輸入要插入的位置,然后輸入所要插入的字符串,以‘#’結(jié)束,回車完成插入其程序如下,運(yùn)行截圖如圖2-3</p><p>  void Str::insert_str(Str &s,Str s2,Str ss)</p><p><b>  { <

28、;/b></p><p>  cout<<"\t\t\t輸入你要插入的位置:";</p><p><b>  int i;</b></p><p><b>  cin>>i;</b></p><p><b>  i--;</b>

29、</p><p>  if(i>s.len) </p><p>  cout<<"\t\t\t 插入位置不存在.\n";</p><p><b>  else {</b></p><p>  cout<<"\t\t\t 輸入你要插入的字符串以#結(jié)束:"

30、;</p><p><b>  int r; </b></p><p><b>  r=0; </b></p><p>  ss.ch[r]='x';</p><p>  while( cin>>ss.ch[r],ss.ch[r]!='#' ) r++

31、; </p><p>  ss.ch[r]='#';</p><p><b>  ss.len=r;</b></p><p>  if(ss.len>MaxSize|| ( s.len +ss.len )>MaxSize)</p><p>  cout<<"\t\t\t插

32、入字符串大于最大值無(wú)法插入.\n";</p><p><b>  else {</b></p><p><b>  int p=0;</b></p><p>  for (int k=0; k<=i; k++)</p><p><b>  { </b><

33、;/p><p>  s2.ch[p]=s.ch[k];</p><p><b>  p++;</b></p><p><b>  }</b></p><p>  for(k=0;k<ss.len;k++)</p><p><b>  { </b>&

34、lt;/p><p>  s2.ch[p]=ss.ch[k]; </p><p><b>  p++;</b></p><p><b>  }</b></p><p>  for(k=i+1;k<s.len;k++)</p><p><b>  {</b&g

35、t;</p><p>  s2.ch[p]=s.ch[k];</p><p><b>  p++;</b></p><p><b>  }</b></p><p>  s2.len=p; cout<<"\t\t\t 新字符串的長(zhǎng)度為"<<s2.len;

36、</p><p>  s2.ch[p]='#'; </p><p>  for(int q=0; s2.ch[q]!='#'; q++)</p><p>  s.ch[q]=s2.ch[q];</p><p>  s.ch[q]='#';</p><p>  s.len

37、=s2.len ;</p><p>  cout <<"插入成功.\n";</p><p>  print_str(s);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }

38、</b></p><p><b>  圖2-3</b></p><p>  2】刪除 刪除操作是作為修改模塊的一部分,同插入操作共同完成修改數(shù)據(jù)的功能。進(jìn)行刪除操作時(shí),輸入想從字符串上開始刪除的位置,再輸入刪除的字符串長(zhǎng)度。回車即可完成刪除。其程序如下,運(yùn)行截圖如圖2-4</p><p>  void Str::delete_st

39、r(Str &s1,Str s)</p><p><b>  { </b></p><p>  cout<<"\t\t\t 輸入你要開始刪除的位置:";</p><p><b>  int i;</b></p><p><b>  cin>&g

40、t;i; </b></p><p>  if(i>s1.len) cout<<"\t\t\t 太大無(wú)法刪除.\n";</p><p><b>  else </b></p><p><b>  { </b></p><p>  cout<<

41、;"\t\t\t 輸入你要?jiǎng)h除的長(zhǎng)度:";</p><p><b>  int j;</b></p><p><b>  cin>>j; </b></p><p>  if(i+j>s1.len) </p><p>  cout<<"\

42、t\t\t 刪除的太長(zhǎng)無(wú)法刪除.\n";</p><p><b>  else { </b></p><p><b>  int p=0;</b></p><p>  for (int k=0;k<i;k++)</p><p><b>  {</b></p

43、><p>  s.ch[p]=s1.ch[k];</p><p><b>  p++;</b></p><p><b>  }</b></p><p>  for (k=i+j;k<s1.len;k++)</p><p><b>  {</b><

44、/p><p>  s.ch[p]=s1.ch[k];</p><p><b>  p++;</b></p><p><b>  }</b></p><p>  s.len=p+1;</p><p>  s.ch[p+1]='#';</p><p

45、>  for(int q=0; s.ch[q]!='#'; q++)</p><p>  s1.ch[q]=s.ch[q];</p><p>  s1.ch[q-1]='#';</p><p>  s1.len=s.len-1;</p><p>  cout<<"\t\t\t 刪除成

46、功.\n";</p><p>  s1.print_str(s1);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  圖2-4<

47、/b></p><p><b>  (3)查找模塊</b></p><p>  在字符串內(nèi)尋找你想要的一段字符串,顯示找到的位置。選擇查找功能的菜單,通過(guò)鍵盤輸入所要查找字符串,回車即可找出其所在位置。程序如下,運(yùn)行截圖如圖2-5</p><p>  void Str::find_position(Str &s,Str &

48、ss,int &n)</p><p><b>  {</b></p><p>  cout<<"\t\t\t 輸入字符串:";</p><p>  ss.input_str(); </p><p>  int y=0; </p><p>  for(i

49、nt i=0;i<s.len;i++)</p><p><b>  { </b></p><p>  for(int j=i,k=0; s.ch[j]==ss.ch[k]; j++,k++)</p><p><b>  { </b></p><p>  if(k==ss.len-1)&l

50、t;/p><p>  { cout<<"\t\t\t 位置是 "<<i+1<< " .\n";</p><p>  position[y]=i+1; </p><p><b>  y++;</b></p><p><b>  }&l

51、t;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(!y) </b></p><p><b>  {</b></p><p>  cout<&l

52、t;"\t\t\t 沒(méi)有找到要字符\n"; </p><p>  position[y]=-1;</p><p><b>  }</b></p><p><b>  n=y; //n</b></p><p><b>  }</b></p>

53、<p><b>  圖2-5</b></p><p><b>  (4)替換模塊</b></p><p>  在字符串內(nèi),把某些小段字符串替換為你想要的字符串。先輸入你要改變的小段字符串,程序先找到這些字符串,再輸入想要替換成的/字符串,程序完成替換功能。其程序如下</p><p>  void Str::ins

54、tead_str(Str &s1,Str s2,Str ss1,Str ss2,int n)</p><p><b>  {</b></p><p>  s1.find_position(s1,ss1,n);</p><p><b>  if(n!=0) </b></p><p><b

55、>  {</b></p><p>  cout<<"\t\t\t 輸入你想替代的字符.\n";</p><p>  ss2.input_str();</p><p>  cout<<"\t\t\t 替換成功"<<"\n";</p>&l

56、t;p>  cout<<"s1.len="<<s1.len<<"\n";</p><p>  cout<<"ss1.len="<<ss1.len<<"\n";</p><p>  cout<<"ss2.len=&

57、quot;<<ss2.len<<"\n";</p><p>  cout<<"n="<<n<<"\n\n";</p><p>  if( (s1.len-(ss1.len-ss2.len)*n)>MaxSize)</p><p>  cou

58、t<<"太長(zhǎng).\n";</p><p><b>  else </b></p><p><b>  { </b></p><p><b>  int p=0;</b></p><p>  position[n]=s1.len+1;</p

59、><p>  for(int i=0;i<position[0]-1;i++)</p><p><b>  {</b></p><p>  s2.ch[p]=s1.ch[i];</p><p><b>  p++;</b></p><p><b>  }</

60、b></p><p>  for(int nn=0;nn<n;nn++)</p><p><b>  { </b></p><p>  for(int j=0;j<4;j++)</p><p><b>  { </b></p><p>  s2.c

61、h[p]=ss2.ch[j]; </p><p><b>  p++; </b></p><p><b>  } </b></p><p>  for(int kk=(position[nn]-1+ss1.len);kk<position[nn+1]-1;kk++)</p><p><

62、;b>  { </b></p><p>  s2.ch[p]=s1.ch[kk];</p><p><b>  p++; </b></p><p><b>  }</b></p><p><b>  }</b></p><p> 

63、 s2.ch[p]='#';</p><p><b>  s2.len=p;</b></p><p>  for(int qq=0; s2.ch[qq]!='#'; qq++)</p><p>  s1.ch[qq]=s2.ch[qq];</p><p>  s1.ch[qq]='

64、#';</p><p>  s1.len=s2.len ;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b> ?。?)退出</b>

65、;</p><p>  當(dāng)所要運(yùn)行操作完成時(shí),可通過(guò)主函數(shù)選擇退出菜單,實(shí)現(xiàn)程序的退出。程序運(yùn)行截圖如圖2-6</p><p><b>  圖2-6</b></p><p><b>  5.【總結(jié)】</b></p><p>  通過(guò)為期一周的課程設(shè)計(jì),我們對(duì)《C語(yǔ)言》這門課程有了更深一步的了解。它是

溫馨提示

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

評(píng)論

0/150

提交評(píng)論