数据结构课程设计建文本编辑器 联系客服

发布时间 : 星期一 文章数据结构课程设计建文本编辑器更新完毕开始阅读b92a0b1aa7c30c22590102020740be1e650ecc00

目录

一. 设计的目的和要求……………………………………………………………3

课程设计的目的………………………………………………………………3 基本要求………………………………………………………………………3 二. 课程设计任务要求……………………………………………………………3

需求分析………………………………………………………………………3 三. 具体设计………………………………………………………………………3

主程序流程图…………………………………………………………………4 详细设计功能分析……………………………………………………………4 函数分析 源程序代码………………………………………………………6 四. 调试分析和测试结果………………………………………………………20

代码测试截图结果分析……………………………………………………20 五. 总结心得与体会……………………………………………………………25

一.课程设计目的和要求

? 设计目的

数据结构课程设计是一门实践性非常强的课程,不但结合了C语言的设计基本知识,更加注重技能的培养,是学生能够允许渐进的把握C语言C++的程序设计的技能。通过此课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高,同时提以下几个方面的能力。

1. 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;

4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科

学的工作方法和作风。

二.课程设计任务要求

? 需求分析

1. 具有图形菜单界面;

2. 查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移

动),删除

3. 可正确存盘、取盘; 4. 正确显示总行数。

三.具体设计

? 主程序流程图 如(图1)所示

? 程序中用链表来保存文本,每一行为一个单向链表,每一行的表头保存在一个行链表中,形成了一个2维链表,结构如下(图2)所示: ? 详细设计功能实现

(一)

1. 2. 3.

打开文件

(二)

1. 2. 3. (三)

1.

提示用户输入文件路径

判断文件路径是否有效,若无效,则提示错误信息并返回,否则继续执行。

若文件成功打开并且文件指针没有到文件尾,则从文件中一次读取一个字符,并将该字符添加到一列单链表节点中,直至遇到换行符(ASCII码10)。当列单链表形成后,它的首地址将被保存至行单链表的相应节点的数据域中,如此动作,直至文件指针指向文件尾部而结束。 新建文件

若行链表中有数据存在,则提示用户保存文件。 提示用户输入新建文件的保存路径。 测试新文件路径是否有效。 保存文件 打开文件。

2

2. 遍历行单链表,遍历行单链表节点指向的列单链表,并将数据输出到文件,每个列单

链表遍历完后,输出换行符到文件。 3. 关闭文件

(图1)

(四) 插入字符串

1. 提示用户输入要插入字符串的位置(行号row,列号col)以及要插入的字符串。 2. 先在行单链表中找到该行(第row行),若超出现有行数,则添加空行补齐; 3. 将字符串插入该行(第row行)节点指向的列链表中的col-1位置,若超出现有节点数,

则添加保存字符为空格的节点补齐。

(五) 删除字符串

(1) 提示用户输入要删除字符串的开始位置(行号row,列号col)以及要插入的字符串

的长度len。

(2) 在链表中定位到该行节点,若不存在,则提示无法删除并返回;否则继续执行。 (3) 在该行中定位到该col字符节点node,若不存在,则提示无法删除并返回;否则继

续执行。

(4) 删除从node字符节点开始的len个节点。若不满len个,则全部删除。 (六) 查找替换

1. 提示用户输入要查找的字符串。

2. 遍历链表,找到每一个出现此字符串的位置并输出。

3. 询问用户是否要进行替换。若选是,则提示用户输入要替换后的字符串,然后先在链

3

表中删除原字符串,再在该位置插入要替换为的字符串。

(七) 行移动

1. 提示用户输入要移动的行row和移动后的位置pos。 2. 将行链表中的row-1节点移动到pos-1位置。 (八) 列移动

1. 提示用户输入要移动的列col和移动后的位置pos。 2. 遍历每一行(列链表),将每一行的col-1节点移动到pos位置处;若col-1节点不存

在则不处理。

(九) 显示文本

(1)遍历行、列链表,并将数据输出到控制台;

行链表表头Node* lineRow* next列链表表头行1Node* lineRow* nextchar chNode* next列1char chNode* next列2char chNode* next列3char chNode* next行2Node* lineRow* nextchar chNode* nextchar chNode* next行3Node* lineRow* nextchar chNode* next行4Node* lineRow* nextchar chNode* nextchar chNode* next (图2)

? 函数分析 源程序代码

#include

4