316黃宏亮327騰文本文件單詞的檢索與計數(shù)_第1頁
316黃宏亮327騰文本文件單詞的檢索與計數(shù)_第2頁
316黃宏亮327騰文本文件單詞的檢索與計數(shù)_第3頁
316黃宏亮327騰文本文件單詞的檢索與計數(shù)_第4頁
316黃宏亮327騰文本文件單詞的檢索與計數(shù)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、具體任務(wù)安排2軟件開發(fā)環(huán)境2算法設(shè)計及流程圖3源代碼6運行結(jié)果9收獲及體會10參考文獻11一二三四五六七一具體任務(wù)安排工作進度表組員分工二軟件開發(fā)環(huán)境Visual C+ 6.0Windows XPWindows 7201235020316 黃宏亮(組長)201235020327騰2012350203041、 設(shè)計并編寫界面部分代碼;2、 算法分析與設(shè)計;3、 和隊友共同并優(yōu)化;1、編寫代碼2、 和隊友共同并優(yōu)化;3、 畫算法的程序流程圖;1、 編寫課程設(shè)計和心得體會;2、 畫程序流程圖3、 測試時間完成工作完成人周四上午完成課程設(shè)計的需求分析,畫程序流程圖黃宏亮、騰、陳健棟周四下午設(shè)計并編寫程

2、序代碼黃宏亮、騰、陳健棟周五上午測試代碼并由問題優(yōu)化代碼黃宏亮、騰、陳健棟周五下午編寫課程設(shè)計和心得體會黃宏亮、騰、陳健棟三算法設(shè)計及流程圖1、 定義一個串變量、文本文件,輸入文件名,打開該文件,循環(huán)讀入文本行,寫入文本文件,關(guān)閉該文件。開始While 以#號結(jié)束結(jié)束關(guān)閉文件文件輸入結(jié)束NY循環(huán)讀入文本行,寫入文件輸入文件名,打開該文件定義文本 文件定義一個 串變量2、 逐行掃描文本文件。匹配一個,計數(shù)器加 1,直到整個文件掃描結(jié)束;然后輸出單詞的次數(shù)。結(jié)束開始If 第N 個單詞與所給單詞相同If N=M結(jié)束3、 逐行掃描文本文件。掃描一個單詞,單詞數(shù)加 1,匹配一個,計數(shù)器加 1,輸出該單詞

3、數(shù),行數(shù)到底以此,行數(shù)加 1,單詞數(shù)清零,直到整個文件掃描結(jié)束;然后輸出單詞的次數(shù),行號,第幾個單詞。輸出S 及其單詞的計數(shù)NYS=S+1N=N+1YN掃描第N 個單詞給定一個單詞定義 N=1,S=0 一個給了M 個單詞開始If 第 N 個單詞與所給單詞相同NIf N=XIf L=YN結(jié)束L=L+1YI=0N=1輸出I輸出LNYN=N+1I=I+1輸出NY掃描第L 行第N 個單詞輸入要檢索的單詞定義L=1,I=0,N=1L 為行數(shù),I 為次數(shù),N 為第幾個單詞假設(shè)一共X 行,每行 Y 個單詞輸入文本文件名四 源代碼#include #include #include#define MaxStr

4、Size 256 /數(shù)組最大界限 256 using namespatd;typedef struct charaxStrSize; /ch 是一個可容納 256 個字符的字符數(shù)組length;/字符串長度 SString;/定義順序串類型void CreatTextFile()/建立文件SString S;char tmpMaxStrSize; char fname10,yn;z;i=0;FILE *fp;/定義文件類型的指針 pr f(輸入要建立的文件名:); scanf(%s,fname); fp=fopen(fname,w);/ yn=n;/輸入結(jié)束標志初值pr f(請輸入文本(以#號

5、結(jié)束):n);while(yn!=#)gets(S.ch);/文本輸入/gets(S.ch);S.length=strlen(S.ch);/計算長度 if(S.chS.length-1!=#)S.chS.length-1 = ;elseS.chS.length-1 = ;S.chS.length = #;S.chS.length+1 = 0;strcpy(tmp, S.ch); S.ch0= ;S.ch1=0;strcat(S.ch, tmp); S.length=strlen(S.ch);fwrite(&S,S.length,1,fp);/寫數(shù)據(jù)到文件/ S.chS.lengthfpr f(

6、fp,%c,10);/是輸入換行yn=S.chS.length-1;fclose(fp);/關(guān)閉文件pr f(建立文件結(jié)束!n);Parti,j;ition (SString s1,SString s2,k)/對文本的掃描i=k-1;/掃描s1 的下標,因為c 中數(shù)組下標是從 0 開始,串中序號相差 1 j=0;/掃描s2 的開始下標while(is1.length & j=s2.length) return i-s2.length;elsereturn -1;/表示s1 中不存在s2,返回-1/表示 s1 中存在s2,返回其起始位置void SubStrCount()/統(tǒng)計單詞出現(xiàn)的個數(shù)FI

7、LE *fp;/定義一個文件類型的指針 SString S,T;/定義兩個串變量char fname10; i=0,j,k,z;pr f(輸入文本文件名:);scanf(%s,fname); if(!(fp=fopen(fname,r)/判斷文件是否存在pr f(沒有該文件哦親!請重新選擇!);return;pr f(輸入要統(tǒng)計計數(shù)的單詞:); cinT.ch;/輸入單詞 for(z=strlen(T.ch);z!=-1;z-)T.chz+1 = T.chz;z=strlen(T.ch);T.chz= ;T.chz+1=0;T.ch0= ;T.length=strlen(T.ch);while

8、(!feof(fp)/掃描整個文本文件memset(S.ch,0,256); fgets(S.ch,100,fp); / S.length=strlen(S.ch);文本數(shù)據(jù)k=0; /初始化開始檢索位置 while(kS.length-1) /檢索整個主串Sj=Partition(S,T,k);/調(diào)用串匹配函數(shù)if(j0 ) break; else i+;/單詞計數(shù)器加 1 k=j+T.length;/繼續(xù)下一字串的檢索prf(n 單詞%s 在文本文件%s出現(xiàn)%d 次n,T.ch,fname,i);void SubStrInd()/檢索單詞出現(xiàn)在文本文件中的行號、次數(shù)及其位置FILE *fp

9、;SString S,T; /定義兩個串變量char fname10;char tmp; i,j,k,l,m,p=0;z;wz20; /存放一行中字串匹配的多個位置 pr f(輸入文本文件名:);scanf(%s,fname); if(!(fp=fopen(fname,r)/判斷文件是否存在pr f(沒有該文件哦親!請重新選擇!);return;pr f(輸入要檢索的單詞:); scanf(%s,T.ch);for(z=strlen(T.ch);z!=-1;z-) T.chz+1 = T.chz;z=strlen(T.ch);T.chz= ;T.chz+1=0;T.ch0= ;T.length

10、=strlen(T.ch); l=0; /行計數(shù)器置 0while(!feof(fp) /掃描整個文本文件/fread(&S,sizeof(S),1,fp);/讀入一行文本 memset(S.ch,0,256); fgets(S.ch,256,fp); /文本數(shù)據(jù) S.length=strlen(S.ch);l+; /行計數(shù)器自增 1 k=0;/初始化開始檢索位置 i=0; /初始化單詞計數(shù)器while(kS.length-1) /檢索整個主串Sj=Partition(S,T,k); /調(diào)用串匹配函數(shù)if(j0)p=i;pr f(行號:%d,次數(shù):%d,在該行的位置為:,l-1,i); for

11、(m=1;m=i;m+) pr f(%4d,wzm+1); pr f(n);if(p=0) pr f(親,沒有找到您要的單詞哦!);main()void CreatTextFile(),SubStrCount(),SubStrInd(); xz;char s;pr f( n);pr f(pr f(n);n);while(1) pr f(n);pr pr pr pr pr pr prf( * * * * * * * * * * * * * * * * * * * * * * * *n);f(f(f(f(n);n);n);n);f( n);f(請選擇(14):);while(scanf(%d,&x

12、z)=0)五 運行結(jié)果scanf(%s,&s); break;switch(xz) case 1 : CreatTextFile();break; case 2 : SubStrCount();break; case 3 : SubStrInd();break; case 4 : return 0;default:pr f(親的選擇有錯誤哦,請重新選擇!n);六 收獲及體會黃宏亮:兩天的課程設(shè)計結(jié)束了,在這次課程設(shè)計中不僅檢驗了我所學(xué)習(xí)的知識,也培養(yǎng)了的團隊合作。在設(shè)計過程中,與同學(xué)分工設(shè)計,和相互探討,相互學(xué)習(xí)。課程設(shè)計是專業(yè)課程知識綜合應(yīng)用的實踐訓(xùn)練,這是從事職業(yè)工作前一個必不少的過程,認

13、真的進行課程設(shè)計,為以后的工作打下了堅實的基礎(chǔ)。在這次課程設(shè)計中,選的是“文本文件單詞的檢索與計數(shù)”。雖然是比較簡單的設(shè)計,但是如果沒有團隊的合作,一個人也是很耗時間的。經(jīng)過算法分析與設(shè)計,編寫程序代碼,測試并優(yōu)化代碼,完成了這次的設(shè)計內(nèi)容,雖然也不是一帆風(fēng)順,遇到了一些問題,在經(jīng)過和合作伙伴一起探討會了很多。后才解決了??傊谶@次的課程設(shè)計中收獲很大,學(xué)騰:兩天的課程設(shè)計即將結(jié)束,這兩天的課程設(shè)計也使我對數(shù)據(jù)結(jié)構(gòu)這門課程有了更深的理解,當(dāng)然令我感悟更深的是“編程”。通過這次的課程設(shè)計,我親身感受到了編程的樂趣,自己的程序運行成功時的那種心情,也讓我明白了對于編程,以后我該學(xué)什么,該做什么。

14、在這次課程設(shè)計過程中,我和組員們通過算法分析與設(shè)計編寫具體的實驗代碼,共同討論并優(yōu)化,當(dāng)然,在這其中也遇到了許多小問題,但經(jīng)過我和組員們共同探討下,解決了包括“程序”,“找不到數(shù)據(jù)沒有提示”等小問題。在本次課程設(shè)計中,我明白了理論與實踐應(yīng)用相結(jié)合的重要性,并提高了自己組織數(shù)據(jù)及編寫程序的能力,培養(yǎng)了基本的、良好的程序設(shè)計技能以及合作能力,同時,也認識到了自己的不足之處,希望能有更大的進步。:這次課程設(shè)計,我有很大收獲和體會。小組做的是“文本文件單詞的檢索與計數(shù)”,首先要建立文本文件的實現(xiàn)思路,然后讀入一文本行至串變量,串變量寫入文件。再做給定單詞的計數(shù),檢索單詞出現(xiàn)在文本文件中的行號、次數(shù)及其位置,主控菜單程序的結(jié)構(gòu),最后經(jīng)過小組 3 個人的共同努力,終于把這個課程設(shè)計完成了。在完成后,遇到了,原來輸錯

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論