C++课程设计电话簿管理

2024-09-16

C++课程设计电话簿管理(精选5篇)

C++课程设计电话簿管理 篇1

XXXXXXXXXXXC/C++程序设计实训

电话簿管理系统

学生姓名 ×××× 学 号 ×××× 所在学院 ×××× 专业名称 ×××× 班 级 ×××× 指导教师

XXX

XXXXXXXXXXXXXXXX XXXXXXXXXXXX

目 录

1.前言··················································································································· 3 2.设计目的··········································································································· 3 3.功能描述··········································································································· 3 4.总体设计··········································································································· 4

1、功能模块设计···························································································· 4

2、数据结构设计···························································································· 6

3、函数功能描述···························································································· 7 5.程序实现··········································································································· 7

1、源程序(略)···························································································· 7

2、运行结果···································································································· 7 6.小结··················································································································· 9

1.前言

随着科技的进步和信息产业的飞速发展,电话簿成为了现代生活中一个重要的工具。本电话簿管理系统利用计算机对通讯录进行统一管理,包括添加、修改、查询记录等功能,实现通讯录管理工作的系统化、规范化和自动化,为人们的工作和生活提供便利。本程序是利用结构数组实现此电话簿管理系统。

2.设计目的

本程序旨在训练基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。本程序中涉及结构体、数组、文件等方面的知识。通过本程序的训练,能对C语言的文件操作有一个更深刻的了解,掌握利用数组存储结构实现电话簿管理的原理,为进一步开发出高质量的信息管理系统打下坚实的基础。

3.功能描述

如图1所示,电话簿管理系统主要利用数组来实现,其数组元素是结构体类型,整个系统由如下几大功能模块组成。

电话簿管理系统输入记录模块查询记录模块更新记录模块输出记录模块从文件读入从键盘读入按姓名查询按电话查询修改记录删除记录插入记录排序记录输出至文件输出至屏幕(1)输入记录模块。输入记录模块主要完成将数据存入数组中的工作。在此电话簿管理系统中,记录可以从以文本形式存储的数据文件中读入,也可从键盘逐个输入记录。记录由与联系人有关的基本信息字段构成。当从数据文件中读入记录时,它就是在以记录为单位存储的数据文件中,将记录逐条复制到结构体类型的数组元素中。

(2)查询记录模块。查询记录模块主要完成在数组中查找满足相关条件的记录。在此电话簿管理系统中,用户可以按照联系人姓名或联系人电话号码在数组中进行查找。若找到该记录,则以表格形式打印出此记录的信息;否则,返回一个-1的值,并打印出未找到该记录的提示信息。

(3)更新记录模块。更新记录模块主要完成对记录的维护。在此电话簿管理系统中,它实现对记录的修改、删除、插入和排序操作。一般而言,系统进行了这些操作之后,需要将修改的数据存入源数据文件。

(4)输出记录模块。输出记录模块主要完成两个任务。第一,它实现对记录的存盘操作,即将数组中各元素中存储的记录信息写入数据文件中。第二,它实现将数组中存储的记 图1 电话簿管理系统功能模块 录信息以表格的形式在屏幕上打印显示出来。

4.总体设计

1、功能模块设计

(1)主控main()函数执行流程

电话簿管理系统执行主流程如图2所示。它先以可读写的方式打开文本类型的数据文件,此文件默认为“c:telephon”,若该文件不存在,则新建此数据文件。当打开文件操作成功后,从文件中一次读出一条记录,添加到新建的数组中,然后执行显示主菜单和进入主循环操作,进行按键判断。值得一提的是,文本类型文件与二进制类型文件不同,它可以使用Windows自带的记事本打开并查看到存储的文件内容。

开始以可读写的方式打开一个数据文件将此文件的内容读出,并存入一个新的结构体类型的数组中调用emnu()菜单函数进入while(1)主循环输入0~8中的一个数值,选择相应操作输入是否为0?是否判断键值,调用相应函数,完成相应功能是否已对修改进行了存盘?否调用Save()函数,进行写数据文件操作是结束

图2 主控函数执行流程图

在判断键值时,有效的输入为0-8之间的任意数值,其他输入都被视为错误按键。若输入为0(即变量select=0),则会继续判断是否在对记录进行了更新操作之后进行了存盘操作,若未存盘,则全局变量saveflag=1,系统会提示用户是否需要进行数据存盘操作,用户输入 Y或y,系统会进行存盘操作。最后,系统执行退出电话簿管理系统的操作。

若选择1,则调用Add()函数,执行增加记录操作;若选择2,则调用Disp()函数,执行将记录以表格形式打印输出至屏幕的操作;若选择3,则调用Del()函数,执行删除记录操作;若选择4,则调用Qur()函数,执行查询记录操作:若选择5,则调用Modify()函数,执行修改记录操作;若选择6,则调用lnsert()函数,执行插入记录操作;若选择7,则调用SelectSort()函数,执行按升序排序记录的操作;若选择8,则调用Save()函数,执行将记录存入磁盘中的数据文件的操作:若输入为0-8之外的值,则调用Wrong()函数,给出按键错误的提示。

(2)输入记录模块

输入记录模块主要实现将数据存入数组中。当从数据文件中读出记录时,它调用fread(&tele[count],sizeof(TELEBOOK), l,fp)文件读取函数,执行一次从文件中读取一条电话簿记录信息存入某个数组元素中的操作,并且这个操作在main()中调用执行,即在电话簿管理系统进入显示菜单界面时,该操作己经执行了。若该文件中没有数据,则系统会提示数组为空,没有任何记录可操作,此时,用户应选择1,调用Add()函数,进行记录的输入,即完成在数组中添加元素的操作。

(3)查询记录模块

查询记录模块主要实现在数组中按联系人姓名或电话查找满足条件的记录。在查询函数Qur()中,为了遵循模块化编程的原则,对在数组中进行的记录定位操作设计成了一个单独的函数int Locate(TELEBOOK temp[],int n,char findmess[],char nameorphonenum[]),参数findmess[]保存要查找的具体内容,nameorphonenum[]保存要查找的字段(值为字特串类型的name或phonenum),若找到该记录,则返回指向该记录的数组元素的下标;否则,返回一个-1的值。

(4)更新记录模块

更新记录模块主要实现了对记录的修改、删除、插入和排序操作。因为记录是以数组的结构形式存储的,所以这些操作都在数组中完成。下面分别介绍这4个功能模块。

1)修改记录

修改记录操作需要对数组中目标元素的数据域中的值进行修改,它分两步完成。第一步,输入要修改的联系人姓名,输入后调用定位函数Locate()在数组中逐个对联系人姓名字段的值进行比较,直到找到该联系人姓名的记录;第二步,若找到该记录,修改除记录编号之外的各字段的值,并将存盘标记变saveflag置1,表示已经对记录进行了修改,但还未执行存盘操作。

2)删除记录

删除记录操作完成删除指定联系人姓名或电话号码的记录,它也分两步完成。第一步,输入要修改的联系人姓名或电话号码,输入后调用定位函数Locate()在数组中逐个对联系人姓名或电话号码字段的值进行比较,直到找到该联系人姓名或电话号码的记录,返回指向该记录的数组元素下标;第二步,若找到该记录,则从该记录所在元素的后续元素起,依次向前移一个元素位置,有值的数组元素个数减1,其具体过程如图3所示,在删除了数组元素A2后,数组元素A3和A4向前移动了一个位置

A0删除A2前A0删除A2后A1A1A2A3A3A4A4

图3 数组中删除记录示意图

3)插入记录 插入记录操作完成在指定记录编号的随后位置插入新的记录。首先,它要求用户输入某个记录编号,新的记录将插入在该记录之后、然后,提示用户输入一条新的记录的信息,这些信息保存在新结构体类型的数组元素的各字段中;最后,将该元素插入在已经确认位置的记录编号之后。它的具体插入执行过程如图4所示,新元素B1准备插入至已有5个元素的数组中,插入位置为元素A2之后。这具体过程为:先调用Locate()函数找到A2在数组中的下标,从A4开始,往后移动,至A2停止移动,然后在原A3的位置插入元素B1。

插入B1A0插入B1前A0插入B1后A1A2B1A3A4A1A2A3A4

图4 数组中插入记录示意图

4)排序记录

选择排序法也属于内部排序法中的一种,它是运用字段值比较后,从欲排序的数组元素中,按指定规则选出其字段值最小的元素,并依原则交换数组元素位置后,更新欲排序的数组元素,以达到排序的目的。这里我们采用这种排序法来实现按照记录编号或联系人姓名字段的值从低到高对记录进行升序排序。对按照记录编号排序方式而言,我们将按其数值大小来排序;对按照联系人姓名排序方式而言,我们将按其姓名字符ASCII码的大小来排序。

选择排序的方法为:从欲排序的n个数组元素中,以线性查找的方式找出最小的元素和第一个元素交换,再从剩下的(n-1)个数组元素中,找出最小的元素和第二个元素交换,以此类推,直到所有元素均已排序完成。

将相邻的两个数组元素的电话簿字段的值进行比较,若左边的值小于右边的值,则将此两个元素的值进行交换;若左边的值大于等于右边的值,则此两个值的位置不变。右边的值继续和下一个值做比较,重复此动作,直到比较到最后一个值,最终实现了升序排序。选择排序法是最简单的排序法,但选择排序法所需的排序时间比其他排序法长。

(5)输出记录模块

当把记录输出至文件时,调用fwrite(&temp[i],sizeof(TELEBOOK),L,fp)函数,将数组元素temp[i ]中各字段的值,写入文件指针fp所指的文件:当把记录输出至屏幕时,调用void Disp()函数,将数组中存储的记录信息以表格的形式在屏幕上打印出来。

2、数据结构设计

本程序定义了结构体telebook,用于存放联系人的基本信息。这里仅有3 个与联系人有关的字段,读者可以按照需要扩展相关字段。

typedef struct telebook { char num[4];char name[10];char phonenum[15];char address[20];}TELEBOOK;其各字段的值的含义如下:  num[4]:保存记录编号。 name[10]:保存联系人姓名。 phonenum[15]:保存联系人的电话号码。 address[20]:保存联系人地址。

3、函数功能描述

1)printheader()函数原型:void printheader()printheader()函数用于在表格形式显示记录时,打印输出表头信息。2)printdata()函数原型:void printdata(TELEBOOK pp)printdatan()数用于以表格显示的方式,打印输出单个数组元素pp中的记录信息。3)Disp()函数原型:void Disp(TELEBOOK temp[],int n)Disp()函数用于显示temp数组中存储的n条记录,内容为telebook结构中定义的内容。其余函数功能描述省略,请同学们在自己写的时候写完整。

5.程序实现

1、源程序(略)

2、运行结果

(1)主界面

图5 主界面

当用户刚进入电话簿管理系统时,其主界面如图5所示。此时,系统己经将“c:telephon”文件打开,若文件不为空,则将数据从文件中逐条记录读出,并写入数组中。用户可选择0-8之间的数值,调用相应功能进行操作。当输入为0时,退出此管理系统。

(2)输入记录

当用户输入1并按Enter键后,即可进入数据输入界面。其输入记录过程如图6所示,这里输入了3条记录。当用户输入为0的记录编号时,它会结束输入过程,返回到主菜单界面。

(3)显示记录

当用户执行了输入记录或已经从数据文件中读取了记录之后,即可输入2并按Enter键,查看当前数组中的记录情况,如图7所示,此时表中有3条记录。

图6 输入记录

图7 显示记录

(4)删除记录

当用户输入3并按Enter键后,即可进入记录删除界面。其删除记录过程如图8所示,这里按联系人姓名删除了一条姓名为A1的记录。

图8 删除记录

(5)查找记录

当用户输入4并按Enter键后,即可进入记录查找界面。其查找记录过程如图9所示,8 用户可按姓名或电话号码进行记录查找。

图9 查找记录

(6)修改记录

当用户输入5并按Enter键后,即可进入记录修改界面。其修改记录过程如图10所示,这里修改了姓名为a2的联系电话和地址字段。

图11 修改记录

(7)插入记录

当用户输入6并按Enter键后,即可进入记录插入界面。其插入过程如图11所示,这里在记录编号为3的记录后插入了一条记录编号为5的记录。

(8)排序记录

当用户输入7并按Enter键后,即可进入记录排序界面。用户可以选择按照记录编号或联系人姓名进行排序,图12为按记录编号进行记录升序排序的结果。

(9)保存记录

当用户输入8并按Enter键后,即可进入记录保存界面。其保存结果提示信息如图13所示,这里有3条记录已经存储至磁盘数据文件c:telephon中。

6.小结

本文介绍了电话簿管理系统的设计思路及其编程实现,重点介绍了功能模块的设计原理和利用数组存储结构实现电话簿管理的过程。通过本程序的开发使我熟悉C语言下的文件和数组操作,了解管理信息系统(MIS)的开发原理,并注意利用选择排序法来实现数组元素 排序的特点。

利用本电话簿管理系统可以对通讯录进行日常维护和管理。

C++课程设计电话簿管理 篇2

“C++程序设计”教学存在的问题

重理论, 轻实践

最初沿用学科教学模式, 过多强调语言语法知识点, 知识点比较枯燥、琐碎, 学生觉得难学、不感兴趣。上机操作时, 由于基本概念和语言规则没有掌握好, 学生自己编制的程序在调试过程中会出现各种各样的错误, 他们看不懂英文错误提示, 不会排除错误, 碰到障碍容易退缩。

理论与实践脱节

以往本课程的设置往往是一周4节课, 包括2节理论课和2节实验课, 二者分开教学。教师讲两节理论课后学生有了初步印象, 但等到上实验课的时候好多知识点就忘掉了, 没有达到很好的教学效果。

重讲解轻互动

新生入学后, 各种社团组织活动繁多, 导致学生学习投入时间不足。在预习、上课、复习这三个学习环节上, 学生往往缺少预习和复习两个环节, 学习就是上课。这就难以形成良好的互动, 导致上课成了教师的讲解, 学生成了被动的接受者, 教师成了教学的主体。

忽视个体差异性

由于学院招生的多样化, 生源水平差参不齐。在教学时, 如果教师忽视学生的个体差异性, 不区别对待, 就会导致教学进度缓慢, 尤其是难以兼顾基础比较好的学生, 无法使这些“吃不饱”的学生得到快速进步。

教学方法研究

带着上述问题, 在教学过程中, 我们改进了教学方法, 注重激发学生的学习兴趣, 培养学生的程序设计能力, 使学生打下坚实的专业基础。

理实一体化教学

打破传统的“先讲理论后进行实验”的教学模式, 寻找适合高职学生的教学方法和教学模式。学院对“C++程序设计”理论课部分采用多媒体教室教学, 其他学时直接安排在理实一体化教室进行。理实一体化教学强调理论的讲授以“必需、够用”为度, 强调“实用、适度”, 采用这种教学方法能够把抽象而枯燥的理论知识科学、有效地转化到生动而有趣的实践过程中去, 在实践中加以验证, 使学生从实践中得到感性认识, 并将感性认识自觉地上升为理性认识, 进而提高学生的思维能力, 锻炼学生的动手能力, 使整个教学过程收到事半功倍的效果。比如, 学生认为难以掌握的循环语句, 如果采用一次理论一次实验课的方式来讲授, 学生上课的时候可能听不到某个知识点, 做实验的时候就会无所适从, 很被动, 学习效果大打折扣。如果布置一个联系实际的题目让学生练习, 学生在课堂上就能把该学习的内容学会了, 然后可以加大难度, 引入学生成绩输入的循环、学生成绩输出的循环等题目。在理实一体化教室里学习能有效地将课堂与实践结合起来, 让学生直接在课堂上学到日后就业所必需的程序设计能力, 变被动学习为主动参与, 从而调动学生学习的积极性与主动性, 增强学生的实践能力, 符合学生学习的规律, 也符合高职教育的规律。在课程教学中引入一体化教学, 改变传统的“理论—实验—理论”的教学方式对提高教学效果, 增强学生的实践操作技能都具有积极意义。

分层教学, 因材施教

我院计算机专业大类的生源有普通高中的、职业高中的, 也有边远地区和经济落后地区的。普通高中生源普遍没有计算机语言基础;边远地区和经济落后地区生源的基础更差一些。职业高中生源存在两极分化现象, 有的有C语言基础且基础很不错, 有的则不会写最基本的循环判断语句并有恐惧心理, 认为自己学不好计算机语言。针对学生基础差异比较大的实际情况, 结合学生的自愿选择, 我们打破原有的班级划分, 对“C++程序设计”课程进行分层教学。分层教学主要是讲授分层, 遵循由浅入深、由易到难的原则, 指导和要求学生找到“最近发展区”, 使每个层次的学生都能按时完成学习目标, 激发所有学生进一步学习和探索的欲望。但是最终目标不能分层, 就业岗位对每个从业者的要求都是平等的。因此, 我们的分层教学是在一年级第一学期实行。普通高中生源普遍学习能力很强, 不存在心理障碍, 学习进度也比较容易把握;对职业高中生源不仅要加强辅导, 更要帮助他们克服心理障碍。在一年级的第二学期对所有学生按传统方式分班进行正常教学。通过这种分层教学的方式, 把学生的需求和发展放在首位, 用不同的教学方式方法促使全体学生发展, 有效地调动了学生学习的积极性, 帮助部分学生克服了学习心理障碍, 让学生成为了学习的主人, 感受到了学习的进步, 体验到了学习的快乐。

启发式教学

在学习的过程中要注重对学生进行启发诱导, 强调学生在教育过程中的主体地位。在整个“C++程序设计”课程教学过程中, 我们都注重启发学生学习, 要求学生对一个问题至少提出三种不同的解法。比如, 在学习完数组、函数、结构体后带领学生做出“学生成绩管理系统”, 要求学生举一反三, 独立开发譬如“班级班费收支管理系统”、“个人财务小管家”等和学生生活密切相关的软件, 并能够对自己开发的软件进行分析, 提出优缺点以进一步改进。前苏联教育学家苏霍姆林斯基说“只有教师思考的大脑才能教会学生大脑的思考”, 启发式教学不是提几个问题让学生回答, 而是要精心设计能让学自己提出问题并加以思考, 如果学生没有问题则说明学生没有积极思考, 就是教学的失败。

大赛引导教学, 小赛常态化

工信部举办的蓝桥杯软件大赛, 江苏省举办的ACM大赛、计算机技能大赛, 我院计算机相关专业每年都组队积极参加。2012年, 蓝桥杯软件大赛我院有多名学生获得二等奖和优秀奖。历年的大赛题目, 都是大赛组委会进行调查、分析, 在听取行业专家对职业岗位的要求基础上充分论证而设置的。因此, 每次大赛后学院都会组织教师深入研讨试题及评分细则, 并把大赛题目分解成知识点对应到教学中, 用大赛引导教学标准。由于计算机软件大赛的项目范围广, 难度大, 学生不仅需要本专业全面的理论知识, 还需要较强的实践操作能力。在教学相长的教学原理下, 这种大赛提高了教师和学生的水平。为了提高学生学习的积极主动性, 学院每年都进行院级软件大赛, 每学年第一学期末针对新生举办ACM程序设计大赛, 每学年第二学期进行全校的ACM程序设计大赛, 目前已经连续举办了4次, 实现了大赛引导教学和小赛常态化。

网络课程平台的应用

现代大学教育越来越提倡以“学生为主体”的教学理念, 但是, 由于时间限制, 大学课堂不可能提供很多时间用于讨论和交流。网络课程则能弥补这方面的不足。首先, 所有教学资料都可以呈现在网络课程中;其次, 在网络课程的学习中, 学生是学习的主导。网络课程不受时间和空间的限制, 学生可以根据自己的兴趣在任何时间和任何地点安排自己的学习, 教师则是知识的导航者。随着网络技术的发展, 网络课程的交互性也越来越强, 网络课程上有学生的提问、有学生的作品、有往年考试题库、有历年学生获奖信息, 构建了一个很好的交流与学习氛围。即使教师不在线, 学生仍可以从以往的提问和回答中或者在线同学那里获得帮助。为开阔学生视野, 进一步提高学生的学习兴趣, 可将编程中的一些经典算法和典型应用放在网络课程中, 供学生平时学习和参考。

软件工作室

“独学而无友, 则孤陋而寡闻”, 指的是要和兴趣相投的朋友一起学习, 通过交流才能进步, 也就是要合作学习。合作学习是指学生在小组或团队中为了完成共同的目标与任务, 有明确责任分工的互助性学习。学院富有实践经验的骨干教师成立了工作室, 工作室采用项目经理负责制度, 按照公司化方式进行严格管理, 具体环节包括纳新、管理、项目化运作。纳新在第一学期中期采用招聘方式, 要求进入工作室的学生在某个方向具有浓厚兴趣或特长, 品性良好, 具有良好的沟通能力, 能吃苦。这对一年级的学生非常具有吸引力, 学生以进入工作室为荣。C++是基础课程, 无论是嵌入式开发、桌面系统开发, 还是虚拟现实开发都以此为基础, 要求学生学好这门课程。在工作室里, 品德高尚、具备丰富工程实践背景、专业业务能力强的教师对学生的思想、思维方式、行为方式以及职业素质都有重要影响。榜样的作用是无穷的, 进入工作室的学生在指导教师的带领和学长的帮助下, 在干中学, 学中干, 进步非常快, 这些学生在班级教学中又起到了良好的带头作用, 形成了良性循环。

教学方法的实施

为了将上述教学方法较好地运用到“C++程序设计”教学实践中, 应将教学内容、教学方法、课堂教学及教学反馈有机结合, 如图1所示。首先, 按照大赛引领的导向制定课程教学标准, 然后依据学生的情况安排教学内容;其次, 以教学内容为依托, 选取教学方法, 进行教学设计;然后, 将选取的教学方法灵活地运用到课堂教学实践中去;最后, 通过教学反馈及时改进和调整教学方法, 甚至调整教学内容以达到教学的目的。

这里特别要注意的一个环节就是教学反馈。有效的教学反馈应该表现出应有的适时性, 就是要根据不同教学活动及教学任务的需要, 以及学与教的具体情况, 在适当的时候提供恰当的反馈信息。由于教学课时的限制, 为了追求教学进度, 有些教师不注意学生的反映, 进入教室以后一讲到底, 这种情况要绝对避免。教师在授课过程中不能只顾自己讲得痛快不顾学生的感受, 而应该具有强烈的反馈意识, 一旦发现学生的注意力不集中、听课吃力、笔记记不下来, 对教师的提问感到不知所措, 就要及时调整教学方法, 引导学生积极参与进来。没有反馈的教学是失败的教学。如今网络资源非常丰富, 网络课程中的学习资料应有尽有, 教师要把注意力放在引导学生的学习兴趣上, 让学生由被动变为主动, 让“被动学”变成“我愿学”。教学中的信息反馈实质上是信息双向传递的过程, 通过这样的过程, 教师可以发现教学中的得与失, 并以反馈信息为基础, 及时调整教学计划, 调控教学程序, 改变教学方法, 控制教学的进度, 从而更为有效地调控教学过程, 朝着教学目标推进, 最终实现教学质量的提高。

通过将理实一体化教学、大赛引领小赛常态、分层教学、启发式教学、网络课程、软件工作室公司化管理等多种教学方法应用到我院连续三届学生当中, 已经取得了很好的教学效果, 学生的整体水平从他们的作品中就可以体现出来。基本在“C++程序设计”这门课上到一半的时候, 已经有三分之一的学生上实验课时不需要教师给程序代码了, 自己可以独立编写程序代码, 并有自己的思路, 编写的程序代码也非常简洁。充足的自信心对学生后续课程的学习是非常必要的。今后我们将继续在教学方法上进行探索, 以期取得更好的教学效果。

参考文献

[1]湛永松.《C++语言程序设计》课程教学改革探讨[J].科技资讯, 2009 (31) :208.

[2]包雅伟.儒家思想与高校辅导员工作创新[J].江苏高教, 2012 (6) :143-144.

[3]吴斌.基于工作室平台的高职学生职业素质培养[J].职教论坛, 2006 (3) :44-45.

[4]赵欣.计算机网络课程教学方法研究[J].大连大学学报, 2012 (12) :149-152.

[5]霍吉.网络课程的利弊与网络课程的建设[J].价值工程, 2010 (8) :153.

C++程序设计课程教学探讨 篇3

关键词:C++程序设计教学方法教学内容教学手段

目前面向对象程序设计和分析方法是当前软件开发应用最广的方法,C++程序设计作为面向对象程序设计的具体的实现语言,其重要性可想而知。在目前计算机专业的高校毕业生在求职过程中,很多单位以C++作为一道初步的考核门槛。因此,C++程序设计的教学直接关系着高校计算机专业学生以后的就业竞争力,提高C++程序设计的教学效果对提高学生的就业能力作用可谓非常大。本文从教学方法、教学内容和教学手段这三方面有针对性的提出了改进思路。

1.教学方法的选取要和课程特点相结合

目前,高校计算机专业C++程序设计这门课程的开设方法主要有两种,第一种是先开设一个学期的C语言程序设计,再在下一学期开设C++面向对象的程序设计;第二种方法是直接开设C++程序设计这门课。 两种方法各有优缺点,第一种方法采取循序渐进的方法,学生在学习C++时相对比较轻松,因为C++中毕竟要用到C语言中的基本语法,而他们事先已经学过C语言程序设计。但缺点是C++程序设计和C语言程序设计主张的思想不同,C语言用的结构化的程序设计思想,而C++采用的是面向对象的程序设计思想[1],这样会导致学生以以前学习C语言的方法来学习C++程序设计;第二种方法可以让学生一开始就接受面向对象的程序设计思想,但缺点是学生入门比较难。

梧州学院计算机专业C++程序设计这门课程是排在大二的第一学期,也就是在刚学完C语言程序设计之后,这样有一个优点是可以使学生尽快的利用已学习的C语言基础来学习C++,因为C++程序设计中必须用到相关的C语言的基本语法知识,但缺点是会导致学生以以前学习C语言的方法来学习C++程序设计,因此,必须要让学生的思维从C语言学习中过渡到C++学习中来。荐于这样,在教学过程中可以采用这种方法:首先在正式讲解C++中的类之前,要求学生先利用以前学习过的C语言来编写一个较为复杂的程序,然后在在以后讲解C++的内容时,就以这个较为复杂的程序为例,以面向对象的思想对比以前用C语言编写的程序,从而可以使学生深入理解面向对象的程序设计方法比结构化程序设计方法的优越性,这样更能让学生理解到面向对象的程序设计思想的优点。

2.教学内容的组织要合理

C++程序设计课程要求学生掌握的是面向对象的程序设计思想和方法[2],对算法没有很高的要求,因此教学内容的组织也和其它程序设计语言有所区别。下面分课堂教学[3]和实验课教学两方面来研究一下。

2.1课堂教学方面

首先,要告诉学生C++程序设计这门课程学习的目标和要求。本课程主要要是讲解面向对象程序设计的三种特性,即封装性、继承性和多态性,要求学生在理解这三种特性的基础上能对其进行灵活运用,并且最终能运用面向对象的程序设计的思想和方法来分析问题和解决问题。因此在教学过程中,首先是要告诉学生这门课程学习的目标和要求是对面向对象程序设计的思想,而对算法没有什么要求。这一点针对梧州学院计算机专业的学生很重要,因为根据以前的教学经验了解到,梧州学院的在校生大多来自广西区,很多学生在高中时根本没有接触过计算机,逻辑分析能力比较差,因此很多学生对所学的第一门程序设计语言——C语言都还不是很熟悉,对C语言存在着心理阴影,因此首先从告诉他们学习C++程序设计对具体的逻辑分析要求不高,以解除学生的压力,只有这样才能在以后的教学过程中逐步激发学生的学习积极性。

另一方面,在C++程序设计课程教学过程中举例要有代表性和针对性。正是因为C++程序设计对具体的算法要求不高,因此对相关内容的讲解不可能用到那些短小而有趣的例程来讲解,这就给激发学生的兴趣带来了不利影响。实际上,几乎所有的C++程序设计的教材在讲解相关知识点时都是举一些简单而又很枯燥的例子,比如在讲封装性时,很多教材就直接以桌子、椅子等对象来说明怎样达到封装的效果,但根本体现不了封装带来的好处。针对这一特点,我总结的方法是首先在正式讲解C++程序设计前,让学生运用C语言编写一个较为复杂的程序,比如前面讲到的“学生成绩管理系统”,然后在讲解后面的封装时告诉学生哪些应该封装成一个类,应该怎样封装,封装之后有什么好处,再和以前的程序进行比较就可以让学生很直接就体会到面向对象的程序设计方法的优点。

2.2实验教学方面

C++程序设计作为一门程序设计语言,上机实验是必不可少的,而且是很重要的一个教学环节。实验课的目的是让学生把课堂上学习的C++程序设计方法具体的运用到实际的程序中,以加强学生对面向对象程序设计思想和方法的进一步的体会[4]。

首先,在C++程序设计实验课教学中,要改变传统的TC集成环境,而要用更加实用和方便的Visual C++开发环境。和C语言程序设计不同,C++程序设计不仅是要学习基本的语法,更重要的是学习面向对象的程序设计的思想和方法,比C语言程序设计有着更高的实用性,并且Visual C++开发环境对C++语法有着更好的支持,对多文件结构的程序更加容易组织,可以直接在窗口界面下直接操作,调式功能比TC集成环境操作更加简单,而功能更加强大;另外,Visual C++作为一个优秀的开发环境,学生越早接触越能够激起学生的编程兴趣,对学生以后掌握Visual C++开发环境有很大好处。

其次,在实验内容方面体现多层次、阶段性的特点。针对梧州学院计算机专业的学生,其中有一部分相对基础比较差,有一部分相对比较好,因此要做到因材施教,在实验内容方面就要有一个层次要求。实验内容分成基本部分和提高部分,基础比较差的只要完成基本部分,基础相对好的可以让他们完成提高部分;阶段性主要是和C++程序设计这门课程特点相关的,可以在实验课时要求学生完成一个比较复杂的程序作为课程设计,在学习到相关知识点时就完成相关的设计,到学期期末时,所有知识点学完了就正好可以完成整个设计,这样的好处是可以使学生在学习中直接运用所学到的方法开发具体的程序,使学生更快更牢的掌握对面向对象的程序设计方法。

3.教学手段采用多媒体技术和传统的黑板板书相结合的方式

在教学手段方面,主要采用多媒体技术和传统的黑板板书施教。现代教学手段充分利用计算机网络和多媒体技术,突出信息的形象性及感染力,使计算机具有综合处理文字、声音、图形、图像和视频信息的能力。多媒体教学使能把教学内容直观地显示出来,提高学生的注意力和学习兴趣,同时能加大课堂教学的信息量。另一方面,使用多媒体教学课件时,可以教师可以提前把教学资源按照自己熟悉的思路整理好,使教学内容规范有序。但使用多媒体教学由于没有板书的过程,学生在听课时可能没有太多的时间去思考,在上课过程中教师和学生的互动性也不好;而传统的黑板加粉笔法正好相反,其优点是注重抽象说理,学生可以感受到教师的思维过程,缺点是以“听”或“视”的单一通道方式传送信息,信息量少,进度较慢。因此C++程序设计这门课程建议采用多媒体技术和传统的黑板板书相结合的方式。目前,梧州学院教学综合楼大多数教室都配备了多媒体设备,在硬件上已经具备了多媒体教学的条件,另外,C++程序设计这门课程在教学过程中有很多内容需要即时演示给学生,主要采取多媒体教学为主,传统教学为辅的方式。

4.结束语

每门课程都有自身的特点,根据课程自身特点和各学校学生特点而采取相应的教学方法和手段,以及对课程教学内容的组织,是提高课程教学效果的一个较好的方法。

参考文献:

[1] 刘玉英.《C++语言程序设计》教学中的几个关键问题[J].浙江万里学院学报.2004,17(2):169

[2] 谭浩强.C++面向对象程序设计[M].北京:清华大学出版社,2006

[3] 陈鸣,胡谷雨,周雷,等.计算机网络课程教学的思考与创新[J].高等教育研究学报,2008(2):66

[4] 李文军. 计算机专业实验教学改革的实践与探讨[J]. 实验室研究与探索,2007( 12) :45-47

C++课程设计电话簿管理 篇4

课程评估是高校教学管理工作的一项基本内容, 是保障教学质量、促进课程建设水平提高的重要手段。传统的课程评估采用手工操作方式, 评估人员根据课程评估方案逐项评估和计算, 费时费力, 还很容易出现计算错误。因此, 迫切需要开发课程评估支持系统来克服手工评估的缺点, 提高评估过程的效率、可靠性、适应性和自动化水平。

由于课程评估涉及的数据量大, 数据之间的关系复杂, 而且评估方案容易变化, 因此开发课程评估支持系统的难点在于提供系统灵活性、适应性和可维护性的软件模块结构和数据结构设计。我们在多个实际课程评估方案的分析、抽象和提炼的基础上, 对课程评估支持系统的软件体系结构、功能和数据结构进行了设计, 用Visual C++6.0实现了一个课程评估支持系统, 对系统的设计难点和实现技术进行了探讨。

2 系统设计

2.1 系统体系结构设计

课程评估支持系统是以课程建设数据管理为基础, 以课程评估模型为核心的集成化信息系统。整个系统由数据管理子系统、课程评估子系统, 维护子系统三部分组成。各子系统在信息共享基础上保持相对独立, 易于系统的扩充与维护。系统的体系结构如图1所示:

2.2 系统用户设计

系统有管理人员、评估专家和课程组教师三种用户。管理人员负责管理系统用户及其使用权限;评估专家负责查看已经正式提交的参评课程的基本信息, 以及选择评估方案对其进行评估和计算;课程组教师负责建立和管理本地的参评课程的基本信息、选择评估方案对其进行自评, 以及正式提交课程评估资料。

2.3 功能设计

系统功能逻辑上可分为课程建设数据管理、课程评估、系统维护和帮助四个部分。课程建设数据管理主要是对课程建设的原始资料、活动资料和其它资料提供增、删、改、查以及课程评估申报书等数据打印功能;课程评估完成对评估模型的定义和维护、对定性末级指标的原始资料提供录入编辑功能, 其它指标的评估资料根据评估模型、公式自动计算, 自动打印评估表和统计结果, 另外向用户提供评估资料的查询功能;系统维护主要是提供用户登录, 口令管理, 操作权限控制等用户管理功能, 对资料录入选项提供维护和系统数据的导入导出功能。

2.4 系统概念数据结构设计

通过对课程建设与评估信息的分析, 得到用UML类图表示的概念数据模型。系统运行时需要使用本地和远程两个数据库。每个客户端程序分别使用一个本地数据库, 用于存储本地的参评课程的信息。所有客户端程序共享同一个远程数据库, 用于存储从各个本地数据库正式提交上来的参评课程信息。两个数据库的结构基本一致, 远程数据库仅比本地数据库多了一个用于存储用户信息和权限的数据表。

3 软件与数据结构实现

3.1 模块结构实现

系统功能通过总控、数据输入、评估模型管理、评估计算、申报书和评分表输出五个模块和维护子系统来实现。总控模块提供主界面和显示评估模型表格的功能;数据输入模块接收用户输入的参评课程的基本信息, 将其存储入本地数据库;评估模型管理模块实现建立、编辑评估模型, 并与磁盘文件进行交换的任务;评估计算模块根据数据库中参评课程的基本信息和用户选择的评估模型, 计算得出参评课程的各项得分;输出模块根据要求显示和打印课程评估申报书和评分表;维护子系统对系统用户及其使用权限进行控制和管理。

总控模块是基于单文档的MFC应用程序, 其他模块和维护子系统实现为一个或多个MFC常规型动态链接库。各个动态链接库相互独立, 仅通过接口函数进行通信。

3.2 评估模型的数据结构

评估模型是由一级指标、二级指标和变量组成三层树形结构。一级指标的分值是若干个二级指标分值的加权和, 总分的分值是若干个一级指标分值的加权和。计算公式如下:

式中i2表示二级指标的任意项;n2表示二级指标的项数;di2表示二级指标的评分值;wi2表示二级指标的权值;pi1表示一级指标的评分值;n1表示一级指标的项数;i1表示一级指标的任意项;wi1表示一级指标的权重;Pi1表示一级指标的评分;P表示总分。

每个一级指标、二级指标或变量用一个Scheme Node结构变量来表示, 所有的Scheme Node结构变量组成的链表就可以存储整个评估体系。其中, 变量的数值来自查询数据库得到的统计结果或者运行时由用户输入。二级指标的分值由自若干个变量组成的代数表达式计算得出。

3.3 数据库结构的建立

从系统E-R图出发, 应用概念数据模型到关系数据库模式的映射规则可以很容易地导出课程评估支持系统的关系数据库模式, 得到19个关系数据表, 以及一个用于存储各项评估的得分的关系表。远程数据库还要再加上一个用于存储所有用户的信息和权限的数据表。使用SQL建表语句创建这些表结构。

4 模块实现

4.1 总控模块

总控模块实现为Evaluation.exe可执行文件。主要功能是提供软件主界面并显示评估模型。总控模块在启动某项功能时加载相应的动态链接库, 执行结束后立即卸载相应的动态链接库。在此过程中需要用到三个Windows API函数:

●加载动态连接库HMODULE Load Library (LPCTSTR lpFile Name) 。其中lp File Name是动态连接库文件的路径, 函数返回值是动态连接库的句柄。

●获取输出函数的地址FARPROC Get Proc Address (HMODULE h Module, LPCSTR lp Proc Name) 。其中h Module是动态连接库的句柄, lp Proc Name是函数名称, 函数返回值是函数的地址。

●卸载动态连接库BOOL Free Library (HMODULE h Module) 。其中h Module是动态连接库的句柄。

为了在主程序的文档窗口中显示评估模型, 需要为主程序的视图类CEvaluation View添加一个成员函数CEvaluationView::Draw Scheme Table (CDC*p DC) , 并在CEvaluation View::OnDraw (CDC*p DC) 中调用。

4.2 数据输入模块

输入模块由New Course.dll实现。主要功能是接收用户输入的参评课程的基本信息, 将其存储入本地数据库。

输入模块是根据Course类和数据库结构来设计实现的。系统使用一个Course类在内存中存放用户输入的信息, 然后再把内存中的整个Course类对象存入数据库。因而Course类与数据库结构是相对应的。在设计时, 数据库中的每一张表都有一个输入框与之对应, 用于添加和修改评估信息。

数据添加时, 是把各项评估信息暂时存入内存中, 而并非直接存入数据库, 当所有的相关信息都添加好后再一起全部存入数据库。这样做使得程序代码更为紧凑, 方便程序的调试与维护。修改与删除也是把更新后的信息先暂存在内存, 等全部信息输入完毕、各项信息确认后才写入数据库。

4.3 评估模型管理模块

评估模型管理模块用Scheme Mgr.dll实现。主要功能是建立、编辑评估模型, 并与磁盘文件进行交换。该模块提供评估模型的定义与维护接口, 包括评估指标体系、末级定性指标的评价等级、末级定量指标的计算公式、以及评估系统变量的定义与维护。当系统给出的变量不能满足计算公式定义要求时, 用户可以增加变量。对于评估数据库的结构和末级定性指标原始评估资料的录入编辑屏幕, 采用了基于评估模型的动态生成技术。该模块的实现是提高系统的适应性、灵活性和可维护性的关键, 一方面用于应对评估模型经常有可能发生变化的情况, 另一方面使系统能够同时支持多个不同的评估模型。

下面给出维护评估模型的实现过程和技术:

(1) 导入评估模型

按照用户要求选择并打开用于存储评估指标体系的、后缀名为eva的文件, 读入文件的每一个数据单元, 在内存中建立表示评估指标体系的链表。

●选择文件时使用CFile Dialog类

用m_CFile Dialog (TRUE, NULL, NULL, OFN_HIDEREADON-LY, "评估模型 (*.eva) |*.eva||") 定义CFile Dialog对象。用m_CFile Dialog.Get File Name () 获取已经被选定的文件。

●打开、读取文件时使用CFile类

打开文件时使用CFile类的成员函数;读取读入文件数据单元时使用CFile类的成员函数。

●删除原链表

对链表的每一个结点, 把结点脱离链表, 并释放该结点的内存空间。

●建立新链表

对文件的每个数据单元, 申请一个链表新结点, 从文件中读取一个数据单元并存储到新结点中, 并把新结点接入链表。

(2) 保存评估模型

对链表的每一个结点, 把该结点的数据作为一个数据单元写入文件。

4.4 评估计算模块

评估计算模块实现为Evaluate.dll。主要功能是根据课程建设数据库中的基本信息和用户选择的评估模型, 计算得出参评课程各项评估指标的得分。其中末级定量指标的评估值根据评估模型库中定义的计算公式和课程建设数据库内容自动计算, 各级综合指标评估值根据末级指标评估值和模型库中的评估指标体系自动计算。

计算变量时首先根据当前用户的类别判断连接远程数据库还是本地数据库, 然后遍历单链表, 把所有需要从数据库中统计得到值的变量找出来, 并执行计算此变量的SQL语句。

二级指标的得分值根据相应的代数表达式进行计算。先把一个代数表达式用算符优先算法转换成一个二叉树, 再用一个递归算法先序遍历这个二叉树, 求出根结点的值, 这个值就是代数表达式的求值结果。

计算一级指标的方法是遍历单链表, 找出一级指标的所有子结点 (相应的二级指标) 的值及其权重, 然后计算加权和。

计算总分的算法跟计算一级指标的算法相类似。为方便处理, 我们把一级指标的父结点名称设为“-1”, 而二级指标的父结点名称设为其对应的一级指标的名称。

4.5 申报书输出模块

输出模块实现为Show Courses.dll。它根据要求显示和打印课程评估申报书和评分表。

4.5.1 申报书输出

申报书输出处理的过程是读取并显示数据库中参评课程的基本信息, 并输出可供打印的申报书表格, 同时提交参评课程的基本信息, 把本地数据库中指定课程的基本信息传送到远程数据库。

把本地数据库中指定课程的所有信息全部传送到远程数据库, 需要重点解决关系主码值的冲突问题。存储在本地数据库中课程的所有信息都在本地数据库中进行统一编号, 但由于有多个客户端程序, 每个客户端程序都有一个本地数据库, 所有的客户端程序共享一个远程数据库, 因而无法保证课程信息提交到远程数据库后还能保持编号的唯一性。另外由于每个关系的主码都被其他关系引用为外码, 在修改主码值的同时还要修改其它关系相应的外码的取值。为此, 定义一个类Course, 其对象用于接收从本地数据库读出来的信息, 再根据远程数据库的当前状态, 对其中的主码和外码的值进行修改, 再把所有信息写入远程数据库。Course类的定义包括两个部分:第一部分与数据库中Course关系的各个字段一一对应。记录课程的基本信息;第二部分是21个指针, 每个指针指向一个以结构变量为结点的链表, 其中每个链表记录与该课程相关的一类信息, 比如属于该课程的教师的信息。每个结构的成员 (指针成员除外) 与数据库中相应关系中的字段一一对应。

4.5.2 评分表输出

评分表输出处理的过程是读取并显示数据库中参评课程的得分信息, 并输出可供打印的评分表格。

使用html格式以表格形式显示评分结果。优点在于可以借助html标记的丰富界面控制元素灵活地设计表格的版面。具体做法是先用网页制作工具设计一张空白的表格, 在需要填写数据的地方预置各种自定义特殊符号 (比如@等不属于html标记符号) , 用于程序在输出表格时将指定内容定位输出到指定位置。

4.7 维护子系统

用Login.dll、User Mgr.dll、Chg Pwd.dll三个模块实现维护子系统的安全性控制子集, 完成对系统用户及其使用权限的控制和管理。

(1) Login.dll模块在用户请求登录评估系统时, 连接数据库服务器以确认用户的身份和类别并记录相关信息。该功能向所有用户提供。

在连接数据库服务器之前, 对用户所输入的数据库服务器连接参数和评估系统登录参数进行严格检查, 检查内容包括:

●所有字符是否都在合法字符集以内, 数据库服务器IP地址的合法字符集包括阿拉伯数字和小数点;其他参数的合法字符集包括大小写英文字母、阿拉伯数字和下划线。

●不能以下划线作为字符串的开始或结束字符;

●长度限制:数据库服务器IP地址为7-15个字符, 数据库服务器登录账号和评估系统用户名为1-15个字符, 数据库服务器登录密码和评估系统登录密码为0-15个字符;

●数据库服务器IP地址是否符合IP地址的格式。

(2) User Mgr.dll模块管理评估系统的用户信息, 包括添加用户、删除用户、更改用户类别、修改用户密码。该功能仅向“系统管理员”用户提供。

(3) Chg Pwd.dll模块提供修改用户密码的功能。该功能向所有用户提供。

5 结束语

系统采用模块化技术来设计软件结构, 采用UML类图设计数据库结构, 使用Visual C++6.0来开发系统的全部模块, 使用ADO技术访问数据库, 模块之间使用动态链接库技术进行连接。模块化的设计使每个模块都具有相对独立、完整的界面和功能, 可独立进行编译, 便于软件开发过程中的分工和软件的维护升级, 包括功能的增减、错误的修正。该系统能支持优秀课程、重点课程等多个不同的评估方案, 并允许用户自定义评估模型, 实现了课程评估过程支持的半自动化。

摘要:课程评估支持系统是用Visual C++6.0实现的一个以课程建设数据管理为基础, 以课程评估模型为核心的集成化信息系统。该系统采用模块化设计, 模块间使用动态链接库技术进行连接, 使系统非常容易扩充和维护。实现的评估模型管理功能使系统能够同时支持多个用户定义的评估模型, 并应对评估指标体系和计算公式可能发生的变化, 具有一定的适应性和灵活性。

C++课程设计电话簿管理 篇5

关键词:程序设计;多层次教学;开放式学习

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2014)49-0187-02

作为培养人才的高等院校,计算机教育已经成为大学生的基本素质教育。《C++程序设计》是继《大学计算机基础》这门公共基础课之后的又一门理工科专业必修的公共计算机基础课程。《C++程序设计》是一门实践性很强的课程,理论教学和实验教学一直是《C++程序设计》教学中的两个主要环节,编程实验也是学习C++程序设计过程中培养计算机应用能力和计算思维的一种重要手段。

一、分层次教学概述

《C++程序设计》的分层次教学依据学生的计算机应用基础和课程内容的难易程度分为两个方面,也就是说将学生按照其计算机应用水平分为高、中、低三个层次;通识也将课程的内容划分为难、中、易三个层次。教学过程中对计算机应用水平高的学生高要求,力求编写写出高效率的C++程序代码,而基础稍弱的学生则要求其掌握基本语法,通过模仿能够写出完整、准确无误的C++程序代码,详细要求叙述如下。

1.计算机应用水平高的学生:不仅要熟练掌握《C++程序设计》课程的难点和重点,还要求学生独自思考,改进程序代码,编写出高效率的C++程序。

2.计算机应用水平中等的学生:要求完全掌握课程内容,能按要求独立写出正确的C++程序代码,了解C++程序在实践中的应用。

3.计算机应用水平较弱的学生:要求能掌握C++程序中的基础知识,能看懂例题,并模仿例题写出正确的C++程序代码。

另外,学生的自主学习能力也各不相同,每个层次内的学生在学习一段时间后,也会表现出较大的不同。因此,在《C++程序设计》的教学过程中还要按照学习阶段进行动态调整,依据是学生对本阶段所学知识的理解和掌握程度。

二、分层次《C++程序设计》课程教学的实施

1.分层次教学的划分原则。分层次教学的难点是不同层次的设定和各个层次内的分类教学。首先,将学生依据的计算机应用能力进行分组;然后,将《C++程序设计》的内容按难易程度分类,对不同层次的学生的要求也各不相同,相对较为容易的知识点要求所有的同学都要掌握。

(1)学生的分组原则。学生的分组是实施分层次教学的第一步,目的是便于对学生因材施教。分组的方法是课前调查和摸底测试。课前调查内容包括学生中小学是否学过计算机程序设计、学生对程序设计思想的理解和学生利用计算机做些什么等,而摸底测试则想了解学生的计算机应用水平。通过对学生的摸底测试和课前调查,将学生按计算机应用水平大体上分为高、中和低三组。随着课程学习的进行,分组的情况也可能会发生一些变化,因为一些学生对《C++程序设计》课程非常有兴趣,通过努力,能够在短时间内迅速提高自己的计算机程序设计能力。因此,必须及时地调整分组和相应的教学方式。

(2)教学内容的分类原则。《C++程序设计》分层次教学的教学内容根据课程的教学大纲和教学目标,将全部的教学内容分为容易、适中和难三个层次。其中容易和适中部分的知识点要求全部学生掌握,重点练习程序设计基本知识和C++语言的入门知识。经过学习,学生可以具备基本的程序设计能力,独立编写具有初等难度、几十行的程序,并且能够较顺利地完成程序调试与测试。

2.分层次教学的组织和实施。在《C++程序设计》的教学中,我们将网络自学与传统教学结合在一起。其中,在课堂面授时,重点讲语法、语义及编程的要点,教学内容覆盖全体学生,教学目标是使学生掌握C++编程的基础知识;而网络自学则是构建了《C++程序设计》的课外教学系统,重点关注学生课外自主学习,使学生能在任何时间和任何地点学习。

《C++程序设计》的课外教学系统分为知识点学习模块、基础实验模块、提高实验模块、竞赛拓展模块、在线考试模块和教师管理模块。

知识点学习模块包含了C++语言中的选择和循环结构、函数、类设计基础等编程方法与技巧,为学生提供C++课程知识点的自学功能。

基础实验模块为学生提供各种基础编程实验项目,要求所有的学生独立完成后,再在线提交程序清单和实验数据。

提高实验模块为学生提供各种难度中等的编程实验项目,要求分组在中等以上的所有的学生独立完成后,再在线提交程序清单和实验数据。

竞赛拓展实验模块为学生提供各种ACM编程实验项目,要求分组在高级以上的所有的学生独立完成后,再在线提交程序清单和实验数据。

在线考试模块用于考核学生的实际编程水平,包括程序编码、调试、运行和测试,并根据考试的结果调整分组。

教师管理模块供上传和编辑学习资料、整理实验项目、整理和组织考试题目、查看学生实验结果和考试成绩等。

通过这个教学系统,教师能够自主安排学生的实验,而学生也能根据自己的实际情况选择完成不同层次的实验,这样就实现了分成次教学。

系统构架如图1所示。

3.学生学习效果的评价方法。我们对2012级能源学院采用分层次教学和相应的过程性考试。C++课程的综合成绩由上机练习成绩、期中考试成绩、章节测评成绩和期末考试成绩组成,其中上机练习成绩占总成绩的比例30%,期中考试成绩占总成绩的比例为20%,章节测评成绩占总成绩的比例为20%,期末考试成绩占总成绩的比例为30%。上机练习是学生上机实验写的程序,提交系统后系统可以自动批改并给出成绩;期中考试按学校要求组织闭卷考试;每一章教学完成以后,由任课教师组织一次阶段性在线考试,取全部阶段性考核成绩的平均值作为章节测评成绩:期末考试按照学校要求组织闭卷考试。

每个阶段考试之后,教师根据成绩动态调整分组,更改教学目标。让每位同学知道自己的学习情况,鼓励学生的学习积极性。教师则要求关注落后的学生,力争让他们掌握基本的程序设计知识。

三、分层次教学效果和分析

我们对2012级能源学院采用分层次教学和相应的过程性考试,并将他们的成绩与2011级的成绩进行对比,结果见图2。

对比结果表明,通过分层次教学和多种形式的分阶段测试,总成绩分布合理。并且,2012级比2011级学生《C++程序设计》课程成绩,高分数段人数比2011级有明显的增加,不及格的人数比2011级有明显的减少。教学实践表明,分层次教学应用在《C++程序设计》课程中,能够充分调动各层次学生的学习积极性与主动性,同时有助于培养学生的实践编程能力,能够有效地提高《C++程序设计》课程的教学质量和教学效果。

参考文献:

[1]范春林,张大均.学习动机研究的特点、问题及走向[J].教育研究,2007,(7):71-77.

上一篇:可恶的同学作文下一篇:教务主任及综合办主任职责