文章编辑课程设计报告及代码Word格式.docx
《文章编辑课程设计报告及代码Word格式.docx》由会员分享,可在线阅读,更多相关《文章编辑课程设计报告及代码Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
VisualC++6.0以上编译环境
任务
要求
功能:
静态存储一页文章,每行最多不超过80个字符,共N行;
具有如下作用:
(1)分别统计出其中英文字母数和空格数及整篇文章总字数;
(2)统计某一字符串在文章中出现的次数,并输出该次数;
(3)删除某一子串,并将后面的字符前移。
工作进度计划
序号
起止日期
工作内容
1
6月14日~15日
查找资料,设计程序
2
6月16日~17日
完善程序,做答辩PPT
3
6月18日
完成设计,课题答辩
4
6月19日~20日
完成报告
指导教师:
年月日
摘要:
随着社会的高速发展,现在人们对信息的处理要求越来越高,使得文章内容、数量也越变庞大,所以,随之而来的就是对文章的处理变得越来越复杂。
设计此程序以方便人们对文章的处理。
此程序的功能有查找文章中某个字符串出现的次数,统计文章中数字,字母,空格等信息出现的次数,分行显示用户输入的文章,输入一字符串并删除文章中所有该字符串,最后,此程序功能简单,操作方便,所以,试验证明,本程序是一款很实用的程序。
关键字:
文章编辑;
字符查找;
统计;
删除
1需求分析
这一次数据结构课程设计,我做的课题是文章编辑。
任务与要求包括:
输入一页文字,程序可以统计出文字、数字、空格的个数。
要求:
存储结构使用线性表,分别用几个子函数实现相应的功能;
voidInitList(wzbj*L)//查找文章结尾有无结束符“#”
voidStrNo(wzbj*L)//统计某一字符串出现的次数
wzbj*DelStr(wzbj*L)//删除某一字段
voidprint1(wzbj*L)//分行输出用户的输入的各行字符
voidprint2(wzbj*L,int&
p1,int&
p2,int&
p3,int&
n)//统计字符信息
输入数据的形式和范围:
可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:
(1)分行输出用户输入的各行字符;
(2)分4行输出"
全部字母数"
、"
数字个数"
空格个数"
文章总字数"
(3)输出删除某一字符串后的文章;
运行环境包括:
Windows2000以上操作系统、VisualC++6.0以上编译环境。
2概要设计
对于文章的处理,我用的是for语句查找,即将符合条件的字符查找出来,然后通过函数实现字符的统计,删除等操作。
同时,存储用线性表的链表结构,然后通过设计四个函数,实现设计要求的4个基本功能。
2.1主要模块的描述
while(L->
next)
{
for(p=L,q=s;
*q!
='
\0'
&
&
p->
next;
p=p->
next,q++)
if(p->
wz!
=*q)break;
if(*q=='
)n++;
L=L->
}
将链表指针指向输入的字符串开始字符,和文章中字符的首位,然后使用循环语句,将字符串的每一个字符依次比较,判断相同的字符,以便实现其他的查找,统计,删除等功能。
2.2程序流程框图如图1所示
图1流程图
2.3各功能函数描述
本次设计共分为四个函数,分别实现四个功能:
分行输出用户的输入的各行字符,函数为:
voidprint1(wzbj*L);
文章中的字符数,空格数,数字等统计,函数为:
n);
字符串删除,函数为:
wzbj*DelStr(wzbj*L);
统计某一字符串出现的次数,函数为:
voidStrNo(wzbj*L)
3详细设计和实现
3.1存储结构设计
线性表是最基本、最简单、也是最常用的一种数据结构。
线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。
线性表的逻辑结构简单,便于实现和操作。
因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。
在实现线性表数据元素的存储方面,一般可用顺序存储结构和链式存储结构两种方法。
本程序中采用链式存储结构。
3.2主要算法设计
本课程设计中用指针链表,配合循环语句,完成字符串比较功能,从而完成统计字符串,删除字符串,统计字符信息的功能。
字符串删除:
如果,输入字符的第一个字母与文本中的元字符有相同的时候,执行第一个for循环语句,对原文中的字符依次和输入的字符串比较,有不相同的跳出,如果完全相同,则将P指针给H指针,从而达到删除的作用。
然后,进行上述操作,完成删除操作。
wzbj*DelStr(wzbj*L)//删除某一字段
{
wzbj*H=L;
chars[80],*q;
wzbj*p;
cout<
<
"
输入一子串:
"
;
cin>
>
s;
if(H->
wz==*s){
for(p=H->
next,q=s+1;
*q!
='
p=p->
next,q++)
=*q)break;
if(*q=='
)H=p;
//删除
next){
for(p=L->
next,q=s;
*q!
p=p->
)L->
next=p;
elseL=L->
returnH;
}
统计某一字符,操作也是如此,两个字符比较,如果发现字符相同时统计数字N就加1
函数为:
voidStrNo(wzbj*L)//统计某一字符串出现的次数
intn=0;
输入一字符串:
next){
for(p=L,q=s;
wz!
字符串"
s<
出现"
n<
次\n"
统计字符信息用循环语句,如果有信息符合就让统计数字叠加,最后得出统计的字符数。
voidprint2(wzbj*L,int&
n)
//统计字符信息
{n=p1=p2=p3=0;
for(;
L->
L=L->
next,n++)
if(isalpha(L->
wz))p1++;
elseif(isdigit(L->
wz))p2++;
//统计数字
elseif(L->
\n'
)p3++;
//统计空格
wz=='
\n'
)n--;
//统计文章总字数
cout<
\n全部字母数:
p1;
\n数字个数:
p2;
\n空格个数:
p3;
\n文章总字数:
endl;
}
同时在其中引用了两个函数进行数字和字符的统计,分别为
isalphaisdigit
3.3程序运行流程说明
程序运行时首先从主函数开始,先判断选择的操作。
然后根据要求进行相应的查找、删除、统计、显示等操作,一次操作完之后,会回到开始的选择界面,用户可重新选择操作,如果用户选择退出,程序就停止。
4调试与操作说明
首先,在程序中输入一段文字,以“#”符做结尾。
按回车enter显示选择操作,便实现统计这段文字中英文字符,空格,数字,和文章总字数的功能,如下图4-1和4-2所示:
图4-1
图4-2
接着,选择1—回车enter出现文章中全部字母数、数字个数、空格个数及文章总字数,如下图4-3所示:
图4-3
按选择2—回车enter输入一字符串:
you统计其在文章中出现的次数,如图4-4所示:
图4-4
对文字的输出处理,按选择4—回车enter分行显示用户输入的各行字符,如下图4-5所示:
图4-5
按选择3—回车enter实现对输入的某一子串进行删除并将其后面字符前移,输出删除后的文章,如下图4—6所示:
图4-6
按选择0—回车enter出现Pressanykeytocontinue结束程序
图4-7
总结
致谢
参考文献
1苏仕华.数据结构课程设计.北京:
机械工业出版社,2005
2王红梅,胡明,王涛,数据结构(C++版)学习辅导与实验指导.北京:
清华大学出版社,2005
3数据结构(用面向对象方法与C++语言描述)
4丁有和,郑进,周怡君.VC++实用教程(第3版).北京:
电子工业出版社,2007
5于永彦,王志坚,娄渊胜.C++程序设计基础案例教程.北京:
北京大学出版社,2009
6AdamDrozdek.数据结构与算法,北京:
清华大学出版社,2006
指导教师评语
学号
姓名
班级
选题
评价内容
权重(%)
得分
考勤记录、学习态度、工作作风与表现。
5
自学情况:
上网检索机时数、文献阅读情况(笔记)。
10
论文选题是否先进,是否具有前沿性或前瞻性。
成果验收:
是否完成设计任务;
能否运行、可操作性如何等。
20
报告的格式规范程度、是否图文并茂、语言规范及流畅程度;
主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;
是否提出了自己的独到见解。
30
6
文献引用是否合理、充分、真实。
7
答辩情况:
自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。
25
合计
指导教师(签章):