由于本程序功能复杂,运行结果丰富,因此本部分只给出部分运行结果,如果用户还想要得到其它的运行结果,请自行运行程序。
1.程序运行后出现如图所示的登录界面,
2.输入初始设置的密码“sheji”后进入程序开始进入主界面,如下图所示,
主界面如下图所示,
3.根据用户的需要可以选择相应的串的存储结构,此处选择1.定长顺序存储,程序出现如下图所示的提示以及功能菜单选项,
34
4.接下来如果选择1则提示用户输入要建立的文本文件名,如下图所示,
输入shige.txt后运行结果如下,提示用户输入一行文本,且用户可重复输入多行文本直到用户觉得结束继续输入。如下图所示,
5.在第4步中如果选择2则会出现如下所示的菜单选项,
6.如果用户想要退出,则输入0即可,如果用户想要继续操作,则只需要输入对应菜单的选项即可,此处选择1.单词计数,程序会出现如下图所示的提示以及菜单选项,
用户可以选择想要测试的算法对串进行模式匹配。
7.如果用户选择2.串的模式匹配KMP算法,则程序运行结果如下所示的提示,
35
用户继续输入如图所示的单词后匹配结果如下图所示,
8.如果用户在第6步中选择2.单词子串的定位及计数,且根据提示正确输入后程序运行结果如下图所示,
9.此时如果用户想要退出则只需输入数字0即可达到目的。
36
八、设计心得体会
这次的课程设计的内容是用模式匹配进行子串的定位操作,这对我来说是个很具有
挑战性的任务,因为我除了想实现基本的串的模式匹配算法外,还想实现串的模式匹配KMP算法以及它的改进算法,希望可以通过不同的算法之间的比较去领略串的魅力,同时也可以让我的逻辑思维有更大的提高。通过数据结构的学习,我对于数据的存储结构有了更深的认识,因此在利用书本上介绍的串的定长顺序存储表示实现串的模式匹配算法后,我又在思考是否可以利用我们学习过的链表去实现同样的功能呢?经过尝试,我获得了成功,实现了串的定长顺序存储和串的单链表存储表示。
通过一个星期的课程设计我从中学到了不少东西,其一,是让我对于利用C语言编程的技术有了很大的提高。通过实际的上机练习,我对于以前学习的C语言渐渐有了更深的认识,对于一些知识点也理解得更加的透彻了,同时通过长时间的上机练习,使得我对于代码编写的熟练度也有了很大的提高;其二,让我更加深刻的理解了课本中的内容。《数据结构》是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。通过这次的课程设计让我再次深刻理解了串的概念及其基本操作,尤其是串的模式匹配算法。根据实际问题的需要,对个方面的优缺点加以综合平衡,从中选择比较适宜的实现方法;其三,在此次课程设计中,我认识到了一个优秀的程序员必须要有强大的逻辑思维。而通过设计一个完整的程序可以在很大的程度上提高我的逻辑思维能力,对于我以后的发展有着重要的作用。其四,在一步步写文档的过程中,也让写的能力有了很大的提升,为了以后更好的发展,我们必须加强我们写文档的能力,而此次课程设计给了我一个很好的机会。其五,在设计的过程中,我深刻的认识到了一个优秀的程序必须要非常的人性化而且结构要清晰,逻辑要严密。这也为我以后程序设计的风格打下了良好的基础。其六,通过本次的课程设计,让我对于软件工程有了进一步的认识,要想开发出一款好的软件绝不仅仅是编写代码那么简单,它有一个严密的体系,我们必须把握好每一个环节,这样才可以设计出优秀的软件。在本次课程设计中,我明白了理论与实际相结合的重要性,并提高了自己组织数据及编写程序的能力,培养了基本的,良好的程序设计技能,提高了综合运用所学知识的能力,使我获益匪浅。
同时通过这次课程设计,我深谙创新的重要性,它是当代大学生必备的基本素质之一。模式匹配的KMP算法是一种改进的模式匹配算法,之所以要改进,是因为它较以前模式匹配的朴素算法有更高的效率和完整性,更适合实际程序开发的需要。而且在串的模式匹配KMP算法基础上还可以进一步的改进,使得程序的效率和质量更加的高。因此在以后的程序语言学习过程中,自己一定要有创新意识,这样才可以更快的进步。在课程设计的过程中自己遇到了很多难题,但是自己抱着沉着、冷静,不抛弃、不放弃的心态,扎根于程序中,同时也充分利用网络、图书馆等的资源,克服了一个又一个困难,最终顺利的完成了本次的课程设计。通过一个星期的课程设计,不仅仅让我的知识有了很大的提高,更重要的是它让我的逻辑思维和编程意识有了很大的提升,让我获益匪浅。
九、用户手册
37
1、用户可先行参考程序流程图对本程序的功能有一个大概的了解。 2、在运行程序后,首先展示在用户眼前的是一个登录界面,如下图所示,
3、用户有三次输入密码的机会,如果三次输入密码错误则程序自动终止,如果密码输入正确(默认密码为:sheji),则进入主程序,主程序界面如下图所示,
4、 在主串界面中根据程序提供的提示,用户可选择串相应的存储结构,在选定一种结构后(实例选择1),程序出现如下图所示的功能菜单选项,
38