




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
-文件編輯器評(píng)分細(xì)則評(píng)分項(xiàng)優(yōu)秀良好中等差遵守機(jī)房規(guī)章制度上機(jī)時(shí)的表現(xiàn)學(xué)習(xí)態(tài)度程序準(zhǔn)備情況程序設(shè)計(jì)能力團(tuán)隊(duì)合作精神課題功能實(shí)現(xiàn)情況算法設(shè)計(jì)合理性用戶界面設(shè)計(jì)報(bào)告書寫認(rèn)真程度內(nèi)容詳實(shí)程度文字表達(dá)熟練程度回答問題準(zhǔn)確度簡(jiǎn)短評(píng)語教師簽名:年月日評(píng)分等級(jí)備注評(píng)分等級(jí)有五種:優(yōu)秀、良好、中等、及格、不及格文件編輯器課題內(nèi)容和要求:該系統(tǒng)要求對(duì)一個(gè)文本文件中的內(nèi)容進(jìn)行各種常規(guī)操作,如:插入、刪除、查找、替換、排序等功能。通過此課題,熟練掌握文本文件的操作及用字符數(shù)組或字符指針實(shí)現(xiàn)字符串操作的功能。文檔編輯器標(biāo)準(zhǔn)化文檔編輯器標(biāo)準(zhǔn)化統(tǒng)計(jì)查找抽取排序保存替換功能框架圖:(見圖2-1)圖2-1提供可操作的主菜單:輸出個(gè)菜單,用于顯示以從文件中加載的文檔信息和若干個(gè)可選的功能選項(xiàng)。根據(jù)用戶輸入的選項(xiàng)來運(yùn)行不同的功能,運(yùn)行不同的函數(shù)。進(jìn)行文本信息的載入:從指定的文件中加載文檔。這里的文件是在編譯時(shí)就已經(jīng)指定好的、存在的文本,需設(shè)計(jì)者預(yù)先自己建立好。文件標(biāo)準(zhǔn)化處理功能:如果句子有前導(dǎo)空格和后導(dǎo)空格,則刪除這些空格,單詞與單詞之間只保留一個(gè)空格。統(tǒng)計(jì)功能:可方便地統(tǒng)計(jì)出文檔中所有出現(xiàn)次數(shù)最多和最少的單詞。查找與替換功能:能夠查找任意一個(gè)字符串在文檔中出現(xiàn)的次數(shù),并可以選擇全部或有選擇地將其替換為另一個(gè)字符串。顯示功能:編輯完成后可以顯示編輯后的文檔。抽取功能:重復(fù)單詞只保留一份拷貝,單獨(dú)存于另一個(gè)文件中。排序功能:按單詞的長度由小到大排序,按單詞出現(xiàn)的頻率由小到大排序。保存功能:將單詞和非單詞分別用不同的文件存儲(chǔ)。三、概要設(shè)計(jì)1)主要結(jié)構(gòu)體:structWord{ intlength;//單詞長度 intt;//單詞頻率 charstr[N];};typedefstructWordWord;2)主要函數(shù)流程圖:(1)錄入函數(shù):用于統(tǒng)計(jì)文章單詞數(shù)并計(jì)算單詞的長度。(見圖3-1)圖3-1(2)文件標(biāo)準(zhǔn)化處理功能函數(shù):如果句子有前導(dǎo)空格和后導(dǎo)空格,則刪除這些空格,單詞與單詞之間只保留一個(gè)空格。(見圖3-2)(3)統(tǒng)計(jì)功能函數(shù):可方便地統(tǒng)計(jì)出文檔中所有出現(xiàn)次數(shù)最多和最少的單詞。(見圖3-3)圖3-3圖3-4查找功能函數(shù):能夠查找任意一個(gè)字符串在文檔中出現(xiàn)的次數(shù)(見圖3-4)替換功能函數(shù):可以選擇全部或有選擇地將其替換為另一個(gè)字符串。(見圖3-5)(6)抽取功能函數(shù):重復(fù)單詞只保留一份拷貝,單獨(dú)存于另一個(gè)文件中。(見圖3-6)圖3-5(7)排序功能函數(shù):按單詞的長度由小到大排序,按單詞出現(xiàn)的頻率由小到大排序。(見圖3-7)(圖3-7) (8)保存功能函數(shù):將單詞和非單詞分別用不同的文件存儲(chǔ)。(見圖3-8)圖3-9圖3-10源程序代碼#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#defineN10#defineS200#defineMAXSIZE10000charBuffer[MAXSIZE],Buffer2[MAXSIZE],SSH[MAXSIZE];FILE*fp;structWord{ intlength; intt; charstr[N];};typedefstructWordWord;char*Sta();voidmenu();voidPrint(char*p);intLuru(char*p1,Word*p2);intequal(Word*p,intn);voidSum(Word*p,intn);voidSelect(Word*p,intn);voidChose(char*p);voidChose1(char*p);voidChose2(char*p);voidSort(Word*p,intn);voidChouqu(Word*p,intn);intTongji(Word*p,char*q,intn);intCountSubstr(constchar*str1,constchar*str2);voidfsort(Word*p,intn);voidSavetofile(char*p);intmain(){system("colorF0"); inti,k,n; charch; Wordp[200];char*file=(char*)malloc(sizeof(char)*MAXSIZE);printf("歡迎您使用文本文檔編輯器,請(qǐng)輸入要打開的文件名(含路徑):\n");gets(file);if(!(fp=fopen(file,"r+"))) { do { puts("對(duì)不起,打開文件失敗!請(qǐng)重新輸入要打開的文件名(含路徑):"); gets(file); }while(!(fp=fopen(file,"r+"))); } for(i=0;(ch=fgetc(fp))!=EOF;i++) //文件全賦值給buffer2 Buffer2[i]=ch; Buffer2[i]='\0'; printf("原文件為:\n"); for(i=0;(ch=Buffer2[i])!='\0';i++) putchar(ch); Sta(); n=Luru(Buffer,p); for(i=0;i<n;i++) p[i].t=Tongji(p,p[i].str,n); system("pause"); do { system("cls"); for(i=0;(ch=Buffer2[i])!='\0';i++) putchar(ch); menu(); printf("請(qǐng)選擇您要執(zhí)行的操作(1~8):"); scanf("%d",&k); switch(k) { case1:Print(Buffer);break; case2:Sum(p,n);break; case3:Select(p,n);break; case4:Chose(Buffer);break; case5:Chouqu(p,n);break; case6:Sort(p,n);break; case7:fsort(p,n);break; case8:Savetofile(Buffer);break; case9:break; default: printf("Errorinput,請(qǐng)重新輸入。\n"); } if(k!=9) system("pause"); }while(k!=9); free(file); fclose(fp); printf("歡迎再次進(jìn)行文檔編輯!\n"); system("pause"); return0;}voidmenu(){ printf("\n文本文件處理主菜單\n"); printf("
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆"); printf("|①.文件標(biāo)準(zhǔn)化處理。|"); printf("|②.統(tǒng)計(jì)出現(xiàn)最多和最少的單詞。|"); printf("|③.查找某個(gè)單詞。|"); printf("|④.替換某個(gè)單詞。|"); printf("|⑤.抽取單詞并拷貝。|"); printf("|⑥.按單詞長度排序。|"); printf("|⑦.按單詞頻率排序。|"); printf("|⑧.保存到文件。|"); printf("|⑨.退出。|"); printf("◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
");}char*Sta(){ inti=0,j=0,k=0; //k判斷是不是第1個(gè)空格,k=0,是第一個(gè)空格;k=1,不是第一個(gè)空格 while(Buffer2[i]!='\0') { if(Buffer2[i]=='') { if(i==0) { i++; continue; } if(k==0) { Buffer[j]=Buffer2[i]; j++; k=1; } } else { Buffer[j]=Buffer2[i]; j++; k=0; } i++; } Buffer[j]='\0'; returnBuffer;}voidPrint(char*p){ inti; charch;FILE*fp4; fp4=fopen("Biaozhun.txt","w"); if(!fp4) { printf("Cannotcreateafile.\n"); exit(0); } for(i=0;(ch=p[i])!='\0';i++) putchar(ch); printf("\n");printf("標(biāo)準(zhǔn)化后的內(nèi)容已保存至biaozhun.txt中\(zhòng)n"); fprintf(fp4,"%s",p); fclose(fp4);}voidSelect(Word*p,intn){ intt,count=0; charstr[50]; printf("請(qǐng)輸入想要查找的字符串:\n"); scanf("%s",str); t=strlen(str); count=Tongji(p,str,n); printf("共有%d個(gè)\n\n",count);}voidChose(char*p){ intchose; printf("所擁有的模式:\n"); printf("1.全部替換\n"); printf("2.逐個(gè)替換\n"); printf("請(qǐng)選擇你所需要的模式:"); scanf("%d",&chose); switch(chose) { case1:Chose1(p);break; case2:Chose2(p);break; default:printf("對(duì)不起,你的輸入有誤。\n"); }}voidChose1(char*p){ charstr[50],str2[50]; inti,j,x=0,z,m,n,flag; FILE*fp3; fp3=fopen("Replace.txt","w"); if(!fp3) { printf("Cannotcreateafile.\n"); exit(1); } printf("請(qǐng)輸入想要替換掉的詞:\n"); scanf("%s",str); printf("替換成什么?\n"); scanf("%s",str2); m=strlen(p); n=strlen(str); z=strlen(str2); if(m==0||n==0||n>m) { printf("Cannotfind.\n"); return; } for(i=0;i<=(m-n);i++) { flag=1; for(j=0;j<n;j++) { if(p[i+j]!=str[j]) { flag=0; break; } } if(flag==1) { for(j=0;j<z;j++) SSH[x++]=str2[j]; i+=n-1; } else SSH[x++]=p[i]; } for(;i<m+1;i++) SSH[x++]=p[i]; printf("替換后的內(nèi)容為:\n%s\n該內(nèi)容已保存至Replace.txt中\(zhòng)n",SSH); fprintf(fp3,"%s",SSH); fclose(fp3); return;}voidChose2(char*p){ inti,j,k=0,cnt=0,n1,n2,n3,flag,m,chose,x=0; charstr[50],str2[50]; FILE*fp3; fp3=fopen("Replace.txt","w"); if(!fp3) { printf("Cannotcreateafile.\n"); exit(1); } printf("請(qǐng)輸入你所要替換的詞:\n"); scanf("%s",str); printf("替換成什么?\n"); scanf("%s",str2); n1=strlen(str); n2=strlen(str2); n3=strlen(p); for(i=0;i<=n3-n1;i++) { flag=1; for(j=0;j<n1;j++) if(p[i+j]!=str[j]) { flag=0; break; } cnt+=flag; } if(cnt==0) { printf("Cannotfind.\n"); return; } printf("全文一共發(fā)現(xiàn)了%d個(gè)%s單詞。\n",cnt,str); for(i=0;i<=n3-n1;i++) { flag=1; for(j=0;j<n1;j++) if(p[i+j]!=str[j]) { flag=0; break; } if(flag==1) { k++; printf("第%d處:\n",k); for(m=(i-15>0?(i-15):0);m<i;m++) putchar(p[m]); printf("\n--------"); for(;m<n1+i;m++) putchar(p[m]); printf("--------thisonetochange!\n"); for(;m<(n1+i+15<n3?(n1+i+15):n3);m++) putchar(p[m]); printf("\n是否替換?(1為替換,0為不換)\n"); scanf("%d",&chose); if(chose==1) { for(j=0;j<n2;j++) SSH[x++]=str2[j]; i+=n1-1; } elseif(chose==0) { SSH[x++]=p[i]; } else { printf("對(duì)不起,您的輸入有誤,沒有替換。\n"); SSH[x++]=p[i]; } } else SSH[x++]=p[i]; } for(;i<m+1;i++) SSH[x++]=p[i]; printf("替換后的內(nèi)容為:\n%s\n該內(nèi)容已保存至Replace.txt中\(zhòng)n",SSH); fprintf(fp3,"%s",SSH); fclose(fp3);}intequal(Word*p,intn){ inti; for(i=0;i<n;i++) if(strcmp(p[i].str,p[n].str)==0) return0; return1;}voidSum(Word*p,intn){ inti=0,j,max,min; char*q1,*q2; max=min=p[0].t; q1=q2=p[0].str; for(i=1;i<n;i++) { if(max<p[i].t) { max=p[i].t; q1=p[i].str; } if(min>p[i].t) { min=p[i].t; q2=p[i].str; } } if(max==1) printf("均只出現(xiàn)一次!\n"); else { printf("出現(xiàn)最少的單詞(出現(xiàn)了1次):\n"); for(j=0;j<n;j++) if(p[j].t==1) printf("%s",p[j].str);printf("\n"); printf("出現(xiàn)最多的單詞(出現(xiàn)了%d次):\n",max); for(j=0;j<n;j++) { if(p[j].t==max&&equal(p,j)==1) { printf("%s",p[j].str); } }printf("\n"); }}intLuru(char*p1,Word*p2){ inti=0,j=0,m; for(m=0;p1[m]!='\0';m++){ if(p1[m]==''||p1[m]==','||p1[m]=='.'||p1[m]=='\n') { p2[i].str[j]='\0'; i++; j=0; } elseif(p1[m]<='z'&&p1[m]>='a'||p1[m]<='Z'&&p1[m]>='A') { if(p1[m]>='A'&&p1[m]<='Z') p2[i].str[j++]=p1[m]; else p2[i].str[j++]=p1[m]; p2[i].length=j; } } if(p1[m]=='\0') p2[i].str[j]=p1[m]; returni+1;}voidSort(Word*p,intn){ inti,j,min; Wordtemp; for(i=0;i<n-1;i++) { min=i; for(j=i+1;j<n;j++) if(p[j].length<p[min].length) min=j; if(min!=i) { temp=p[i]; p[i]=p[min]; p[min]=temp; } } for(i=0;i<n;i++) printf("%s",p[i].str);}intCountSubstr(constchar*str1,constchar*str2){ char*cp; char*s1,*s2;intcount=0; if(!*str2) return0; cp=(char*)str1; while(*cp) { s1=cp; s2=(char*)str2; while(*s1&&*s2&&!(*s1-*s2)) ++s1,++s2; if(!*s2) ++count; ++cp; } returncount;}voidChouqu(Word*p,intn){ inti,j=0; FILE*fp5=fopen("Chouqu.txt","w"); if(fp5==NULL) { printf("Cannotopenfile!"); exit(0); } for(i=0;i<n;i++) { if(p[i].t==1) { fputs(p[i].str,fp5); fputc('',fp5); } else { for(j=0,p[i].t=0;j<i;j++) p[i].t+=CountSubstr(p[j].str,p[i].str); if(!p[i].t) {fputs(p[i].str,fp5); fputc('',fp5); } } } fclose(fp5); printf("文件存入chouqu.txt中!\n");}intTongji(Word*p,char*q,intn){ inti,m,t,count=0; t=strlen(q); for(i=0;i<n;i++) { if(t==p[i].length) { for(m=0;m<t;m++) { if(p[i].str[m]==q[m]) continue; else break; } if(m==t) count++; } } returncount;}voidfsort(Word*p,intn){ inti,j,min; Wordtemp; for(i=0;i<n-1;i++) { min=i; for(j=i+1;j<n;j++) if(p[j].t<p[min].t) min=j; if(min!=i) { temp=p[i]; p[i]=p[min]; p[min]=temp; } } for(i=0;i<n;i++) printf("%s",p[i].str);}voidSavetofile(char*p){ FILE*fp6,*fp7; inti,j,n,n1=0,n2=0; fp6=fopen("word.txt","w"); fp7=fopen("number.txt","w"); if((!fp6)||(!fp7)) { printf("Cannotopenfile!"); exit(0); } n=strlen(p); j=0; for(i=0;i<n;i++) { if((p[i]>='A'&&p[i]<='Z')||(p[i]>='a'&&p[i]<='z')) { if(j==2||(j==0&&n1>0)) fputc('',fp6); fputc(p[i],fp6); j=1; n1++; } elseif(p[i]>='0'&&p[i]<='9') { if(j==1||(j==0&&n2>0)) fputc('',fp7); fputc(p[i],fp7); j=2; n2++; } else j=0; } fclose(fp6); fclose(fp7); printf("文件已保存在word.txt與number.txt中。\n");}五、測(cè)試數(shù)據(jù)及其結(jié)果分析顯示的主菜單界面:
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆|①.文件標(biāo)準(zhǔn)化處理。||②.統(tǒng)計(jì)出現(xiàn)最多和最少的單詞。||③.查找某個(gè)單詞。||④.替換某個(gè)單詞。||⑤.抽取單詞并拷貝。||⑥.按單詞長度排序。||⑦.按單詞頻率排序。||⑧.保存到文件。||⑨.退出。|◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
測(cè)試文檔內(nèi)容:ASundayschoolteacherwastellingherpupilstheimportanceofmakingothersglad."Now,children,"saidshe,"hasanyoneofyouevermakesomeoneelseglad?""Please,teacher,"saidasmallboy,"I'vemakesomeonegladyesterday.""Welldone.Whowasthat?""Mygrandma""Goodboy.Nowtellushowyoumadeyourgrandmotherglad.""Please,teacher,Iwenttoseeheryesterday,andstayedwithherthreehours.ThenIsaidtoher,'Granny,I'mgoinghome,'andshesaid,'Well,I'mglad'!"hellohellohellohellohello1)文件標(biāo)準(zhǔn)化處理測(cè)試:輸入:1輸出:標(biāo)準(zhǔn)化后的內(nèi)容已保存至biaozhun.txt請(qǐng)按任意鍵繼續(xù)2)統(tǒng)計(jì)出現(xiàn)最多和最少的單詞測(cè)試:輸入:2輸出:確認(rèn)位置,請(qǐng)輸入所要尋找的客戶名稱:輸入:moto輸出:請(qǐng)依次輸入:客戶帳單編碼,客戶名稱,市話費(fèi)用,長話費(fèi)用,本地區(qū)名稱,營業(yè)區(qū)名稱輸入:11wzy1111121212nanjinghaimen輸出:操作已完成,請(qǐng)繼續(xù)操作3)客戶排序測(cè)試:輸入:7輸出:操作已完成,請(qǐng)繼續(xù)操作輸入:9輸出:菜單:總客戶信息:1moto3100010200nanjingyuhua2huawei2000013020nanjinggulou3datang2501012030suqiansuyang4zhongxin2000088150nanjingyuhua5weidian7053055000suqiansihong6julong2000033000nanjingxuanwu7lianchuang2000033000nanjinggulou8sohu4000072000nantonghaian9yiruan5000040030nanjinggulou10sina3400021000nantonghaimen11wzy1111121212nanjinghaimen請(qǐng)輸入所要進(jìn)行的操作:1:查找客戶;6:備份帳單;2:插入帳單;7:客戶排序;3:刪除帳單;8:分類合計(jì);4:修改帳單;9:顯示菜單;5:保存帳單;0:推出操作;4)統(tǒng)計(jì)測(cè)試:輸入:8輸出:本地網(wǎng)名稱:市話費(fèi)小計(jì):長話費(fèi)小計(jì):通話費(fèi)合計(jì):客戶帳單數(shù)量nanjing1721112386124107237suqian95540670301
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 盆腔腫物病人護(hù)理
- 2025年華南地區(qū)建筑施工分包合同履行
- 2025年泵車短期租賃策劃與執(zhí)行協(xié)議
- 2025年養(yǎng)豬場(chǎng)飼養(yǎng)員雇傭合同樣本
- 2025年美容院服務(wù)承包合同范本
- 2025年典當(dāng)行業(yè)與當(dāng)戶典當(dāng)物品策劃管理協(xié)議書
- 2025年安徽省寫字樓租賃權(quán)益轉(zhuǎn)讓合同
- 2025年度土地權(quán)屬調(diào)解協(xié)議策劃
- 2025年排泥場(chǎng)環(huán)保安全策劃與監(jiān)管協(xié)作協(xié)議書
- 2025年冷藏食品配送服務(wù)合同樣本
- 2025版大學(xué)食堂冷鏈?zhǔn)巢呐渌头?wù)合同模板3篇
- 《中醫(yī)體重管理臨床指南》
- 2024年青島港灣職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 廣西壯族自治區(qū)公路發(fā)展中心2025年面向社會(huì)公開招聘657名工作人員高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《中國的宗教》課件
- 2025年山東魯商集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 大學(xué)轉(zhuǎn)專業(yè)高等數(shù)學(xué)試卷
- 大型活動(dòng)中的風(fēng)險(xiǎn)管理與安全保障
- 公司廠區(qū)保潔培訓(xùn)
- 課題申報(bào)書:個(gè)體衰老差異視角下社區(qū)交往空間特征識(shí)別與優(yōu)化
- 江蘇省招標(biāo)中心有限公司招聘筆試沖刺題2025
評(píng)論
0/150
提交評(píng)論