数据结构课程设计—文章编辑_第1页
数据结构课程设计—文章编辑_第2页
数据结构课程设计—文章编辑_第3页
数据结构课程设计—文章编辑_第4页
数据结构课程设计—文章编辑_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 成 绩10信计2011-2012(一)数 据 结 构 课 程 设 计设计题目 文章编辑 设计时间 2011.12.29 至 2012.1.4 学生姓名 学生学号 所在班级 指导教师 徐州工程学院数学与物理科学学院文章编辑一、需求分析 本次课程设计,我做的是文章编辑。任务与要求包括:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共n行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。存储结构使用线性表,分别用几个子函数实现相应的功能。输入数

2、据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出全部字母数、数字个数、空格个数、文章总字数(3)输出删除某一字符串后的文章。运行环境包括: windows xp操作系统、visual c+6.0编译环境。二、概要设计对于文章的处理,我用的是for语句查找,即将符合条件的字符查找出来,然后通过函数实现字符的统计,删除等操作。同时,存储用线性表的链表结构,然后通过设计四个函数,实现设计要求的4个基本功能。1、 主要模块的描述用while语句进行编写:while(l-next)for (p = l, q = s; *q !

3、= 0 & p-next; p = p-next, q+)if (p-c != *q) break;if (*q = 0) n+;l = l-next;将链表指针指向输入的字符串开始字符,和文章中字符的首位,然后使用循环语句,将字符串的每一个字符依次比较,判断相同的字符,以便实现其他的查找,统计,删除等功能。2、程序流程框图如图所示输入文章,确定操作选择进行编辑退出完成 退出是否3、各功能函数描述本次设计共分为四个函数,分别实现四个功能:(1)统计文章中的字符数,空格数,数字等void print2(ca *l, int &p1, int &p2, int &p3, int &n) / 统计字

4、符信息;(2)删除输入的某一段字符void print2(ca *l, int &p1, int &p2, int &p3, int &n) / 统计字符信息;(3)字符串删除:vca *delstr(ca *l) /删除某一字段,统计某一字符,函数为:void strno(ca *l)三、详细设计1、存储结构设计线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。在实现线性表数据元素的存储方

5、面,一般可用顺序存储结构和链式存储结构两种方法。本程序中采用链式存储。2、算法设计本课程设计中用指针链表,配合循环语句,完成字符串比较功能,从而完成统计字符串,删除字符串,统计字符信息的功能。字符串删除:如果,输入字符的第一个字母与文本中的元字符有相同的时候,执行第一个for循环语句,对原文中的字符依次和输入的字符串比较,有不相同的跳出,如果完全相同,则将p指针给h指针,从而达到删除的作用。然后,进行上述操作,完成删除操作。3、程序运行流程说明程序运行时首先从主函数开始,先判断选择的操作。然后根据要求进行相应的查找,删除,统计,显示的操作,一次操作完之后,会回到开始的选择界面,用户可重新选择操

6、作,如果用户选择退出,程序就停止。#include#include #include /文本每行以字符串形式存储,行与行之间以链表存储typedef struct line char *data; struct line *next;line;templateclass wenbenpublic:create(line * &head);countletter(line * &head);countnumber(line * &head);countspace(line * &head);countall(line * &head);findstring(line * &head,char *

7、str);delstringword(char *s,char *str);output(line * &head);void create(line * &head) cout请输入文本,以ctrl+e(e)为结尾,每行最多输入80字符!80) coutnext=new line; p-data=new charstrlen(tmp)+1; strcpy(p-data,tmp); if(tmpstrlen(tmp)-1=5) p-datastrlen(tmp)-1=0; break; p-next=null; head=head-next;/=/统计字母数int countletter(li

8、ne * &head) line *p=head; int count=0;do int len=strlen(p-data); for(int i=0;idatai=a&p-dataidatai=a&p-datainext)!=null); return count; /=/统计数字数int countnumber(line * &head) line *p=head; int count=0; do int len=strlen(p-data); for(int i=0;idatai=48 & p-datainext)!=null); return count;int countspace

9、(line * &head) line *p=head; int count=0; do int len=strlen(p-data); for(int i=0;idatai=32)count+; while(p=p-next)!=null); return count;int countall(line * &head) line *p=head; int count=0; do count+=strlen(p-data); while(p=p-next)!=null); return count;int findstring(line * &head,char *str) line *p=

10、head; int count=0; int h=0;int len1=0; int len2=strlen(str); int i,j,k; do len1=strlen(p-data); for(i=0;idatai=str0)k=0; for(j=0;jdatai+j=strj) k+;if(k=len2)count+;i=i+k-1; while(p=p-next)!=null); return count;void delstringword(char *s,char *str)char *p=strstr(s,str); char tmp80; int len=strlen(s);

11、 int i=len-strlen(p); int j=i+strlen(str); int count=0; for(int m=0;mi;m+)tmpcount+=sm; for(int n=j;ndata,str)!=null)delstringword(p-data,str);while(p=p-next)!=null); void output(line * &head) line *p=head; do coutdatanext)!=null); void main()line *head; create(head);cout文章为:endl;output(head);couten

12、dl全部字母数:countletter(head)endl;cout数字个数:countnumber(head)endl;cout空格个数: countspace(head)endl;cout文章总字数: countall(head)endl;char str120,str220;coutendlstr1;coutstr1出现的次数为:findstring(head,str1)endl;coutendlstr2;delstring(head,str2); cout删除str2后的文章为:endl;output(head); 四、调试分析设计程序初犯了一些错误,开始的布局比较混乱,程序为一块一块

13、,连接不当,后来查看了别人的优秀作品仿照它们的顺序,完成了相对较为有序的程序。并且一开始在自己的电脑上运行时,出现了不少错误不能运行,为设计增加了难度。根据调试时提示的错误加上同学的帮忙,最后运行成功。为了避免在调试过程中出现输入错误的情况,写代码时写明注释对测试和寻找错误节省了很多时间。首先,在程序中输入一段文字,便实现统计这段文字中英文字符,空格,数字,和文章总字数的功能,如下图:接着,对上面的文字进行统计字符数的操作,比如输入字符 chen ,统计到的字符数为4,如下图所示:对输入的文字进行字符删除的操作,比如输入字符yue,如图所示五、课设总结本程序的设计目的是能更好更快的解决文章编辑问题。经过测试和试用,我相信本程序达到了方便和实用的设计目的,并在程序的实现方面有着独到之处。这次课程设计使我对做自己真正的了解了。我真正体会到了在整个过程给我带来的无奈与快乐。可是我对数据结构掌握的还不行,在设计数据结构时候许多东西东都不会。我终于认识到问题的根源所在。然后我只好再次认真细致地对开发过程进行了规划和分析,才

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论