文本文件單詞的檢索與計(jì)數(shù)程序論文.doc_第1頁
文本文件單詞的檢索與計(jì)數(shù)程序論文.doc_第2頁
文本文件單詞的檢索與計(jì)數(shù)程序論文.doc_第3頁
文本文件單詞的檢索與計(jì)數(shù)程序論文.doc_第4頁
文本文件單詞的檢索與計(jì)數(shù)程序論文.doc_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計(jì)(數(shù)據(jù)結(jié)構(gòu))課程設(shè)計(jì)(數(shù)據(jù)結(jié)構(gòu))院、系院、系計(jì)算機(jī)與軟件學(xué)院專業(yè)專業(yè)網(wǎng)絡(luò)工程姓名姓名顧容宇徐鵬學(xué)號(hào)學(xué)號(hào)20091346087、20091346088指導(dǎo)教師指導(dǎo)教師鄭玉二一年二一年 十二月二十五日十二月二十五日- 1 -文本文件的檢索與計(jì)數(shù)顧容宇徐鵬南京信息工程大學(xué)計(jì)算機(jī)與軟件學(xué)院,南京 210044摘要:本程序主要圍繞的是文本文件單詞的檢索與計(jì)數(shù),正文包括:對文本文件單詞的檢索與計(jì)數(shù)程序的詳細(xì)要求,對程序的分析,勾畫程序思路及內(nèi)容的流程圖,主程序代碼,程序運(yùn)行后相關(guān)對應(yīng)要求的所有截圖,還有我們做完程序后的總結(jié)討論,以及我們在本次程序中的詳細(xì)分工。關(guān)鍵字:文本文件;單詞;計(jì)數(shù);菜單。1

2、課程設(shè)計(jì)題目要求編程建立一個(gè)文本文件,每個(gè)單詞不包含空格且不跨行,單詞由字符序列構(gòu)成且區(qū)分大小寫;統(tǒng)計(jì)給定單詞在文本文件中出現(xiàn)的總次數(shù);檢索輸出某個(gè)單詞出現(xiàn)在文本中的行號(hào)、在該行中出現(xiàn)的次數(shù)以及位置。該設(shè)計(jì)要求可分為三個(gè)部分實(shí)現(xiàn):其一,建立文本文件,文件名由用戶用鍵盤輸入;其二,給定單詞的計(jì)數(shù),輸入一個(gè)不含空格的單詞,統(tǒng)計(jì)輸出該單詞在文本中的出現(xiàn)次數(shù);其三,檢索給定單詞,輸入一個(gè)單詞,檢索并輸出該單詞所在的行號(hào)、該行中出現(xiàn)的次數(shù)以及在該行中的相應(yīng)位置。(1)建立文本文件(2)給定單詞的計(jì)數(shù)(3)檢索單詞出現(xiàn)在文本文件中的行號(hào)、次數(shù)及其位置(4)主控菜單程序的結(jié)構(gòu) 頭文件包含 菜單選項(xiàng)包含:建立

3、文件、單詞定位、單詞計(jì)數(shù)、退出程序 選擇 1-4 執(zhí)行相應(yīng)的操作,其他字符為非法。2分析21 建立文本文件建立文本文件的實(shí)現(xiàn)思路(1) 定義一個(gè)串變量(2) 定義文本文件(3) 輸入文件名,打開該文件(4) 循環(huán)讀入文本行,寫入文本文件,其過程如下:While(不是文件輸入結(jié)束)讀入一文本行至串變量;串變量寫入文件;輸入是否結(jié)束輸入標(biāo)志;- 2 -(5) 關(guān)閉文件2.2 給定單詞的計(jì)數(shù)該功能需要用到前一節(jié)中設(shè)計(jì)的模式匹配算法,逐行掃描文本文件。匹配一個(gè),計(jì)數(shù)器加 1,直到整個(gè)文件掃描結(jié)束;然后輸出單詞的次數(shù)。2.3 檢索單詞出現(xiàn)在文本文件中的行號(hào)、次數(shù)及其位置2.4 主控菜單程序的結(jié)構(gòu)(1)

4、頭文件包含(2) 菜單選擇包括:1、 建立文件2、 單詞計(jì)數(shù)3、 單詞定位4、 退出程序(3)選擇 14 執(zhí)行相應(yīng)的操作,其他字符為非法3步驟3.1 流程圖311 建立文本文件定義一個(gè)串變量 ,定義文本文件, 輸入文件名,打開該文件 , 循環(huán)讀入文本行,寫入文本文件,關(guān)閉文件 。- 3 - 4 -建立文本文件的思路過程312 給定單詞的計(jì)數(shù)逐行掃描文本文件。匹配一個(gè),計(jì)數(shù)器加 1,直到整個(gè)文件掃描結(jié)束;然后輸出單詞的次數(shù)。- 5 - 6 -給定單詞計(jì)數(shù)的過程313 檢索單詞出現(xiàn)在文本文件中的行號(hào)、次數(shù)及其位置逐行掃描文本文件。掃描一個(gè)單詞,單詞數(shù)加 1,匹配一個(gè),計(jì)數(shù)器加 1,輸出該單詞數(shù),行

5、數(shù)到底以此,行數(shù)加 1,單詞數(shù)清零,直到整個(gè)文件掃描結(jié)束;然后輸出單詞的次數(shù),行號(hào),第幾個(gè)單詞。- 7 - 8 -檢索單詞的出現(xiàn)在文本文件中的行號(hào),次數(shù)以及位置3.2 主代碼#include#include#include#define MaxStrSize 256 /根據(jù)用戶需要自己定義大小using namespace std;typedef struct char chMaxStrSize; /ch 是一個(gè)可容納 256 個(gè)字符的字符數(shù)組int length; SString;/定義順序串類型int PartPosition (SString s1,SString s2,int k)in

6、t i,j;i=k-1;/掃描 s1 的下標(biāo),因?yàn)?c 中數(shù)組下標(biāo)是從 0 開始,串中序號(hào)相差 1j=0;/掃描 s2 的開始下標(biāo)while(is1.length & j=s2.length)return i-s2.length;elsereturn -1;/表示 s1 中不存在 s2,返回-1/表示 s1 中存在 s2,返回其起始位置 /函數(shù)結(jié)束void CreatTextFile()SString S;char fname10,yn;FILE *fp;printf(輸入要建立的文件名:);scanf(%s,fname);fp=fopen(fname,w);yn=n;/輸入結(jié)束標(biāo)志初

7、值while(yn=n|yn=N)printf( 請 輸 入 一 行 文 本 :);gets(S.ch);gets(S.ch);S.length=strlen(S.ch);- 9 -fwrite(&S,S.length,1,fp);fprintf(fp,%c,10);/是輸入換行printf(結(jié)束輸入嗎?y or n :);yn=getchar();fclose(fp);/關(guān)閉文件printf(建立文件結(jié)束!);void SubStrCount()FILE *fp;SString S,T;/定義兩個(gè)串變量char fname10;int i=0,j,k;printf(輸入文本文件名:)

8、;scanf(%s,fname);fp=fopen(fname,r);printf(輸入要統(tǒng)計(jì)計(jì)數(shù)的單詞:);cinT.ch;T.length=strlen(T.ch);while(!feof(fp)/掃描整個(gè)文本文件/ fread(&S.ch,1,sizeof(S),fp);/讀入一行文本memset(S.ch,0,256);fgets(S.ch,100,fp);S.length=strlen(S.ch);k=0; /初始化開始檢索位置while(kS.length-1) /檢索整個(gè)主串 Sj=PartPosition(S,T,k);/調(diào)用串匹配函數(shù)if(j0 ) break;els

9、e i+;/單詞計(jì)數(shù)器加 1k=j+T.length;/繼續(xù)下一字串的檢索printf(n 單詞%s 在文本文件%s 中共出現(xiàn)%d 次n,T.ch,fname,i);/統(tǒng)計(jì)單詞出現(xiàn)的個(gè)數(shù)void SubStrInd()FILE *fp;SString S,T; /定義兩個(gè)串變量char fname10;int i,j,k,l,m;- 10 -int wz20; /存放一行中字串匹配的多個(gè)位置printf(輸入文本文件名:);scanf(%s,fname);fp=fopen(fname,r);printf(輸入要檢索的單詞:);scanf(%s,T.ch);T.length=strlen(T.c

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

11、d,wzm+1);printf(n);/檢索單詞出現(xiàn)在文本文件中的行號(hào)、次數(shù)及其位置int main()void CreatTextFile(),SubStrCount(),SubStrInd();int xz;do printf(* * * * * * * * * * * * * * * * * * * * * * * * *n);printf(* 文 本 文 件 的 檢 索 、 字 串 的 統(tǒng) 計(jì) 及 定位*n);printf(* * * * * * * * * * * * * * * * * * * * * * * * *n);printf(*1.建 立文 本 文- 11 -件*n);p

12、rintf(*2.單 詞 字 串 的 計(jì)數(shù)*n);printf(*3.單 詞 字 串 的 定位*n);printf(*4.退 出 整 個(gè) 程序*n);printf(* * * * * * * * * * * * * * * * * * * * * * * *n);printf(請選擇(1-4);scanf(%d,&xz);switch(xz) case 1 : CreatTextFile();break;case 2 : SubStrCount();break;case 3 : SubStrInd();break;case 4 : return 0;default:printf(選擇錯(cuò)

13、誤,重新選 n);while(1);3.3 實(shí)現(xiàn)截圖331 未輸入文件前的頁面- 12 -332 輸入文本文件,計(jì)數(shù)單詞出現(xiàn)的次數(shù)- 13 -333 檢索某單詞的行號(hào),出現(xiàn)次數(shù),以及位置- 14 -4總結(jié)討論經(jīng)過一周的奮斗,這次數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì)終于做完了。通過這次設(shè)計(jì)我們也著實(shí)又感受了一次編程的樂趣,從中也學(xué)到了不少知識(shí)。感受最深的一點(diǎn)是:以前用編程,只是注重如何編寫函數(shù)能夠完成所需要的功能,似乎沒有明確的戰(zhàn)術(shù),只是憑單純的意識(shí)和簡單的語句來堆砌出一段程序?,F(xiàn)在編程感覺完全不同了。在編寫一個(gè)程序之前,先對這個(gè)課程設(shè)計(jì)進(jìn)行了一下分析,將每個(gè)要求都花了一下算法流程圖,使得自己的思路更加的清晰了

14、。 然后進(jìn)行編程,不斷的在電腦上調(diào)試程序,終- 15 -于完成了此次的課程設(shè)計(jì)。另外,我還體會(huì)到深刻理解數(shù)據(jù)結(jié)構(gòu)的重要性。只有真正理解這樣定義數(shù)據(jù)類型的好處,才能用好這樣一種數(shù)據(jù)結(jié)構(gòu)。了解典型數(shù)據(jù)結(jié)構(gòu)的性質(zhì)是非常有用的,它往往是編寫程序的關(guān)鍵。通過這次課程設(shè)計(jì)逐漸提高了自己的程序設(shè)計(jì)和調(diào)試能力,我以前對算法一直很害怕,總是看不明白究竟這程序中間的過程是怎么進(jìn)行的。在這次實(shí)驗(yàn)中我終于克服了這一障礙,一遍遍在心中自己默默的走,終于弄明白了,真的是功夫不負(fù)有心人?。∵@次試驗(yàn)也讓我看到了自己的不足,還是不太用模板類。還有許多關(guān)于 C+的一些比較具體的東西還不太懂,比方說指針。這次試驗(yàn)還讓我們意識(shí)到只有不斷的在電腦上調(diào)試程序,自己的水平才能得到提高。我會(huì)繼續(xù)我們的興趣編寫程序的,相信在越來越多的嘗試之后,自己會(huì)不斷進(jìn)步和提高。在此我要感謝鄭玉老師在數(shù)據(jù)結(jié)構(gòu)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論