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