文/梁連旺
軟件主要由Sqlite輕量級數據庫搭配Eclipse ADT編寫而成。Sqlite是嵌入式的,它占用資源非常的低,在嵌入式設備中,只需要幾百K的內存就足夠。同時它還有ODBC接口,能跟很多程序語言相結合,處理速度快。所以利用Sqlite處理數據是一個非常好的選擇。
Eclipse已經集成了Sqlite插件,只要對Sqlite進行初始化就可以使用。在Eclipse的Package Explorer結構體中,進入“src→com.example.項目名稱”,建立MySQL類,將Sqlite常用到的方法構建于此類中,類中的具體內容有:
(1)onCreate方法。當發現不了目標時建立一個同名的數據庫。
public void onCreate(SQLiteDatabase arg0)
{buildDatabase();}
(2)onUpgrade方法:用于當數據庫升級事件。
(3)數據庫的打開方法:
public MySQL(Context context, String name, CursorFactory factory, int version)
{super(context, name, null, version); }
將要打開的數據庫的信息按照context,name,factory,version填寫好,函數MySQL就會直接調用內置方法打開數據庫,并調入內存以供使用。
編寫好的類將會在需要的時候被其它模塊調用,具體的調用方法是:定義 MySQL sql;打開數據庫:sql=new MySQL(this,path,null,1);其中,path是需要打開的數據庫的具體位置及名稱。
APP顯示界面中,顯示出要練習的題庫號,學生姓名,題目,四個可選答案(判斷題則隱藏后面兩個選項)等相關信息。同時還有上、下一題,完成交卷,顯示答案等功能按鈕
數據庫打開后,要進行相關的內容篩選,如題庫號、是否按順序等,記錄的篩選:select* from xuanz where NO like "+"'"+"3"+values.sele_th+"%"+"'"。這是將選擇題從選擇題庫篩選出來,sele_th是題庫號,在別的頁面輸入,如第5套題,則sele_th的值為5。總的語句表達的意思就是:select * from xuanz where NO like “305%”在選擇題題庫中將NO字段前面為305的所有記錄篩選出來。判斷題的操作方法與選擇題一樣,只是庫不同。
控件與數據的關聯則要用到數據庫 中 的 指 針 變 量cursor:cursor=sql.getReadableDatabase().rawQuery(sele_xuanze,null); “sele_xuanze”變量替代了上面的SQL語句,以增加重復性與可讀性。記錄篩選出來以后,要及時把所有的記錄轉移到數組上,從而釋放出內存空間,并關閉數據庫。用遍歷的方法把指向的數據記錄轉移到數組上(選擇題為160題,判斷題為40題):
復制到數組的7個元素中,第一個為題目的題號,第二個為題目內容,第三到第六個分別為A、B、C、D四個選項,第七項為參考答案。而判斷題的操作方法也與選擇題的一致,但要對答案C、D進行隱藏處理。題號改變時,每按一次“下一題”或“上一題”按鈕,rec_pointer相應加1或減1,實現內容的動態改變。
這功能的實現也要應用到數組變量。在定義result數組時多定義一列為result[i][7],用于存放用戶的答案。在交卷時,通過if(result[i][7].equals(result[i][6]))進行對比,當返回true時比對加0.5分,false時不加分,最后顯示總分。所有數據對比的操作:

通過此方法,學生可以在完成測試以后直接了解自己的成功率,達到練習的目的,起到一個積極的促進作用。同時礙于篇幅的關系,程序的一些其它功能(如實時顯示答案,交卷后重新查看答案等)不在這里鋪述。