版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 成績(jī): __________</p><p> 課程設(shè)計(jì)(數(shù)據(jù)結(jié)構(gòu))</p><p> 院、系 計(jì)算機(jī)與軟件學(xué)院專業(yè) 軟件工程 </p><p> 二零一二 年 十二 月二十五日</p><p> 文本文件單詞的檢索與計(jì)數(shù)</p><p> 摘要:本程序的功能是進(jìn)行文本文件單詞的檢索
2、與計(jì)數(shù),報(bào)告正文包括:對(duì)文本文件單詞的檢索與計(jì)數(shù)程序的題目的闡述以及詳細(xì)要求、對(duì)程序步驟的分析、程序代碼、程序運(yùn)行后相關(guān)對(duì)應(yīng)要求的所有截圖等。另外,還有我做完課程設(shè)計(jì)后的總結(jié)。</p><p> 關(guān)鍵詞:文本文件、單詞、計(jì)數(shù)、主菜單</p><p><b> 1.課程設(shè)計(jì)題目</b></p><p> 編程建立一個(gè)文本文件,每個(gè)單詞不包含
3、空格且不跨行,單詞由字符序列構(gòu)成且區(qū)分大小寫;統(tǒng)計(jì)給定單詞在文本文件中出現(xiàn)的總次數(shù);檢索輸出某個(gè)單詞出現(xiàn)在文本中的行號(hào)、在該行中出現(xiàn)的次數(shù)以及位置。具體要求如下:</p><p> 1.1 建立文本文件,文件名由用戶用鍵盤輸入;</p><p> 1.2給定單詞的計(jì)數(shù),輸入一個(gè)不含空格的單詞,統(tǒng)計(jì)輸出該單詞在文本中的出現(xiàn)次數(shù);</p><p> 1.3檢索給定
4、單詞,輸入一個(gè)單詞,檢索并輸出該單詞所在的行號(hào)、該行中出現(xiàn)的次數(shù)以及在該行中的相應(yīng)位置。</p><p><b> ?。?)建立文本文件</b></p><p> ?。?)對(duì)給定單詞的計(jì)數(shù)</p><p> ?。?)檢索單詞出現(xiàn)在文本文件中的行號(hào)、次數(shù)及其位置</p><p> (4)主控菜單程序的結(jié)構(gòu)</p&g
5、t;<p><b> ?、?頭文件包含</b></p><p><b> ② 菜單選項(xiàng)包含</b></p><p> 建立文件、單詞定位、單詞計(jì)數(shù)、退出程序</p><p> ?、?選擇1-4執(zhí)行相應(yīng)的操作,其他字符為非法。</p><p> 2.對(duì)程序步驟的分析</p&g
6、t;<p><b> 2.1建立文本文件</b></p><p> 建立文本文件算法的實(shí)現(xiàn)思路:</p><p> ?。?) 定義一個(gè)串變量</p><p> ?。?) 定義文本文件</p><p> ?。?) 輸入文件名,打開該文件</p><p> ?。?) 循環(huán)讀入文本行,
7、寫入文本文件,其過(guò)程如下:</p><p> While(不是,則文件輸入結(jié)束){ </p><p> 讀入一文本行至串變量;</p><p><b> 串變量寫入文件;</b></p><p> 輸入是否結(jié)束輸入標(biāo)志;</p><p><b> } </b><
8、;/p><p><b> (5) 關(guān)閉文件</b></p><p> 2.2給定單詞的計(jì)數(shù)</p><p> 該功能的實(shí)現(xiàn)需要用到前面部分設(shè)計(jì)的模式匹配算法,逐行掃描文本文件。每匹配一個(gè),計(jì)數(shù)器加1,直到整個(gè)文件掃描結(jié)束,然后輸出單詞的次數(shù)。其過(guò)程如下:</p><p> while(!feof(fp))</p
9、><p><b> { </b></p><p> // fread(&S.ch,1,sizeof(S),fp);//讀入一行文本</p><p> memset(S.ch,'\0',256);</p><p> fgets(S.ch,100,fp); </p><p&g
10、t; S.length=strlen(S.ch);</p><p><b> k=0; </b></p><p> while(k<S.length-1) </p><p><b> {</b></p><p> j=PartPosition(S,T,k);</p>&
11、lt;p> if(j<0 ) break;</p><p><b> else</b></p><p><b> {</b></p><p><b> i++;</b></p><p> k=j+T.length;</p><p>
12、<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 2.3檢索單詞出現(xiàn)在文本文件中的行號(hào)、次數(shù)及其位置</p><p> 該部分功能實(shí)現(xiàn)步驟如下:</p><p> while(
13、k<S.length-1) </p><p><b> {</b></p><p> j=PartPosition(S,T,k); </p><p> if(j<0) break;</p><p><b> else {</b></p><p><b
14、> i++;</b></p><p><b> wz[i]=j;</b></p><p> k=j+T.length;</p><p><b> }</b></p><p><b> }</b></p><p> 2.4主控
15、菜單程序的結(jié)構(gòu)</p><p> ?。?) 頭文件包含 </p><p> ?。?) 菜單選擇包括:</p><p><b> 1、 建立文件</b></p><p><b> 2、 單詞計(jì)數(shù)</b></p><p><b> 3、 單詞定位</b>
16、;</p><p><b> 4、 退出程序</b></p><p> ?。?)選擇1~4執(zhí)行相應(yīng)的操作,其他字符為非法。</p><p><b> 3.程序源代碼</b></p><p> #include<stdio.h></p><p> #incl
17、ude<string.h></p><p> #include<iostream></p><p> #define MaxStrSize 256 </p><p> using namespace std;</p><p> typedef struct {</p><p> cha
18、r ch[MaxStrSize]; </p><p> int length;</p><p> } SString;</p><p> int PartPosition (SString s1,SString s2,int k)</p><p><b> { </b></p><p>
19、;<b> int i,j;</b></p><p><b> i=k-1;</b></p><p><b> j=0;</b></p><p> while(i<s1.length && j<s2.length)</p><p><b
20、> {</b></p><p> if(s1.ch[i]==s2.ch[j])</p><p><b> { </b></p><p><b> i++;j++; </b></p><p><b> }</b></p><p>
21、;<b> else</b></p><p><b> {</b></p><p> i=i-j+1; j=0;</p><p><b> } </b></p><p><b> }</b></p><p> if (j
22、>=s2.length)</p><p> return i-s2.length;</p><p><b> else</b></p><p> return -1;</p><p><b> }</b></p><p> void CreatTextFile
23、()</p><p><b> {</b></p><p> SString S;</p><p> char fname[10],yn;</p><p><b> FILE *fp;</b></p><p> printf("輸入要建立的文件名:&quo
24、t;);</p><p> scanf("%s",fname);</p><p> fp=fopen(fname,"w");</p><p><b> yn='n';</b></p><p> while(yn=='n'||yn=='
25、N')</p><p><b> {</b></p><p> printf("請(qǐng)輸入一行文本:");gets(S.ch);gets(S.ch);</p><p> S.length=strlen(S.ch);</p><p> fwrite(&S,S.length,1,fp)
26、;</p><p> fprintf(fp,"%c",10);</p><p> printf("結(jié)束輸入嗎?y or n :");yn=getchar();</p><p><b> }</b></p><p> fclose(fp);</p><p&
27、gt; printf("建立文件結(jié)束!");</p><p><b> }</b></p><p> void SubStrCount()</p><p><b> {</b></p><p><b> FILE *fp;</b></p>
28、;<p> SString S,T;</p><p> char fname[10];</p><p> int i=0,j,k;</p><p> printf("輸入文本文件名:");</p><p> scanf("%s",fname);</p><p&
29、gt; fp=fopen(fname,"r");</p><p> printf("輸入要統(tǒng)計(jì)計(jì)數(shù)的單詞:");</p><p> cin>>T.ch;</p><p> T.length=strlen(T.ch);</p><p> while(!feof(fp))</p&
30、gt;<p><b> { </b></p><p> // fread(&S.ch,1,sizeof(S),fp);//讀入一行文本</p><p> memset(S.ch,'\0',256);</p><p> fgets(S.ch,100,fp); </p><p&g
31、t; S.length=strlen(S.ch);</p><p><b> k=0; </b></p><p> while(k<S.length-1) </p><p><b> {</b></p><p> j=PartPosition(S,T,k);</p>&
32、lt;p> if(j<0 ) break;</p><p><b> else</b></p><p><b> {</b></p><p><b> i++;</b></p><p> k=j+T.length;</p><p>
33、<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> printf("\n單詞%s在文本文件%s中共出現(xiàn)%d次\n",T.ch,fname,i);</p><p><b> }
34、</b></p><p> void SubStrInd()</p><p><b> { </b></p><p><b> FILE *fp;</b></p><p> SString S,T;</p><p> char fname[10];&
35、lt;/p><p> int i,j,k,l,m;</p><p> int wz[20]; </p><p> printf("輸入文本文件名:");</p><p> scanf("%s",fname);</p><p> fp=fopen(fname,"r&
36、quot;);</p><p> printf("輸入要檢索的單詞:");</p><p> scanf("%s",T.ch);</p><p> T.length=strlen(T.ch);</p><p><b> l=0;</b></p><p&g
37、t; while(!feof(fp)) </p><p><b> { </b></p><p> //fread(&S,sizeof(S),1,fp); //讀入一行文本</p><p> memset(S.ch,'\0',256);</p><p> fgets(S.ch,256
38、,fp); </p><p> S.length=strlen(S.ch);</p><p><b> l++;</b></p><p><b> k=0;</b></p><p><b> i=0;</b></p><p> while(k&
39、lt;S.length-1) </p><p><b> {</b></p><p> j=PartPosition(S,T,k); </p><p> if(j<0) break;</p><p><b> else {</b></p><p><b&g
40、t; i++;</b></p><p><b> wz[i]=j;</b></p><p> k=j+T.length;</p><p><b> }</b></p><p><b> }</b></p><p><b>
41、 if(i>0){</b></p><p> printf("行號(hào):%d,次數(shù):%d,位置分別為:",l,i);</p><p> for(m=1;m<=i;m++) printf("%4d",wz[m]+1); printf("\n");</p><p><b>
42、 }</b></p><p><b> }</b></p><p><b> }</b></p><p> int main()</p><p> {void CreatTextFile(),SubStrCount(),SubStrInd();</p><p&
43、gt;<b> int xz;</b></p><p><b> do {</b></p><p> printf("**********************************************************\n");</p><p> printf("***
44、***** 文本文件的檢索、字串的統(tǒng)計(jì)及定位 ***********\n");</p><p> printf("**********************************************************\n");</p><p> printf("*******|| 1. 建立文本文件
45、 ||********\n");</p><p> printf("*******|| 2. 單詞字串的計(jì)數(shù) ||********\n");</p><p> printf("*******|| 3. 單詞字串的定位 ||********\n&qu
46、ot;);</p><p> printf("*******|| 4. 退出整個(gè)程序 ||********\n");</p><p> printf("**********************************************************\n"); <
47、;/p><p> printf(" 請(qǐng)選擇(1--4) \n");</p><p> scanf("%d",&xz);</p><p> switch(xz) {</p><p> case 1 : Cr
48、eatTextFile();break;</p><p> case 2 : SubStrCount();break;</p><p> case 3 : SubStrInd();break;</p><p> case 4 : return 0;</p><p> default:printf("選擇錯(cuò)誤,重新選 \n&q
49、uot;);</p><p><b> }</b></p><p> }while(1);</p><p><b> }</b></p><p><b> 4.實(shí)現(xiàn)截圖</b></p><p> 4.1未輸入文件前的頁(yè)面</p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 文本文件存取技巧
- 課程設(shè)計(jì)--實(shí)驗(yàn)報(bào)告相鄰數(shù)對(duì)isbn識(shí)別碼文本文件單詞統(tǒng)計(jì)送貨
- 補(bǔ)充聽力(六)——補(bǔ)充聽力(十)文本文件
- 使用文本文件進(jìn)行數(shù)據(jù)存取的技巧總結(jié)
- 借款合同文本文件(英文版)
- 王長(zhǎng)喜6級(jí)聽力原文及答案解析文本文件
- 將PDF文本文件導(dǎo)入SQL數(shù)據(jù)庫(kù).pdf
- 標(biāo)準(zhǔn)聽力(六)——標(biāo)準(zhǔn)聽力(十)試題及解析文本文件
- 數(shù)據(jù)空間內(nèi)基于內(nèi)容的文本文件管理策略研究.pdf
- 文本文件內(nèi)容修復(fù)系統(tǒng)的技術(shù)研究及系統(tǒng)實(shí)現(xiàn).pdf
- java課程設(shè)計(jì)文本文檔的加密與解密
- 補(bǔ)充聽力(一)—— 補(bǔ)充聽力(十)聽力原文及答案解析文本文件
- 定時(shí)與計(jì)數(shù)演示燈課程設(shè)計(jì)
- “萬(wàn)能數(shù)據(jù)庫(kù)查詢分析器”使用sql語(yǔ)句直接高效地訪問(wèn)文本文件
- 課程設(shè)計(jì)數(shù)字鐘
- dsp課程設(shè)計(jì)數(shù)字時(shí)鐘
- c語(yǔ)言課程設(shè)計(jì)數(shù)據(jù)的加密與解密
- 課程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(八皇后問(wèn)題)
- 信息檢索綜合課程設(shè)計(jì) 課程介紹
- 課程設(shè)計(jì)--8位計(jì)數(shù)器eda課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論