数据结构专业课程设计建文本编辑器样本.docx

上传人:b****6 文档编号:3154590 上传时间:2022-11-18 格式:DOCX 页数:32 大小:189.84KB
下载 相关 举报
数据结构专业课程设计建文本编辑器样本.docx_第1页
第1页 / 共32页
数据结构专业课程设计建文本编辑器样本.docx_第2页
第2页 / 共32页
数据结构专业课程设计建文本编辑器样本.docx_第3页
第3页 / 共32页
数据结构专业课程设计建文本编辑器样本.docx_第4页
第4页 / 共32页
数据结构专业课程设计建文本编辑器样本.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

数据结构专业课程设计建文本编辑器样本.docx

《数据结构专业课程设计建文本编辑器样本.docx》由会员分享,可在线阅读,更多相关《数据结构专业课程设计建文本编辑器样本.docx(32页珍藏版)》请在冰豆网上搜索。

数据结构专业课程设计建文本编辑器样本.docx

数据结构专业课程设计建文本编辑器样本

数据结构专业课程设计建文本编辑器

 

计算机学院网络工程专业

数据结构课程设计

题目:

简易文本编辑器

班级:

网工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<<"********************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1