版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1滁滁州州學學院院課課程程設設計計報報告告課程名稱課程名稱: 數據結構 設計題目設計題目: 文本文件單詞的檢索 系系 別:別: 網絡與通信工程系 專專 業(yè)業(yè): 網絡工程 組組 別別: 起止日期起止日期: 2012 年 6 月 14 日 2012 年 6 月 21 日 指導教師指導教師: 計算機與信息工程學院二一二年制2目錄1 1 引引言言.42 2 分分析析.42.1 建立文本文件 建立文本文件的實現思路.42.2 給定單詞的計數.42.3 檢索單詞出現在文本文件中的行號、次數及其位置.42.4 主控菜單程序的結構.43 3 詳詳細細分分析析.53.1 流程圖.5311 建立文本文件 .531
2、2 給定單詞的計數 .63.2 程序的實現.83,2.1 預編命令,定義結構體和全局變量 .93.2.2 建立文本文件 .93.2.3 檢索某單詞的行號,出現次數,以及位置 .103.2.4 菜單函數 .113.2.4 退出整個程序 .123.2.5 主體函數 .124 4 調調試試與與操操作作說說明明.124.1 開始界面 如圖 4-1 所示.134.2 輸入文本文件,計數單詞出現的次數。如圖 4-2 所示.1343 檢索某單詞的行號,出現次數,以及位置。如圖 4-3,4-4 所示.135 5 總總結結討討論論.146 6 致致謝謝.157 7 參參考考文文獻獻.1531 引言本程序主要圍繞
3、的是文本文件單詞的檢索與計數,正文包括:對文本文件單詞的檢索與計數程序的詳細要求,對程序的分析,勾畫程序思路及內容的流程圖,主程序代碼,程序運行后相對應要求的所有截圖,還有我們做完程序后的總結討論,以及我們在本次程序中的詳細分工。2 分析 2.1 建立文本文件 建立文本文件的實現思路 (1) 定義一個串變量 (2) 定義文本文件 (3) 輸入文件名,打開該文件 (4) 循環(huán)讀入文本行,寫入文本文件,其過程如下: While(不是文件輸入結束) 讀入一文本行至串變量; 串變量寫入文件; 輸入是否結束輸入標志; (5) 關閉文件 2.2 給定單詞的計數 該功能需要用到前一節(jié)中設計的模式匹配算法,逐
4、行掃描文本文件。匹配一個,計數器加 1,直到整個文件掃描結束;然后輸出單詞的次數。 2.3 檢索單詞出現在文本文件中的行號、次數及其位置 2.4 主控菜單程序的結構 (1) 頭文件包含 (2) 菜單選擇包括: 1、 建立文件 2、 單詞計數 3、 單詞定位 4、 退出程序 (3)選擇 14 執(zhí)行相應的操作,其他字符為非法3 3 詳細分析詳細分析3.1 流程圖311 建立文本文件定義一個串變量 ,定義文本文件, 輸入文件名,打開該文件 , 循環(huán)讀入文本行,寫入文件。如圖 3-1 所示4定義一個串變量 定義文本文件 輸入文件名,打開該文件 循環(huán)讀入文本行,寫入文本文件關閉文件While是文本文件
5、讀入一文本行至串變量串變量寫入文件文件輸入結束YN圖 3-1 建立文本基本流程圖建立文本文件的思路過程312 給定單詞的計數逐行掃描文本文件。匹配一個,計數器加 1,直到整個文件掃描結束;然后輸出單詞的次數。如圖 3-2 所示 5給定一個單詞定義N=1,S=0一共給了M個單詞掃描第N個單詞If N=MS=S+1If第N個單詞與所給單詞相同結束輸出S及為單詞的計數N=N+1NYYN圖 3-2 單詞計數流程圖給定單詞計數的過程 逐行掃描文本文件。掃描一個單詞,單詞數加 1,匹配一個,計數器加 1,輸出該單詞數,行數到底6以此,行數加 1,單詞數清零,直到整個文件掃描結束;然后輸出單詞的次數,行號,
6、第幾個單詞。如圖 3-3 所示輸入文本文件名輸入要檢索的單詞定義L=1,I=0,N=1掃描第L行第N個單詞If第N個單詞與所給單詞相同N=N+1假設一共X行每行Y個單詞輸出NN=1If N=XI=I+1L=L+1If L=Y輸出II=0輸出L結束L為行數I為次數N為第幾個單詞YNYNYN如 3-3 檢索單詞行號、次數和位置流程圖檢索單詞的出現在文本文件中的行號,次數以及位置3.2 程序的實現73,2.1 預編命令,定義結構體和全局變量/ 文本文件單詞的檢索系統(tǒng) /#include#include#define MaxStrSize 256 /* 根據用戶需要自己定義大小 */typedef s
7、truct char chMaxStrSize; /* ch 是一個可容納 256 個字符的字符數組 */ int length; SString;/* 定義順序串類型 */int PartPosition (SString s1,SString s2,int k) int i,j; i=k-1; /* 掃描 s1 的下標,因為 c 中數組下標是從 0 開始,串中序號相差 1 */ j=0;/* 掃描 s2 的開始下標 */ while(is1.length & j=s2.length) return i-s2.length; else return -1;/* 表示 s1 中不存在
8、s2,返回-1 */ /* 表示 s1 中存在 s2,返回其起始位置 */ /* 函數結束 */3.2.2 建立文本文件/*件一個文本文件,在里面輸入想要的文本*/void CreatTextFile() SString S; char fname10,yn; FILE *fp; printf(輸入要建立的文件名:); scanf(%s,fname);8 fp=fopen(fname,w); yn=n;/* 輸入結束標志初值 */ while(yn=n|yn=N) printf(請輸入一行文本:);gets(S.ch);gets(S.ch); S.length=strlen(S.ch); fw
9、rite(&S,S.length,1,fp); fprintf(fp,%c,10);/* 是輸入換行 */ printf(結束輸入嗎?y or n :);yn=getchar(); fclose(fp);/* 關閉文件 */ printf(建立文件結束!n); 3.2.3 檢索某單詞的行號,出現次數,以及位置/*輸入 2 進行計算出現次數,輸入 3 可以確定文本出現的位置,以此實現檢索單詞的出現在文本文件中的行號,次數以及位置*/void SubStrCount() FILE *fp; SString S,T;/* 定義兩個串變量 */ char fname10; int i=0,j,
10、k; printf(輸入文本文件名:); scanf(%s,fname); fp=fopen(fname,r); printf(輸入要統(tǒng)計計數的單詞:); scanf(%s,T.ch); T.length=strlen(T.ch); while(!feof(fp) /* 掃描整個文本文件 */ /* 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) /*
11、檢索整個主串 S */ j=PartPosition(S,T,k);/* 調用串匹配函數 */ if(j0 ) break; else i+;/* 單詞計數器加 1 */ k=j+T.length;/* 繼續(xù)下一字串的檢索 */ 9 printf(n 單詞%s 在文本文件%s 中共出現%d 次n,T.ch,fname,i); /* 統(tǒng)計單詞出現的個數 */ void SubStrInd() FILE *fp; SString S,T; /* 定義兩個串變量 */ char fname10; int i,j,k,l,m; int wz20; /* 存放一行中字串匹配的多個位置 */ printf
12、(輸入文本文件名:); scanf(%s,fname); fp=fopen(fname,r); printf(輸入要檢索的單詞:); scanf(%s,T.ch); T.length=strlen(T.ch); l=0; /* 行計數器置 0 */ while(!feof(fp) /* 掃描整個文本文件 */ /* fread(&S,sizeof(S),1,fp); /讀入一行文本 */ memset(S.ch,0,256); fgets(S.ch,256,fp); S.length=strlen(S.ch); l+; /* 行計數器自增 1 */ k=0;/* 初始化開始檢索位置 *
13、/ i=0; /* 初始化單詞計數器 */ while(kS.length-1) /* 檢索整個主串 S */ j=PartPosition(S,T,k); /* 調用串匹配函數 */ if(j0) printf(行號:%d,次數:%d,位置分別為:,l,i); for(m=1;m=i;m+) printf(%4d,wzm+1); printf(n); /* 檢索單詞出現在文本文件中的行號、次數及其位置 */3.2.4 菜單函數/10/*編寫菜單函數,以便使用者方便運行使用。按 1 建立文本文件,按 2 進行單詞字符串的計數,按 3 進行單詞字符串的定位,按 4 退出程序程序*/ void C
14、reatTextFile(),SubStrCount(),SubStrInd(); int xz; do printf(=n); printf(| 文本文件的檢索、字串的統(tǒng)計及定位 |n); printf(|= |n); printf(| 1. 建立文本文件 |n); printf(| 2. 單詞字串的計數 |n); printf(| 3. 單詞字串的定位 |n); printf(| 4. 退出整個程序 |n); printf(=n); printf( 請選擇(1-4)n ); scanf(%d,&xz); switch(xz) case 1 : CreatTextFile();bre
15、ak; case 2 : SubStrCount();break; case 3 : SubStrInd();break; case 4 : return 0; default:printf(選擇錯誤,重新選 n); 3.2.4 退出整個程序/*用此函數來退出文本文件的單詞檢索*/void end()printf(謝謝使用文本文件的單詞檢索!n);exit(0);3.2.5 主體函數/*主函數,利用無限循環(huán)可以進行連續(xù)的操作*/int main() while(1); CreatTextFile(),SubStrCount(),SubStrInd();114 4 調試與操作說明調試與操作說明4
16、.1 開始界面 如圖 4-1 所示圖 4-1 文本文件開始界面我們可以看到共有四個選項,從 1 到 4 依次完成建立文本文件,到單詞字串計數,再到單詞字串的定位,最后退出!4.2 輸入文本文件,計數單詞出現的次數。如圖 4-2 所示 圖 4-2 建立文本 43 檢索某單詞的行號,出現次數,以及位置。如圖 4-3,4-4 所示12 圖 4-3 輸入要檢索的單詞圖 4-4 輸出要檢索單詞的信息從圖 4-3 可以看出輸入的單詞在文本中出現 2 次,從圖 4-4 可以看出單詞在文本的第一行,第幾個單詞處!5 5 總結討論總結討論經過一周的奮斗,這次數據結構的課程設計終于做完了。通過這次設計我們也著實又
17、感受了一次編程的樂趣,從中也學到了不少知識。感受最深的一點是:以前用編程,只是注重如何編寫函數能夠完成所需要的功能,似乎沒有明確的戰(zhàn)術,只是憑單純的意識和簡單的語句來堆砌出一段程序。現在編程感覺完全不同了。在編寫一個程序之前,先對這個課程設計進行了一下分析,將每個要求都花了一下算法流程圖,使得自己的思路更加的清晰了 。 然后進行編程,不斷的在電腦上調試程序,終于完成了此次的課程設計。另外,我還體會到深刻理解數據結構的重要性。只有真正理解這樣定義數據類型的好處,才能用好這樣一種數據結構。了解典型數據結構的性質是非常有用的,它往往是編寫程序的關鍵。通過這次課程設計逐漸提高了自己的程序設計和調試能力,我以前對算法一直很害怕,總是看不明白究竟這程序中間的過程是怎么進行的。在這次實驗中我終于克服了這一障礙,一遍13遍在心中自己默默的走,終于弄明白了,真的是功夫不負有心人??! 這次試驗也讓我看到了自己的不足,還是不太用模板類。還有許多關于 C+的一些比較具體的東西還不太懂,比方說指針。這次試驗還讓我們意識到只有不斷的在電腦上調試程序,自己的水平才能得到提高。我會繼續(xù)我們的興趣編寫程序的,相信在越來越多的嘗試之后,自己會
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 業(yè)務銷售保證書寫作指導
- 定址選購協(xié)議格式
- 工程咨詢服務造價招標文件編制
- 服務誠信保證書承諾
- 誠信可靠保證書
- 公司貸款合同范例
- 房產中介服務合同樣式
- 電纜采購協(xié)議模板
- 自覺接受監(jiān)督
- 給水工程分包合同樣式
- 2022幼兒園教師讀書參考心得體會5篇
- 2024年《內科護理學》考試復習題庫(含答案)
- 江蘇省常熟市2024-2025學年七年級上學期12月月考歷史卷(含答案)
- 浙江大學醫(yī)學院附屬兒童醫(yī)院招聘人員真題
- 考試安全保密培訓
- 租賃部績效考核制度
- 江蘇省揚州市2023-2024學年高一上學期期末考試物理試題(含答案)
- 2024年時事政治題庫附參考答案(綜合題)
- 屠呦呦課件教學課件
- 護理肝癌的疑難病例討論
- 消防車換季保養(yǎng)計劃
評論
0/150
提交評論