数据结构课程设计建文本编辑器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机学院网络工程专业
数据结构课程设计
题目:简易文本编辑器
班级:网工10101班
姓名:
同组人姓名:
起迄日期: 2011-12-27~2011-12-30 课程设计地点: E3-A513
指导教师:徐晓蓉
完成日期:2011年12月
计算机学院网络工程专业
数据结构课程设计
题目:简易文本编辑器
班级:网工10101班
姓名:
学号:201017030143
起止日期: 2011-12-27~2011-12-30 设计地点: E3-A513
指导教师:
完成日期:2011年12月
目录
一. 设计的目的和要求 (1)
课程设计的目的 (1)
基本要求 (1)
二. 课程设计任务要求 (1)
需求分析 (1)
三. 具体设计 (1)
主程序流程图 (1)
详细设计功能分析 (1)
函数分析源程序代码 (6)
四. 调试分析和测试结果 (19)
代码测试截图结果分析 (19)
问题解决与分析 (23)
五. 总结心得与体会 (24)
附录一参考文献 (25)
一.课程设计目的和要求
●设计目的
数据结构课程设计是一门实践性非常强的课程,不但结合了C语言的设计基本知识,更加注重技能的培养,是学生能够允许渐进的把握C语言C++的程序设计的技能。通过此课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高,同时提以下几个方面的能力。
1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科
学的工作方法和作风。
●设计要求
1.在C环境下可以运行
2.完成老师任务书上面的要求
二.课程设计任务要求
●需求分析
1.具有图形菜单界面;
2.查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移
动),删除
3.可正确存盘、取盘;
4.正确显示总行数。
三.具体设计
●主程序流程图如(图1)所示
●程序中用链表来保存文本,每一行为一个单向链表,每一行的表头保存在
一个行链表中,形成了一个2维链表,结构如下(图2)所示:
●详细设计功能实现
(一)打开文件
1.提示用户输入文件路径
2.判断文件路径是否有效,若无效,则提示错误信息并返回,否则继续执行。
3.若文件成功打开并且文件指针没有到文件尾,则从文件中一次读取一个字符,并将该
字符添加到一列单链表节点中,直至遇到换行符(ASCII码10)。当列单链表形成后,
它的首地址将被保存至行单链表的相应节点的数据域中,如此动作,直至文件指针
指向文件尾部而结束。
(二)新建文件
1.若行链表中有数据存在,则提示用户保存文件。
2.提示用户输入新建文件的保存路径。
3.测试新文件路径是否有效。
(三)保存文件
1.打开文件。
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.询问用户是否要进行替换。若选是,则提示用户输入要替换后的字符串,然后先在链
表中删除原字符串,再在该位置插入要替换为的字符串。
(七)行移动
1.提示用户输入要移动的行row和移动后的位置pos。
2.将行链表中的row-1节点移动到pos-1位置。
(八)列移动
1.提示用户输入要移动的列col和移动后的位置pos。
2.遍历每一行(列链表),将每一行的col-1节点移动到pos位置处;若col-1节点不存
在则不处理。
(九)显示文本
(1)遍历行、列链表,并将数据输出到控制台;
行链表表头
行1
行2
行3
行4
(图2)
函数分析源程序代码
#include
#include
#include
using namespace std;
//#include "Struct.h"
//1、具有图形菜单界面;
//2、查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除
//3、可正确存盘、取盘;
//4、正确显示总行数。
//字符节点
struct Node