文章编辑-数据结构课程设计_第1页
文章编辑-数据结构课程设计_第2页
文章编辑-数据结构课程设计_第3页
文章编辑-数据结构课程设计_第4页
文章编辑-数据结构课程设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

前言1 .本课程的设计意义课程设计是实践性教育的重要一环,根据某一课程,可以包括与课程相关的所有方面,是独立于课程的特殊课程。 课程设计使学生们更全面地学习、应用所学的课程,理解和掌握有关课程的知识成为可能。 数据结构是重要的专业基础课,是计算机理论和应用的核心基础课。数据结构课程的设计使学生在数据结构的逻辑特性和物理表现、数据结构的选择和应用、算法的设计和实现等方面加深对课程的基本内容的理解。 同时对程序设计方法和在线操作等基本技能和科学做法进行了比较系统和严格的训练。2 .本课程设计的目的和任务1、提高对数据逻辑结构特征和记忆表达方式的认识,培养在具体应用中选择合适的数据结构和记忆结构的能力。2 .熟悉软件开发的基本过程,初步掌握软件开发过程问题分析、系统设计、程序代码、测试等阶段的基本任务和技能方法。3 .培养自己的算法设计和算法分析能力,综合运用所学的理论知识和方法来独立分析和解决问题的能力。4 .以训练用系统的观点和软件开发的一般规范进行软件开发,培养软件工人应该具备的工作方法、做法和合作精神。5 .综合运用链表的检索、插入、删除,将理论结合实际,应用于文章编辑的实验。 使这些知识更加牢固、深入和广泛。 利用模块的思想,用指针连接模块之间,可以减少不必要的故障。 加强方针的用途,理解模块的优点。 加深对链表的理解,全面认识链表操作的字符串的模式匹配操作。需求分析本实验实现的功能:输入1页文字,程序就能统计文字、数字、空格的数量。 静态保存一页文章,每行最多80个字符,共计n行要求:(1)分别统计其中的英文字数、空白数和整篇文章的总字数(2)合计某字符串在文章中出现的次数,并输出该次数(3)删除某个部分列,使后续文字前进。存储结构使用线性表来实现分别用几个子函数来对应的功能输入数据的格式和范围。 可以输入大写字母、小写字母、数字和标点符号。输出格式:(1)分店输出用户输入的各行的文字(2)分四行输出“全文字符数”、“数字数”、“空格数”和“文章总字符数”输出删除了某个字符串的文章在链表中存储数据非常灵活,只要内存足够大,可以对链表进行任意的扩展和修改。主要手段是链表的扫描。 因为定义一个头指针head,各节点的数据域存储数据本身,指针域存储下一个节点地址,所以如果知道head,就扫描整个链表,找到必要的字符(字符串),并进行相应的操作2文章编辑概要设计1 .输入模块记忆结构:采用单刀直入表结构记忆文章,各节点记忆一行,各行最多80个字符。结构定义:typedef struct linechar *data; /在需要字符串指针时动态分配内存struct line *next;LINE;算法说明: gets函数接收输入,每次换行时创建一个新节点,并将当前行存储在该data域中。 如果输入为E,则在Data的末尾标记字符串结束标志,并将当前节点的Next指针字段设置为空。2 .统计模块统计模块包括全文数字、统计数字的个数、统计空白的个数和统计文章的总字符数,这四个部分的实现算法大致相同,四个关系是,全文数字的个数、空白的个数=文章的总字符数,即,统计了其中三个后,可以计算第四个数量。另一个重要的统计功能是统计某个字符串在整个文章中出现的次数,这需要使用串的模式匹配算法来实现。3 .删除模块删除模块的算法思想类和统计字符串的算法思想采用了链表的存储结构,大大降低了删除算法的时间复杂性。void Del_String(LINE * head,char *sch) /删除指定的字符串line * p=头部;PS举止while(strstr(p-data,sch )!=空) del _ string _ word (p-data,sch )(p=p-next )!=空值; /遍历链表。详细的设计开始。文章输入、阅览、统计列、统计和删除的详细流程如图4-1所示选择选项11111显示文本信息换行输入文本信息(=80 )滑架返回Ctrl E显示输入内容我叫主菜单。选择选项2调出主菜单。滑架返回滑架返回调出主菜单。滑架返回选择选项3显示文章统计的结果滑架返回显示出现次数输入要统计的字符串选择选项4滑架返回输入要删除的字符串选择选项5调出主菜单。滑架返回滑架返回选择选项6调出主菜单。显示删除的文本滑架返回滑架返回退出图4-124程序的具体代码是:#include#include#include#include#includetypedef struct linechar *data; /在需要字符串指针时动态分配内存struct line *next;LINE;创建void CreateTXT(LINE * head) /列表,然后输入文本数据int Count_Space(LINE * head) /统计空间数int Count_ZM(LINE * head) /统计字符数统计int Count_All_Word(LINE * head) /文章的总字数统计int Find_Word(LINE * head,char *sch) /sch在文章中出现的次数int Count_Num(LINE * head) /统计数值void Del_String(LINE * head,char *sch) /删除指定的字符串void OutPutTxt(LINE * head) /在屏幕上输出文件void Tj(LINE * head) /统计int read_text(LINE * head )int free_link(LINE *head )int free_link(LINE *head )举止line * p=头部;PSp-data=NULL;免费(p-data )以下(p=p-next )!=空值;头下一个=空;返回0;以下void setcolor (未指定短颜色)举止handle hcon=getstdhandle (STD _ output _ handle )SetConsoleTextAttribute(hCon,color )以下void CreateTXT(LINE * head)LINE *p=new LINE; /首先在链表中创建附加的标头节点头=p; /p支付标头指针char tmp80;while(1)举止输入gets(tmp) /字符串! 使用c的输入函数PS (tmp 0=5)中断; /找到输入E后,结束输入p-data=new charstrlen(tmp) 1; /为节点分配空间PS (p-data,tmp )if(tmpstrlen(tmp)-1=5) /最后一个控件除外p-datastrlen(tmp)-1=0;break;以下以下p-next=NULL; /最后一个指针为空。头=头-下一个;以下int Count_Space(LINE * head) /统计空间数line * p=头部;int asc_space=32; /空格的ASCIC代码值int count=0;PS举止计算int Len=strlen(p-data) /当前data中数据元素的数量for(int i=0; idatai=asc_space)count; /计算空格数以下(p=p-next )!=空值; /遍历链表。返回计数;以下int Count_Num(LINE * head) /统计数值数line * p=头部;int count=0;PS举止计算int Len=strlen(p-data) /当前data中数据元素的数量for(int i=0; idata I =48 p-data I =57 )计数; /计算数值以下(p=p-next )!=空值; /遍历链表。返回计数;以下int Count_ZM(LINE * head) /统计字符数包含int count=count _ all _ word (head )/空格的总字符数int space _ count=count _ space (head )/空格数int num _ count=count _ num (头)/数字返回计数-空间_计数- num _ count; /返回文章的总字符数以下int count _ all _ word (line * head ) /统计文章的总字符数line * p=头部; /保存链表的开头地址int count=0; /总字符数PScount=strlen(p-data ); 计算当前行的字符数(p=p-next )!=空值; /遍历链表。返回计数;以下int Find_Word(LINE * head,char*sch)/sch在文章中出现的次数进行统计line * p=头部;int count=0;/int h=0;int len1=0; /存储当前行的总字符数int len2=strlen(sch) /要统计的字符串的长度PS、PS、PS;PS举止len1=strlen(p-data) /当前行中的字符数for(i=0; idatai=sch0 )举止k=0;for(j=0; j=len2-1; j )if(p-datai j=schj)k=k 1;PS (k=len2) 计数; i=i k-1; 以下以下以下以下(p=p-ne

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论