文/梁連旺
軟件主要由Sqlite輕量級數(shù)據(jù)庫搭配Eclipse ADT編寫而成。Sqlite是嵌入式的,它占用資源非常的低,在嵌入式設(shè)備中,只需要幾百K的內(nèi)存就足夠。同時它還有ODBC接口,能跟很多程序語言相結(jié)合,處理速度快。所以利用Sqlite處理數(shù)據(jù)是一個非常好的選擇。
Eclipse已經(jīng)集成了Sqlite插件,只要對Sqlite進行初始化就可以使用。在Eclipse的Package Explorer結(jié)構(gòu)體中,進入“src→com.example.項目名稱”,建立MySQL類,將Sqlite常用到的方法構(gòu)建于此類中,類中的具體內(nèi)容有:
(1)onCreate方法。當(dāng)發(fā)現(xiàn)不了目標時建立一個同名的數(shù)據(jù)庫。
public void onCreate(SQLiteDatabase arg0)
{buildDatabase();}
(2)onUpgrade方法:用于當(dāng)數(shù)據(jù)庫升級事件。
(3)數(shù)據(jù)庫的打開方法:
public MySQL(Context context, String name, CursorFactory factory, int version)
{super(context, name, null, version); }
將要打開的數(shù)據(jù)庫的信息按照context,name,factory,version填寫好,函數(shù)MySQL就會直接調(diào)用內(nèi)置方法打開數(shù)據(jù)庫,并調(diào)入內(nèi)存以供使用。
編寫好的類將會在需要的時候被其它模塊調(diào)用,具體的調(diào)用方法是:定義 MySQL sql;打開數(shù)據(jù)庫:sql=new MySQL(this,path,null,1);其中,path是需要打開的數(shù)據(jù)庫的具體位置及名稱。
APP顯示界面中,顯示出要練習(xí)的題庫號,學(xué)生姓名,題目,四個可選答案(判斷題則隱藏后面兩個選項)等相關(guān)信息。同時還有上、下一題,完成交卷,顯示答案等功能按鈕
數(shù)據(jù)庫打開后,要進行相關(guān)的內(nèi)容篩選,如題庫號、是否按順序等,記錄的篩選: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的所有記錄篩選出來。判斷題的操作方法與選擇題一樣,只是庫不同。
控件與數(shù)據(jù)的關(guān)聯(lián)則要用到數(shù)據(jù)庫 中 的 指 針 變 量cursor:cursor=sql.getReadableDatabase().rawQuery(sele_xuanze,null); “sele_xuanze”變量替代了上面的SQL語句,以增加重復(fù)性與可讀性。記錄篩選出來以后,要及時把所有的記錄轉(zhuǎn)移到數(shù)組上,從而釋放出內(nèi)存空間,并關(guān)閉數(shù)據(jù)庫。用遍歷的方法把指向的數(shù)據(jù)記錄轉(zhuǎn)移到數(shù)組上(選擇題為160題,判斷題為40題):
復(fù)制到數(shù)組的7個元素中,第一個為題目的題號,第二個為題目內(nèi)容,第三到第六個分別為A、B、C、D四個選項,第七項為參考答案。而判斷題的操作方法也與選擇題的一致,但要對答案C、D進行隱藏處理。題號改變時,每按一次“下一題”或“上一題”按鈕,rec_pointer相應(yīng)加1或減1,實現(xiàn)內(nèi)容的動態(tài)改變。
這功能的實現(xiàn)也要應(yīng)用到數(shù)組變量。在定義result數(shù)組時多定義一列為result[i][7],用于存放用戶的答案。在交卷時,通過if(result[i][7].equals(result[i][6]))進行對比,當(dāng)返回true時比對加0.5分,false時不加分,最后顯示總分。所有數(shù)據(jù)對比的操作:
通過此方法,學(xué)生可以在完成測試以后直接了解自己的成功率,達到練習(xí)的目的,起到一個積極的促進作用。同時礙于篇幅的關(guān)系,程序的一些其它功能(如實時顯示答案,交卷后重新查看答案等)不在這里鋪述。