数据结构专业课程设计建文本编辑器样本.docx
- 文档编号:3154590
- 上传时间:2022-11-18
- 格式:DOCX
- 页数:32
- 大小:189.84KB
数据结构专业课程设计建文本编辑器样本.docx
《数据结构专业课程设计建文本编辑器样本.docx》由会员分享,可在线阅读,更多相关《数据结构专业课程设计建文本编辑器样本.docx(32页珍藏版)》请在冰豆网上搜索。
数据结构专业课程设计建文本编辑器样本
数据结构专业课程设计建文本编辑器
计算机学院网络工程专业
数据结构课程设计
题目:
简易文本编辑器
班级:
网工10101班
姓名:
同组人姓名:
起迄日期:
2011-12-27~2011-12-30
课程设计地点:
E3-A513
指导教师:
徐晓蓉
评阅意见:
成绩评定:
评阅人:
日期:
完成日期:
2011年12月
计算机学院网络工程专业
数据结构课程设计
题目:
简易文本编辑器
班级:
网工10101班
姓名:
学号:
起止日期:
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)遍历行、列链表,并将数据输出到控制台;
(图2)
●函数分析源程序代码
#include
#include
#include
usingnamespacestd;
//#include""
//1、具有图形菜单界面;
//2、查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除
//3、可正确存盘、取盘;
//4、正确显示总行数。
//字符节点
structNode
{
charch;
Node*next;
};
//行节点
structRow
{
Node*line;
Row*next;
};
//创建一个Node对象
Node*createNode(charch)
{
Node*p=newNode;
p->ch=ch;
p->next=NULL;
returnp;
}
//创建一个Row对象
Row*createRow(Node*line)
{
Row*p=newRow;
p->line=line;
p->next=NULL;
returnp;
}
//定位到index处
Node*locate(Node*line,intindex)
{
Node*p=line;
inti=-1;
while(p!
=NULL&&i { p=p->next; i++; } returnp; } Row*locate(Row*list,intindex) { Row*p=list; inti=-1; while(p! =NULL&&i { p=p->next; i++; } returnp; } //插入节点 boolinsert(Node*list,intindex,charc) { Node*p=locate(list,index-1); if(p) { Node*node=createNode(c); node->next=p->next; p->next=node; returntrue; } returnfalse; } boolinsert(Row*list,intindex,Node*line) { Row*p=locate(list,index-1); if(p) { Row*row=createRow(line); row->next=p->next; p->next=row; returntrue; } returnfalse; } //删除节点 boolremove(Node*list,intindex) { Node*p=locate(list,index-1); Node*q=NULL; if(p&&p->next) { q=p->next; p->next=q->next; deleteq; returntrue; } returnfalse; } //清空链表 voidclear(Node*line) { Node*p=line->next; Node*q; while(p) { q=p->next; deletep; p=q; } } boolremove(Row*list,intindex) { Row*p=locate(list,index-1); Row*q=NULL; if(p&&p->next) { q=p->next; p->next=q->next; clear(q->line);//清空字符链表 deleteq->line;//删除字符链表表头 deleteq; returntrue; } returnfalse; } voidclear(Row*text) { Row*p=text->next; Row*q; while(p) { q=p->next; clear(p->line); deletep->line;//删除字符链表表头 deletep; p=q; } } voidLine(inti) { if(i==1) { cout<<"-----------------------------------------------------------------------"< } elseif(i==2) { cout<<"======================================================================="< } } intYesOrNo() { charc; cin>>c; if(c=='Y'||c=='y') { return1; } elseif(c=='N'||c=='n') { return0; } return-1; } //主菜单 voidMenu() { cout<<"********************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 专业课程 设计 文本 编辑器 样本
![提示](https://static.bdocx.com/images/bang_tan.gif)