好文档 - 专业文书写作范文服务资料分享网站

数据结构与算法分析实验报告(川大)

天下 分享 时间: 加入收藏 我要投稿 点赞

《数据结构与算法分析》课程设计报告

课题名称: 文本编辑器

课题设计人(学号): 佳玉2012141461134

指导教师: 宏

评阅成绩: 评阅意见:

提交报告时间:20 13 年 12 月 22 日

文本编辑器

计算机科学与技术 专业

学生 佳玉 指导老师 宏

[摘要] 文本编辑器(或称文字编辑器)是用作编写普通文字的应用软件,它与文档编辑器(或称文字处理器)不同之处在于它并非用作桌面排版(例如文档格式处理)。它常用来编写程序的源代码。专业的计算机用户使用的文本编辑器往往不限制打开文件的大小。这样的编辑器在编辑大文件时,启动仍然很快,而且它们还能够编辑超过存大小的文件。而简单的文本编辑器通常直接把文件读至存。这样在处理较大文件时速度较慢,对于更大的文件,则干脆无法处理。我所做的这个文本编辑器包含插入、移除、替换、查找、显示和新建的功能,是一种简单的文本编辑器。

关键词:简单的文本编辑器 插入 移除 替换 查找 显示 新建

一、实验名称:文本编辑器

二、实验的目的和要求:

1.采用C++的ASCII码文件和串函数实现; 2.熟练掌握串运算的应用;

3.熟练掌握计算机系统的基本操作法,了解如编辑、编译、和运行一个C++程序;

4.上机调试程序,掌握查错、排错使程序能正确运行。

三、实验的环境:指硬件和软件环境

1.硬件环境: G405+4G存+320G硬盘+川大校园网 2.软件环环境:

操作系统:Windows 7

编译系统的版本的特点:Dev-C++是一套用于开发C/C++的自由的集

成开发环境(IDE),并以GPL作为散布可。使用 MinGW 及 GDB 作为

编译系统与除错系统。Dev-C++的IDE是利用Delphi开发的。 编辑软件特点:包含强大的类和嵌WinAPI的MFC,具有可视化的编程界面。

四、算法描述:

1、用户可以选择自己输入文本或者直接使用程序以初始化的文本,用switch case语句就可以根据用户不同的选择执行相应的代码。 相应代码:

cout<<\代表自己输入文本,b代表使用电脑设置的文本\cout<<\请输入你的选择:\char ch; cin>>ch;

switch(ch)//对用户的不同选择执行不同的代码 {

case 'a'://当用户选择自行输入文本时 ······ break;

case 'b'://当用户选择使用电脑设置的文本时 ····· break; }

2、当用户选择自己输入文本时,就需要写一些函数来存储这些信息,

可以将这些函数封装在一个模板类中,只要定义一个之歌类的对象(bianji)就可以在需要的时候调用类的函数。在这个时候需要调用的函数有:

bianji.Sethang(h);//设置文本的行数 bianji.Setlie(l);//设置文本的列数 bianji.Setwenben();//输入文本 bianji.Showwenben();//显示文本

3、单用户选择使用程序初始化的文本时,只要显示文本即可。这个时候需要的函数有:

bianji.Showwenben();//显示文本

4、该文本编辑器有插入,移除,替换,查找,显示和重置的功能,通过输出语句告知用户文本编辑器的功能,并询问用户要使用哪个功能。相应代码:

char ch='s';//初始化ch

while(ch!='q')//当ch!='q'时,就不会退出循环 { }

5、当用户选择插入(insert)功能时,就只需要将当前行数加1,将要插入的行及其后面的行的文本往后移一行,在输入要插入的行的文本即可,相应代码:

cout<<\代表插入文本 \cout<<\代表移除文本 \cout<<\代表替换文本 \cout<<\代表查找文本 \cout<<\代表显示当前文本 \cout<<\代表重新建立一个文本 \cout<<\代表退出 \cout<<\请输入你的选择:\cin>>ch;

······

while(h0>bianji.Gethang()||h0<1)//如果要插入的行大于已有的//最大行或者小于第一行就会要求重新输入一个 { }

bianji.Sethang(bianji.Gethang()+1);//当前行数加1 int i,j;

for(i=bianji.Gethang()-1;i>=h0;i--)//把要插入行及后面的行的//文本往后一次移一行 { }

for(i=0;i

bianji.Showwenben();//显示文本

6、当用户选择移除(remove)功能时,只需要将要移除的行的后面的文本依次往前移一行,就会顺便把要移除行的文本覆盖了,相当于达到了移除的效果,相应代码:

while(h1>bianji.Gethang()||h1<1)//如果要移除的行大于已有的//最大行或者小于第一行就会要求重新输入一个 {

cout<<\输入有误,请重输:\

cout<<\请输入第\行第\个字符:\bianji.Fuzhiwenben(h0-1,i); cout<

for(j=0;j

bianji.Xiugaiwenben(i,j,i-1,j); cout<<\输入错误,请重输:\cin>>h0;

}

cin>>h1;

bianji.Sethang(bianji.Gethang()-1);//将当前行数减1 int i1,j1;

for(i1=h1-1;i1

{ //了,从而达到移除的效果

for(j1=0;j1

bianji.Showwenben();

7、当用户选择替换(replace)功能时,只需要重新输入要替换行的文本即可,其他行的文本不变,相应代码:

for(i2=0;i2

bianji.Showwenben();

8、当用户选择查找(find)功能时,只要用户输入相应列数的文本,然后将其与每一行的文本进行比较,如果完全相同,则会输出相应的行号,通过循环语句来进行匹配,相应代码:

for(i3=0;i3

cout<<\请输入第\列的字符:\

cout<<\请输入第\行第\个字符:\bianji.Fuzhiwenben(h2-1,i2); cout<

bianji.Xiugaiwenben(i1,j1,i1+1,j1); }

bianji.Fuzhiwenben(bianji.Gethang(),i3);//将输入的文本放//

到当前的最后一行,只是暂时的

} //在这个功能完了后就会//消失,因为没有改变文本的行列

for(i3=0;i3

j3=0;

while(bianji.Findwenben(i3,j3)==bianji.Findwenben(bianji.Gethang(),j3)&&j3

{

j3++;//相同就会在查下一列的字符是否相同,直到这一完//

}

if(count==0) { }

cout<

9、当用户选择显示(show)功能时,只需要调用模板类中的显示函数即可,相应代码:

bianji.Showwenben();与初始化的部分相同,也只是要调用模板类中的相应函数即可,相应代码: cout<<\请输入新的行数:\

cout<<\你要找的文本不在现有文本中\}

if(j3==bianji.Getlie()) { }

cout<<\你要找的文本在第\行\count+=1;

cin>>h4;

bianji.Sethang(h4);//新行 cout<<\请输入新的列数:\cin>>l4;

bianji.Setlie(l4);//新列 bianji.Setwenben();//新文本 bianji.Showwenben();//显示文本 10、当用户选择重置(new)功能时,

五、源程序清单:

该程序代码分为3部分,分别是:

1、模板类的代码,文件名“linklist.h”,相应代码: #ifndef LINKLIST_H_ #define LINKLIST_H_ #include using namespace std;

template//队列的模板类 class LinkList { private:

ElemType wenben[256][256];//创立一个二维数组作为存储文int hang;//数组的行 int lie;//数组的列 LinkList()//构造函数 {

hang=1;//初始化行数为1 lie=1;//初始化列数为1

wenben[0][0]='a';//初始化文本为'a'

本的空间

public:

数据结构与算法分析实验报告(川大)

《数据结构与算法分析》课程设计报告课题名称:文本编辑器课题设计人(学号):佳玉2012141461134指导教师:宏评阅成绩:评阅意见:<
推荐度:
点击下载文档文档为doc格式
773on6dgca9s4tl8lgrm6o2vt5lzqa00cq1
领取福利

微信扫码领取福利

微信扫码分享