1、 数据结构数据结构课程设计课程设计 题题 目目 文章编辑系统文章编辑系统 文章编辑系统文章编辑系统 2 2、内容综述内容综述: 此系统要求功能:输入一页文字,程序可以统计出文字、数字、空格的个数。 基本要求静态存储一页文章,每行最多不超过 80 个字符,共 N 行;s 要求(1)分别统计出其中英文字母 数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)删除某一 子串,并将后面的字符前移。 可行性分析: 2 2、系统设计系统设计 2.1 需求分析: 存储结构使用线性表,分别用几个子函数实现相应的功能; 输入数据的形式和范围:可以输入大写、小写的英文字母、
2、任何数字及标点符号。 输出形式: (1) 、分行输出用户输入的各行字符; (2) 、分 4 行输出“全部字母数“、“数字个数“、“空格个数“、“文章总字数“ (3) 、输出删除某一字符串后的文章; 2.2 总体设计 根据题目,可得主程序设计流程图如下所示: 图 2-1 文章输入、浏览、统计串、统计及删除的详细流程如图 22 所示: 回车回车 回车回车 回回车车 Ctrl+E 回车回车 回车回车 回车回车 回车回车 回车回车 回车回车 开始 菜单 输入文章 浏览文章 统计信息 统计字符串 删除字符串 退出 输入文本信息(datai=str0,设计数器 k=0 查找这个字符后面的字符与要查找的字符
3、串是否匹配即 p-datai+j=strj,如果匹配 k+ 重复第二步,如果 k=len2,则查找到,count+;如果没查找到,重新进行第一步 图 2-3 void delstringword(char *s,char *str) /*删除字符串*s 中的字符串*str*/ 实现思想: 从字符串 s 中寻找 str 第一次出现的位置 *p=strstr(s,str); len=strlen(s);i=len-strlen(p)即前 i 项恰好不含要删除的字符串,将前 i 项复制到 tmp 中 j=i+strlen(str) 即要删除的字符串在 i+1 和 j 之间,将 j 之后的字符串复制到
4、 tmp 中 将 tmp 赋给串 s,返回 s 开始 count=0;h=0;len1=0; len2=strlen(str); p-datai=str0 i+ k=0;j=0; p-datai+j=strj k+;j+; k=len2 count+; i=i+k-1; 结束 Y N Y N N Y 图 2-3 23 详细设计: #include #include #include #include typedef struct line char *data; struct line *next; LINE; void Create(LINE * LINE *p=new LINE; /*首先
5、为链表 建立一个附加表头结点*/ head=p; /*将 p 付给 表头指针*/ char ch100; while(1) gets(ch); /*输入字符串!*/ if(strlen(ch)80) str p i j s for(m=0;mdata=new charstrlen(ch)+1; /*为结点分配空间 */ strcpy(p-data,ch); if(chstrlen(ch)-1=5) /*除去最后一个控制符 E */ p-datastrlen(ch)-1=0; break; p-next=NULL; /*最后的一个指针为空 */ head=head-next; /*文本字数统计*/ int Count_Space(LINE* int asc_space=32; int count=0; int i; int Len; do Len=strlen(p-data); for(i=0;idatai=asc_space) count+; while(p=p-next)!=NULL); return count; int Count_Num(LINE * int count=0; int Len; int i; do Len=strlen(p-data); for(i=0;idatai=48 return cou