C语言课程设计实习报告

2024-04-10

C语言课程设计实习报告(共8篇)

篇1:C语言课程设计实习报告

c语言课程设计设计报告

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个因素,协助学生做好选题:

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

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

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

趣味性。兴趣是最好的老师,所以在选择项目时应考虑其趣味性,让学生有更大热情投入项目。

篇2:C语言课程设计实习报告

一、提交材料应包括:(1)系统源代码(2)课程报告

二、整个设计过程具体要求(1)需求分析 需求分析 任务 要求 要求学生对案例系统进行分析,设计出需要完成的功能,完善 各个模块的调用关系;(2)设计过程 要求学生进一步明确各模块调用关系,进一步完善模块函数细节 设计过程(函数名、参数、返回值等)(3)实现过程 要求学生养成良好的编码习惯、完成各个模块并进行测试,最终 实现过程 完成系统整体测试;(4)总结阶段 按照要求完成系统设计和实现报告,并进行总结、答辩。总结阶段 报告撰写情况(报告撰写情况(30 分)内容 规范程度 程序测试 20 分 5分 5分 系统完成情况(答辩情况(系统完成情况 30 分)答辩情况(40 分)完成 基本功能 扩展功能 自述情况 答辩情况 20 分 10 分 10 分 30 分 成绩 评定 总分 成绩评定教师: 成绩评定教师: 教师 1 需求分析 经过大一上学期的理论学习,在基础实验的基础上,本学期我们继续开设了 C 语言程序 设计实践课。课程要求我们对已经学习的基础实验进行整合与衔接处理,并最终形成一个系 统性质的规模较大的程序。本次课程设计要求我们达到能独立完成一个图书管理系统,完成后要求实现的功能有对 图书信息的录入、删除、修改,浏览(即输出)按某种方式查询(要求至少一种查询方式),按某种方式排序(要求至少一种排序方式)。当然,我们可以根据自己的能力对系统进行完善 性的拓展,例如自己加入简单的权限处理,统计功能,模糊查询等,甚至可以拓展为图书借 阅系统。通过整个程序的开发过程,最终使我们掌握利用计算机解决实际问题的基本方法,熟悉 C 语言开发的全过程,提高综合应用 C 语言的能力、编程和调试能力,为学习计算机和通信 专业的后续课程打好专业基础。2 概要设计(1)图书信息及数据格式 图书信息: 图书信息包括图书编号、图书类别、图书书名、作者、出版社、出版时间、图 书价格。数据格式: 本系统采用单向链表来对图书信息进行各项操作。其中图书的编号为整型数 据,价格为双精度浮点型,其余的类别、书名、作者、出版社与出版时间均为字符 串类型 struct tushu_node{ int num;char leibie[20];char name[30];char author[20];char press[20];char time[20];double price;struct tushu_node*next;};一个结点的示意图如下图所示: num leibie name author press time price next(2)程序的整体框架 主菜单 录 入(删 除 修改)按 不 同方 式 查询 浏览 按 不 同方 式 排序 统 计 图书 数 目 帮助 退出 创 建 删 除 修 改 编 书 价 号 名 格 价 格 出版 时间 子菜单(3)模块划分

1、int quanxian();

2、int inputchioce();

3、void save();

4、void save1();核查权限的函数 显示主菜单的函数 保存链表为文件的函数 覆盖以前的信息 保存链表为文件的函数 不覆盖以前的信息 只在创建时调用

5、struct tushu_node* wjtolb();从文件中读取数据并建立图书信息的链表的函数

6、int luruxinxi();录入学生信息的函数 创建图书信息的函数 插入图书信息的函数

7、struct tushu_node * luruxinxi_chuangjian();

8、struct tushu_node * luruxinxi_charu();

9、struct tushu_node * luruxinxi_shanchu();

10、struct tushu_node * luruxinxi_xiugai();删除图书信息的函数 修改图书信息的函数

11、int liulantushu();浏览图书信息的函数

12、int chaxuntushu();

13、void chaxuntushu_num();

14、void chaxuntushu_name();

15、void chaxuntushu_price();查询图书信息的函数 按编号查询图书 按书名查询图书 按价格查询图书

16、void paixutushu();

17、struct tushu_node* paixutushu_price();

18、struct tushu_node* paixutushu_time();

19、void sfjx();为图书排序的函数 为图书按价格排序的函数 为图书按出版时间排序的函数 写个函数 判断是否继续 排序中使用 20、int tongjitushu_shumu();统计图书数目的函数

篇3:C语言程序设计课程教学探析

一、影响教学效果的关键问题及相应对策

1. 学生学习兴趣不高。

学生对难以理解的概念、术语及语法规则、枯燥无味的例题感觉找不到头绪,认为C语言枯燥、难学,有厌倦心理。部分学生不知学为何用而不感兴趣,部分学生觉得它难学而厌学,还有部分学生学而不得法,不知如何学,教学效果和学习效果均不甚理想。

如何激发学习兴趣,增强学生信心,成为该课程教学设计的关键。首先用应用程序展示C语言的结构、特点,讲明学习C语言是掌握编程能力的必由之路。授课过程中应采用互动式教学,多举一些有趣、实际的例题,每一个例题都与新知识、新概念相关联,完成一个任务也就学到了新知识、新概念。这种“练——学——练一—学”的循环过程让学生学得轻松、学得愉快,使枯燥乏味的理论在生动多样的实际问题中逐步为学生理解、接受和掌握。

2. 传统教学方法的局限性。

计算机语言课一直是“讲概念——分析概念——例题讲解——上机操作”的教学模式。以教师“教”为中心,学生处于被动的接受状态,这种“填鸭式”使师生之间交互少,学生“做”得更少,理论与实践脱节,表现于学生“听得懂,不会编”的现象。“很难培养学生在程序设计上的创新能力和逻辑思维能力,这就给后续课程的教学、毕业设计乃至学生日后从事的工作留下了隐患。”

要突出对学生编程能力的培养,应把解题思路当作授课重点,理解如何用程序设计方法分析、解决问题,建立正确的思维模式。教学内容的组织形式应该是“提出问题——介绍解决问题的方法——归纳出概念或一般规律”,教会学生如何运用C语言编写程序,一些细节、具体规则可以让学生自学,结合提问将问题层层剖析、逐步深入,达到师生互动的效果,充分发挥学生的想象力,以学生自学为主,以教师指导为辅。

3. 实验、考核环节。

不重视实验、考试环节,会使实验只是走过场,无人监管,达不到实验的目的;而单一的考试形式,无法真正测评出学生对所学知识的掌握,二者都影响对学生编程能力的培养。

该课程实践性强,只靠听讲,难以记住,必须多阅读、编写、调试程序才能自然地、熟练地掌握。实验可设计为例题验证、程序修改、独立编程三个层次。例题验证使学生进一步理解基本概念和语法,并树立信心;程序修改是让学生根据课堂中讲过的知识点填充,给予学生发挥的余地;独立编程则要求学生阅读教材和相关资料掌握实验所涉及到的知识,独立完成实验项目。教师只起答疑、解惑的作用,引导和激发学生程序设计欲望和创新动力。

考试应采用机考,以综合性、应用型题目为主,并应增加学生平时实践操作能力所占分值的比例。

二、将软件工程思想、项目驱动教学法融入教学中

1. 注重程序设计风格的培养。

编写程序只有正确性远远不够,必须是可维护的、健壮的、并具有良好的界面风格,要求代码简单、清晰、添加适当的注释,使程序具有可读性;用缩进、空行增加层次感,使程序逻辑清晰,好理解,可维护。现在的程序都是程式化、团队式的开发,每个程序员都按照统一的要求编写程序,保证程序清晰、易维护。学习C语言也是一个养成书写程序习惯的过程,在这个阶段如果养成了不好的习惯,以后将很难改掉,教学中要特别予以重视。

2. 教学中期采用项目驱动教学法。

项目驱动教学法是指在教学过程中以一个项目为主线来展开教学,把相关的知识点融入到项目的各个环节中去,层层推进项目。通过对问题的深化或功能的扩充,来拓宽知识的广度和深度,直至得到一个完整的项目解决方法,从而达到学习知识、培养能力的目的。

学生初步掌握了C语言的数据类型、运算符、表达式三种基本结构后,引入一个精心选择的项目,如学生成绩管理系统。先对项目进行需求分析、设计,而不是急于编代码,避免一边想,一边修改;用流程图、N-S图、PAD图等工具描述模块算法,然后编码。采用项目驱动教学法,把课程的主要知识点分解到各个具体模块,例如,项目初期采用一维数组存放学生成绩,用数组名调用排序函数,随着教学的深入,采用结构数组存储信息,用结构指针调用函数,使教学内容前后衔接,运用自如;随着函数定义、调用、参数传递、变量作用域等概念的学习,运用指针、数组、结构体、文件读写等操作完成项目各个任务,并将软件生命周期各个阶段的任务穿插到教学中,循序渐进、潜移默化地把软件工程思想贯穿教学全过程,使学生在学习程序设计的同时,也掌握了软件工程思想,对培养和提高学生编程能力有极其重要的作用。

3. 培养学生程序调试、测试的能力。

在测试项目各个模块功能时,介绍白盒测试和黑盒测试的概念,使学生懂得测试用例设计不仅要有合理的输入数据,还要有不合理的输入数据;随着教学的不断深入,将各个模块逐个添加到系统中,符合自顶向下增量集成的测试方式,减少了错误数量和测试难度,可向学生灌输集成测试、确认测试的概念,这是完成大型项目开发的必要环节;引导学有余力的学生编写新的模块来完善系统功能,发挥他们的想象力和创造力,使学生始终保持浓厚的学习兴趣。完成一个相对完整的应用程序开发,会有一种“从一盘散沙到一串珍珠”的感觉,既培养了学生自学能力和独立分析、解决问题的能力,又使其了解了软件工程思想,在其后续学习中达到事半功倍的效果。

对于综合型项目,将学生每3-5人分为一组,从需求分析、系统设计、代码编写到程序调试、运行,整个过程都在小组内协作完成,他们一起研究、探讨、设计,再经过思考、改进,不断完善,教师只起一个点拨和指导作用,选出成功的小组经验在全班讲评,促进整体编程能力提高。

三、结束语

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

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

《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.

篇5:C语言课程设计报告目录

一、课程设计题目1

二、设计任务分析1

三、系统总框图1

四、功能模块描述21.模块名称:主函数22.模块名称:建立数组33.模块名称:读取二维数组34.模块名称:计算聚点及象素点45.模块名称:屏幕输出二维数组6.模块名称:保存数组到文件7.模块名称:清空结果8.模块名称:对结果进行快速排序9.模块名称:计算平均象素10.模块名称:选择赋值函数11.模块名称:产生随机数函数12.模块名称:寻找聚点函数13.模块名称:入队操作14.模块名称:出队15.模块名称:排序函数16.模块名称:一趟快速排序函数

五、源程序

六、简单调试

篇6:C语言课程设计上机实习内容.

一、程序设计题目: 简单的学生成绩管理程序设计

二、程序设计功能及要求:

1、原始数据输入和结果输出要求使用文件存放;

2、计算每个学生三门功课的平均分,并按平均分排列名次,若平均分相同则名次并列;结果写入文件。

3、统计全班每门课程的平均分,并计算各分数段(60以下,60~69,70~79,80~89,90以上)的学生人数;结果写入文件。

4、按格式在屏幕上打印每名学生成绩条;

5、在屏幕上打印出所有不及格学生的下列信息:学号,不及格的课程名,该不及格课程成绩;

6、(选做)在屏幕打印优等生名单(学号,三门课程成绩,平均成绩,名次),优等生必须满足下列条件:

1)平均成绩大于90分;或平均分大于85分且至少有一门功课为100分;或者平均分大于85分且至少两门课程成绩为95分以上;

2)名次在前三名

3)每门功课及格以上;

(若完成选做题,课程设计成绩将给予加分)

三、文件格式

1、原始数据文件格式(具体数据自行编写)

学号 姓名

英语

C语言 高等数学

张三

李四 ….….….2、输出数据文件(由程序自动生成)1)学生综合成绩文件。(由程序自动生成)

学号 姓名 英语 C语言 高等数学平均成绩 名次

张三 76 89 78 80.5 5 李四 ….….….3 ….2)统计结果文件。

分数段

英语

C语言

高等数学

<60

60~69

70~79

80~89

>=90 …

平均成绩

75.5 …

四、实习报告要求

1、程序分析和设计

2、流程图

3、源程序清单

4、调试过程: 测试数据及结果,出现了哪些问题,如何修改的5、程序有待改进的地方。

篇7:C语言设计课程实训报告

课程设计报告

课 程 名 称: 课程设计题目: 姓

名:

系:

业: 年

级: 学

号: 指 导 教 师:

C语言设计课程设计

万年历

信息工程系

计算机科学与技术

2012

2013 年月 12 日

任 务 书

实训的目标

1.进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。

2.针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。

3.掌握C语言的编程技巧和上机调试程序的方法。4.掌握程序设计中的常用算法。

任务名称:万年历

项目功能:

1、能够显示当前月的日历以及标志出当前日期。

2、可以翻页、翻年。

3、可以输入年月日查看输入的年月的日历。

4、拥有记事本的功能。

教师签名:

目录

一、实训要求:................................................................................................................4 1.掌握时间函数的运用。................................................................................................4 2.掌握在WinTC下的动画制作。...................................................................................4 3.掌握bioskey和随机函数的运用。.............................................................................4 4.学会边界的判断。........................................................................................................4 5.掌握链表和文件。........................................................................................................4 6.综合所学内容编写一个程序。....................................................................................4

二、实训题目:.......................................................................................................................4 1.①给出时间计算与几天的差值;②给出天数计算日期;③给出两个日期计算差值。4

2.①让一个圆在屏幕上动起来;②制作一个太阳、地球、月亮的动画。................4 3.①区域内有障碍物使方块不能穿过;②小球在区域内运动,碰到边界后随机改变方向继续运动。...................................................................................................................4 4.①创建一个结构体;②创建链表并输出;③删除已有链表中的一个节点;④在已有链表中增加一个节点。...................................................................................................4 5.万年历............................................................................................................................4

三、实训过程:.......................................................................................................................4 1.时间函数:....................................................................................................................4 思考过程:.......................................................................................................................4 2.动画制作:....................................................................................................................4 思考过程:.......................................................................................................................4 障碍物(边界判断)...........................................................................................................4 思考过程...........................................................................................................................4 链表及文件:.......................................................................................................................4 思考过程...........................................................................................................................4 1.课程设计:万年历(带记事本功能)........................................................................5 ① 思考过程.....................................................................................................................5 ②源代码:.......................................................................................................................5 ③ 运行结果...................................................................................................................10

四、实训心得:.....................................................................................................................11

一、实训要求:

1.掌握时间函数的运用。

2.掌握在WinTC下的动画制作。3.掌握bioskey和随机函数的运用。4.学会边界的判断。5.掌握链表和文件。

6.综合所学内容编写一个程序。

二、实训题目:

1.①给出时间计算与几天的差值;②给出天数计算日期;③给出两个日期计算差值。2.①让一个圆在屏幕上动起来;②制作一个太阳、地球、月亮的动画。

3.①区域内有障碍物使方块不能穿过;②小球在区域内运动,碰到边界后随机改变方向继续运动。

4.①创建一个结构体;②创建链表并输出;③删除已有链表中的一个节点;④在已有链表中增加一个节点。5.万年历

三、实训过程:

1.时间函数:

a)思考过程: 第一小题:先把系统当前时间用time函数转换成秒,再把输入的天数用24乘3600秒转换成秒,再与系统当前的秒数相加减,最后用ctime函数以字符串输出。第二小题:调用localtime取得系统当前年月日,然后把当前年月日提取出来用自己输入的年月日进行替换,用mktime把该年月日转换成秒,然后再把系统当前时间转换成秒,两个秒数进行相加减,把加减后的结果除以(24*3600)就得到相差的天数。第三小题和第二小题同理,输入两个日期、转换成秒以后相加减,最后除以(24*3600),就得到了两个日子相差的天数。

2.动画制作:

思考过程:做个循环,先用白色画一个圆,然后再用背景色画一个圆把当前圆覆盖,然后改变圆心,然后在画圆再覆盖~最后循环完之后,再用白色在用位置画个圆,因为不这样干的话,屏幕上就没有最好运行的位置了…第二小题同理~ 障碍物(边界判断);

① 思考过程:第一小题:判断出上下左右移动的时候能运动的范围(即控制外边界),然后再把范围内的某些不能通过的点的范围找出来,把他们分别排除在外,其他的坐标点就是可以任意移动的了,用bioskey计算按下的键的键值,然后判断可以移动之后,就在当前位置用背景色画一个方框,然后在移动之后的位置用白色画方框和障碍物等。第二小题划定一个匡,然后在匡的范围再把小球的半径减去,就是最后小球能运动的范围了…然后我设置的是让小球逆时针转动,然后用随机函数(系统时间做种子)来控制小球偏移的位置(或者说角度)。

链表及文件: ① 思考过程:第一个问题需要做的是结构体的认识并运,定义一个结构体,然后输入内容,然后再输出之前输入的内容。第二个问题则是创建链表并输出,将一个节点分成了两份,一边是指针域,一边是数据域,而指针域,指针域是下一节点的地址,我把头结点不存储数据,以方便之后两题的操作;第三个问题是删除链表,首先定义一个空的字符串,P,P1,P2,把头指针赋值给P,随后让用户输入要删去数据的名字,储存在字符串中,利用strcmp函数进行查找,随后如果第一个有数据的节点就符合要求,就把第二个节点的地址赋值给头节点的指针域后跳出循环,如果不是第一个节点符合要求就执行循环,让P赋值给P2,再把p->next赋值给P,这时P就到了下一个节点,再把p->next赋值给P1,也就是让P1得到第三个节点的首地址,P指向第二个节点,P2指向第一个节点,再进行循环,还是没找到就把P,P1,P2同时向后移动一个节点,如果找到了,就把P2的值赋给p->next,再把p->next的值赋给P,这时P就回到了上一个节点,再把p->next直接指向P1,就把中间的那个节点跳过,完成了删除功能;第四个问题则是增加节点,同样定义一个整型数据(即学号),P,P1,P2,P3,让用户键入想要添加的位置,之后让头指针赋值给P,p->next就赋值给P1,也就是让p1指向下一个节点,随后执行循环,让用户输入想学号和每个节点内的学号比较,如果找到了,就创建一个新的链表,并让P3指向它,让用户输入添加的信息,并且把p->next赋值给P2和P,这是P就到了下一个节点,再把p->next赋值给P1,也就是让P1指向第二个,P和P2都指向第一个,返回循环,如果符合要求就让p3->next指向P1,p2->next指向P3,这样,新的节点就进入了链表中,满足要求,最后在主函数中先输入数据,然后执行一个死循环,让用户选择功能,如果选择1就删除一个节点,选择2就增加一个节点,选择0就跳出循环结束程序。1.课程设计:万年历(带记事本功能)

① 思考过程:用localtime取得当前的系统时间,并且提取出年月日,然后把公元元年到今年一月一日前的天数计算出来,把这个天数除7取余为a,然后就获得了今年元旦前的一天是星期几。然后循环、从一月循环到当前月的上一月的最后一天,在这个循环中,循环一次a+1;当a=7时a置零,这个是用来计算当前月的上一月的最后一天是星期几,然后从新在次循环外另开一个循环来输出当前月的日历,并标记出今天用()标记,然后用bioskey读取用户按下的键值,并实现相应的翻页、标记特殊日子、记事本、从新输入年份等功能…

②源代码:

#include #include #include void f();

/*计算公元元年到某年某月的时间*/ void f1(long int t,long int n,int y,int r);

/*按日历模式输出要得到的那个月的日历*/ void w();

/*当前月的日历*/ void s();

/*输入某个年份和月份*/ void m(long int n,int y,int r);

/*记事本功能的函数*/

struct jishiben

/*记事本的结构体定义*/ {

long int a;

char name[100];};

void w()

/*输出当前月的日历*/ {

int y,r,a,b,c;

/*分别定义月份日期以及记录键值记录日期以及某月最后一天*/

long int n;

/*定义年份的变量*/

time_t timep;

struct tm *p;

time(&timep);

p=localtime(&timep);/*取得当地时间*/

printf(“%d--%d--%d n”,(1900+p->tm_year),(1+p->tm_mon), p->tm_mday);/*输出当前的年月日*/

n=(1900+p->tm_year);

/*获得当前年份*/

y=(1+p->tm_mon);

/*获得当前月份*/

r=p->tm_mday;

/*获得当前的是几号*/

for(;;)

{

printf(“jin tian shi %d--%d--%d n”,(1900+p->tm_year),(1+p->tm_mon), p->tm_mday);

/*输出当前年月日*/

f(n,y,r);

/*调用函数f获得某年某月的日历*/

printf(“an fang xiang jian ke tiao jie nian huo yuen”);

printf(“ru xu shu ru nian fen qing an hui ge jian n”);

printf(“ruo xu shi yong ji shi ben qing an hui chen”);

if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)c=31;

if(y==4||y==6||y==9||y==11)c=30;

if(y==2&&(((n%4==0)&&(n%100!=0))||((n%100==0)&&(n%400==0))))c=29;

if(y==2&&((n%4!=0)||((n%100==0)&&(n%400!=0))))c=28;

/*判断月份及最后一天*/

a=bioskey(0);

/*取得按下的键值*/

if(a==18432)n=n-1;

/*按方向键向上则年份减一*/

if(a==20480)n=n+1;

/*按方向键向下则年份加一*/

if(a==19200){y=y-1;if(y==0){y=12;n=n-1;}}

/*按方向键向左则月份减一*/

if(a==19712){y=y+1;if(y==13){y=1;n=n+1;}}

/*按方向键向右则月份加一*/

if(a==18488){b=r;r=r-7;if(r<1)r=b;}

/*按小键盘8则上一周*/

if(a==19509){b=r;r=r+7;if(r>c)r=b;}

/*按小键盘5则下一周*/

if(a==19252){b=r;r=r-1;if(r<1)r=b;}

/*按小键盘4则上一日*/

if(a==19766){b=r;r=r+1;if(r>c)r=b;}

/*按小键盘则下一日*/

if(a==7181)m(n,y,r);

/*调用m函数 进行记事本功能*/

if(a==3592)s();

/*按回格键调用函数s 出入年份和月份*/

if(a==283)exit(0);

/*按esc键 直接退出程序*/

system(“CLS”);

} } void f(long n,int y,int r)

/*计算公元元年一月一号到某年的天数n y r为年月日*/ { long int i,t;

/*定义 i为循环变量

t为天*/ t=0;for(i=1;i

if(((i%4==0)&&(i%100!=0))||((i%100==0)&&(i%400==0)))/*判断闰年*/

t=t+366;

if((i%4!=0)||((i%100==0)&&(i%400!=0)))

/*判断平年*/

t=t+365;

if(t%7==0)

/*为防止数据过大 所以当t除7的余数是0的时候,让t=0;*/

t=0;} f1(t,n,y,r);

/*调用函数f输出某月的日历*/ }

void f1(long int t,long int n,int y,int r)

/*按日历模式输出某月的日历n y r为年月日*/ { int i,j,k,a;

/*a为记录星期的*/ a=t%7;for(i=1;i

/*循环到某月的前一个月*/

{

for(j=1;;j++)

{

a=a+1;

if(a==7)a=0;

if((i==1||i==3||i==5||i==7||i==8||i==10||i==12)&&j==31)break;

if((i==4||i==6||i==9||i==11)&&j==30)break;

if(i==2&&(((((n%4==0)&&(n%100!=0))||((n%100==0)&&(n%400==0)))&&j==29)||(((n%4!=0)||((n%100==0)&&(n%400!=0)))&&j==28)))break;

}

}

printf(“%ld nian %d yue ri lin”,n,y);printf(“ 1 n”);printf(“MON TUE WED THU FRI SAT SUNn”);for(k=0;k

”);for(j=1;;j++)

/*按日历模式输出某月*/ {

if(j==r)printf(“(%2d)”,j);

/*标记出当前的日子以及特殊的日期*/

else printf(“ %2d ”,j);

a=a+1;

if(a==7){a=0;printf(“n”);}

/*当循环一个星期以后,输出一个换行符*/

if((y==1||y==3||y==5||y==7||y==8||y==10||y==12)&&j==31)break;

if((y==4||y==6||y==9||y==11)&&j==30)break;

if(y==2&&(((((n%4==0)&&(n%100!=0))||((n%100==0)&&(n%400==0)))&&j==29)||(((n%4!=0)||((n%100==0)&&(n%400!=0)))&&j==28)))break;/*判断这个月的最后一天时跳出循环*/ } printf(“n”);}

void s()

/*输入年月的函数*/ { long int n;int y,r,a;for(;;){

printf(“qing shu ru nian he yuen”);

scanf(“%ld%d”,&n,&y);

if(y<12&&y>0)break;

/*判断输入的月份是否正确*/

else printf(“yue fen shu ru cuo wun”);} for(;;){ r=0;

/*这里不需要标记处某天,所以令r=0*/ f(n,y,r);

/*调用函数f来输出需要的某月的日历*/ printf(“an fang xiang jian ke tiao jie nian huo yuen”);printf(“ru xu shu ru nian fen qing an hui ge jian n”);printf(“an r jian fan hui dang qian yuen”);a=bioskey(0);if(a==18432)n=n-1;

/*按方向键上键 则年份减一*/ if(a==20480)n=n+1;

/*按方向键下键 则年份加一*/ if(a==19200){y=y-1;if(y==0){y=12;n=n-1;}} /*按方向键左键月份减一*/ if(a==19712){y=y+1;if(y==13){y=1;n=n+1;}} /*按方向键右键 月份加一*/ if(a==283)exit(0);

/*按esc退出程序*/ system(“CLS”);

/*清屏*/ if(a==4978)w();

/*按小写的r 则调用函数w显示当前月的日历*/ if(a==3592)s();

/*按回格键 调用它自己 从新输入一个年月*/ } } void m(long int n,int y,int r){

long int c;

/*c是用来计算结构体长度的*/

long int s=r+100*y+10000*n;

/*转换年月日 例如2013-7-10 就转换成20130710*/

struct jishiben kefu;

/*定义结构体*/

FILE *fp;

/*定义文件指针*/

c=sizeof(struct jishiben);/*计算结构体需要的长度*/

system(“CLS”);

/*清屏*/

if((fp=fopen(“qw2.txt”,“a+”))==NULL)

/*判断这个文件是否存在*/

{printf(“da kai shi bai qing xian chuang jian gai wen jiann”);exit(-1);}

else

{

for(;!feof(fp);){fread(&kefu,sizeof(kefu),1,fp);if(kefu.a==s)break;} /*筛选数据*/

if(kefu.a==s)

{

printf(“ri qi %ld---%s n”,kefu.a,kefu.name);}

/*若得到了需要的数据 则显示出来*/

else

/*否则录入数据*/

{

/*录入前先把文件关闭掉

然后再从新以追加方式打开*/

fclose(fp);

fp=fopen(“qw2.txt”,“a”);

fseek(fp,-c,2);

printf(“qing shu ru xing xi n”);

kefu.a=s;

/*令长整型变量等于s 方便筛选*/

printf(“qing shu ru nei rongn”);

printf(“%ldn”,kefu.a);

gets(kefu.name);

/*输入字符*/

fwrite(&kefu,c,1,fp);

/*把数据写入*/

}

getch();

fclose(fp);

/*关闭文件*/

}

w();

/*返回w函数再进行相应的操作*/ }

int main(){ w();

/*调用函数w来开始第一次运行*/ getch();} ③ 运行结果

按回车实现记事本功能:

按回车返回记事本:

在特殊日子下按回车,查询是否有要做的事情:

四、实训心得:

篇8:《C语言程序设计》课程教学探索

1 培养学生的学习兴趣

由于我院开设的《C语言程序设计》面向的主要是大一的学生, 这些学生中的大部分都对计算机的程序设计语言一无所知, 没有接受过系统的学习, 所以, 一开始接触这门课程, 可能会觉得非常茫然, 感觉无从下手, 因此, 必须在第一次上课时就充分调动起学生的积极性, 培养他们的兴趣和信心。

所以, 老师在上第一次课的时候, 可以先不要着急去介绍C语言的一些比较专业的基本概念和语法规则, 而是从C语言出现的历史背景、C语言的优点以及本课程的开设原因, 给学生们做一个全面的介绍。在介绍C语言的开设原因时, 应该结合学生的具体专业来介绍, 解释C语言与前面课程以及后续课程的关系, 比如C语言和数据结构, C语言和算法的关系等。让学生了解本课程的重要性, 引起学生对本课程的足够重视。通过这样的教学安排, 第一次课基本上可以达到提高学生学习C语言的兴趣, 认识到C语言的重要性, 树立学习C语言的信心的目的。在第一次课激发了学生学习C语言的兴趣和积极性后, 一定不能让学生的热情冷却, 而应该以此为契机, 现场给学生编写一个短小精悍的程序, 运行输出结果, 让学生看到C语言的神奇效果, 激发学生的学习欲望, 积极主动的进入C语言的学习世界。在后续的课堂教学过程中, 采用提出问题分析问题解决问题的方法, 从具体问题入手, 引导学生找出解决问题的方法, 每次介绍新的知识之前, 都应该先精心设计一个或几个包含了新的知识点的实例, 先给学生演示一下程序的运行效果, 让学生先对这些例子产生兴趣, 这对于提高学生学习的自觉性, 活跃课堂气氛可以起到积极的促进作用。最后总结所用的语法和规则, 使得学生对语法的理解更为容易。

2 采用启发、引导的教学方法

《C语言程序设计》本身是一门非常灵活的课程, 任何问题都没有唯一的答案, 也没有最好的答案。因此, 老师在课堂上可以先给出一种程序解答方法, 然后留出一些时间让学生思考, 还有没有其他更好的程序设计方法和思路。比如在讲判断一个数n是不是素数的问题时, 我们可以先从最传统、最容易理解的思路入手, 看看n能不能被2到n-1中的任何一个数整除, 接着我们可以在这个地方稍微停顿一下, 让学生思考一下能不能对这个算法做一下改进, 这时, 有的学生可能会提出把除数的范围缩小到2到n/2, 最后再缩小到2到, 利用这种方法会比老师直接给出用n去除以2到中数的方法让学生印象更加深刻。这样不仅可以巩固学习成果, 提高解决问题的能力, 也可以丰富课堂内容, 起到教学相长的效果。

3 有选择地运用多媒体教学

以前由于教学条件的限制, 教师上课时只能采用传统的黑板教学, 在黑板上面写出程序代码, 说出运行结果, 这样很难让学生对程序运行的过程、函数的调用、参数的传递、变量值的变化认识清楚, 将多媒体教学引入课堂后, 可以在课堂上利用教师机现场演示, 利用VC++的设置断点, 单步跟踪等方法, 一步步演示, 这样学生一看就清楚了。例如在给学生讲数组的时候, 通过下标的方式来访问数组元素, C语言规定, 数组元素的下标是从0到n-1 (n是数组的长度) , 但很多学生在写程序的时候, 往往忽略这一点, 在访问数组元素的时候使用n, 出现下标越界的错误, 这时, 老师便可以在VC的调试环境中, 结合变量的地址或指针的概念, 给学生解释越界出现的原因, 这样才能让学生理解深刻。又例如, 在讲“冒泡”排序算法时, 教师可以用多媒体课件给学生演示排序的经过, 既形象又生动。因此, 在《C语言程序设计》课程教学过程中, 将传统的教学方法和现代多媒体教学相结合, 将大大提高学生的综合思维能力, 达到最佳的教学效果。

4 强化实验环节

《C语言程序设计》是一门实践性很强的课程, 如果只是单纯地在课堂教学, 而没有实验教学, 仍然只是纸上谈兵, 无法真正让学生掌握知识的应用。所以实验环节是整个学习过程中不可缺少的一个重要组成部分。只有让学生动手编写程序, 运行出来结果, 学生才会有成就感, 才会对这门课产生兴趣。但是, 教材上面的题目往往比较注重语法的训练, 而离实际应用较远, 所以, 大部分学生在完成书上题目时比较顺利, 可以一遇到利用C语言来解决实际问题时, 便束手无策, 无从下手了。所以, 为了锻炼学生解决较大型复杂问题的能力, 老师在安排实验课内容时, 可以布置一个大题目作为长期任务, 再按不同功能模块分解开来, 形成一个个短期任务。每次实验课要求学生完成其中一个或几个简单的功能模块, 这样, 每次实验课就好像一条铁链上的一个个铁环, 紧密联系。以“学生信息管理系统”为例, 把这个系统作为一个长期任务, 然后把这个系统划分为若干个小的模块。比如输入输出学生信息、添加学生信息、修改学生信息、查询学生信息等模块。这样, 当学生完成每一个功能模块后, 便发现原来自己实现的是一个复杂的程序。通过这种方法, 一方面可以大大降低学生对大型复杂程序的惧怕心理, 另一方面也可以培养学生结构化程序设计方法的思想。

5 综合考核法

目前, 大部分课程最后的考核方式都是通过考试进行的。但是这种方式不适用于《C语言程序设计》, 这是由课程本身的特点决定的。一方面, 该课程包含了课内实验, 另一方面, C语言是一门实践操作性很强的课程, 光通过选择题、填空题不能真正检验出学生的学习水平, 而应该把考核的重点放在程序的编写和调试上。

所以, 建议本课程最后采用综合考核的方式。考试的方式分为笔试和上机考试。理论考试主要考核学生对理论知识的掌握程度, 上机考试则主要考核学生的动手能力。。最后的总评成绩中还应该包含学生的实验课成绩, 以及课堂表现成绩。这种考核方式增加了对学生学习过程的测评, 这种方法不但能更客观地反映学生的学习情况, 同时也能促进学生自主学习, 起到很好的教学效果。

6 结语

以上是作者在近几年的C语言课程教学过程中总结出来的几点教学经验, 通过上述方法, 在实际的教学过程中取得了良好的教学效果。

摘要:C语言程序设计是理工科学生的必修课, 也是学习计算机语言的入门语言, 本文对C语言程序设计的教学方法进行了探讨, 在提高学生学习兴趣、加强实验环节、改进考核方式等方面提出了几点意见。

关键词:C语言,教学

参考文献

上一篇:纳兰性德伤感古诗词下一篇:台式机术语详解之内存类型 DDR2的详解