基于项目驱动的面向对象程序设计研究性教学实践
2017-03-21徐晶卢雪松唐忠宽曹进
徐晶+卢雪松+唐忠宽+曹进
摘要:该文结合我校非计算机专业面向对象程序设计课程教学的实际,以VFP课程为例,在教学项目和自主探究项目的驱动下,将教学内容以数据库、面向对象程序设计和面向过程程序设计三个模块进行研究性教学实践,旨在培养学生自主学习、独立思考能力,进一步提高学生的创新能力。
关键词:项目驱动;面向对象程序设计;研究性教学
中图分类号:G424 文献标识码:A 文章编号:1009-3044(2016)33-0156-02
1 背景及我校的教学现状
2000年以来,教育部先后出台“关于加强高等学校本科教学工作提高教学质量的若干意见”等文件,明确提出积极推动研究性教学,提高大学生的创新能力。[1]各高校积极将研究性教学理念融入到教学改革中,积极探讨研究性教学的理论与实践模式。
为应对教学改革,我校对大学计算机课程的教学内容做了改动,安排非计算机专业学生第1学期开设大学计算机课程,第2学期开设程序设计课程。使学生通过数据结构、数据库、算法设计和软件工程等基础知识的学习,为程序设计课程的开设起到了铺垫作用。[2]
在研究性教学初步实践的基础上,我校现已在18个专业全面开展研究性教学改革,计算机公共课教学也在此列中。将研究性教学应用于面向对象程序设计课程,正好解决了非计算机专业面向对象程序设计课程(以《VFP程序设计》为例)教学中的不足,其一是课程知识点多、散,学生抓不清主次;其二单纯讲解命令、函数、属性等,理论不与实际应用相结合,学生感觉枯燥无味;其三实验课时少,学生实际操作能力差;其四考核评价方式单一,期末统考成绩比重过大,过程学习成绩依据不足。
VFP是面向对象的小型关系数据库管理系统,直接面向数据库开发,其实用性特别强。在学生已具备数据库基本概念、算法设计思想和软件开发过程的基础上,将项目贯穿在VFP程序设计研究性教学过程中,这样可以让学生提高感性认识,通过理论联系实际的教学,激发学生的学习兴趣,启发学生积极思考,引导学生动手实践,在实践中探索,主动建构知识,小组合作开发小型管理项目,通过点评项目,促使学生反思,加深对VFP程序设计的理解,同时也提高了学生的实践能力和创新能力。[3]-[5]
2 基于项目驱动的VFP程序设计研究性教学实践
根据项目驱动教学法和VFP程序设计的特点,我们利用课余时间组织学生去图书馆、教学管理部门、超市、食堂等参观调研,了解数据库技术的具体应用情況。教师再将用VFP设计开发的教学项目展示给学生,通过介绍其功能,把VFP的教学内容、教学安排、上课形式及教学评价告知学生。让学生认识到基于项目驱动的VFP程序设计研究性教学是一个在项目驱动之下人人参与、主动发现问题、分析问题、解决问题的实践过程,在这个过程中以教师为主导、学生为主体,教师只起到引领、启发作用,学生才是教学的中心,迫使学生成为知识的主动探究者。
2.1 精心设计项目,激发学生兴趣
项目驱动教学法的关键是项目。我们选择“教学管理系统”作为VFP程序设计的教学项目。[6]该项目的设计过程中能涵盖VFP的知识点,又贴近实际,学生对此十分熟悉,这样就便于学生的理解,使学生容易上手,调动了学生解决问题的积极性。教师在精心准备“教学管理系统”时,既考虑其与教学内容的紧密结合,又留有发挥余地;既考虑其操作的可行性,又让学生系统掌握理论知识;既照顾大部分学生的水平,又有拔高的空间。从而激发学生的学习兴趣,充分调动学生的主观能动性,使学生对所学的VFP理论知识有认同感。
2.2 演示分析项目,启发学生思考
通过项目的演示分析,不仅使学生能直观了解项目所能实现的功能和使用的技术,将原本VFP分散的数据库、数据表、菜单、表单、程序等知识点串起来,而且使学生明确知道本学期学习VFP的目的及用途,启发学生思考VFP还能解决哪些实际问题。
这个环节对教师的综合水平提出了比较高的要求,只有教师具备了较丰富的开发经验和一定的项目整合能力,才能游刃有余地指导学生,让学生学到项目开发的经验。教师分析项目时要带有一定的艺术性,这样才能吸引学生的注意力,激发其学习讨论的热情。同时教师应事先设计一些与项目相关的富有启发性的问题,在演示分析完毕,让学生带着问题去操作这个系统,通过对系统的使用,使学生从应用者和开发者不同的角度,去了解 VFP 的作用,了解项目所需完成的功能,启发学生独立思考,再组织学生进行讨论,对教学项目提出建议及改进方案。
2.3 逐块讲解项目,引领学生探究
在讲解“教学管理系统”时,教师将其总体结构用层次图抽象出来,如图1所示。明确项目是由四个子项目构成的,每个子项目所涉及的知识点各不相同。“数据管理”主要涉及数据表、数据库及表单的创建,“数据查询”主要涉及查询视图的使用及代码设计,“数据统计”则涉及报表的应用,“系统工具”则是可扩展的子项目。整个项目需要菜单、程序及表单来组合。
2.3.1 数据库模块
整个项目设计的基础是数据,在VFP中如何组织数据?为何创建数据库?学生通过自学能够很快创建数据表和数据库,但此时教师不仅需要引导学生用命令法和界面法操作外,还应指出将不同主题的信息保存在不同的表中,项目中多张数据表通常都不是孤立的,需建立表和表之间的关系,为了能高效率使用和管理数据表,利用VFP提供的数据库将多张数据表组织起来,如图2所示。在实际使用过程中还需不断改进。
创建数据库表后,基于已有数据可以有多种应用,最常见的应用就是查询和视图,教师可以将VFP中创建查询的方法先行讲解,特别是SELET-SQL语句的使用。比如,项目中要查询学生选课情况,根据现有的表间关系可知,该查询的数据共基于3张表:学生表、成绩表和课程表。学生表与成绩表之间根据学号建立一对多的关系,课程表与成绩表之间根据课程代号建立一对多的关系,也即借助成绩表将学生表和课程表建立了它们的关系,可以把3张表中的学号、课程代号、课程名、学分和必修课查询出来存在视图中。但查询出来的数据无法让用户一目了然,因而需要借助图形用户界面,根据用户需求查询任一学生的选课情况,仅用数据表、查询等是不够的,还需要面向对象的表单、菜单等知识。
通过数据库知识点的讲解,并将其应用于具体的教学管理系统的项目中,让学生有种迫切掌握知识的需求,因为有了理论知识才能正确应用。但是由于一个项目涉及的内容比较单一,教师可以再提供“图书管理系统”、“工资管理系统”、“人事管理系统”等项目,并提出与这些项目相关的查询问题,让学生课后自学、上网查资料、小组探讨,分析这些项目中需要准备的数据表及要完成的查询功能,如何实现这些查询。
2.3.2 面向对象程序设计模块
整个项目功能的实现需要由菜单组织,菜单是项目的主要操作界面,应做到界面友好、方便使用,让学生学会进行菜单分组,设置快捷键、热键、跳过条件和注释等。一个项目是否吸引用户,不仅是菜单而应是表单,所以我们应把表单的设计作为重点。
表单作为项目与用户交互的主要界面,可以利用表单制作欢迎界面、登录界面、数据浏览界面、查询界面等。教师以教学项目中的表单为例,先行介绍面向对象中的对象、属性、事件和方法的概念,通过表单设计、运行两个状态的切换,让学生对常见属性、事件和方法进行直观了解,鼓励学生边学边用,边用边学,不断将已有的数据表、查询视图知识巧妙地应用在表单设计中。
教师需对“教学管理系统”中具有代表性的、较难的表单分析讲解,其它表单分组讨论,并请每组选派成员上台讲解,师生、生生互动,教师在这个过程中发挥指导者、引领者的作用,应及时解决疑问,使学生学思结合,培养其举一反三的逻辑推理能力。通过学习讨论,学生对知识点进一步理解,掌握了教学项目的解决要点,为解决自主探究项目打下基础。此时,教师将下半学期的自主探究项目“人事管理系统”、“工资管理系统”、“图书管理系统”等下达,以小组为单位,组长负责,小组成员分工协作完成一个项目。
2.3.3 面向过程程序设计模块
面向过程程序设计的学习相对较难,由于VFP课程是在我校的文科类专业开设,所以我们把教学要求相对降低。把程序设计的顺序、分支和循环三种基本结构,及其在数据表、表单、菜单中的应用作为重点介绍。比如顺序结构用于项目的主文件中,有序进行初始环境设置、启动项目的欢迎界面、创建事件循环和恢复原来的系统环境;分支结构用于选项按钮组的click事件代码中,根据用户选择的不同选项按钮执行不同的代码;把循环结构用于系统的登录界面,控制用户最多输错三次密码,从而控制用户的合法性;把循环结构用于根据输入的工号或姓名查询教师的任课情况。通过三种基本结构在教学管理系统中的应用,让学生理解面向过程程序设计的相关知识点,教师还可将自主探究项目中会遇到的程序设计知识点,以具体问题的形式提出,让各小组组织讨论,教师加强指导,以防止学生出现畏难情绪。
2.4 点评学生项目,促进学生反思
采用项目驱动教学法不再强调项目开发的成功与否,而是强调学生在设计过程中的收获。通过以小组方式进行自主探究项目的设计,让每位学生通过对具体问题分析、讨论、解决,有助于学生理解所学内容之间的相互关系,提高了学生自主学习、独立思考能力,培养团队意识和协作能力。
项目设计完成后,每位学生都需提交各自的设计成果,采用答辩的形式在班级讨论课上进行汇报。答辩过程中,教师和其他学生可以提出看法和观点,教师此时对答辩学生的讲述和提出异议的观点进行正误的分析,及时地总结归纳,使学生不仅巩固了所学知识,而且对设计过程中出现的失误反思,积累了开发经验,提高动手创新能力。
3 我校的程序设计课程研究性教学评价
程序设计课程考核采用研究性学习评价、平时成绩和期末笔试相结合的形式,以研究性学习表现为主。具体计算公式为:
课程成绩=研究性学习评价×60%+平时成绩×10%+期末笔试×30%
其中:平时成绩主要考核学生的自主学习,以单元练习与测试的完成情况为主要依据。
研究性学习评价由教师指导评价、小组成员互评和学生自我评价3个评价主体分别进行,综合得出评价成绩。[7]研究性学习评价注重学生的学习过程,从多个方面考察学生的表现。教师指导评价是由教师对小组完成项目情况进行评定,从团队协作、功能实现、系统优化和创新意识等方面考查;小组成员互评是由小组成员根据各成员对项目实现的贡献大小进行互评,考察的是组员的参与意识;学生自我评价是由學生本人进行反思自评。
4结语
在面向对象程序设计研究性教学中使用项目驱动教学法,将理论知识和实际应用紧密结合,让学生明确该课程的应用价值,激发其学习的积极性,利于其对知识的掌握,提高了学生分析和解决实际问题的能力,推动了学生创新能力的发展。
参考文献:
[1] 徐风生. 研究性教学的理论探讨与实践[J]. 高等理科教育,2012(6):44-48.
[2] 卢雪松 周彩英.大学计算机教程[M].北京:电子工业出版社,2014.9.
[3] 赵怡.项目驱动在程序设计教学中的应用[J].计算机教育,2013(4):73~76.
[4] 彭召意,文志强,朱艳辉.以项目驱动的面向对象程序设计课程教学研究[J].计算机教育,2012(12):95~98.
[5] 成江荣.“案例引导、项目驱动”模式下的计算机综合实践能力提升策略[J].软件导刊, 2015(2):190-192.
[6] 卢雪松. Visual FoxPro教程[M]. 4版.南京:东南大学出版社,2012.11.
[7] 龙达雅.项目教学法在VFP实验教学模式中的应用研究[J].计算机时代,2011(2):61-62.