高职院校基于MVC模式的C语言课程教学实践研究

计算机时代 / 2017年08月31日 13:02

数码

摘 要: MVC设计模式是当前广泛运用的软件设计方法,能够提高软件开发质量和效率。本文从软件工程的角度,将MVC设计模式引入到C语言课程教学,让学生掌握一种程序设计理念和良好的软件架构方法。采用项目驱动、小组讨论的方式,把枯燥的语法、命令融入项目开发,综合培养学生分析问题、解决软件开发实际问题的能力和职业素养。教学实践表明,学生学习C语言的积极性和主动性有了很大提高,团队协作和实际软件开发能力得到了有效提升。

关键词: C语言; 软件工程; MVC模式; 职业技能

中图分类号:G424 文献标志码:A 文章编号:1006-8228(2016)11-86-03

Research on the teaching practice of C language course in higher vocational colleges

Zhang Zhihui

(Beijing Information Technology College, Beijing 100015, China)

Abstract: MVC design pattern is a widely used software design method, which can improve the quality and efficiency of software development. In this paper, from the perspective of software engineering, the MVC design pattern is introduced into the C language teaching, so that students can master a program design concept and a good software architecture method. The use of project driven and group discussion integrates the boring grammar and command into the project development to comprehensively cultivate students' abilities of analyzing the problem and solving the practical problems of software development, and their professional quality. Teaching practice shows that the enthusiasm and initiative of the students to learn the C language has been greatly improved, and the ability of team work and actual software development ability have been effectively improved.

Key words: C Language; software engineering; MVC design pattern; occupation skill

0 引言

灵活运用知识解决实际问题的工程能力和动手能力是高等职业教育重点培养的职业能力。高级语言程序设计作为高职院校信息技术专业的必修课,主要是面向编程技能和逻辑思维能力培养,现有的人才培养质量和规格已远不能满足人才市场需求[1]。传统C语言程序设计教学往往按照知识点先后顺序和难易程度讲解程序的基本结构,注重语言的各种语句、语法和命令,却无法真正让学生形成解决实际问题的能力[2]。本文将当前流行的MVC设计模式引入C语言课堂教学实践,能够让学生从软件工程的角度,了解掌握一种良好的程序架构和设计方法,在学习基本的语法命令和编程技巧的基础上,进一步提升解决实际问题的综合能力,并能为后续课程实训和第一岗位任职打下坚实的基础。

1 MVC设计模式在C语言教学中的应用

对于刚接触程序语言的学生来说,在对程序设计能解决什么问题、怎么去解决问题没有基本概念的情况下,很难将学到的语法、命令与复杂的软件功能关联起来。

1.1 对MVC的认识

从传统的结构化、面向对象程序设计方法,到C/S、B/S软件架构,以及SAAS/PAAS/IAAS云计算架构,都是通过合理的应用架构使得复杂的软硬件以及网络体系结构得以建立[3]。同样,一个好的程序架构,可以使得软件开发过程更加简单,开发质量效率更高,可维护性更强。MVC架构是20纪80代编程语言Smalltalk-80提出的一种软件开发模式,至今已经广泛应用于Asp.net、Php、Java等语言和软件开发,越来越受到欢迎[4],这也是将MVC模式引入C语言课程教学的主要原因。

MVC架构将一个应用程序分为三个部分:模型(Model),视图(View),控制器(Controller)。

模型(Model)用来表示数据和业务逻辑,负责所有与数据有关的操作任务。主要是按照控制器的指令,完成数据信息的加工、处理、存储等任务,并实现对数据库的操作。比如,对人员数据的增加、删除、查询等代码。

视图(View)主要是用户交互界面,提供用户输入输出操作界面。视图将用户的操作输入直接提交给控制器,并按照控制器的指令与模型层进行数据交互,将输入数据提交给模型层,将处理结果显示给用户。

控制器(Controller)主要负责解释用户的请求,控制软件系统的执行流程。通过调用不同的模型进行数据处理,选择不同的视图向用户反馈处理结果。

现有Jsp、Visual Studio等开发平台,都提供基本的MVC框架,支持按照MVC模式进行代码组织和程序开发,可以自动生成技术框架和一些基本的代码,便于工程管理,提高软件开发效率。MVC还是一种软件设计思想、开发方法,而不单纯是针对具体编程语言或语法,可以起到“设计图纸”的作用,通过将具体应用的界面显示、逻辑控制和数据处理等各个应用部分的进行分层、隔离,从而降低功能模块间的耦合度和开发复杂度,提高代码的重用率和可维护性。

1.2 MVC在C语言课程的教育模式

现有的MVC模式知识并不适合直接用于课堂教学,需要结合C语言课程的教学目标、课时要求,进行适当的简化和改造,由教师提供程序框架,并结合具体的项目实践,加强应用指导。

C语言课程一般选择标准C或C++,开发环境能够提供的输入输出功能都非常弱,但并不影响MVC结构在教学实际中的应用。图1是经过简化后的MVC体系结构,控制器用来处理键盘或鼠标的输入,显示器负责屏幕的输出显示,处理器用于程序内部的逻辑和数据处理。这样的分层架构,有利于对信息的输入、输出和处理等功能进行分层开发。

简化后的MVC结构为学生编写实际应用程序提供了一个基本框架,要求程序设计至少包括三个部分,控制模块、显示模块和数据处理模块,建立起应用程序开发的输入、输出、数据处理分层框架设计。在具体实现上,可以将C语言的main函数作为主控模块,超过2层的逻辑判断要单独写控制函数和文件,显示模块和数据处理模块要单独写显示函数和数据处理文件。在课程教学内容上,可以将开发环境的文件组织和函数调用部分知识点移到前面,指导学生建立基本的工程文件结构,并贯穿于整个课程学习实践活动,为从事大型复杂软件开发打下基础。例如,一个课程项目工程至少包括4个文件,用于描述主程序、控制模块、显示模块和处理模块,像盖房子先要有图纸,潜移默化中培养学生良好的分层架构习惯。

2 课程教学实践活动案例分析

课程教学的关键是把教与学结合在一起,通过实施一个完整的项目,教师提供“设计蓝图”,让学生通过任务驱动方式,主动参与、相互协作,将学习到的数据类型、语句、语法等零散的知识点,系统地应用到解决实际问题。

2.1 课程教学方案设计

在教学目标上,以提高应用C语言从事软件开发能力为主线,突出程序设计模式、运行机理分析和解决实际问题方法等应用内容,提高施教的针对性。在教学计划上,根据学生之前的课程安排,有针对性地补充软件工程相关知识,增加程序设计方法内容,将C语言的语句、语法融入到程序设计过程,提高课堂授课的时效性。在教学重点上,围绕按照MVC模式编写、调试和配置一系列实用、规范的应用项目,灵活运用任务驱动和项目教学法,由简单到复杂,逐步涵盖C语言的基本语法、编程知识点,熟悉软件开发的需求分析、详细设计、代码编写、代码调试等各项流程,充分调动学生的学习兴趣、发掘学生的创造潜能,从而提高学生分析问题、解决问题的综合应用能力。

2.2 项目驱动教学方法案例

这里给出采用俄罗斯方块的教案示例,重点是加深学生对输入控制、数据和逻辑处理、显示方法的理解,提供一个便于修改和扩展、容易调试和测试的软件开发框架。这种游戏化的项目更容易激发年轻学生的学习兴趣,积累开发大型应用程序的初步经验。

⑴ 项目安排。帮助学生理解MVC设计模式程序架构,并根据项目开发需要适当调整教学内容,通常安排为项目设计、分解任务、协作开发、应用评价、迭代完善等五个环节。比如,第一步是在指定位置显示一个方块,主要是接收键盘输入,转化为显示坐标,在屏幕上画方块。先由教师辅助学生建立起完整的项目工程文件,并讲解变量定义、函数调用等内容,推动项目实施。后续项目安排可逐步添加控制方式、方块的旋转和移动处理,直至完善游戏的消行、计分等功能,分层实现俄罗斯方块的编写,更容易让学生理解MVC设计模式的优势。

⑵ 项目实施。可以采用项目小组的工作方式,每个小组设置项目管理员、系统分析员、程序员、测试员和运行维护人员等角色,分别完成指定任务。由于MVC框架的不同功能模块能够分离开发,又对程序设计能力、界面美工能力有不同要求,所以可以根据学生的能力特点进行协作开发,既调动个体的积极性,又能培养团队精神。原则上,每5人组成一个项目小组,组长负责协调小组成员的分工,沟通协调项目开发中出现的问题,汇总管理项目文档。教师协助建好初始工程文件,然后交给项目小组按照课程计划组织项目开发。本案例的工程包括7个文件,分别为主程序elsfk.c;elscontrol.h和elscontrol.c,是各类输入控制函数的头文件和实现文件;elsmodel.h和elsmodel.c,是各类数据处理函数的头文件和实现文件;elsview.h和elsview.c,是各类显示函数的头文件和实现文件。初始框架是完成键盘输入到控制显示的转换,约定:a为左移,d为右移,w为旋转,s为下移,按照MVC模式分别完成各部分程序编写,示例代码如下:

//elsfk.c主程序,主要是完成整个项目文件的集成。

#include

#include

void main(void)

{ while(elscontrol()); //直接调用控制模块的主控函数,完成

程序控制权的交接。

}

// elscontrol.c控制模块实现文件

//接收处理所有的输入,调用相应的数据处理和显示控制函数,实现功能分离

#include

#include

#include

int ifx; //框架提供的共用内存变量示例

int elscontrol()

{ char ch;

while(ch!='x') {

ch=getch(); //获取键盘输入

processkey(ch); //调用处理部分相应功能

if(ifx>0) showfkpos(ifx); } //调用显示部分相应功能

return ifx;

}

// elsmodel.c处理模块实现文件

//只负责数据和逻辑处理,不涉及显示和控制,实现功能分离

#include

#include

void processkey(char ch)

{ switch(ch) {

case 'a':ifx=1; break; //left

……

case 's':ifx=4; break; //rotate }

}

// elsview.c显示模块实现文件

//严格按照数据组织显示,不涉及处理和控制,实现功能分离

#include

#include

void showfkpos(int imess) {

switch(imess) { //根据消息编号,显示相应的内容

case 1: printf("Left move.\n"); break; //left

……

case 4: printf("Rotate it!\n"); break; //rotate }

}

⑶ 课程评价。分为项目评价和小组讨论。项目评价由教师统一组织,由每个项目小组分别汇报项目进展、演示项目功能,进行讲解和答辩,交流开发经验,凝聚团队荣誉感,促进学习积极性和创造性。教师根据项目小组提交的项目文档资料,对学生的综合素质进行评价,并给出问题处理方法建议,部署下一步任务安排。小组讨论由项目小组组织,根据课程任务安排完成需求分析和项目设计,并将讨论结果充实完善到项目文档。通过上述示例代码可以看出,采用MVC程序开发模式,非常方便项目功能的扩充和迭代完善,比如调整显示内容,只需修改显示模块的相关内容,而无需修改其他文件,这样就将枯燥的语法融入到了一个不断完善的项目开发过程,培养学生思考问题、解决问题能力的同时,掌握一种从事实际软件开发的程序架构模式。

3 结束语

本文提出的C语言程序设计课程方案,将MVC设计模式融入教学实践过程,为学生提供一种成熟的软件开发框架,以提高学生实际软件开发能力,实现职业技能提升。该方案通过近年来的课堂教学实践,取得了较好的效果,很多学生在毕业实习阶段就能很快融入企业开发团队,得到用人单位的高度认可,是一种适合于程序设计课程的教学方法,其也可以在其他涉及到软件开发的课程中参考使用。

参考文献(References):

[1] 张智慧.面向职业技能培养的软件开发课程改革探索[J].计

算机时代,2015.5:54-58

[2] 高爱梅.高职院校C语言项目教学改革探索与实践[J].电脑

知识与技术,2016.1:134-l35

[3] 程欣宇,张丽,王忠德.数据结构实验的三层模型[J].计算机教

育,2014.12:65-67

[4] 张治平.浅谈MVC架构在开发ASP.NET站点中的应用[J].

电子技术与软件工程,2016.5:63-63

[5] 李小遐,刘惠梅.C语言程序设计能力教程[M].北京理工大学

出版社,2011.

1.环球科技网遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.环球科技网的原创文章,请转载时务必注明文章作者和"来源:环球科技网",不尊重原创的行为环球科技网或将追究责任;3.作者投稿可能会经环球科技网编辑修改或补充。