ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:453.09KB ,
资源ID:6331370      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6331370.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计纸牌游戏.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计纸牌游戏.docx

1、数据结构课程设计纸牌游戏攀枝花学院学生课程设计(论文)题 目: 纸牌游戏 学生姓名: 00000 学 号:2 所在院(系): 数学与计算机学院 专 业: 网络工程 班 级: 2012级1班 指 导 教 师: 李世文 职称: 教授 2014年 01月 03日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书题目纸牌游戏1、课程设计的目的通过本课程设计教学所要达到的目的是:培养学生用学到的书本知识解决实际问题的能力;培养实际工作所需要的动手能力;培养学生以科学理论和工程上能力的技术,规范地开发大型、复杂、高质量的应用软件和系统软件具有关键性作用;通过课程设计的实践,学生可以在程序设计方法、上机操作

2、等基本技能和科学作风方面受到比较系统和严格的训练。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)任务:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;.再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:这时正面向上的牌有哪些?3、主要参考文献1数据结构(C语言版),严蔚敏,清华大学出版社,20032数据结构题集,严蔚敏,清华大学出版社,20053数据结构(C语言版),刘大有,高等教

3、育出版社,20044Data Structure with C+,William FordWilliam Topp,清华大学出版社,20034、课程设计工作进度计划序号时间(天)内容安排备注11分析设计准备周一22编程调试阶段周二至周三31编写课程设计报告周四41考核周五总计5(天)指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字): 接受任务时间: 年 月 日注:任务书由指导教师填写。课程设计(论文)指导教师成绩评定表题目名称纸牌游戏评分项目分值得分评价内涵工作表现20%01学习态度6遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。02科学实践、调研7通过实验、试验、查阅文

4、献、深入生产实践等渠道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务,工作量饱满。能力水平35%04综合运用知识的能力10能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。06设计(实验)能力,方案的设计能力5能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。07计算及计算机应用能力5具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅

5、助设计等。08对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)10具有较强的数据收集、分析、处理、综合的能力。成果质量45%09插图(或图纸)质量、篇幅、设计(论文)规范化程度5符合本专业相关规范或规定要求;规范化符合本文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。11创新10对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名: 年月日摘 要 数据结构课程是计算机专业中必修的核心课程之一,也是一门理论性很强的一门课程,同时也是一门锻炼程序涉及能力的实践课程,“数据结构”成为计算机程序设计

6、的重要理论技术基础,它不仅是计算机学科的核心课程,而且已成为其它理工专业的热门选修课。主要包括线性表、树和二叉树以及图等基本类型的数据结构。数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科,包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容,其中逻辑结构可分为线性结构和非线性结构;存储结构可分为顺序存储和链式存储两类,图则属于逻辑结构中的非线性结构。广度优先搜索(BFS)用的队列一步一步完成的,从而找到的是最短路径。 纸牌游戏课程设计包括纸牌信息的建立、了解其翻拍的原理、并简明阐述翻牌的具体步骤与流程、最后输出与打印翻牌结果,整个过程使学

7、生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。掌握一般软件设计的基本内容和设计方法,培养学生进行规范化软件设计的能力。而且使学生掌握使用各种计算机资料和有关参考资料的方法,提高学生进行程序设计的基本能力。关键词:数据结构,纸牌游戏,BFS,遍历Abstract Data structure course is one of required core curriculum in computer major, course is a very practical, is also an exercise program invo

8、lves the ability to practice curriculum, has become an important theoretical and technical foundation of computer program design data structure, it is not only the core course of computer science, and has become a hot elective course for other science majors. Mainly includes the basic data structure

9、 type linear table, tree and binary tree and graph of two. Data structure is a research of non computer program of numerical calculation design problems in operating the objects and their relationships and operations and other disciplines, including logic structure, storage structure and data operat

10、ion data of the three aspects of content, the logical structure can be divided into linear and nonlinear structures; storage structure can be divided into sequential storage and chain store two, graph belongs to nonlinear structure in the logical structure. Breadth first search (BFS) with cohort com

11、pleted step by step, so as to find the shortest path. A card game Solitaire, curriculum design includes information about its principle, and expounds the flop remake of the concrete steps and processes, the final output and print flop results, the whole process to enable students to understand and m

12、aster the various basic abstract data type science class logical structure, storage structure and operation of the realization of algorithm, and their in the process of using the method. To master the basic content and the general design method of software design, training students ability of design

13、 software specification. And to make the students master the use of various computer data and methods for reference, to improve the students basic ability of program design.Key words: data structure, card games, BFS, traversal1 前言数据结构是软件工程专业的必修课之一,是一门综合性的专业基础课。本课程较系统地介绍了软件设计中常用的数据结构以及相应的实现算法,如线性表、栈、

14、队列、树和二叉树,图、检索和排序等,并对性能进行分析和比较,内容非常丰富。1.1 课题背景“数据结构”旨在使学生学会分析研究数据对象的特性,学会数据的组织方法,以便选择合适的数据逻辑结构和存储结构,以及相应的运算,把现实世界中的问题转化为计算机内部的表示和处理,这是一个良好的程序设计技能训练的过程。“数据结构”课程设计不仅可以帮助学生充分理解、巩固所学的基本概念、原理和方法,更重要的是能够针对实际问题来选择数据结构,设计相应的存储结构并加以实现,从而最终解决问题。结合数据结构所学知识,要求学生用C语言编程实现一个简单的纸牌游戏设计。1.2 课程设计目的(1)使学生进一步理解和掌握课堂上所学各种

15、基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。(2)使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。(3) 使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。2 相关技术分析2.1概要设计按照题目的要求,首先,应对52张牌进行编号并且保存它们的编号信息,编号的类型为整型,而对于这样固定的数据,使用整型数组是最好的,因此,我们需要在程序的开始定义一共整型的数组,同时,为了方便对翻转过程的记录,在定义记录编号信息的同时,定义一个与之相对应的标记数组,数组类型为整型。该程序的核心为一个嵌套的循环,所以定义两个变量

16、i,j作为循环条件。接着开始对变量进行初始化,首先是编号信息数组,使用for循环对数组进行1到52的赋值,代表52张纸牌,然后对标记数组赋值,将数组内的所有的值初始化为零,方便在接下来的循环中统计每张牌的翻牌数。数据初始化结束后,开始按照要求对纸牌进行翻转,在嵌套循环中,定义了一个全局变量Flag,值为-1,负数定义为向下,正数定义为向上,这样,翻转一次,即乘以Flag,同时,符合翻转条件时,标记数组相应的编号的纸牌翻牌次数+1。 当每个号码每次遇到是某个数的倍数时,都会相应的翻一次,这样,每张牌会翻的次数就各不一样,可能很多次,也可能只有一两次,结果就只是要输出在经过各个不同次数的翻牌后,正

17、面向上的牌都有哪几个。举例说明一下,比如24,第一次它是2的倍数时要从正面翻到背面,当进行到3时,就又要从背面翻回来,而到4时还要在翻,同理呢,到6.8.12它都要来回的翻。如果它在多次的翻牌后,正面还向上了,那么它就是要输出的结果之一。 循环结束后,编号数组中的数据已经更新,因此对数组进行扫描,大于零的即为正面向上的纸牌,输出其编号即可,同时,输出标记数组中的值,显示每张牌的翻牌记录,方便观察或者寻找规律。到此,整个题目结束。2.2设计原始数据的输入及输出格式 原始数据要求输入纸牌的基础编号,编号的输入为整型。输出的是经过规律翻转后正面向上的纸牌的编号。输入的数据信息如下:纸牌:1、2、3、

18、51、52。问题直观分析表:123456789101112123456789101112(注:图中“”表示翻转一次。)2.3算法流程图2.1:算法设计图3 设计与实现3.1 数据结构 按照题目要求,整个主体包括一个嵌套的循环,外循环控制从2开始每张纸牌都作为基数进行翻牌,内循环控制对所有纸牌进行判断,如果是当前循环中基数的倍数,则对其进行翻转操作。具体代码如下:for(i=2;i=52;i+) for(j=1;j=52;j+) if(j%i=0) dataj-1=dataj-1*Flag; 3.2详细设计和编码3.2.1 定义全局变量:作为判断纸牌是否向上的依据,我们需要定义一个全局变量Fla

19、g=-1,在循环中对所有纸牌进行操作。3.2.1主要程序代码与分析如下:#define Flag -1(考虑到最后要判断哪些纸牌是正面向上的,所以必须要有一共判断条件,因此定义一个全局变量作为正反面的判断条件。)void main()int i,j,data52,flag52;char m;(在程序开始,建立了两个数组,一个存放52张牌的编号,另外一个存放相应编号的纸牌的翻牌记录,便于后面对翻牌次数的输出。)for(i=1;i=52;i+)datai-1=i;(通过for循环,向数组中录入1-52个数,作为52张牌的编号,以便进行接下来的操作)flagi-1=0;(将flag数组中的相应编号纸

20、牌的翻牌数初始化为0,在接下来的循环中,需要对翻牌次数进行统计。)for(i=2;i=52;i+)(嵌套循环的外循环,保证基数的循环。)for(j=1;j=52;j+)(嵌套循环的内循环,对每张纸牌进行基数的倍数条件判断)if(j%i=0)dataj-1=dataj-1*Flag;flagj-1+;(翻牌一次,则相应的标记数组中该编号的位置数值+1,即将翻牌次数记入flag数组中。)printf(最后所有正面向上的牌有:);for(i=0;i0)(该题目中将大于零的编号定义为正面向上的纸牌的编号)printf(第%d张牌 ,i+1);printf(n);以上为程序主要代码的分析。在程序中,主要

21、还包括功能界面,如下:printf(t-n); printf(t-n); printf(t- 欢迎进入纸牌游戏 -n); printf(t- 1.查看题目 -n); printf(t- 2.查看所有纸牌的翻牌次数 -n); printf(t- 3.查看指定编号纸牌翻牌记录 -n); printf(t- 4.查看最终正面向上的纸牌编号 -n); printf(t- 5.制作人信息 -n); printf(t- 0.按0键结束 -n); printf(t-n); printf(t-n);同时,整个功能实现由do-while语句和switch语句组合而成,do-while语句可以保证界面最少运行一次

22、,switch语句保证每个功能独立实现,通过choice的输入来进入不同的功能,同时在每个小的独立功能内,我都添加了独立判断是否回到主菜单的语句,如下:printf(是否回到主菜单?(Y/N):); n=getchar(); n=getchar(); if(n=Y)break; else if(n=N) choice=0; else printf(*(提示:输入错误,默认为继续。)*n);整个do-while语句的结束条件为:choice=0,所以如果用户输入为N,则直接将0赋值给choice,则符合循环结束的条件,则直接结束程序,如果输入为Y,则break,继续循环,输入错误,没有对choi

23、ce任何的赋值操作,即不能满足结束条件,则无论输入什么都默认为继续,break后继续循环。由于程序默认的将回车操作通过getchar()赋值给n,导致不能正常的实现下面的判断,而直接显示为输入错误,所以加入两个n=getchar()语句,保证第二句能够正确的实现功能,让用户自行输入条件,进行下一步的操作。在整个程序中,存在着大量的输入判断条件,如下:if(num52) printf(t输入错误!n);这两句代码就是对输入的num值进行判断,由于纸牌序号为1-52,所以不在这个范围的值都为错误值,需要有一个错误信息的反馈,所以需要对输入的信息进行判断,然后通过不同的值对数据进行相应的操作,这对于

24、程序的正确运行,有着至关重要的作用。3.3 上机调试过程该程序任务相对比较简单,思路较明确。在一开始编写代码的时候,在嵌套循环中,外循环for的条件(i=2;i=52;i+),写成(i=1;i=52;i+),导致对每个纸牌的翻转都多判断了一次,按照一开始定义的大于零的编号数为正面向上的条件,最后输出的结果正好相反,经过修改调试后,问题解决。在每个case中加入独立的判断是否回到主菜单的语句,一开始getchar()总是不能正确录入,没有输入就直接运行下一个语句,在加入控制语句后经过调试发现,程序把上一个输入的回车直接默认赋值给getchar(),导致没有输入,直接进行下一个语句,后来使用了两个

25、连续的getchar()语句,第一个getchar()语句默认为回车,但是后面一个getchar()语句可以正确的重新输入判断值,经过重新的调试,运行正常,问题解决,但是希望能找到更完善的答案。在判断是否继续输入纸牌编码的功能中,同样遇到了这个问题,按照相同的解决办法解决。整个程序由一个大的do-while语句和switch语句组合实现界面的不同功能,do-while语句通过choice=0作为结束的条件,在case 3中,有一个小的do-while语句实现纸牌编号的重复输入,在整个程序中有很多信息的输入,需要根据输入的信息正确与否来反馈信息,否则会导致程序出错,所以在调试的过程中加入了很多判

26、断条件,可以解决信息输入错误的情况,但是仍然存在输入非整型值程序出错的问题,所以在输入条件中加入提示信息,以保证信息类型输入正确。5 测试结果及其分析1.测试结果如下图5.1-5.11;2结果分析以注释的形式写在图的下方;图5.1:MessageBox制作的一个欢迎提示5.2:纸牌游戏程序的主功能界面5.3:纸牌游戏程序功能1:查看题目5.4:纸牌游戏程序功能2:查看所有纸牌的翻牌次数5.4.1:续5.4第一章 题目与要求5.4.2:续5.45.5:纸牌游戏程序功能3:查看指定编号纸牌翻牌记录5.6:纸牌游戏程序功能4:查看最终正面向上的纸牌编号5.7:纸牌游戏程序结束画面5.8:主界面输入错

27、误提示5.9:功能3输入错误提示以及判断是否需要继续查询纸牌编码5.10:回主菜单判断以及输入错误提示5.11:功能5输出制作人信息6 用户使用说明用户运行程序,按操作提示进行操作。程序运行环境VC+6.0。7 源代码见附录结论 这个学期是我第一次接触数据结构,在完成设计的过程中,我遇到了一系列的问题,能明显感觉到自己在很多方面的不足,但另一方面,问题是要分析解决的,找出问题以便为完善学习计划,改变学习内容与方法提供实践依据。所以在整个过程中,我不断加深了对数据结构的理解与一些程序写书时要注意的事项,体会了数据结构这门课程在解决现实生活问题上的可行性,也更进一步地激发了我的学习热情。 做一个课程设计要注意很多方面,无论是格式,还是书写的内容和要表达的思想都得严格要求自己,所以做起来真的不算容易。本次课程设计涉及了很多知识,由于往日没有学得很扎实,对某些问题仍然比较疑惑,所以要进行充足的补习。期间,我翻阅了很多书籍,知识总是联系很紧密的,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1