文件相似度判斷_第1頁(yè)
文件相似度判斷_第2頁(yè)
文件相似度判斷_第3頁(yè)
文件相似度判斷_第4頁(yè)
文件相似度判斷_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

沈陽(yáng)航空工業(yè)學(xué)院課程設(shè)計(jì)學(xué)號(hào)____200604021155______班級(jí)_____6402105_____姓名_____劉晨_____指導(dǎo)教師____李飛______年月日沈陽(yáng)航空工業(yè)學(xué)院課程設(shè)計(jì)任務(wù)書電子工程系電子信息工程專業(yè)6402105班學(xué)號(hào)200604021155一、課程設(shè)計(jì)題目:文件相似度判斷二、課程設(shè)計(jì)工作自年月日起至年月日止三、課程設(shè)計(jì)內(nèi)容:用C語(yǔ)言編寫軟件完成以下任務(wù):文件相似度判斷:〔200604021155〕 實(shí)現(xiàn)如下功能:錄入兩段文本信息,分別寫到兩個(gè)文本文件中;比擬兩個(gè)文件的相似度〔計(jì)算公式為:相同的單詞數(shù)量/總的單詞數(shù)量〕;注:該系統(tǒng)的用戶界面至少包含以下選項(xiàng):錄入文件1、錄入文件2、比擬相似度、退出系統(tǒng)。四、課程設(shè)計(jì)要求:程序質(zhì)量:貫徹結(jié)構(gòu)化程序設(shè)計(jì)思想。用戶界面友好,功能明確,操作方便;可以加以其它功能或修飾。用戶界面中的菜單至少應(yīng)包括“創(chuàng)立文件1”、“創(chuàng)立文件2”、“判斷文件相似度”、“退出”4項(xiàng)。代碼應(yīng)適當(dāng)縮進(jìn),并給出必要的注釋,以增強(qiáng)程序的可讀性。課程設(shè)計(jì)說(shuō)明書:課程結(jié)束后,上交課程設(shè)計(jì)說(shuō)明書〔打印稿和電子稿〕,其內(nèi)容如下:封面課程設(shè)計(jì)任務(wù)書目錄需求分析〔分析題目的要求〕程序流程圖〔總體流程圖和主要功能模塊流程圖〕核心技術(shù)的實(shí)現(xiàn)說(shuō)明及相應(yīng)程序段個(gè)人總結(jié)參考資料源程序及適當(dāng)?shù)淖⑨屩笇?dǎo)教師:_________李飛___________學(xué)生簽名:_________劉晨___________目錄一、需求分析………HYPERLINK4三、核心技術(shù)的實(shí)現(xiàn)說(shuō)明及相應(yīng)程序段…………HYPERLINK8四、個(gè)人總結(jié)………HYPERLINK12五、參考文獻(xiàn)………HYPERLINK12六、源程序…………HYPERLINK13需求分析:本程序需要判斷文件相似性,因此在主菜單中需要建立兩個(gè)文件,分別調(diào)用了函數(shù)Creat1-Z()和Creat2-Z(),再建立判斷文件相似性的程序,調(diào)用函數(shù)Compare-Z()。在主菜單中由于用到goto循環(huán),所以添加退出程序,在主菜單中還要應(yīng)用if判斷語(yǔ)句。本程序關(guān)鍵是判斷兩個(gè)文件是否相似,需應(yīng)用while循環(huán)和if判斷語(yǔ)句。程序流程圖1.流程圖讀入i,n讀入i,nJ==0輸出主菜單形式loop行輸出提示輸入nn==1真假Creat1-z()n==2真假Creat2-z()n==3循環(huán)至loop真假行循環(huán)至loopcomparen==4行-z()真假循環(huán)至exitn==’m’||Loop行n==’M’真假Continue輸出Error循環(huán)至loop行2.各程序流程圖創(chuàng)立文件1與文件2的流程圖建立一個(gè)文件fp建立一個(gè)文件fp讀入str[256],i如果文件以寫方式翻開不成功真假輸出提示輸出不能翻開文件輸入字符串讀入數(shù)據(jù)把字符串str輸出到fp中輸出success關(guān)閉文件fp(2)判斷文件相似性compare-z()流程圖建立文件fp建立文件fp讀入*p,*k,ss[256],j,I,n1,n2,sum,t,same,q文件file1以只讀方式翻開不成功真假輸出不能翻開j=0,i=0文件當(dāng)fgets(ss,256,fp)i+=1輸出提示存到p中進(jìn)行復(fù)制j+=1當(dāng)p=strtok(NULL,sep)進(jìn)行復(fù)制j++n1=j輸出單詞的行數(shù)以及單詞個(gè)數(shù)文件file2以只讀方式翻開不成功真假輸出不能翻開j=0,i=0文件當(dāng)fgets(ss,256,fp)i+=1輸出提示存到p中進(jìn)行復(fù)制j+=1當(dāng)p=strtok(NULL,sep)進(jìn)行復(fù)制j++n2=j輸出單詞的行數(shù)以及單詞個(gè)數(shù)Sum=n1>n2真假Sum=n1sum=n2Same=0i=0i<n1i<n1j=0j<n2strcmp(word[i].w,word[j].w)==0真假Same+=1n2=n2-1break計(jì)算賦值給q并輸出qq>=80真假輸出文件相似輸出文件不相似關(guān)鍵技術(shù)分析:關(guān)鍵是goto,while循環(huán)和if語(yǔ)句作判斷,循環(huán)時(shí)注意退出命令,還有循環(huán)語(yǔ)句的起始命令。if語(yǔ)句判斷時(shí)注意和的邏輯關(guān)系。本程序主要由二個(gè)自定義函數(shù)和一個(gè)主函數(shù)組成,其中主函數(shù)以菜單的形式調(diào)用其他函數(shù)來(lái)實(shí)現(xiàn)要求的所有功能。在這些函數(shù)當(dāng)中,創(chuàng)立文件函數(shù)和比擬兩個(gè)字符串函數(shù)是程序中較為核心的局部,下面分別進(jìn)行說(shuō)明。1、創(chuàng)立文件函數(shù)首先由程序讀取一個(gè)指定文件,并將錄入的字符串信息寫入該文件當(dāng)中,并且關(guān)閉保存該文件。具體的程序段如下:Creat1_Z(){FILE*fp;charstr[256];if((fp=fopen("e:\\file1.txt","w+"))==NULL)printf("Cannotopenthisfile!\n");else{printf("EnterastringtoFile1:\n");scanf("%s",str);fputs(str,fp);/*把字符串str輸出到FP中*/printf("\nSuccess!\n");}fclose(fp);}2、比擬兩個(gè)字符串函數(shù)建立文件指針用以讀取在文件中保存的字符串,并通過(guò)strtok函數(shù)及strcpy等函數(shù)的一系列應(yīng)用到達(dá)對(duì)兩組字符串比擬的作用,并同時(shí)用變量統(tǒng)計(jì)相同字符個(gè)數(shù),繼而算出相似的比例且給出相似性的比擬結(jié)果,最后關(guān)閉保存文件以保證數(shù)據(jù)的一致性。具體程序段如下:Compare_Z(){FILE*fp;char*p;charss[256];intj,i,n1,n2,sum,same;floatq;if((fp=fopen("e:\\file1.txt","r"))==NULL)printf("Cannotfindfile1!\n");else{j=0;i=0;/*i行數(shù),j單詞個(gè)數(shù)*/while(fgets(ss,256,fp)){i+=1;printf("TheRow%dis:%s\n",i,ss);p=strtok(ss,sep);strcpy(word[j].w,p);j+=1; while(p=strtok(NULL,sep)){strcpy(word[j].w,p);j++;}}n1=j;printf("File1:%dRows\n",i);printf("%dwords\n",j);}printf("-------------------------------------------------------\n");if((fp=fopen("e:\\file2.txt","r"))==NULL)printf("Cannotfindfile2!\n");else{j=0;i=0;/*i行數(shù),j單詞個(gè)數(shù)*/while(fgets(ss,256,fp))/*在FP中讀取一個(gè)字符串存入SS中*/{i+=1;printf("TheRow%dis:%s\n",i,ss);p=strtok(ss,sep);strcpy(word[j].w2,p);j+=1;while(p=strtok(NULL,sep)){strcpy(word[j].w2,p);j++;}}n2=j;printf("File2:%dRows\n",i);printf("%dwords\n",j);}sum=n1>n2?n1:n2;same=0;for(i=0;i<n1;i++)for(j=0;j<n2;j++){if(strcmp(word[i].w,word[j].w2)==0){same+=1;n2=n2-1;break;}}/*printf("%d\n",same);*/q=(float)same/(float)sum*100;printf("-------------------------------------------\n");printf("相同單詞占總量的比例:q=%.2f%%\n",q);if(q>=80)printf("wenjianxiangsi!\n");elseprintf("wenjianbuxiangsi.\n");fclose(fp);}個(gè)人總結(jié)通過(guò)這一周的學(xué)習(xí),使我對(duì)C語(yǔ)言所學(xué)的知識(shí)有了更深入的了解,同時(shí)對(duì)goto,while循環(huán)和if語(yǔ)句的使用更熟練了,對(duì)C語(yǔ)言這門學(xué)科產(chǎn)生了比擬大的興趣,對(duì)我以后的學(xué)習(xí)有了很大的幫助。這一周的課設(shè)使我感覺過(guò)得很充實(shí),同時(shí)也學(xué)到了很多的電腦方面的知識(shí)。對(duì)我以后的學(xué)習(xí)起到了很大的積極的作用。參考文獻(xiàn)1譚浩強(qiáng).C程序設(shè)計(jì).北京:清華大學(xué)出版社,20052劉成等.C語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)與習(xí)題集.北京:中國(guó)鐵道出版社,2006完整的源程序#include<stdio.h>#include<string.h>#include<math.h>#include<io.h>#include<stdlib.h>structwords{charw[20];charw2[20];}word[100];charsep[]="!,.\"?';:()\t\r\n";/*創(chuàng)立文件1*/Creat1_Z(){FILE*fp;charstr[256];if((fp=fopen("e:\\file1.txt","w+"))==NULL)printf("Cannotopenthisfile!\n");else{printf("EnterastringtoFile1:\n");scanf("%s",str);fputs(str,fp);/*把字符串str輸出到FP中*/printf("\nSuccess!\n");}fclose(fp);}/*創(chuàng)立文件2*/Creat2_Z(){FILE*fp;charstr[256];if((fp=fopen("e:\\file2.txt","w+"))==NULL)printf("Cannotopenthisfile!\n");else{printf("EnterastringtoFile2:\n");scanf("%s",str);fputs(str,fp);printf("\nSuccess!\n");}fclose(fp);}/*判斷文件相似性*/Compare_Z(){FILE*fp;char*p;charss[256];intj,i,n1,n2,sum,same;floatq;if((fp=fopen("e:\\file1.txt","r"))==NULL)printf("Cannotfindfile1!\n");else{j=0;i=0;/*i行數(shù),j單詞個(gè)數(shù)*/while(fgets(ss,256,fp)){i+=1;printf("TheRow%dis:%s\n",i,ss);p=strtok(ss,sep);strcpy(word[j].w,p);j+=1; while(p=strtok(NULL,sep)){strcpy(word[j].w,p);j++;}}n1=j;printf("File1:%dRows\n",i);printf("%dwords\n",j);}printf("-------------------------------------------------------\n");if((fp=fopen("e:\\file2.txt","r"))==NULL)printf("Cannotfindfile2!\n");else{j=0;i=0;/*i行數(shù),j單詞個(gè)數(shù)*/while(fgets(ss,256,fp))/*在FP中讀取一個(gè)字符串存入SS中*/{i+=1;printf("TheRow%dis:%s\n",i,ss);p=strtok(ss,sep);strcpy(word[j].w2,p);j+=1;while(p=strtok(NULL,sep)){strcpy(word[j].w2,p);j++;}}n2=j;printf("File2:%dRows\n",i);printf("%dwords\n",j);}sum=n1>n2?n1:n2;same=0;for(i=0;i<n1;i++)for(j=0;j<n2;j++){if(strcmp(word[i].w,word[j].w2)==0){same+=1;n2=n2-1;break;}}/*printf("%d\n",same);*/q=(float)same/(float)sum*100;printf("-------------------------------------------\n");printf("相同單詞占總量的比例:q=%.2f%%\n",q);if(q>=80)printf("wenjianxiangsi!\n");elseprintf("wenjianbuxiangsi.\n");fclose(fp);}/*主函數(shù)調(diào)用*/main(){intj;charn;while(1){printf("\n");printf("********************************************************************************\n");printf("-------------------MENU-------------------\n");printf("-----------------------");printf("\n!!!!!!!!!!!!!!!!!!!!!!QingXuanZeCaoZuoDaiMa!!!!!!!!!!!!!!!!!!!!\n");printf("!-----------------------\n");printf("!!\n"); printf("!1:CreateFile1!\n");

溫馨提示

  • 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ù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論