![程序设计报告_第1页](http://file4.renrendoc.com/view/c24ab9290c49c337fda0ea91dc81bada/c24ab9290c49c337fda0ea91dc81bada1.gif)
![程序设计报告_第2页](http://file4.renrendoc.com/view/c24ab9290c49c337fda0ea91dc81bada/c24ab9290c49c337fda0ea91dc81bada2.gif)
![程序设计报告_第3页](http://file4.renrendoc.com/view/c24ab9290c49c337fda0ea91dc81bada/c24ab9290c49c337fda0ea91dc81bada3.gif)
![程序设计报告_第4页](http://file4.renrendoc.com/view/c24ab9290c49c337fda0ea91dc81bada/c24ab9290c49c337fda0ea91dc81bada4.gif)
![程序设计报告_第5页](http://file4.renrendoc.com/view/c24ab9290c49c337fda0ea91dc81bada/c24ab9290c49c337fda0ea91dc81bada5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-文件编辑器评分细则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简短评语教师签名:年月日评分等级备注评分等级有五种:优秀、良好、中等、及格、不及格文件编辑器课题内容和要求:该系统要求对一个文本文件中的内容进行各种常规操作,如:插入、删除、查找、替换、排序等功能。通过此课题,熟练掌握文本文件的操作及用字符数组或字符指针实现字符串操作的功能。文档编辑器标准化文档编辑器标准化统计查找抽取排序保存替换功能框架图:(见图2-1)图2-1提供可操作的主菜单:输出个菜单,用于显示以从文件中加载的文档信息和若干个可选的功能选项。根据用户输入的选项来运行不同的功能,运行不同的函数。进行文本信息的载入:从指定的文件中加载文档。这里的文件是在编译时就已经指定好的、存在的文本,需设计者预先自己建立好。文件标准化处理功能:如果句子有前导空格和后导空格,则删除这些空格,单词与单词之间只保留一个空格。统计功能:可方便地统计出文档中所有出现次数最多和最少的单词。查找与替换功能:能够查找任意一个字符串在文档中出现的次数,并可以选择全部或有选择地将其替换为另一个字符串。显示功能:编辑完成后可以显示编辑后的文档。抽取功能:重复单词只保留一份拷贝,单独存于另一个文件中。排序功能:按单词的长度由小到大排序,按单词出现的频率由小到大排序。保存功能:将单词和非单词分别用不同的文件存储。三、概要设计1)主要结构体:structWord{ intlength;//单词长度 intt;//单词频率 charstr[N];};typedefstructWordWord;2)主要函数流程图:(1)录入函数:用于统计文章单词数并计算单词的长度。(见图3-1)图3-1(2)文件标准化处理功能函数:如果句子有前导空格和后导空格,则删除这些空格,单词与单词之间只保留一个空格。(见图3-2)(3)统计功能函数:可方便地统计出文档中所有出现次数最多和最少的单词。(见图3-3)图3-3图3-4查找功能函数:能够查找任意一个字符串在文档中出现的次数(见图3-4)替换功能函数:可以选择全部或有选择地将其替换为另一个字符串。(见图3-5)(6)抽取功能函数:重复单词只保留一份拷贝,单独存于另一个文件中。(见图3-6)图3-5(7)排序功能函数:按单词的长度由小到大排序,按单词出现的频率由小到大排序。(见图3-7)(图3-7) (8)保存功能函数:将单词和非单词分别用不同的文件存储。(见图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("欢迎您使用文本文档编辑器,请输入要打开的文件名(含路径):\n");gets(file);if(!(fp=fopen(file,"r+"))) { do { puts("对不起,打开文件失败!请重新输入要打开的文件名(含路径):"); 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("请选择您要执行的操作(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,请重新输入。\n"); } if(k!=9) system("pause"); }while(k!=9); free(file); fclose(fp); printf("欢迎再次进行文档编辑!\n"); system("pause"); return0;}voidmenu(){ printf("\n文本文件处理主菜单\n"); printf("
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆"); printf("|①.文件标准化处理。|"); printf("|②.统计出现最多和最少的单词。|"); printf("|③.查找某个单词。|"); printf("|④.替换某个单词。|"); printf("|⑤.抽取单词并拷贝。|"); printf("|⑥.按单词长度排序。|"); printf("|⑦.按单词频率排序。|"); printf("|⑧.保存到文件。|"); printf("|⑨.退出。|"); printf("◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
");}char*Sta(){ inti=0,j=0,k=0; //k判断是不是第1个空格,k=0,是第一个空格;k=1,不是第一个空格 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("标准化后的内容已保存至biaozhun.txt中\n"); fprintf(fp4,"%s",p); fclose(fp4);}voidSelect(Word*p,intn){ intt,count=0; charstr[50]; printf("请输入想要查找的字符串:\n"); scanf("%s",str); t=strlen(str); count=Tongji(p,str,n); printf("共有%d个\n\n",count);}voidChose(char*p){ intchose; printf("所拥有的模式:\n"); printf("1.全部替换\n"); printf("2.逐个替换\n"); printf("请选择你所需要的模式:"); scanf("%d",&chose); switch(chose) { case1:Chose1(p);break; case2:Chose2(p);break; default:printf("对不起,你的输入有误。\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("请输入想要替换掉的词:\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%s\n该内容已保存至Replace.txt中\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("请输入你所要替换的词:\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("全文一共发现了%d个%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("对不起,您的输入有误,没有替换。\n"); SSH[x++]=p[i]; } } else SSH[x++]=p[i]; } for(;i<m+1;i++) SSH[x++]=p[i]; printf("替换后的内容为:\n%s\n该内容已保存至Replace.txt中\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("均只出现一次!\n"); else { printf("出现最少的单词(出现了1次):\n"); for(j=0;j<n;j++) if(p[j].t==1) printf("%s",p[j].str);printf("\n"); printf("出现最多的单词(出现了%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");}五、测试数据及其结果分析显示的主菜单界面:
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆|①.文件标准化处理。||②.统计出现最多和最少的单词。||③.查找某个单词。||④.替换某个单词。||⑤.抽取单词并拷贝。||⑥.按单词长度排序。||⑦.按单词频率排序。||⑧.保存到文件。||⑨.退出。|◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
测试文档内容: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)文件标准化处理测试:输入:1输出:标准化后的内容已保存至biaozhun.txt请按任意键继续2)统计出现最多和最少的单词测试:输入:2输出:确认位置,请输入所要寻找的客户名称:输入:moto输出:请依次输入:客户帐单编码,客户名称,市话费用,长话费用,本地区名称,营业区名称输入:11wzy1111121212nanjinghaimen输出:操作已完成,请继续操作3)客户排序测试:输入:7输出:操作已完成,请继续操作输入:9输出:菜单:总客户信息:1moto3100010200nanjingyuhua2huawei2000013020nanjinggulou3datang2501012030suqiansuyang4zhongxin2000088150nanjingyuhua5weidian7053055000suqiansihong6julong2000033000nanjingxuanwu7lianchuang2000033000nanjinggulou8sohu4000072000nantonghaian9yiruan5000040030nanjinggulou10sina3400021000nantonghaimen11wzy1111121212nanjinghaimen请输入所要进行的操作:1:查找客户;6:备份帐单;2:插入帐单;7:客户排序;3:删除帐单;8:分类合计;4:修改帐单;9:显示菜单;5:保存帐单;0:推出操作;4)统计测试:输入:8输出:本地网名称:市话费小计:长话费小计:通话费合计:客户帐单数量nanjing1721112386124107237suqian95540670301
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 不战而胜的保险销售技巧课件
- 机器人技术及其应用概述课件
- 公共关系练习题复习试题及答案
- 《SVPWM控制技术》课件
- 《小数运算定律》课件
- 《细胞学相关知识》课件
- 《疫源地消毒技术》课件
- 重难点专题 1-1 函数的对称性与周期性问题【18类题型】(解析版)-2025届高考数学热点题型归纳与重难点突(新高考专用)
- 《通过激素调节》课件
- 《高速脉冲输出指令》课件
- 中职生心理健康教育全套教学课件
- XX电站接地装置的热稳定校验报告(220kV)
- JC-T 2704-2022 聚酯纤维装饰吸声板
- 火炬计划项目申报指南
- 毒麻药品管理相关知识护理课件
- WTE朗文英语2B 单词卡片
- SB-T 11238-2023 报废电动汽车回收拆解技术要求
- 供热管道施工方案
- 《穴位注射疗法》课件
- 管理会计 课件 孙茂竹 第7-12章 存货决策-业绩考核
- 空气能热泵系统设计与安装展示
评论
0/150
提交评论