


摘 要:作為在江蘇省教育考試系統中走在前列的蘇州市教育考試院,本著更方便廣大考生及家長的服務精神,開始著力于移動APP的開發。本文就是在此背景下,基于Android平臺,對蘇州市教育考試院移動APP的框架模式、數據庫結構、功能模塊的實現進行研究和應用。
關鍵詞:Android;MySql;MVC;考試院APP
中圖分類號:G463 文獻標識碼:A 文章編號:1992-7711(2016)01-007-2
在江蘇省教育考試機構中,蘇州市教育考試院無論是在技術創新還是在業務能力方面都在全省位列前茅。蘇州市教育考試院在全省是第一個采用中考網上報名、考試網上閱卷、全程標準化考點等技術革新的考試機構,針對現今江蘇教育考試機構移動APP這一塊的空白,蘇州教育考試院率先邁出第一步,來實現考生移動信息查閱,方便廣大考生和家長。
一、系統需求分析
一個好的系統的實現前期最為重要的工作就是需求分析,通過需求分析,來確定要做什么。并通過UML圖的輔助,來確定最終要實現什么樣的效果和功能。
1.用戶需求分析
從以下幾方面對用戶需求進行分析:
界面需求分析:安卓客戶端界面要求簡潔明了,后臺服務器端的界面則要求層次分明。
服務器端用戶需求:管理員擁有最高權限,可以查看安卓端所有顯示的新聞內容,并對其進行編輯。
安卓客戶端用戶需求分析:考生通過查看安卓客戶端,能夠查新聞,查詢數據,進行留言等。
系統安全性需求分析:由于系統內涉及的數據有一部分是考生的個人信息,為保證考生的信息不泄露,要通過一定的方式保證數據的安全性。
系統數據導入需求分析:針對考生查詢的數據,由于涉及大批量的數據,只做單獨的數據添加、編輯、刪除已不能滿足這個要求,為此要提供能夠大批量數據導入這個功能。
2.系統功能模塊圖
本系統由Android客戶端和Web服務器端兩大模塊組成,兩個模塊下面又分別有各種小模塊,具體見圖11。
3.系統數據流圖
圖12為整個系統的一個總體的數據流圖。針對的對象一個是用戶,一個是管理員。兩者通過數據流和考試院移動APP管理系統連接起來。
二、系統結構
C/S結構的優點是能充分發揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務器。對應的優點就是客戶端響應速度快。考慮到蘇州市教育考試院所發布內容的重要性、考生數據的私密性以及用戶使用的方便性,結合上述C/S的優點,本系統最終采用的是C/S體系結構。
三、數據庫設計
MySQL具有體積小、速度快、總體擁有成本低等特點。基于這些好處,同時結合本系統的數據量和資金承受能力,最終選擇了MySql數據庫進行數據的存儲。
本系統中用的是Hibernate來進行數據庫的連接。那是因為Hibernate提供一個易用的框架來實現把一個面向對象的域模型映射到一傳統的關系數據庫。它不僅負責從Java類到數據庫表格的映射,而且還提供數據查詢和檢索能力,并能大大減少花在SQL和JDBC手工數據處理上的開發時間。另外,Hibernate的查詢語言HQL完全是面向對象的,查詢的是持久對象,而不是數據庫的記錄。這一點對存有考生個人信息這些重要內容的數據庫有著一定的安全性保障。
四、客戶端設計
客戶端設計主要分為兩個部分,一個是主界面設計,一個是各功能的詳細頁面設計。客戶端主界面設置成塊狀圖片按鈕規則排列,這樣可以有利于用戶一目了然的知道點擊哪個按鈕能做些什么。本系統主界面的布局采用的線性布局嵌套的形式。這樣既簡化了布局復雜度,又能實現大小不一致的按鈕有序的排列。效果如圖41。
但在安卓模擬器中實際運行時發現,在界面較小的安卓模擬器中,主界面上的按鈕不能完全顯示出來,只能顯示部分按鈕。這個給操作帶來了很大的不便。為了解決這個問題,本系統在主界面布局中又加入了ScrollView。ScrollView即滾動視圖,它是一種可供用戶滾動的層次結構布局容器,允許顯示比實際多的內容。同時將頁面最上方的“蘇州市教育考試院”LOGO和最下方的考試院地址設置成相對布局,這樣避免這兩項因頁面滾動而不可見,做到良好的界面交互。
各功能的詳細頁面設計時涉及的內容比較多,其中最需要注意的有三點:標簽按鈕的動態加載、客戶端和服務器端數據的轉換、線程的開啟。
標簽的設計一般會采用Tab與TabHost,即標簽頁視圖。蘇州教育考試院這個移動客戶端,由于主界面中5個按鈕點擊進入的新聞列表頁面布局完全一樣,只是標簽名稱不同。如果用TabHost,就要編寫5個新聞列表頁面,每個列表頁面下還有3個標簽頁面,每個標簽頁面都要進行布局。這個工作量是比較大的,而且都是做的重復工作。為了解決這個問題,本系統中文字新聞列表頁設計成只有一個,標簽以按鈕的形式來實現。如在點擊“高校招生”進入界面的時候,通過intent.getIntExtra()來獲取“高校招生”按鈕的id為1,再通過與數據庫中所有按鈕的parent_id進行檢索,找出對應parent_id為1的標簽按鈕。這樣就實現了根據點擊不同功能主按鈕,加載不同標簽按鈕的功能。
在服務器端采用Json數據,因為它易于人閱讀和編寫,同時也易于機器解析和生成。在客戶端,主要采用的是Map數據格式中的HashMap,因為它具有超級快速的查詢速度。由于兩者數據類型不同,需要進行相應的轉換。轉換時主要是通過數組的循環存放于讀取來實現。
在整個客戶端設計時還必須考慮的一個問題就是并發問題。如果同一時間內數據量很大,客戶端又是通過服務器端來進行數據查詢的,非常有可能進行長時間的等待,甚至死機。這時就需要通過Handler的調用,在主線程下開啟一個子線程,用子線程去執行耗時的操作從而不影響主線程的正常運行。
五、服務端設計
MVC模式是軟件工程中的一種軟件架構模式,把軟件系統分為三個基本部分:模型、視圖和控制器。本系統采用的是EasyUI+SpringMVC+Hibernate的框架來實現MVC模式的。
模型方面采用Hibernate進行數據訪問,上文數據設計時已進行闡述。
視圖方面用的是jQuery EasyUI,它是一組基于jQuery的UI插件集合體。在本系統中,EasyUI的應用使得只需編寫少數的HTML代碼即可實現非常美觀的界面,大大減少了程序的開發時間與費用。
控制器方面則是通過Spring MVC來實現。Spring MVC是一種基于Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦,基于請求驅動的請求響應模型,框架的目的就是幫助我們簡化開發,也簡化了我們項目服務器端的Web開發。
六、總結與展望
這里基于研究工作進行總結,該系統適用于Android平臺下的各種手機,實現了文字新聞、圖片新聞的查看,提供了用戶考點考場的查詢,并可以在客戶端提出問題,查看考試院在地圖上的具體位置等功能。同時在服務器端還可以對客戶端顯示的內容進行一系列的操作。在整個研究過程中,也碰到了許多問題,如百度地圖調用使用的Key是根據數字證書和項目包生成的唯一值,換了電腦就無法調用。如如何通過list來將Json數據和Map數據進行轉換等等。最終通過努力相繼將這些困難克服,這也加深了對Android的了解。
后續其實還有很多東西可以研究,如客戶端功能按鈕根據用戶類型進行動態顯示,做到前端權限的劃分,從而實現管理員的移動辦公等等。在以后的工作中,將進一步做深入分析,并通過實際開發來實現這些功能,從而完善這個移動APP。