Android小项目--答题系统

DBService.class

//此类用于连接数据库public class DBService {    
private SQLiteDatabase db;    
public DBService(){        
db=SQLiteDatabase.openDatabase("/data/data/test.ljh.com.answering/databases/question.db",null,SQLiteDatabase.OPEN_READWRITE);    }    
public List<Question> getQuestions(){        
List<Question> list=new ArrayList<Question>();        
Cursor cursor=db.rawQuery("select * from question",null);        
if(cursor.getCount()>0){            //大于0表示取得数据            
cursor.moveToFirst();            
int count=cursor.getCount();           
 for(int i=0;i<count;i++){                
cursor.moveToPosition(i);               
 Question question=new Question();                
question.question=cursor.getString(cursor.getColumnIndex("question"));                
question.answerA=cursor.getString(cursor.getColumnIndex("answerA"));                
question.answerB=cursor.getString(cursor.getColumnIndex("answerB"));                
question.answerC=cursor.getString(cursor.getColumnIndex("answerC"));                
question.answerD=cursor.getString(cursor.getColumnIndex("answerD"));                
question.answer=cursor.getInt(cursor.getColumnIndex("answer"));                
question.ID=cursor.getInt(cursor.getColumnIndex("ID"));                
question.explaination=cursor.getString(cursor.getColumnIndex("explaination"));                //表示没有选择任何选项                
question.selectedAnswer=-1;               
 list.add(question);            
}        }       
 return list;    }}

ExamActivity.class

public class ExamActivity extends AppCompatActivity {    
private int count;   
 private int current;    
private boolean wrongMode;   
 @Override    
protected void onCreate(Bundle savedInstanceState) {        
super.onCreate(savedInstanceState);        
setContentView(R.layout.activity_exam);        
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);        
setSupportActionBar(toolbar);       
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);        
fab.setOnClickListener(new View.OnClickListener() {            @Override            
public void onClick(View view) {                
Snackbar.make(view, "Replace with your own action", 
Snackbar.LENGTH_LONG)                        .setAction("Action", null).show();            }        });       
 
DBService dbService=new DBService();        
final List<Question> list=dbService.getQuestions();        
count=list.size();       
 current=0;        
wrongMode=false;       
 final TextView tv_question=(TextView)findViewById(R.id.question);        
final RadioButton[] radioButtons=new RadioButton[4];        
radioButtons[0]=(RadioButton)findViewById(R.id.answerA);        
radioButtons[1]=(RadioButton)findViewById(R.id.answerB);        
radioButtons[2]=(RadioButton)findViewById(R.id.answerC);        
radioButtons[3]=(RadioButton)findViewById(R.id.answerD);        
Button btn_next=(Button)findViewById(R.id.btn_next);        Button 
btn_previous=(Button)findViewById(R.id.btn_previous);        final 
TextView tv_explaination=(TextView)findViewById(R.id.explaination);        
final RadioGroup radioGroup=(RadioGroup)findViewById(R.id.radioGroup);        
Question q=list.get(0);        
tv_question.setText(q.question);        
tv_explaination.setText(q.explaination);        
radioButtons[0].setText(q.answerA);        
radioButtons[1].setText(q.answerB);        
radioButtons[2].setText(q.answerC);        
radioButtons[3].setText(q.answerD);        
btn_next.setOnClickListener(new View.OnClickListener() {            
@Override            
public void onClick(View v) {                
if (current < count - 1) {                   
 current++;                  
  Question q = list.get(current);                    
tv_question.setText(q.question);                    
tv_explaination.setText(q.explaination);                    
radioButtons[0].setText(q.answerA);                    
radioButtons[1].setText(q.answerB);                    
radioButtons[2].setText(q.answerC);                    
radioButtons[3].setText(q.answerD);                    
radioGroup.clearCheck();                    
if (q.selectedAnswer != -1) {                        
radioButtons[q.selectedAnswer].setChecked(true);                    }                
} 
else if (current == count - 1 && wrongMode == true) {                    
new AlertDialog.Builder(ExamActivity.this)                            .setTitle("提示")                           
 .setMessage("已经到达最后一题,是否退出?")                            
.setPositiveButton("确定", new DialogInterface.OnClickListener() {                                @Override                                
public void onClick(DialogInterface dialog, int which) {                                    
ExamActivity.this.finish();                               
 }                     
       })                          
  .setNegativeButton("取消",null)                       
     .show();              
  } else {           
         final List<Integer> wrongList = checkAnswer(list);                    
new AlertDialog.Builder(ExamActivity.this)                            
.setTitle("提示")                            
.setMessage("你答对了" + (list.size() - wrongList.size()) +                                    "道题目,答错了" + wrongList.size() + "道题目,是否查看错题?")                            
.setPositiveButton("确定", new DialogInterface.OnClickListener() {                                
@Override                                
public void onClick(DialogInterface dialog, int which) {                                    
wrongMode = true;                                   
 List<Question> newList = new ArrayList<Question>();                                    
for (int i = 0; i < wrongList.size(); i++) {                                        
newList.add(list.get(wrongList.get(i)));                                    }                                    
list.clear();                                    
for (int i = 0; i < newList.size(); i++) {                                        
list.add(newList.get(i));                                    }                                    
current = 0;                                   
 count = list.size();                                   
 Question q = list.get(current);                                    
tv_question.setText(q.question);                                    
tv_explaination.setText(q.explaination);                                    
radioButtons[0].setText(q.answerA);                                    
radioButtons[1].setText(q.answerB);                                    
radioButtons[2].setText(q.answerC);                                    
radioButtons[3].setText(q.answerD);                                    
tv_explaination.setVisibility(View.VISIBLE);                                }                            
})                            
.setNegativeButton("取消", new DialogInterface.OnClickListener() {                                
@Override                               
 public void onClick(DialogInterface dialog, int which) {                                    
ExamActivity.this.finish();                                }                            
}).show();                }            }        });        
btn_previous.setOnClickListener(new View.OnClickListener() {            
@Override           
 public void onClick(View v) {               
 if (current > 0)//当前问题是否第一个问题,大于0表示不是             
   {                   
 current--;           
         Question q = list.get(current);                    
tv_question.setText(q.question);                    
tv_explaination.setText(q.explaination);                    
radioButtons[0].setText(q.answerA);                    
radioButtons[1].setText(q.answerB);                    
radioButtons[2].setText(q.answerC);                    
radioButtons[3].setText(q.answerD);                    
radioGroup.clearCheck();                  
  if (q.selectedAnswer != -1) {                        
radioButtons[q.selectedAnswer].setChecked(true);                    }                
}            }        });       
 radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){            
@Override            
public void onCheckedChanged(RadioGroup group, int checkedId) {                
for(int i=0;i<4;i++){                    
if(radioButtons[i].isChecked()==true){                        
list.get(current).selectedAnswer=i;                        
break;                    
}                }            }        });    }   
 private List<Integer> checkAnswer(List<Question> list){        
List<Integer> wrongList=new ArrayList<Integer>();        
for(int i=0;i<list.size();i++){            
if(list.get(i).answer!=list.get(i).selectedAnswer){                
wrongList.add(i);       
     }        }      
  return  wrongList; 
   }}

MainActivity

public class MainActivity extends AppCompatActivity {   
 @Override   
 protected void onCreate(Bundle savedInstanceState) {        
super.onCreate(savedInstanceState);        
setContentView(R.layout.activity_main);        String 
DB_PATH="/data/data/test.ljh.com.answering/databases/";        
String DB_NAME="question.db";       
 if((new File(DB_PATH+DB_NAME).exists())==false){           
 File dir=new File(DB_PATH);            
if(!dir.exists()){               
 dir.mkdir();          
  }           
 try{                    
InputStream is=getBaseContext().getAssets().open(DB_NAME);                
OutputStream os=new FileOutputStream(DB_PATH+DB_NAME);                
byte[] buffer=new byte[1024];               
 int length;                
while ((length=is.read(buffer))>0){                    
os.write(buffer,0,length);               
 }              
 os.flush();        
        os.close();     
           is.close();      
      } catch (IOException e) {               
 e.printStackTrace();       
     }    
    }      
  Button btn=(Button)findViewById(R.id.button);        
btn.setOnClickListener(new View.OnClickListener() {            
@Override           
 public void onClick(View v) {               
 Intent intent=new Intent(MainActivity.this,ExamActivity.class);                
startActivity(intent);         
   }      
  });   
 }}

Question.class

public class Question {    
public String question;    
public String answerA;    
public String answerB;  
  public String answerC;  
  public String answerD;    
public int answer;   
 public String explaination;   
 public int ID;   
 public int selectedAnswer;}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容