VC++课程设计任务报告书.docx
文本预览下载声明
1.绪论1.1 简单介绍本系统实现的内容编辑器应具备对文本文件的查找、插人、删除、修改、字符串替换、统计字数,统计行数等功能,对于超过整屏的长文件,应能够分页显示,查找功能用字符串匹配算法实现。设计用户接口命令,实现对文本的编辑。 1.2实验目的需要对文本文件进行编辑,所以需要打开和保存文件操作,同时,根据要求还需要插入、删除、修改、查找、字符串替换、统计字数、统计行数的操作。另外能够分页显示。2.开发环境及课程设计内容Visual Studio 2015Visual Studio 是一套基于组件的软件开发工具和其他技术,可用于构建功能强大、性能出众的应用程序。Visual Studio 2015内部代号为Visual Studio 14 ;Visual Studio 14 Community Technology Previews (CTP) 是 Visual Studio 下一主要版本的早期预发布版本,于2014年11月13日开放下载。3.概要设计3.1抽象数据类型双向链表和顺序表。3.2系统功能模块小型文本编辑器小型文本编辑器打开文件删除保存文件插入查找替换统计 图1 系统功能模块图4.详细设计 4.1数据类型 用双向链表实现,每一结点表示一行字符,每行字符不能超过255。typedef struct Node{ char data[MAX]; //存放数据 struct Node *prior; //前驱 struct Node *next; //后继 int number; //记录一个节点的字符数!如果是头节点就记录他的节点个数 int pos; //记录节点在链表中的位置 } Node, *pNode; class CData {public: //对数据进行初始化,建立头结点,初始化链表 CData(); //删除链表,释放内存 virtual ~CData();public: //将查找记录初始化 void SetSearchRecord(int pos); //返回指定行的指针 pNode GetLine(int pos); //清空链表 bool Empty(); //从指定起始位置开始查找指定字符串,返回查找到的行的指针,将查找到的地址保存到函数参数position中 pNode Search(int startline, int startchar, char *value, int position); //插入新行,返回新行指针 pNode InsertLine(); //删除当前行 pNode DeleteLine(); //在指定位置插入字符,返回当前行指针 pNode InsertChar(int position, char value); //删除指定位置的字符 pNode DeleteChar(int position); //返回当前行的指针 pNode GetCurrentLine(); //将指定行设置为当前行,返回当前行指针 pNode SetCurrentLine(int line); //返回头结点的指针 pNode GetHead(); //返回总行数 int GetLineCounts();private: //采用BF算法进行字符串匹配,返回匹配字符串的位置 int BF(char *s, char *v);private: SearchRecord m_srSearchRecord; //查找记录 pNode m_Head; //头结点 pNode m_CurrentLine; //当前行指针}; 4.2主程序【分析】本程序采用MFC实现界面部分,通过对相应函数的调用来实现相应的功能。4.3插入模块【分析】 插入模块包含两部分:一是插入字符,二是插入行。插入时需考虑结点存储字符数满的情况,具体如下。【程序】 //在指定位置插入字符,返回当前行指针pNode CData::InsertChar(int position, char value) { int i; if (m_CurrentLine == NULL) return NULL; if (position m_CurrentLine-number+1) return NULL; //如果当前行已满 if (m_CurrentLine-number = MAX-2) { //如果插入位置在行尾,则插入到下一行行首 if (position == MAX - 1) { //若下一行存在则直接将字符插入到下一行行首 if (m_CurrentLine-next != NULL) { m_Curr
显示全部