课程设计报告5篇【必备】
在生活中,报告有着举足轻重的地位,我们在写报告的时候要注意语言要准确、简洁。相信很多朋友都对写报告感到非常苦恼吧,以下是小编为大家整理的课程设计报告,希望对大家有所帮助。
课程设计报告 篇1
随着计算机科学的发展、应用领域的不断扩大,对计算机技术本身的要求越来越高。现在越来越多的软件开发过程采用了面向对象的开发技术,面向对象的研究遍及计算机软硬件的各个领域,如面向对象的程序设计语言、面向对象的程序设计方法、面向对象的设计、面向对象的分析、面向对象的操作系统、面向对象的DBMS、面向对象的开发工具、面向对象的开发环境等。目前不仅在研究领域已取得了丰硕的成果,而且有些软件产品已经投放市场。面向对象技术是一种新的设计技术,与传统的面向过程技术相比,它试图依据人们对问题的看法来解释软件的架构,并力求将问题域中的问题映像到分析模型中,再转换成对应的程序代码。面向对象技术倡导一种新的认知和表示世界的思想,计算机专业人士利用它提出了面向对象的计算机程序设计语言、面向对象的软件设计方法、面向对象的数据库等,使面向对象技术在今天的应用设计中得到了最广泛的运用。
一、面向对象的有关基本概念
面向对象技术为软件开发提供了一种新的方法学,引入了许多新的概念,这些概念是理解和使用面向对象技术的基础和关键。
(一)对象(Object)、方法(Method)及消息(Message)
客观世界的问题都是由客观世界中的实体及其相互之间的关系构成的。我们将客观世界中的实体抽象为问题空间中的对象。由于我们需要解决的问题不同,我们面向的对象也就不同,因此对象是不固定的。一本书可以是一个对象,一家图书馆也可以是一个对象。从动态的观点看,对象及其操作就是对象的行为,一个对象的通常定义是:对象是对一组信息及其上面的操作的`描述。
私有数据结构和处理,这些处理又称为操作(Operation)或方法(Method),包括控制和过程。其中私有数据表示了对象的状态,该状态只能由私有操作来改变,每当需要改变对象的状态时,只能由其它对象向该对象发送消息。
消息是用来请求对象执行某一操作或回答某些信息的要求,消息统一了数据流和控制流,程序的执行是靠在对象间传递消息来完成的。表示消息的形式是消息模式。对同一消息模式的不同消息,同一对象所作的解释和处理都相同,但是会由于对象状态的不同而导致操作结果不同。一个消息模式定义对象的一种处理能力,所有消息模式及相应于消息模式的处理能力,定义了对象的外部特征。
(二)类(Class)、实例(Instance)、继承性(Inheritance)
在客观世界中,有许多具有相同特征的事物,如:小轿车、大客车、卡车等,可以归类为机动车。从对象观点看,具有共同的属性、共同的操作性质的对象的集合就是类,而单个对象则是对应类的一个实例。例如:书是一个类,而某一本具体的书如《面向对象的分析》则是该类的一个实例,任何一个对象都是某一个类的实例,并继承该类定义的私有数据和操作。这就是继承性,一个类实质上定义的是一种对象类型。
类构成层次结构,相对上层的是超类,相对下层是子类,子类在继承超类的私有数据结构及操作的同时可以拥有自有的私有数据结构及操作。如果一个子类只有一个超类,则称为单继承性,这时该类共享多个超类的属性及操作。
类和继承性是现代软件工程中的重要概念,软件的可重用性、程序成分的可重用性是通过继承类中的属性和操作而实现的。许多工业观察有相信可重用软件不是通过建立传统的过程序(子程序库),而是通过建立“类库”实现的。
(三)封装性(Encapsulation)
对象的封装性是面向对象技术的一个重要特征。对象本身的定义即提供了封装性。对象的封装性是一种信息隐蔽技术,对象的使用者只能看到对象封装界面上的信息,对象的内部对使用者是隐蔽的,其目的在于将对象的使用者和设计者分开。对象的封装性体现在以下几个方面:
对象具有清楚的边界:对象的内部软件(数据结构及操作)的范围,限定在这个边界之内;对象具有统一的外部接口;对象的接口(消息模式)描述该对象与其他对象间的相互作用;对象的内部实现是不公开的;对象的实现给出了对象提供的功能细节,外部对象是不能访问这个功能细节的。
信息隐蔽是软件开发过程中强调的一个重要概念,对象的封装性很好地体现了这一概念。这就便利得用面向对象技术所开发设计的软件的可维护性大为改善,这也是软件技术追求的目标之一。
二、面向对象技术的基本思想
面向对象的方法是一种分析方法、设计方法和思维方法。计算机系统通常是在指定的对象上执行特定的行为操作,要获得符合用户需求的灵活而且可重用的系统,最好的办法就是把软件结构建立在对象之上,而不是行为之上,使计算机求解问题更加类似于人类的活动。因此,概括面向对象方法的基本思想为:从客观存在的对象出发来构造软件系统,并在系
统构造中尽可能运用人类的自然思维方式。面向对象技术是从问题域中客观存在的事物出发来构造软件系统,用对象作为这些事物的抽象表示,并成为系统的基本构成单位。每个对象都有其属性和服务,对象的属性和服务融为一体,对外屏蔽其内部细节,称作封装,把具有相同属性和相同服务的对象归为一类,类是这些对象的抽象描述,每个对象是该类的一个实例,通过在不同程度上运用抽象原则,得到较一般的类和较特殊的类,特殊类继承一般类的属性和服务,复杂的对象用简单的对象构成,称作聚合。对象之间的消息通信表达对象之间的动态联系,对象之间的关联表达对象之间的静态关系。
随着科学技术不断进步和经济不断发展,面向对象技术在当今软件开发中的运用越来越广泛,面向对象技术中使用UML语言对于数据库系统的设计具有非常重要的作用。运用UML语言能详细描述数据库系统的外部功能结构、内部静态结构、动态结构以及程序代码的物理结构,采用面向对象的成熟技术提高了数据库系统设计的效率和质量,提高了数据库系统软件开发的可重用性和可维护性。
课程设计报告 篇2
这次的课程设计对于我来说有着深刻的意义。这种意义不光是自己能够独立完成了设计任务,更重要的是在这段时间内使自己深刻感受到设计工作的那份艰难。而这份艰难不仅仅体现在设计内容与过程中为了精益求精所付出的艰辛,更重要的是背负恶劣的天气所付出的决心与毅力!也许自己太过于执着,从设计开始就落在大家的后面。不过还好,很快就将基本的数据设计与整理出来,不至于远离大家的进度。由于考试已经结束,我可以有充分的时间搞设计。可惜,图书馆闭馆,不能参考一些资料,以至在有些结构设计上还是不太明白为什么要那样设计。看来自己学的东西太少了!天气情况很糟糕!我只能这样评价这段时间内的艰辛。雪不挺的飘,一阵紧接一阵,以至于绝大多少时间自己都是在寒冷中度过的。虽然穿地挺厚实的,但是整天的坐着,不运动,不感觉冷那是鬼话。起初,还只是寒冷,后来为了画图一站就是一天,包括晚上的4个小时。脚除了麻木,还是麻木!我不喜欢加夜班。当然不是害怕加班的辛苦。而是,明明可以在规定时间内完成的事情,为何非得将自己逼到慌乱的地步,加班加点的拼命赶呢!。
“人是习惯的奴隶。”我一直这么认为的,也努力这么做着。不过这次为了搞设计,自己加了不少班,包括夜班。基本上,一天都呆在北区设计室里面。晚上,也经常奋战到10点才回南区。没有几个人会在这么冷的天气情况下留在教室搞设计。我这样说不是为了表明自己比起其他人来说更勤奋,况且这样恶劣的天气情况,大家也真的没有必要晚上挨冻搞设计,那样也太残酷了!而我之所以加班其实目的`很简单,我想早点回家,毕竟家里比起学校来说更温暖。谈了这么多的感受,只想表明天气太恶劣了,不过我们大家都挺过来了。对于课程设计,我只能说我已经尽了我最大的努力。这就是我最好,最出色的设计。过程我只能用不堪回首来形容,但是结果确实意义重大的。我付出了远比设计内容更多的毅力与决心。而我也应该保留这份精神,继续奋斗。感觉设计对我们这些刚刚入门(或者在某种意义上来说还是门外汉)就是按照条条款款依葫芦画瓢的过程,有的时候感觉挺没有劲的机械设计课程设计小结5篇机械设计课程设计小结5篇。反正按照步骤一定可以完成设计任务,其实不然。设计过程中有许多内容必须靠我们自己去理解,去分析,去取舍。就拿电动机型号选择来说,可以分别比较几种型号电动机总传动比,以结构紧凑为依据来选择;也可以考虑性价比来选择。前者是结构选择,后者确实经济价格选择。而摆在我们面前的却是两条路,如何将两者最优化选择才是值得我们好好深思的。通过这次的设计,感慨颇多,收获颇多。更多的是从中学到很多东西,包括书本知识以及个人素质与品格方面。感谢老师的辛勤指导,也希望老师对于我的设计提出意见。
课程设计报告 篇3
在开学的第一周,我参加了院里组织的数据库课程设计,这项任务是分组分工完成的,我们组有五名成员,分别是我们班学号的后五位同学,很荣幸地我被推荐为我们组的组长,在组长的“英明”指导下,全体组员团结奋斗,使得任务完成地比我们预期的要稍早一些,也比预期要漂亮一些,这一点我们都感到很高兴也很自豪。
王婆卖瓜时间过了,言归正传吧。凡是都要有个总结,以下便是我在这个课程设计中的一点心得。
首先我分析一下我们组任务顺利完成的成功之处并总结一些经验,供以后反省参考用。
凡事预则备,不预则废。这是我的座右铭,也是我深有感悟的几句古语之一。在这个项目的开始阶段,老师便让我们做了个进度安排表,我很好的利用了这次机会,花了较多心思作出了一个很详细的进度安排表,之后我们组任务的完成也是严格按照这个进度表进行的。当然我后来去了解了一下别的组的情况,有些组的进度安排表没我们组做完善的一个很重要的原因就是他们对这一周的数据库课程设计到底还没什么概念。导致这种现象的原因有很多方面,一个是基础太差不能理解老师安排的任务(当然这种人比较少),一种是缺乏交流,这个交流包括组内的交流,也包括组间的,更包括与老师之间的,这也就引出了我的第二个心得。
多交流,这是我这次项目的第二个心得。对于这种分工完成的项目,组员之间的交流是极其必要的。如果组员之间不能很好的沟通,不仅会做很多无用功,而且也会做很多重复的工作。组员之间很好的互通有无,表明自己正在做什么,下一步要做什么,才能使工作很好的开展开来。而我们组这次就做到了这点,我们每天都会在qq上或者见面相互交流,并及时修改进度安排表;除此之外,我们还相互帮助解决问题,或者共同解决问题,比如说这次的概念模型的设计,我们组负责设计概念数据模型的同学(赵##)和负责数据需求分析的同学(左##)就经常沟通(因为两者的任务联系比较紧密),共同解决问题,才会做出令我们组员都比较满意的数据概念模型和漂亮的数据需求分析文档;当然最重要的是我们也常会去与老师沟通,老师也在关键的设计地方也给了很多很多的宝贵意见。当然不得不作出检讨的地方是组长这次与老师交流的比较少,反而不及组员,希望在接下来的项目中能有所改观,起好带头作用。我同样也有观察别的组完成情况,发现有些组出现了组长包干或者组长与个别组员的包干的`现象,我觉得导致出现这种可怕现象的主要责任在于组长,组长的任务不仅仅参与部分任务的完成,更重要的是分配任务并协调组间关系,是沟通交流的一根主要管道。通俗的讲就是组长上要联系老师,中要与他组交流,下要与组员积极沟通,我觉得这也是组长这个角色的设置的必要所在吧。我真心地希望在我们下一个创新课程j2ee的训练中我们班不要再出现这种现象,每个人都有平等得到锻炼的机会,组长不认真分配任务不积极与组员沟通在某种程度上剥夺了组员得到锻炼的机会,而更可悲的是很多组员还没有意识到这一点。
多主动,这一点原本和上一点多交流有很多相似之处,但我把它专门列出来也是为了体现他的重要性。多主动一方面是说要主动积极的思考解决问题。有很多同学比较好学,总是不停的在与别人沟通交流,看似很积极,但是仔细分析他提出的那些问题着实汗涔涔,有些问题近似牢骚话类,稍微开动点脑筋就能解决的,但其总不会先去寻找解决问题的办法后再提出个经过大脑过滤的问题,说白了就是凡事都没有个自己稍微成熟的看法。关于这一点我曾经就一度犯过,现在回想起那段岁月着实还是对有些同学的耐心感动到热泪盈眶。直到有一天张老师找我谈了一次我才幡然醒悟到,之后便有了教大的长进,至少变得比较会提问题了。当然我觉得这一点还是值得给与一定程度的肯定的,至少他肯学,比起那种喜欢“搭顺风车”的同学强多了。我上面提到的而关于组长的剥夺组员锻炼权利的问题想必要是被有些组长看了会大有意见,组长会说:“你以为我喜欢一个人全干啊,还不是被逼的”。出现这种情况也于他们组喜欢“搭便车”的人太多了有关系,这也在一定程度上映射出了这个组组员和组长团队意识的极度缺乏。又扯远了,总之喜欢“搭车”的那部分同学可要提高警惕了,眼看过一年就要出去实习了,还不抓紧时间主动学点东西,还不停的让组长剥削你得到锻炼的机会,以后在这条路上怎么混得下去啊?
以上很简单的三点让我们组在这次设计之中顺利完成了任务,下面谈谈我们组在这次任务中做的不足的地方吧。
首先得从组长自身谈起,刚有说到组长与老师交流较少是第一点,第二点是组长一直以来的老毛病了,就是基础不扎实,数据库的理论知识很多考完就忘的干干净净,在项目的开始阶段又返工去补习部分数据库的知识,而且我们的组员大部分也这样,甚至班里有很多同学也是这样的。所以以后对于重要的专业基础课一定要牢牢把握,绝不能追求过一门算一门。不过话说回来,组长这次返工还是较有成效,很快的理解了设计任务,并以最快的速度做好了详细的进度安排表,需要被鼓励一下呵呵。第三点就是组长对问题的解决程度缺乏完美的追求,说通俗一点就是不求甚解,其实在我们的设计模型中,有一些地方还可以做调整的,数据的完整性和合理性将会进一步提升,如果我带领组员朝这个方向再多努力一点,水平就不仅仅提高几个档次了,但是组长鼓励组员去解决了一部分,且在一些地方确实做了修改。
其次说说组员,这几位组员中有两位与组长合作过一次,默契还不错,在这次的任务的完成中发挥了很大的作用,他们是周#和左##,分别担任功能需求说明书的编写和数据需求分析说明书的编写,曾在第一次小组会议就表示一定要交出令组长非常满意的作品,而且事实的确是这样,都完成的很出色。而其余两位同学相对主动性就差了点,总是要组长不停的花心思督促能勉强完成任务,令组长很是头疼,但总的来说还是很配合,但这也在一定程度上导致组内组员水平出现较大差异。
怎么办呢不足之处真还少,可能是组长反省的还不够吧,等以后反省彻底了再和老师说说吧。
课程设计报告 篇4
《土木工程材料》是土木工程专业一门重要的专业基础课,也是重要的专业先导型课程,其理论性和实践性都非常强,在本科教学中,该课程一般都被安排在大学一年级开设,并为大学二、三年级的专业课打下良好基础,同时也为学生毕业以后的工作奠定基础。
通过《土木工程材料》课程的学习,学生可以掌握和了解土木工程材料及其制品的技术性能、土木工程材料的使用方法及常规材料的试验检测方法,具备合理选用土木工程材料并对常用材料进行检验的能力,为学习土木工程施工、土木工程结构和土木工程预算等专业课程提供基本知识;该课程教学内容繁多,而且可以完成的实验项目很多,在学生的四年学习中,《土木工程材料》是强调理论联系实际比较多的课程,尤其是随着经济的发展,各种新型建筑材料的不断涌现,教师在实习教学中必须不断补充新的内容,让学生了解最新的材料科技动态和一些新材料、新工艺、新手段,不断采用多种现代及传统教学方式,让学生在实验课中学到知识,通过学习,要求学生能准确了解每一种常用土木工程材料的性能和技术要求,具有较强的选择和应用材料的能力。
近年来,随着教育部"卓越工程师教育培养计划"(简称"卓越计划")的实施和推进,旨在培养一大批创新能力强、适应社会发展的高质量工程技术人才的目标越来越明确,实验教学是理论教学的延伸和强化,良好的实验教学是培养学生动手能力、创新精神的重要手段,加强实验教学管理和改革,有利于加深和提高理论教学知识,也是提高学生创新应用能力的重要环节,在高等教育大众化背景下,如何推动创新教育、加强实验教学成果,确保本科教学质量和人才目标的培养,是从事高等教学工作必须面对的问题。
一、土木工程材料实验课教学的现状
1.1教材内容陈旧、理论脱离实际
在绝大部分高校中,所使用的《土木工程材料》教材仍然是多年以前编写的教材——即便是所谓的最新教材,其内容也是大同小异,而许多新材料和工艺流程、实验方法并没有及时编写进教材,如OGFC沥青混凝土、沥青混凝土抗车辙剂、高粘沥青、高聚物改性剂、彩色沥青、彩色水泥混凝土、各种新型的外加剂等,这些材料早已经广泛应用于实际工程建设领域,而教材中的内容很少甚至是没有的,很多教材所用的规范其实是早已过时失效的规范,许多建筑材料的实验检测规范和方式都进行了变更,如沥青技术标准、水泥的凝结时间测定等,这样就使实践和理论发生了脱节。
1.2实验课时间及学时安排不够合理
由于各个学校对实验教学在创新性人才培养的重要性认识普遍不足,使得《土木工程材料》的实验课课时所占的比例很低,独立开设实验课的学时和门数都较少,实验教学是培养学生在掌握系统理论条件下,将理论应用于实践的一种方法,比如我校的《土木工程材料》总学时64节左右,而实验课平均仅仅为10节左右,比例不当而且学时严重不足。
1.3实验教师力量薄弱
作为应用型高等院校,建设理论与实验教学的互通队伍,实现科研、教学、技术兼容相通,使实验教学核心稳定、结构合理的实验教学团队,是提高实验课效果的关键一环,形成实验教学队伍知识、技术不断更新的科学有效的培养培训制度,因为教师是完成实验教学的重要力量,教师的思想素质、业务水平、工作效率等都直接影响着实验教学的质量、科学研究的进程、实验设备的使用效益以及实验室建设和管理的水平。
1.4实验课教学的考核问题
我们知道,在实验的理论与实践有时候是存在差异的、有时候会由于各种原因产生错误或误差,在很多高校中,实验课的成绩经常取决于理论与试验数据的是否吻合,因此很多学生为了得到更好的成绩,发现试验与理论数据数据不吻合或者相差较大,常常不加分析地修改甚至伪造数据。这种做法其实不利于学生能力的培养,因此,我们应积极改革实验课的考核标准,制订科学的实验课考核体系,但是,本人通过了解浙江的几所高校,发现情况基本差不多,多数高校对于《土木工程材料》实验课并没有建立科学的教学考核体系,对实验课的教学要求也远未达到理论教学的严格层度,对于实验课的成绩评价仍然是采用传统的方法甚至没有评分。
1.5重理论轻实践,对实验课缺乏重视
《土木工程材料》是一门实践性很强的课程,最好的方法是理论紧密联系实践,因此实验课是非常重要的,而现在很多学校教学中存在着严重的重理论轻实践的问题,在建筑材料教学中,实验课的内容一般是先由理论老师进行讲授,再根据所讲授内容安排实验课实验巩固所学的内容,而实验课由于班级和人数较多,实验的教学环境狭小而实验课的效果非常不好,常常是理论知识讲完几个星期后才有时间和空间安排实验课程,学生很难把所学的知识前后联系起来;同时,各大高校的实验设备配置一般都严重不足,实验操作过程中分组人数一般为10~15人一组甚至30人一组,因此,在实验课时,很多学生在实验时只能围观而无法亲手完成操作,只能做一下记录或旁观了事,而且实验题目都是一样的,就出现了不愿发挥主动性、创造性问题,相互抄袭实验数据的现象非常普遍。
二、土木工程材料实验课教学改革措施
2.1推进"开放实验室"建设
所谓"开放实验室",就是将实验室有条件地开放,让学生按教学要求和自身的爱好,根据自己的情况选择合适的时间去完成自己设计的'实验题目,学生可以根据自己所学的知识选择实验题目,自己设计实验的方案并独立完成整个实验,实验的形式具有可开放性特征。改变当前实验内容都是教材或教师设计,学生只能在规定的框架内被动完成实验的状况,当前的学生完全处于被动地位,创造性思维及学习兴趣都很缺少,转变实验教学观念,实施"开放实验室"教学可以有效弥补传统实验教学的不足,提供学生独立思考并自主学习的个性空间,在这个过程中,教师只负责对实验过程进行宏观审查,在实验过程中给予必要的启发和指导。
和传统实验方法不同,开放性实验对于巩固学生所学知识,培养学生的独立思考和创新能力等方面的培养都具有独特的优越性,改变了教师的教学方式,由以前的教改为启发式循循善诱和启迪思维,顺应了当前教学改革的大趋势,有利于"卓越工程师教育培养计划"的实施和推进,另外要注意,"开放实验室"并不是把门打开不管,开放对象不要太多,一般选择为大学一、二年级的土木工程专业学生,实验指导教师可由建筑材料、材料力学和相关学科教师组成指导组并实行预约登记制度。
2.2开发设计性、综合性实验
在土木工程材料实验教学中,并在"开放实验室"条件下,我们可以集思广益、开阔思路,积极推进设计性、综合性的实验教学,最大限度地利用现有实验设备和技术条件。由学生完成实验方案设计并独立完成的实验,同时通过对实验内容的调整与整合,开发新的实验内容,提高综合性、设计性实验在实验教学中所占的比例。
2.3优化整合实验教学体系
该工作应由相关领导牵头,会同专业教师和实验教师一起,规范实验教学体系、设计实验教学项目、制定实验教学计划,在原有《土木工程材料》教材的基础上编写有针对性的实验教学大纲和实验指导书,同时进一步强调理论课、实验课的紧密衔接关系,在实验课教学过程中,要改掉以往多个班级学生集中实验集中操作的实验教学模式,不同班级可以错时实验,每个组的学生最好为3—5个人,以提高实验教学效果和互动性。
2.4实验内容设计体现多学科优势
在《土木工程材料》实验内容设计方面,在"开放实验室"条件下,可以启发学生尽量实现不同学科间交叉渗透,进行跨专业跨学科的综合能力培养,同时高等学校的科研优势明显,可以以此为出发点,大力促进教学科研人员的参与,以达到教师科研成果在实验教学内容的转化。
2.5实验教学考核的改变
《土木工程材料》的实验成绩应考虑学生的实验预习、操作及纪律和实验报告等情况综合评定。
首先,在正式实验课前应要求学生做好预习准备,实验开始之前教师可以提问或检查预习报告,以检查学生的实验准备情况,该项成绩占实验课总的10%左右;其次实验操作结束的实验报告一定要仔细检查,并要求学生独立完成所有的实验报告,实验报告成绩可以占该项实验课总的40%左右;在实验课的考查、考试方面应占实验课总成绩的50%左右,可以检查性实验为实验考试形式,实验题目由教师统一安排并由学生写出实验方案,然后右学生独立完成操作,再辅以学生的笔试和平时情况评定成绩,如依据教学大纲的要求,将普通沥青混凝土单项实验设计为多方案实验,将每班学生分成10个左右的实验组,各小组可采用不同的粗细骨料、不同掺量的沥青,各组学生根据不同要求测定沥青原材料及混合料的性能,并按要求进行沥青砼配合比设计及配制沥青混凝土,教师根据实验过程、实验数据、实验报告情况给予打分。
结论
实验教学及考核是高等教育土木工程专业培养学生动手能力、创新能力的重要环节,《土木工程材料》更不另外,为了完成"卓越计划"培养目标,我们要加大力度进行该课程的实验教学改革,提高学生的创新能力。突出高校学生的学习主动性,由灌输式转变为启发性教育方式的转变,高校实验教师应区别对待学生的个性给予不同方式的启发性教育,引导学生独立思考以探寻有创新意义的实验方法。
课程设计报告 篇5
“数独”是18世纪瑞士数学家欧拉发明。该游戏是在9×9的单元网格中进行,这些网格被分9行、9列和3×3个九宫格。单元网格中已有若干数字,其余均为空格。玩家需要推理出所有剩余空格的数字,并满足每一行、每一列、每一个小九宫格内的数字均含1-9且不重复。每一道合格的“数独”谜题都有且仅有唯一答案。
目前,“数独”作为一种智力游戏已经风靡世界,国内外许多学者已对数独的求解算法做了深入研究,例如递归法[1]、回溯候选数法[2]、枚举算法[3]等,但在数独的难度划分与创建方面的研究还很少。由于影响“数独”难度的因素有很多,就问题本身而言,难度因素包括最高难度的技巧、各种技巧所用次数、是否有隐藏及隐藏的深度和广度的技巧组合、当前盘面可逻辑推导出的个数等等;就玩家而言,了解的技巧数量、熟练程度、观察力等也属于难度划分应考虑的因素。因此,单单利用空格数或求解时间对题目难度进行划分是不全面的,其难度指标定义过于主观,讨论也不够细致,无法真正划分难度的级别。
本文首先创建符合要求的“数独”终盘,然后在终盘的基础上生成具有数独特性的初盘,根据求解时初级方法和高级方法使用的次数确定难度评分,从而依据分数对题目的难度进行划分,以此创建不同等级难度的“数独”游戏。
1 终盘和初盘生成
首先运用初等行、列变换,构造一个新的简单明了的终盘生成算法,具体步骤如下:
Step1:从行的角度出发,在第一行随机输入1-9的数字。以一个小九宫为单位,将相邻三个数字作为一个集体进行交替,由此获得第二行的数字,再由第二行的数字根据前述方法变换得到第三行的数字。由此我们得到一个前三行,共有三个小九宫的全部数字。
Step2:从列的'角度出发,仍然以小九宫为单位,把第一个小九宫的第一列的相邻三个数字为一个集体进行交替,由此获得第四个小九宫的一列数字,第一小九宫的第二、三列也通过这个相同的方法而得到第四个小九宫的其他两列数字。剩余的其他小九宫也根据前述相同的方法可以得到,
将已得到的一个终盘,恰当隐去某些格子内的值,使之成为合乎数独规则的空格,由此便生成一个数独谜题,即初盘。此处,我们隐去的格子的方法是通过概率随机隐去相应的格子数,由于我们所创建的终盘是保证唯一性的,所以此处直接借助终盘来进行检验初盘的唯一性。
2 难度划分
在上面的步骤中,我们完成了由终盘生成初盘的过程。在得到庞大的初盘后,由于每个初盘的空格数、空格位置不同,导致了它们的难度不同。因此,我们首先需要依据这些初盘,建立一个评分模型,得到每个初盘的难度评分值,再根据这些评分值划分不同等级的数独。
2.1 评分模型建立
我们基于模仿人工求解的方式充分使用基本方法,直到基本方法不再起作用时才使用高级方法。因此基于常用的两个算法―显性唯一候选数法和隐含唯一候选数法,以及高级方法,我们假设每个玩家对于每一个空格的求解按以下步骤进行:
Step1:当玩家第一次使用显性唯一候选数法能解出数独谜题的一个空格,则转向下一个空格的求解;
Step2:当玩家第一次使用显性唯一候选数法不能求解时,则采用隐性唯一候选法,若能求解出该空格,则进行下一个空格的求解;
Step3:当玩家先后采用显性唯一候选数和隐含唯一候选数法,依然不能找出答案,这时利用计算机随机自动生成一个空格的答案,称此方法为高级方法,然后玩家便可以继续进行下一个空格的求解;
Step4:当求出一个数独谜题的所有空格值,游戏结束。
假设N1为基本方法中使用显性唯一数法的次数,N2为基本方法中使用隐性唯一数法的次数,N3为使用高级方法的次数,α,β,γ分别为不同方法的权重,从而我们建立一个难度评分模型:
Score=αN1+βN2+γN3
由于高级方法比基本方法的难度大,并且对于同一方法,使用2次要比1次的难度大。所以,为了体现“数独”题目使用不同方法及其相应次数的复杂度,我们给不同的方法加上适当的权重。本文定义的权重如下:α=1,β=2,γ=5
对于上述权重,按照随着方法难度系数递增权重递增的方式以及尽可能使用不同方法间的权重差异足够大的原则进行取值。虽然权重的取值有一定的随意性,但通过计算机仿真可以表明这样能很好的区分不同难度等级的“数独”题目。
2.2 计算机仿真
依据我们建立的终盘,随机产生1200道题目,然后用本文的人工智能算法求解,并记录不同题目各种方法使用次数、空格数以及最终分数。此处,选取部分仿真结果如表1所示:
由表1所知:评分数涵盖区域较大,有些高难度的初盘的score很大,偏离了初盘score的平均值,不便于我们依据所有初盘的score直接划分难度级别,故我们进行归一化,将每个初盘的score归一到[0,1]范围内,建立公式如下:
其中:a是分数中的最小值,b是分数中的最大值。由此,我们得到归一化后的不同题目的最终评分。由得分按等距间隔划分成四个区域,而这四个区间就是我们所要求的“数独”难度级别,分数从小到大地分别记为简单、中等、高级、骨灰级。
【课程设计报告】相关文章:
课程设计报告08-03
课程设计报告03-29
课程设计报告【精】08-08
课程设计报告结论 课程设计完成情况总结03-14
网页设计课程设计报告09-06
课程设计报告(经典15篇)08-03
课程设计报告经典【15篇】03-11
c语言课程设计报告11-23
课程设计总结报告11-23
课程设计报告15篇(优秀)08-03