1、文字编辑器 1 数据结构课程设计报告数据结构课程设计报告 目目 录录 1 1 设计目的设计目的 2 2 问题描述问题描述 3 3 设计设计要求要求 4 4 设计设计构思构思 5 5 算法说明算法说明 6 6 测试结果测试结果 7 7 总结反思总结反思 8 8 源程序源程序 文字编辑器 2 1 1 设计目的设计目的 1) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 2) 初步掌握软件开发过程的问题分析、 系统设计、 程序编码、 测试等基本方法和技能; 3) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 4) 进行全面综合的训练,对课堂教学、实验等环节的有益补
2、充。 5) 提高解决实际问题和培养软件工作所需的动手能力。 6) 深化理解和灵活掌握教学内容 7) 进行软件工程的综合训练。训练用系统的观点和软件开发一般规范进行软件开发, 培养软件工作者所应具备的科学的工作方法和作风。 2 2 问题描述问题描述 功能:输入一页文字,程序可以统计出文字、数字、空格的个数。 静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文 字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输 出该次数;(3)删除某一子串,并将后面的字符前移。 存储结构使用线性表,分别用几个子函数实现相应的功能; 3 3 设计要求设计要求
3、输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。 输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出“全部字母数“、“数字 个数“、“空格个数“、“文章总字数“(3)输出删除某一字符串后的文章; 文字编辑器 3 4 4 设计构思设计构思 分别设计输入,输出,统计字母,统计数字,统计字符,查找,删除这7个函数,并在 主函数中进行选择,没80个字符要添加换行符,并将输出结果和删除结果返回到一个txt文 件中。文章存储在链表中,查找用模式匹配,删除字符用链表的节点删除法。统计用循环语 句实现。 5 5 算法说明算法说明 主函数 输入函数 输出函数 统计函数 统计字母
4、 统计空格 统计统计 数字 循环遍历 创建文件 输入文章 输出文章 改写文件 查找字符 串 删除字符 文字编辑器 4 6 6 测试结果测试结果 结束 文字编辑器 5 文字编辑器 6 8 8 总结反思总结反思 通过本次课程设计, 我对数据结构的理解进一步加深, 我理解和掌握了每一段程序代码 的功能及含义,并且能够实现文字编辑的主要功能:利用链表实现文字的存储问题,利用模 式匹配查找字符串。学习数据结构,我学会如何将所学的知识运用到实际中,解决一些实际 的问题,这才是学习的根本。 当然在实验中我也遇到了不少实际性的问题,编写的程度要 与实际有联系,这就不能只依赖于课本,还要联系实际多多思考,重复调
5、试,不断改进,才 能编出一个符合实际的有价值的系统。 9 9 源程序源程序 #include #include #include #include /创造链表 typedef char DataType; typedef struct node DataType ch500; struct node *next; Lstring; 文字编辑器 7 /输入函数 Lstring *input() FILE*fp; if(fp=fopen(“E:文字编辑结果.txt“,“w“)=0) printf(“打不开n“); exit(0); Lstring *p,*head; int i=0,a=0; pr
6、intf (“*请输入一段文字,每行不超过 80 个字符,结束请按“#” *n“); p=(Lstring *)malloc(sizeof(Lstring); head=p; p-chi=0; p-next=0; char str200; while(1) gets(str); if(strlen(str)80) printf(“每行最多输入 80 个字符,请重启程序n“); exit(0); if(str0=35) 文字编辑器 8 str0=0; p-ch0=str0; break; p-next=(Lstring *)malloc(sizeof(Lstring); strcpy(p-ch,str); if(strstrlen(str)-1=35) p-chstrlen(st