关键词不能为空

当前您在: 主页 > 英语 >

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

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-01-30 02:36
tags:

-

2021年1月30日发(作者:口试)






攀枝花学院



学生课程设计(论文)










目:



纸牌游戏




学生姓名:


00000





号:


2



所 在院


(



)




数学与计算机学院










业:



网络工程










级:


2012



1











师:



李世文



职称:



教授







2014




01




03




攀枝花学院教务处制




攀枝花学院(论文)





























































数据结构课程设计



攀枝花学院本科学生课程设计任务书








纸牌游戏



1


、课程设计的目的



通过本课程设计教学所要达到的目的是:


培养学生用学到的书本知识解决实际问 题的能


力;


培养实际工作所需要的动手能力;

< br>培养学生以科学理论和工程上能力的技术,


规范地开


发大 型、复杂、高质量的应用软件和系统软件具有关键性作用;通过课程设计的实践,学生


可 以在程序设计方法、上机操作等基本技能和科学作风方面受到比较系统和严格的训练。



2


、课程设计的内容和要求(包括原始数据、技术要求、工作要 求等)



任务:编号为


1-52


张牌,正面向上,从第


2


张开始,以


2


为基数,是


2


的倍数 的牌翻


一次,直到最后一张牌;然后,从第


3

< br>张开始,以


3


为基数,是


3


的倍数的牌翻一次,直到


最后一张牌;


然后 ?从第


4


张开始,


< br>4


为基数,



4


的倍数的牌翻一次,


直到最后一张牌;


...


再依次


5


的倍数的牌翻一次,

< br>6


的,


7


的直到以


52


为基数的翻过,输出:这时正面向上的牌


有哪些 ?



3


、主要参考文献


< br>[


1]


《数据结构》



C


语言版)


,严蔚敏,清华大学出版社,


2003




[2]


《数据结构题集》


,严蔚敏,清华大学出版社,


2005




[3]


《数据结构》



C


语言 版)


,刘大有,高等教育出版社,


2004



[4]



Data Structure with C++




William Ford



William Topp


,清华大学出版社,


2003




4


、课程设计工作进度计划



序号



1


2


3


4



时间(天)



1


2


1


1


5


(天)




内容安排



分析设计准备



编程调试阶段



编写课程设计报告



考核




日期



备注



周一



周二至周三



周四



周五
















指导教师


(签字)



教研室意见:
















学生


(签字)





接受任务时间:




















注:


任务书由指导教师填写。



课程设计(论文)指导教师成绩评定表




攀枝花学院(论文)





























































数据结构课程设计




题目名称



评分项目









20%


01


02


03


04


05


06


07


08


学习态度



科学实践、调研



课题工作量



综合运用知识的能力



应用文献的能力



设计(实验)能力,方案


的设计能力



计算及计算机应用能力



对计算或实验 结果的分析


能力(综合分析能力、技


术经济分析能力)



插图(或图纸)质量、篇


幅、设计(论文)规 范化


程度



设计说明书(论文)质量



创新






6


7


7


10


5


5


5


10


纸牌游戏














评价内涵



遵守各项纪律,工作刻苦努 力,具有良好的科学


工作态度。



通过 实验、试验、查阅文献、深入生产实践等渠


道获取与课程设计有关的材料。



按期圆满完成规定的任务,工作量饱满。



能运用所学知识和技能去发现与解决实际问题,


能正确处理实验数据, 能对课题进行理论分析,


得出有价值的结论。



能独立查阅相关文献和从事其他调研;能提出并


较好地论述课题的实施方案;有 收集、加工各种


信息及获取新知识的能力。


< br>能正确设计实验方案,


独立进行装置安装、


调试、


操作等实验工作,数据正确、可靠;研究思路清


晰、完整。

< p>


具有较强的数据运算与处理能力;能运用计算机


进行资料搜集、加工、处理和辅助设计等。



具有较强的数据收 集、


分析、


处理、


综合的能力。









35%








45%


09


10


11


5


30


10





符合本 专业相关规范或规定要求;规范化符合本


文件第五条要求。


< /p>


综述简练完整,有见解;立论正确,论述充分,


结论严谨合理;实 验正确,分析处理科学。



对前人工作有改进或突破,或有独特见解。



成绩























指导教师签名:

























攀枝花学院(论文)





























































数据结构课程设计













数据结构课程是计算机专业中必修的核心课程之一,也是一门 理论性很强的


一门课程,


同时也是一门锻炼程序涉及能力的实践 课程,


“数据结构”


成为计算机


程序设 计的重要理论技术基础,它不仅是计算机学科的核心课程,而且已成为其


它理工专业的热 门选修课。主要包括线性表、树和二叉树以及图等基本类型的数


据结构。数据结构是一门 研究非数值计算的程序设计问题中计算机的操作对象以


及它们之间的关系和运算等的学科 ,包括数据的逻辑结构、数据的存储结构和数


据的运算这三个方面的内容,其中逻辑结构 可分为线性结构和非线性结构;存储


结构可分为顺序存储和链式存储两类,图则属于逻辑 结构中的非线性结构。广度


优先搜索


(BFS)


用的队列一步一步完成的,从而找到的是最短路径。







纸牌游 戏课程设计包括纸牌信息的建立、了解其翻拍的原理、并简明阐述翻


牌的具体步骤与流程 、最后输出与打印翻牌结果,整个过程使学生进一步理解和


掌握课堂上所学各种基本抽象 数据类型的逻辑结构、存储结构和操作实现算法,


以及它们在程序中的使用方法。掌握一 般软件设计的基本内容和设计方法,培养


学生进行规范化软件设计的能力。而且使学生掌 握使用各种计算机资料和有关参


考资料的方法,提高学生进行程序设计的基本能力。





关键词:< /p>


数据结构,纸牌游戏,


BFS


,遍历















I



攀枝花学院(论文)





























































数据结构课程设计




Abstract




Data


structure


course


is


one


of


required


core


curriculum


in


computer


major,


course is a very practical, is also an exercise program involves the ability to practice


curriculum,



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 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 operation 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 completed 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 master 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 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, traversal


II



攀枝花学院(论文)





























































数据结构课程设计




目录








.......................... .................................................. .................................................. . I


Abstract .......................... .................................................. ...............................................II



1


前言



....................................... .......................


2


1.1


课题背景


< br>............................................... ..............


2


1.2


课程设计目的



.......... ...............................................


2



2


相关技术分析



.......... ............................................


3


2.1


概要设计


.


.................................... .........................


3


2.2


设计原始数据的输入及输出格式



....................................... ...


4


2.3


算法流程图


< br>.


................................... ........................


5



3


设计与实现


................................................ ........


6


3.1


数据结构



............ .................................................


6


3.2


详细设计和编码



............................................. ...........


6



3.2.1


定义全局变量:



.


.............................. .................................................. ........................


6



3.2.1


主要程序代码与分析如下:



.


........................... .................................................. ........


6



3.3


上机调试过程



.......... ...............................................


9


5


测试结果及其分析



........ .........................................


10


6


用户使用说明



.......... ...........................................


17


7


源代码



............. ..............................................


17


结论



.


...................................... ........................


18


参考文献



............ ...............................................


19


附录



.


...................................... ........................


20













1






28




攀枝花学院(论文)





























































数据结构课程设计




1


前言



《数据结构》是软件工程专业的必修课之一,是一门综合性的专业基础课。


本课程较系统地介绍了软件设计中常用的数据结构以及相应的实现算法,如线性


表、栈、队列、树和二叉树,图、检索和排序等,并对性能进行分析和比较,内


容非常 丰富。




1.1


课题背景



“数据结构”旨在使学生学 会分析研究数据对象的特性,学会数据的组织方


法,以便选择合适的数据逻辑结构和存储 结构,以及相应的运算,把现实世界中


的问题转化为计算机内部的表示和处理,这是一个 良好的程序设计技能训练的过


程。


“数据结构”课程设计不仅可 以帮助学生充分理解、巩固所学的基本概念、原


理和方法,更重要的是能够针对实际问题 来选择数据结构,设计相应的存储结构


并加以实现,从而最终解决问题。结合数据结构所 学知识,要求学生用


C


语言编


程实现一 个简单的纸牌游戏设计。





1.2


课程设计目的




1



使学生进一步理解和 掌握课堂上所学各种基本抽象数据类型的逻辑结构、



储结构和 操作实现算法,以及它们在程序中的使用方法。



< p>
2



使学生掌握软件设计的基本内容和设计方法,


并培养学生进行规范化软件设


计的能力。




3




使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计


的基本能力。












2






28




攀枝花学院(论文)





























































数据结构课程设计




2


相关技术分析



2.1


概要设计


按照题目的要求,


首先,


应对


52


张牌进行编号并且保存它们的编号信息,


号的类型为整型,而对于这样固定的数据,使用整型数组是最好的,因此,我们


需要 在程序的开始定义一共整型的数组,同时,为了方便对翻转过程的记录,在


定义记录编号 信息的同时,定义一个与之相对应的标记数组,数组类型为整型。


该程序的核心为一个嵌 套的循环,所以定义两个变量


i,j


作为循环条件。

< p>


接着开始对变量进行初始化,首先是编号信息数组,使用


for


循环对数组进



1



52


的赋值,代表


52


张纸牌,然后对标记数组赋值,将数组内的所有的值


初始 化为零,方便在接下来的循环中统计每张牌的翻牌数。数据初始化结束后,


开始按照要求 对纸牌进行翻转,在嵌套循环中,定义了一个全局变量


Flag


,值为


-1


,负数定义为向下,正数定义为向上,这样,翻转一 次,即乘以


Flag


,同时,


符合翻转 条件时,标记数组相应的编号的纸牌翻牌次数


+1


< p>



当每个号码每次遇到是某个数的倍数时,都会 相应的翻一次,这样,每张牌


会翻的次数就各不一样,可能很多次,也可能只有一两次, 结果就只是要输出在


经过各个不同次数的翻牌后,


正面向上的牌 都有哪几个。


举例说明一下,


比如


24



第一次它是


2


的倍数时要从正面翻到背面,


当进行到


3

时,


就又要从背面翻回来,


而到


4


时还要在翻,同理呢,到


6.8.12


?它都要来回的翻。如果它在多次的翻牌


后,正面还向上了,那么它就是要输出的结果之 一。




循环结束后,编号数组 中的数据已经更新,因此对数组进行扫描,大于零的


即为正面向上的纸牌,输出其编号即 可,同时,输出标记数组中的值,显示每张


牌的翻牌记录,方便观察或者寻找规律。到此 ,整个题目结束。











3






28




攀枝花学院(论文)





























































数据结构课程设计



2.2


设计原始数据的输入及输出格式




原始数据要求输入纸牌的基础编号,编号的输入为整型 。输出的是经过规律


翻转后正面向上的纸牌的编号。



输入的数据信息如下:



纸牌:


1



2


< p>
3


??、


51



52





问题直观分析表:





1


2


3


4


5


6


7


8


9


10


11


12


1














2


















3


















4



















5


















6




















7


















8




















9



















10




















11


















12






















??















??



??



??



??




??




??





(注:图中“√”表示翻转一次。

















4






28




攀枝花学院(论文)





























































数据结构课程设计



2.3


算法流程图



开始



设一个一维数组


card[52]


,并将所有变


量赋初值为

< p>
0


,表示牌正面朝上



2=>j


j



52


j=>k


k



52


j++


k%j=0


翻牌,如果


card[k-1]



0

< br>,则变为


1



如果为

< p>
1


,则变为


0


k++



输出


card


数组中正面朝


上的牌的序号



结束




< /p>


2.1


:算法设计



5






28




攀枝花学院(论文)





























































数据结构课程设计




3


设计与实现



3.1


数据结构





按照题目要求,整个主体包括一个嵌套的循环,外循环控制从


2


开始每张纸


牌都作为基数进行翻牌, 内循环控制对所有纸牌进行判断,如果是当前循环中基


数的倍数,则对其进行翻转操作。 具体代码如下:




for(i=2;i<=52;i++)










3.2


详细设计和编码



{







}


for(j=1;j<=52;j++)


{





if(j%i==0)


data[j-1]=data[j-1]*Flag;








}


3.2.1


定义全局变量:



作为判断纸牌是否向 上的依据,我们需要定义一个全局变量


Flag=-1


,在循< /p>


环中对所有纸牌进行操作。




3.2.1


主要程序代码与分析如下:



#define Flag -1


(考虑到最后要判断哪些纸 牌是正面向上的,所以必须要有一共判断条件,因此


定义一个全局变量作为正反面的判断 条件。




void main()


{


int i,j,data[52],flag[52];





6






28




攀枝花学院(论文)





























































数据结构课程设计



char m;


(在程序开始,


建立 了两个数组,


一个存放


52


张牌的编号 ,


另外一个存放相应编


号的纸牌的翻牌记录,便于后面对翻牌次 数的输出。




for(i=1;i<=52;i++)


{


data[i-1]=i;


(通过


f or


循环,向数组中录入


1-52


个数 ,作为


52


张牌的编号,以便进行接下


来的操作)



flag[i-1]=0;

(将


flag


数组中的相应编号纸牌的翻牌数初始化为


0


,在接下来的循环中,需要


对翻牌次数进 行统计。




}


for(i=2;i<=52;i++)


(嵌套循环的外循环 ,保证基数的循环。




{


for(j=1;j<=52;j++)


(嵌套循环的内循环,对每张纸牌进行基数的倍数条件判断)



{


if(j%i==0)


{


data[j-1]=data[j-1]*Flag;


flag[j-1]++;


(翻牌一次,则相应的标记数组中 该编号的位置数值


+1


,即将翻牌次数记入

flag


数组中。




}


}


}


printf(


最后所有正面向上的牌有:


for(i=0;i<52;i++)


{


if(data[i]>0)


(该题目中将大于零的编号定义为正面向上的纸牌的编号)


< /p>


printf(



%d

< br>张牌






7






28




攀枝花学院(论文)





























































数据结构课程设计



}


printf(


}


以上为程序主要代码的分析。



在程序中,主要还包括功能界面,如下:



printf(












printf(


printf(


欢迎进入纸 牌游戏


-----------n


printf(


查看题目


-----------n


printf(


查看所有纸牌的翻牌 次数


-----------n


printf(


查看指定编号纸牌翻牌记录


-----------n


printf(


查看最终正面向上的纸牌编号


-----------n


printf(


制作人信息


-----------n


pri ntf(



0


键结束

< br> -----------n


printf(


printf(


同时,整个功能实现由


do-while


语句和


switch


语句组合而成,


do-while


语句可


以保证界面最少运行一次,


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


,所以如果用户输入为

< br>N


,则直接将


0


赋值给


choice


,则符合循环结束的条件,则直接结束程序,如果输入为< /p>


Y


,则


break


,继续循环,输入错误,没有对


choice


任何的赋值操作 ,即不能满足结束


条件,则无论输入什么都默认为继续,


bre ak


后继续循环。由于程序默认的将回


车操作通过


getchar()


赋值给


n,

导致不能正常的实现下面的判断,而直接显示为


输入错误,所以加入两个

< p>
n=getchar()


语句,保证第二句能够正确的实现功能,





8






28




攀枝花学院(论文)





























































数据结构课程设计



让用户自行输入条件,进行下一步的操作。在整个程序中,存在着大量的输入判


断条件,如下:



if(num<1&&num>52)







printf(


输入错误


!n


这两句代码就是对输入的


num


值进行判断,


由于纸牌序号为


1-52


,所以不在这个


范围的值都为错误值,需要有一个错误信息的反馈,所以需要对输入的信息进行


判断,然后通过不同的值对数据进行相应的操作,这对于程序的正确运行,有着


至关重要的作用。




3.3


上机调试过程



该程序任务相对比较简单,思路较明确。










的< /p>









< p>






for





(i=2;i<=52;i++)


,写成(


i=1;i<=52;i++



,导致对每个纸 牌的翻转都多判断了


一次,按照一开始定义的大于零的编号数为正面向上的条件,最后输 出的结果正


好相反,经过修改调试后,问题解决。


< p>
在每个


case


中加入独立的判断是否回到主菜单 的语句,一开始


getchar


()


总 是不能正确录入,没有输入就直接运行下一个语句,在加入控制语句后经过调


试发现,程 序把上一个输入的回车直接默认赋值给


getchar()


,导 致没有输入,


直接进行下一个语句,


后来使用了两个连续的


getchar()


语句,


第一个


getchar()


语句默认为回车,但是后面一个

getchar()


语句可以正确的重新输入判断值,经


过 重新的调试,运行正常,问题解决,但是希望能找到更完善的答案。在判断是


否继续输入 纸牌编码的功能中,


同样遇到了这个问题,


按照相同的解决办法 解决。



整个程序由一个大的


do-w hile


语句和


switch


语句组合 实现界面的不同功


能,


do-while


语句通过


choice=0


作为结束的条件,在


case 3


中,有一个小的


do-while


语句实现纸牌编号的重复输入,


在整个程序中有很多信息的输入,< /p>


需要


根据输入的信息正确与否来反馈信息,否则会导致程序出错, 所以在调试的过程


中加入了很多判断条件,可以解决信息输入错误的情况,但是仍然存在 输入非整


型值程序出错的问题,所以在输入条件中加入提示信息,以保证信息类型输入正


确。








9






28



-


-


-


-


-


-


-


-



本文更新与2021-01-30 02:36,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/588874.html

数据结构课程设计纸牌游戏的相关文章