




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1滁滁州州學(xué)學(xué)院院課課程程設(shè)設(shè)計(jì)計(jì)報(bào)報(bào)告告課程名稱(chēng)課程名稱(chēng): 數(shù)據(jù)結(jié)構(gòu) 設(shè)計(jì)題目設(shè)計(jì)題目: 文本文件單詞的檢索 系系 別:別: 網(wǎng)絡(luò)與通信工程系 專(zhuān)專(zhuān) 業(yè)業(yè): 網(wǎng)絡(luò)工程 組組 別別: 起止日期起止日期: 2012 年 6 月 14 日 2012 年 6 月 21 日 指導(dǎo)教師指導(dǎo)教師: 計(jì)算機(jī)與信息工程學(xué)院二一二年制2目錄1 1 引引言言.42 2 分分析析.42.1 建立文本文件 建立文本文件的實(shí)現(xiàn)思路.42.2 給定單詞的計(jì)數(shù).42.3 檢索單詞出現(xiàn)在文本文件中的行號(hào)、次數(shù)及其位置.42.4 主控菜單程序的結(jié)構(gòu).43 3 詳詳細(xì)細(xì)分分析析.53.1 流程圖.5311 建立文本文件 .531
2、2 給定單詞的計(jì)數(shù) .63.2 程序的實(shí)現(xiàn).83,2.1 預(yù)編命令,定義結(jié)構(gòu)體和全局變量 .93.2.2 建立文本文件 .93.2.3 檢索某單詞的行號(hào),出現(xiàn)次數(shù),以及位置 .103.2.4 菜單函數(shù) .113.2.4 退出整個(gè)程序 .123.2.5 主體函數(shù) .124 4 調(diào)調(diào)試試與與操操作作說(shuō)說(shuō)明明.124.1 開(kāi)始界面 如圖 4-1 所示.134.2 輸入文本文件,計(jì)數(shù)單詞出現(xiàn)的次數(shù)。如圖 4-2 所示.1343 檢索某單詞的行號(hào),出現(xiàn)次數(shù),以及位置。如圖 4-3,4-4 所示.135 5 總總結(jié)結(jié)討討論論.146 6 致致謝謝.157 7 參參考考文文獻(xiàn)獻(xiàn).1531 引言本程序主要圍繞
3、的是文本文件單詞的檢索與計(jì)數(shù),正文包括:對(duì)文本文件單詞的檢索與計(jì)數(shù)程序的詳細(xì)要求,對(duì)程序的分析,勾畫(huà)程序思路及內(nèi)容的流程圖,主程序代碼,程序運(yùn)行后相對(duì)應(yīng)要求的所有截圖,還有我們做完程序后的總結(jié)討論,以及我們?cè)诒敬纬绦蛑械脑敿?xì)分工。2 分析 2.1 建立文本文件 建立文本文件的實(shí)現(xiàn)思路 (1) 定義一個(gè)串變量 (2) 定義文本文件 (3) 輸入文件名,打開(kāi)該文件 (4) 循環(huán)讀入文本行,寫(xiě)入文本文件,其過(guò)程如下: While(不是文件輸入結(jié)束) 讀入一文本行至串變量; 串變量寫(xiě)入文件; 輸入是否結(jié)束輸入標(biāo)志; (5) 關(guān)閉文件 2.2 給定單詞的計(jì)數(shù) 該功能需要用到前一節(jié)中設(shè)計(jì)的模式匹配算法,逐
4、行掃描文本文件。匹配一個(gè),計(jì)數(shù)器加 1,直到整個(gè)文件掃描結(jié)束;然后輸出單詞的次數(shù)。 2.3 檢索單詞出現(xiàn)在文本文件中的行號(hào)、次數(shù)及其位置 2.4 主控菜單程序的結(jié)構(gòu) (1) 頭文件包含 (2) 菜單選擇包括: 1、 建立文件 2、 單詞計(jì)數(shù) 3、 單詞定位 4、 退出程序 (3)選擇 14 執(zhí)行相應(yīng)的操作,其他字符為非法3 3 詳細(xì)分析詳細(xì)分析3.1 流程圖311 建立文本文件定義一個(gè)串變量 ,定義文本文件, 輸入文件名,打開(kāi)該文件 , 循環(huán)讀入文本行,寫(xiě)入文件。如圖 3-1 所示4定義一個(gè)串變量 定義文本文件 輸入文件名,打開(kāi)該文件 循環(huán)讀入文本行,寫(xiě)入文本文件關(guān)閉文件While是文本文件
5、讀入一文本行至串變量串變量寫(xiě)入文件文件輸入結(jié)束YN圖 3-1 建立文本基本流程圖建立文本文件的思路過(guò)程312 給定單詞的計(jì)數(shù)逐行掃描文本文件。匹配一個(gè),計(jì)數(shù)器加 1,直到整個(gè)文件掃描結(jié)束;然后輸出單詞的次數(shù)。如圖 3-2 所示 5給定一個(gè)單詞定義N=1,S=0一共給了M個(gè)單詞掃描第N個(gè)單詞If N=MS=S+1If第N個(gè)單詞與所給單詞相同結(jié)束輸出S及為單詞的計(jì)數(shù)N=N+1NYYN圖 3-2 單詞計(jì)數(shù)流程圖給定單詞計(jì)數(shù)的過(guò)程 逐行掃描文本文件。掃描一個(gè)單詞,單詞數(shù)加 1,匹配一個(gè),計(jì)數(shù)器加 1,輸出該單詞數(shù),行數(shù)到底6以此,行數(shù)加 1,單詞數(shù)清零,直到整個(gè)文件掃描結(jié)束;然后輸出單詞的次數(shù),行號(hào),
6、第幾個(gè)單詞。如圖 3-3 所示輸入文本文件名輸入要檢索的單詞定義L=1,I=0,N=1掃描第L行第N個(gè)單詞If第N個(gè)單詞與所給單詞相同N=N+1假設(shè)一共X行每行Y個(gè)單詞輸出NN=1If N=XI=I+1L=L+1If L=Y輸出II=0輸出L結(jié)束L為行數(shù)I為次數(shù)N為第幾個(gè)單詞YNYNYN如 3-3 檢索單詞行號(hào)、次數(shù)和位置流程圖檢索單詞的出現(xiàn)在文本文件中的行號(hào),次數(shù)以及位置3.2 程序的實(shí)現(xiàn)73,2.1 預(yù)編命令,定義結(jié)構(gòu)體和全局變量/ 文本文件單詞的檢索系統(tǒng) /#include#include#define MaxStrSize 256 /* 根據(jù)用戶需要自己定義大小 */typedef s
7、truct char chMaxStrSize; /* ch 是一個(gè)可容納 256 個(gè)字符的字符數(shù)組 */ int length; SString;/* 定義順序串類(lèi)型 */int PartPosition (SString s1,SString s2,int k) int i,j; i=k-1; /* 掃描 s1 的下標(biāo),因?yàn)?c 中數(shù)組下標(biāo)是從 0 開(kāi)始,串中序號(hào)相差 1 */ j=0;/* 掃描 s2 的開(kāi)始下標(biāo) */ while(is1.length & j=s2.length) return i-s2.length; else return -1;/* 表示 s1 中不存在
8、s2,返回-1 */ /* 表示 s1 中存在 s2,返回其起始位置 */ /* 函數(shù)結(jié)束 */3.2.2 建立文本文件/*件一個(gè)文本文件,在里面輸入想要的文本*/void CreatTextFile() SString S; char fname10,yn; FILE *fp; printf(輸入要建立的文件名:); scanf(%s,fname);8 fp=fopen(fname,w); yn=n;/* 輸入結(jié)束標(biāo)志初值 */ while(yn=n|yn=N) printf(請(qǐng)輸入一行文本:);gets(S.ch);gets(S.ch); S.length=strlen(S.ch); fw
9、rite(&S,S.length,1,fp); fprintf(fp,%c,10);/* 是輸入換行 */ printf(結(jié)束輸入嗎?y or n :);yn=getchar(); fclose(fp);/* 關(guān)閉文件 */ printf(建立文件結(jié)束!n); 3.2.3 檢索某單詞的行號(hào),出現(xiàn)次數(shù),以及位置/*輸入 2 進(jìn)行計(jì)算出現(xiàn)次數(shù),輸入 3 可以確定文本出現(xiàn)的位置,以此實(shí)現(xiàn)檢索單詞的出現(xiàn)在文本文件中的行號(hào),次數(shù)以及位置*/void SubStrCount() FILE *fp; SString S,T;/* 定義兩個(gè)串變量 */ char fname10; int i=0,j,
10、k; printf(輸入文本文件名:); scanf(%s,fname); fp=fopen(fname,r); printf(輸入要統(tǒng)計(jì)計(jì)數(shù)的單詞:); scanf(%s,T.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; /* 初始化開(kāi)始檢索位置 */ while(kS.length-1) /*
11、檢索整個(gè)主串 S */ j=PartPosition(S,T,k);/* 調(diào)用串匹配函數(shù) */ if(j0 ) break; else i+;/* 單詞計(jì)數(shù)器加 1 */ k=j+T.length;/* 繼續(xù)下一字串的檢索 */ 9 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; int wz20; /* 存放一行中字串匹配的多個(gè)位置 */ printf
12、(輸入文本文件名:); scanf(%s,fname); fp=fopen(fname,r); printf(輸入要檢索的單詞:); scanf(%s,T.ch); T.length=strlen(T.ch); l=0; /* 行計(jì)數(shù)器置 0 */ while(!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ù)器自增 1 */ k=0;/* 初始化開(kāi)始檢索位置 *
13、/ i=0; /* 初始化單詞計(jì)數(shù)器 */ while(kS.length-1) /* 檢索整個(gè)主串 S */ j=PartPosition(S,T,k); /* 調(diào)用串匹配函數(shù) */ if(j0) printf(行號(hào):%d,次數(shù):%d,位置分別為:,l,i); for(m=1;m=i;m+) printf(%4d,wzm+1); printf(n); /* 檢索單詞出現(xiàn)在文本文件中的行號(hào)、次數(shù)及其位置 */3.2.4 菜單函數(shù)/10/*編寫(xiě)菜單函數(shù),以便使用者方便運(yùn)行使用。按 1 建立文本文件,按 2 進(jìn)行單詞字符串的計(jì)數(shù),按 3 進(jìn)行單詞字符串的定位,按 4 退出程序程序*/ void C
14、reatTextFile(),SubStrCount(),SubStrInd(); int xz; do printf(=n); printf(| 文本文件的檢索、字串的統(tǒng)計(jì)及定位 |n); printf(|= |n); printf(| 1. 建立文本文件 |n); printf(| 2. 單詞字串的計(jì)數(shù) |n); printf(| 3. 單詞字串的定位 |n); printf(| 4. 退出整個(gè)程序 |n); printf(=n); printf( 請(qǐng)選擇(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(選擇錯(cuò)誤,重新選 n); 3.2.4 退出整個(gè)程序/*用此函數(shù)來(lái)退出文本文件的單詞檢索*/void end()printf(謝謝使用文本文件的單詞檢索!n);exit(0);3.2.5 主體函數(shù)/*主函數(shù),利用無(wú)限循環(huán)可以進(jìn)行連續(xù)的操作*/int main() while(1); CreatTextFile(),SubStrCount(),SubStrInd();114 4 調(diào)試與操作說(shuō)明調(diào)試與操作說(shuō)明4
16、.1 開(kāi)始界面 如圖 4-1 所示圖 4-1 文本文件開(kāi)始界面我們可以看到共有四個(gè)選項(xiàng),從 1 到 4 依次完成建立文本文件,到單詞字串計(jì)數(shù),再到單詞字串的定位,最后退出!4.2 輸入文本文件,計(jì)數(shù)單詞出現(xiàn)的次數(shù)。如圖 4-2 所示 圖 4-2 建立文本 43 檢索某單詞的行號(hào),出現(xiàn)次數(shù),以及位置。如圖 4-3,4-4 所示12 圖 4-3 輸入要檢索的單詞圖 4-4 輸出要檢索單詞的信息從圖 4-3 可以看出輸入的單詞在文本中出現(xiàn) 2 次,從圖 4-4 可以看出單詞在文本的第一行,第幾個(gè)單詞處!5 5 總結(jié)討論總結(jié)討論經(jīng)過(guò)一周的奮斗,這次數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì)終于做完了。通過(guò)這次設(shè)計(jì)我們也著實(shí)又
17、感受了一次編程的樂(lè)趣,從中也學(xué)到了不少知識(shí)。感受最深的一點(diǎn)是:以前用編程,只是注重如何編寫(xiě)函數(shù)能夠完成所需要的功能,似乎沒(méi)有明確的戰(zhàn)術(shù),只是憑單純的意識(shí)和簡(jiǎn)單的語(yǔ)句來(lái)堆砌出一段程序?,F(xiàn)在編程感覺(jué)完全不同了。在編寫(xiě)一個(gè)程序之前,先對(duì)這個(gè)課程設(shè)計(jì)進(jìn)行了一下分析,將每個(gè)要求都花了一下算法流程圖,使得自己的思路更加的清晰了 。 然后進(jìn)行編程,不斷的在電腦上調(diào)試程序,終于完成了此次的課程設(shè)計(jì)。另外,我還體會(huì)到深刻理解數(shù)據(jù)結(jié)構(gòu)的重要性。只有真正理解這樣定義數(shù)據(jù)類(lèi)型的好處,才能用好這樣一種數(shù)據(jù)結(jié)構(gòu)。了解典型數(shù)據(jù)結(jié)構(gòu)的性質(zhì)是非常有用的,它往往是編寫(xiě)程序的關(guān)鍵。通過(guò)這次課程設(shè)計(jì)逐漸提高了自己的程序設(shè)計(jì)和調(diào)試能力,我以前對(duì)算法一直很害怕,總是看不明白究竟這程序中間的過(guò)程是怎么進(jìn)行的。在這次實(shí)驗(yàn)中我終于克服了這一障礙,一遍13遍在心中自己默默的走,終于弄明白了,真的是功夫不負(fù)有心人??! 這次試驗(yàn)也讓我看到了自己的不足,還是不太用模板類(lèi)。還有許多關(guān)于 C+的一些比較具體的東西還不太懂,比方說(shuō)指針。這次試驗(yàn)還讓我們意識(shí)到只有不斷的在電腦上調(diào)試程序,自己的水平才能得到提高。我會(huì)繼續(xù)我們的興趣編寫(xiě)程序的,相信在越來(lái)越多的嘗試之后,自己會(huì)
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廈門(mén)東海職業(yè)技術(shù)學(xué)院《數(shù)字媒體技術(shù)概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 貴州中醫(yī)藥大學(xué)時(shí)珍學(xué)院《物理治療基礎(chǔ)(含評(píng)定、理療)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西應(yīng)用科技學(xué)院《健美操(大眾)》2023-2024學(xué)年第二學(xué)期期末試卷
- 溫州商學(xué)院《中華文化(文學(xué)篇)》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西中醫(yī)藥大學(xué)《木材加工裝備學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東環(huán)境保護(hù)工程職業(yè)學(xué)院《美容化妝》2023-2024學(xué)年第一學(xué)期期末試卷
- 江蘇省常熟市2024-2025學(xué)年高三下學(xué)期第二次模擬考語(yǔ)文試題試卷含解析
- 濮陽(yáng)職業(yè)技術(shù)學(xué)院《幼兒歌曲即興伴奏》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東省濟(jì)寧市市中區(qū)達(dá)標(biāo)名校2025屆初三春季診斷性測(cè)試物理試題含解析
- 重慶醫(yī)藥高等專(zhuān)科學(xué)?!豆残l(wèi)生實(shí)踐技能培訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 護(hù)士N1晉級(jí)N2述職報(bào)告
- 中國(guó)糖尿病防治指南(2024版)解讀
- 食堂食材配送采購(gòu)?fù)稑?biāo)方案(技術(shù)標(biāo))
- 山東省汶上縣市級(jí)名校2025屆中考生物全真模擬試卷含解析
- 2025年度智能硬件產(chǎn)品全國(guó)區(qū)域獨(dú)家代理合同3篇
- 辦公室安全知識(shí)培訓(xùn)課件
- 2025年四川省成都市青白江區(qū)招聘50人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年浙江嘉興市眾業(yè)供電服務(wù)限公司招聘38人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 【課件】第12課+理想與典范-古希臘與古羅馬美術(shù)+課件高中美術(shù)人教版(2019)美術(shù)鑒賞
- 建筑行業(yè)安全隱患舉報(bào)獎(jiǎng)勵(lì)機(jī)制
- 公司事故隱患內(nèi)部報(bào)告獎(jiǎng)勵(lì)機(jī)制
評(píng)論
0/150
提交評(píng)論