文章编辑数据结构说明书设计.docx
- 文档编号:26136400
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:13
- 大小:268.78KB
文章编辑数据结构说明书设计.docx
《文章编辑数据结构说明书设计.docx》由会员分享,可在线阅读,更多相关《文章编辑数据结构说明书设计.docx(13页珍藏版)》请在冰豆网上搜索。
文章编辑数据结构说明书设计
一、设计题目……………………………………………………1
二、设计目的……………………………………………………1
三、算法思想分析………………………………………………1
四、算法描述与实现……………………………………………1
五、结论…………………………………………………………3
六、附录…………………………………………………………4
一、设计题目
文章编辑
二、设计目的
1、较熟练地掌握C语言的基本内容及程序设计的基本方法与编程技巧。
2、较熟练地掌握在系统上编辑、编译、连接和运行C程序的方法。
3、通过设计一个完整程序,掌握数据结构的算法编写、类C语言算法转换成C程序并上机调试的基本方法。
三、算法思想分析
设计思路
定义结构体structline,文本行彩顺序存储,行与行之间彩链式存储
图1:
功能模块图
四、算法描述与实现
1、主要函数
intCountNumber(LINE*&head)/*统计数字数*/
图2:
统计数字函数流程图
intFindString(LINE*&head,char*str)/*统计str在文章中出现的次数*/如图3所示。
图3:
统计str在文章中的出现次数
五、结论
这次课程设计使用权我对数据结构方面的知识有了更加深入的了解,也使我认识到自己在学习编程方面还有很多的不足。
今后我要多读一些纺织方面的书籍,不能只拘泥于课本上的知识,并注重理论与实践的结合,多上机练习编写程序,提高自己的实际动手能力和独立思考的能力,不断充实自己,更好的掌握编程思想。
六、附录
1、源程序清单
#include
#include
typedefstructline
{
char*data;
structline*next;
}LINE;
voidCreate(LINE*&head)
{
LINE*p;
printf("请输入一页文章,以#为结尾(每行最多输入80字符!
):
\n");
p=(structline*)malloc(sizeof(structline));
head=p;
chartmp[200];
for(;1;)
{
gets(tmp);
if(strlen(tmp)>80)
{
printf("每行最多输入80个字符");
break;
}
if(tmp[0]==35)break;
p=p->next=(structline*)malloc(sizeof(structline));
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;
}
intCountLetter(LINE*&head)
{
LINE*p=head;
intcount=0;
do
{
intLen=strlen(p->data);
for(inti=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); returncount; } intCountNumber(LINE*&head) { LINE*p=head; intcount=0; do { intLen=strlen(p->data); for(inti=0;i if(p->data[i]>=48&&p->data[i]<=57)count++; while((p=p->next)! =NULL); returncount; } intCountSpace(LINE*&head); { LINE*P=head; intcount=0; do { intLen=strlen(p->data); for(inti=0;i if(p->data[i]==32)count++; } while((p=p->next)! =NULL); returncount; } /*统计文章的总字数*/ intCountAll(LINE*&head) { LINE*p=head; intcount=0; do { count+=strlen(p->data); } while((p=p->next)! NULL); returncount; } intFindString(LINE*&head,char*str) { LINE*p=heat; intcount=0; inth=0; intlen1=0; intlen2=strlen(str); inti,j,k; do { len1=strlen(p->data); for(i=0;i { if(p->data[i]==str[0]) { k=0; for(j=0;j if(p->data[i+j]==str[j])k++; if(k==len2){count++;i=i+k-1;} } } } while((p=p->next)! =NULL); returncount; } voiddelstringword(char*s,char*str) { char*p=strstr(s,str); chartmp[80]; intlen=strlen(s); inti=len-strlen(p); intj=i+strlen(str); intcount=0; for(intm=0;m for(intn=j;n tmp[count]='\0'; strcpy(s,tmp); voidDelString(LINE*&head,char*str) { LINE*p=head; do { if(strstr(p->data,str)! =NULL)delstringword(p->data,str); } while((p=p->next)! =NULL); } voidOutPut(LINE*&head) { LINE*p=head; do { printf("%s\n",p->data); } while((p=p->next)! =NULL); voidmain() { inti=0; intoperate; LINE*head; Create(head); printf("输入的文章为: \n"); OutPut(head); printf("\n"); printf("全部字母数: %d\n",CountLetter(head)); printf("数字个数: %d\n",CountNumber(head)); printf("空格个数: %d\n",CountSpace(head)); printf("文章总字数: %d\n",CountAll(head)); charstr1[20],str2[20]; printf("\n"); printf("**********************\n"); printf("*菜单*\n"); printf("**********************\n"); printf("*1——统计字符串*\n"); printf("*2——删除字符串*\n"); printf("*0——退出*\n"); printf("**********************\n"); do{printf("请输入你要选择的操作: "); scanf("%d",&operate); switch(operate) { case1: printf("请输入要统计的字符串: "); scanf("%s",&strl); printf("%s出现的次数为: %d\n",str1,FindSteing(head,str1)); printf("\n"); CountAll(head); CountNumber(head); CountLetter(head); CountSpace(head); break; case2: printf("请输入要删除的某一字符串: "); scanf("%s",&str2); DelString(head,str2); printf("删除%s后的文章为: \n",str2); OutPut(head); break; case0: ;break; } }while(operate! =0); } 2、课程设计运行结果与分析 图4: 初始界面 图5: 运行界面 输入1: 统计字符数 图6: 统计字符界面 输入2: 删除字符 图7: 删除字符 输入0: 退出程序 图8: 退出程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文章编辑 数据结构说明书设计 文章 编辑 数据结构 说明书 设计