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