Sqlite实现学生考证练习软件
2019-04-28梁连旺
文/梁连旺
软件主要由Sqlite轻量级数据库搭配Eclipse ADT编写而成。Sqlite是嵌入式的,它占用资源非常的低,在嵌入式设备中,只需要几百K的内存就足够。同时它还有ODBC接口,能跟很多程序语言相结合,处理速度快。所以利用Sqlite处理数据是一个非常好的选择。
1 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是需要打开的数据库的具体位置及名称。
2 构建人机交互界面
APP显示界面中,显示出要练习的题库号,学生姓名,题目,四个可选答案(判断题则隐藏后面两个选项)等相关信息。同时还有上、下一题,完成交卷,显示答案等功能按钮
3 控件与数据库内容相对应
数据库打开后,要进行相关的内容筛选,如题库号、是否按顺序等,记录的筛选: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,实现内容的动态改变。
4 评分功能的实现
这功能的实现也要应用到数组变量。在定义result数组时多定义一列为result[i][7],用于存放用户的答案。在交卷时,通过if(result[i][7].equals(result[i][6]))进行对比,当返回true时比对加0.5分,false时不加分,最后显示总分。所有数据对比的操作:
通过此方法,学生可以在完成测试以后直接了解自己的成功率,达到练习的目的,起到一个积极的促进作用。同时碍于篇幅的关系,程序的一些其它功能(如实时显示答案,交卷后重新查看答案等)不在这里铺述。