版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 目 錄</p><p> 1課程設計目的………………………………………………………………………1</p><p> 2任務要求…………………………………………………………………1</p><p> 3設計方案…………………………………………………………………2</p><p> 4設計內容……………
2、……………………………………………………2</p><p> 4.1 層次(調用) 關系 …………………………………………………………… 2</p><p> 4.2庫函數(shù)源代碼設計……………………………………………………… ……3</p><p> 4.3設計思想……………………………………………………………… …3</p><p>
3、; 4.4調試過程…………………………………………………… ………5</p><p> 4.5調試結果截圖…………………………………………………………… …6</p><p> 4.6程序代碼…………………………………………………………… …9</p><p> 5總結…………………………………………………………………15</p><p&
4、gt; 6 參考文獻…………………………………………………………………16</p><p><b> 字符串處理庫函數(shù)</b></p><p><b> 1.課程設計目的</b></p><p> 《C++程序設計》是我們軟件工程專業(yè)學子必學的一門基礎課程。這學期我們主要學習了這本書中《面向過程程序設計》部分。其目
5、的在于加深對面向過程程序設計中基礎理論和基本知識的理解,培養(yǎng)學生的實踐能力,促進理論與實踐的結合。通過課程設計,讓學生能夠熟練運用C++進行編程,建立模型,降低軟件的復雜性,改善軟件的重用性和維護性,提高軟件的生產效率,熟練掌握編程技術。</p><p> 通過課程設計,掌握程序設計語言開發(fā)工具Visual C++等;培養(yǎng)調查研究、查閱技術文獻、資料、手冊以及編寫技術文獻的能力;通過課程設計,要求學生在指導教師
6、的指導下,獨立完成實習課題的全部內容,包括:</p><p> 通過調查研究和上機實習,收集和調查有關技術資料。</p><p> 掌握設計課題的基本步驟和方法。</p><p> 根據(jù)課題的要求進行上機實驗調試。</p><p> 有良好的程序設計習慣,程序代碼簡潔明了,有一定的說明。</p><p> 設
7、計報告一定按老師規(guī)定的要求按時完成,頁面整潔。</p><p> 收集相關案例進行比較,取其精華之處。</p><p> 學習編程高手的編程思路和技巧,并運用到自己的設計中。</p><p><b> 2.任務要求</b></p><p> (1) 通過文獻資料查閱和學習,了解當前軟件設計技術和一般方法。&l
8、t;/p><p> (2) 參考和研究一些公司和高校/企業(yè)成功的軟件開發(fā)案例和實現(xiàn)方案,結合《C++程序設計》(上)以及相關課程中所學知識,積極完成設計任務。</p><p> (3) 認真完成需求分析,并根據(jù)需求分析完成各設計題目的總體設計、詳細設計和測試等環(huán)節(jié)的設計任務。</p><p> (4) 認真按時完成課程設計報告。</p>
9、<p> (5) 嚴格按照課程設計要求獨立完成。</p><p> (6) 遵守課程設計課堂紀律。</p><p> (7) 大膽思考,活躍思維,嚴密的邏輯,嚴謹?shù)乃悸贰?lt;/p><p><b> 3.設計方案</b></p><p> 字符串處理庫函數(shù)總體思路如下流程圖1—1所示:<
10、;/p><p><b> 4.設計內容</b></p><p> 4.1.層次(調用)關系如圖1—2所示:</p><p> 4.2.庫函數(shù)源代碼:</p><p> //"mystr.h"</p><p> int mystrlen(char* p)
11、 //實現(xiàn)1所對應的功能</p><p><b> {</b></p><p> int size = 0;</p><p> if(!p) return -1;</p><p><b> while(*p)</b></p><p><b> {</
12、b></p><p><b> size++;</b></p><p><b> p++;</b></p><p><b> }</b></p><p> return size;</p><p><b> }</b>
13、;</p><p> int mystrsam(char string1[],char string2[]) //實現(xiàn)2所對應的功能</p><p><b> {</b></p><p> int count=0;</p><p> for(int i=0;i<mystrlen
14、(string1);i++)</p><p> for(int j=0;j<mystrlen(string2);j++)</p><p><b> {</b></p><p> if(string1[i]==string2[j])</p><p><b> count++;</b>&l
15、t;/p><p><b> }</b></p><p> return count;</p><p><b> }</b></p><p> void mystrcpy(char string1[]) //實現(xiàn)3所對應的功能</p><p
16、><b> {</b></p><p><b> int i,j;</b></p><p> char string2[200];</p><p> for(i=0,j=0;i<mystrlen(string1);i++,j++)</p><p> string2[j]=str
17、ing1[i];</p><p> for(j=0;j<mystrlen(string1);j++)</p><p> cout<<string2[j];</p><p> cout<<endl;</p><p><b> }</b></p><p> vo
18、id mystrcat(char string1[],char string2[]) //實現(xiàn)4所對應的功能</p><p><b> {</b></p><p> for(int i=mystrlen(string1),j=0;i<(mystrlen(string1)+mystrlen(string2));i++,j++)
19、</p><p> string1[i]=string2[j];</p><p> for(int m=0;m<mystrlen(string1);m++)</p><p> cout<<string1[m];</p><p> cout<<endl;</p><p><b&
20、gt; }</b></p><p> void mystrstr(char string[]) //實現(xiàn)5所對應的功能</p><p><b> {</b></p><p> int n1,n2;</p><p> cout<<"請輸入指定位置:
21、"; </p><p><b> cin>>n1; </b></p><p> cout<<"請輸入輸出長度: "; </p><p><b> cin>>n2; </b></p><p> for(int i=0;n1<
22、;=0||n1>mystrlen(string)||n2>mystrlen(string);i++) </p><p><b> { </b></p><p> cout<<"輸入數(shù)據(jù)錯誤,請重新輸入 "<<endl; </p><p> cin>>n1>>n
23、2;</p><p><b> }</b></p><p> for(int j=n1;j<=n2;j++)</p><p> cout<<string[j-1];</p><p> cout<<endl;</p><p><b> }</b
24、></p><p> void mystrrev(char string[]) //實現(xiàn)6所對應的功能</p><p><b> {</b></p><p> cout<<"逆序數(shù)組順序為:"<<endl;</p><p> f
25、or(int j=mystrlen(string)-1;j>=0;j--)</p><p> cout<<string[j];</p><p> cout<<endl;</p><p><b> }</b></p><p><b> 4.3 設計思想</b>&l
26、t;/p><p> (1)根據(jù)字符串處理所需要的功能,將其按模塊劃分。</p><p> (2)編寫各各模塊對應的函數(shù),并進行調試。</p><p> (3)新建頭文件,提取自編函數(shù)放入新建頭文件中。</p><p> (4)再次調試程序,包含新建的頭文件。</p><p> (5)調試成功,保存。</p&
27、gt;<p><b> 4.4 調試過程:</b></p><p> (1)通過調試找到一種數(shù)據(jù)存儲到文件的方法,并且能夠通過正常數(shù)據(jù)、邊沿數(shù)據(jù)、非正常數(shù)據(jù)的測試。</p><p> (2)界面友好,有相關的功能提示,并且布局合理!</p><p> (3)成功通過編譯,保存相關設置,力求達到最好的效果,給程序閱讀者一目了
28、然的感覺。</p><p> 4.5 調試結果截圖:</p><p><b> (1)功能1測試;</b></p><p><b> ?。?)功能2測試;</b></p><p> ?。?)功能3的測試;</p><p> ?。?)功能4的測試;</p>&
29、lt;p> (5)功能5的測試;</p><p> ?。?)功能6的測試;</p><p><b> 4.6程序源代源</b></p><p> //mystr.cpp</p><p> #include <iostream.h> </p><p> #include
30、<stdio.h></p><p> #include"mystr.h" //包含自編的字符串處理庫函數(shù)</p><p> void main() </p><p><b> { </b></p><p> cout<<"|||
31、|****************|||||******************** ||||"<<endl;</p><p> cout<<"|||| ||字符處理函數(shù)功能|| ||||"<<endl;</p><p> cout<<"|||| 1.myst
32、rlen計算字符串的長度 ||||"<<endl;</p><p> cout<<"|||| 2.mystrsam兩個字符串的相同字符的個數(shù)統(tǒng)計 ||||"<<endl;</p><p> cout<<"|||| 3.mystrcpy將A字符串的所有字符復制給B |
33、|||"<<endl;</p><p> cout<<"|||| 4.mystrcat將A、B字符串合并為一個字符串 ||||"<<endl;</p><p> cout<<"|||| 5.mystrstr輸出字符串中所取位置所對應字符 ||||"<<endl;</p&
34、gt;<p> cout<<"|||| 6.mystrrev把字符串的所有字符的逆序輸出 ||||"<<endl; </p><p> cout<<"||||***************************************** ||||"<<endl; </p><p&g
35、t; char selection; </p><p><b> do </b></p><p><b> { </b></p><p> char option;</p><p> cout<<endl;</p><p> cout<<&
36、quot; -->>請選擇你要的功能: "; </p><p> cin>>option; </p><p> for(int i=0;option!='1'&&option!='2'&&option!='3'&&opt
37、ion!='4'&&option!='5'&&option!='6';i++) </p><p><b> { </b></p><p> cout<<" -->>錯誤的輸入,請重新輸入"<<endl
38、; </p><p> cin>>option; </p><p><b> }</b></p><p> char a[200],b[200]; </p><p> if(option=='1') </p><p><b> { </b>
39、;</p><p> cout<<" -->>請輸入字符串,限制為200個字符"<<endl; </p><p><b> gets(a); </b></p><p> cout<<"該字符串的長度為: "<<mystrl
40、en(a)<<endl; </p><p><b> } </b></p><p> else if(option=='2') </p><p><b> { </b></p><p> cout<<" -->>請
41、輸入字符串A,限制為200個字符"<<endl; </p><p><b> gets(a); </b></p><p> cout<<" -->>請輸入字符串B,限制為200個字符"<<endl; </p><p><b> gets
42、(b); </b></p><p> if(mystrsam(a,b)!=0) </p><p><b> {</b></p><p> cout<<"字符串A與B中共有"<<mystrsam(a,b)<<"個字符相同的"<<endl;&l
43、t;/p><p><b> } </b></p><p><b> else </b></p><p><b> {</b></p><p> cout<<"字符串A與B中沒有相等的字符"<<endl;</p>&l
44、t;p><b> } </b></p><p><b> }</b></p><p> else if(option=='3') </p><p><b> { </b></p><p> cout<<" -
45、->>請輸入字符串A,限制為200個字符"<<endl; </p><p><b> gets(a); </b></p><p> cout<<" -->>將A字符串的字符復制給B字符串為:"<<endl;</p><p> mystrc
46、py(a);</p><p><b> } </b></p><p> else if(option=='4') </p><p><b> { </b></p><p> cout<<" -->>請輸入字符串A,限制為200
47、個字符"<<endl; </p><p><b> gets(a); </b></p><p> cout<<" -->>請輸入字符串B,限制為200個字符"<<endl; </p><p><b> gets(b);</b>
48、;</p><p> cout<<"輸出后為:";</p><p> mystrcat(a,b);</p><p><b> } </b></p><p> else if(option=='5') </p><p><b> {
49、 </b></p><p> cout<<" -->>請輸入字符串A,限制為200個字符"<<endl; </p><p> gets(a); </p><p> mystrstr(a);</p><p><b> }</b>
50、</p><p> else if(option=='6') </p><p><b> { </b></p><p> cout<<" -->>請輸入字符串A,限制為200個字符"<<endl; </p><p><b&
51、gt; gets(a); </b></p><p> mystrrev(a);</p><p><b> } </b></p><p> cout<<endl;</p><p> cout<<" -->>是否繼續(xù)<
52、y||Y/其他>?"; </p><p> cin>>selection; </p><p><b> }</b></p><p> while(selection=='y'||selection=='Y'); </p><p><b> }&
53、lt;/b></p><p> //"mystr.h"</p><p> int mystrlen(char* p) //實現(xiàn)1所對應的功能</p><p><b> {</b></p><p> int size = 0;</p><p>
54、 if(!p) return -1;</p><p><b> while(*p)</b></p><p><b> {</b></p><p><b> size++;</b></p><p><b> p++;</b></p>&
55、lt;p><b> }</b></p><p> return size;</p><p><b> }</b></p><p> int mystrsam(char string1[],char string2[]) //實現(xiàn)2所對應的功能</p><p><b>
56、; {</b></p><p> int count=0;</p><p> for(int i=0;i<mystrlen(string1);i++)</p><p> for(int j=0;j<mystrlen(string2);j++)</p><p><b> {</b><
57、/p><p> if(string1[i]==string2[j])</p><p><b> count++;</b></p><p><b> }</b></p><p> return count;</p><p><b> }</b><
58、;/p><p> void mystrcpy(char string1[]) //實現(xiàn)3所對應的功能</p><p><b> {</b></p><p><b> int i,j;</b></p><p> char string2[200];</p>
59、<p> for(i=0,j=0;i<mystrlen(string1);i++,j++)</p><p> string2[j]=string1[i];</p><p> for(j=0;j<mystrlen(string1);j++)</p><p> cout<<string2[j];</p><
60、p> cout<<endl;</p><p><b> }</b></p><p> void mystrcat(char string1[],char string2[]) //實現(xiàn)4所對應的功能</p><p><b> {</b></p><p> for(
61、int i=mystrlen(string1),j=0;i<(mystrlen(string1)+mystrlen(string2));i++,j++)</p><p> string1[i]=string2[j];</p><p> for(int m=0;m<mystrlen(string1);m++)</p><p> cout<<
62、;string1[m];</p><p> cout<<endl;</p><p><b> }</b></p><p> void mystrstr(char string[]) //實現(xiàn)5所對應的功能</p><p><b> {</b><
63、/p><p> int n1,n2;</p><p> cout<<"請輸入指定位置: "; </p><p><b> cin>>n1; </b></p><p> cout<<"請輸入輸出長度: "; </p><p&
64、gt;<b> cin>>n2; </b></p><p> for(int i=0;n1<=0||n1>mystrlen(string)||n2>mystrlen(string);i++) </p><p><b> { </b></p><p> cout<<"
65、;輸入數(shù)據(jù)錯誤,請重新輸入 "<<endl; </p><p> cin>>n1>>n2;</p><p><b> }</b></p><p> for(int j=n1;j<=n2;j++)</p><p> cout<<string[j-1];
66、</p><p> cout<<endl;</p><p><b> }</b></p><p> void mystrrev(char string[]) //實現(xiàn)6所對應的功能</p><p><b> {</b></p>&
67、lt;p> cout<<"逆序數(shù)組順序為:"<<endl;</p><p> for(int j=mystrlen(string)-1;j>=0;j--)</p><p> cout<<string[j];</p><p> cout<<endl;</p><
68、p><b> }</b></p><p><b> 5.總結</b></p><p><b> ?。?)可取之處</b></p><p> 通過這次的課程設計:字符串處理庫函數(shù),更一步加深了我對程序編寫思路、技巧等等的熟練應用。尤其在自定義函數(shù)部分,通過大量的查閱資料,成功實現(xiàn)了字符串的相
69、關功能。在程序的調試部分通過對各個功能模塊的逐一調試,對正常數(shù)據(jù)、非正常數(shù)據(jù)、邊沿數(shù)據(jù)進行測試,對有問題的部分耐心的進行修改。一步一步使程序準確無誤。在界面的設計上盡量是界面讓人看起來一目了然,迅速看懂程序的相關作用。在代碼的書寫上善用Tab鍵對代碼進行縮進,添加相應的文字說明,是代碼的結構層次清晰明了,讓閱讀者看起來更加易懂和簡潔。在自定義的頭文件部分中的自編函數(shù)也是布局合理,讓人易懂!</p><p><
70、;b> (2)不足之處</b></p><p> 字符串處理庫函數(shù)對漢字的支持不夠好,例如在功能1、2、5、6中如果輸入的是漢字,那么程序則無法正確處理,而顯示為亂碼的情況!希望今后可以對代再次修改,力求使程序對我們國家的漢字支持達到完美。程序的設計上沒有使用面向對象設計方法,今后在熟練掌握了相面對象程序設計后我將會對此代碼進行再次修改,利用數(shù)據(jù)封裝的特性將程序更加完美!</p>
71、<p><b> 附錄:</b></p><p><b> 參考文獻</b></p><p> 1.《C++程序設計》 </p><p> 高等院校計算機應用技術規(guī)劃教材,譚浩強主編。</p><p> 2.《C++程序設計教程》</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- vc++課程設計報告
- vc++軟件課程設計報告
- vc++課程設計報告----對抗游戲
- vc++課程設計-- 餐飲管理系統(tǒng)
- vc++課程設計--工資管理
- vc++課程設計報告--對抗游戲
- vc++網絡聊天軟件課程設計
- vc++課程設計--工資管理
- vc++課設課程設計報告
- vc++課程設計報告---球員管理系統(tǒng)
- VC++課程設計--工資管理.doc
- vc++課程設計----用winsock實現(xiàn)聊天
- vc++課程設計《算術表達式》
- 同學錄系統(tǒng)vc++課程設計
- vc++課程設計實驗報告---對抗游戲
- vc++課程設計報告---橫向繪制余弦曲線
- vc++課程設計~大量例題供你學習
- vc++課程設計--基于mfc的模擬時鐘
- vc++俄羅斯方塊課程設計報告
- vc++課程設計---gpa計算器的設計
評論
0/150
提交評論