2021-4-9 | 電子設(shè)計(jì)論文
一、系統(tǒng)總體設(shè)計(jì)
系統(tǒng)采用windows軟件較經(jīng)典的文檔/視圖結(jié)構(gòu),即將后臺(tái)的數(shù)據(jù)資源和前臺(tái)的UI界面分開實(shí)現(xiàn),二者互相獨(dú)立、相輔相成。系統(tǒng)運(yùn)行時(shí),動(dòng)態(tài)加載后臺(tái)的資源,并在前臺(tái)的UI界面上進(jìn)行顯示或播放。利用系統(tǒng)自帶的資源管理器可以對(duì)后臺(tái)資源進(jìn)行增加、刪除和更新。基于文檔/視圖結(jié)構(gòu)和系統(tǒng)的多語(yǔ)言特性,系統(tǒng)總體結(jié)構(gòu)如圖1所示,系統(tǒng)分為三大模塊:語(yǔ)言模塊、UI模塊和資源模塊。
語(yǔ)言模塊用來(lái)對(duì)系統(tǒng)顯示的文字進(jìn)行管理。用戶選擇藏、漢、英三種語(yǔ)言之一時(shí),語(yǔ)言模塊設(shè)置相應(yīng)的字體格式(FONT)并調(diào)用相應(yīng)的字體和圖片在UI模塊中進(jìn)行顯示。UI模塊用來(lái)顯示軟件界面和使用資源,實(shí)現(xiàn)與用戶的交互[3],例如顯示圖片、播放聲音和動(dòng)畫、響應(yīng)用戶的按鍵消息等。UI模塊根據(jù)功能又分為窗口外觀子模塊、按鈕子模塊、資源顯示子模塊,分別用來(lái)實(shí)現(xiàn)相應(yīng)的功能。資源模塊用來(lái)管理資源。在UI模塊的各子模塊運(yùn)行時(shí),將相應(yīng)的資源加載進(jìn)內(nèi)存;在UI模塊的各子模塊關(guān)閉時(shí)將資源釋放[4]。資源模塊還應(yīng)包含一個(gè)獨(dú)立于UI界面的資源管理器,用來(lái)將用戶自定義的資源導(dǎo)入資源列表,或者從資源列表中刪除資源。資源管理模塊包括資源列表和兩個(gè)子模塊:系統(tǒng)運(yùn)行時(shí)資源管理子模塊和資源列表管理器子模塊。
二、系統(tǒng)模塊設(shè)計(jì)
(1)語(yǔ)言模塊
語(yǔ)言模塊提供UI模塊在軟件界面上進(jìn)行文字顯示的接口。主要實(shí)現(xiàn)兩個(gè)功能:設(shè)置字體格式;顯示對(duì)應(yīng)語(yǔ)言的文字和圖片。[a]設(shè)置字體格式:使用HFONT句柄和API函數(shù)庫(kù)中的CreateWindowEx()可以很容易地進(jìn)行字體格式的設(shè)置,設(shè)置好字體格式后便可以在窗口中正常的顯示漢字和藏文。[b]顯示相應(yīng)的文字和圖片:定義一個(gè)文字類,并定義一個(gè)此文字類的全局對(duì)象,專門用來(lái)進(jìn)行軟件中文字的顯示,為了使軟件界面更加美觀,所以系統(tǒng)在文字的顯示上采用了文字和圖片結(jié)合的方法,即將一些文字做成圖片的形式在界面中顯示,所以此類還擁有顯示圖片的功能。類聲明代碼如下:classword{protected:enumlanguagelan;//enumlanguage{china,endlish,tibet};public:word(enumlanguagelan){this->lan=lan};voidsetLanguage(enumlanguagelan);voidshoWord(WCHAR*s);voidshoPic();voidsetFont();};其中保護(hù)成員lan用來(lái)記錄當(dāng)前用戶選擇的語(yǔ)言,在構(gòu)造全局對(duì)象時(shí)根據(jù)當(dāng)前選擇的語(yǔ)言進(jìn)行初始化,setLanguage(enumlanguagelan)函數(shù)用來(lái)動(dòng)態(tài)改變lan的值[5]。接口函數(shù)有三個(gè):shoWord(WCHAR*s)函數(shù)根據(jù)lan的值顯示字符串s;shoPic()和setFont()函數(shù)根據(jù)lan的值顯示圖片和設(shè)置字體格式。輸出文字用API函數(shù)TextOut(),顯示圖片使用GDI接口中的BitBlt()函數(shù),由于這些代碼的編寫都比較簡(jiǎn)單,故在這里不再贅述。
(2)UI模塊
UI模塊用來(lái)顯示資源和與用戶交互[6],分為三個(gè)子模塊:窗口外形子模塊用來(lái)更改窗口外觀并加載窗口皮膚;按鈕子模塊作用是顯示圖形按鈕并響應(yīng)用戶按鍵消息;資源顯示子模塊的功能是根據(jù)用戶需求顯示資源。[a]窗口外觀子模塊:由于系統(tǒng)是給兒童使用的,所以一個(gè)漂亮的窗口外觀是必須的,系統(tǒng)利用windows窗口顯示機(jī)制和位圖顯示原理,使用API函數(shù)SetWindowRgn()進(jìn)行窗口外形的設(shè)置。軟件主窗口具有不規(guī)則形狀和卡通圖片背景,實(shí)現(xiàn)思路和部分代碼如下:
首先將要裁剪窗口部分的數(shù)據(jù)存入二進(jìn)制文件wnd.dat中,而后定義全局變量hRgn,使用自定義函數(shù)countWindowRgn()計(jì)算窗口輪廓,并賦值給hRgn。HRGNhRgn;//創(chuàng)建顯示區(qū)域hRgn=countWindowRgn();最后在顯示窗口前使用API函數(shù)SetWindowRgn(hRgn)改變窗口顯示區(qū)域,并在消息處理[7]函數(shù)的繪圖消息WM_PAINT的處理代碼中加入顯示卡通圖片的代碼(作為窗口背景)即可。[b]按鈕子模塊:按鈕子模塊主要用來(lái)顯示圖片按鈕和響應(yīng)用戶按下按鈕的消息[8],這部分代碼的編寫和普通windows程序的編寫一致,這里不再贅述。[c]資源顯示子模塊:資源子模塊用來(lái)顯示資源列表中的資源。根據(jù)用戶的需求,其接口具有以下功能:顯示圖片,顯示GIF動(dòng)畫,播放聲音,打開外部EXE文件,分別在按鈕子模塊的識(shí)記單詞、學(xué)習(xí)歌謠、故事講述、百科常識(shí)和益智游戲等按鈕的消息響應(yīng)中進(jìn)行調(diào)用。顯示圖片:為了使圖片更快、無(wú)閃爍的顯示,本系統(tǒng)采用了雙緩沖的方式進(jìn)行圖片的顯示[9],即先將要顯示的圖片在內(nèi)存中全部繪制好,然后再一次性在屏幕上進(jìn)行輸出。顯示GIF動(dòng)畫:使用GDI+的接口函數(shù)進(jìn)行動(dòng)畫的播放[10],應(yīng)注意在使用GDI+函數(shù)前應(yīng)該進(jìn)行下面的處理工作:usingnamespaceGdiplus;//使用命名空間#pragmacomment(lib,"gdiplus.lib");//鏈接需要的lib播放聲音和打開外部EXE文件:使用相應(yīng)的API函數(shù)進(jìn)行操作。
(3)資源模塊
資源模塊進(jìn)行整個(gè)系統(tǒng)資源的管理。主要有兩個(gè)功能:在系統(tǒng)運(yùn)行時(shí)動(dòng)態(tài)加載和釋放資源[11];資源列表管理器,維護(hù)一個(gè)類似于音樂播放器中播放列表的資源列表[12]。第一個(gè)功能相對(duì)簡(jiǎn)單,使用相應(yīng)的API函數(shù)即可完成[13],下面只論述資源管理器的編寫。資源管理器使用MFC編寫,并生成一個(gè)獨(dú)立于系統(tǒng)的對(duì)話框應(yīng)用程序,家長(zhǎng)可以使用這個(gè)對(duì)話框程序?qū)Y源列表進(jìn)行管理,系統(tǒng)根據(jù)資源列表對(duì)資源進(jìn)行使用。根據(jù)軟件的功能,資源列表維護(hù)以下5個(gè)配置文件:?jiǎn)卧~資源文件(word.dat)、歌謠資源文件(song.dat)、故事資源文件(stroy.dat)、百科資源文件(baike.dat)和游戲資源文件(game.dat)。這5個(gè)文件分別記錄了各類資源的信息:資源路徑和資源名稱,它們的結(jié)構(gòu)基本一致,例如word.bat的內(nèi)容如下:D:Word1學(xué)習(xí)藏文字母D:Word2常用英文單詞
其中一個(gè)資源的信息占據(jù)兩行,第一行為資源所在目錄,第二行為資源名稱。在要使用的資源目錄下將有一個(gè)同名文本文件,記錄了此資源的信息,例如資源包D:Word1下的Word1.txt文檔的內(nèi)容如下:學(xué)習(xí)藏文字母張三11.bmp1.wav22.bmp2.wav其中第一行為資源名稱,第二行為資源作者的姓名,從第三行開始分別記錄此資源包中每個(gè)資源的編號(hào)和文件名,因?yàn)檫@是學(xué)習(xí)單詞的資源,所以每個(gè)資源文件名都包括一個(gè)圖片文件名和一個(gè)聲音文件名。
當(dāng)用戶使用資源管理器進(jìn)行資源導(dǎo)入時(shí),程序首先打開資源配置.dat文件,將這類資源的信息顯示在列表框中,然后彈出一個(gè)文件夾選擇框讓用戶進(jìn)行選擇,之后在用戶選擇的文件夾中尋找同名.txt文件,若此.txt文件不存在,說(shuō)明此文件夾不是系統(tǒng)可以使用的資源包,則顯示錯(cuò)誤信息并讓用戶重新選擇;若.txt文件存在,則打開.txt文件,讀取當(dāng)中的資源名,存入相應(yīng)的資源配置.dat文件中并同步顯示在列表框中當(dāng)用戶在列表框中選中一個(gè)資源,并按下“刪除”按鈕時(shí),則打開相應(yīng)的配置文件,并找到符合此資源名的信息,將其刪除,同時(shí)更新列表框中的信息。
三、系統(tǒng)實(shí)現(xiàn)
該系統(tǒng)是具有資源管理功能的藏漢英三語(yǔ)幼兒早教系統(tǒng)。利用資源管理器可對(duì)系統(tǒng)的資源清單進(jìn)行管理[14],如圖2所示。選擇符合系統(tǒng)要求格式的資源,則其成功地加入系統(tǒng)的資源列表中,若資源不符合要求,添加時(shí)會(huì)提示格式錯(cuò)誤。添加完成系統(tǒng)資源后,打開早教機(jī)系統(tǒng),就會(huì)出現(xiàn)已經(jīng)添加好的資源,此時(shí)可點(diǎn)擊按鈕播放新添加的資源。
進(jìn)入系統(tǒng)以后,會(huì)顯示一個(gè)空白的窗體,在選擇需要的功能按鈕后,窗體會(huì)出現(xiàn)本功能的內(nèi)容選項(xiàng)條,點(diǎn)擊選擇按鈕可以顯示不同內(nèi)容的縮略圖以及本內(nèi)容的基本信息,如圖3所示。點(diǎn)擊縮略圖即可進(jìn)入系統(tǒng)功能顯示區(qū),可以通過(guò)按照個(gè)人需要點(diǎn)擊播放或者重播以及暫停按鈕進(jìn)行操作,并可以點(diǎn)擊設(shè)置按鈕調(diào)整系統(tǒng)的點(diǎn)擊音效等內(nèi)容,而“益智游戲”模塊則可以智能記憶游戲數(shù)據(jù)等。添加到資源列表中的資源則可以直接顯示在內(nèi)容選項(xiàng)條的最后,使得系統(tǒng)操作更方便、更快捷。
四、結(jié)論
本項(xiàng)目的實(shí)施,將實(shí)現(xiàn)有鮮明的藏民族特色,活潑生動(dòng),健康益智的藏漢英三語(yǔ)幼兒早教點(diǎn)播系統(tǒng);將填補(bǔ)在藏民族地區(qū),沒有有效的多語(yǔ)言學(xué)習(xí)系統(tǒng)的空白,能更好的實(shí)現(xiàn)傳播和弘揚(yáng)民族文化,培養(yǎng)幼兒綜合語(yǔ)言表達(dá)能力這一目標(biāo)。系統(tǒng)的資源管理功能使得可使用的教學(xué)資源在一定程度能夠進(jìn)行擴(kuò)展,如果后續(xù)資源的制作可以有效的進(jìn)行,那么本系統(tǒng)完全可以投入實(shí)用。(本文圖略)
本文作者:曾曉莉 郭鑫 張?jiān)浩?王龍業(yè) 單位:西藏大學(xué)工學(xué)院