藏汉英三语点播系统设计研究

藏汉英三语点播系统设计研究

一、系统总体设计

系统采用windows软件较经典的文档/视图结构,即将后台的数据资源和前台的UI界面分开实现,二者互相独立、相辅相成。系统运行时,动态加载后台的资源,并在前台的UI界面上进行显示或播放。利用系统自带的资源管理器可以对后台资源进行增加、删除和更新。基于文档/视图结构和系统的多语言特性,系统总体结构如图1所示,系统分为三大模块:语言模块、UI模块和资源模块。

语言模块用来对系统显示的文字进行管理。用户选择藏、汉、英三种语言之一时,语言模块设置相应的字体格式(FONT)并调用相应的字体和图片在UI模块中进行显示。UI模块用来显示软件界面和使用资源,实现与用户的交互[3],例如显示图片、播放声音和动画、响应用户的按键消息等。UI模块根据功能又分为窗口外观子模块、按钮子模块、资源显示子模块,分别用来实现相应的功能。资源模块用来管理资源。在UI模块的各子模块运行时,将相应的资源加载进内存;在UI模块的各子模块关闭时将资源释放[4]。资源模块还应包含一个独立于UI界面的资源管理器,用来将用户自定义的资源导入资源列表,或者从资源列表中删除资源。资源管理模块包括资源列表和两个子模块:系统运行时资源管理子模块和资源列表管理器子模块。

二、系统模块设计

(1)语言模块

语言模块提供UI模块在软件界面上进行文字显示的接口。主要实现两个功能:设置字体格式;显示对应语言的文字和图片。[a]设置字体格式:使用HFONT句柄和API函数库中的CreateWindowEx()可以很容易地进行字体格式的设置,设置好字体格式后便可以在窗口中正常的显示汉字和藏文。[b]显示相应的文字和图片:定义一个文字类,并定义一个此文字类的全局对象,专门用来进行软件中文字的显示,为了使软件界面更加美观,所以系统在文字的显示上采用了文字和图片结合的方法,即将一些文字做成图片的形式在界面中显示,所以此类还拥有显示图片的功能。类声明代码如下:classword{protected:enumlanguagelan;//enumlanguage{china,endlish,tibet};public:word(enumlanguagelan){this->lan=lan};voidsetLanguage(enumlanguagelan);voidshoWord(WCHAR*s);voidshoPic();voidsetFont();};其中保护成员lan用来记录当前用户选择的语言,在构造全局对象时根据当前选择的语言进行初始化,setLanguage(enumlanguagelan)函数用来动态改变lan的值[5]。接口函数有三个:shoWord(WCHAR*s)函数根据lan的值显示字符串s;shoPic()和setFont()函数根据lan的值显示图片和设置字体格式。输出文字用API函数TextOut(),显示图片使用GDI接口中的BitBlt()函数,由于这些代码的编写都比较简单,故在这里不再赘述。

(2)UI模块

UI模块用来显示资源和与用户交互[6],分为三个子模块:窗口外形子模块用来更改窗口外观并加载窗口皮肤;按钮子模块作用是显示图形按钮并响应用户按键消息;资源显示子模块的功能是根据用户需求显示资源。[a]窗口外观子模块:由于系统是给儿童使用的,所以一个漂亮的窗口外观是必须的,系统利用windows窗口显示机制和位图显示原理,使用API函数SetWindowRgn()进行窗口外形的设置。软件主窗口具有不规则形状和卡通图片背景,实现思路和部分代码如下:

首先将要裁剪窗口部分的数据存入二进制文件wnd.dat中,而后定义全局变量hRgn,使用自定义函数countWindowRgn()计算窗口轮廓,并赋值给hRgn。HRGNhRgn;//创建显示区域hRgn=countWindowRgn();最后在显示窗口前使用API函数SetWindowRgn(hRgn)改变窗口显示区域,并在消息处理[7]函数的绘图消息WM_PAINT的处理代码中加入显示卡通图片的代码(作为窗口背景)即可。[b]按钮子模块:按钮子模块主要用来显示图片按钮和响应用户按下按钮的消息[8],这部分代码的编写和普通windows程序的编写一致,这里不再赘述。[c]资源显示子模块:资源子模块用来显示资源列表中的资源。根据用户的需求,其接口具有以下功能:显示图片,显示GIF动画,播放声音,打开外部EXE文件,分别在按钮子模块的识记单词、学习歌谣、故事讲述、百科常识和益智游戏等按钮的消息响应中进行调用。显示图片:为了使图片更快、无闪烁的显示,本系统采用了双缓冲的方式进行图片的显示[9],即先将要显示的图片在内存中全部绘制好,然后再一次性在屏幕上进行输出。显示GIF动画:使用GDI+的接口函数进行动画的播放[10],应注意在使用GDI+函数前应该进行下面的处理工作:usingnamespaceGdiplus;//使用命名空间#pragmacomment(lib,"gdiplus.lib");//链接需要的lib播放声音和打开外部EXE文件:使用相应的API函数进行操作。

(3)资源模块

资源模块进行整个系统资源的管理。主要有两个功能:在系统运行时动态加载和释放资源[11];资源列表管理器,维护一个类似于音乐播放器中播放列表的资源列表[12]。第一个功能相对简单,使用相应的API函数即可完成[13],下面只论述资源管理器的编写。资源管理器使用MFC编写,并生成一个独立于系统的对话框应用程序,家长可以使用这个对话框程序对资源列表进行管理,系统根据资源列表对资源进行使用。根据软件的功能,资源列表维护以下5个配置文件:单词资源文件(word.dat)、歌谣资源文件(song.dat)、故事资源文件(stroy.dat)、百科资源文件(baike.dat)和游戏资源文件(game.dat)。这5个文件分别记录了各类资源的信息:资源路径和资源名称,它们的结构基本一致,例如word.bat的内容如下:D:\Word1\学习藏文字母D:\Word2\常用英文单词

其中一个资源的信息占据两行,第一行为资源所在目录,第二行为资源名称。在要使用的资源目录下将有一个同名文本文件,记录了此资源的信息,例如资源包D:\Word1\下的Word1.txt文档的内容如下:学习藏文字母张三11.bmp1.wav22.bmp2.wav其中第一行为资源名称,第二行为资源作者的姓名,从第三行开始分别记录此资源包中每个资源的编号和文件名,因为这是学习单词的资源,所以每个资源文件名都包括一个图片文件名和一个声音文件名。

当用户使用资源管理器进行资源导入时,程序首先打开资源配置.dat文件,将这类资源的信息显示在列表框中,然后弹出一个文件夹选择框让用户进行选择,之后在用户选择的文件夹中寻找同名.txt文件,若此.txt文件不存在,说明此文件夹不是系统可以使用的资源包,则显示错误信息并让用户重新选择;若.txt文件存在,则打开.txt文件,读取当中的资源名,存入相应的资源配置.dat文件中并同步显示在列表框中当用户在列表框中选中一个资源,并按下“删除”按钮时,则打开相应的配置文件,并找到符合此资源名的信息,将其删除,同时更新列表框中的信息。

三、系统实现

该系统是具有资源管理功能的藏汉英三语幼儿早教系统。利用资源管理器可对系统的资源清单进行管理[14],如图2所示。选择符合系统要求格式的资源,则其成功地加入系统的资源列表中,若资源不符合要求,添加时会提示格式错误。添加完成系统资源后,打开早教机系统,就会出现已经添加好的资源,此时可点击按钮播放新添加的资源。

进入系统以后,会显示一个空白的窗体,在选择需要的功能按钮后,窗体会出现本功能的内容选项条,点击选择按钮可以显示不同内容的缩略图以及本内容的基本信息,如图3所示。点击缩略图即可进入系统功能显示区,可以通过按照个人需要点击播放或者重播以及暂停按钮进行操作,并可以点击设置按钮调整系统的点击音效等内容,而“益智游戏”模块则可以智能记忆游戏数据等。添加到资源列表中的资源则可以直接显示在内容选项条的最后,使得系统操作更方便、更快捷。

四、结论

本项目的实施,将实现有鲜明的藏民族特色,活泼生动,健康益智的藏汉英三语幼儿早教点播系统;将填补在藏民族地区,没有有效的多语言学习系统的空白,能更好的实现传播和弘扬民族文化,培养幼儿综合语言表达能力这一目标。系统的资源管理功能使得可使用的教学资源在一定程度能够进行扩展,如果后续资源的制作可以有效的进行,那么本系统完全可以投入实用。(本文图略)

本文作者:曾晓莉 郭鑫 张院平 王龙业  单位:西藏大学工学院