文章编辑.docx
- 文档编号:27928742
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:14
- 大小:98.86KB
文章编辑.docx
《文章编辑.docx》由会员分享,可在线阅读,更多相关《文章编辑.docx(14页珍藏版)》请在冰豆网上搜索。
文章编辑
中北大学
数据结构
课程设计说明书
学生姓名:
史瑶捷
学号:
1021011621
学院:
软件学院
专业:
软件开发与测试
题目:
文章编辑
指导教师
何志英
2011年12月20日
1.设计任务概述
总体框图
功能描述:
文本编辑设计,可以分别统计输入的英文、数字、空格及总字符的个数;可统计其子串出现的次数;可删除原字符串中的一子串,并将后面的字符前移。
2.本设计所采用的数据结构
文件编辑采用线性进行存储。
3.功能模块详细设计
3.1详细设计思想
存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:
可以输入大写、小写的英文字母、任何数字.输出形式:
(1)分行输出用户输入的各行字符;
(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章。
数据类型link定义如下:
typedefstructlink
{
chardata;
structlink*next;
}LNode;
3.2核心代码
1.新建文本并输入文章
voidInitList(LNode*L)
{
cout<<"输入一页文字(以#结束):
"< cout<<"(可以输入大写、小写的英文字母、任何数字及标点符号)"< while((L->data=getchar())! ='#') { L->next=new(LNode); L=L->next; } L->next=NULL; } 2.统计指定字符串出现次数并输出 voidcountStr(LNode*L) { intn=0; chars[80],*q; LNode*p; cout<<"enterastring: "; cin>>s; while(L->next) { for(p=L,q=s;*q! ='\0'&&p->next;p=p->next,q++) if(p->data! =*q) break; if(*q=='\0') n++; L=L->next; } cout<<"字符串"< "< } 3.删除某一子串,并将后面的符前移。 LNode*del(LNode*L) { LNode*y=L; LNode*h=y; chars[80],*q; LNode*p; cout<<"输入该子串: "; cin>>s; if(h->data==*s) { for(p=h->next,q=s+1;*q! ='\0 &p->next;p=p->next,q++) if(p->data! =*q) break; if(*q=='\0') h=p; } while(y->next) { for(p=y->next,q=s;*q! ='\0' &p->next;p=p->next,q++) if(p->data! =*q) break; if(*q=='\0') y->next=p; else y=y->next; } while(h->next) { cout< h=h->next; } cout< returnh; } 4.分别统计出其中英文字母数和空格数及整篇文章总字数。 voidprint2(LNode*L) { intp1=0,p2=0,p3=0,n=0; for(;L->next! =NULL;L=L->next,n++) if(isalpha(L->data)) p1++; elseif(isdigit(L->data)) p2++; elseif(L->data=='') p3++; elseif(L->data=='\n') n--; cout<<"\n全部字母数: "< cout<<"\n数字个数: "< cout<<"\n空格个数: "< cout<<"\n整篇文章的总字数: "< } 5.分行输出用户输入的各行字符 voidprint1(LNode*L) {LNode*t=new(LNode); t=L; while(t&&(t->data! ='#')) { cout< t=t->next; } cout< } 3.3 1.测试数据 文章内容: thereare123students 需要统计的字符串: re 需要删除的字符串: re 2.测试输出的结果 (1).文章编辑初始运行结果 (2).详细操作步骤 1).输入文章并分别统计出其中英文字母数和空格数及整篇文章总字数 2).统计指定字符串出现次数并输出 3).删除某一子串,并将后面的字符前移 4.课程设计心得、存在问题及解决方法 通过这次数据结构的课程设计,我不仅是完成了任务,也深刻的体会到了“实践是体验真理的标准”的寓意。 “数据结构”是计算机程序设计的重要理论技术基础,它是计算机学科的核心课程。 对于我们计算机专业学生来说,学好这门课是必要的。 这次的设计我们也发现了自己的不足。 总的来说这次的课程设计让我受益匪浅,逻辑思维能力的开发,分析问题和解决问题的能力的提高。 同时也感谢尹四清老师的指导,在您的指导的下我才能顺利完成我的课程设计。 希望以后多进行这样课题,培养学生独立思考问题的能力,提高实际操作水平。 附录源代码 #include usingnamespacestd; typedefstructlink { chardata; structlink*next; }LNode; voidInitList(LNode*L) { cout<<"输入一页文字(以#结束): "< cout<<"(可以输入大写、小写的英文字母、任何数字及标点符号)"< while((L->data=getchar())! ='#') { L->next=new(LNode); L=L->next; } L->next=NULL; } voidcountStr(LNode*L) { intn=0; chars[80],*q; LNode*p; cout<<"enterastring: "; cin>>s; while(L->next) { for(p=L,q=s;*q! ='\0'&&p->next;p=p->next,q++) if(p->data! =*q) break; if(*q=='\0') n++; L=L->next; } cout<<"字符串"< } voidprint1(LNode*L) {LNode*t=new(LNode); t=L; while(t&&(t->data! ='#')) { cout< t=t->next; } cout< } LNode*del(LNode*L) { LNode*y=L; LNode*h=y; chars[80],*q; LNode*p; cout<<"输入该子串: "; cin>>s; if(h->data==*s) { for(p=h->next,q=s+1;*q! ='\0'&&p->next;p=p->next,q++) if(p->data! =*q) break; if(*q=='\0') h=p; } while(y->next) { for(p=y->next,q=s;*q! ='\0'&&p->next;p=p->next,q++) if(p->data! =*q) break; if(*q=='\0') y->next=p; else y=y->next; } while(h->next){ cout< h=h->next; } cout< returnh; } voidprint2(LNode*L) { intp1=0,p2=0,p3=0,n=0; for(;L->next! =NULL;L=L->next,n++) if(isalpha(L->data)) p1++; elseif(isdigit(L->data)) p2++; elseif(L->data=='') p3++; elseif(L->data=='\n') n--; cout<<"\n全部字母数: "< cout<<"\n数字个数: "< cout<<"\n空格个数: "< cout<<"\n整篇文章的总字数: "< } voidmain() { intc; do{ LNode*L=new(LNode); InitList(L); cout<<"统计中英文字母和空格数以及整篇文章总字数: \n"; print2(L); cout< cout<<"分行输出用户输入的各行字符: \n"; print1(L); cout<<"请输入需要统计字符串: "< countStr(L); cout< cout<<"请输入需要删除的字符串: "< del(L); cout<<"\n0: exit\n" "1: continue\n"; cin>>c; }while(c); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文章 编辑
![提示](https://static.bdocx.com/images/bang_tan.gif)