C语言版数据结构课程设计-文章编辑系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文章编辑系统

1、课程设计目的

(1)较熟练地掌握C语言的基本内容及程序设计的基本方法与编程技巧。 (2)较熟练地掌握在系统上编辑、编译、连接和运行C 程序的方法。

(3)通过设计一个完整程序,掌握数据结构的算法编写、类C 语言算法转换成C 程序并上机调试的基本方法。

2、课程设计方案论证

2.1 设计思路

(1)定义结构体 struct line ,文本行采用顺序存储,行与行之间采用链式存储

图1:功能模块图

(2)主要函数:

int CountNumber(LINE * &head) /*统计数字数*/

沈 阳 大 学

课程设计说明书 N O.2

文章编辑系统

统计字符

删除字符

统计文字

查找字符

开始

*p=head,count=0 int len=str len(p->data)

i=0

i

p->data[i]>=48 && p->data[i]<=57

count++

i++

p=p->next

!p=NULL

结束N

Y

N

Y

N

图2:统计数字函数流程图

沈阳大学

课程设计说明书 N O.3

int FindString(LINE * &head,char *str) /*统计str 在文章中出现的次数*/

沈 阳 大 学

开始

count=0;h=0;len1=0; len2=strlen(str);

p->data[i]==str[0]

i++

k=0;j=0;

p->data[i+j]==str[j]

k++;j++;

k=len2

count++; i=i+k-1;

结束

Y

N

Y

N

N

Y

图3:统计str 在文章中的出现次数

2.2 源程序清单

#include

#include

typedef struct line

{

char *data;

struct line *next;

}LINE;

void Create(LINE * &head)

{

LINE *p;

printf ("请输入一页文章,以#为结尾(每行最多输入80字符!):\n");

p=(struct line*)malloc(sizeof(struct line)); head=p;

char tmp[200];

for(;1;)

{

gets(tmp);

if(strlen(tmp)>80)

{

printf("每行最多输入80字符");

break;

}

if(tmp[0]==35)break;

p=p->next=(struct line*)malloc(sizeof(struct line));

p->data=(char*)malloc(strlen(tmp));

strcpy(p->data,tmp);

if(tmp[strlen(tmp)-1]==35)

{

p->data[strlen(tmp)-1]='\0';

沈阳大学

break;

}

}

p->next=NULL;

head=head->next;

}

int CountLetter(LINE * &head)

{

LINE *p=head;

int count=0;

do

{

int Len=strlen(p->data);

for(int i=0;i

if((p->data[i]>='a'&&p->data[i]<='z')||(p->data[i]>='A'&&p->data[i]<='Z'))

count++;

}

while((p=p->next)!=NULL);

return count;

}

int CountNumber(LINE * &head)

{

LINE *p=head;

int count=0;

do

{

int Len=strlen(p->data);

for(int i=0;i

if(p->data[i]>=48 && p->data[i]<=57)count++;

沈阳大学

while((p=p->next)!=NULL);

return count;

}

int CountSpace(LINE * &head)

{

LINE *p=head;

int count=0;

do

{

int Len=strlen(p->data);

for(int i=0;i

if(p->data[i]==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;

}

沈阳大学

相关文档
最新文档