欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    程序设计-文本编辑器的设计与实现.doc

    • 资源ID:27113062       资源大小:967KB        全文页数:116页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    程序设计-文本编辑器的设计与实现.doc

    Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date程序设计-文本编辑器的设计与实现南京邮电大学 程序设计报告(2014/2015学年 第一学期)题 目:文档编辑器的设计与实现 专 业 组长 学号姓名 组员 学号姓名 指 导 教 师 指 导 单 位 日 期 成 员 分 工 组 长()对文件操作功能(查找,删除,插入)的代码编写,报告中概要设计与代码调试问题部分的撰写 组 员()统计功能代码的编写,翻阅书籍查找资料,报告中课程设计总结及需求分析部分的撰写 组 员()可操作的主菜单及主函数部分代码的编写,报告整体的撰写及测试数据及其结果分析,制图等 评 分 细 则 评分项优秀优优秀 优秀 优秀 优秀 良好 及格 差 遵守机房规章制度 上机时的表现 学习态度 程序准备情况 程序设计能力 团队合作精神 课题功能实现情况 算法设计合理性 用户界面设计 报告书写认真程度 内容详实程度 文字表达熟练程度 回答问题准确度 简 单 评 语 教师签名 年 月 日 评 分 等 级 备注评分等级分为五种:优秀,良好,中等,及格,不及格文档编辑器的设计与实现一 课题内容与要求 文档编辑器系统是对一个文本内容进行各种常规操作,例如:插入、删除、查找、替换等功能。通过此课题,熟练掌握文本文件的操作及用字符数组来实现字符串操作的功能。 基本要求: (1)首先文件标准化处理:如果句子有前导空格和后导空格,则删除这些空格,单词与单词之间只保留一个空格。 (2)统计功能:可方便地统计出文档中所有出现次数最多和最少的字符串。 (3)查找与替换功能:能够查找任意一个字符串在文档中出现的次数,并可以选择全部或有选择地将其替换为另一个字符串。 (4)显示功能:编辑完成后可以显示编辑后的文档。(5)抽取功能:根据要求将文件中的某一类字符抽取,并存入另外的文件,如抽取所有的数字、抽取所有的字母等。 编辑 退出 统计 主菜单 输入继续上次输入重新输入大写字母个数小写字母个数数字的个数标点符号个数空格的个数所有字数查找字符串删除字符串插入字符串显示当前内容二 需求分析图一:文档编辑器系统的功能框架图(1)提供可操作的主菜单:输出个菜单,用于显示若干个可选的功能选项。根据输入的选项来运行不同的功能,运行不同的函数。(2)进行文本信息的载入:选择输入方式,输入文本内容,提供可操作文本。(3)统计数据功能:输出第二子菜单,用于显示若干个可选的功能选项。根据输入的选项来运行不同的功能,运行不同的函数。(4)编辑数据功能:输出个菜单,用于显示若干个可选的功能选项。根据输入的选项来运行查找、删除、插入、显示当前文本等不同的功能,运行不同的函数。(5)退出程序:退出当前程序。三 概要设计本程序共有11个函数1、HeadWord() 标题函数,即一个输出标题,永远出现在程序的最顶端。 2、CreatWord() 文本输入函数,实现对文本的内容进行输入;3、PrintWord() 当前文本内容输出函数,实现文本内容输出; 4、CountWord() 文章内容统计函数,文本内容进 行统计,包括对文本内容中的大写字母、小写字母、数字、标点符号、空格以及文章所有字 数的个数的统计;5、SearchWord() 文章内容查找函数,实现查找部分;6、DeleteWord() 文章内容删除函数,实现删除部分;7、InsertWord() 文章内容插入函数,实现插入部分; 8、Bmenu() 第二子菜单函数,实现子菜单功能; 9、AboutWord() 显示作者信息的函数;10、menu() 主菜单函数,实现可操作菜单;11、main()主函数。(1)查找功能: 开始 申请访问输入要查找的字符判断是否存在记录位置 输出 结束 否是图二:查找功能图(2)插入功能 开始 创建空间输入要插入的字符或字符串输入要插入的位置计算出插入字符串的长度n将要插入位置之后的字符串向后移n位插入要插入的字符或者字符串 结束图三:插入功能图 开始输入字符串查找所输入字符串所在的位置能否找到将其后字符串向前移动覆盖之 结束否是(3)删除功能图四:删除功能图开始申请访问输入要统计的内容查找符合条件的字符字符统计个数输出统计个数 结束(4)统计功能图五:统计功能图四 源程序代码#include<stdio.h>#include<malloc.h>#include<string>#include<iostream>#include<stdlib.h>#include<conio.h>#include<fstream>using namespace std;#define Link_Size 100int NUM,C,N;typedef struct list char data80; int length; struct list *next; struct list *pre; int row; LinkList;LinkList *head;void HeadWord()/system("cls"); cout<<"tt*n"cout<<"tt* 欢迎使用简单的文本编辑器 *n"cout<<"tt*n"LinkList *LoadWord() LinkList *temp; char ch; int i,j; head->next=(LinkList *)malloc(sizeof(LinkList); head->pre=NULL; temp=head->next; temp->pre=NULL; temp->length=0; for(i=0;i<80;i+) temp->datai='0'cout<<"继续上次输入(输入#号结束):n"for(j=0;j<Link_Size;j+) for(i=0;i<80;i+) ch=getchar(); temp->datai=ch; temp->length+; if(ch='#') NUM=j; break; if(ch='#') temp->length=i; temp->next=NULL; break; temp->next=(LinkList *)malloc(sizeof(LinkList) ; temp->next->pre=temp; temp=temp->next; for(i=0;i<80;i+) temp->datai='0'ofstream ocout;ocout.open("f:/text.txt",ios:app);ocout<<temp->data;ocout.close(); LinkList *temp; char ch; temp->row=NUM+1;system("cls");return temp;LinkList *CreatWord() int i,j; head->next=(LinkList *)malloc(sizeof(LinkList); head->pre=NULL; temp=head->next; temp->pre=NULL; temp->length=0; for(i=0;i<80;i+) temp->datai='0'cout<<"开始创建文本,请输入文章(输入#号结束):n"for(j=0;j<Link_Size;j+) for(i=0;i<80;i+) ch=getchar(); temp->datai=ch; temp->length+; if(ch='#') NUM=j; break; if(ch='#') temp->length=i; temp->next=NULL; break; temp->next=(LinkList *)malloc(sizeof(LinkList) ; temp->next->pre=temp; temp=temp->next; for(i=0;i<80;i+) temp->datai='0'ofstream ocout;ocout.open("f:/text.txt");ocout<<temp->data;ocout.close();temp->row=NUM+1;system("cls");return temp;void PrintWord()ifstream icin;icin.open("f:/text.txt");char tt100=0;icin.getline(tt,100,0);cout<<tt<<endl;void CountWord() LinkList *temp; char ch; int i,j,t; int WORD=0,word=0,space=0,num=0,punct=0,sum=0; temp=head->next; for(j=0;j<=NUM;j+) for(i=0;(i<80)&&(temp->datai)!='#'i+) ch=temp->datai; if(ch>='A')&&(ch<='Z') WORD+; else if(ch>='a')&&(ch<='z') word+; else if(ch>='0')&&(ch<='9') num+; else if(ch=' ') space+; else if(ch=33|ch=34|ch=39|ch=44|ch=46|ch=58|ch=59|ch=63) punct+; sum=WORD+word+num; while(1) cout<<"n" HeadWord(); cout<<"tt*n" cout<<"tt* 文章内容统计菜单 *n" cout<<"tt*n" cout<<"tt* 1、文章中大写字母的个数 *n" cout<<"tt* 2、文章中小写字母的个数 *n" cout<<"tt* 3、文章中数字的个数 *n" cout<<"tt* 4、文章中标点符号的个数 *n" cout<<"tt* 5、文章中空格的个数 *n" cout<<"tt* 6、文章中所有字数 *n" cout<<"tt* 7、退出返回主菜单 *n" cout<<"tt* 8、直接退出本系统 *n" cout<<"tt*n" cout<<"tt请选择需统计项目:" cin>>t; switch(t) case 1: system("cls"); HeadWord(); cout<<"文章中大写字母的个数:"<<WORD<<endl; cout<<"按回车键继续·····"getchar();getchar();system("cls"); break; case 2: system("cls"); HeadWord(); cout<<"文章中小写字母的个数:"<<word<<endl; cout<<"按回车键继续·····"getchar();getchar();system("cls");break; case 3: system("cls"); HeadWord(); cout<<"文章中数字的个数:"<<num<<endl; cout<<"按回车键继续·····"getchar();getchar();system("cls");break; case 4: system("cls"); HeadWord(); cout<<"文章中标点符号的个数:"<<punct<<endl; cout<<"按回车键继续·····"getchar();getchar();system("cls"); break; case 5: system("cls"); HeadWord(); cout<<"文章中空格的个数:"<<space<<endl; cout<<"按回车键继续·····"getchar();getchar();system("cls"); break; case 6: system("cls"); HeadWord(); cout<<"文章中所有字数:"<<sum<<endl; cout<<"按回车键继续·····"getchar();getchar();system("cls"); break; if(t=7) system("cls"); break; if(t=8) exit(0); void SearchWord(char *str1,LinkList* temp) char Data20 ; int i,j,k=0,sum=0;int l=1; temp=head->next; strcpy(Data,str1); for(i=0;i<=NUM;i+) for(j=0;j<80;j+) if(temp->dataj)=Datak) k+; else if(Datak!='0')j=j-k;k=0; if(Datak='0') sum+;j=j-k+1;cout<<"ttt第"<<l<<"次出现在第"<<i+1<<"行第"<<j+1<<"列n"l+;k=0;continue; temp=temp->next; cout<<"ttt字符串总共出现次数为:"<<sum<<endl; C=sum;N=i*80+j; void DeleteWord(char *str2) char Data20; LinkList *temp,*term; int i,j,k,m,y,num; strcpy(Data,str2); for(y=0;y<C;y+) num=80;k=0,m=0; temp=head; for(i=0;i<=NUM;i+) term=temp; temp=temp->next; for(j=0;j<80;j+) if(temp->dataj)=Datak) k+; else if(Datak!='0') j=j-k;k=0; if(Datak='0') num=j;break; if(num<80) break; for(;i<=NUM;i+) for(;j<80;j+) if(j+1<k) term->data80-k+num=temp->dataj+1; elsetemp->dataj-k+1=temp->dataj+1; term=temp; temp=temp->next; j=0; LinkList * InsertWord(LinkList *temp) char Data20; int h,l; cout<<"tt请输入要插入的字符或字符串:"<<endl;getchar();gets(Data);printf("ntt当前文章内容为:");PrintWord();printf("ntt请输入要插入的行:");scanf("%d",&h);printf("ntt请输入要插入的列:");scanf("%d",&l); int i=(h-1)*80+l; LinkList *a;int n=strlen(Data);int m ;int insertRow=i/80+1;int row=temp->row;int j;if(insertRow=row)for(m=temp->length-1;m>=(i%80)&&n>0;m-)temp->datam+n=temp->datam;for(m=(i%80),j=0;m<n+(i%80);m+,j+)temp->datam=Dataj; elseint r=0;for(int p=insertRow; p<row;p+)if(p = insertRow) r=0; elser=n;for(m=temp->length-1-r;m>=0&&n>0;m-)temp->datam+n=temp->datam;a=temp;temp = temp->pre;temp->length = 80;for(m = temp->length-n,j=0;m<temp->length;m+,j+)a->dataj=temp->datam;for(m=temp->length-n-1;m>=(i%80);m-) temp->datam+n=temp->datam;for(m=(i%80),j=0;m<(i%80)+n;m+,j+) temp->datam =Dataj;return temp;void Bmenu(LinkList *temp) char str120;char str220;int a;doHeadWord();cout<<"ntt*n"cout<<"tt* 文章内容处理菜单 *n"cout<<"tt*n"cout<<"tt* 1、查找文章中的字符或者字符串 *n"cout<<"tt* 2、删除文章中的字符或者字符串 *n"cout<<"tt* 3、向文章中插入字符或者字符串 *n"cout<<"tt* 4、显示当前文章内容 *n"cout<<"tt* 5、返回主菜单 *n"cout<<"tt* 6、直接退出系统 *n"cout<<"tt*n"cout<<"tt 请选择:"cin>>a;switch(a)case 1: system("cls"); HeadWord(); cout<<"ttt请输入您需要查找的字符或字符串:" getchar(); gets(str1); SearchWord(str1,temp); cout<<"按回车键继续·····"getchar();getchar();system("cls"); break;case 2: system("cls"); HeadWord(); cout<<"ttt请输入您需要删除的字符或字符串:" getchar(); gets(str2); SearchWord(str2,temp); DeleteWord(str2); cout<<"ttt删除 %s 后的文章为:"<<str2<<endl; PrintWord(); cout<<"按回车键继续·····"getchar();getchar();system("cls"); break;case 3: system("cls"); HeadWord(); InsertWord(temp); cout<<"ttt插入字符或字符串后文章为:" PrintWord(); cout<<"按回车键继续·····"getchar();getchar();system("cls"); break;case 4: system("cls"); HeadWord(); PrintWord(); cout<<"按回车键继续·····"getchar();getchar();system("cls"); break;if(a=5) system("cls"); break;if(a=6) exit(0); while(1); void AboutWord() cout<<"nntt 关 于 n" cout<<"tt*n"cout<<"tt* 谢谢使用 *n" cout<<"tt*n"cout<<"n"void menu(LinkList *temp)int t;doHeadWord();printf("n");cout<<"tt*n"cout<<"tt* 主菜单 *n"cout<<"tt*n"cout<<"tt* 1、文章内容输入 *n"cout<<"tt* 2、显示当前文章内容 *n"cout<<"tt* 3、进入文章内容统计菜单 *n"cout<<"tt* 4、进入文章内容处理菜单 *n"cout<<"tt* 5、关于 *n"cout<<"tt* 6、退出文本编辑器 *n"cout<<"tt*n"cout<<"tt* 注:第一次运行本程序时请选择1号功能 *n"cout<<"tt*n"cout<<" tt 请选择:"cin>>t;if(t>6)&&(t<1) cout<<"对不起,无此功能,请输入正确的功能序号!n"elseswitch(t) case 1: system("cls"); cout<<"tt*继续上次输入还是重新输入?*"<<endl; cout<<"tt*1:继续输入*2:重新输入*n" int s; cin>>s; switch(s) case 1:HeadWord();temp=LoadWord(); break; case 2:HeadWord();temp=CreatWord(); break; case 2: system("cls"); PrintWord(); printf("n"); cout<<"按回车键继续·····" getchar(); getchar(); system("cls"); break;case 3: system("cls"); CountWord(); break; case 4: system("cls"); Bmenu(temp); break;case 5: system("cls"); HeadWord(); AboutWord();cout<<"按回车键继续·····"getchar();getchar();system("cls");break;if(t=6) break;while(1);int main()head=(LinkList *)malloc(sizeof(LinkList);LinkList *temp;menu(temp);return 0;五 测试结果及数据分析运行程序后,主菜单如图所示:图2 主菜单欲输入文本,输入1,按Enter键,出现下图:图3 选择输入方式:1:继续输入;2:重新输入输入2,按Enter键,出现下图:图4 创建文本输入文章内容,以#号键结束,按

    注意事项

    本文(程序设计-文本编辑器的设计与实现.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开