李艷杰
(山東華宇工學院,山東 德州 253034)
JAVA語言是近五年來位居編程排行前3位的語言,應用非常廣泛,無論是網站設計還是系統開發都與Java有關。MySQL數據庫作為開源數據庫,其小而精,有免費和收費的區分,是中小型企業開發系統后臺的首選數據庫。但是針對移動端系統,數據庫的選擇要盡量使用平臺自帶內置數據庫SQLite,以方便編輯和后臺連接。本系統的設計結合軟件工程思想,采用面向對象程序設計方式來實現。
本系統分為前臺和后臺,后臺利用數據庫保存數據,題目類型以單選題和多項題為主。后臺數據庫可以根據需要設置存儲題庫的數目,題庫練習主要以客觀題為主,這樣系統可以準確判定對錯。
單項選擇、多項選擇和判斷采用不同的答題界面,系統會自動根據試題類型給出當前試題對應的答題界面,每一屏顯示一道試題,界面中有“上一題”和“下一題”的答題按鈕,練習者可以單擊按鈕切換答題,也可以前后翻動瀏覽練習題并作答,練習完成一道題,單擊“確定”按鈕,可得到正確答案,單擊“重新答題”按鈕可重新進行答題,也可以單擊“糾錯”按鈕進行糾錯。有的題目內容較多,需要上下滑動進行練習,如圖1所示。
圖1 單選題界面Fig.1 Interface of single choice
系統設計包括對數據庫中表的存儲設計、應用界面的設計和應用功能的實現三部分。
經過概念結構設計、邏輯結構設計和物理結構設計,最終得到數據庫中的表。物理結構如表1所示。
表1 物理結構Tab.1 Physical structure
該系統練習界面運用嵌套不均設計,嵌套了多個面板,練習題內容、編號、解答控件均在頁面中顯示。練習題庫中的題目是將單選和多選存儲在一起,界面中沒有安排題型切換按鈕,每套題中練習的順序是按照先單選后多選進行的,但是會有提示和控件類型的轉換,單選按鈕會變成復選框。
面向對象設計實現需要根據實際要求設計多個類,類與類之間可以體現繼承或多態。本系統設計的類如下。
2.3.1 練習題信息類 E_infor
public class E_infor{
int e_id; //練習題編號
String e_content; //練習題內容
String e_typy; //練習題類型
String e_answer; //練習題答案
}
2.3.2 界面類E_frame
界面類的設計包括事件驅動的界面設計和數據的訪問處理,這樣可以提高訪問效率,練習題內容、答案、題型會在此數據庫讀取,并封裝到E_infor類創建的對象中,保存在一個存放引用類型的數組列表E_list中,系統中設置與練習題有關的成員變量,以練習題編號作為索引,連接到數組列表,得到當前相關聯的信息,三個變量定義如下:
ArrayList
Int e_sum:存放練習題數量;
Int e_id:存放練習題編號。
除此之外,在此類中還將控件作為成員變量,定義數組分別存放4個單選項和4個復選項,用數組可以循環實現訪問。除了成員變量,以下是主要的構造方法和成員方法的設計。
構造方法E_frame():數據的初始化處理、界面的布局顯示、注冊事件監聽等均在此構造方法中實現。
成員方法xianshi():為了方便用戶隨時翻動題目,查看完成解答的題目及修改答案,解答控件的顯示處理在該方法中實現,用戶已有解答題項也會進行正確設置。
成員方法access_e():訪問數據庫,將所有的練習題信息存入到E_list數組中。部分代碼如下:
public void access_e(){
int stbn=0;
String url="jdbc:odbc:mydata";
String sql="select * from exispaper";
try{class forName("sun.jdbc.odbc.jdbxOdbcDriver");
Connection con=DriverManager.getConnection(url, "", null);
ResultSet rs=stmt.executQuery(sql);
while(rs.next())
E_infor m=new E_infor();
m.content=rs.getString("content");
m.e_answer=rs.getString("answer");
……
amout=question.size();}
catch(SQLException ex){System.out.println(ex.getMessage());}
catch(java.lang.ClassNotFoundException e){}
}
移動端題庫練習系統從具體功能和具體設計兩方面描述了系統設計過程,由于系統設計代碼眾多,所以僅僅加入了部分類和方法的代碼代替。本系統完成后可以非常方便地隨時隨地通過移動終端對題庫中的習題進行練習,為學生提供了很好的題庫練習平臺。