我想设计一个学习语言的Android应用程序,其中从数据库中检索随机问题集并显示给用户。
我有不同类型的问题,例如多项选择题,填空,匹配正确的选择,将单词排列成适当的句子,听音频并回答理解问题。
如何将这些不同类型的问题存储在数据库中并随机检索并显示给用户以进行回答?
我正在使用SQLite。
最佳答案
这是一个相当广泛的问题,您需要考虑很多事情。例如,问题的建模和持久性-将它们存储在数据库中。几年前,我做了一个类似的Android应用。
我建议的第一件事是逐步进行工作。如果仅从选择题开始(全部都有四个答案),事情就会容易得多。然后,一旦您可以使用,请添加其他类型的问题。
为了对对象域建模,我建议从单个基Question
类开始。它可以包含一些通用属性,例如唯一ID,名称/简称,也许是某种难度指标。
之后,您可以拥有问题的子类型,例如MultipleChoiceQuestion
,ShortAnswerQuestion
和EssayQuestion
。它们可能具有其他属性(如可能的多重选择答案列表)。
将所有这些映射到一堆表并非易事。通常的方法是每个类一张表;另一个选择是一个包含所有类的所有属性的表,以及某种“类型”鉴别符。我建议使用前者,因为它可以更清晰地分隔属性。
最后,就随机而言,有两种方法:数据库级别的随机(效率更高,因为它返回的数据更少)或应用程序级别的随机。区别是“嘿数据库,给我N个随机问题”与“嘿数据库,给我N个随机问题;嘿应用程序,选择N个随机问题”。
要利用数据库,您可以使用答案here,而他们使用ORDER BY RANDOM() LIMIT N
。我不了解SQLite,但是在具有大量数据集的SQL Server中,这可能会非常慢。如果您有很多问题,请对其进行分析,看看这对您的应用程序是否太慢。
如果您有基本的Questions table with all questions, this will work quite easily for you. If not, you may need to do something similar where you poll for
A multiple choice questions,
B short answer questions, etc. where
A + B + ... = N`个所需的问题。
关于java - 从SQLite检索随机数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21579733/