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閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內容