【摘要】本文主要對校園教務(wù)應(yīng)用軟件進行了研究與設(shè)計,文章提出了校園教務(wù)應(yīng)用軟件體系的總體架構(gòu),并重點對功能模塊及主要的設(shè)計進行了相關(guān)介紹。該應(yīng)用軟件主要在VC++6.0平臺上進行開發(fā),并已通過測試,基本能夠滿足教務(wù)上的功能需求,運行穩(wěn)定,并取得良好的效果。
【關(guān)鍵詞】校園教務(wù);軟件設(shè)計;VC++
1.引言
目前在校園教務(wù)中還沒有一套完整的系統(tǒng)來供其使用,所以就需要一套功能完善的系統(tǒng)來滿足教務(wù)上的使用。如今,可以開發(fā)出一套系統(tǒng)應(yīng)用在校園教務(wù)上,它可實現(xiàn)多方面的功能,比如教務(wù)通知的發(fā)布、課表的實時發(fā)布等功能。通過面向?qū)ο蟮某绦蛟O(shè)計技術(shù)開發(fā)出適合教務(wù)使用的應(yīng)用軟件,具有很高的實用價值。
2.軟件體系的總體架構(gòu)
2.1 軟件系統(tǒng)結(jié)構(gòu)
在本文中主要對軟件的課表解析功能進行介紹。在對系統(tǒng)軟件設(shè)計之前,先要對其進行結(jié)構(gòu)分層處理,即用框圖形式來表示。這樣就使得我們在進行軟件系統(tǒng)各部分的設(shè)計時有了明確的目的和針對性,鑒于這些我們可以很好的進行系統(tǒng)軟件的具體設(shè)計。結(jié)構(gòu)框圖如圖1所示。
系統(tǒng)軟件按照功能的實現(xiàn)來看,從結(jié)構(gòu)上主要分為三個部分,分別是課表內(nèi)容獲取、數(shù)據(jù)處理、窗口顯示。當數(shù)據(jù)經(jīng)過本軟件時,第一步就是要進行課表源文件的解析,第二步是數(shù)據(jù)的處理,這里包括存檔數(shù)據(jù)庫、數(shù)據(jù)提取分類等。第三步是將提取的數(shù)據(jù)在客戶端中顯示。通過結(jié)構(gòu)分層,使得我們在對軟件系統(tǒng)的各個具體部分的設(shè)計有了明確的目的和針對性。事實上本文中的系統(tǒng)軟件設(shè)計就是根據(jù)這個分層結(jié)構(gòu)來一步一步完成的。
2.2 軟件功能與數(shù)據(jù)流程
文章中開發(fā)的系統(tǒng)軟件主要為校園教務(wù)服務(wù),最終要形成一個客戶端軟件。它具備的基本功能有:
(1)能夠?qū)崟r的發(fā)送教務(wù)通知信息;
(2)具備解析課表功能,并存入數(shù)據(jù)庫,能夠?qū)?shù)據(jù)庫中的課表數(shù)據(jù)進行操作(查找、添加、修改、刪除等);
(3)將我們需要待發(fā)送的數(shù)據(jù)可以自動排版在圖片所在的顯示窗口。
要建立系統(tǒng)軟件的整體架構(gòu),最重要的是要對各種數(shù)據(jù)的流程進行詳細的規(guī)劃。在本文設(shè)計的系統(tǒng)軟件中,數(shù)據(jù)要經(jīng)歷各個功能模塊的處理,最終得到預(yù)期效果。軟件體系數(shù)據(jù)流程如圖2所示。
從圖2中可知,本軟件體系的數(shù)據(jù)流程要經(jīng)歷幾個功能模塊的處理。軟件的整個結(jié)構(gòu)中有來自三個方向的數(shù)據(jù)輸入:第一個是背景圖片的加載,它要經(jīng)過流接口Istream的裝載,然后把數(shù)據(jù)輸送給IPicture的COM接口,并在顯示窗口顯示。第二個是來自客戶端的數(shù)據(jù)輸入(通知信息等),數(shù)據(jù)通過窗口類CWnd處理并在函數(shù)OnPaint的作用下將數(shù)據(jù)繪制到窗口中。第三個是課表文件的輸入,在課表解析模塊的作用下得到我們需要的數(shù)據(jù),然后存入數(shù)據(jù)庫。最后把得到的文件送出。
3.程序的功能模塊
3.1 類結(jié)構(gòu)
該系統(tǒng)的軟件結(jié)構(gòu)框架從整體上規(guī)劃了不同部分的設(shè)計要求和設(shè)計思路。在具體的開發(fā)過程中,還需要對這些功能進行具體的實現(xiàn)。這就需要我們了解在具體設(shè)計中對于每個部分的實現(xiàn)過程。在Visual C++6.0設(shè)計平臺上,對于類的定義是一個很重要的設(shè)計部分。為了實現(xiàn)各種應(yīng)用功能,定義了不同需求的類,其最終目的是實現(xiàn)各個部分的具體功能。
3.2 COM接口與圖片數(shù)據(jù)轉(zhuǎn)換
IPicture的COM接口主要管理圖像對象及其屬性,圖像對象為位圖、圖標和圖元等提供一種與語言無關(guān)的抽象。它和標準的字體對象一樣,也提供了對圖像對象的標準實現(xiàn)
該模塊在JPG編碼過程中起到很重要的作用。它的主要作用是在客戶端中添加背景圖片。對該模塊進行重新的定義后,可以對圖像數(shù)據(jù)進行保存和圖像流數(shù)據(jù)進行裝載。本文中定義的IPicture對象名為指針pPic,在打開背景圖片后使用函數(shù)GlobalAlloc對圖片進行分配全局存儲空間,在進行圖像裝載后我們還需要獲取圖像的大小,這里使用pPic->get_Width得到圖片的寬度,get_Height得到圖片的高度,通過這些就可以把任意的背景添加到客戶端窗口上。
在客戶端窗口中的視圖需要轉(zhuǎn)化為JPG圖片格式,在上述中我們能夠獲取視圖圖像的寬度和高度,這兩個參數(shù)能夠為程序中將要獲取視圖的范圍提供數(shù)據(jù)。下面要做的是進行在指定設(shè)備環(huán)境區(qū)域的像素位塊轉(zhuǎn)化,在進行轉(zhuǎn)化時,必須要知道目標矩形區(qū)域的X軸與Y軸坐標才能對設(shè)備環(huán)境中的圖像進行剪切變換,主要是將原場景的顏色格式轉(zhuǎn)換成能夠與目標格式匹配的格式。將圖元數(shù)據(jù)通過CxImage類的轉(zhuǎn)換,就能夠獲得我們感興趣的區(qū)域圖片。
3.3 窗口顯示模塊
顯示類preview是用于在客戶端中處理過的數(shù)據(jù)能夠顯示在窗口的類。在客戶端輸入的數(shù)據(jù)或課表解析傳過來的數(shù)據(jù)是和窗口句柄相聯(lián)的,將我們需要的數(shù)據(jù)自動的繪在窗口的特定區(qū)域。在該類中,數(shù)據(jù)的顯示是動態(tài)的,這樣的好處是可以方便的實時把其他的功能作用在窗口上。在此基礎(chǔ)上我們還有一些特定功能的函數(shù)和窗口句柄相聯(lián)的,比如背景顏色的變換、字體大小顏色的改變、圖片的變換等。
該模塊的作用是在背景圖片中繪制教務(wù)通知等文字信息而使用的。在對函數(shù)CWnd::OnPaint進行定義后它能夠?qū)崿F(xiàn)動態(tài)的顯示信息內(nèi)容,并且能夠?qū)崿F(xiàn)實時更新內(nèi)容。OnPaint是WM_PAINT消息的消息處理函數(shù),負責(zé)響應(yīng)WM_PAINT消息。通過類Cfont來控制文字的格式,可以達到豐富的顯示效果。
3.4 課表解析模塊
課表解析類KEBIAO用于解析課表文件,它主要由以下幾個過程組成。首先,獲取課表源文件Excel內(nèi)容,存入數(shù)據(jù)庫。然后針對數(shù)據(jù)庫進行操作,目的是將我們需要的內(nèi)容篩選出來。
本節(jié)中簡要介紹一下獲取課表源文件的操作。在這一部分中設(shè)計中,首要是要對COM接口進行初始化操作,目的是為了創(chuàng)建Excel服務(wù)器,采用函數(shù)::CoInitialize來對其進行操作,當該函數(shù)的返回值為E_INVALIDARG時,則代表COM接口初始化失敗,否則成功。在上述過程完成后,接下來則是獲取課表源文件的內(nèi)容,這里包括整個文件的單元格內(nèi)容獲取,這里主要分為兩步:第一,通過設(shè)計函數(shù)GetWorksheets(_variant_t(\"Sheet1\"))來獲取Sheet1工作區(qū)的內(nèi)容,這里包括全部的單元格內(nèi)容;第二,在第一步的基礎(chǔ)上通過函數(shù)GetCells來獲取單個的單元格內(nèi)容。
在提取的內(nèi)容存入數(shù)據(jù)庫后,接下來就是要設(shè)計怎么從數(shù)據(jù)庫中選出我們需要的內(nèi)容進行顯示,這里主要是利用數(shù)據(jù)庫的遍歷來進行獲取,具體如下:先把軟件中用戶選擇的指標獲取存入到一個緩存變量中;然后將該緩存變量和數(shù)據(jù)庫中的各個元素進行匹配,每循環(huán)一次稱之為一次遍歷;如果發(fā)現(xiàn)有匹配的內(nèi)容則把它存放到隊列數(shù)據(jù)結(jié)構(gòu)中,這里的設(shè)計思路是只需要循環(huán)一次即可把遍歷到的內(nèi)容篩選出來;接下來是將隊列中的數(shù)據(jù)進行視圖顯示即可。
上述主要是對內(nèi)容的獲取與內(nèi)容篩選做了簡要介紹,在篩選的內(nèi)容獲取后存入數(shù)據(jù)庫。此處要解決的難題是怎樣通過用戶的選擇來提取需要的課表內(nèi)容,并且課表信息要匹配,作為一個整體。接下來就是通過用戶選擇的日期、樓棟、層數(shù)、時間段來自動的生成我們的課表。用戶可以在客戶端上選擇好需要輸出的條件,然后通過值傳遞的方式和數(shù)據(jù)庫進行匹配,提取的內(nèi)容將會放入到緩沖區(qū),然后將數(shù)據(jù)送到顯示模塊。
3.5 軟件界面設(shè)計
對于應(yīng)用軟件來說,一個最基本的要求就是:軟件界面是面向用戶的。用戶需要的是一個功能上能夠滿足其需求的軟件,并能很方便的使用。設(shè)計者對于界面設(shè)計的目標是高質(zhì)量的用戶界面,可以表達為:對任何用戶來說,都是直觀的,簡單實用的,用戶在使用時能達到最大限度的效率與效果。
首先我們要建立一個工程Client,并使用AppWizard來生成一個MFC應(yīng)用程序。在Windows環(huán)境下,進入到Visual C++6.0集成開發(fā)環(huán)境,單擊File主菜單項中的New選項,就會彈出新的對話框,選擇Projects標簽,在標簽下的列表框中選擇MFC AppWizard(exe)選項,這樣我們就創(chuàng)建了一個使用MFC的可執(zhí)行程序。接下來就是填寫工程名和工程的保存路徑選擇,在這些都完成以后就是用戶界面的設(shè)計了。我們選擇程序類型為Single document,即單文檔方式,可以看到,系統(tǒng)會生成一個New Project Information對話框,里面將會包含將要設(shè)計的工作功能選項,單擊OK按鈕,系統(tǒng)會生成一個最基本的程序框架界面,我們只要在這個空白界面上進行設(shè)計即可。
4.結(jié)論
本文提出了校園教務(wù)應(yīng)用軟件研究與設(shè)計,該軟件能夠作為客戶端供教務(wù)使用,并且已經(jīng)具備教務(wù)通知的發(fā)布、課表的實時發(fā)布等功能。該軟件在經(jīng)過多次的測試表明,可以比較穩(wěn)定的運行,并且達到良好的效果。對于該軟件系統(tǒng)的設(shè)計,它具有很大的實用價值,并且可以在各個校園推廣。隨著客戶群體的不斷增加,該軟件系統(tǒng)將會有很廣闊的市場前景。
參考文獻
[1]梁維.Visual C++6.0編程實用教程[M].中國水利水電出版社,1999.
[2]侯俊杰.深入淺出Windows MFC程序設(shè)計[M].武漢:華中理工大學(xué)出版社,1998.
[3]周振紅等.基于COM的軟件組件[J].計算機應(yīng)用,2001, 21(3):6-8.
作者簡介:
王國裕,男,博士,重慶郵電大學(xué)光電工程學(xué)院教授,博士生導(dǎo)師,主要研究方向:SOC設(shè)計以及DAB/DMB、DVB系統(tǒng)開發(fā)和核心芯片設(shè)計。
萬運龍,男,重慶郵電大學(xué)光電工程學(xué)院碩士研究生,主要研究方向:軟件開發(fā)與嵌入式程序設(shè)計。
張紅升,男,博士,重慶郵電大學(xué)光電工程學(xué)院副教授,主要研究方向:數(shù)字集成電路設(shè)計。