C语言(数据结构)-文章编辑系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

课程设计说明书数据结构班级:姓名:设计题目:文章编辑系统设计时间:至指导教师:评语:_______________________________________________________________________________________________________________________________________________________________________________________________________________评阅成绩:__________评阅教师:_______________《数据结构课程设计报告》开课实验室:基础实验室二2009年9月17日实验题目文章编辑系统一、实验目的1.通过这次的课程设计,使学生巩固和加深对数据结构理论知识的理解,进一步掌握编程技巧和方法,能融会贯通所学知识,提高编程和调试程序的水平,从而培养学生理论与实践相结合,独立操作与综合应用知识的能力。2.通过实验的操作,以此系统掌握数据结构的方法和要点;程序中运用链表,掌握了线性链表的插入、删除等算法;以及清屏函数、指定控制台输出颜色,三级菜单的使用。这些平时很少涉及的内容被灵活的运用到了课程设计中。二、设备与环境PC兼容机、Windows操作系统、VisualC++6.0软件。三、功能模块简介和系统结构图本系统运用了数据结构的知识,在VC系统下,设计出了一套界面布局合理的文章编辑系统。学生通过系统可在输入文本的情况下,对文本中的英文字母,汉字,数字,空格及文章总字数进行统计;统计某一字符串在文章中出现的次数;删除某一子串,并将后面的字符前移等多项功能。(一)功能模块简介系统结构图系统说明(1)系统在用户登录时,按任意键进入。(2)系统运行时,必须先进行文本的输入(字符数1000),否则会出现系统故障,在第二次输入时,可根据提示是否输入,以防覆盖上一文本,然后方可运行其它部分。文本输入时可输入任意字符。(3)可浏览已输入文本。文章编辑系统任意键进入浏览输入文本退出新建文本文本字符统计特定字符串统计特定字符串删除(4)文本字符统计,可统计英文字母,汉字,数字,空格的各自数目及字符总个数。(5)特定字符串的统计会明确标出特定字符串出现次数。(6)特定字符串的删除,是先一步用strstr()函数在原字符串中查找所要删除字符串后,再进行删除的,同时可通过对比知道被删除字符串的位置,删除可重复多次进行。(7)退出系统时可选择是否退出。四、系统的主要界面设计及运行说明1、系统登录界面系统运行界面新建文本界面(以#号结束)对输入文本进行浏览文本字符的统计特定字符统计特定字符删除退出系统五、主要的源程序代码1、登陆系统代码(包括图片变幻)#includestring.h#includestdio.h#includestdlib.h#includeconio.htypedefstructline{char*data;structline*next;}LINE;voidCreateTXT(LINE*&head){chartmp[1000];printf(请输入文本,最多输入1000个字符!\n);printf(输入一页文字以#结束:\n);LINE*p=newLINE;head=p;while(1){gets(tmp);if(tmp[0]=='#')break;p=p-next=newLINE;p-data=(char*)malloc(strlen(tmp)+1);strcpy(p-data,tmp);if(tmp[strlen(tmp)-1]=='#'){p-data[strlen(tmp)-1]='\0';break;}}p-next=NULL;head=head-next;}/**文本字数统计**/intCount_Space(LINE*&head)//统计空格数{LINE*p=head;intasc_space=32;intcount=0;inti;intLen;do{Len=strlen(p-data);for(i=0;iLen;i++)if(p-data[i]==asc_space)count++;}while((p=p-next)!=NULL);returncount;}intCount_Num(LINE*&head)//统计数字个数{LINE*p=head;intcount=0;intLen;inti;do{Len=strlen(p-data);for(i=0;iLen;i++)if(p-data[i]=48&&p-data[i]=57)count++;}while((p=p-next)!=NULL);returncount;}intCount_All_Word(LINE*&head)//统计文章的总字数{LINE*p=head;intcount=0;do{count+=strlen(p-data);}while((p=p-next)!=NULL);returncount;}intCount_ZM(LINE*&head)//统计字母数{LINE*p=head;intcount=0;intLen;inti;do{Len=strlen(p-data);for(i=0;iLen;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;}intFind_Word(LINE*&head,char*sch)//统计sch在文章中出现的次数{LINE*p=head;intcount=0;intlen1=0;intlen2=strlen(sch);inti,j,k;do{len1=strlen(p-data);//当前行的字符数for(i=0;ilen1;i++){if(p-data[i]==sch[0]){k=0;for(j=0;j=len2-1;j++)if(p-data[i+j]==sch[j])k=k+1;if(k==len2){count++;i=i+k-1;}}}}while((p=p-next)!=NULL);returncount;}/**特定字符串的删除**/voiddel_string_word(char*s,char*sch){char*p=strstr(s,sch);chartmp[80];intlen=strlen(s);intk,kk;inti=len-strlen(p);intj=i+strlen(sch);intcount=0;for(k=0;ki;k++)tmp[count++]=s[k];for(kk=j;kklen;kk++)tmp[count++]=s[kk];tmp[count]='\0';strcpy(s,tmp);}voidDel_String(LINE*&head,char*sch)//删除指定的字符串{LINE*p=head;do{while(strstr(p-data,sch)!=NULL)del_string_word(p-data,sch);}while((p=p-next)!=NULL);}/**打印输入的文本**/voidOutPutTxt(LINE*&head)//向屏幕输出文章{LINE*p=head;printf(文本文件输出如下:);do{printf(%s\n,p-data);}while((p=p-next)!=NULL);}voidTj(LINE*&head){printf(文章统计信息结果如下:\n);printf(英文字母数:%d\n,Count_ZM(head));printf(空格数:%d\n,Count_Space(head));printf(文章中共出现数字:%d\n,Count_Num(head));printf(文章出现的汉字和标点(全角)总数:%d\n,(Count_All_Word(head)-Count_Num(head)-Count_Space(head)-Count_ZM(head))/2);printf(统计文章的总字数:%d\n,(Count_All_Word(head)+Count_Num(head)+Count_Space(head)+Count_ZM(head))/2);printf(\n);}voidmain(){LINE*head;charsch[20];charID[10];charch;chartmp_sch[20];system(color3F);printf(文章编辑系统\n);printf(\n\n);printf(提示:第一次使用本系统请首先创建文本链表);printf(\n按任意键进入....);getch();system(cls);printf(主菜单如下:\n);while(1){printf(*******************************************************************\n);printf(1.新建文本\n);printf(2.浏览输入文本\n);printf(3.文本字符统计\n);printf(4.特定字符串的统计\n);printf(5.特定字符串的删除\n);printf(6.退出\n);printf(*******************************************************************\n);printf(注:请您按关键字代号选择菜单操作!务必在运行过一次第一步后执行其他部!\n);printf(请输入序号:);scanf(%s,ID);while(1){if(strcmp(ID,1)==0){printf(新建文本要覆盖已有文本,是否继续输入?(Y/N)\n);getchar();scanf(%c,&ch);system(cls);if(ch=='n'||ch=='N')break;elseif(ch=='y'||ch=='Y')CreateTXT(head);break;}elseif(strcmp(ID,2)==0){system(cls);OutPutTxt(head);break;}elseif(strcmp(ID,3)==0){system(cls);OutPutTxt(head);printf(\n);Tj(head);break;}elseif(strcmp(ID,4)==0){system(cls);printf(请输入要统计的字符串:);scanf(%s,sch);printf(\n);OutPutTxt(head);printf(\n);printf(出现的次数为:%d\n,Find_Word(head,sch));break;}elseif(strcmp(ID,5)==0){system(cls);printf(请输入要删除的某一字符串:);scanf(%s,tmp_sch);printf(\n);OutPutTxt(head);Del_String(head,tmp_sch);printf(删除后);OutPutTxt(head);break;}elseif(strcmp(ID,6)==0){printf(你确定要退出系统吗?(Y/N)\n);getchar();scanf(%c,&ch);system(cls);if(ch=='n'||ch=='N')break;elseif(ch=='y'||ch=='Y')exit(0);}else{system(cls);printf(您输入字母有错,请重新输入!\n\n);break;}}}}六、实验总结本次课程设计历时两周,所用知识基本上包括了上学期所学的知识以及很多有关C语言的基

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功