课程设计报告文章编辑.docx

上传人:b****3 文档编号:2178025 上传时间:2022-10-27 格式:DOCX 页数:18 大小:160.20KB
下载 相关 举报
课程设计报告文章编辑.docx_第1页
第1页 / 共18页
课程设计报告文章编辑.docx_第2页
第2页 / 共18页
课程设计报告文章编辑.docx_第3页
第3页 / 共18页
课程设计报告文章编辑.docx_第4页
第4页 / 共18页
课程设计报告文章编辑.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

课程设计报告文章编辑.docx

《课程设计报告文章编辑.docx》由会员分享,可在线阅读,更多相关《课程设计报告文章编辑.docx(18页珍藏版)》请在冰豆网上搜索。

课程设计报告文章编辑.docx

课程设计报告文章编辑

淮阴工学院

数据结构课程设计报告

选题名称:

文章编辑

系(院):

计算机工程学院

专业:

计算机科学与技术

班级:

计算机1091

姓名:

李杨学号:

1091301111

指导教师:

周海岩张亚红

学年学期:

2010~2011学年第1学期

2010年12月31日

设计任务书

课题

名称

文章编辑

设计

目的

随着社会的高速发展,现在人们对信息的处理要求越来越高,设计此程序,以方便人们快速的处理信息文字,提高工作效率,从而适应快速的社会发展步伐

实验

环境

Windows2000以上操作系统

VisualC++6.0以上编译环境

任务

要求

功能:

静态存储一页文章,每行最多不超过80个字符,共N行;具有如下作用:

(1)分别统计出其中英文字母数和空格数及整篇文章总字数;

(2)统计某一字符串在文章中出现的次数,并输出该次数;

(3)删除某一子串,并将后面的字符前移。

工作进度计划

序号

起止日期

工作内容

1

12月27日~12月28日

查找资料,设计程序

2

12月30日

完善程序,准备答辩

3

12月31日

完成设计,撰写报告

指导教师:

2010年12月31日

 

摘要:

随着社会的高速发展,我们已经进入全面的信息时代,网络的运用、电脑的应用都变得及其的普遍。

人们对于信息的处理要求也随着信息时代的进步变的越来越高,文章的内容,数量,广泛性也随着变得越来越庞大,随之而来的对文章的处理要求也变得越来越高,这也是设计此程序的目的。

为了方便人们对于文章的处理,提高人们对文章的处理效率,适应现代人们高度强烈的时间观念。

这个文章编辑软件的功能有查找文章中某个字符串出现的次数,删除某个子串,统计文章中数字,字母,空格等信息出现的次数,并且最后分行显示用户输入的文章,此程序虽然功能有些简单,但操作及其方便,试验证明,本程序是一款很实用的程序。

可以为现代人们提供高效率,高质量的文章编辑的基本功能。

 

关键词:

文章编辑;单链表;字符统计;查找;删除

目录

1需求分析1

1.1课程设计题目、任务及要求1

1.2课程设计思想1

1.3软硬件运行环境及开发工具1

2概要设计1

2.1线性表的原理1

2.2数据结构设计2

3详细设计和实现3

3.1算法流程图如图3-1所示3

3.2主要算法设计3

3.3详细算法设计5

4调试与操作说明8

总结12

致谢13

参考文献14

1需求分析

1.1课程设计题目、任务及要求

课程设计题目是文章编辑。

任务及要求包括:

输入一页文字,程序可以统计出文字、数字、空格的个数。

静态存储一页文章,每行最多不超过80个字符,共N行;要求

(1)分别统计出其中英文字母数和空格数及整篇文章总字数;统计某一字符串在文章中出现的次数,并输出该次数;删除某一子串,并将后面的字符前移。

存储结构使用线性表,分别用几个子函数实现相应的功能;

输入数据的形式和范围:

可以输入大写、小写的英文字母、任何数字及标点符号。

输出形式:

(1)分行输出用户输入的各行字符;

(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;

1.2课程设计思想

利用线性表的链式存储结构对一页文章进行静态存储,配合循环语句,完成字符串比较功能,从而完成统计字符串,删除字符串,统计字符信息的功能。

1.3软硬件运行环境及开发工具

Windows2000以上操作系统、VisualC++6.0以上编译环境。

2概要设计

2.1线性表的原理

线性表是最基本、最简单、也是最常用的一种数据结构。

线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。

线性表的逻辑结构简单,便于实现和操作。

因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。

在实现线性表数据元素的存储方面,一般可用顺序存储结构和链式存储结构两种方法。

本程序中采用链式存储。

本次课程设计,我使用的是单链表,单链表是一种最简单的链表表示,也叫做线性链表。

用它来表示线性表时,用指针表示结点间的逻辑关系。

因此单链表的一个存储结点包含两个部分(域,Field)

其中,data部分称为数据域,用于存储线性表的一个数据元素,其数据类型由应用问题决定,link部分称为指针域或链域,用于存放一个指针,该指针指示该链表中下一个结点的开始存储地址。

单链表的特点是长度可以很方便地进行扩充。

当链表要增加一个新的结点时,只要可用存储空间允许,就可以为链表分配一个结点空间,供链表使用。

因此,线性中数据元素的顺序与其链表表示中结点的物理顺序可能不一致,一般通过单链表的指针将各个数据元素按照线性表的逻辑顺序链接起来。

在线性表的顺序存储中,逻辑上相邻的元素,其对应的存储位置也相邻,所以当进行插入或删除运算时,通常需要平均移动半个表的元素,这是相当费时的操作。

在线性表的这种基于链表的存储表示中,逻辑上相邻的元素,其对应的存储位置是通过指针来链接的,因而每个结点的存储位置可以任意安排,不必要求相邻,当进行插入或删除运算时,只需修改相关结点的指针域即可,这是既方便又省时的操作。

但是,由于链接表的每个结点带有指针域,因而在存储空间上比顺序存储要付出较大的代价。

2.2数据结构设计

在本次课程设计中,我采用的是结构体定义链表结点类,定义如下:

structTextNode

{

chartext;

TextNode*next;

};

3详细设计和实现

3.1算法流程图如图3-1所示

图3-1流程图

3.2主要算法设计

3.2.1统计字符信息

统计字符信息用循环语句,如果有信息符合就让统计数字叠加,最后得出统计的字符数。

函数为:

voidprint2(int&p1,int&p2,int&p3,int&n)//统计字符信息

{

TextNode*l=first;

n=p1=p2=p3=0;

for(;l->next;l=l->next,n++)

if(isalpha(l->text))p1++;//统计字母

elseif(isdigit(l->text))p2++;//统计数字

elseif(l->text=='')p3++;//统计空格

elseif(l->text=='\n')n--;//统计字数

cout<<"\n全部字母数:

"<

cout<<"\n数字个数:

"<

cout<<"\n空格个数:

"<

cout<<"\n文章总字数:

"<

}

在其中引用了两个函数进行数字和字符的统计,分别为:

isalphaisdigit

3.2.1统计某字符出现次数

对原文中的字符依次和输入的字符串比较,如果发现字符相同时统计数字N就加1

函数为

voidStrNumber()//统计某一字符出现的次数

{

TextNode*l=first;

intn=0;

chars[80],*q;

TextNode*p;

cout<<"输入一字符串:

";

cin>>s;

while(l->next)

{

for(p=l,q=s;*q!

='\0'&&p->next;p=p->next,q++)

if(p->text!

=*q)break;

if(*q=='\0')n++;

l=l->next;

}

cout<<"字符串"<

}

3.3详细算法设计

#include

#include

#include

structTextNode

{

chartext;

TextNode*next;

};

classTextList

{

private:

TextNode*first;

public:

TextList()

{

first=newTextNode();

}

voidCreatTextList()

{

cout<<"请输入一页文字(以#结束):

"<

TextNode*l=first;

while((l->text=getchar())!

='#')

{

l->next=newTextNode;

l=l->next;

}

l->next=NULL;

}

voidStrNumber()//统计某一字符出现的次数

{

TextNode*l=first;

intn=0;

chars[80],*q;

TextNode*p;

cout<<"输入一字符串:

";

cin>>s;

while(l->next)

{

for(p=l,q=s;*q!

='\0'&&p->next;p=p->next,q++)

if(p->text!

=*q)break;

if(*q=='\0')n++;

l=l->next;

}

cout<<"字符串"<

}

TextNode*DelStr()//删除某一字段

{

TextNode*l=first;

TextNode*H=l;

chars[80],*q;

TextNode*p;

cout<<"输入该子串:

";

cin>>s;

q=s;

while(H->next)

{

for(p=H->next,q=s;*q!

='\0'&&p->next;p=p->next,q++)

if(p->text!

=*q)break;

if(*q=='\0')H->next=p;

elseH=H->next;

}

returnH;

}

voidprint1()//分行输出用户的输入的各行字符

{

TextNode*l=first;

while(l->next)

{

cout<text;

l=l->next;

}

cout<

}

voidprint2(int&p1,int&p2,int&p3,int&n)//统计字符信息

{

TextNode*l=first;

n=p1=p2=p3=0;

for(;l->next;l=l->next,n++)

if(isalpha(l->text))p1++;//统计字母

elseif(isdigit(l->text))p2++;//统计数字

elseif(l->text=='')p3++;//统计空格

elseif(l

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

当前位置:首页 > PPT模板 > 自然景观

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

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