c语言课程设计报告

2024-08-07 版权声明 我要投稿

c语言课程设计报告(精选8篇)

c语言课程设计报告 篇1

C语言是一门通用计算机编程语言,应用广泛。下面是小编为大家整理的关于c语言课程设计的设计报告,欢迎大家的阅读。

高等职业教育的目标及侧重点不同于普通高等教育,其培养的学生在毕业后应能直接上岗,具有熟练的实践操作技能。教育部《关于以就业为导向深化高等职业教育改革的若干意见》中指出,高职教育应“坚持培养面向生产、建设、管理、服务第一线需要的‘下得去、留得住、用得上’,实践能力强、具有良好职业道德的高技能人才”。

因此,加强实践性课程教学,对保证人才培养质量显得尤为重要。我院为贯彻《关于全面提高高等职业教育教学质量的若干意见》精神,针对区域经济发展的要求,灵活调整和设置专业课程,以就业为导向,加快专业课程对应的课程设计改革。目前,我院按照由浅入深、不断深化的教学规律,构建了实践教学三层次四环节的实践课程体系。实践教学三层次包括基本技能、专业拓展、综合创新,四环节包括实验、实习实训、设计和课外实践。“C语言课程设计”是我院信息类专业的必修专业基础课程设计,在“C语言程序设计”课程教学结束后的下一学期进行,历时2周,40学时。课程开设的目的在于培养学生分析问题和解决问题的能力,为学生提供一个动手、动脑、独立实践的机会。

21项目教学法“项目教学法”是基于建构主义教学理论的一种教和学的模式。著名的瑞士心理学家皮亚杰认为,知识不是通过教师传授得到的,而是学生在一定的情境下,借助他人的帮助,利用必要的学习资料,通过意义建构的方式而获得的。美国项目管理专家约翰·宾认为:“项目是要在一定时间里,在预算规定范围内需达到预定质量水平的一项一次性任务。”

“项目教学法”是通过实施一个完整的项目而进行的教学活动,旨在把学生融入有意义的任务完成的过程中,让学生积极地学习,自主地进行知识的建构,在课堂教学中把理论与实践教学有机地结合起来,充分发掘学生的创造潜能,提高学生解决实际问题的综合能力。因此,在教学活动中,教师将需要解决的问题或需要完成的任务以项目的形式交给学生,在教师的指导下,以小组工作方式,由学生自己按照实际工作的完整程序,共同制定计划,共同或分工完成整个项目。

在项目教学中,学习过程成为一个人人参与的创造实践活动,注重的不是最终的结果,而是完成项目的过程。在高等职业技术教育中,项目是指以生产或制作一样具体的、具有实际应用价值的产品的工作任务。在技术领域,很多小产品或一些复杂产品的模型都可以作为项目,如:在信息类专业,可以开展微机组装、网站建设、信息管理系统开发、局域网构建、单片机制作、多媒体课件制作等项目;在电子类专业,可以开展报警器、LED、门铃、家电组装等项目;在商业、财会和服务行业,所有具有整体特性并有可见成果的工作也都可以作为项目,如商品展示、产品广告设计、营销策划等。

22项目教学法的基本特征项目教学法与传统的教学法相比,有很大的区别,主要表现在改变了传统的3个中心:以教师为中心转变为以学生为中心;以课本为中心转变为以“项目”为中心;以课堂为中心转变为以实际经验为中心。项目教学法具有以下特点:

实践性。项目“源”于企业,项目的主题与真实世界密切联系,由浅入深,选择的项目具有典型性、实用性。

自主性。提供学生根据自己的兴趣选择内容和展示形式的决策机会,让学生能够自主地进行学习,从而有效地促进学生创造能力的发展。

发展性。长期项目与阶段项目相结合,构成了实现教学目标的认知过程。

评价特殊性。项目型教学的评价注重学生在项目活动中能力发展的过程,测评内容包括学生参与活动各环节的表现及作业质量,避免了传统的一张试卷定成绩的弊端。测评可以采用自评、小组评、教师综合评等方法。教师只有明确并抓住项目化教学特点,才能更好地完成教学目标。

31教学内容为了更好地开展课程设计教学,经过多次实践和摸索,总结出学生在具体实施项目中一般存在2个方面的知识不足:

第一,在教学内容上,由于前导课程在教学上受学时影响,很多教师对指针、结构体、共用体和文件基本操作的知识介绍不甚完善、系统,更难谈上辅以实例加以消化。对此,针对学生在这些知识点上的掌握程度,利用4~6个学时,实施区别式的、辅导性的、实例化教学。

第二,学生对项目管理知识知之甚少,针对此情况,采用2个阶段实施有别于常规教学的补课行动。第1阶段为项目准备阶段,利用2~4个学时,安排曾经做过项目且做得比较好的学生,现身介绍项目的准备工作、项目实施过程要完成的工作、项目验收及作业提交的工作等。在学生介绍中,教师穿插讲解,辅以点评。第2阶段为项目实施阶段,教师应针对学生发生的问题,及时给予指导,直到学生弄懂为止。

32教学要求切实保证教学质量和教学效果,本着“学以致用”的原则,要求学生做到以下3点:第一要做到“学有三备”,即:在项目实施前做好知识储备,在项目实施中做好安全防备,项目结束时做好被评准备。第二要写好“三书一报告”。“三书”即每个项目组要做需求规格说明书、概要设计说明书、详细设计说明书,“一报告”即人人都要做课程设计报告。第三要做“四自”参与者。“一自”即自律,要求学生自觉履行学生守则和项目实施有关规则,不迟到、不早退、不缺席,实施点名制度,若无特殊原因,有5次旷课者自愿以重修论处;“二自”即自尊,要求学生尊重知识、尊重学习规律、尊重项目组成员、尊重教师、尊重自己;“三自”即自信,要求学生相信自己能够按时、按量、按质完成工作内容,遇到困难时,沉着、冷静,理性地寻找问题解决的办法;“四自”即自强,要求学生不满足自己已有的成绩和以往与课题项目组共同取得的成绩,用创新和超越的思想,做出比以前哪怕是前进一小步的事情。同时也要求教师做好相应的工作,如做好项目整体规划、精心准备、努力激发学生参与行为、为人师表、表扬为主、批评为辅、多分析、精点评等。

33项目实施进程项目教学法是一种生动、灵活、多样化的教学方法。在项目实施过程中,既不能生搬硬套地利用一个时间标准,又不能影响项目实施的整体进程,因此对时间的灵活处理是非常关键的,也是值得商榷的。

34明确项目内容,帮助学生立项立项首先要审题。当学生拿到项目列表时,最不能忽略的问题,就是提醒学生审题。审题恰当对学生以后开展各项工作是关键。审题时,学生首先要考虑自己的长、缺处,做到扬长避短,也就是说审题就是学生自己审自己完成该项目有多大的能力,有没有信心。只有学生明白自己,才可以避免以后实施项目过程中走弯路。同时既要建议学生在组建项目组时,考虑所在组的其他学生的长处和短处,又要尽量避免使被学生认定的差等学生没人愿意与其组合,而成绩好的学生又抱团的现象发生。

根据近几年带课程设计的经验,关于如何合理选择项目,建议教师应从学生的角度考虑以下4个因素,协助学生做好选题:

规模。项目规模太大会影响项目的完整性,项目规模太小难以体现课程的实践性。

难度。项目难度一定要适中,既要激发学生学习的兴趣又不能影响学生的自信心。

实用性。项目的选择应该是现实世界真实的工作任务,具有一定的现实和实用性。

c语言课程设计报告 篇2

做为一门程序设计语言, C语言对于高职院校的学生非常重要, 它是学好JAVAT等其它高级语言的基础。因为C语言既有高级语言的特点, 又具有汇编语言的特点。它可以作为系统设计语言, 编写工作系统应用程序, 也可以作为应用程序设计语言, 编写不依赖计算机硬件的应用程序。所以, 高职院校的学生必须学好它。

C语言以其功能齐全、表达能力丰富、使用灵活方便、目标程序效率高、可移植性好、可直接对硬件进行操作等众多优点, 而备受青睐。C语言是培养学生程序设计能力的开端, 形成初步的基本程序设计思想和观念, 培养初步的分析和解决问题的能力。对于学生将来是否能够成为一个合格或优秀计算机专业人才, 起着重要作用。但C语言较之于现在流行的可视化编程, 界面枯燥, 语法烦琐, 如何在有限的学时内, 让对计算机一无所知的大一新生能够掌握C语言基本原理的同时, 能熟练运用程序设计的方法分析问题、解决问题, 成为C语言工作的重要组成部分。

1 C语言课程设计的目的

经过C语言课程设计, 能够充分掌握软件设计的基本方法, 了解C语言的好处和其可用性、重要性和必要性可以培养独立思考、综合运用所学有关相应知识的能力, 增加了同学之间的团队合作精神, 巩固C语言课程学习的内容, 强化动手编程能力。

经过这种课程设计, 使学生了解高级程序设计语言的结构, 具备初步的高级语言程序设计能力。掌握基本的程序设计过程和技巧, 掌握基本的分析问题和利用计算机求解问题的能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。

2 C语言课程设计的基本流程

它的具体流程如下:

首先, 做一个系统, 对其进行功能模块的分析、控制模块的分析, 然后检查是否符合课题要求, 能否实现其相应的功能;能不能够加以其他的功能或其他的修饰, 能否使程序设计更加合理和完善;

其次, 整个系统设计必须要达到实用的目的, 编程过程进量要简练, 可用, 其功能要全面;

第三, 课程设计的说明书及其流程图等要表述清楚;

第四, 为编写设计说明书作好准备, 要有相应的记录设计情况;

第五, 必须采用模块化程序设计的方法, 以及正确完整的书写格式, 并按设计的报告格式进行上机调试;

最后, 要提交设计内文档写作和程序开发必须同步。

也就是说:应该先完成程序设计目的分析和功能模块分析后, 再进行编码和程序调试、测试工作。编程测试要求学生把自己编写好的程序录入到计算机, 然后进行程序语法调试, 如语法正确, 再选取一些数据进行程序测试。这一部分是课题设计的关键, 也是需要花费时间最多的部分。在此过程中要求学生学会按模块一个一个地进行调试。

在编译时有时会出现比较多的出错提示。这时应努力理解、领会提示信息的含义, 并据此改正错误。当编译提示的出错信息不止一条时, 只须先注意其中第一条。因为从第二个错误开始的若干错误很可能是随带错误, 只要更正了第一个错误, 它们便自然更正了。对于C语言初学者, 最好先将程序以书面的形式描述出来, 然后录入计算机调试。在经过定性、定量分析后, 学生对所要进行的设计进行书面算法设计。强调学生在编程时要代码规范、使用注释, 养成良好的编程风格。通过将程序写到纸上, 不仅能使学生进一步掌握C语言语法, 而且学生在编程过程中如遇到问题, 可以有足够的时间提前到图书馆或网上查阅资料, 保证了程序的正确率和有限的上机调试时间。

实践证明, C语言课程设计对提高教学质量有明显的优越性, 克服了重理论, 轻实践的弊端。由于课程设计不是一般的书面作业或上机操作实验, 而是一次完整的软件设计。这就要求提前做比较多的准备工作, 如收集整理资料和编写较多的教学文件等。

3 C语言课程设计内容调整——适当取舍和整合

课程设计成功的首要条件是选择一个合适的题目。题目要符合实际, 不仅要使学生掌握C语言程序设计教学中的重要知识点、了解程序模块化开发等内容, 而且还要与现实生活联系密切, 具有一定的实用性和趣味性, 由于C语言程序设计是工科很多专业必修的课程, 所以在选题时尽可能体现本专业的特色, 具有一定的先进性和实用性, 增强学生对专业知识的领悟与应用能力, 可以与单片机结合进行课程设计

大多数C语言教材内容是按照“数据类型-基本结构-数组-函数-指针-文件”这样的顺序进行知识点编排, 内容详尽全面、讲解细致[1]。这样的做法偏于陈腐, 因此, 针对这些情况, C语言课程设计内容要进行适当的取舍和整合。

3.1 整合

适当的调整知识点的设计顺序, 增强知识点之间的联系, 这样可以直接把知识转化成能力。但在教材整合要注重知识的渐进性, 符合课程设计的认知规律。比如, 讲解整型数据的时候可以和该类型的输入输出语句的格式说明相结合, 通过两个数求最大值的例子, 引入if选择结构、关系运算符和关系表达式、流程图的画法的讲解。通过判断一个数的奇偶的例子, 引入算术运算符和算术表达式、等于运算符的讲解。这样就把书上的数据类型、运算符和表达式、顺序结构和选择结构四章的内容打乱、重组。

3.2 取舍

与其把所有内容通讲, 还不如挑一些内容精讲, 让学生熟练掌握这些知识。对于未讲的内容, 可以通过循序渐进的方式, 在例题或作业中逐步的加入。

4 C语言课程设计方法的改革——采用案例C语言法

传统C语言方式是以教材为中心, 从书本到书本, 从概念到概念, 导致C语言课程设计对理论与实践的脱节。而案例C语言法十分注重其效果, 通过案例分析解决实际问题。对设计的目标进行定性分析, 进行定量分析。可采取自顶向下、逐层分解的方法, 将课题分成有若干个模块, 然后对各模块重点和难点内容进行重点讲解, 使重点突出, 难点分散, 最终各个击破。

计算机学科是一门实践性很强的学科, 只“听”、“读”、“写”是远远不够的。在程序开发过程中, 程序调试的工作量要比编程大得多, 上机调试程序是一个不可缺少的重要环节。因此, 要明确上机目的, 验证程序的正确性, 具体的分析算法和语法结构。这样, C语言课程设计的实践目的才能达到。

C语言课程设计内容主要分成2部分:1) 理论课的例题;2) 针对理论课所讲的内容, 布置题目。如可以设计出一个工资管理系统:

(1) 设计要求

矩阵乘法:编写一个函数实现矩阵A (2行3列) 与矩阵B相乘 (3行2列) , 乘积放在C数组中。在主函数中输入相乘的两数组, 并输出结果。

工资管理:结构体数组、函数、指针、算法、流程结构及文件等的综合应用。

程序说明:有N个工人, 每个工人的数据包含职工号 (不重复) 、姓名、工资总和及分项工资, 试设计一工资管理系统。

(2) 功能模块的设计

输入记录函数EMP*create ()

算法:先声明一个首节点head, 并将head->next设为NULL。每输入一个数据就声明一个新节点p, 把p->next设为NULL, 并且链接到之前列表的尾端。

记录函数void er int (EMP*head)

算法:先将p结点的指针指向第一个结点, 将p结点 (即第一个结点) 的数

输出。然后再将p结点的指针指向p指针的的指针 (即下一结点) , 将p结点第一结点) 的数据输出。重复执行此步聚直到p指针指向NULL为止。

查找记录函数void search (EMP*head)

算法:采用线性查找法往下一个节点查找。输入所要查找的职工的职工号k,

设一个指针变量p, 先指向第一个结点, 当strcmp (p->name, k) &&p!=NULL时, 使p后移一个结点, 如果p!=NULL, 输出p所指的结点。

需要注意的是, 在整个设计过程中, 要设计好流程图。

在C语言课程设计中应该注意程序中频繁的调用函数会增加系统的负担, 降低程序的执行速度, 花费较多的时间, 影响C程序的执行效率。这就要求我们在编写程序时, 在程序的可靠性得到保证的前提下, 根据具体情况找出最优的、能充分利用系统资源和提高程序运行效率的一种最佳方法。当然, 在不同的系统和不同配置的计算机上程序的运行效率是不尽相同的, 程序的效率问题是在编写较大或较复杂程序时应该充分考虑的。

5 结论

本文通过对C语言课程设计的探索和改革, 探讨了在C语言课程设计中的设计方法和应注意的一些重要问题, 通过这些探索, 能够使学生的理论水平和实践能力大大提高, 这对C语言的学习和课程设计有一定的指导作用, 学生综合能力也会不断的增强。

参考文献

[1]谭浩强.C语言程序设计教程[M].北京:清华大学出版社, 2007.

[2]李博.多媒体C语言中存在的问题及解决措施[J].才智, 2009, 8.

[3]李炜.计算机高级语言程序设计的C语言改革与时间[J].安徽师范大学学报:自然科学版, 2003, 26 (2) .

[4]管小卫.C语言课程设计探讨[J].广西轻工业, 2009, 1.

《C语言程序设计》课程教学研究 篇3

随着计算机的日益普及和互联网的飞速发展,以信息产业发展水平为主要特征的综合国力竞争日趋激烈,软件产业作为信息产业的核心和国民经济信息化的基础,越来越受到世界各国的高度重视。软件技术已成为信息社会的运行平台和实施载体,软件技术应用的全面延伸对用于信息处理的软件技术的发展提出了更高要求,同时促进了软件技术和软件行业的飞速发展,软件技术已经成为人们公认的当今发展最为迅速的技术之一。

《C语言程序设计》是软件工程专业的核心基础课程,其教学效果的好坏,对整个专业教学计划能否顺利完成和专业培养目标能否实现有着重要的作用。本文针对软件工程专业的特点,从培养工程应用型人才的实际需求入手,结合笔者自身的教学实践,对《C语言程序设计》课程教学中的问题进行了分析,从课程教学设计与课程实践教学方面提出软件工程专业《C语言程序设计》课程教学的一系列改进措施。

一、课程教学现状

笔者结合多年的教学实践,并通过调查在校往届学生的学习情况发现,《C语言程序设计》课程教学存在一些问题。

(一)教材内容与实践脱节

教师教授理论课时,大多依据教学大纲指定的配套教材进行讲授,实验课的编程题目多数是验证课本上的例程或者理论课教材后的作业。目前,软件工程专业理论课使用的教材大多以傳授基础理论知识为主,虽然一些知识点后给出了相应的实例,但是这些案例比较孤立,缺乏与工程实践的联系,导致学生觉得日常练习的例程枯燥无味,而且不知道如何将基础理论知识应用于工程实践,使自己具备一定的解决问题能力。由于学生所学知识及其方法与工程实践没有有机结合起来,学以致用的工程意识缺乏日积月累的养成土壤,学习的兴趣和动力不知不觉地消失在盲目与盲从之中。

(二)课程考试与实际应用相关性差

《C语言程序设计》是计算机专业学生学习各类专业课程的重要工具性课程,主要培养学生的工程实践能力。通过调查发现,目前该课程考核仍然以闭卷笔试的形式为主,考试内容主要为基础知识点。这样,学生在面对课程考核时,出于应对考试的需要,知识点背一背、记一记,复习课程和政治课、历史课类似。课程考试方式和内容与实际应用较差的相关性导致学生学习动力不足。

二、课程教学设计

事实上,尽管学习动机不尽相同,学生层次有差异,但绝大多数学生能够认识到自己的需要,希望通过学习提高自己的能力。结合学生特点,笔者认为“做中学”和“基于项目教与学”能够较好地提高《C语言程序设计》课程教学质量。

(一)“做中学”统一知与行

“做中学”是比从“听中学”更好的学习方法,符合人类对客观事物规律的认识,能够把书本上的知识与工作生活联系起来,充分结合了学与做。因此,在设计组织教学活动时应注重实践活动的设计,把教学活动与工作生活实际相结合,鼓励学生在实际活动中学习,并将实践中获得的知识与技能有效运用于解决学习、生活和今后工作中的实际问题,即在实践中学习,在学习中实践。

(二)“做中学”最有效的方法就是进行基于项目的学习

一个完整的项目是从分析开始,经历构思、设计、实现和运作的一个完整过程,在学习学科知识的同时能够提高个人产品过程的认知能力和系统建造的能力。在课程的设计过程中,始终强调以项目为导向,以任务为驱动,以一个具体项目为依托来学习相关的内容,在具体实施中分级设置项目,先易后难、循序渐进地将相关的知识点融入项目的任务之中,通过完成任务掌握相应的知识点,提高相关技能和操作的应用能力。在此过程中,学生不断进行实践、总结、反思,将琐碎的知识点串联起来,逐步培养学生的综合能力。

三、课程教学实施

(一)多方面积极引导,激发学生学习兴趣

学生在学习《C语言程序设计》设计之前,可能通过新生入学教育或从高年级学生中知道这是一门专业必修课程而兴致勃勃,但到真正学习时,如果一直都是面对一堆单调而且枯煤无味的语法知识,则容易使学生产生厌学心理从而逐渐失去学习的兴趣。因此,要改进教学方法。首先,通过展示学校近几年来在各种比赛中获得的好成绩,让学生观看比赛的图片,让学生知道只要努力,在各种竞赛中都可以占有一席之地,这样学生就有可达到的奋斗目标从而消除他们的畏难情绪,激发学生的学习兴趣。

其次,在课堂讲授时尽可能找一些趣味性较强的例子讲解,除布置基本的训练学生掌握语法或者算法的题目外,设计1—2个有趣味性的游戏程序设计,如在选择结构编程练习中简易计算器的开发,在循环结构编程练习中加入猜数字游戏设计,在一维数组编程练习中加入猜牌术游戏等,这些游戏程序设计的开发有一定的难度,鼓励学生结成兴趣小组,互帮互助共同完成,在此过程中,学生的学习自主性和团队协作精神都得到大幅提高。

(二)精心设计实验教学

要根据《C语言程序设计》实验的教学大纲制定实验计划,精心设计每一次实验内容,要综合考虑学生编程能力上的差异,不要把题目设计得太深或者太简单,可以设计必做题和选做题,对基础较差的学生,最低要完成必做题;对能力较强的学生,在完成必做题的基础上,鼓励他们去完成选做题。同时,在实验的编排上,注意验证性、设计性和综合性实验的比例,对验证性实验进行精选,即使是验证性实验,也不要简单验证程序的运行结果,而是首先要求学生阅读程序,写出运行结果或程序实现的功能,然后再上机运行,同时可以设计一些问题让学生思考并对程序进行进一步修改,然后再分析运行结果。减少验证性实验项目,增加设计性和综合性实验项目,由浅入深、由易到难,加强学生动手能力、分析问题和解决问题能力的培养,最终提高学生的编程能力。

(三)灵活运用多种教学手段

在做题过程中,教师的主要任务是及时发现问题,回答学生的疑难问题。但是,在实验练习的过程中,学生主要依靠自己讨论或者上网寻求思路来解决问题。这是一个值得鼓励的好现象,能够充分体现学生独立自主学习的能力,在课堂教学中应当鼓励学生互相讨论,互相交换思想共同解决问题。但是,在教学中教师的作用体现不够充分,不愿意寻求帮助的学生会因为一道题目没有解决而无法正常进行实验练习,教师的作用应该是在学生自主解决问题的同时,能够及时提供帮助,尽量统一实验进度。在上机指导学生实验时,要以问题为中心,广泛采用启发式、参与式和讨论式等教学手段,要打破学生对教师的依赖性,让学生自己去思考如何编程,如果较难的题目允许学生讨论,鼓励学生去查阅相关资料,也可以适当给学生一些提示,但一定不要给学生源代码,重点给出解题的思路与建议性方法,给学生留下足够的独立思考和设计的空间,使学生在实验过程中亲自体会并掌握程序设计思想,提高实验的教学效果。

(四)利用网络教学平台让学生主动学习

充分利用校园网内建立的《C语言程序设计》网络教学平台,在该平台上共享本课程部分教学视频、相关课件、经典算法资料、ACM大赛历年题目,可以让学生通过此网络教学平台更加自主地选择性学习,更重要的是利用此平台与学生进行互动交流,在答疑区对学生提出的问题,老师与学生都可以及时解答,同时其他学生也可以分享交流过程,随时再提出新问题,更好地激发学生的学习兴趣,增强教师与学生、学生与学生之间的互动。通过多种教学方式的结合,不仅加深了学生对所讲知识点的理解,而且激发了学生的学习兴趣,提高了学生学习的自觉性,同时通过互动交流式学习增强了学生的自信心。

参考文献:

[1]张红军.C语言程序设计教学改革初探[J],信息与电脑,2015 (9):140-142.

[2]刘红霞,张永恒.CDIO工程教育模式下的C程序设计教学改革研究[J],榆林学院学报,2015 (4):83-86.

[3]李文锦,游戏化学习在C语言程序设计的应用与实践[J],新课程研究,2015 (7):76-77.

c语言程序贪吃蛇课程设计报告 篇4

Experiment Designing reporter 课程名称:高级语言程序设计

英文名称

: C Program Experiment Designing 专业:自动化 111 学号: XXX 姓名: XXX 指导教师: XXX

日期:

2012 年 6月 17日至 2011 年6 月 20 日 山东工商学院信电学院 一:课程设计内容 程序功能介绍

贪吃蛇游戏是一个经典小游戏,深受众多玩家喜爱,其规则是:一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。此游戏不仅能锻炼人的思维敏捷性,而且还可以提高玩家的逻辑判断能力。设计思路

我们小组称设计本次课题——贪吃蛇的思路为“贪快速上手贪吃蛇三步曲”: 第一步:

寻找到一个真正可以运行的已用C编好的贪吃蛇。因为我们毕竟从未看到过用C编游戏的程序,让我们两手一抹黑的开始编写是有一定的困难的,如果我们自己找一个已经设计好的程序,以此为跳板实现我们想要达到的效果,那么肯定是高效的。所以我们组统一决定,去寻找一个可以运行的C编译的贪吃蛇。第二步:

运行游戏并了解游戏程序。

我们认为,只有你运行并了解一个游戏,才能知道游戏里需要什么样的改进和创新,如果你自己本身就没玩过这个游戏,那么你就是再有技术,你也永远改进和改编不了一个游戏,因为你根本不知道你在干什么。

同样重要的是了解游戏程序。因为只有看懂了程序,才能实现对他的改编,才能游刃有余。第三步:

寻找模块并分类,而后进行改编。

寻找到你想要改变的游戏内容的控制模块,比如,我想要增加一堵墙,那么就应该找到 void DrawK(void){

setcolor(11);

setlinestyle(SOLID_LINE,0,THICK_WIDTH);for(i=200;i<=500;i+=10)

rectangle(i,200,i+10,209);} 然后要找到:改变蛇初始长度、颜色、初始位置的模块,改变苹果出现位置的模块,让蛇见墙死的模块,让蛇吃苹果加长的模块„„„.并且进行分类,这样下次再想实现某个目标时,可以一目了然的进行改编。对于找到的模块如何进行改编呢?怎么才能知道某个数值或函数代表什么呢? 我们有两个方法:

1.)看名字,比如snakecolor(),很明显他的意思是蛇的颜色。2.)控制变量猜想,比如设置墙的时候for(i=200;i<=500;i+=10);

rectangle(i,300,i+10,309);中的200,500,300,209 代表什么呢?我们可以猜想:它很像是坐标上的(x,y)的格式,是不是呢?可可以先让其他数值不变,只让309改变,改变后发现上面的墙变粗了,由此可见这个数字控制的是一堵墙的最下面一行的坐标。

关于该程序的相关分析思路答题模板:

1.贪吃蛇程序流程图如下:

二.贪吃蛇程序的改编:

经过小组成员的认真研究我们对其进行了如下改编 第一步加墙 void DrawK(void){ /*setbkcolor(MAGENTA);*/

setcolor(5);//

可以改变颜色

setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ 横向上的墙:

for(i=100;i<=600;i+=10)// 本行代表行坐标上:100代表墙的初始位置,i<=600代表墙的结尾。

{

rectangle(i,60,i+10,69);//本行代表纵坐标上:60代表墙的最上面一行的位置,69代表墙最下面一行的位置。69-60=9,9代表墙块的厚度 } 纵向上的墙:

for(i=100;i<=400;i+=10)//本行代表纵坐标上:100代表墙的初始位置,i<=400代表墙的结尾

{

rectangle(100,i,109,i+10);//本行代表纵坐标上:100代表墙的最左边面一行的位置,69代表墙最右面一行的位置。69-60=9,9代表墙块的宽度

} 我们认为本模块最重要的是for语句控制的坐标代表的意思。只要明白了坐标的意思,就可以实现对游戏的改编。

第二步就是进行对新加入的墙蛇是否撞上死亡

让蛇撞墙死

if(snake.x[0]>190&&snake.x[0]< 510&&snake.y[0]>=200&&

snake.y[0]<=215)

/*其中,对x,y范围的控制,实际是对蛇撞击的死亡区域的限制。*/

{

GameOver();/*本次游戏结束*/

snake.life=1;/*蛇死*/

} 相应的新添加的墙。

for(i=200;i<=500;i+=10)/*画围墙*/

{

rectangle(i,200,i+10,209);/*指定位置*/ 第三步食物的定点出现

if(food.yes==1)/*需要出现新食物*/ 这里说明一下:rand()产生0-65535的数,在limits.h里有定义%400后产生一个0-399的数+60 则为 60 –459,即:%400+60意思是在60~399之间随机产生一个数。

{

food.x=rand()%400+60;

food.y=rand()%350+60;

while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/

food.x++;

while(food.y%10!=0)

food.y++;

food.yes=0;/*画面上有食物了*/

} 如果将food.x=(常数a)那么食物就会出现在x=a行的随机列,对于food.y=(常数b)那么食物就出现在y=b列的随机行。

第四步对食物墙壁的颜色以及对蛇的运动速个性化调节

setcolor(4);// 对颜色的调整 int gamespeed=50000;/*游戏速度自己调整*/

通过改变变量的值,就可以个性化选择自己喜欢的颜色,这将是一场别开生面的游戏界面。* 红色代表解析浅蓝代表提示 三.课程设计总结 有言曰:“实践出真知”,在这几天的课程设计实践中,我们组三人真正的体会到了这句话的真谛。

在经历了一学期的C语言学习后,我们从以往的“纸上谈兵”直接过渡到“实际作战”。我们实现了让静态的程序变成动态的游戏效果,虽然我们只是改编了一下别人做好的程序,但我们同样由此获益匪浅,感触颇深,当然也发现了许多自己的不足。

首先,在我们刚刚进行第一步“寻找程序”的时候,就被搁浅了,因为我们发现,在网上能找到一个真正符合我们使用标准的程序很难,就是找到了几个也没有能运行它们的程序。我们花费了前两天的时间来寻找能够使用的程序和软件,但最后还是一无所获,正当我们一筹莫展的时候,我们的导师——杨老师给我们带来了曙光,使得我们在黑暗中找到了希望的光明,杨老师给我们传来了一个上届师哥做好的程序,并且把它的运行软件也给了我们,这对我们来说无疑是雪中送炭,得到这个程序后,我们三个人看到了C语言运行一个游戏的流程和方法,我们脑中也大概有了一个思路。我们三个人以此程序为跳板,直接开始对程序模块进行挑选,因为我们已经浪费了两天,所以我们决定进行分工作业,分别去寻找:筑墙模块,加苹果模块,撞墙死模块。最后我们用了一下午时间完成了三大步中的前两大步和第三步的第一部分,剩下的就是最重要而充满挑战的改编了,从以上的操作中,让我们明白了找对一个平台的重要性,这个平台就是老师给我们的程序,就是我们的前进方向。没有了方向了的征程,一开始就是个错误。在我们寻找程序模块的时候,我们对于程序中的很多东西都是模模糊糊的概念,比如struck是什么,比如for语句的使用,以及for语句的循环体是什么,当然我们也发现了定义字符在长的程序中的方便与重要性。还有就是我们发现程序在编写时的规范性很重要,比如同级别花括号的位置的对应,对应好了,模块就好找,对应不好就很乱。还有定义函数及变量的时候,函数名字和变量名最好是见名知意,比如我们所看的程序中,gamespeed,snakecolour,food.....在最后的攻坚阶段,为了实现对程序的改编,我们使用控制变量猜想法是正确的选择,比如设置墙的时候for(i=200;i<=500;i+=10);

rectangle(i,300,i+10,309);中的200,500,300,209 代表什么呢?我们猜想:它很像是坐标上的(x,y)的格式,是不是呢?我们先让其他数值不变,只让309改变,改变后发现上面的墙变粗了,由此我们知道这个数字控制的是一堵墙的最下面一行的坐标。我们用这个方法知道了其他很多数值的用途。我们用这种方法先是知道了如何设置一堵墙,在我们欣喜设置一堵墙以后才发现:蛇撞了墙后不死。在我们进行了全局来看以后才知道,原来设计一堵墙,都要再设计一个if语句来使得蛇在这个范围内会死亡。并且我们发现在设计这个if语句的时候,不仅要计算好墙的坐标,而且还要用好逻辑语言(&&,||!)同时语句的运算顺序也很重要。刚一开始我们忽略的&&和关系运算符级别的高低,使得我们设计的墙,总是撞不死蛇,为此我们很是恼火,着急的组员还在这里发生了点小摩擦,由此可见C语言的严谨性!

最后我们又通过在网上查找信息,知道了随机数发生器randomize()的用法:rand()=x%+d 意思是说在d~(x-1)之间随机产生一个数字。我们很自然的联想到,如果把food.x等于常数a;把food.y等于一个;x%+d的随机数,那不就能固定只在某一行出现苹果了吗?所以我们觉得,充分利用手边的资源也是很重要的,毕竟C语言很高深,课本上的东西总是有限的,要想知道更多的东西还需多练习,多查阅资料。总之:革命尚未成功,通知还需努力啊!四个人感受: 汤X:

就我个人而言,这次课程设计,我觉得我最大的收获就是:我明白了,我们其实真的没那么厉害,我们真的还有很多东西不会,我们真的连课本上的基本东西都没掌握,课本上的东西,真的也只是C语言这个大海中的一滴水而已。而在我本人还没有掌握好课本的知识点的情况下,做起这个程序自然很费事,一个简单的课本P293讲到的struct结构体,我一开始竟然忘记它是什么意思,不知道它是什么,就更不用谈怎么用它了。还有逻辑语言的使用。我想,现在肯定有很多同学还不知道逻辑运算的优先次序吧?这个问题我本人在使用逻辑语言的时候也不太会,还查看了书。像这些小的知识点,我个人认为如果掌握不好的话,是不可能让整个大程序运行起来的。还有比如我在遇到程序显示“else多余”的警告时候不不知所措,问了老师才知道是if()后面加了“;”而且if没有用“{}”来固定范围,这个错误原因是分号使得if语句结束了,孤立的else当然是多余的了。一个小小的分号使得程序无法运行,由此可见在今后的编程中,一定要注意谨慎,仔细。同时要注意记住平时编程的时候,出现的错误指示是什么意思。比如这次的“else多余”就是因为if后多了分号。还有在编程时候,书写一定要规范,特别是if语句的花括号的位置要对应起来,因为位置决定范围。注意定义变量和函数要使用规范的英文单词,这样才能见名知意,为以后修改找变量节省时间。对于这次课题中,“设计一个墙,就要对应一个函数舍得蛇撞墙死”,让我明白,C语言程序中各部分的联系性,牵一发而动全身,所以在编程时一定要注意全局的把握。我们最后还要说说在编程中,好好利用网络资源,因为课本里的东西总是有限的,而C语言又那么高深,像随机数发生器,还有颜色的定都是我第一次接触,这些东西的用处可是颇大,以后一定好好学习。多看,多练,多总结。最后还要感谢指导老师,杨老师对我学习的帮助和指导。徐XXX: 刚开始拿到题目时候什么也不会一片茫然,从网上找了一个程序一看,太吓人了,这么长怎么看啊,而且还是错误的。没办法只能硬着头皮去改了,但是在改的过程中才发现其实c语言没有想象的那么难而且还很有意思,只是自己平时没有好好学所以在改的时候非常吃力,有很多简单的知识都不知道,没有记住。没办法只能借助与课本了。但是几天下来发现自己已经不再像以前那样是个菜鸟了,虽然很多知识还没掌握。同时在编改程序的时候切记不能烦躁要静心慢慢来,好几次自己都因心燥出现了很多不该出现的错误浪费了很多时间。

对键盘的熟悉在编程时也是很重要的,自己在写的时候往往就是跟一指禅差不多眼睛盯着键盘打,打错了也不知道最后导致整个程序都是错误的,就因为一个打错了一个字母。

总的来说这次课程设计收获很多,也知道了自己的不足,在以后的学习中要多实践,实践很能提高自己的能力。刘XX:

4天的C语言课程设计上机学习让我感受颇多,每天都发现新的问题,又不得不绞尽脑汁解决问题,心情就像正弦函数,随着问题的出现和解决一起一伏。刚开始接触贪吃蛇的C语言成寻时,看着C-free上面出现的有十几个错误的程序,一片茫然不知所措。只能继续在网上搜索错误较少的程序,并结合书上的基础知识查看错误所在,最终发现是不能在C-free中运行,只能在mytc5.6上运行。

作为小组中唯一的女生,明显感觉有压力,打字速度不如另外两个男生,对游戏和程序的敏感也不如他们强,有种小小的挫败感。旁边小组的同学也给我很大的压力。他们自己编写程序,我很佩服他们,越是这样想。心里越着急,越不能解决问题,每当感觉有压力的时候,就提醒自己心静,认真的看程序。在学习过程中,深深的发现了自己的不足之处,对于C语言,只学了一点点皮毛东西,想要学好C语言,编好程序,还要付出很多的努力,还要用更多的时间来学习C语言这门深奥的学科。现在只能借用别人已经写好的程序,在别人的基础上,一点点进步和学习,比如程序中筑墙,需要仿照已有的程序,结合逻辑运算,关系运算和数学知识才能让蛇撞墙死。苹果位置的出现也同样需要进一步的搜索,通过更改食物的横纵坐标以及出现的概率来确定食物的位置。编写程序时,也发现书上的东西对于程序的某些部分来说,没有什么作用,显得太浅显,想要实现老师给出的一些要求,还需要实践,通过上机学习,自己摸索才能成功。一次次修改,一次次失败,就像贪吃蛇想方设法吃苹果会Game over,我们只有认真学好基础理论,并结合实践经验才会取得进步。

在这次学习过程中,我很感谢我的组员,虽然有时我们的意见出现分歧,但是通过大家的共同努力,我们收获了很多,一起讨论,一起研究怎样解决问题,对老师提出的要求个个击破,我们拧成一股绳共同应对问题,让我感受了团队的力量希望在以后的学习过程中,我们依然能够互相帮助,共同进步。

五 课程设计修改后的程序.加墙

for(i=200;i<=500;i+=10)/*画围墙*/

{

rectangle(i,200,i+10,209);/*指定位置1*/

} for(i=120;i<=200;i+=10)/*画围墙*/

{

rectangle(100,i,109,i+10);/*指定位置2*/

} 2.指定位置加苹果

if(food.yes==1)/*需要出现新食物*/

{

food.x=rand()60;

food.y=rand()%200+60;

while(food.x%10!=0)

food.x++;

while(food.y%10!=0)

food.y++;

food.yes=0;3.指定地方撞墙死

if(snake.x[0]>190&&snake.x[0]< 510&&snake.y[0]>=200&&

snake.y[0]<=215)

{

GameOver();/*本次游戏结束*/

snake.life=1;/*蛇死*/

} if(snake.x[0]>90&&snake.x[0]<110&&snake.y[0]>=110&&snake.y[0]<=215)

{

GameOver();/*本次游戏结束*/

snake.life=1;/*蛇死*/

}

C语言课程实践-实践1实验报告 篇5

1.程序源代码

程序1 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则计算机给出提示“Right!”,否则提示“Wrong!”,并告诉人所猜的数是大还是小,然后结束游戏。要求每次运行程序时机器所“想”的数不能都一样。#include #include #include void main(){

int input_number;

int random_number;srand((unsigned)time(NULL));random_number = rand()%100+1;printf(“输入您想猜的0~100之间的数:”);scanf(“%d”,&input_number);if(input_number >= 0 && input_number <= 100){

if(input_number == random_number)

{

printf(“nright!”);

}

else if(input_number > random_number)

{

printf(“n您猜的数过大n”);

}

else

{

printf(“n您猜的数过小n”);

} }

else

{

printf(“n您猜的数应在0~100之间”);} } 程序2 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。#include #include #include void main(){

int input_number;

int random_number;int n;srand((unsigned)time(NULL));random_number = rand()%100+1;for(n=1;;n++){

printf(“输入您想猜的0~100之间的数:”);scanf(“%d”,&input_number);if(input_number >= 0 && input_number <= 100)

if(input_number == random_number)

{

printf(“nright!n”);

if(n==1)

{

printf(“n您猜了%d次,太牛逼了.n”,n);break;

}

else if(n>1&&n<6)

{

printf(“n您一共猜了%d次,水平还行.n”,n);break;

}

else

{

printf(“n您一共猜了%d次,才猜对,很勉强啊.n”,n);break;

}

}

else if(input_number > random_number)

printf(“n您猜的数过大n”);

else

printf(“n您猜的数过小n”);

else

printf(“n您猜的数应在0~100之间”);} } 程序3 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,结束游戏。

#include #include #include void main(){

int input_number;

int random_number;int n;srand((unsigned)time(NULL));random_number = rand()%100+1;for(n=1;n<=10;n++){

printf(“输入您想猜的0~100之间的数:”);scanf(“%d”,&input_number);if(input_number >= 0 && input_number <= 100)

if(input_number == random_number)

{

printf(“nright!n”);

if(n==1)

{

printf(“n您猜了%d次,太牛逼了.n”,n);break;

}

else if(n>1&&n<6)

{

printf(“n您一共猜了%d次,水平还行.n”,n);break;

}

else

{

printf(“n您一共猜了%d次,才猜对,很勉强啊.n”,n);break;

}

}

else if(input_number > random_number)

printf(“n您猜的数过大,您还有%d次机会n”,10-n);

else

printf(“n您猜的数过小,您还有%d次机会n”,10-n);

else

printf(“n您猜的数应在0~100之间”);} if(n==11)

printf(“n你输了!n”);}

程序4 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反复猜多个数,直到操作者想停止时才结束。#include #include #include void main(){

int input_number;

int random_number;int n,i=1;

game: srand((unsigned)time(NULL));random_number = rand()%100+1;for(n=1;n<=10;n++){

printf(“第%d轮游戏,输入您想猜的0~100之间的数:”,i);scanf(“%d”,&input_number);if(input_number >= 0 && input_number <= 100)

if(input_number == random_number)

{

printf(“nright!n”);

if(n==1)

{

printf(“n您猜了%d次,太牛逼了.n”,n);break;

}

else if(n>1&&n<6)

{

printf(“n您一共猜了%d次,水平还行.n”,n);break;

}

else

{

printf(“n您一共猜了%d次,才猜对,很勉强啊.n”,n);break;

}

}

else if(input_number > random_number)

printf(“n您猜的数过大,您还有%d次机会n”,10-n);

else

printf(“n您猜的数过小,您还有%d次机会n”,10-n);

else

printf(“n您猜的数应在0~100之间”);}

} if(n==11){ printf(“n你输了!n”);i=i+1;goto game;} 2.遇到的问题及解决方法

问题1:随机数如何调用?

解决方法:运用srand((unsigned)time(NULL))函数。

问题2:”直到人猜对为止”功能如何实现? 解决办法:运用一个“无穷循环”,另游戏能够不断进行,并运用break语句停止于猜对情况。

问题3: “以此来反映猜数者“猜”的水平”功能的实现?

解决办法:在猜对情况下的if语句中嵌套if语句实现“猜数次数”的判断,分支输出“猜”的水平。

问题4:“每次运行程序可以反复猜多个数”功能的实现?

解决办法:此功能比较困难,但反复阅读程序后,发现代码并不复杂,运用goto语句和if语句的运用进行循环,即可实现此功能,且不会因为运用goto语句造成程序模块的混乱。

3.总结(心得体会)

这是“C语言课程实践”的第一次实践,由于平时并没接触过Microsoft Visual C++ 6.0这个编译软件,因此刚开始还存在操作方面的苦难。经过一两节课的实践,能够熟悉界面和学会新建工程。

此次实践题目是“猜数游戏”,题目分成4个部分,其实内容相同,只是功能逐渐增加。鉴于这种题目,编写程序中需要思考预留部分,比如运用if语句嵌套时,要注意把“猜对”、“猜错”和“误猜”分支出来,使程序容易阅读也容易进行修改。

在编写程序过程中,遇到几个核心问题,通过学习后把困难一个个突破,并成功实现题目所要求的功能。

C语言课程设计选题 篇6

一、《学生成绩管理系统》

1、写一个“学生成绩管理”程序,要求程序如下功能:

(1)成绩录入,(2)成绩修改(按学号修改),(3)成绩查询(至少提供按学号、按姓名、按班级、按课程等4种查询方式)(4)统计汇总(总分、平均分、最高分、最低分等)

2、一条学生的成绩记录结构如下:

学号(主键,无重复,数据类型可用长整型,编码位数及含义自定)姓名(字符型数据,长度自定)班级(整型数据,长度自定)

课程成绩(包括至少4门课程成绩,课程名自定,每门课程数据类型为实型数据,长度5位,小数1位)

3、学生成绩以文件形式存放

要求用链表实现数据的输入、查询、修改和删除操作。4.作业提交方式:

(1)设计报告:在程序运行界面突出显示设计者的班级、学号和姓名。内容包括:设计思路、功能模块划分、系统结构图、程序清单。设计报告一律用A4纸打印,封面要统一,装订线在左侧,双面打印。

(2)光盘:每个班统一制作一张光盘,每人一个文件夹,命名为:学号和姓名。

光盘内含:源程序文件;可执行程序文件;测试用例;课程设计报告WORD文档。

二、《工资管理系统》 题

三、《图书管理系统》

1、主要的数据表

图书基本信息表,借书卡信息表,借阅信息表,图书分类信息表,代码表等.2、主要功能模块

图书基本情况的录入,修改,删除等基本操作.办理借书卡模块.实现借书功能.实现还书功能.能方便的对图书进行查询.对超期的情况能自动给出提示信息.具有数据备份和数据恢复功能.3、设计要求

图书编号可参考国家统一的图书编码方法,再完成基本功能模块的情况下,尽量使系统能具有通用性.题

四、《仓库管理系统》 题

五、《票务管理系统》

六、《通讯录管理系统》等等„„

作业要求和提交方式: 同题一。

七、《学生学籍管理系统》

1、主要的数据表

学生基本情况数据表,学生成绩数据表,课程表,代码表等.2、主要功能模块

实现学生基本情况的录入,修改,删除等基本操作.对学生基本信息提供灵活的查询方式.完成一个班级的学期选课功能.实现学生成绩的录入,修改,删除等基本操作.能方便的对学生的每个学期成绩进行查询.具有成绩统计,排名等功能.具有留级,休学等特殊情况的处理功能.能输出常用的各种报表.具有数据备份和数据恢复功能.3、设计要求

学生成绩表的设计,要考虑到不同年级的教学计划的变化情况.对于新生班级,应该首先进行基本情况录入,选课,然后才能进行成绩录入.2 题

八、《地铁站售票机售票过程的模拟》

1. 本题内容为:用C语言编写一个模拟广州市地铁一号线某车站自动售票机售单程票的过程的程序。要求可以选择输入起点站。

2. 要求按“选到达站”→“投币“→“出票”的过程准确无误地完成一次购票操作。

选到达站:用显示菜单方式显示各车站名,然后按相应的车站编号选择;

投币:按到达站的票价,可用按下一次空格键代表投入一枚一元硬币。(不要直接按数字键);

出票:用给出文字信息表示出票操作(包括退还多投的硬币信息)。

3. 要求能对乘客购票步骤给予提示,对错误操作给予提醒。(如在规定的时间快到时未能投入足够的币额则显示催促信息,而规定的时间到后未能投入足够的币额者则取消本次购票操作并退还已投款项)。

4. 操作简便、可靠性好(不能遇误操作就出现退出运行程序或死机)。5. 作业提交方式:同题一。

九、《银行储蓄管理系统》

1、主要的数据表

定期存款单,活期存款帐,存款类别代码表等.2、功能模块

实现储户开户登记.办理定期存款帐.办理定期取款手续.办理活期存款帐,办理活期取款手续.实现利息计算.输出明细表.具有数据备份和数据恢复功能.3、设计要求

要进行实际调研,系统功能在实现时参照实际的储蓄系统的功能.同时要考虑银行系统数据的安全与保密工作.数据要有加密功能.题

十、《设备管理系统》

1、主要数据表

设备明细帐表,设备使用单位代码表,国家标准设备分类表等.2、功能模块

实现设备的录入,删除,修改等基本操作.实现国家标准设备代码的维护.能够对设备进行方便的检索.实现设备折旧计算.能够输出设备分类明细表.具有数据备份和数据恢复功能.3、设计要求

具体设备编码参考国家统一编码方法,功能实现也要考虑通用性.题

十一、《医院药品进销存管理系统》

1、主要的数据表

药品分类代码表,药品库存表,供货商信息表,采购信息表等.2、功能模块 新药品的入库.过期药品的出库登记,处理记录.药品库存检索.供货商信息检索.药品采购记录管理.药品用药说明信息管理.输出相应的数据报表.具有数据备份和数据恢复功能.3、设计要求

具体项目内容去医院进行调研,药品编码也应参考国家统一编码方法.题

十二、《英语学习助手系统》

1、主要的数据表

英语分级单词表,常用单词例句表,短文分级表等.2、功能模块

实现英语单词的录入,修改,删除等基本操作.实现常用英语单词例句的录入,修改,删除等基本操作.实现英语单词检索,翻译等.常用英语单词例句检索.根据难度随机生成一份单词测试题目.能够检索出短文极其翻译对照表.具有数据备份和数据恢复功能.3、设计要求

系统要考虑实用性,尽量实现英汉互译.英语单词和短语可以考虑加上声音.题

十三、《大学生就业咨询系统》

1、主要数据表

用人单位基本信息表,专业信息表,地区代码表等

2、功能模块

对用人单位的基本信息进行录入,修改,删除等.实现毕业生专业信息的维护.定时发布用人单位的毕业生需求信息.方便的实现对人才需求信息的检索.对用人单位的级别能够自动进行变更.能够对历年的毕业需求信息进行统计,分析.具有数据备份和数据恢复功能.3、设计要求

方便毕业生进行就业信息检索,可考虑将就业信息在网上进行发布.题

十四、《教务辅助管理系统》

1、主要的数据表

教师基本信息表,课程表,教室资源表等

2、功能模块

对上课教师基本信息进行管理.对全院开设的课程进行管理.录入教师基本上课信息.实现自动排课功能.计算工作量 能够进行各种数据统计.能够输出相应的报表.具有数据备份和数据恢复功能.3、设计要求

软件功能主要考虑实用,具体功能模块一定要先进行调研.如果有下列情况,则视情节严重程度,成绩下降若干档次,直至不及格:  光盘文件含有病毒或者内容不能正确读出;  抄袭、复制别人程序或文档;  未能按时提交实验报告和光盘。

C语言程序设计课程教学探讨 篇7

现在高等学校, 一般也都根据不同的需要选用不同的程序设计入门课程。其中C语言作为一门程序语言基础课, 由于其功能强、使用灵活等优点受到广泛的欢迎, 也就是说C语言已经成为了学习程序设计语言的一个必要的基础。在学时相对较少的情况下, 学生要学好这门课有一定的难度.但依然要提高教学的质量和效果是广大教学工作者正在思考和探索的问题.

2、教学过程中的改进

2.1 教学方法的改进

C语言作为DOS时代的一种主流程序设计语言, 已逐渐演变成为一种程序设计的入门级语言——重在使学生熟悉计算机处理事务的过程, 掌握程序设计的思想, 完成学生从中学生到大学生学习思想的转变。因而C语言程序设计课程这门课大多高校开设在一年级的第一学期, 要从只要求计算机基本操作的中学时代迅速转换到大学时代的程序设计员, 对于学生是一个逐步转变、逐步学习的过程。而对于我们教育者来说, 如何去改进现有的教学方法, 正确的引导学生学习思路、学习方法的转变, 以提高课堂教学的质量.笔者在以下几方面进行了尝试:

2.1.1 教师角色的转变

中学时代的教学多以升学为基本任务和目标, 所以中学教师的教学多以灌输式为主, 在教学过程中教师始终是主体, 而学生总是被动的接受和消化。而大学时代的教学是以培养学生的基本素养和能力为目标, 因而要求教学的过程要以学生为主体, 教师要做正确的引路人, 而不是知识的灌输者。因而教师角色的转变实际上更多的还是在学生心目中中学教师角色到大学教师角色的转变, 要在教学的第一堂课向学生宣布这个事情, 使学生从教师角色的转变到学生自己明白他们已经跨入了人生的有一个新的阶段:自己的学习、思想都要有更大的转变, 从以前被动的接受学习, 到大学时期的主动自觉的学习, 从而培养和更大的提高他们的学习能力和其他方面的能力。

2.1.2 课堂实施的转变

C语言作为一门程序设计语言自然有它自身的特点, 但是作为一门言语课, 他又脱不开与学生很熟悉语文、英语这些语言课学习的共同之处。根据笔者的学习和教学经验:得知更多的学生在学习C语言的过程中, 甚至在学习完这门课后也不知道C语言的作用是什么, 它学习的重点内容是什么。所以C语言教学的课堂实施的转变更是教学的重中之重:要使学生从中学时期纯粹的数理化的学习转变到大学时期专业能力和自身适应能力的学习。根据笔者多年的教学, 我们引用用了一个全新的教学方法—“3W1H”教学法。在讲C语言前和所讲的每一节课都要使学生明白正门课或者所讲的每个知识点是什么 (WHAT) , 在哪里能用 (W HERE) , 为什么要这样用 (WHY) 和怎么去用 (HOW) 。从总体的结构:程序设计语言的3W1H到没一点的3W1H, 我们在每一节课的过程中都要去给学生分析、实践。另外我们又结合语言课的特点教会学生从C语言的字 (字符) 、词 (数据类型、变量常量) 、句 (语句) 和章 (函数、程序) 入手去总结, 打乱教材的原有章节, 去分析总结, 从而大大提高了学生学习的效率。

2.1.3 选择合适的软件

在我们学习任何一门程序语言之前, 都要先安装好它所匹配的软件:一个开发环境, 例如turboC2.0。这个软件曾经占据了D OS时代开发程序的大半个江山, 但对于现在的Windows时代, 用turboC有时感觉力不从心, 编辑程序很吃力, 没有函数变量自动感应功能, 查询参考资料也不方便。建议使用Visual C++, 这个东西虽然比较大块头, 但是一旦安装好了, 用起来很方便。一般在学习完C语言之后都会学习一下C++的, 因为C++是针对于windows的可以运行C程序的软件。

2.1.4 采用传统教学和多媒体教学相结合的方式

C语言的课堂教学改掉了过去纯粹的黑板教学, 而采用了黑板教学加多媒体教学进行。首先, 考虑到该课程基本概念多, 同时需要分析大量的例题, 我们把一些典型的例题在讲课时先有老师进行剖析设计算法, 并和学生分析要解决这一问题用C语言编程所需要的本节课或者以前学过的知识点, 然后在黑板上和学生一块去画出流程图, 最后和学生一块去写出程序。这样不仅帮助学生学会了分析问题和解决问题的思路和方法, 同时也让学学生熟悉了计算机解决问题的过程:从实际问题分析描述, 到计算机的实现, 是学生明白要写一个程序重要的是解决问题的过程—算法, 而程序只是最后在计算机对这个算法的描述而已, 从而使学生更加注重对程序设计思想的学习和锻炼, 这对一个成员的学习十指关重要的。其次合理使用教师配套的多媒体教学设备, 对于这些典型的基本概念和例题我们又预先输入计算机做成课件 (CAI) , 在课堂上和学生完成后去分析程序的运行情况。把典型的例题直接在C语言集成开发环境中输入运行, 真实形象, 可以达到事半功倍的效果.例如讲到过程时, 学生往往对过程中参数传递的两种方式 (按值传递和按地址传递) 很难理解, 而这又是该课程的重点和难点, 确实比较抽象, 在讲解过程中笔者把这两种传递方式结合例题来讲:

函数Swap1中的形参是两个一般的整型变量, 说明调用Swap函数时实参a, b和形参p1、p2间为按值传递, 而函数Swap2中的形参是两个指针类型的变量, 说明调用Swa p函数时实参a, b和形参p1、p2间为按址传递, 要学生回答命令按扭Command1单击后窗体上输出的值, 大多数学生可能回答不正确, 这时可把程序粘贴到C++集成开发环境中运行输出结果.仅这样学生还会觉得难理解, 于是笔者又在课件中做了说明, 如图1所示。

调用子过程Swap1时, 给形参x、y分配临时内存单元, 将实参a和b的值复制给x和y, 在被调子过程Swap1中x、y通过第三变量t实现交换, 调用结束时形参x、y的临时内存单元将释放, 实参a和b仍保留原值. (如图1、图2)

调用子过程Swap2时, 形参x、y分别和实参a、b共用存储单元, 因此, 在被调子过程Swap2中x、y通过第三变量t实现交换后, 实参a和b的值也同样发生交换.

同时在C++集成开发环境中逐语句运行程序, 分别观察在Swap1和Swap2调用前、调用中和调用后实参a、b和虚参x、y的变化, 加深学生的理解.再次, 因为程序设计课程要求培养学生的逻辑思维能力, 程序的分析、算法的产生一开始不宜全盘托出, 而应启发式地边讲解、边书写, 以此引导学生步步深入, 此时实物投影仪或粉笔就是比较合适的媒体.因此, 在C语言课堂教学中我们将课件 (CAI) 、C++集成开发环境、实物投影仪或粉笔三者结合, 收到了良好的教学效果。

2.2 强化实验环节中教师的责任意识, 注重学生能力的培养

C语言程序设计是一门实践性很强的课程, 在学习C语言过程中, 仅书面理解往往是不够全面的.通过上机实践, 学生才能真正理解消化课堂上的教学内容, 纠正原来理解上的偏差, 加深对C语言的了解。但是仅靠上机课上学生自己的上机练习往往是达不到目的的, 特别是我们的高职类的学生, 他们本身学习的能力就较差, 如果不加引导在上机练习时大多数情况是把理论课上的例题敲进计算机, 然后一运行看一下结果正确是否就完了。根本就没去思考, 更不要说去进一步的去验证理论课上的知识点了。所以我们针对于学生的情况, 强化实验课中教师的责任意识, 加大辅导的力度:要求老师去正确的引导学生上机课应该怎样去做, 而不是纯粹的计算机录入课。上机课上老师既是知识点总结的引导者, 又是学生上机练习的辅导者, 特别要强化老师对学生所出现的共性问题的讲解和总结, 从而使学生能到同一案例能举一反三, 真正达到验证消化理论所学, 提高能力的目的。

3、结语

C语言具有诸多的优点, 是使用性很强的程序设计语言之一, 自推出以来就受到了人们的普遍欢迎.但是, 对于非计算机专业的学生来说, C语言又是一门较难学的课程 (特别是对于那些没有编程基础的学生) .在C语言程序设计教学过程中, 采用传统教学和多种媒体的教学相结合方式, 以提高课堂教学的质量和效率, 通过实践提高学生利用C语言进行程序设计的能力, 抓住C语言重点内容和环节, 把程序设计思想贯穿于整个教学过程, 使C语言成为学习程序设计的敲门砖, 为他们后期的学习打下坚实的基础。

摘要:分析了C语言程序设计课程的特点, 对该课程教学手段、教学方法的改进, 及教学内容的完善等方面作了一些探索和实践.

关键词:C语言程序设计,教学方法,算法,教学研究

参考文献

[1]谭浩强, 张基温.C语言程序设计教程[M].北京:高等教育出版社, 1998.

c语言课程设计报告 篇8

关键词:C语言程序设计;项目教学模式;应用能力

中图分类号:G642 文献标识码:A文章编号:1007-9599 (2011) 15-0000-02

C Language Programming Course Project Teaching Mode

Luan Guifen

(Taizhou Higher Vocational School of Mechanical&Electrical Technology,Taizhou225300,China)

Abstract:C language programming course using the project to improve the teaching ability of students to apply,set project goals and prepare for the teaching project teaching the theoretical and experimental materials,select the appropriate teaching project library construction project cases,in addition to theoretical and experimental courses in teaching,effective implementation of the project,the project should also be extended to extra-curricular teaching in the classroom network.

Keywords:C language programming;Project teaching mode;Application ability

在职校教学中,传统教学法很难满足信息化社会应用型人才的能力培养要求。C语言程序设计课程是一门实践性较强的课程,应更加重视应用能力与实践能力的培养,而非计算机专业的C语言程序设计教学多用传统教学法,导致学生的理论学习与实践脱节,很大程度上影响了教学效果。因此,迫切需要采用新的教育教学法或教学模式来改变这种现状。以培养应用能力为核心的“项目教学模式”,它把学习知识、训练技能、培养能力贯穿于整个教学过程之中,能够充分发掘学生的创造潜能,提高学生的动手能力。

一、项目教学模式

项目教学模式是在建构主义理论[1]指导下,以基于项目的教学方式完成课程教学任务的教学方法体系。教师在授课过程中,以一个贯穿课程始终的,来源于生活和生产实际的成功项目案例为线索组织教学,进行知识传授和技能培训[2]。它实质上就是一种基于建构主义学习理论的探究性学习模式,强调知识意义和能力建构性,强调协作学习,在不断解决问题、实现阶段任务中完成对知识的意义建构。基于建构主义的项目教学法与传统的教学法相比,将以教师、课本、课堂为中心转变为以学生、项目、实践为中心,能够使理论知识与应用能力的培养有机结合[3]。

在项目教学的实施过程中,经常遇到以下一些实际问题:项目教学是从应用的角度出发,与传统的教学方式有很大的区别,教学目标该如何制定才能体现项目教学的实施效果。传统的教材对于知识模块的划分不适合项目教学的实施,需要编制适合项目教学的理论教材和实验教材来配合项目教学。因为篇幅有限,教材中只能涉及到几个项目案例,使得教学背景比较单调,而且项目案例通常是比较大的程序,如何根据知识模块将项目案例合理分解为较小的项目子例,使其能够更好地配合理论和实验课也是需要解决的问题。在项目教学中,教师应该采用怎样的教学方法,才能有效地实施项目教学并监控和指导学生的项目学习。

二、C语言程序设计课程中的项目教学模式

(一)根据实际情况,設定教学目标

结合C语言程序设计课程特点和项目教学从应用出发的特点,对C语言程序设计课程进行教学设计,制定技能训练和应用培养教学目标,采用“语句、代码、程序、应用”四个教学目标层次分类,同时采用“熟练使用基本知识点,练习设计编写小程序,综合项目设计应用”的实践教学层次,使项目教与学的衡量标准成为一种可具体追求和实现的目标[4]。具体的项目教学目标分别从知识点目标、技能目标和应用目标三个层次进行描述。

知识点目标是对课程理论知识点的教学要求进行描述,例如,写出伪代码描述具体问题的算法、应用“自顶向下、逐步求精”的方法求解问题、解释一维数组在内存中的存储、比较字符数组作为字符串和指针指向字符串等。技能目标分为熟练使用基本知识点和练习设计编写小程序两个层次。例如,练习C源程序文件的创建(编辑输入、存储编译、简单运行调试)过程,掌握使用VC集成开发环境处理一个C语言程序的步骤:编辑、编译、连接和运行;编程实现对多个数据的处理,要求练习加、减、乘、除、求余的运算等。应用目标是指“综合项目设计应用”,分为两个层次:(1)开发学习者发现问题,总结问题的能力,让学习者结合身边事,自找题目,写出编程实现步骤;(2)软件项目应用设计训练。培养学生应用能力,实施项目教学,需要学习者独立或合作完成项目训练,达到应用目标要求的标准。例如:结合自己专业或生活经验,寻找需要或可以分解为多个函数实现的实际问题,自编一个题目,利用自定义函数和函数调用实现问题求解过程;软件功能模块划分,应用模块化编程思想,综合分析系统功能,设计划分并画出系统模块结构图,总结出系统数据字典,并详细描述各模块功能及函数功能等。

(二)编制适合项目教学的理论教材和实验教材

为了配合项目教学顺利的进行,需要编制适合项目教学的理论教材和实验教材。理论教材中,首先要对传统教材中的理论知识模块进行重新整合,与项目设计的进展相结合,分为三个层次模块。初级阶段的知识模块主要是结构化程序设计基础,包含C语言程序设计课程的基本知识、基本数据类型及其定义与操作、程序的基本结构。中级阶段的知识模块主要是模块化程序设计基础,包含函数的编写和调用、变量的作用域与生存期的运用。高级阶段的知识模块主要是复杂数据结构和程序设计方法,包含数组、指针、结构体、文件的操作和应用。理论教材中的例子分为项目子例和教学辅例。项目子例是将整个项目分解为小的例子配合理论知识的讲解,教学辅例是与项目子例背景相似、题型相似的传统例题。

实验教材是对理论教材的实践和扩展。项目教学的关键就是对项目的实践,学生通过理论教材学习项目设计的方法,在实验教材中提供给学生更多的项目参考子例和具体的实践步骤,指导学生独立完成项目的实践。

(三)选择合适的项目案例,建设教学项目库

在实际的生产生活中,选择具有真实性、典型性等特点的项目。要强调的是项目的应用性,而不是专业性,让大部分学生能够理解和接受。项目的内容应符合课程教学目标的要求,能够容纳和体现更多数据结构、算法和知识点的应用,尽量能够贯穿课程。项目应难易适宜、大小适中,让学生在课程的学习过程中有能力完成项目内容,达到更好地掌握课程知识的效果。教师往往在课堂上只能讲解有限的几个项目案例,导致教学项目用例背景单调,不利于拓展学生的思维,因此应建设教学项目案例库,选择大量的项目案例供学生课下学习和参考。项目案例库中除了包含大量完整的项目案例,还应将项目案例分解为课堂教学用例系列、实验教学用例和学生项目实践用题系列等。

在项目教学中,将项目与课程的内容结合,根据各层次知识模块,选择某些项目分解为与每节理论课的知识点结合的项目教学课堂用例系列,要求在难度、复杂度、模块大小等方面要适合课堂讲解和学生学习。在实验课上,选择适合的项目分解为学生可以在有限课时内独立完成的实验教学用例系列,配合理论课的课堂用例进行项目实践。为了拓展学生的思维,设计学生项目用题系列作为学生课下学习的补充。

(四)理论课中教师实施项目教学

结合项目教学,采用小组合作学习方式[5],让学生分组实践项目。建议4-7人自由组合为一个小组,每组推选一个组长组织组内的学习,并将学习的过程记录下来。具体的教学过程如下:(1)教师用项目课堂用例提出需要解决的问题,引入本节课要学习的问题。(2)教师结合要实现的项目问题,讲解知识点。(3)教师选择项目辅助用例,运用知识点。(4)教师和学生一起讨论如何运用知识点,解决项目问题。(5)教师对项目内容进行扩展,提出小组讨论问题。

(五)实验课中学生实践项目教学

在实验课上,以小组为单位进行项目实践,并写下实验报告。具体的教学过程如下:(1)教师课前布置实验课的项目内容,课前小组讨论出可执行的步骤。(2)学生模仿课堂项目用例的方法,实施实验项目用例的内容。(3)各小组讨论项目实验结果,并将结果合并实现综合项目。教师参与到小组的讨论中,给予指导意见。(4)小组总结实验课内容,写出小组实验报告。实验报告中要详细记录每个组员的参与情况,包括发言、上机实践、帮助其他组员等具体的过程,这样教师可以通过查看实验报告的情况了解每个学生的学习情况,起到监控和指导的作用。

(六)课外的网络课堂交流补充

教学课时数是有限的,教师不可能跟每一位学生进行很好的交流。而且学生之间的大多数交流也仅限于小组内部,各小组间的交流很少。因此,需要建立課外的网络课堂作为教学的补充,例如,教师建立教师教学博客,学生可以建立班级博客、小组博客等。教师可以提前将教学内容发布在教学博客上供学生提前预习,并提出问题供学生讨论,学生通过回复与教师和其他同学交流。学生可以给教师留言,与教师交流学习中的问题,其他学生也可以看到这个交流的过程,启发自己的思维。每个小组可以通过博客展示自己的实验成果,各小组可以通过博客交流学习心得。教师可以通过博客中的交流监控到所有学生的学习情况、思想动态,适时的调整教学进度和教学内容。

在项目教学模式中,设定项目教学目标并编制适用于项目教学的理论和实验教材是有效实施项目教学的前提,选择合适的项目案例建设教学项目库是项目教学的关键因素。在具体的项目教学过程中,每个教师应根据实际的教学情况适当地调整教学模式,选择有效可行的方法以保证教学效果。

参考文献:

[1]陈越.建构主义与建构主义学习理论综述.

http://www.being.org.cn/theory/constructivisom.htm

[2]孟朝霞.基于项目的程序设计实践课程教学流程设计[J].高等理科教育,2008,5

[3]徐涵.项目教学的理论基础,基本特征及对教师的要求[J].职教论坛,2007,3

[4]孟朝霞.C语言课程的应用性目标模型[J].运城学院,2009,1

上一篇:我国农业上市公司资本结构战略效应实证研究下一篇:诚信的作文200字左右