馬浩東
隨著校園網(wǎng)的普及,許多教學工作都搬到網(wǎng)上處理了,比如學生成績錄入系統(tǒng),大大方便了學校的教學管理,同時,也對各個專業(yè)老師的計算機操作技能提出更高的要求.
由于客觀存在的課程差異,班級人數(shù)少的老師,輸入工作量不大,一般沒遇到什么太多麻煩;但是,大班課程,人數(shù)達到150以上的老師,經(jīng)常抱怨錄入工作的煩擾,由于學校服務(wù)器出于安全的考慮,一般一段時間沒有交互性操作,會自動退出登錄賬戶,而老師仍然在成績錄入頁面上辛苦的做錄入工作,等到錄完提交時卻發(fā)現(xiàn),服務(wù)器那頭已經(jīng)自動斷開,辛辛苦苦的頁面成績錄入工作等于白費,有些老師提出錄入小部分成績后,先進行保存交互操作,再繼續(xù)錄入,但是,頁面錄入需要不停地改變錄入位置,導(dǎo)致錄入大量學生成績的工作變得壓抑和煩躁,因此,許多基礎(chǔ)課老迫切希望一款外掛工具軟件.
前期調(diào)研發(fā)現(xiàn),也有其他學校類似的外掛軟件程序,但是只適合XP操作系統(tǒng),不再適用于現(xiàn)在大多數(shù)人系統(tǒng)的配置環(huán)境.因此,我們打算自行開發(fā)一款類似的工具軟件,以適應(yīng)當前老師們的迫切需要.
Java語言是1995年由Sun公司發(fā)布的,直接免費供大家應(yīng)用,源代碼也向互聯(lián)網(wǎng)上的所有人公開,由于其實用性和跨平臺特性,迅速被大家接受.Java平臺由JVM和API構(gòu)成,JVM是java程序跨平臺的關(guān)鍵,不同的平臺有不同的JVM,而java字節(jié)碼不包含任何與平臺相關(guān)的信息,不直接與平臺交互,而是通過JVM間接與平臺交互.應(yīng)用程序在執(zhí)行時,JVM加載字節(jié)碼,將字節(jié)碼解釋成特定平臺的機器碼,讓平臺執(zhí)行.任何一個應(yīng)用程序都必須轉(zhuǎn)化為機器碼,才能與計算機進行交互,如果機器碼的來源依賴于具體的平臺,那么這個應(yīng)用程序就不能跨平臺.而java應(yīng)用程序運行時機器碼由java體系的一部分JVM提供,不受平臺的限制,所以實現(xiàn)了跨平臺.
Java特點:簡單,面向?qū)ο?分布性,跨平臺,安全性,健壯性,多線程
GUI就是指圖形用戶界面,java的輸出方式有兩種,其中一種是命令行輸出,另外一種就是通過圖形界面輸出;通過GUI可以增強人機交互的體驗,使操作更加方便,給人帶來更好的視覺體驗.
高校教務(wù)系統(tǒng)成績一鍵導(dǎo)入和下載主要有瀏覽器,成績表單下載,選擇文件,成績自動填寫四大模塊組成,其整體模塊結(jié)構(gòu)圖如圖5-1所示.
圖2 -1 設(shè)計整體模塊結(jié)構(gòu)圖
在一鍵下載學生名單和導(dǎo)入之前,首先要實現(xiàn)對高校教務(wù)系統(tǒng)的訪問,該文使用Eclipse工具內(nèi)嵌一個基于JWebBrowser瀏覽器來實現(xiàn),JWeb-Browser調(diào)用客戶本機瀏覽器,通常是IE;瀏覽器實現(xiàn)部分代碼如下,
//開啟本地接口
NativeInterface.open();
//開辟一個線程來跑瀏覽器
UIUtils.setPreferredLookAndFeel();
//設(shè)置瀏覽器的默認網(wǎng)址為www.baidu.com
final JWebBrowser wbs=new JWebBrowser();
wbs.navigate("http://www.baidu.com");
界面是一個直接反映信息交互的平臺,起著舉足輕重的作用,該文采用BorderLayout邊界布局管理器和FlowLayout流式布局管理器.
BorderLayout是將每個組件放在指定的東南西北中五個方向之一,并調(diào)整其大小,使其在東南西北方向的控件貼邊放置.
FlowLayout是最簡單的布局,是將各個控件按照從左到右的次序依次排放,遇到邊界就另起一行再按照順序排放.
選擇好的容器后再在其中添加各個控件,我們這里主要用到的是Panel和Frame容器.頁面布局部分代碼如下:
JFrame frame=new JFrame("網(wǎng)頁表單便捷式輸入工具1.0");//JFrame是最底層,JPanel是置于其面上
JPanel jp1 = new JPanel(new Border-Layout());//瀏覽器放在面板的中間
final JWebBrowser wbs=new JWebBrowser();
wbs.navigate("http://www.baidu.com");
jp1.add(wbs,BorderLayout.CENTER);
frame.getContentPane().add(jp1, BorderLayout.CENTER);
JButton b1=new JButton("下載");//將三個按鈕控件按照流式布局排列
JButton b2=new JButton("自動填寫");
final JButton b3=new JButton("選擇文件");
JPanel buttonPanel=new JPanel(new FlowLayout());
buttonPanel.add(b1);
buttonPanel.add(b2);
buttonPanel.add(b3);
JPanel jp=new JPanel(new BorderLayout());//將buttonPanel按邊界布局放在jp的南方向上
jp.add(buttonPanel,BorderLayout.SOUTH);
frame.add(jp,BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(850, 600);
frame.setLocationByPlatform(true);
frame.setVisible(true);
界面如圖3-1所示:
圖3 -1
通過對成績錄入界面的分析,其中最關(guān)鍵的就是對框架iframe的操作,通過document.frames來得到操作的表單所在的HTML,然后對Document對象所包含的HTML所指定的元素進行操作,最后通過Eclipse把excel中的有效數(shù)據(jù)解析出來,然后把數(shù)據(jù)導(dǎo)入到網(wǎng)頁的對應(yīng)的空的框里,該模塊的主要語法為:
document.getElementById(id)
此語法是查找網(wǎng)頁中的一個特定的元素最有效的方法,在操作HTML中的的一個特定的元素時,最好給該元素一個id屬性,為它指定一個(在HTML中)唯一的名稱,然后就可以用該ID查找想要的元素.部分代碼如下,代碼的功能是把excel中的有效數(shù)據(jù)解析出來錄入到網(wǎng)頁的對應(yīng)的框里
String s = "var a = document.frames['iframeautoheight'].document.getElementById ('Data-Grid1__ctl2_ps');a.value="+alist.get(0)+"";
String s1 = "var a = document.frames['iframeautoheight'].document.getElementById('Data-Grid1__ctl2_qm');a.value="+alist.get(1)+"";
wbs.executeJavascriptWithResult(s);
wbs.executeJavascriptWithResult(s1);
高校教務(wù)系統(tǒng)是采用ASP.NET的WinForm開發(fā)的,成績錄入頁面采用了DataGrid控件,Data-Grid控件是用來顯示數(shù)據(jù)的一個極其高效的網(wǎng)格控件,并提供了選擇、分組、排序等功能.DataGrid同時可以縮短開發(fā)時間,操作簡單.此模塊的作用就是把數(shù)據(jù)從DataGrid控件中爬取出來填充到excel中來實現(xiàn)學生成績表單下載的功能,因為vb短小精煉,執(zhí)行效率高,所以此模塊的功能通過java調(diào)用vb編寫的dll來實現(xiàn),vb部分代碼如下:
Set mytable=WebBrowser1.Document.frames("zhuti").Document.getelementbyid("DataGrid1")
For x=0 To mytable.Rows.length-1
For y=0 To mytable.Rows(x).Cells.length-4
xlSheet.Cells(x+1,y+1)=mytable.Rows(x).Cells(y).innertext
Nexty
Nextx
xlSheet.Columns.EntireColumn.AutoFit
xlapp.DisplayAlerts = False
xlBook.Close True'先保存修改再關(guān)閉工作簿
xlapp.Application.Quit
隨著現(xiàn)代教育的普及,各高校教學工作的開展效率至關(guān)重要,無紙化辦公的出現(xiàn)更讓老師們習慣將各科成績登記在EXCEL表格中,在將成績錄入到各高校正方系統(tǒng)的過程中,將EXCEL表格里的成績快速導(dǎo)入到成績錄入頁面顯得尤為重要.因此,開發(fā)一個成績錄入輔助系統(tǒng)是極其必要的.本文提供教師離線完成成績錄入工作,一鍵完成網(wǎng)上提交工作,解決了成績錄入的效率問題.