5.文章编辑系统的设计与实现
5.1问题的描述
输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行;
5.2问题分析和任务定义
(1)分别统计出其中英文字母数和空格数及整篇文章总字数;
(2)统计某一字符串在文章中出现的次数,并输出该次数;
(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;
输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:
(1)分行输出用户输入的各行字符;
(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"
(3)输出删除某一字符串后的文章;
5.3 数据类型和系统设计
(1)存储结构设计
使用链表存储结构
(2)系统功能设计
- 建立文章编辑系统。输入所要编辑的文章,由函数ceatword()函数实现;
- 显示输入的文本,由函数printWord()实现;
- 统计英文字母数和空格数,以及整篇文章的总字数,由函数countWord()实现;
- 查找字符,由函数sreachWord()实现;
- 统计某一字符在文章中出现的次数和位置,由函数strcpy()实现;
- 删除字符,由函数DeleteWord()实现;
- 插入字符,由函数Insert Word()实现;
- 建立菜单;
5.4 编码实现
#include <string.h>
#include <stdio.h>
typedef struct line //定义串结构
{
char *data; //定义指向字符的指针
struct line *next; //定义指向下一个结点的指针
}LINE;
(1)创建链表,向里面输入文本数据
void OutPut(LINE * &head) //向屏幕输出文字
{
LINE *p=head; //定义指针p
do{
printf("%s\n",p->data);
}
while((p=p->next)!=NULL); //遍历链表
printf("\n");
}
(2)主函数
void menu(){
printf("***********编辑指令***********\n");
printf("1:统计文章中总字符数 \n");
printf("2:统计文章中空格个数 \n");
printf("3:统计文章中数字个数 \n");
printf("4:统计文章中英文字母数 \n");
<