下载此文档

简单文本编辑器.docx


文档分类:文学/艺术/军事/历史 | 页数:约17页 举报非法文档有奖
1/17
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/17 下载此文档
文档列表 文档介绍
简单文本编辑器(C++)
一、功能要求
1、具有图形菜单界面;
2、查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除
3、可正确存盘、取盘;
4、正确显示总行数。
二、主程序流程图
三、数据结构
程序中用链表来保存文本,每一行为一个单向链表,每一行的表头保存在一个行链表中,形成了一个2维链表,结构如下图所示:
四、功能实现
打开文件
提示用户输入文件路径
判断文件路径是否有效,若无效,则提示错误信息并返回,否则继续执行。
若文件成功打开并且文件指针没有到文件尾,则从文件中一次读取一个字符,并将该字符添加到一列单链表节点中,直至遇到换行符(ASCII码10)。当列单链表形成后,它的首地址将被保存至行单链表的相应节点的数据域中,如此动作,直至文件指针指向文件尾部而结束。
新建文件
若行链表中有数据存在,则提示用户保存文件。
提示用户输入新建文件的保存路径。
测试新文件路径是否有效。
保存文件
打开文件。
遍历行单链表,遍历行单链表节点指向的列单链表,并将数据输出到文件,每个列单链表遍历完后,输出换行符到文件。
关闭文件
插入字符串
提示用户输入要插入字符串的位置(行号row,列号col)以及要插入的字符串。
先在行单链表中找到该行(第row行),若超出现有行数,则添加空行补齐;
将字符串插入该行(第row行)节点指向的列链表中的col-1位置,若超出现有节点数,则添加保存字符为空格的节点
补齐。
删除字符串
提示用户输入要删除字符串的开始位置(行号row,列号col)以及要插入的字符串的长度len。
在链表中定位到该行节点,若不存在,则提示无法删除并返回;否则继续执行。
在该行中定位到该col字符节点node,若不存在,则提示无法删除并返回;否则继续执行。
删除从node字符节点开始的len个节点。若不满len个,则全部删除。
查找替换
提示用户输入要查找的字符串。
遍历链表,找到每一个出现此字符串的位置并输出。
询问用户是否要进行替换。若选是,则提示用户输入要替换后的字符串,然后先在链表中删除原字符串,再在该位置插入要替换为的字符串。
行移动
提示用户输入要移动的行row和移动后的位置pos。
将行链表中的row-1节点移动到pos-1位置。
列移动
提示用户输入要移动的列col和移动后的位置pos。
遍历每一行(列链表),将每一行的col-1节点移动到pos位置处;若col-1节点不存在则不处理。
显示文本
遍历行、列链表,并将数据输出到控制台;
五、代码实现
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
//author: yyc
//1、具有图形菜单界面;
//2、查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除
//3、可正确存盘、取盘;
//4、正确显示总行数。
//字符节点
struct Node
{
char ch;
Node* next;
};
//行节点
struct Row
{
Node* line;
Row* next;
};
//创建一个Node对象
Node* createNode(char ch)
{
Node* p = new Node;
p->ch=ch;
p->next=NULL;
return p;
}
//创建一个Row对象
Row* createRow(Node* line)
{
Row* p=new Row;
p->line=line;
p->next=NULL;
return p;
}
//定位到index处
Node* locate(Node* line,int index)
{
Node* p=line;
int i=-1;
while(p!=NULL&&i<index)
{
p=p->next;
i++;
}
return p;
}
Row* locate(Row* list,int index)
{
Row* p=list;
int i=-1;
while(p!=NULL&&i<index)
{
p=p->next;
i++;
}
return p;
}
//插入节点
bool insert(Node* list,int index,char c)
{
Node* p= locate(list,index-1);

简单文本编辑器 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数17
  • 收藏数0 收藏
  • 顶次数0
  • 上传人qiang19840906
  • 文件大小37 KB
  • 时间2018-08-23