模式匹配实训报告课程设计Word文档格式.docx
《模式匹配实训报告课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《模式匹配实训报告课程设计Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
参考文献……………………………………………………….….14
第一章前言
1.1系统所做的工作
通过本课程设计设计出一个可以供用户模式匹配问题:
(1)提示用户输入数据,建立两个串S和T
(2)进行模式匹配判断
模式匹配:
假设主串s和子串t(都是由字符构成的,每个串中可以包含空格,并且每个串的长度尽量长),分表放在两个一维数组中,m、n分别为他们的长度,判断t是否为s的子串,如果是子串,则求出t在s中的位置(第一个字符在s中的位置),如果不是子串,可对用户进行提示。
并且要求可以多次使用菜单进行选择。
的功能。
本编程应用菜单函数menuSelect(),计算串长函数strlength(chars[]),简单的模式匹配函数simple_match()。
多次进行函数之间的调用等完成应用程序的功能。
1.2模式匹配应用程序简介
“模式匹配”是一个判断T串是否为S串的子串程序,是用来判断并找出第一个字符的位置的程序。
“模式匹配”最常用来进行简单的模式匹配,通过“模式匹配”中的菜单选项可以完成应用程序的字符输入、模式匹配、清屏循环使用和退出的功能。
通过这些功能用户可以进行各种操作。
“模式匹配”实现的功能较为简单,主要包括三个菜单选项:
输入字符串、模式匹配、清屏循环使用和退出。
它们实现的功能分别如下:
(1)“inpputSvandT”选项实现的功能包括“输入字符串S”、“输入字符串T”。
(2)“simplepipei”选项实现的功能:
“实现模式匹配”。
(3)“clrscr”选项实现的功能“清屏”、“循环”。
该课程设计所设计的应用程序是
1.3WIN-TC简介
WIN-TC是一个TC2WINDOWS平台开发工具,由"
TC256专题站"
(.st)与"
唯C世界"
()联合发布。
该软件使用TC2为内核,提供WINDOWS平台的开发界面,因此也就支持WINDOWS平台下的功能,例如剪切、复制、粘贴和查找替换等。
而且在功能上也有它的独特特色例如语法加亮、C内嵌汇编、自定义扩展库的支持等。
并提供一组相关辅助工具令你在编程过程中更加游刃有余,如虎添翼。
WIN-TC简繁双语版可以正常运行于98及其以上的简体及繁体WINDOWS操作系统上。
由于TurboC2.0(简称TC2.0)是基于MS-DOS的,存在诸如不支持鼠标操作、字体大小不能调整、文本复制步骤繁琐、必须另外启动UCDOS等中文环境才能支持中文输入输出等缺点,而这些缺陷或多或少影响了教学活动开展的效果。
基于这样的认识,一般在教学过程中使用了一个基于TC2.0编译内核开发出来的编译环境——Win-TC,它实际上是对TC2.0的一个封装。
对于C语言的教学,使用该软件的主要优点有:
(1)由于Win-TC是Windows程序,所以在其中进行鼠标操作、程序段的复制、中文输入输出等功能变得非常方便。
(2)支持字体大小的调整和C程序中各种关键字符的变色显示,这样教师在课程上演示程序的时候可以适当将程序的字体放大,方便坐在后排的学生的观看。
(3)Win-TC消除了初学者设置工作目录的烦恼,自动设置好工作目录。
程序编写好之后就可以直接编译运行。
(4)中文界面,提示出错信息也是中文的,消除了我们的学生由于对英文的恐惧而造成的无法正确修改程序中的错误。
)
第二章软件总体设计
2.1基本简介
模式匹配主要用来实现:
提示用户输入数据,建立两个串S和T。
进行模式匹配判断。
假设主串s和子串t(都是由字符构成的,每个串中可以包含空格,并且每个串的长度尽量长),分表放在两个一维数组中,m、n分别为他们的长度,判断t是否为s的子串,如果是子串,则求出t在s中的位置(第一个字符在s中的位置),如果不是子串,对用户进行提示。
这个项目的重点和难点是各个代码设计方面的问题,我们主要是通过查阅各种资料及上网搜索来解决这些相关问题的,首先运用WIN-TC集成开发环境中的Windows窗体来设计模式匹配的界面,该界面应用WIN-TC菜单选项中的“编译连接“和“编译连接并运行”、等按钮。
在代码编译窗口输入代码,运行,调试。
其中讨论了模式匹配的总体设计思路,然后了进行了系统的编译。
2.2运行环境与结构
本课程设计所设计的模式匹配应用程序运行在WIN-TC平台上,WIN-TC是一个TC2WINDOWS平台开发工具由TC256专题站与唯C世界联合发布。
该软件使用TC2为内核,提供WINDOWS平台的开发界面,因此也就支持WINDOWS平台下的功能
为了保证系统运行的效率和可靠性,系统服务器端应具有较高的软硬件配置,客户端的要求不是很高。
此应用程序可广泛运行于国际互联网即Internet,也可适用于内部的局域网。
2.3框架
“模式匹配”是一个字符串判断程序,是用来判断简单的两个字符串之间的匹配的应用程序。
它应该具备的基本功能如下:
(1)1.pputSvandT:
通过选择该菜单选项可以完成对整个应用程序的字符串输入功能。
(2)2.simplepipei:
通过选择该菜单选项可以完成对输入的字符串内容进行模式匹配功能。
(3)3.clrscr:
通过选择该菜单选项可以完成对应用程序的清屏操作、循环输入的功能。
(4)0.Exit:
通过选择该菜单选项可以关闭应用程序。
设计好的界面如图2-1所示。
图2-1模式匹配界面结构示意图
第三章软件详细设计
WIN-TC是一个TC2WINDOWS平台开发工具。
本软件用于编写C语言程序 WIN-TC简繁双语版可以正常运行于98及其以上的简体及繁体WINDOWS操作系统上。
代码窗口如图3-1所示。
图3-1win-tc代码窗口示意图
在本次课程设计中主要是进行字符串之间的匹配的代码设计,以下就是其代码的详细说明:
3.1“计算串长函数“代码设计
在代码窗口输入菜单函数
详细代码:
intstrlength(chars[])/*计算串长函数*/
{/*利用串长函数求字符串的长度*/
inti;
/*计算出S串的长度*/
for(i=0;
s[i]!
='
\0'
;
i++);
return(i);
}
3.2“菜单函数”代码设计
(1)“菜单函数”使您可以看见菜单选项,选择选项运行应用程序。
为了实现对整个过程的循环和多次输入字符串进行匹配。
选择1时出现提示语句先后输入字符串S、T。
选择2时对两个字符串进行模式匹配。
选择3时对应用程序进行清屏循环使用应用程序。
intmenuSelect()
{intp;
printf("
*****MOSHIPIPEIMENU*****\n"
);
/*菜单标题*/
*0.exit*\n"
/*菜单选项选择0退出、选择1输入串S和串T*/
*1.inpputSvandT*\n"
/*选择3清屏返回开始菜单*/
*2.simplepipei*\n"
*3.clrscr*\n"
*****************************\n"
scanf("
%d"
&
p);
return(p);
}
voidsimple_match(chart[],charp[])
/*简单的模式匹配函数*/
{
/*利用模式匹配函数判断t是否为s的子串*/
/*如果是子串,则求出t在s中的位置(第一个字符在s中的位置)*/
inti,j,l,m,x;
/*调用串长函数求出字符串长度*/
intk=0;
l=strlength(t);
m=strlength(p);
i<
=l-m;
i++)
{
for(j=0,x=i;
j<
m&
&
t[x]==p[j];
x++,j++)
if(j+1==m)k=1;
if(k==1)break;
/*若字符串S中含有字符串T,T为S的子串、并且输出字符串S在字符串T第一个字符的位置*/
if(k==1)
succeed!
%dth\n"
i+1);
else
/*若字符串S中不含有字符串T,则输出“failure”提示用户*/
failure!
!
\n"
printf("
fanhui\n"
3.3简单模式匹配代码设计
为了实现对整个文档的方便保存与队文档内容的方便编辑,该记事本程序增加了一个工具栏。
当单击open按钮时,将进入打开文件对话框,用户可以从中选择一个文件打开;
当单击save按钮时,将进入保存文件对话框,用户可以对编辑的文档进行保存;
当单击cut按钮时,可以实现对文档内容的剪切功能;
当单击paste按钮时,可以实现对文档内容的复制功能;
当单击font按钮时,可以实现对文档内容的字体设计;
当单击color按钮时,可以实现对文档内容的颜色设计。
实现该工具栏所用的代码如下:
voidsimple_match(chart[],charp[])/*简单的模式匹配函数*/
{/*利用模式匹配函数判断t是否为s的子串*/
/*调用串长函数求出字符串长度*/
/*若字符串S中含有字符串T,T为S的子串、并且输出字符串S在字符串T第一个字符的位置*/
3.4输入字符串代码设计
在菜单选项中选择选项1进行输入字符串命令。
charge(charS[M],charT[N])/*输入字符串S,T*/
{
pleaseinputS\n"
scanf("
%s"
S);
pleaseinputT\n"
T);
3.5函数调用代码设计
voidmain()
{/*函数调用*/
charS[M],T[N];
intm,i;
while
(1)
m=menuSelect();
if(m==1)ge(S[M],T[N]);
if(m==2)simple_match(S[M],T[N]);
if(m==3)clrscr();
if(m==0)break;
第四章软件运行
在经过查阅资料、代码编译终于可以在WIN-TC环境下运行出来,出现了久违的“恭喜!
编译成功”的对话框,并按照老师的要求运行出结果。
下面为具体的运行步骤和运行结果截图:
第一步:
打开能应用软件,出现菜单选项。
如图4-1
图4-1菜单选项示意图
第二步:
选择1分别输入字符串S和T。
如图4-2
图4-2输入S和T示意图
第三步:
选择2进行模式匹配,运行输出匹配结果和位置并返回。
如图4-3所示
图4-3运行结果示意图
第四步:
选择3进行清屏循环操作,重新返回开始菜单。
自此以后可重复操作以上步骤运行软件。
图4-3循环操作示意图
第五步:
若操作完成,选择0退出应用软件。
第五章设计总结和心得
在设计的过程中遇到了许多问题,为了解决这些问题查阅了很多资料,并及时向老师请教,与同学探讨,设计中还发现了以前被自己忽略的细节问题.
进行设计的时候,应该会分析问题,并且要有一定的编程技巧,要灵活的去设计界面,以及一些控件的属性的用法。
在本程序的开发过程中,由于时间的仓促和知识经验有限,做的程序不是很完整,有一些地方或许有些缺陷有待于进一步的完善,并且可能不能完全满足用户的需求。
尽管本程序存在着很多不足,但其仍具有功能全面、界面美观、程序运行速度快、系统稳定、操作方便、效率高、安全性好等优点
设计过程中主要是大家一起讨论,集众人之长,各抒己见。
我也是充分感受到团结、合作在工作中的重要性。
在这些讨论中,我都能够积极参与其中,对相关问题都能够运用现有的知识发表独特见解和解题思路,并得到老师李晓娜老师的悉心指导,从而也增加了我开发设计的信心。
因为现代社会技术变革快,我们要不断接纳新技术,学习的能力成为人提升自我,发展自我的不可缺少的手段,另外多了解科技发展前沿,也有利于我们接触新事物,并不断更新知识。
从中我也认识到学习是一个循序渐进的过程,大学所学的知识是根基,这些基础知识将对我以后的学习能力具有非常重要的作用。
但在参与讨论过程中我也发现自己理论基础不扎实,有很多知识的细节已遗忘,对于遇到的众多问题我都能够积极地翻阅各种相关资料,也主动向大家请教并最终得到解决和提升自我素质。
在项目开发的后期,我们对设计的整体进行分析并得出相关结论。
通过努力我学到了很多,也验证了之前所学的知识,并从实践中掌握得更加深刻;
了解到学习是一种乐趣,善于提出问题可快速提高自己的能力,善于发现问题;
积极参与讨论可从其他人中取长补短,并在协作完成任务中锻炼出团结友爱品格。
通过李晓娜老师带领我们进行的为期两周的课程设计,我也明白了许多道理,做任何事情之前都要有个总体规划,不能盲目的想当然去做,那样只会浪费时间与精力,并且收获也很少。
做的过程中也要不断总结与改进,更要注重同学间的相互学习与配合才会有更大的收获,否则进步很少。
我了解到了做为一名将来的软件工程师,应该具有严密谨慎,刻苦耐劳的精神。
我了解到了,当你全身心的投入到软件编程中时,你就能够成为真正的程序员,拥有无限灵感的编程师。
我深刻的了解到了,其实每个人都很有天赋的,只是这些天赋需要你在努力中去发现去运用。
没有付出是绝对没有收获的,一个非常简单的道理,在课程设计中更是非常明显,在需求分析中遇到的困难不是太多,而在后期的编码与实现由于自己的专业知识掌握的不够扎实,遇到一些问题,通过查阅书籍询问老师和其他同学一一解决掉。
望着自己的成果很高兴,成果背后血药付出很大的努力。
一个多礼拜中,有过山穷水尽的困惑;
有过柳暗花明的惊喜;
有过唇枪舌剑的辩论;
有过相互鼓励的安慰。
一个多礼拜的时间经历了很多,也收获了很多。
与其说它是体力与脑力的作业,不如说它是合作精神和毅力的考验。
经过这次课程设计,不仅学到了很多知识和技能,更重要的是学会了如何运用所学知识去解决实际问题.
一个多礼拜的挣扎,不仅仅是尽力,更是竭尽全力。
绞尽脑汁终于带着麻木的手指和大脑脱出那堆“泥潭”。
现在的心情是如鱼得水,干涩的眼睛前方是万里晴空,自己竟望的痴了……终于,所有的努力即将化成了一个个铅字,打印机“滋滋”的声音仿佛已经宛如天籁般悦耳地在耳畔响起。
此时此刻,真想把一切抛上天空。
高呼:
“出来了!
你终于出来了!
”,心里也在默默的感慨着:
“有志者,事竟成,破釜沉舟,百二秦关终归楚。
苦心人,天不负,卧薪尝胆,三千越甲可吞吴。
”
致谢
在论文即将完成之际,回顾紧张但又充实的学习和开发过程,本人在此向所有关心我的老师以及帮助我的同学们致以最真诚的感谢。
论文完成的前提是李晓娜老师给予我细心的关怀与指导,在这里表示衷心的感谢。
李老师认真负责的工作态度、严谨的治学风格,使我深受启发,她的精心指导和教诲使我受益匪浅.李老师让我了解到了,作为将来的编程师所应具备的优良品质。
为将来的生活和就业打下坚实的基础。
同时,在系统开发过程中还有同组的同学也给了我不少帮助,作为小组组长,我很荣幸能够带领小组成员完成这次毕业设计,没有小组成员们的配合和支持,就不会有今天的成果。
相信我们是最好的团体,最棒的合作伙伴。
在此我要衷心的感谢我最最亲爱的小组同学们,今后我们的人生道路更长更远,相信大家都会有美好的明天,努力吧!
在这次毕业设计中,我不仅学到许多课本上没有涉及到的专业知识,还学到了老师、同学兢兢业业、奋发向上的精神,所以我再次感谢李晓娜老师和我组的同学。
在本次设计中我充分感受到了软件开发是一项细腻而复杂的工作,它需要设计者有着扎实的专业知识和相关的编程经验,而且还要有一种软件的心态去面对它。
而且软件工程之所以是一项工程就是因为它的集体合作意识,本次毕业设计我们组的合作很愉快。
通过本次课题设计我学到了不少新的东西,也发现了大量的问题,有些在设计过程中已经解决,有些还有待今后慢慢学习。
在这里感谢学校领导给予我们足够的机房来完成课程设计,感谢李晓娜老师的精心指导,也感谢同学的大力帮助。
参考文献
[1].《数据结构(C语言版)》作者:
黄国瑜/叶乃清华大学出版社
[2].《数据结构》作者:
唐发根北京航空航天大学出版社
[3].《数据结构实例教程》作者:
杨晓光铁道出版社
[5].《数据结构》作者:
殷人昆清华大学出版社
[6].《数据结构》(C语言版)作者:
严蔚敏,吴伟民机械工业出版社