程序设计报告(2014/2015学年第一学期)题目:文档编辑器的设计与实现专业组长学号姓名组员学号姓名指导教师指导单位日期成员分工组长()对文件操作功能(查找,删除,插入)的代码编写,报告中概要设计与代码调试问题部分的撰写组员()统计功能代码的编写,翻阅书籍查找资料,报告中课程设计总结及需求分析部分的撰写组员()可操作的主菜单及主函数部分代码的编写,报告整体的撰写及测试数据及其结果分析,制图等评分细则评分项优秀优优秀优秀优秀优秀良好及格差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简单评语教师签名年月日评分等级备注评分等级分为五种:优秀,良好,中等,及格,不及格文档编辑器的设计与实现一课题内容与要求文档编辑器系统是对一个文本内容进行各种常规操作,例如:插入、删除、查找、替换等功能。通过此课题,熟练掌握文本文件的操作及用字符数组来实现字符串操作的功能。基本要求:(1)首先文件标准化处理:如果句子有前导空格和后导空格,则删除这些空格,单词与单词之间只保留一个空格。(2)统计功能:可方便地统计出文档中所有出现次数最多和最少的字符串。(3)查找与替换功能:能够查找任意一个字符串在文档中出现的次数,并可以选择全部或有选择地将其替换为另一个字符串。(4)显示功能:编辑完成后可以显示编辑后的文档。(5)抽取功能:根据要求将文件中的某一类字符抽取,并存入另外的文件,如抽取所有的数字、抽取所有的字母等。二需求分析图一:文档编辑器系统的功能框架图编辑退出统计主菜单输入继续上次输入重新输入大写字母个数小写字母个数数字的个数标点符号个数空格的个数所有字数查找字符串删除字符串插入字符串显示当前内容(1)提供可操作的主菜单:输出个菜单,用于显示若干个可选的功能选项。根据输入的选项来运行不同的功能,运行不同的函数。(2)进行文本信息的载入:选择输入方式,输入文本内容,提供可操作文本。(3)统计数据功能:输出第二子菜单,用于显示若干个可选的功能选项。根据输入的选项来运行不同的功能,运行不同的函数。(4)编辑数据功能:输出个菜单,用于显示若干个可选的功能选项。根据输入的选项来运行查找、删除、插入、显示当前文本等不同的功能,运行不同的函数。(5)退出程序:退出当前程序。三概要设计本程序共有11个函数1、HeadWord()标题函数,即一个输出标题,永远出现在程序的最顶端。2、CreatWord()文本输入函数,实现对文本的内容进行输入;3、PrintWord()当前文本内容输出函数,实现文本内容输出;4、CountWord()文章内容统计函数,文本内容进行统计,包括对文本内容中的大写字母、小写字母、数字、标点符号、空格以及文章所有字数的个数的统计;5、SearchWord()文章内容查找函数,实现查找部分;6、DeleteWord()文章内容删除函数,实现删除部分;7、InsertWord()文章内容插入函数,实现插入部分;8、Bmenu()第二子菜单函数,实现子菜单功能;9、AboutWord()显示作者信息的函数;10、menu()主菜单函数,实现可操作菜单;11、main()主函数。(1)查找功能:图二:查找功能图开始申请访问输入要查找的字符判断是否存在记录位置输出结束否是(2)插入功能图三:插入功能图开始创建空间输入要插入的字符或字符串输入要插入的位置计算出插入字符串的长度n将要插入位置之后的字符串向后移n位插入要插入的字符或者字符串结束(3)删除功能图四:删除功能图开始输入字符串查找所输入字符串所在的位置能否找到将其后字符串向前移动覆盖之结束否是(4)统计功能图五:统计功能图四源程序代码#includestdio.h#includemalloc.h#includestring#includeiostream#includestdlib.h#includeconio.h#includefstreamusingnamespacestd;#defineLink_Size100intNUM,C,N;typedefstructlist{chardata[80];intlength;structlist*next;structlist*pre;开始申请访问输入要统计的内容查找符合条件的字符字符统计个数输出统计个数结束introw;}LinkList;LinkList*head;voidHeadWord(){//system(cls);cout\t\t****************************************************\n;cout\t\t****欢迎使用简单的文本编辑器****\n;cout\t\t****************************************************\n;}LinkList*LoadWord(){LinkList*temp;charch;inti,j;head-next=(LinkList*)malloc(sizeof(LinkList));head-pre=NULL;temp=head-next;temp-pre=NULL;temp-length=0;for(i=0;i80;i++)temp-data[i]='\0';cout继续上次输入(输入#号结束):\n;for(j=0;jLink_Size;j++){for(i=0;i80;i++){ch=getchar();temp-data[i]=ch;temp-length++;if(ch=='#'){NUM=j;break;}}if(ch=='#'){temp-length=i;temp-next=NULL;break;}temp-next=(LinkList*)malloc(sizeof(LinkList));temp-next-pre=temp;temp=temp-next;for(i=0;i80;i++)temp-data[i]='\0';}ofstreamocout;ocout.open(f://text.txt,ios::app);ocouttemp-data;ocout.close();LinkList*temp;charch;temp-row=NUM+1;system(cls);returntemp;}LinkList*CreatWord(){inti,j;head-next=(LinkList*)malloc(sizeof(LinkList));head-pre=NULL;temp=head-next;temp-pre=NULL;temp-length=0;for(i=0;i80;i++)temp-data[i]='\0';cout开始创建文本,请输入文章(输入#号结束):\n;for(j=0;jLink_Size;j++){for(i=0;i80;i++){ch=getchar();temp-data[i]=ch;temp-length++;if(ch=='#'){NUM=j;break;}}if(ch=='#'){temp-length=i;temp-next=NULL;break;}temp-next=(LinkList*)malloc(sizeof(LinkList));temp-next-pre=temp;temp=temp-next;for(i=0;i80;i++)temp-data[i]='\0';}ofstreamocout;ocout.open(f://text.txt);ocouttemp-data;ocout.close();temp-row=NUM+1;system(cls);returntemp;}voidPrintWord(){ifstreamicin;icin.open(f://text.txt);chartt[100]={0};icin.getline(tt,100,0);coutttendl;}voidCountWord(){LinkList*temp;charch;inti,j,t;intWORD=0,word=0,space=0,num=0,punct=0,sum=0;temp=head-next;for(j=0;j=NUM;j++){for(i=0;(i80)&&(temp-data[i])!='#';i++){ch=temp-data[i];if((ch='A')&&(ch='Z'))WORD++;elseif((ch='a')&&(ch='z'))word++;elseif((ch='0')&&(ch='9'))num++;elseif(ch=='')space++;elseif(ch==33||ch==34||ch==39||ch==44||ch==46||ch==58||ch==59||ch==63){punct++;}}sum=WORD+word+num;}while(1){cout\n;HeadWord();cout\t\t****************************************************\n;cout\t\t****文章内容统计菜单****\n;cout\t\t****************************************************\n;cout\t\t****1、文章中大写字母的个数****\n;cout\t\t****2、文章中小写字母的个数****\n;cout\t\t****3、文章中数字的个数****\n;cout\t\t****4、文章中标点符号的个数****\n;cout\t\t****5、文章中空格的个数****\n;cout\t\t****6、文章中所有字数****\n;cout\t\t****7、退出返回主菜单****\n;cout\t\t****8、直接退出本系统****\n;cout\t\t****************************************************\n;cout\t\t请选择需统计项目:;cint;switch(t){case1:system(cls);HeadWord();cout文章中大写字母的个数:WORDendl;cout按回车键继续·····;getchar();getchar();system(cls);break;case2:system(cls);HeadWord();cout文章中小写字母的个数:wordendl;cout按回车键继续·····;getchar();getchar();system(cls);break;case3:system(cls);HeadWord();cout文章中数字的个数:numendl;cout按回车键继续·····;getchar();getchar();system(cls);break;case4:system(cls);HeadWord();cout文章中标点符号的个数:punctendl;cout按回车键继续·····;getchar();getchar();system(cls);break;case5:system(cls);HeadWord();cout文章中空格的个数:spaceendl;cout按回车键继续·····;getchar();getchar();system(cls);break;case6:system(cls);HeadWord();cout文章中所有字数:sumendl;co