版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 課程設計(論文)任務書</p><p> 軟件 學 院 軟件+交通運輸 專 業(yè) 3 班 </p><p> 一、課程設計(論文)題目 字符處理系統(tǒng) </p><p> 二、課程設計(論文)工作自 2012 年 6 月 4日起至 2012
2、 年 6 月 10日止。</p><p> 三、課程設計(論文) 地點: </p><p><b> 目錄</b></p><p><b> 一 課題描述1</b></p><p> 二 設計
3、目的與要求1</p><p><b> 三 總體設計2</b></p><p><b> 四 詳細設計3</b></p><p> 4.1字符串賦值函數(shù)--------------------------------------------------------------------------------
4、---------------3</p><p> 4.2求取字符串長度函數(shù)-----------------------------------------------------------------------------------------4</p><p> 4.3字符串復制函數(shù)----------------------------------------------
5、-------------------------------------------------5</p><p> 4.4字符串大小比較-----------------------------------------------------------------------------------------------6</p><p> 4.5字符串查找----------
6、-------------------------------------------------------------------------------------------7</p><p> 4.6字符串插入-------------------------------------------------------------------------------------------------
7、----7</p><p> 4.7字符串刪除----------------------------------------------------------------------------------------------------10</p><p><b> 五 程序編碼12</b></p><p> 六 程序調(diào)試與測
8、試結果17</p><p><b> 七 總結19</b></p><p><b> 參考文獻19</b></p><p><b> 一 課題描述</b></p><p> 本次課程設計采用C++語言編寫一個字符串處理函數(shù)系統(tǒng),該系統(tǒng)具有將給出任意的兩個字符串,求
9、出其字符串的長度,實現(xiàn)字符串的拷貝、連接、比較的功能;同時具有實現(xiàn)將給定字符串1(主串)字符串2(子串),查找子串在主串中的位置;給定字符串,輸入所要插入的字符串(字符)及插入的位置,實現(xiàn)字符串(字符)的插入的功能;對于給定的字符串,實現(xiàn)刪除特定某個字符的功能。</p><p><b> 二 設計目的與要求</b></p><p><b> 設計目的&l
10、t;/b></p><p> 熟練掌握C++語言的基本知識和技能。</p><p> 掌握面向?qū)ο蟪绦蛟O計的基本思路和方法;</p><p> 了解指針、類的繼承、文件的打開和保存、鏈表應用;</p><p> 利用所學的基本知識和技能,解決面向?qū)ο蟪绦蛟O計問題</p><p> 培養(yǎng)分析、解決問題的能
11、力;提高學生的科技論文寫作能力。</p><p><b> 設計要求</b></p><p> 運用C++語言描述數(shù)據(jù)類、字符串類,每一個類應包含數(shù)據(jù)成員和成員函數(shù)。設計基類和派生類,并運用多態(tài)性和虛函數(shù)的知識。注重面向?qū)ο蟪绦蛟O計理論知識的理解與實際的動一手編程能力。要求設計其有繼承與派生以及多態(tài)性的類.理解面向?qū)ο蟪绦蛟O計的核心的概念。</p>
12、<p> 建立數(shù)據(jù)類、字符串類;</p><p> 數(shù)據(jù)、字符串信息的初始化;</p><p><b> 字符串信息的輸出;</b></p><p><b> 獲得字符串長度;</b></p><p> 在字符串中查找一個字符;</p><p> 在字符
13、串中查找另外一個字符串;</p><p><b> 比較字符串;</b></p><p><b> 字符串插入與刪除;</b></p><p><b> 三、總體設計</b></p><p> 定義一個String類,實現(xiàn)對字符串類的賦值、連接、復制、查找、交換等操作。
14、先設計一個總類然后寫出多個子類來實現(xiàn)任務所給定的功能。</p><p><b> 四、詳細設計</b></p><p> 4.1字符串賦值函數(shù):</p><p> 1)字符串賦值函數(shù)及輸出算法如下:</p><p> cout<<"輸入字符串1(長度小于200個字符):"<&
15、lt;endl;</p><p><b> cin>>s1;</b></p><p> cout<<"輸入字符串2(長度小于200個字符):"<<endl;</p><p><b> cin>>s2;</b></p><p>
16、 cout<<"字符串1為:"<<s1<<endl;</p><p> cout<<"字符串2為:"<<s2<<endl;</p><p><b> 字符串賦值函數(shù)流</b></p><p> 程圖如圖4.1所示:</p
17、><p> 圖4.1 字符串初始化賦初值</p><p> 4.2求取字符串長度函數(shù)</p><p> 1)字符串長度函數(shù)算法如下所示:</p><p> int i=0;int j=0;char *p1=s1;char *p2=s2;</p><p> cout<<"字符串1的長度:&qu
18、ot;<<endl;</p><p> while(*p1++!='\0')++i;//直到碰到\0時,i不在+1</p><p> cout<<i<<endl;</p><p> while(*p2++!='\0')//直到碰到\0時,j不在+1</p><p>&l
19、t;b> ++j;</b></p><p> cout<<"字符串2的長度:"<<endl;</p><p> cout<<j<<endl;</p><p> 2)求字符串長度流程圖如圖4.2所示:</p><p> 4.3字符串復制函數(shù)</
20、p><p> 1)字符串復制函數(shù)算法如下:</p><p> char *p1=s1;</p><p> char *p2=s2;</p><p> cout<<"輸出復制后的字符串:"<<endl;</p><p> while(*p2!='\0'){
21、</p><p><b> *p1=*p2;</b></p><p><b> p1++;</b></p><p><b> p2++;}</b></p><p><b> *p1='\0';</b></p><
22、p> cout<<s1<<endl;}</p><p> 2)字符串復制函數(shù)流程圖如圖4.3所示:</p><p> 4.4字符串比較大小:</p><p> 字符串連接函數(shù)算法如下:</p><p> char *p1=s1;char *p2=s2;</p><p> cou
23、t<<"輸入字符串1(長度小于200個字符):"<<endl;</p><p><b> cin>>s1;</b></p><p> cout<<"輸入字符串2(長度小于200個字符):"<<endl;</p><p><b>
24、cin>>s2;</b></p><p> cout<<"輸出兩個字符串大小的比較結果:"<<endl;</p><p> for(;*p1!='\0'||*p2!='\0';++p1,++p2)</p><p> //從第一個字母比較,指針不斷下移,一直到能判
25、斷出大小為止</p><p> {if((*p1-*p2)<0)</p><p> {cout<<"字符串1小于字符串2"<<endl;break;}</p><p> else if((*p1-*p2)>0)</p><p> {cout<<"字符串1大于
26、于字符串2"<<endl;break;}</p><p><b> }</b></p><p> if(*p1=='\0'&&*p2=='\0')</p><p> cout<<"兩個字符串大小相等!"<<endl;</
27、p><p> 2)字符串比較大小函數(shù)流程圖如圖4.4所示:</p><p><b> 4.5字符串查找</b></p><p> 字符串查找函數(shù)算法如下:</p><p> char a1[512] = {'\0'};char a2[512] = {'\0'};</p>
28、<p> int i=0;int j=0;</p><p> cout << "請輸入字符串: ";cin >>a1;//a1為原字符串</p><p> cout << "請輸入要查找的字符串: ";cin >>a2;//a2為要查找的</p><p> fo
29、r(i=0;i<(strlen(a1)-strlen(a2)+1);i++)</p><p><b> {</b></p><p> for(j = 0; j < strlen(a2); j++)</p><p><b> {</b></p><p> if(a2[j]!=a1[
30、i+j])</p><p><b> {</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(j == strlen(
31、a2))</p><p><b> {</b></p><p> cout << "位置為:"<<i+1<< endl;</p><p><b> return 0;</b></p><p><b> }</b>&
32、lt;/p><p><b> }</b></p><p> cout << "不存在" << endl;</p><p><b> return 0;</b></p><p><b> }</b></p><p
33、><b> 4.6字符串插入</b></p><p> 1) 字符串插入函數(shù)算法如下:</p><p> int i;char s3[100];char s4[100];</p><p> char *p1=s1;char *p3=s3;char *p4=s4;</p><p> //s1為原字符串,s3
34、為要插入的字符串</p><p> cout<<"輸入字符串(長度小于200個字符):"<<endl;</p><p><b> cin>>s1;</b></p><p> cout<<"輸入所要插入的字符串:"<<endl;</p&
35、gt;<p><b> cin>>s3;</b></p><p> cout<<"輸入所要插入的位置:"<<endl;</p><p><b> cin>>i;</b></p><p> for(p1=&s1[i];(*p1)
36、!='\0';++p1,++p4){</p><p> *p4=*p1;//將字符串1賦給4</p><p><b> }</b></p><p><b> *p4='\0';</b></p><p> for(p1=&s1[i];(*p3)!=
37、9;\0';++p1,++p3){</p><p><b> *p1=*p3;}</b></p><p><b> *p1='\0';</b></p><p> while(*p1!='\0')</p><p><b> ++p1;</
38、b></p><p> for(p4=s4;(*p4)!='\0';++p4,++p1){</p><p><b> *p1=*p4;}</b></p><p><b> *p1='\0';</b></p><p> cout<<"
39、輸出插入字符串后的新字符串:"<<endl;</p><p> cout<<s1<<endl;</p><p> 2) 字符串插入函數(shù)流程圖如圖4.6所示: </p><p><b> 圖4.6字符串插入</b></p><p><b> 4.7字符串刪除&
40、lt;/b></p><p> 1) 字符串插入函數(shù)算法如下:</p><p> char a[200]; int i;</p><p> cout<<"請輸入一個字符或字符串:";</p><p><b> cin>>a;</b></p><
41、p> cout<<"請輸入你要刪除的字符的位置:";</p><p> cin>>i;//i不能超過字符串的長度</p><p><b> if(i>200)</b></p><p> cout<<"輸出錯誤!"<<endl;</p
42、><p><b> else</b></p><p><b> {</b></p><p> for(int j=i;j<200;++j)</p><p><b> {</b></p><p> a[j-1]=a[j]; </p>
43、<p><b> }</b></p><p> cout<<"刪除后的字符串為:"<<a<<endl;</p><p><b> }</b></p><p> 字符串刪除函數(shù)流程圖如圖4.7所示: </p><p><
44、;b> 圖4.7字符串插入</b></p><p><b> 5 程序編碼</b></p><p> #include<iostream></p><p> #include <string></p><p> using namespace std;</p>
45、;<p> int menu_select();</p><p> class String</p><p><b> {</b></p><p><b> private:</b></p><p> char s1[200]; //定義長度為200的一維字符數(shù)組<
46、/p><p> char s2[200];</p><p><b> public:</b></p><p> void Enter(); //輸入輸出字符串</p><p> void GetLength();//求取字符串的長度</p><p> void Strcpy(); /
47、/復制字符串</p><p> void Strcmp(); //比較字符串的大小</p><p> int Strfind(); //查找字符串</p><p> void Strinsert(); //插入字符串</p><p> void Strdel(); //字符刪除</p><p&
48、gt;<b> };</b></p><p> void String::Enter() //輸入字符串</p><p><b> {</b></p><p> cout<<"輸入字符串1(長度小于200個字符):"<<endl;</p><p>
49、;<b> cin>>s1;</b></p><p> cout<<"輸入字符串2(長度小于200個字符):"<<endl;</p><p><b> cin>>s2;</b></p><p> cout<<"字符串1為:&q
50、uot;<<s1<<endl;</p><p> cout<<"字符串2為:"<<s2<<endl;</p><p><b> }</b></p><p> void String::GetLength() //求取字符串的長度</p>&l
51、t;p><b> {</b></p><p><b> int i=0;</b></p><p><b> int j=0;</b></p><p> char *p1=s1;</p><p> char *p2=s2;</p><p>
52、 cout<<"字符串1的長度:"<<endl;</p><p> while(*p1++!='\0')//直到碰到\0時,i不在+1</p><p><b> ++i;</b></p><p> cout<<i<<endl;</p>&l
53、t;p> while(*p2++!='\0')//直到碰到\0時,j不在+1</p><p><b> ++j;</b></p><p> cout<<"字符串2的長度:"<<endl;</p><p> cout<<j<<endl;</p&
54、gt;<p><b> }</b></p><p> void String::Strcpy() //字符串復制</p><p><b> {</b></p><p> char *p1=s1;</p><p> char *p2=s2;</p><p
55、> cout<<"輸出復制后的字符串:"<<endl;</p><p> while(*p2!='\0'){</p><p><b> *p1=*p2;</b></p><p><b> p1++;</b></p><p>&
56、lt;b> p2++;</b></p><p><b> }</b></p><p><b> *p1='\0';</b></p><p> cout<<s1<<endl;</p><p><b> }</b>
57、</p><p> void String::Strcmp() //比較字符串大小</p><p><b> {</b></p><p> cout<<"輸入字符串1(長度小于200個字符):"<<endl;</p><p><b> cin>>
58、;s1;</b></p><p> cout<<"輸入字符串2(長度小于200個字符):"<<endl;</p><p> cin>>s2;char *p1=s1;</p><p> char *p2=s2;</p><p> cout<<"輸出
59、兩個字符串大小的比較結果:"<<endl;</p><p> for(;*p1!='\0'||*p2!='\0';++p1,++p2)</p><p> //從第一個字母比較,指針不斷下移,一直到能判斷出大小為止</p><p><b> {</b></p><p&
60、gt; if((*p1-*p2)<0){</p><p> cout<<"字符串1小于字符串2"<<endl;</p><p><b> break;}</b></p><p> else if((*p1-*p2)>0){</p><p> cout<
61、;<"字符串1大于于字符串2"<<endl;</p><p><b> break;}</b></p><p><b> }</b></p><p> if(*p1=='\0'&&*p2=='\0')</p><
62、p> cout<<"兩個字符串大小相等!"<<endl;</p><p><b> }</b></p><p> int String::Strfind() //字符串查找</p><p><b> {</b></p><p> c
63、har a1[512] = {'\0'};</p><p> char a2[512] = {'\0'};</p><p><b> int i=0;</b></p><p><b> int j=0;</b></p><p> cout << &
64、quot;請輸入字符串: ";</p><p> cin >>a1;//a1為原字符串</p><p> cout << "請輸入要查找的字符串: ";</p><p> cin >>a2;//a2為要查找的字符串</p><p> for(i=0;i<(strl
65、en(a1)-strlen(a2)+1);i++)</p><p><b> {</b></p><p> for(j = 0; j < strlen(a2); j++)</p><p><b> {</b></p><p> if(a2[j]!=a1[i+j])</p>
66、<p><b> {</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(j == strlen(a2))</p>
67、<p><b> {</b></p><p> cout << "位置為:"<<i+1<< endl;</p><p><b> return 0;</b></p><p><b> }</b></p><p
68、><b> }</b></p><p> cout << "不存在" << endl;</p><p><b> return 0;</b></p><p><b> }</b></p><p> void Strin
69、g::Strinsert() //字符串插入</p><p><b> {</b></p><p><b> int i;</b></p><p> char s3[100];</p><p> char s4[100];</p><p> char *p3=
70、s3;</p><p> char *p4=s4;</p><p> char *p1=s1;</p><p> //s1為原字符串,s3為要插入的字符串</p><p> cout<<"輸入字符串(長度小于200個字符):"<<endl;</p><p><b
71、> cin>>s1;</b></p><p> cout<<"輸入所要插入的字符串:"<<endl;</p><p><b> cin>>s3;</b></p><p> cout<<"輸入所要插入的位置:"<&l
72、t;endl;</p><p><b> cin>>i;</b></p><p> for(p1=&s1[i];(*p1)!='\0';++p1,++p4){</p><p><b> *p4=*p1;</b></p><p> }//將字符串1賦給4&l
73、t;/p><p><b> *p4='\0';</b></p><p> for(p1=&s1[i];(*p3)!='\0';++p1,++p3){</p><p><b> *p1=*p3;</b></p><p><b> }</b&g
74、t;</p><p><b> *p1='\0';</b></p><p> while(*p1!='\0')</p><p><b> ++p1;</b></p><p> for(p4=s4;(*p4)!='\0';++p4,++p1){&
75、lt;/p><p><b> *p1=*p4;</b></p><p><b> }</b></p><p><b> *p1='\0';</b></p><p> cout<<"輸出插入字符串后的新字符串:"<<
76、endl;</p><p> cout<<s1<<endl;</p><p><b> }</b></p><p> void String::Strdel() //字符串刪除</p><p><b> {</b></p><p> ch
77、ar a[200]; int i;</p><p> cout<<"請輸入一個字符或字符串:";</p><p><b> cin>>a;</b></p><p> cout<<"請輸入你要刪除的字符的位置:";</p><p><b
78、> cin>>i;</b></p><p><b> if(i>200)</b></p><p> cout<<"輸出錯誤!"<<endl;</p><p><b> else</b></p><p><b
79、> {</b></p><p> for(int j=i;j<200;++j)</p><p><b> {</b></p><p> a[j-1]=a[j]; </p><p><b> }</b></p><p> cout<&l
80、t;"刪除后的字符串為:"<<a<<endl;</p><p><b> }</b></p><p><b> }</b></p><p> int main()</p><p><b> {</b></p>&
81、lt;p> char choice;</p><p> String maillist;</p><p><b> for(;;){</b></p><p> choice=menu_select();</p><p> switch(choice)</p><p><b&g
82、t; {</b></p><p> case 1:maillist.Enter();break;</p><p> case 2:maillist.GetLength();break;</p><p> case 3:maillist.Strcpy();break;</p><p> case 4:maillist.St
83、rcmp();break;</p><p> case 5:maillist.Strfind();break;</p><p> case 6:maillist.Strinsert();break;</p><p> case 7:maillist.Strdel();break;</p><p> case 8:exit(0);<
84、;/p><p><b> }</b></p><p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> int menu_select()<
85、;/p><p><b> {</b></p><p><b> char c;</b></p><p> cout<<"※※※※※※※※※※※※※※\n";</p><p> cout<<"※ 字符串處理函數(shù)系統(tǒng) ※\n";
86、</p><p> cout<<"※ ※\n";</p><p> cout<<"※ 1.輸入字符串 ※\n";</p><p> cout<<"※ 2.求字符串長度 ※\n";<
87、;/p><p> cout<<"※ 3.復制字符串 ※\n";</p><p> cout<<"※ 4.比較字符串 ※\n";</p><p> cout<<"※ 5.查找字符串 ※\n";</p>
88、<p> cout<<"※ 6.插入字符串 ※\n";</p><p> cout<<"※ 7.刪除字符串 ※\n";</p><p> cout<<"※ 8.退出 ※\n";</p>&l
89、t;p> cout<<"※※※※※※※※※※※※※※\n";</p><p> cout<<"※※※謝謝使用本系統(tǒng)※※※※\n";</p><p> cout<<"※※※※※※※※※※※※※※\n";</p><p> cout<<"\
90、n請輸入(1~8):";</p><p><b> do{</b></p><p> cin.get(c);</p><p> }while(c<'1'||c>'8');</p><p> return c-48;</p><p>&l
91、t;b> }</b></p><p> 6 程序調(diào)試與測試結</p><p> 在vc++6.0運行界面如圖6.1所示:</p><p> 圖6.1 字符串處理函數(shù)系統(tǒng)菜單界面</p><p> 選擇1,輸入字符串1:c++kecheng,和字符串2:zifuchuan,運行界面如圖6.2所示:</p>
92、;<p> 圖6.2字符串賦初值并輸出</p><p> 選擇2,運行界面如圖6.3所示:</p><p> 圖6.3 字符串的長度</p><p> 選擇3,運行界面如圖6.4所示:</p><p> 圖6.4 字符串復制</p><p> 選擇4,運行界面如圖6.5所示:</p>
93、;<p><b> (1)</b></p><p><b> (2)</b></p><p><b> (3)</b></p><p> 圖6.5 字符串比較大小</p><p> 選擇5,輸入字符串:kaoshichengji,查找cheng運行界面如
94、圖6.11所示:</p><p><b> 若不存在,如圖所示</b></p><p><b> 圖6.6字符串查找</b></p><p> 選擇6,插入字符串 將she插入到c++kechengji中,運行界面如圖6.12所示:</p><p><b> 圖6.7字符串插入&l
95、t;/b></p><p> 選擇7,輸入字符串huaadongjiaoda,刪除a,運行界面如圖6.12所示:</p><p><b> 圖6.8字符串刪除</b></p><p><b> 7 總結</b></p><p> 在本次課程設計中,所完成的字符串處理函數(shù)系統(tǒng)實現(xiàn)了字符串
96、的簡單的復制,比較,刪除等功能,同時也實現(xiàn)了字符串的查找功能。其中有關字符串的查找實現(xiàn)的不太好,如果字符串中有重復字符的話,只能查找到第一個字符所在的位置,希望在以后的自主學習中能解決這個問題,并完美的實現(xiàn)它。其次,在本程序中,由于對虛函數(shù)掌握不到位,在本程序設計時,而沒有使用虛函數(shù)。還有一處不太完美,在字符串插入時,沒有在原數(shù)組的基礎上,而是建立了一個新的字符數(shù)組,希望在下學期的學習中能改進這個問題。</p><p
97、> 通過做C++程序設計課程設計,我復習了C++語言的知識,加深了對C++語言中各種語句的理解和運用,收獲很大。然而在做“字符串插入”時,遇到了困難,只能我去網(wǎng)上搜索了資料,并根據(jù)自己的理解寫出了程序。這讓我認識到了自己的不足,讓我明白在編程道路上我還有很遠的路要走。在調(diào)試程序的過程中,我總結出了一些規(guī)律,懂得了怎樣才能更快更好地發(fā)現(xiàn)自己的錯誤,這給了我很大的收獲。在以后的學習中,我會增加對知識的熟練度,盡量用簡單明了的方法編寫
98、程序,增加知識面,,去了解更多的編程語言,使自己在以后的編程道路上走得更加順利。</p><p><b> 參考文獻</b></p><p> [1] 錢能.C++程序設計教程[M].北京:清華大學出版社,2003</p><p> [2] 譚浩強.C++程序設計[M].北京:清華大學出版社,2004</p><p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c課程設計---字符串處理系統(tǒng)
- 課程設計--- 字符串排序
- c++課程設計報告--字符串處理
- 課程設計--字符串類
- 課程設計--字符串的操作
- cmd批處理替換字符串、截取字符串、擴充字符串
- c語言課程設計--字符串類
- 課程設計--查找字符串中的指定字符
- 課程設計--實現(xiàn)字符串的多種操作
- 字符串處理2課程設計報告書
- 微機課程設計--字符串動畫加速減速
- c語言課程設計(字符串函數(shù)包)
- 匯編課程設計-字符串查找與替換
- 微機原理課程設計---字符串動畫顯示
- 微機原理課程設計--字符串分類統(tǒng)計
- c++課程設計---字符串類的設計
- 數(shù)據(jù)結構課程設計--字符串的操作
- 字符串類課程設計說明書
- 數(shù)電課程設計--字符串發(fā)生器
- 微機原理課程設計報告-字符串分類統(tǒng)計
評論
0/150
提交評論