c课程设计指导书

2024-04-09

c课程设计指导书(通用8篇)

篇1:c课程设计指导书

《C程序设计实践》课程设计指导

一、课程设计目的1、通过课程设计,熟练掌握Visual C++ 6.0 开发环境的使用,提高程序调试能力;

2、通过课程设计,提高学生分析问题、解决问题的能力;

3、通过课程设计,复习巩固C语言的循环结构、指针、数组、结构体、文件等方面的知识,并在实践中加以运用。

4、通过课程设计,提高学生查阅资料、吸收和运用新知识的能力。

二、课程设计要求

每个学生在下列课题中至少选一题,并独立完成。

1、学生成绩管理系统

2、学生档案管理系统

3、同学通信录管理系统

4、职工档案管理系统

5、职工工资信息管理系统

6、小型图书信息管理系统

7、超市商品信息管理系统

8、实验室设备信息管理系统

9、试题(选择题)信息管理系统

10、列车时刻表信息管理系统

每课题均须具有以下功能:

1、信息录入,包括记录的追加和插入;

2、信息删除;

3、信息修改;

4、信息排序和查询;

5、信息的保存和装载;

6、简单的帮助。

三、设计方法及过程

1、问题分析

包括系统所要完成的功能、数据结构分析,如问题处理过程中使用的结构体及包含的成员等,文件的类型、存储的内容等,输入/输出的格式等。

2、系统功能设计及模块(函数)划分

根据分析结果,画出系统结构图,确定系统的功能模块,包括模块的名字、接口(即函数的参数、返回值)及功能,模块间的调用关系。

3、模块的算法设计

设计每个功能模块的算法,可以用伪代码或流程图表示。

4、编码

代码的编写要符合规范,程序中对各个模块的功能、模块主要实现部分都需要加上注释,以增加程序的可读性,便于软件维护。

5、调试

四、设计报告

课程设计完成后,每位同学要写出《程序设计及C语言》课程设计报告,打印并上交(同时上交源代码),作为成绩的评定依据之一。报告的内容包括:问题分析、系统功能设计及模块(函数)划分、模块的算法设计、源代码及设计总结五个部分。

篇2:c课程设计指导书

一、课程设计的目的及意义

设计并实现该课程设计的目的主要在于:

1)对一定规模的综合软件编程有一定的经历与认识。在做的过程中,你会发现,提前的规划即分析与设计重要过编程过程,否则

会走很多弯。

2)综合并结合现实应用使用C语言的知识。这个设计会用到C语言这门课的全部知识,其中以文件、数组与链表为主,书中提

到的主要及重点算法都会使用到。

3)不仅涉及编程,还涉及到功能分析、模块规划等方面的知识,这些知识在后续课程学习时,会经常使用。这些知识在学《软件

工程》这门课时,会系统讲解。希望有了这次的经历,你能更好的体会《软件工程》这门课的意义,并能学好和用好其中的知识。

4)每项功能的实现,一般有多种方法,这里都强调使用时空效率最高的方法,此次实现只是让你有一个初步的认识,在下学期学习了《数据结构》后,你就知道为什么让你这样做,你也对《数据结构》这门课的作用及意义有所了解。

二、课程设计的实现思路

任何一个管理系统的基本操作主要如下:

1)能录入并能向文件里保存数据

2)能计算并修改文件里的数据

3)能向文件里追加数据

4)能查找文件里是否有某项数据

5)根据要求显示文件里的某些数据或全部数据

6)能在文件里插入或删除某项数据

7)按某个数据项进行排序生成排序文件

可以看出,所有操作的围绕的中心是文件。而文件本身提供的功能相当有限,主要是打开与关闭文件、读与写文件、在文件末尾追加数据、修改文件里的某些数据(这个前提是需要用fseek找到修改的位置再往里写数据),这四项功能。其它的功能文件不能直接完成,需要借由内存将相应的操作完成后,再写入文件。比如:

1)录入并向文件里保存数据的实现思路:C语言并没有提供由键盘输入数据直接录入文件的功能,只有内存变量向文件写入数据的功能,而由键盘输入数据可以到内存变量,因此实现此部分功能时,应当由键盘将数据放入变量,再由变量写入文件。这里录入要求不采用书上例子,它是用结构体数组,我们要求只用一个结构体实现。先将一个人的信息放入结构体,将这个结构体数据写入文件后,再将下一个人的信息继续放在这个结构体中,再将这个结构体写入文件。这样节省内存空间。

2)计算并修改文件里数据的实现思路:这部分的功能的实现应当先将文件的数据读到变量当中,在变量当中完成计算,再将数据

写入文件。如果只是修改文件的数据,并不计算,则可以直接定位到文件中相应的位置,写入数据,则把原来的数据覆盖以完成修改。

3)向文件里追加数据的实现思路:文件本身提供了这项功能,只要以 “a”的方式打开就行。然后向文件写入的数据,直接放在文

件末尾。

4)查找文件里是否有某项数据的实现思路:C语言并没有提供判断文件内容的功能,必须将文件内容读到变量里再进行判断。实

际的查找可能是在大量的数据里的查找,高效的查找是折半查找(下学期的数据结构专门讲这一内容),折半的前提是排序,因此需先对排序后的文件读出,以折半方式查找。(这要要求,是希望巩固折半查找与排序两个重要算法,至于它的时空效率是否高,可以学完《数据结构》知识后自己再判断)。

5)根据要求显示文件里的某些数据或全部数据的实现思路:C语言没有提供将文件内容显示的功能,所以需要将文件内容读到变

量里,再显示变量。

6)在文件里插入或删除某项数据的实现思路:C语言同样没有直接提供该项功能,因此必须借由内存变量完成。由以前的知识知

道,在大量的数据里删除一个数,用数组表示不合适,因为涉及到大量的数据的移动,用链表是合适的,效率高(关于这一点,在《数据结构》这门课有详细的讲解)。因此完成这部分操作要求用链表实现,先将文件里的数据读出组织成链表,在链表上完成插入与删除后,再将链表中的数据写入文件。

7)按某个数据项进行排序生成排序文件的实现思路:排序是在数组里实现。因此先要将文件里的数据读到数组里,将数组排完序

后,再将数据写入文件(一般写入一个新文件)。

因此对每一项功能,关于内存变量的使用有三种方案:一个结构体、结构体数组与结构体链表,实现每个功能应当只会使用其中的一种结构,使用哪种结构取决于你的做的事和使用的算法,比如排序必须用数组,插入与删除必须用链表,其它的根据要求可能会有多种选择,但只有一种时空效率最高,可以从这个角度选择一种结构。

最终实现的软件,只要提供这上面提到的所有功能就算满足要求,至于其它功能,能结合实际要求考虑周全,更好。

三、课程设计的方法

此次课程设计的功能较多,相对于以往所做程序规模较大,因此在编写与调试程序时,特别注意调试程序的方法,以提高效率。具体方法如下:

1)将功能分解,细分至每个函数要完成的功能后,编写一个函数测试一个函数,测试完全通过后,再编写测试下一个函数,然后

再将这些函数组合后完成相应功能。将全部功能完成后,再组合成软件,最后再加入菜单控制。从《软件工程》的角度看,这是从底至上的开发过程,这样便于测试与实现,出错也便于定位错误位置。不要一开始的精力放在菜单控制上,也不要一开始就将所有的函数都编写、组装并一起调试,这样出错位置较难定位,调试效率低。

2)在编程过程中,不要使用全局量。它不仅长时间大量占用内存,而且完全违背实际的软件开发要求。需要使用的数据,应当通

过参数传递。就这个软件而言,数据主要是从文件读写,所以连数据传递都不太多。

3)在列出的这些功能里,有些操作是很多功能都使用的,比如从某个文件读或写数据,这些可以编写成一个函数(当然里面可能再

调用其它函数)。这些一次编写严格测试通过后,可以被其它函数调用,避免代码重复,并提高效率。

4)因为软件有一定的规模,所以必须拆成多个文件,这样附合实际项目开发需求,同时便于编写与调试。在做这个软件过程中,必须学会这种方法。

5)有问题要及时交流,尽早动手编写代码,在编写过程中掌握知识,同时发现问题并进行调整,在这个过程中一步步积累经验。

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

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

1. 学生学习兴趣不高。

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

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

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

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

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

3. 实验、考核环节。

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

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

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

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

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

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

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

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

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

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

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

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

三、结束语

篇4:C程序设计课程教法探究

一、注重首次课的启发和引导作用

首次课,学生怀着好奇又恐惧的心理坐到课堂上,渴求新知,却又担心教师会讲出一些深奥理论,难以理解、消化。面对这种状况,教师应该从实践入手,培养学生对课程的兴趣,拉近学生与课程之间的距离,激发学生的学习主动性;然后,讲授学习方法,鼓励学生大胆实践,将枯燥的编程课变成生动活泼的引导课,为学生今后的学习打好基础。

1.演示程序运行过程,激发学习兴趣

在Tuber C 2.0编译环境下,导入“俄罗斯方块”游戏程序,编译、连接、运行,展示程序执行结果。通过这种方式,既可以让学生熟悉从C语言源程序到可执行文件的整个操作流程,又可以激发学生的兴趣,使学生认识到C语言并不是枯燥乏味的计算机理论,而是有血有肉、活灵活现的计算机程序,从而消除其畏惧心理,增强学习的主动性。

2.传授学习方法,强调学习的意义

有了学习兴趣,更要有好的学习方法。C语言是一门实践性很强的课程,最有效的学习方法就是将理论和实践结合起来,通过理论带动实践,通过实践强化理论,从而改善学生盲目的学习状况。在首次课上,可以用简洁的语言告诉学生如何预习、听课、复习,但应重点强调如何通过实践锻炼学生的动手能力和解决问题的能力。同时,C语言是学生学习后续编程语言的基础,虽然程序设计语言更新很快,但如果能够通过C程序设计课程掌握程序设计思想,具备真正解决实际问题的能力,那么,学习其他语言也会更加得心应手。

3.严格要求学生出勤,保证课程正常衔接

对初学者来说,C程序设计课程是非常深奥复杂的,一旦缺课,就很难再跟上教师的进度。因此,教师在首次课应着重强调听课的重要性,避免学生因懈怠或无关紧要的事情缺课,耽误学习。如果学生因病或重大事件不得不耽误课程,教师应利用业余时间帮助学生补习,保证课程的连续性和教学的整体进度。

二、始终坚持理论教学与学生实践相结合的教学方法

对于C程序设计课程来说,实践是至关重要的。因此,在整个教学过程中,一定要坚持理论学习和上机实践两手抓、两手都要硬。在理论课堂上,启发学生思想、开拓程序思路、讲明知识要点。上机课也不能流于形式,照抄照搬书中例题,而应给学生思考的空间,启迪学生敢于创新、勇于实践,锻炼学生解决问题的能力,使学生既掌握书中的重点算法,又充分感受到程序设计的乐趣。同时,理论课程与上机实践应紧密融合,学一部分知识,上机实践相应的内容。这样,学生既锻炼了动手和解决问题的能力,又巩固了所学的知识,否则理论和实践脱节,就失去了实践的意义。在实践过程中,还应该让学生养成预先分析题目、确定算法与数据结构、在纸上编出程序源代码的好习惯。这样,上机时,就可以将主要精力放在调试程序上面,提高上机效率。

三、巧妙引入软件工程的基本思想

在软件工程中,软件的生存周期包括“问题定义、可行性研究、需求分析、概要设计、详细设计、编码、调试、运行与维护”几个阶段,C语言编写的程序也是如此。但是,初学者对软件生存周期的认识不深,容易忽略,致使软件结构不合理、运行缓慢或难以维护。教师可以通过日常教学,逐渐培养学生编程中的软件工程思想,帮助学生养成良好的编程习惯,培养学生分析问题、解决问题的能力,培养学生的创新精神、团队意识,为学生今年从事IT行业做好铺垫。

C程序设计课程是学生学习编程语言的基础,在学生整个学习过程中占据着非常重要的地位。教师必须通过科学的教法,巧妙引导学生,帮助学生有效学习新知,养成良好的编程习惯,从而为学生今后的学习打下坚持的基础。

篇5:c课程设计

学院

学院:信息工程学院 部门:文体部 姓名:刘少卿 信息

有时候不得不感叹时间过得太快,转眼间我已经在学院学生会担任文体部部长半年了,这半年有很多的收获,也有些遗憾。我在担任部长的一年不仅学会了很多工作中的知识,更懂得了作为一个部长不仅应有领导能力,更要有良好的共同协调能力,能充分发挥各个部员的优势来更好的完成工作,积极听取别人的建议。我会尽力将担任部长一年来的工作心得,以便能更快适应工作,更好的促进文体部发展。

回顾这一学期,我们文体部的新成员都慢慢地成长起来,在这学期我们手牵手坚持不懈的完成了工作,其中有欢乐,有无奈,可我们都在这段经历中学会了团结协作,懂得了责任与担当,工作能力上也得到很大的提升。

在学院领导的关心支持下,学生会换届工作顺利进行,文体部共招收干事 9 名,学生会日常管理工作得以正常开展起来。2014级新生的加入,为文体部注入了新的血液,大家最初都不太熟悉彼此,比较的陌生,但经过这一个学期的共同工作,相互之间都比较熟悉了,大家的默契度也提高了,这对部门的工作开展有了很大的帮助。

为了增强团体合作精神,展现当代大学生积极向上的精神风貌,活跃学习氛围,给同学们一个真正展示自我风采和勇气的舞台,使同学们的大学生活过得更加丰富多彩,更加有意义。我们文体部与其他各个部门协同举办或参与了许多有趣的活动,如:新生篮球赛、运动会、乒乓球比赛、羽毛球比赛、脱口秀、拔河友谊赛等。在这些比赛中同学间增进了友谊,班级间的关系更加融洽,也让我们的工作能力得到了进一步的锻炼。我觉得这些活动充分发挥了体育活动的功效,不管比赛结果如何,我们展示了我们光彩,我觉得很成功!

在一系列的活动期间,文体部取得了很多成绩,但也有不足。

1、部门的定位欠缺,导致部分活动的后续跟进工作进展缓慢。

2、因为各种因素,部门内部分工不平衡,有所失调。

3、没有给干事提供充足的锻炼的平台。

4、与班委缺乏简洁、高效的反馈途径,缺乏充足的沟通。

5、分工没有具体到人,所以造成工作完成不及时或出现有的工作没人做的情况。

对于这些不足之处在以后的工作中我会多加注意争取以后让我部门的工作更加顺利地进行。

篇6:c课程设计

设计要求:

每人选定2个题目,限1人选的题目只能由1人单独完成,限2人选的题目可由1-2人完成。

1.模块化程序设计 2.锯齿型书写格式 3.必须上机调试通过 设计报告格式:

1、设计目的

2、总体设计(程序设计组成框图、流程图)

3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)

4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施

5、源程序清单和执行结果:清单中应有足够的注释

检查要求:

1、每个人必须有可运行的程序(学期末检查);

2、每个人必须交《C语言课程设计报告》(打印稿)打分标准:

1、根据平时上机考勤;注重平时上机成绩,教师要不定期检查学生进度,学生不得以自己有私人电脑为借口而不来上机。

2、根据程序运行结果;

3、根据《C语言课程设计报告》,学生能对自己的程序面对教师提问并能熟练地解释清楚

以上三项缺一不可,否则不能到得相应学分

1、职工信息管理系统设计(限最多2人完成)

职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:

系统以菜单方式工作,所有信息保存到文件中 职工信息录入功能(职工信息用文件保存)--输入 职工信息浏览功能 --输出

查询和排序功能:(至少一种查询方式)--算法

按工资查询 按学历查询

职工信息删除、修改功能(任选项)

2、图书信息管理系统设计(限最多2人完成)

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:

系统以菜单方式工作,所有信息保存到文件中 图书信息录入功能(图书信息用文件保存)--输入 图书信息浏览功能--输出 查询和排序功能:(至少一种查询方式)--算法

按书名查询 按作者名查询

图书信息的删除与修改(可选项)

3、学生信息管理系统设计(限最多2人完成)

学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:

系统以菜单方式工作,所有信息保存到文件中 学生信息录入功能(学生信息用文件保存)---输入 学生信息浏览功能---输出 查询、排序功能---算法

按学号查询 按姓名查询

学生信息的删除与修改(可选项)

4、学生选修课程系统设计(限最多2人完成)

假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能:

系统以菜单方式工作,所有信息保存到文件中 课程信息录入功能(课程信息用文件保存)--输入 课程信息浏览功能--输出

查询功能:(至少一种查询方式)--算法v 按学分查询 按课程性质查询

学生选修课程(可选项)

5、销售管理系统(限最多2人完成)

某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:

1)销售员的代号 2)产品的代号

3)这种产品的当天的销售额

每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,编写一个处理系统,所有信息保存到文件中,读取上个月的销售情况(自己设定),进行如下处理。

1)计算上个月每个人每种产品的销售额。

2)按销售额对销售员进行排序,输出排序结果(销售员代号)

3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)

4)输出统计报表

销售统计报表

产品代号

销售之和 销售员代号

每种产品之和

总和

6、设计一个简单计算器(限最多1人完成)

要求: 在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。

7、编写一万年历系统(限最多1人完成)

要求: 模仿现实生活中的挂历.当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).当系统日期变到下一月时,系统自动翻页到下一月.8、学生成绩管理(限最多2人完成)

1.主要功能:

(1)能按学期、按班级完成对学生成绩的录入、修改

(2)能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序

(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单(5)所有信息保存到文件中

9、通讯录管理(限最多1人完成)

1.主要功能:

(1)能建立、修改和增删学生通讯录(2)能够按多种方式进行查询

2.要求:界面友好,易于操作,所有信息保存到文件中

10、一元多项式简单的计算器(限最多1人完成)

1主要功能:

(1)输入并建立多项式;(2)输出多项式;

(3)两个多项式相加,建立并输出和多项式;(4)两个多项式相减,建立并输出差多项式。

(5)算法的时间复杂度、另外可以提出算法的改进方法 实现提示:可选择带头结点的单向循环链表或单链表存储多项式,头结点可存放多项式的参数,如项数等。

2.要求:一元多项式简单计算器的基本功能

11、图书管理系统(限最多2人完成)

1、功能描述

新进图书基本信息的输入。2.图书基本信息的查询。3.对撤消图书信息的删除。4.为借书人办理注册。

5.办理借书手续(非注册会员不能借书)。6.办理还书手续

信息描述:有关该系统基本信息的描述,如:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等

7.所有信息保存到文件中

12、用栈来设置密码(限最多1人完成)

要求:用栈来做一个密码验证程序,密码验证只有三次机会。

13、双向链表的排序(限最多1人完成)

要求:输入一个双向链表,显示些双向链表并对此双向链表排序,所有信息保存到文件中

14、成绩记录簿(限最多2人完成)

编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能:

(1)创建信息链表并以磁盘文件保存;

考核方式

课程设计完成情况; 课程设计报告;

课程设计期间的表现.参考评定依据

课程设计成绩评定的依据有设计文档资料、具体实现设计方案的程序及课程设计考勤登记表,其中平时成绩占总成绩的20%。

优:按要求完成题目,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确,其中有总体设计思想的论述,有正确的流程图,程序完全实现设计方案,设计方案先进,软件可靠性好;

良:完成设计题目,有完整的符合标准的文档,文档有条理、文笔通顺,格式正确;有完全实现设计方案的软件,设计方案较先进;

中:基本完成题目,有完整的符合标准的文档,有基本实现设计方案的软件,设计方案正确;

及格:基本完成题目,有完整的符合标准的文档,有基本实现设计方案的软件,设计方案基本正确;

不及格:没有完成题目的要求,没有完整的符合标准的文档,软件没有基本实现设计方案,设计方案不正确。

提交资料:

课程设计报告

提交报告的内容

一、题目内容的描述

二、应用程序功能的详细说明

三、输入数据类型、格式和内容限制;

四、主要模块的算法描述 –以程序流程图的方式给出 –简要的语言描述

五、结束语

六、程序的源代码清单

七、报告的字数,不算源代码清单不少于4页 提交报告的格式

正文宋体小四号字

每个自然段开始空两格.文中英文用新罗马(time new roman),四号

源程序清单用英文新罗马五号 正文宋体小四号字 提交报告封面

软件:需提供源程序,并能正常运行。

篇7:c课程设计

完成一个类似TC集成系统菜单的西文下拉菜单的设计,支持鼠标,不要求实现个子菜单的功能,界面仿turboc2.0系统菜单.二、课程设计的要求与数据

1、进一步掌握和利用C语言进行程设计的能力;

2、进一步理解和运用结构化程序设计的思想和方法;

3、初步掌握开发一个小型实用系统的基本方法;

4、学会调试一个较长程序的基本方法;

5、学会利用流程图或N-S图表示算法;

6、掌握书写程序设计开发文档的能力。

三、课程设计应完成的工作

1、编写完成相应题目的程序;

2、编写课程设计报告,课程设计报告的内容应包括以下6个部分:

1)需求分析:包括设计题目、设计要求以及系统功能需求分析; 2)总体设计:包括系统总体设计框架和系统功能模块图;

3)详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图; 4)调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图); 5)总结:课程设计完成了哪些功能,有没有什么扩展功能?还有哪些地方需要改进?课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容;

6)附录:主要源程序代码,含必要的注释。

3、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解决问题、运行程序和回答教师提出的问题。

四、课程设计进程安排 序号设计各阶段内容

地点起止日期 1 下达任务书,说明设计要求;收集资料

实验3#517 6.18 2 总体方案设计、详细设计实验3#517 6.19 3 编写程序,调试分析实验3#517 6.20 4

撰写报告并上交,答辩 实验3#517 6.21

五、应收集的资料及主要参考文献

[1] 谭浩强.C程序设计(第三版)[M],北京:清华大学出版社,2005.9

[2] 谭浩强.C程序设计题解与上机指导(第三版)[M],北京:清华大学出版社,2005.7 [3] 刘振安.C程序设计课程设计,北京:机械工业出版社,2004.9 发出任务书日期: 2007年 6 月 18 日指导教师签名: 计划完成日期:

2007年 6 月 22 日基层教学单位责任人签章:

主管院长签章:

目录设

目的与

要求………………………………………………………………页码

设计………………………………………………………………………

设计………………………………………………………………………页

3.1

设计………………………………………………………………页码

3.1.1 XX

(可选)…………………………………………………页码 3.1.1 YY功

(可选)…………………………………………………页码 3.1.1 ZZ功

(可选)…………………………………………………页码 3.2数据结构设计………………………………………………………………页码

分析……………………………………………………………………页码

总结………………………………………………………………………

附录……………………………………………………………………………页码 6 答辩记录(正文处请留出适当空白)………………………………………页码 7 指导教师意见(正文处请留出十行空白)…………………………………页码 目的与要求

完成一个类似TC集成系统菜单的西文下拉菜单的设计,支持鼠标,不要求实现个子菜单的功能,界面仿turboc2.0系统菜单.总体设计 详细设计 #include“stdio.h”

#include“stdlib.h” #include“dos.h”

#include“conio.h”

#include“bios.h”

#define DOWN 0x5000

#define UP 0x4800

#define Esc 0x011b

#define ENTER 0x1c0d

#define Backspace 0xe08

#define ALT_B 12288 /*组合键alt+b*/ int key;

inttextx,texty;

char save[4096];char c[4096];structmenustruct

{

char name[40];charstr[11][20];int n;}m1[1];inti,j;void menu()

{

system(“cls”);

textbackground(BLUE);window(1,1,25,80);

clrscr();

textx=3;texty=2;gotoxy(1,2);printf(“%c”,218);for(i=0;i<78;i++)printf(“%c”,196);printf(“%c”,191);for(i=3;i<=23;i++)

{

gotoxy(1,i);

printf(“%c”,179);

gotoxy(80,i);printf(“%c”,179);

}

printf(“%c”,192);for(i=0;i<78;i++)printf(“%c”,196);printf(“%c”,217);gotoxy(1,1);

textcolor(7);

for(i=0;i<80;i++)cprintf(“%c”,219);selectitem();

drawselectitem();gettext(2,3,78,23,c);

}

selectitem(){

strcpy(m1[0].name,“*************menu*************”);strcpy(m1[0].str[0],“ intput ”);

strcpy(m1[0].str[1],“ consult ”);strcpy(m1[0].str[2],“ output ”);strcpy(m1[0].str[3],“ modify ”);strcpy(m1[0].str[4],“ delete ”);strcpy(m1[0].str[5],“ recover ”);strcpy(m1[0].str[6],“ add ”);strcpy(m1[0].str[7],“ save ”);strcpy(m1[0].str[8],“ open ”);

strcpy(m1[0].str[9],“ tong ji ”);strcpy(m1[0].str[10],“ exit ”);m1[0].n=11;

}

drawselectitem()

{

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

RedText(i,1,m1[i].name);

}

RedText(intx,inty,char *z)

{

textbackground(7);gotoxy(3+x*20,y);for(j=0;z[j];j++)

{

if(j==0)

textcolor(RED);else textcolor(BLACK);cprintf(“%c”,z[j]);

} }

BlackText(intx,inty,char *z)

{

textbackground(0);textcolor(15);gotoxy(3+20*x,y);cputs(z);

}

Run(){

while(1)

{

gotoxy(textx,texty);

key=bioskey(0);switch(key)

{

case ALT_B:

case Esc:DrawM1(0);break;

case UP:

{

if(textx==3)textx=23;textx--;gotoxy(texty,textx);

} break;

case DOWN:

{

if(textx==23)

textx=3;textx++;

gotoxy(texty,textx);

} break;

case Backspace:

{

if(texty==2&&textx==3)

continue;else {

if(texty!=2)texty--;else if(texty==2)

{

texty=78;textx--;

}

gotoxy(texty,textx);

printf(“ ”);

gotoxy(texty,textx);}

}break;

case ENTER:

{

if(textx==23)continue;textx++;texty=2;

gotoxy(texty,textx);

}break;default:

{

if(texty==79&&textx==23)continue;else if(texty==79&&textx!=23)

{

textx++;texty=2;}

gotoxy(texty,textx);printf(“%c”,key);if(texty==79)continue;else texty++;

}

}

}

}

DrawFrame(intl,intu,intr,intd,inttcolor,intbcolor)

{

textbackground(bcolor);textcolor(bcolor);for(i=1;i<=r;i++)

{

for(j=u;j<=d;j++){ gotoxy(i,j);

printf(“%c”,219);

}

}

textcolor(tcolor);for(i=u+1;i

{

gotoxy(1,i);

cprintf(“%c”,179);gotoxy(r,i);

cprintf(“%c”,179);

}

for(i=l+1;i

{

gotoxy(i,u);

cprintf(“%c”,196);gotoxy(i,d);

cprintf(“%c”,196);

}

gotoxy(l,u);

cprintf(“%c”,218);gotoxy(r,u);cprintf(“%c”,191);gotoxy(l,d);

cprintf(“%c”,192);gotoxy(r,d);

cprintf(“%c”,217);

}

DrawM1(int n)

{

gettext(1,1,80,25,save);BlackText(n,1,m1[n].name);

DrawFrame(3+20*n-1,2,3+20*n+19,3+m1[n].n,0,7);

for(i=3;i<3+m1[n].n;i++)

{

if(i==3)

BlackText(n,i,m1[n].str[i-3]);

else RedText(n,i,m1[n].str[i-3]);

}

gotoxy(79,1);MoveM1(n,3);

}

MoveM1(intn,int x){

int flag=1;while(flag)

{

gotoxy(79,1);key=bioskey(0);gotoxy(79,1);switch(key)

{

case Esc:

puttext(1,1,80,25,save);flag=0;break;case UP:

RedText(n,x,m1[n].str[x-3]);if(x==3)

x=3+m1[n].n-1;else x--;

BlackText(n,x,m1[n].str[x-3]);flag=1;

break;case DOWN:

RedText(n,x,m1[n].str[x-3]);if(x==(3+m1[n].n-1))x=3;else x++;

BlackText(n,x,m1[n].str[x-3]);flag=1;break;

case ENTER:

puttext(1,1,80,25,save);

Enter(n);flag=0;break;

}

gotoxy(79,1);

}

}

Enter(int m)

{

switch(m){

case 0: printf(“ student input”);break;

case 1: printf(“ student consult ”);break;case 2: printf(“ student output ”);break;case 3: printf(“ student modify ”);break;

case 4: printf(“ student delete ”);break;case 5: printf(“ student recover”);break;case 6: printf(“ student add”);break;case 7: printf(“ student save ”);break;case 8: printf(“ student open ”);break;case 9: printf(“ student tong ji”);break;case 10: printf(“ student exit”);exit(0);

}

}

main(){

menu();Run();

篇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语言,教学

参考文献

上一篇:实施人伤案件全面管控下一篇:搜集新闻资料