C语言课程设计报告书样本
- 格式:doc
- 大小:83.81 KB
- 文档页数:16
c语言课程设计报告详细版一、课程目标知识目标:1. 掌握C语言的基本语法和结构,包括变量声明、数据类型、运算符、表达式和语句。
2. 理解并能运用控制结构,如顺序、选择和循环结构进行程序设计。
3. 学会使用数组、函数和指针进行程序开发,并能理解它们在解决复杂问题中的应用。
4. 熟悉基本的输入输出操作,文件操作以及简单的错误处理机制。
技能目标:1. 能够编写简单的C程序,解决实际问题,展现出逻辑思考和问题解决的能力。
2. 能够阅读和分析C程序代码,理解程序的结构和执行过程。
3. 能够使用调试工具检查和修正程序中的错误,提高程序的稳定性和可靠性。
4. 能够通过小组合作,完成一个综合性的项目,培养团队协作和项目管理的初步技能。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发探究计算机科学的热情,形成主动学习和终身学习的习惯。
2. 培养学生的创新思维和批判性思维,鼓励尝试不同的解决方案,勇于面对编程中的挑战。
3. 增强学生的信息意识和责任感,理解程序在现实生活中的应用和影响,认识到编程对社会发展的贡献。
4. 通过项目实践,培养学生的集体荣誉感,加强沟通能力,形成良好的团队合作精神。
课程性质分析:本课程为高年级的C语言程序设计,旨在通过项目驱动的教学方法,使学生在实践中掌握C语言的编程技能,并能够在日常生活和学习中应用。
学生特点分析:学生具备一定的逻辑思维能力,对计算机编程有一定兴趣,但个体差异较大,需要针对不同层次的学生设计不同难度和类型的教学活动。
教学要求:1. 结合实际案例进行教学,强调理论知识与实践操作的结合。
2. 注重培养学生的实际编程能力和问题解决能力,鼓励学生自主探索和协作学习。
3. 通过形成性评价和总结性评价相结合的方式,全面评估学生的学习成果。
二、教学内容1. C语言基础- 变量与数据类型- 运算符与表达式- 输入输出函数- 顺序结构程序设计2. 控制结构- 选择结构(if-else)- 循环结构(for、while、do-while)3. 函数与数组- 函数定义与调用- 数组的使用- 二维数组4. 指针与字符串- 指针的概念与使用- 指针与数组- 字符串处理函数5. 文件操作与错误处理- 文件的打开与关闭- 文件的读写操作- 简单错误处理6. 综合项目实践- 项目需求分析- 功能模块划分- 编程实现与调试- 项目展示与评价教学内容安排与进度:第一周:C语言基础第二周:控制结构第三周:函数与数组第四周:指针与字符串第五周:文件操作与错误处理第六周至第八周:综合项目实践教材章节关联:《C程序设计》第一章至第五章,涵盖课程教学内容中的所有知识点,为综合项目实践打下基础。
《c语言课程设计》设计报告《c语言课程设计》设计报告河南城建学院《C语言课程设计》报告书指导教师:张娜课程名称:C语言程序设计班级:0124071 姓名:王者无疆学号:0070082011 河南城建学院、土木与材料工程系2011年1月目录一.课程设计目的二.课程设计要求 1. 分析课程设计题目的要求 2. 写出详细设计说明 3. 编写程序代码,调试程序使其能正确运行 4. 设计完成的软件要便于操作和使用 4. 设计完成后提交课程设计报告三.课程设计的基本过程1.程序的功能设计2.程序的数据设计3.程序的函数设计4.函数编程及调试5.整体调试6.设计总结四. 课程设计报告的内容五. 课程设计考核方式六. 进度计划第一天选择课程设计题目,分析课题的要求,编写详细设计说明第二天编程及调试第三天调试,修正,运行软件第四天写课程设计报告,检查程序及软件第五天提交课程设计报告(打印稿及电子稿)七、心得体会八、附一题一、课程设计目的课程设计是学习掌握C语言知识的重要实践环节,是在课程实验基础上进行的综合性实践教学活动。
课程设计围绕课程的整体教学目标进行,课程设计的题目具有一定的综合性和应用性,只靠个别单元的知识一般不能实现课程设计的目标,需要对课程知识进行综合运用。
要完成好课程设计,就要对课程知识进行系统学习、复习、总结、应用,达到在实践中学习知识、掌握知识、应用知识和培养能力的目的。
①通过课程设计,进一步熟悉掌握以下知识:数据类型、分支控制、循环控制、函数的定义及调用、结构体及数组、指针、文件操作、编译预处理等。
②通过课程设计,达到系统理解、综合运用课程知识的学习目标。
③通过课程设计,学会用C语言程序解决实际问题的方法。
④通过课程设计,掌握程序的局部测试、调试方法,建立程序系统调试、测试的基本概念和思想,学会较大程序的系统测试和调试方法。
二. 课程设计要求1. 分析课程设计题目的要求2. 写出详细设计说明 3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用 4. 设计完成后提交课程设计报告三.课程设计的基本过程C语言课程设计一般包括6个步骤,即程序的功能设计、程序的数据设计、程序的函数设计、函数编码及调试、程序整体调试和课程设计总结等,各个步骤都有其特定的任务。
课程设计课程名称____ C语言程序设计___ 题目名称____学生成绩管理系统__ 学生学院____ _ ____ 专业班级___ 学号_____ _____学生姓名_______ _________ 指导教师_______ _________20011年01月13 日一,总体设计此程序所能实现的功能模块:功能一:根据键盘输入的学生信息,能够计算出平均值。
功能二:根据键盘输入的学生信息,能够按照平均分高低进行排序。
功能三:根据键盘输入的学生学号,能够显示该学生的各门成绩以及平均分。
功能四:能够按照学生学号对学生的成绩信息进行删除。
功能五:能够按照学生学号对学生的成绩信息进行修改。
功能六:能够按照平均分的高低插入一位学生的成绩信息。
功能七:能够将所输入的学生成绩信息储存在文件Student.dat中。
功能八:能够提供一个界面来调用各个功能。
二,详细设计模块一:实现排序功能设计函数Sort流程图如下:通过Sort函数对Student.dat文件中的学生成绩信息实现排序功能。
程序运行时的主菜单:*********************************************a)1----------------录入b)2----------------排序c)3----------------显示d)4----------------查询e)5----------------插入f )6----------------修改g)7----------------删除h)8----------------退出*********************************************此时输入2,调用排序Sort函数。
排序后的界面如下:至此,完成对Student.dat文件中的学生成绩信息实现排序功能。
模块二:实现显示功能设计函数Display程序运行时的主菜单:*********************************************a)1----------------录入b)2----------------排序c)3----------------显示d)4----------------查询e)5----------------插入f)6----------------修改g)7----------------删除h)8----------------退出*********************************************此时输入3,在上面完成了成绩排序后,此处调用Display函数,显示排序后的学生成绩列表。
XX学院C语言课程设计报告课程名称: C 语言课程设计____________ 课程编号:______________报告题目:________________________________________________________学生姓名:________________ 学号:____________________专业_____________________任课教师:_________成绩:_________________评阅日期:_________C语言课程设计报告一、 C 语言课程设计的目的C 语言的教学是学生根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。
具体来说:1 •进一步掌握和利用C语言进行程设计的能力;2、进一步理解和运用结构化程设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S 图表示算法;6、掌握书写程设计开发文档的能力(书写课程设计报告);二、课程设计报告正文(1)课程设计题目的原文;假定民航机场共有n 个航班:航班号、起始站、终点站、飞机号、飞机时间、乘员定额、余票量。
试设计一民航订票系统,使之能提供下列服务:2)题目的分析(需求分析);任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中)浏览:航班信息浏览功能需要提供显示操作;查询:可提供按照航班号、起点站、终点站、飞行时间、查询,可以查询某个航要求:线的情况(如,输入航班号,起飞抵达城市,确定航班是否满仓);另外要提供键盘式选择菜单以实现功能选择。
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
可以建立航班结构体,结构体成员包括航班号、起点站、终点站、飞行时间、预售票总数、已售票数。
中国地质大学(武汉) C语言课程设计报告书姓名:王友琪专业:地质学学号:20131000518指导老师:王茂才一、课设题目简要介绍已知文本文件f1.txt中存放了报考某校研究生的考生相关信息(不超过5000人),具体数据及存放格式为:每行存放一个考生的数据,数据之间用空格分隔,共有8项,依次为:考号、姓名、报考专业编号、政治课笔试成绩、英语课笔试成绩、专业课一笔试成绩、专业课二笔试成绩、面试成绩。
文本文件f2.txt中存放了该校50个专业当年的研究生招生计划,具体数据及存放格式为:每行存放一个专业的数据,数据之间用空格分隔,共有2项,依次为:专业编号、专业招生计划。
其中,考号为5位数字字符;姓名为长度不超过10个的字符;报考专业编号为两位数字字符,编号从01-50;政治课与英语课为0-100的整数;两门专业课为0-150的整数;面试成绩为0-100的整数。
该校的研究生录取标准及政策如下:录取分数线:根据专业录取计划,分专业划定录取分数线。
政治课及英语课,按全校录取计划的200%划定录取分数线,若政治或英语课的录取分数线低于45分,按45分划线;两门专业课,按专业录取计划的150%划定录取分数线,若专业课的录取分数线低于90分,按90分划线;总分,按专业录取计划的150%划定录取分数线,若总分的录取线低于280分,按280分划线。
录取基本条件:四门笔试课程及总分均通过录取分数线,面试成绩及格。
录取政策:在具备录取基本条件的考生中,笔试成绩占70%,面试成绩占30%,综合计算考生的总成绩,按专业排名从高到低录取。
请编写程序,根据文件f1.txt及f2.txt中的数据,划定各个专业的录取分数线并存入f3.txt文件中。
存放格式为:每行存放一个专业的录取分数线,数据之间用空格分隔,共有6项,依次为:专业编号、政治课录取分数线、英语课录取分数线、专业课一录取分数线、专业课二录取分数二、总分录取分数线。
根据f1.txt及f3.txt中的数据,将被录取考生的信息存入f4.txt文件中。
目录1 前言 (1)2 需求分析 (1)2.1要求 (1)2.2任务 (1)2.3运行环境 (1)2.4开发工具 (1)3 概要设计与详细设计 (1)3.1系统流程图 (2)3.2访问流程图 (3)4 编码与实现 (4)4.1分析 (4)4.2具体代码实现 (6)5 课程设计总结 (15)参考文献................................................. (15)致谢 (15)1 前言使用C语言编程,设计一个有效的算法,模拟蚂蚁觅食的过程。
2 需求分析2.1要求(1)各个蚂蚁在没有事先告诉他们食物在什么地方的前提下开始寻找食物。
(2)当一只找到食物以后,它会向环境释放一种信息素,吸引其他的蚂蚁过来,这样越来越多的蚂蚁会找到食物。
(3)有些蚂蚁并没有象其它蚂蚁一样总重复同样的路,他们会另辟蹊径,如果令开辟的道路比原来的其他道路更短,那么,渐渐,更多的蚂蚁被吸引到这条较短的路上来。
(4)最后,经过一段时间运行,可能会出现一条最短的路径被大多数蚂蚁重复着。
2.2任务(1)构建二维数组将每条路径的信息素量、相应路径的信息素增量和城市距离放入其中。
(2)输入两个城市间的坐标,并得到两个城市间的最近距离。
(3)画出所有模块的流程图;(4)编写代码;(5)程序分析与调试。
2.3运行环境(1)WINDOWS2000/XP系统(2)TurboC2.0编译环境2.4开发工具C语言3 概要设计与详细设计3.1系统流程图如图3.1所示。
图3.1系统流程图3.2访问流程图如图3.2所示。
图3.2访问流程图4 编码与实现4.1分析程序开始运行,蚂蚁们开始从窝里出动了,寻找食物;他们会顺着屏幕爬满整个画面,直到找到食物再返回窝。
其中,‘D’点表示食物,‘A’表示窝,白色块表示障碍物,‘+’就是蚂蚁了。
预期的结果:各个蚂蚁在没有事先告诉他们食物在什么地方的前提下开始寻找食物。
当一只找到食物以后,它会向环境释放一种信息素,吸引其他的蚂蚁过来,这样越来越多的蚂蚁会找到食物!有些蚂蚁并没有象其它蚂蚁一样总重复同样的路,他们会另辟蹊径,如果令开辟的道路比原来的其他道路更短,那么,渐渐,更多的蚂蚁被吸引到这条较短的路上来。
C语言课程设计-计算器程序设计报告书课程设计说明书题目计算器程序设计起讫日期 2006 年 7月 3日至 2006 年 8月 6日所在院系软件学院专业机械+软件班级 04-2 学生姓名学号指导教师2010年 8 月日摘要当今社会是信息社会,科技经济高速发展的社会~为了更方便人们的工作生活和加速人们处理信息的速度,计算器应运而生。
由于它体积小巧,携带方便,价格便宜,构造简单等诸多的优点成为人们生活中的必备品~随着科技的发展计算器的种类变得更多,功能变得更强大,体积变得更小~电脑的出现改变人们的生活习惯,很多事情都可以电脑来完成~电脑的更大一个优点就是可以通过软件的应用无限的延伸电脑功能的外延~下面我们将用我们学习的c 语言编写一个简易的计算器程序~实现简单的初步的计算功能~本程序的编写基础是Tubro C2.0汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。
生成的程序可移植性强兼容性好稳定~现在只实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,以及一个时钟原代码。
这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。
但是,每次只能运算一个表达式。
不能运算多个表达式。
在程序里面在添加一组选择函数即可。
本论文主要介绍了本课题的开发背景,开发的过程和所要完成的功能。
重点的说明了系统设计思想,设计的步骤、难点技术和解决方案。
关键词:C语言 Tubro c 2.0汉化版计算器时钟目录第一章综述…………………………………………………………………1 (1 课题的现实意义………………………………………………………1 11(2 软件环境........................................................................1 1(3 硬件环境 (1)第二章系统设计流程图……………………………………………………2 2(1 系统流程图……………………………………………………………2 (2 主要功能表……………………………………………………………2 2第三章系统分析和设计……………………………………………………3 (1 图形的绘制和输出……………………………………………………3 33(2 文本的输出显示...............................................................3 3(3 计算函数的调用...............................................................4 3(4 程序的运行和退出 (5)第四章系统测试.....................................................................6 4(1 系统测试........................................................................6 4(2 调试..............................................................................6 4(3 错误原因分析一...............................................................6 4(4 错误原因分析二 (6)第五章用户使用说明书……………………………………………………8 5(1 运行Turbo C程序进入计算器界面…………………………………8 5(2 计算器的使用..................................................................9 5(3 退出程序 (9)第六章工作总结 (10)参考文献………………………………………………………………………11 附录: 源代码第一章综述1.1 课题的现实意义现实学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。
c语言课程设计总结报告范文5篇c语言课程设计总结1在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实习学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
由于时间的关系,我们的这次实习课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。
包括了程序模块处理.简单界面程序.高级界面程序.程序的添加修改.用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。
上机实验是学习程序设计语言必不可少的实习环节,特别是c语言灵活、简洁,更需要通过编程的实习来真正掌握它。
对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。
课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1.熟悉程序开发环境、学习计算机系统的操作方法一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行C语言程序设计实习心得体会(3篇)心得体会。
所谓环境就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。
通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。
同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。
2.学习上机调试程序完成程序的编写,决不意味着万事大吉。
c语言课课程设计范本一、教学目标本节课的教学目标是让学生掌握C语言的基本语法和编程思想,培养学生编写简单程序的能力,使学生了解计算机编程的基本过程,并培养学生的逻辑思维能力和创新能力。
具体分解为以下三个目标:1.知识目标:学生能够理解并掌握C语言的基本数据类型、运算符、控制结构、函数等语法知识。
2.技能目标:学生能够运用所学知识编写简单的C语言程序,解决实际问题。
3.情感态度价值观目标:学生在学习过程中,培养对计算机编程的兴趣,增强自信心,培养团队合作精神。
二、教学内容本节课的教学内容主要包括C语言的基本语法和编程思想。
具体安排如下:1.引言:介绍C语言的背景和发展历程,让学生对C语言有一个整体的认识。
2.基本数据类型和运算符:讲解C语言的基本数据类型(整型、浮点型、字符型等)和常用运算符(算术运算符、关系运算符、逻辑运算符等)。
3.控制结构:讲解C语言的控制结构(顺序结构、选择结构、循环结构等)。
4.函数:讲解C语言的函数概念、定义和调用,以及函数的参数传递和返回值。
5.编程实践:布置课后练习,让学生运用所学知识编写简单的C语言程序。
三、教学方法为了提高教学效果,本节课将采用以下教学方法:1.讲授法:讲解C语言的基本语法和编程思想,让学生掌握知识要点。
2.案例分析法:分析典型程序案例,让学生了解编程的实际应用。
3.实验法:安排课后编程练习,让学生动手实践,巩固所学知识。
4.小组讨论法:分组进行讨论,培养学生的团队合作精神和沟通能力。
四、教学资源为了支持本节课的教学,我们将准备以下教学资源:1.教材:《C程序设计语言》或《C语言入门教程》等。
2.参考书:《C语言编程实例解析》、《C语言编程技巧》等。
3.多媒体资料:制作PPT课件,演示C语言程序的运行过程。
4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks等)。
5.在线资源:提供编程论坛、在线教程等,方便学生课外自主学习。
C语言课程设计报告模版Course Design reporter课程名称: C语言课程设计英文名称 : Course Design of C Programming 专业:经济学+软件工程111学号:姓名:指导教师:赵力日期:2021年 7月12日至2021年 7月18 日大连交通大学软件学院«C语言课程设计»报告C Program Experiment Designing课程编号:0120308006学时: 40学时适用专业:软件工程专业授课单位:软件学院一、C语言课程设计目的及要求目的:依照课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积存调试C程序的体会;通过完成辅导教材中的编程题,逐步培养学生的编程能力、用运算机解决实际问题的能力。
要求:1.熟悉Microsoft Visual C++ 6.0 的编程环境、要紧菜单功能。
2.通过上机验证运算符、表达式、运算规那么、函数使用。
3.熟练使用C语言的典型语句编写简单程序。
4.调试典型例题或习题。
5.提高上机编程能力二、实验类型设计类型三、实验学时40学时四、实验设备微型运算机、Windows XP操作系统、Microsoft Visual C++ 6.0软件一套五、C语言课程参考教材:[1] 李瑞,徐克圣,刘月凡,戚海英.C程序设计基础(第2版). 清华大学出版社.2020-2[2] 梁旭,谷晓琳,黄明.C语言课程设计(第2版).人民邮电出版社,2020-8课程设计(报告)任务书任务及要求:1.设计〔研究〕内容和要求研究内容:C语言课程设计题目相关内容5个小程序都分别是什么任务和要求:〔1〕学习C语言基础知识,把握C语言编程和程序调试的差不多技能。
〔2〕对指导教师下达的题目进行系统分析。
〔3〕依照分析结果完成系统设计。
〔4〕编程:在运算机上实现题目的代码实现。
〔5〕完成对该系统的测试和调试。
海南大学三亚学院《C语言程序设计》课程设计题目:贪吃蛇算法专业:计算机科学与技术班级:计科1001姓名:杨凯文学号:1010711035指导老师:李春林目录《C语言程序设计》课程设计 (1)1. 程序要求 (3)2. 程序分析与设计 (3)3.流程图 (4)4. 源程序清单 (4)5.调试过程 (12)6.程序有待改进的地方 (13)参考文献 (13)附录 (14)贪吃蛇算法1. 程序要求游戏时,一条蛇在密闭的围墙内,围墙内会随机出现一个食物通过键盘上的4个光标键控制蛇向上下左右4个方向移动,蛇头接到食物,则表示食物被蛇吃掉,这时蛇的身体加长一节,同时计10分。
接着又出现食物等待被蛇吃掉。
如果蛇在移动过程中,撞到墙壁或身体交叉(蛇头撞到自己的身体),则游戏结束。
2. 程序分析与设计思路: 这个程序的关键是表示蛇的图形以及蛇的移动。
用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。
移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。
如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有庆平的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来社会多一节身体,所以将蛇的最后一节用背景色覆盖。
食物的出现和消失也是画矩形块和覆盖矩形块。
为了便于理解,定义两个结构体:食物与蛇。
整体设计说明:一个游戏要有开始部分,运行部分,结束部分(注:开始部分与运行部分是一体的)。
3.流程图开始为运行部分初始化运行部分不是撞墙或者咬到自己?是游戏结束继续游戏4. 源程序清单#include <windows.h>#include <ctime>#include <iostream>#include <vector>#include <queue>using namespace std;#ifndef SNAKE_H#define SNAKE_Hclass Cmp{friend class Csnake;int rSign; //横坐标int lSign; //竖坐标public:// friend bool isDead(const Cmp& cmp); Cmp(int r,int l){setPoint(r,l);}Cmp(){}void setPoint(int r,int l){rSign=r;lSign=l;} Cmp operator-(const Cmp &m)const{return Cmp(rSign-m.rSign,lSign-m.lSign); }Cmp operator+(const Cmp &m)const{return Cmp(rSign+m.rSign,lSign+m.lSign);}};const int maxSize = 5; //初始蛇身长度class Csnake{Cmp firstSign; //蛇头坐标Cmp secondSign;//蛇颈坐标Cmp lastSign; //蛇尾坐标Cmp nextSign; //预备蛇头int row; //列数int line; //行数int count; //蛇身长度vector<vector<char> > snakeMap;//整个游戏界面queue<Cmp> snakeBody; //蛇身public:int GetDirections()const;char getSymbol(const Cmp& c)const//获取指定坐标点上的字符{return snakeMap[c.lSign][c.rSign];}Csnake(int n)//初始化游戏界面大小{if(n<20)line=20+2;else if(n>30)line=30+2;else line=n+2;row=line*3+2;}bool isDead(const Cmp& cmp){return ( getSymbol(cmp)=='@' || cmp.rSign == row-1 || cmp.rSign== 0 || cmp.lSign == line-1 ||cmp.lSign == 0 );}void InitInstance(); //初始化游戏界面bool UpdataGame(); //更新游戏界面void ShowGame(); //显示游戏界面};#endif // SNAKE_Husing namespace std;//测试成功void Csnake::InitInstance(){snakeMap.resize(line); // snakeMap[竖坐标][横坐标] for(int i=0;i<line;i++){snakeMap[i].resize(row);for(int j=0;j<row;j++){snakeMap[i][j]=' ';}}for(int m=1;m<maxSize+1;m++){//初始蛇身snakeMap[line/2][m]='@';//将蛇身坐标压入队列snakeBody.push(Cmp(m,(line/2)));//snakeBody[横坐标][竖坐标]}//链表头尾firstSign=snakeBody.back();secondSign.setPoint(maxSize-1,line/2);}//测试成功int Csnake::GetDirections()const{if(GetKeyState(VK_UP)<0) return 1; //1表示按下上键if(GetKeyState(VK_DOWN)<0) return 2; //2表示按下下键if(GetKeyState(VK_LEFT)<0) return 3; //3表示按下左键if(GetKeyState(VK_RIGHT)<0)return 4; //4表示按下右键return 0;}bool Csnake::UpdataGame(){//-----------------------------------------------//初始化得分0static int score=0;//获取用户按键信息int choice;choice=GetDirections();cout<<"Total score: "<<score<<endl;//随机产生食物所在坐标int r,l;//开始初始已经吃食,产生一个食物static bool eatFood=true;//如果吃了一个,才再出现第2个食物if(eatFood){do{//坐标范围限制在(1,1)到(line-2,row-2)对点矩型之间srand(time(0));r=(rand()%(row-2))+1; //横坐标l=(rand()%(line-2))+1;//竖坐标//如果随机产生的坐标不是蛇身,则可行//否则重新产生坐标if(snakeMap[l][r]!='@'){snakeMap[l][r]='*';}}while (snakeMap[l][r]=='@');}switch (choice){case 1://向上//如果蛇头和社颈的横坐标不相同,执行下面操作if(firstSign.rSign!=secondSign.rSign)nextSign.setPoint(firstSign.rSign,first Sign.lSign-1);//否则,如下在原本方向上继续移动else nextSign=firstSign+(firstSign-secondSign);break;case 2://向下if(firstSign.rSign!=secondSign.rSign)nextSign.setPoint(firstSign.rSign,first Sign.lSign+1);else nextSign=firstSign+(firstSign-secondSign);break;case 3://向左if(firstSign.lSign!=secondSign.lSign)nextSign.setPoint(firstSign.rSign-1,fir stSign.lSign);else nextSign=firstSign+(firstSign-secondSign);break;case 4://向右if(firstSign.lSign!=secondSign.lSign)nextSign.setPoint(firstSign.rSign+1,fi rstSign.lSign);else nextSign=firstSign+(firstSign-secondSign);break;default:nextSign=firstSign+(firstSign-secondSign);}//----------------------------------------------------------if(getSymbol(nextSign)!='*' && !isDead(nextSign))//如果没有碰到食物(且没有死亡的情况下),删除蛇尾,压入新的蛇头{//删除蛇尾lastSign=snakeBody.front();snakeMap[lastSign.lSign][lastSign.rSign]=' ';snakeBody.pop();//更新蛇头secondSign=firstSign;//压入蛇头snakeBody.push(nextSign);firstSign=snakeBody.back();snakeMap[firstSign.lSign][firstSign.rSign]='@';//没有吃食eatFood=false;return true;}//-----吃食-----else if(getSymbol(nextSign)=='*' && !isDead(nextSign)){secondSign=firstSign;snakeMap[nextSign.lSign][nextSign.rSign]='@';//只压入蛇头snakeBody.push(nextSign);firstSign=snakeBody.back();eatFood=true;//加分score+=20;return true;}//-----死亡-----else {cout<<"Dead"<<endl;cout<<"Your last total score is "<<score<<endl; return false;}}void Csnake::ShowGame(){for(int i=0;i<line;i++){for(int j=0;j<row;j++)cout<<snakeMap[i][j]; cout<<endl;}Sleep(1);system("cls");}int main(){Csnake s(20);s.InitInstance();//s.ShowGame();int noDead;do{s.ShowGame(); noDead=s.UpdataGame(); }while (noDead);system("pause");return 0;}5.调试过程6.程序有待改进的地方本次设计程序太过单一,而且难度不能随着玩家的意志去改变,画面不美观,动态效果差等等方面都需要进行改善。