前言:想要寫(xiě)出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇c語(yǔ)言開(kāi)發(fā)范文,相信會(huì)為您的寫(xiě)作帶來(lái)幫助,發(fā)現(xiàn)更多的寫(xiě)作思路和靈感。
C++語(yǔ)言在計(jì)算機(jī)語(yǔ)言?xún)?nèi)使用頻率最高,與其他語(yǔ)言相比,編程速度更快,在實(shí)際應(yīng)用中具有更大優(yōu)勢(shì)。在應(yīng)用C++語(yǔ)言來(lái)進(jìn)行跨平臺(tái)軟件開(kāi)發(fā)時(shí),需要充分發(fā)揮其所具有的優(yōu)勢(shì),對(duì)存在的缺陷進(jìn)行規(guī)避,提高開(kāi)發(fā)設(shè)計(jì)效果。本文基于跨平臺(tái)軟件開(kāi)發(fā)要求,對(duì)C++語(yǔ)言應(yīng)用要點(diǎn)進(jìn)行了簡(jiǎn)單分析。
【關(guān)鍵詞】C++ 跨平臺(tái)軟件 軟件開(kāi)發(fā)
應(yīng)用C++語(yǔ)言來(lái)開(kāi)發(fā)跨平臺(tái)軟件,即將應(yīng)用程序代碼處理成能夠在已有平臺(tái)下使用和執(zhí)行的文件,但是對(duì)于其他平臺(tái),處理后的文件無(wú)法正常使用,尤其是Windoes與Unix平臺(tái),是C++語(yǔ)言的應(yīng)用缺陷。為改善此缺陷,需要對(duì)源程序代碼翻譯成各平臺(tái)下均可正常使用的文件,面對(duì)不同平臺(tái)來(lái)選擇編譯方法,手動(dòng)設(shè)計(jì)控制和管理編譯條件,應(yīng)用腳本文件和環(huán)境變量,以及第三方軟件來(lái)對(duì)代碼進(jìn)行動(dòng)態(tài)編譯,降低跨平臺(tái)軟件開(kāi)發(fā)難度。
1 跨平臺(tái)軟件開(kāi)發(fā)環(huán)境要求
跨平臺(tái)為現(xiàn)代軟件開(kāi)發(fā)的重要概念,可以降低對(duì)操作系統(tǒng)和硬件環(huán)境的依賴(lài)性,在實(shí)際開(kāi)發(fā)應(yīng)用程序中,想要實(shí)現(xiàn)跨平臺(tái)軟件的有效運(yùn)行,就需要確定跨平臺(tái)開(kāi)發(fā)要求,支持各種不同平臺(tái),為發(fā)揮市場(chǎng)潛力提供動(dòng)力。在構(gòu)成開(kāi)發(fā)環(huán)境時(shí),需要軟件編輯器、程序編譯器與程序調(diào)試器作為支持,但是對(duì)于Sandbox軟件來(lái)說(shuō),其可以同時(shí)實(shí)現(xiàn)代碼編譯和代碼調(diào)試,并且內(nèi)部各種平臺(tái)需要有多種代碼庫(kù)和依賴(lài)庫(kù)。程序開(kāi)發(fā)過(guò)程中,源代碼類(lèi)型不同,在C++語(yǔ)言軟件開(kāi)發(fā)與編譯時(shí),需要對(duì)最終結(jié)果質(zhì)量進(jìn)行有效控制,產(chǎn)生最好代碼,對(duì)錯(cuò)誤捕捉與調(diào)試過(guò)程需要一定支持??缙脚_(tái)軟件開(kāi)發(fā)即將抽象實(shí)現(xiàn)的過(guò)程,需要利用先進(jìn)手段來(lái)對(duì)抽象以及相關(guān)設(shè)計(jì)進(jìn)行研究,保證可以在不同平臺(tái)上實(shí)現(xiàn)特殊編譯。
2 C++語(yǔ)言跨平臺(tái)軟件開(kāi)發(fā)設(shè)計(jì)要點(diǎn)
2.1 避免語(yǔ)言擴(kuò)展特性
無(wú)論是選擇應(yīng)用那種語(yǔ)言進(jìn)行編程,均需要選擇應(yīng)用較老的程序或者文件作為基礎(chǔ),因?yàn)槠涑绦驇?kù)內(nèi)某些原有程序和公式具有規(guī)范性與標(biāo)準(zhǔn)性,完全區(qū)別于現(xiàn)在新程序庫(kù)內(nèi)雜亂無(wú)章的情況。在跨平臺(tái)軟件開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)出現(xiàn)各種故障,部分情況在獲得支持后,依然會(huì)存在沒(méi)有定義精神的事故。對(duì)于跨平臺(tái)軟件開(kāi)發(fā)來(lái)說(shuō),有非常高的異常靈敏度,可以對(duì)新特性進(jìn)行無(wú)限利用,這樣就造成軟件在排除異常情況時(shí)難度更大。這樣在應(yīng)用C++語(yǔ)言進(jìn)行跨平臺(tái)軟件開(kāi)發(fā)時(shí),可以調(diào)用C++標(biāo)準(zhǔn)函數(shù)模型,提高已開(kāi)發(fā)軟件與產(chǎn)品的穩(wěn)定性。
2.2 實(shí)現(xiàn)動(dòng)態(tài)處理
就C++語(yǔ)言跨平臺(tái)軟件開(kāi)發(fā)來(lái)說(shuō),需要有多種環(huán)境運(yùn)行可移植代碼庫(kù)進(jìn)行編寫(xiě)。在實(shí)際軟件開(kāi)發(fā)過(guò)程中,要對(duì)常見(jiàn)問(wèn)題進(jìn)行有效避免,且處理一個(gè)平臺(tái)在另一個(gè)平臺(tái)沒(méi)有特性這一問(wèn)題,實(shí)現(xiàn)動(dòng)態(tài)性處理。
2.3 腳本文件管理
在應(yīng)用C++語(yǔ)言開(kāi)發(fā)跨平臺(tái)軟件時(shí),需要做好腳本文件的基本管理,在保證所編寫(xiě)代程序代碼簡(jiǎn)單易懂前提下,降低其復(fù)雜性,達(dá)到簡(jiǎn)潔目的,完成合理軟件結(jié)構(gòu)的構(gòu)建。會(huì)與平臺(tái)相關(guān)文件以及數(shù)據(jù)庫(kù)進(jìn)行有效隔離,在軟件項(xiàng)目開(kāi)發(fā)階段,通過(guò)腳本文件來(lái)對(duì)進(jìn)行一定程度上的編譯,對(duì)其在各個(gè)部位進(jìn)行合理分配。在使用應(yīng)用程序時(shí),需要將配置文件內(nèi)相關(guān)配置選項(xiàng)調(diào)配出來(lái),讀取內(nèi)部程序,然后在跨平臺(tái)軟件開(kāi)發(fā)時(shí),利用頁(yè)數(shù)手段來(lái)將平臺(tái)相關(guān)關(guān)聯(lián)文件進(jìn)行全部分隔。
2.4 串行化使用
就C++語(yǔ)言開(kāi)發(fā)跨平臺(tái)軟件時(shí),需要做好跨平臺(tái)數(shù)據(jù)存儲(chǔ)安全性與可靠性研究和管理,消除項(xiàng)目開(kāi)發(fā)過(guò)程中存在的缺陷。C++語(yǔ)言在開(kāi)發(fā)跨平臺(tái)軟件時(shí),可以利用軟件fread指令,來(lái)綜合處理各編譯器與單一目標(biāo)平臺(tái),并在實(shí)際跨平臺(tái)操作環(huán)境中,通過(guò)實(shí)際方法來(lái)對(duì)數(shù)據(jù)進(jìn)行不同程度的存儲(chǔ)與加載,實(shí)現(xiàn)平立性的有效保障。其中,在利用跨平臺(tái)對(duì)數(shù)據(jù)在目標(biāo)文件中的存儲(chǔ)時(shí),不同平臺(tái)間具有一定差異性,并且在實(shí)際應(yīng)用中,也會(huì)產(chǎn)生多種結(jié)果特征。
2.5 編譯與測(cè)
C++語(yǔ)言跨平臺(tái)軟件開(kāi)發(fā)中的編譯與測(cè)試,需要保證存在關(guān)聯(lián)的代碼在長(zhǎng)時(shí)間使用中,可以在其他平臺(tái)中進(jìn)行有效檢測(cè),并利用不同平臺(tái)來(lái)完成測(cè)試,確定軟件項(xiàng)目是否存在bug,并及時(shí)調(diào)整處理,保證軟件可以正常運(yùn)行。
2.6 實(shí)現(xiàn)抽象
實(shí)現(xiàn)抽象對(duì)跨平臺(tái)應(yīng)用程序中被移植過(guò)程中存在一定有效性,應(yīng)用此特點(diǎn)可以實(shí)現(xiàn)對(duì)軟件的單獨(dú)性開(kāi)發(fā),確定具有單獨(dú)性與簡(jiǎn)潔性的程序,利用多種函數(shù)進(jìn)行開(kāi)發(fā)設(shè)計(jì)。C++語(yǔ)言則是應(yīng)用封裝方法,來(lái)實(shí)現(xiàn)抽象過(guò)程,且要根據(jù)實(shí)際情況進(jìn)行分析,如果存在特殊情況,還需要通過(guò)其他程序來(lái)進(jìn)行調(diào)用,并做好功能基礎(chǔ)明明。在實(shí)現(xiàn)抽象階段,如果該程序以及公式使用后,需要對(duì)該功能進(jìn)行直接調(diào)用,確保其功能可以有效實(shí)現(xiàn)。
3 結(jié)束語(yǔ)
基于C++語(yǔ)言來(lái)進(jìn)行跨平臺(tái)軟件開(kāi)發(fā),需要基于C++語(yǔ)言特點(diǎn),確定跨平臺(tái)軟件開(kāi)發(fā)要求與要點(diǎn),做好每個(gè)環(huán)節(jié)控制,保證項(xiàng)目開(kāi)發(fā)過(guò)程的規(guī)范性與有效性,實(shí)現(xiàn)軟件在不同平臺(tái)的有效執(zhí)行。
參考文獻(xiàn)
1、問(wèn)題分析與算法設(shè)計(jì)。算法是一組明確的解決問(wèn)題的步驟,它產(chǎn)生的結(jié)果并可在有限時(shí)間內(nèi)終止。可以用多種方式來(lái)描述算法包括自然語(yǔ)言,偽代碼或流程圖;
2、編輯程序。當(dāng)確定了解決問(wèn)題的步驟后,就可以開(kāi)始編寫(xiě)程序了。一般是在編程的環(huán)境中,應(yīng)用其中的編輯功能直接來(lái)編寫(xiě)程序,生成源程序(對(duì)C語(yǔ)言來(lái)說(shuō),一般源程序的后綴為c);
3、編譯。當(dāng)編輯好程序后,下一步就是應(yīng)用該語(yǔ)言程序的編譯程序?qū)ζ溥M(jìn)行編譯,以生成二進(jìn)制代碼表示的目標(biāo)程序(一個(gè)二進(jìn)制文件,文件后綴為obj)。該目標(biāo)程序需要與編程環(huán)境提供的庫(kù)函數(shù)進(jìn)行連接,形成可執(zhí)行的程序(文件后綴為exe)。當(dāng)然,如果程序有語(yǔ)法錯(cuò)誤,編譯程序就會(huì)指出該語(yǔ)法錯(cuò)誤所在,而不生成二進(jìn)制代碼;
微型計(jì)算機(jī)原理與接口技術(shù)是電子信息類(lèi)專(zhuān)業(yè)的一門(mén)專(zhuān)業(yè)必修課程,對(duì)掌握微機(jī)的工作原理和接口應(yīng)用尤其重要。本文以8253 為例,主要結(jié)合C 語(yǔ)言與匯編語(yǔ)言進(jìn)行計(jì)算機(jī)程序編寫(xiě)設(shè)計(jì)中各自的特征優(yōu)勢(shì),從C語(yǔ)言角度和匯編角度探討接口芯片的編程。
【關(guān)鍵詞】
微機(jī)原理;C 語(yǔ)言;匯編語(yǔ)言;接口
0 引言
微型計(jì)算機(jī)原理與接口技術(shù)是電子信息類(lèi)專(zhuān)業(yè)的一門(mén)專(zhuān)業(yè)必修課程,對(duì)掌握微機(jī)的工作原理和接口應(yīng)用尤其重要。本文以8253 為例,主要結(jié)合C 語(yǔ)言與匯編語(yǔ)言進(jìn)行計(jì)算機(jī)程序編寫(xiě)設(shè)計(jì)中各自的特征優(yōu)勢(shì),從C語(yǔ)言角度和匯編角度探討接口芯片的編程。
1 定時(shí)/計(jì)數(shù)器8253芯片知識(shí)點(diǎn)描述
8253中各通道可有6種可供選擇的工作方式,以完成定時(shí)、計(jì)數(shù)或脈沖發(fā)生器等多種功能。
1.1 速率波發(fā)生器
進(jìn)入這種工作方式,輸出高電平,裝入計(jì)數(shù)值n后如果GATE為高電平,則立即開(kāi)始計(jì)數(shù),保持為高電平不變;待計(jì)數(shù)值減到“1”和“0”之間,將輸出寬度為一個(gè)周期的負(fù)脈沖,計(jì)數(shù)值為“0”時(shí),自動(dòng)重新裝入計(jì)數(shù)初值n,實(shí)現(xiàn)循環(huán)計(jì)數(shù),將輸出一定頻率的負(fù)脈沖序列,其脈沖寬度固定為一個(gè)周期,重復(fù)周期為周期的倍。時(shí)序波形如圖1所示。
1.2 方波發(fā)生器
任一通道工作在這一工作方式時(shí),只在計(jì)數(shù)值為偶數(shù),則可輸出重復(fù)周期為、占空比為1∶1的方波。進(jìn)入工作方式時(shí),輸出低電平,裝入計(jì)數(shù)值后,立即跳變?yōu)楦唠娖?。如果?dāng)前GATE為高電平,則立即開(kāi)始減“1”計(jì)數(shù),保持為高電平,若為偶數(shù),則當(dāng)計(jì)數(shù)值減
到時(shí),跳變?yōu)榈碗娖?,一直保持到?jì)數(shù)值為“0”,系統(tǒng)才自動(dòng)重新置入計(jì)數(shù)值,實(shí)現(xiàn)循環(huán)計(jì)數(shù)。這時(shí)端輸出的周期為n×周期,占空比為1∶1的方波序列;若為奇數(shù),則端輸出周期為周
期,占空比為:的近似方波
序列。時(shí)序波形如圖2所示。
1.3 使用C語(yǔ)言的優(yōu)勢(shì)
語(yǔ)言有一個(gè)突出的優(yōu)點(diǎn)就是適合于多種操作系統(tǒng),如DOS、UNIX;也適用于多種機(jī)型。C語(yǔ)言具有強(qiáng)大的繪圖能力,可移植性好,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫(xiě)系統(tǒng)軟件,三維,二維圖形和動(dòng)畫(huà),它也是數(shù)值計(jì)算的高級(jí)語(yǔ)言。
1.4 使用匯編語(yǔ)言的優(yōu)勢(shì)
匯編語(yǔ)言是一種用文字助記符來(lái)表示機(jī)器指令的符號(hào)語(yǔ)言,是最接近機(jī)器碼的一種語(yǔ)言。其主要優(yōu)點(diǎn)是占用資源少、程序執(zhí)行效率高。
總之,對(duì)于目前普遍使用的RISC架構(gòu)的8bit MCU來(lái)說(shuō),其內(nèi)部ROM、RAM、STACK等資源都有限,如果使用C語(yǔ)言編寫(xiě),一條C語(yǔ)言指令編譯后,會(huì)變成很多條機(jī)器碼,很容易出現(xiàn)ROM空間不夠、堆棧溢出等問(wèn)題。而且一些單片機(jī)廠家也不一定能提供C編譯器。而匯編語(yǔ)言,一條指令就對(duì)應(yīng)一個(gè)機(jī)器碼,每一步執(zhí)行什幺動(dòng)作都很清楚,并且程序大小和堆棧調(diào)用情況都容易控制,調(diào)試起來(lái)也比較方便。
2 實(shí)例:C 語(yǔ)言方式下和匯編語(yǔ)言下控制8253
8253控制端口地址為303H;計(jì)數(shù)器0地址為300H;計(jì)數(shù)器1地址為301H;計(jì)數(shù)器2地址為302H。
用C語(yǔ)言程序?qū)崿F(xiàn),則程序段為:
outportb(0x303,0x56) ;//56H,選擇計(jì)數(shù)器1,低8位讀寫(xiě),方式3(方波發(fā)生器),二進(jìn)制計(jì)數(shù)。
outportb(0x301,8) ;// 向計(jì)數(shù)器1 寫(xiě)入低8位初值8H。
outportb(0x303,0x94) ;// 向8253 控制端口寫(xiě)控制字94H。選擇計(jì)數(shù)器2,低8位后讀寫(xiě),方式2(分頻脈沖發(fā)生器),二進(jìn)制計(jì)數(shù)。
outportb(0x302,6) ;// 向計(jì)數(shù)器2 寫(xiě)入低八位初值6H。
如果用匯編語(yǔ)言實(shí)現(xiàn),則程序段為:
MOV DX,303H
MOV AL,56H
OUT DX,AL
MOV DX,301H
MOV AL,8
OUT DX,AL
MOV DX,303H
MOV AL,94H
OUT DX,AL
MOV DX,302H
MOV AL,6
OUT DX,AL
從中可以直觀地可以看出,如果使用匯編語(yǔ)言對(duì)8253 寫(xiě)入控制字MOV DX,303H、MOV AL,36H和OUT DX,AL三條語(yǔ)句完成,而且需要3個(gè)寄存器,但由于CPU內(nèi)部資源中寄存器有限,它屬于最珍貴的資源寄,使用匯編容易造成寄存器資源緊張;而用C 語(yǔ)言只需調(diào)用outport函數(shù),C語(yǔ)言的代碼長(zhǎng)度短了很多,并且也方便初學(xué)者掌握,使初學(xué)者在嵌入式軟件開(kāi)發(fā)上產(chǎn)生更多的興趣,為大型嵌入式軟件的開(kāi)發(fā)奠定堅(jiān)實(shí)的基礎(chǔ)。
3 結(jié)束語(yǔ)
根據(jù)本文比較C語(yǔ)言和匯編語(yǔ)言對(duì)8253 的開(kāi)發(fā),會(huì)讓更多的初學(xué)者明白C語(yǔ)言作為一種面向結(jié)構(gòu)的語(yǔ)言對(duì)嵌入式系統(tǒng)開(kāi)發(fā)的優(yōu)勝性,希望越來(lái)越多的初學(xué)者在微機(jī)原理和接口的實(shí)驗(yàn)課上,采用C 語(yǔ)言進(jìn)行開(kāi)發(fā),削減代碼量,提高效率。今后使用中也可以使用C 語(yǔ)言與匯編語(yǔ)言進(jìn)行混合編程開(kāi)發(fā)設(shè)計(jì),不僅具有C 語(yǔ)言與匯編語(yǔ)言編程設(shè)計(jì)中的優(yōu)勢(shì)特征,并且對(duì)于兩種語(yǔ)言編程設(shè)計(jì)中的局限性問(wèn)題,也有相互的補(bǔ)充與改進(jìn),具有較好的靈活性,并且編程開(kāi)發(fā)設(shè)計(jì)速度快、效率高,有很大的編程開(kāi)發(fā)設(shè)計(jì)應(yīng)用優(yōu)勢(shì)。
【參考文獻(xiàn)】
[1]馮博琴.微型計(jì)算機(jī)原理與接口技術(shù)(第3版).北京:清華大學(xué)出版社,2011.
[2]沈美明.IBM-PC匯編語(yǔ)言程序設(shè)計(jì)(第2版).北京:清華大學(xué)出版社.2013
[3]譚浩強(qiáng).C 程序設(shè)計(jì)(第三版).北京:清華大學(xué)出版社,2005.
關(guān)鍵詞:教務(wù)管理;工作流;Excel AddIn;SendKeys
一、背景概述
大學(xué)教學(xué)管理日常工作量大,涉及人員和事務(wù)復(fù)雜。以考務(wù)組織為例,對(duì)學(xué)期末的多門(mén)課程排考后,教學(xué)秘書(shū)需要根據(jù)時(shí)間節(jié)點(diǎn),查看開(kāi)課課表、教務(wù)通知等多個(gè)單獨(dú)文檔或表格,在不同管理系統(tǒng)中切換錄入和修改數(shù)據(jù),并及時(shí)通知相關(guān)主考和監(jiān)考教師,提醒信息,手工操作工作效率低,容易出現(xiàn)錯(cuò)誤。
目前教務(wù)管理、辦公OA和電子郵件等信息系統(tǒng)中普遍存在“信息孤島”現(xiàn)象 [1,2 ],各種系統(tǒng)中的數(shù)據(jù)只能手工輸入和遷移。本文根據(jù)實(shí)際工作需求,以日常使用最為頻繁的Excel軟件為基礎(chǔ),應(yīng)用工作流模式和C#語(yǔ)言開(kāi)發(fā)加載項(xiàng)(AddIn)插件,實(shí)現(xiàn)一鍵發(fā)送內(nèi)容到電子郵件、辦公OA、短信和微信界面。
二、軟件架構(gòu)
工作流(Workflow),就是“業(yè)務(wù)過(guò)程的部分或整體在計(jì)算機(jī)應(yīng)用環(huán)境下的自動(dòng)化”,它主要解決的是“使在多個(gè)參與者之間按照某種預(yù)定義的規(guī)則傳遞文檔、信息或任務(wù)的過(guò)程自動(dòng)進(jìn)行,從而實(shí)現(xiàn)某個(gè)預(yù)期的業(yè)務(wù)目標(biāo),或者促使此目標(biāo)的實(shí)現(xiàn)” [3 ]。經(jīng)分析調(diào)研,大學(xué)教務(wù)管理工作一般都有嚴(yán)格的時(shí)間節(jié)點(diǎn),例如監(jiān)考組織,涉及確認(rèn)考試時(shí)間地點(diǎn)、提前通知主考教師和學(xué)生時(shí)間、提前通知監(jiān)考教師時(shí)間等,因此,擬開(kāi)發(fā)“教務(wù)助手”輔助應(yīng)用程序,以時(shí)間軸為主線(xiàn)將各項(xiàng)工作從不同的系統(tǒng)中導(dǎo)出,整合到日常辦公平臺(tái)中,其架構(gòu)如圖1:
三、主要實(shí)現(xiàn)方法
在微軟Visual 2010平臺(tái)上,新建一個(gè)Excel 2010外接程序(Excel AddIn) [4 ],這是一種托管代碼外接程序,用戶(hù)安裝后的軟件后,會(huì)自動(dòng)在Excel軟件上增加加載項(xiàng)菜單 [5 ],在使用Excel軟件過(guò)程中隨時(shí)點(diǎn)擊菜單項(xiàng),即可執(zhí)行相應(yīng)功能,調(diào)取工作簿內(nèi)容,并啟動(dòng)其他應(yīng)用程序,實(shí)現(xiàn)協(xié)同工作。
本軟件命名為“教務(wù)助手”,主要功能有“發(fā)OA”“發(fā)郵件”“發(fā)短信”等3種,并且可以在同一架構(gòu)下自由擴(kuò)展。用戶(hù)在使用Excel時(shí),可以隨時(shí)點(diǎn)擊菜單欄的“加載項(xiàng)”,調(diào)出“教務(wù)助手”的子菜單(圖2)。
1.在Excel中創(chuàng)建菜單并響應(yīng)用戶(hù)操作的核心代碼(有刪減):
private void ThisAddIn_Startup(object sender, System.EventArgs e){menuCreateMail = commandBarPopupTmp.Controls.Add(Office.MsoControlType.msoControlButton, Type.Missing, Type.Missing, 1, true); menuCreateMail.Caption = “發(fā)OA”;}
2.查找并控制其它Windows窗體的核心代碼(有刪減):
【DllImport(“user32.dll”, EntryPoint = “FindWindow”, SetLastError = true)】
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
IntPtr hwndCalc = FindWindow(null, “工作任務(wù) ―― 新建任務(wù)―― 網(wǎng)頁(yè)對(duì)話(huà)框”);
3.發(fā)送字符串和自動(dòng)填充表單的核心代碼(有刪減):
if (hwndCalc != IntPtr.Zero){ SetForegroundWindow(hwndCalc);
Clipboard.SetText(“監(jiān)考通知”); SendKeys.SendWait(“^v”);SendKeys.SendWait(“{Tab}”); }
四、應(yīng)用效果
在安裝該軟件后,教務(wù)工作人員如果需要批量通知幾十名監(jiān)考教師,只須點(diǎn)擊相應(yīng)菜單,軟件即可自動(dòng)逐行復(fù)制Excel工作簿中的單元格文本,自動(dòng)匹配人員,獲取手機(jī)號(hào)碼、Email地址或OA用戶(hù)名,使用SendKeys功能,發(fā)送文本信息到相關(guān)程序或網(wǎng)頁(yè),填寫(xiě)表單 [6 ],經(jīng)操作人員手工確認(rèn)或修改后,執(zhí)行發(fā)送功能,實(shí)現(xiàn)半自動(dòng)的信息批量發(fā)送,可大幅節(jié)省工作量,并防止手工錄入錯(cuò)誤。圖2顯示了軟件讀取數(shù)據(jù),控制用友致遠(yuǎn)A8 辦公系統(tǒng)發(fā)送監(jiān)考通知的過(guò)程。
五、總結(jié)
教務(wù)管理輔助應(yīng)用程序優(yōu)化了傳統(tǒng)教學(xué)管理中的工作流程,以時(shí)間軸為基礎(chǔ),對(duì)涉及到的多個(gè)信息系統(tǒng)中的人員、任務(wù)和數(shù)據(jù)進(jìn)行整合,實(shí)現(xiàn)多種渠道的信息公開(kāi)和傳達(dá),提升了教務(wù)工作效率,減少了教學(xué)事故發(fā)生。
參考文獻(xiàn):
[1]張珍義.高校數(shù)字化校園建設(shè)中“信息孤島”現(xiàn)象的探討[J].中國(guó)教育信息化,2008(13).
[2]涂振宇.數(shù)字化校園建設(shè)存在的問(wèn)題與對(duì)策研究[J].信息與電腦(理論版),2014(4).
[3]曹風(fēng)華. 基于工作流技術(shù)的學(xué)生評(píng)語(yǔ)生成系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 現(xiàn)代計(jì)算機(jī)(專(zhuān)業(yè)版),2011(10).
[4]苑青,孔捷,冷靜. 利用VSTO和.NET的Office開(kāi)發(fā)技術(shù)[J]. 電腦編程技巧與維護(hù),2009(6).
關(guān)鍵詞:PHP 開(kāi)發(fā)框架 MVC模式
1 概述
互聯(lián)網(wǎng)迅速發(fā)展對(duì)Web應(yīng)用程序的開(kāi)發(fā)效率、可靠性、可維護(hù)性和可擴(kuò)展性提出了更高的要求。PHP具有直觀、易于上手,運(yùn)行速度快,跨平臺(tái),開(kāi)放源代碼等優(yōu)點(diǎn)[1][2],已經(jīng)成為最重要的Web開(kāi)發(fā)語(yǔ)言之一[3]。但是,現(xiàn)有的PHP開(kāi)發(fā)模式將數(shù)據(jù)訪(fǎng)問(wèn)代碼、邏輯處理代碼和表示代碼相互混合,無(wú)法滿(mǎn)足Web應(yīng)用快速發(fā)展的需要。
MVC設(shè)計(jì)模式對(duì)于生成有組織的模塊化應(yīng)用程序,是一種被證實(shí)了的有效的方法[4]。MVC設(shè)計(jì)模式可以將應(yīng)用程序的數(shù)據(jù)(Model)、視圖(View)和控制(Controller)相互分離,使得表現(xiàn)層能夠從邏輯事務(wù)層分離出來(lái),實(shí)現(xiàn)應(yīng)用程序的松散的耦合,從而提高應(yīng)用程序的開(kāi)發(fā)效率、可靠性、可維護(hù)性和可擴(kuò)展性。
2 框架的結(jié)構(gòu)設(shè)計(jì)
2.1 框架體系結(jié)構(gòu)
本框架采用五層B/S架構(gòu)的MVC模式,web層對(duì)應(yīng)視圖和控制器,業(yè)務(wù)邏輯層和數(shù)據(jù)持久層由模型實(shí)現(xiàn)。模型(model)包括業(yè)務(wù)邏輯層和數(shù)據(jù)持久層,可分離業(yè)務(wù)邏輯和數(shù)據(jù)訪(fǎng)問(wèn)邏輯,并對(duì)業(yè)務(wù)邏輯層隱藏了數(shù)據(jù)庫(kù)平臺(tái),使得各層功能簡(jiǎn)潔專(zhuān)一。
控制器(controller)包括前端控制器和動(dòng)作控制器兩部分,前端控制器是框架的唯一入口,用來(lái)決定下一個(gè)動(dòng)作的實(shí)施,而動(dòng)作控制器處理完整的請(qǐng)求并調(diào)用相應(yīng)的模型生成可供view使用的數(shù)據(jù)。
視圖(view)包括顯示邏輯和模板兩部分,負(fù)責(zé)解析顯示模板生成特定的用戶(hù)視圖。
2.2 框架運(yùn)作流程
客戶(hù)端向服務(wù)器發(fā)出請(qǐng)求,服務(wù)器端使用唯一入口――前端控制器對(duì)用戶(hù)的request進(jìn)行Mapping,找到與用戶(hù)request對(duì)應(yīng)的action,動(dòng)作控制器分析請(qǐng)求內(nèi)容并調(diào)用適當(dāng)?shù)哪P瓦M(jìn)行業(yè)務(wù)邏輯處理和數(shù)據(jù)訪(fǎng)問(wèn),把處理結(jié)果發(fā)送到視圖層,由視圖層加載視圖模板,處理顯示邏輯并經(jīng)前端控制器響應(yīng)給用戶(hù)。
3 框架的實(shí)現(xiàn)
3.1 視圖技術(shù)
視圖的關(guān)鍵是使用模板技術(shù)分離PHP代碼和HTML代碼[5]。在模板文件中將需要?jiǎng)討B(tài)顯示的內(nèi)容定義成某種形式的變量,視圖層處理完顯示邏輯后將數(shù)據(jù)發(fā)送給模板解析引擎,替換模板變量生成最終的用戶(hù)視圖。
當(dāng)Web服務(wù)器接到URL請(qǐng)求后,首先判斷是否是第一次請(qǐng)求該URL。如果是,調(diào)用模板接口,交由模板解析引擎編譯該URL所需的模板和代碼文件,生成用戶(hù)視圖并輸出;否則直接定位到已經(jīng)存在的用戶(hù)視圖上。這樣除了第一次編譯成本比較高之外,其他的訪(fǎng)問(wèn)請(qǐng)求則省去了大量的重新解析和讀取時(shí)間??蚣苓€具有頁(yè)面緩存技術(shù)[6]可以將頁(yè)面生成靜態(tài)緩存,使程序運(yùn)行速度和效率得到更大的提高。
3.2 控制器設(shè)計(jì)
控制器負(fù)責(zé)接受用戶(hù)請(qǐng)求、更新模型,以及選擇合適的視圖返回給用戶(hù)??刂破饔兄趯⒛P蛯雍鸵晥D層分離,從而在同一個(gè)模型的基礎(chǔ)上開(kāi)發(fā)多種類(lèi)型的視圖。
框架將控制器設(shè)計(jì)為兩部分,前端控制器和動(dòng)作控制器。前端控制器主要負(fù)責(zé)分析用戶(hù)請(qǐng)求,并將用戶(hù)請(qǐng)求轉(zhuǎn)發(fā)給適當(dāng)?shù)膭?dòng)作控制器處理。動(dòng)作控制器主要負(fù)責(zé)調(diào)用適當(dāng)?shù)哪P蜕晒┮晥D使用的數(shù)據(jù)。
前端控制器index.php是框架的唯一入口,通過(guò)配置Apache服務(wù)器的rewrite引擎可以確保所有的頁(yè)面請(qǐng)求均傳到前端控制器,從而實(shí)現(xiàn)框架的集中控制。因此,除分析轉(zhuǎn)發(fā)用戶(hù)請(qǐng)求外,前端控制器還可以很方便地實(shí)現(xiàn)認(rèn)證(authorization)、日志(logging)和數(shù)據(jù)驗(yàn)證(validation)等功能。其關(guān)鍵代碼如下所示:
…
$action = $bd->make('ev',$bd)->get(HH);// 獲取頁(yè)面參數(shù)
if(!$action)$action = 'index';// 默認(rèn)控制器
if(file_exists(CA.$dir.$action.'.action.php')) {//檢查控制器是否存在
if($action != 'index')include CA.$dir.$action.'.action.php';// 加載動(dòng)作控制器
return new $action($bd);// 返回動(dòng)作控制器實(shí)例
}
…
動(dòng)作控制器是客戶(hù)請(qǐng)求和業(yè)務(wù)邏輯處理之間的一個(gè)適配器,將請(qǐng)求與業(yè)務(wù)邏輯分開(kāi)。動(dòng)作控制器由一組*.action.php文件實(shí)現(xiàn),所有動(dòng)作控制器均派生自抽象類(lèi)ActionControllerBase,其抽象方法display()用于向視圖傳送數(shù)據(jù)。
Abstract class ActionControllerBase{
public $bd;
public $lang;
public function __construct(&$bd){
//…
}
// …
Abstract function display();
}
3.3 數(shù)據(jù)操作
PHP支持的數(shù)據(jù)庫(kù)極其廣泛,然而PHP提供的數(shù)據(jù)庫(kù)接口支持不統(tǒng)一[7]。框架采用PDO(PHP Data Object)作為數(shù)據(jù)庫(kù)操作抽象層的基礎(chǔ),以增強(qiáng)程序代碼的可移植性。PDO旨在為多數(shù)關(guān)系數(shù)據(jù)庫(kù)API中的通用功能提供一致的API。這大大簡(jiǎn)化了PHP程序(通過(guò)封裝差別,在一個(gè)通用的API下支持不同的數(shù)據(jù)庫(kù))的開(kāi)發(fā)。
框架還對(duì)常用數(shù)據(jù)庫(kù)操作如SELECT,INSERT,UPDATE,DELETE等進(jìn)行了簡(jiǎn)單封裝,使得數(shù)據(jù)庫(kù)操作進(jìn)一步簡(jiǎn)單化,開(kāi)發(fā)者可以無(wú)需考慮SQL語(yǔ)句的具體的語(yǔ)法,而僅僅需要參考自己需要操作的數(shù)據(jù)庫(kù)表,以及所需要操作的數(shù)據(jù)庫(kù)的字段。這樣開(kāi)發(fā)者可以將更多的精力放在考慮業(yè)務(wù)邏輯上,而不是考慮SQL的語(yǔ)法上。同時(shí)這樣的封裝還可以減少程序書(shū)寫(xiě)中出錯(cuò)的概率,也減少了調(diào)試中出錯(cuò)的幾率。
4 總結(jié)
FDF框架是一種基于MVC模式的Web應(yīng)用開(kāi)發(fā)框架,它完成了用戶(hù)界面和業(yè)務(wù)邏輯的分離,為系統(tǒng)開(kāi)發(fā)提供了基本的實(shí)現(xiàn)方法和清晰的設(shè)計(jì)框架。與傳統(tǒng)的開(kāi)發(fā)方式相比,使用FDF框架開(kāi)發(fā)的Web應(yīng)用系統(tǒng)可以將模塊功能限制在局部范圍內(nèi),降低系統(tǒng)的耦合度,提高系統(tǒng)性能、可維護(hù)性和代碼的復(fù)用率,從而提高Web系統(tǒng)的開(kāi)發(fā)效率。
參考文獻(xiàn):
[1]Bisson S.,An introduction to PHP[J].Application Devel
opment Advisor,May 2002,6(4):38~41.
[2]Gamrat B.,PHP and preprocessed Web pages[J].Dr.Dobb’S Journal,January 2006,31(1):46~48.
[3]中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心.第25次互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告[R].
[4]Hofmeister C.,Nord R.L.,Soni D.,Applied Software Architecture[M].Addison Wesley,2000.
[5]李滌.基于PHP的中文模板技術(shù)的研究[D].重慶大學(xué),2004.