日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
手把手教你用Java打造一款簡單考試系統(tǒng)之二

上篇文章我們介紹了簡單考試系統(tǒng)的理論部分,這篇文章我們來一起看下其具體的實現(xiàn)。

創(chuàng)新互聯(lián)建站長期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為靈武企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站制作,靈武網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

一、項目背景

隨著移動互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)給我們帶來的是無窮的信息,也帶來了便利。與傳統(tǒng)考試模式相對比,在線考試具有很多優(yōu)越性、它可以將傳統(tǒng)考試過程中的試卷組織、傳送、收集、評判等各環(huán)節(jié)縮小到一至兩個環(huán)節(jié),不僅可以節(jié)約大量的時間、人力、物力與財力,還可以大幅度提高考試的客觀性和公正性。利用現(xiàn)有的計算機(jī)硬、軟件和網(wǎng)絡(luò)資源實現(xiàn)無紙質(zhì)考試以避免傳統(tǒng)考試的不足。

二、項目目標(biāo)

設(shè)計一款應(yīng)用程序,顯示駕照考試科目一的題目,進(jìn)行計時,當(dāng)用戶提交試卷后,判斷用戶的做題情況,統(tǒng)計得分,并顯示考試結(jié)果。

三、項目實施

首先回顧上一節(jié)的Java簡單考試系統(tǒng)(上篇),完成界面的窗口、題目和選項、顯示進(jìn)度、顯示按鈕和時間、顯示總分和表情,效果如下圖所示。

接下來,小編帶大家完成剩下的功能,具體的實現(xiàn)步驟如下。

(一)顯示背景圖,完成界面設(shè)計

1.setOpaque設(shè)置控件是否透明的,true表示不透明,false表示透明;

 
 
 
 
  1. buttona.setOpaque(false);
  2.   buttonb.setOpaque(false);
  3.   buttonc.setOpaque(false);
  4.   buttond.setOpaque(false);
  5.   
  6.   panel01.setOpaque(false);
  7.   panel02.setOpaque(false);
  8.   panel03.setOpaque(false);
  9.   panel04.setOpaque(false);

2.設(shè)置邊界

 
 
 
 
  1. label.setBounds(0, 0, bg.getIconWidth(), bg.getIconHeight());

3.把整個窗格轉(zhuǎn)化為面板

 
 
 
 
  1. imagePanel=(JPanel)this.getContentPane();
  2.  imagePanel.setOpaque(false);

4.把背景圖添加到分層窗格的最底層

 
 
 
 
  1. this.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));

效果圖如下圖所示:

(二)給控件屬性添加監(jiān)聽事件

 
 
 
 
  1. btn_last.addActionListener(ml);
  2. btn_next.addActionListener(ml);
  3. btn_finish.addActionListener(ml);
  4. buttona.addActionListener(ml);
  5. buttonb.addActionListener(ml);
  6. buttonc.addActionListener(ml);
  7. buttond.addActionListener(ml);

(三)創(chuàng)建計時器,然后讓計時器啟動

 
 
 
 
  1. timer = new Timer(1000,new TimerListener());          
  2.   timer.start();

(四)完成事件處理

1.紅色按鈕表示未做的題,綠色表示已做的題。

 
 
 
 
  1. public class MyListener implements ActionListener{
  2. @Override
  3. public void actionPerformed(ActionEvent e) {
  4.         // TODO Auto-generated method stub
  5.         for(int i=0;i<5;i++){
  6.             if(e.getSource()==btn_index[i]){//按鈕1到5
  7.                 num = i;//更新當(dāng)前題號
  8.                 showItem(num);//切換題目和選項
  9.                 showMychoice(num);//顯示已選選項
  10.                 showButton(num);//判斷顯示哪些按鈕
  11.             }
  12.         }

(1)實現(xiàn)上一題功能

 
 
 
 
  1. if(e.getSource()==btn_last){
  2.             if(num>0){
  3.                 num--;
  4.             }
  5.             showItem(num);
  6.             showMychoice(num);
  7.             showButton(num);
  8.         }

(2)實現(xiàn)下一題功能

 
 
 
 
  1. if(e.getSource()==btn_next){
  2.             if(num
  3.                 num++;
  4.             }
  5.             showItem(num);
  6.             showMychoice(num);
  7.             showButton(num);
  8.         }

(3)實現(xiàn)單選功能

 
 
 
 
  1. if(e.getSource()==buttona){
  2.             my_answer[num]=1;
  3.             btn_index[num].setBackground(Color.GREEN);
  4.         }
  5.         if(e.getSource()==buttonb){
  6.             my_answer[num]=2;
  7.             btn_index[num].setBackground(Color.GREEN);
  8.         }
  9.         if(e.getSource()==buttonc){
  10.             my_answer[num]=3;
  11.             btn_index[num].setBackground(Color.GREEN);
  12.         }
  13.         if(e.getSource()==buttond){
  14.             my_answer[num]=4;
  15.             btn_index[num].setBackground(Color.GREEN);
  16.         }

(4)交卷,停止計時器

 
 
 
 
  1. if(e.getSource()==btn_finish){//交卷
  2.             timer.stop();//停止
  3.             TextFinish();
  4.         }
  5. }
  6. }

效果圖如下圖:

2.用戶自己提交試卷,當(dāng)分?jǐn)?shù)不是滿分則顯示大哭的表情。

(1)設(shè)置選中的答案

 
 
 
 
  1. public void showItem(int i){
  2. problem.setText(str_problem[i]);
  3. buttona.setText(answer_a[i]);
  4. buttonb.setText(answer_b[i]);
  5. buttonc.setText(answer_c[i]);
  6. buttond.setText(answer_d[i]);
  7. group.clearSelection();//清空
  8. }

(2)顯示已選選項,i為當(dāng)前題號

 
 
 
 
  1. public void showMychoice(int i){
  2. switch(my_answer[i]){
  3. case 1:
  4.         buttona.setSelected(true);
  5.         break;
  6. case 2:
  7.         buttonb.setSelected(true);
  8.         break;
  9. case 3:
  10.         buttonc.setSelected(true);
  11.         break;  
  12. case 4:
  13.         buttond.setSelected(true);
  14.         break;  
  15.   }
  16. }

(3)判斷顯示哪些按鈕,i為當(dāng)前題號

 
 
 
 
  1. public void showButton (int i){
  2. if(i==0){//第一題
  3.         btn_last.setEnabled(false);
  4.         btn_next.setEnabled(true);
  5. }else if(i==str_problem.length-1){//最后一題
  6.         btn_last.setEnabled(true);
  7.         btn_next.setEnabled(false);
  8. }else{//其余題
  9.         btn_last.setEnabled(true);
  10.         btn_next.setEnabled(true);
  11.     }       
  12. }

(4)考試結(jié)束的方法

 
 
 
 
  1. public void TextFinish(){
  2. btn_last.setEnabled(false);//不能點擊
  3. btn_next.setEnabled(false);
  4. btn_finish.setEnabled(false);
  5. buttona.setEnabled(false);
  6. buttonb.setEnabled(false);
  7. buttonc.setEnabled(false);
  8. buttond.setEnabled(false);
  9. }

4.1判斷用戶選的答案是否正確

 
 
 
 
  1. for(int i=0;i<4;i++){
  2.         btn_index[i].setEnabled(false);
  3.         if(my_answer[i]==right[i]){
  4.             score=score+20;
  5.         }
  6. }

4.2 設(shè)置分?jǐn)?shù),如果分?jǐn)?shù)等于100分笑臉,反之哭臉

 
 
 
 
  1. label_score.setText("總成績:"+score);
  2. if(score==100){
  3.         image.setIcon(new ImageIcon("image//lauge.jpg"));           
  4. }else{
  5.         image.setIcon(new ImageIcon("image//cry.jpg"));
  6.   }
  7. }

效果圖如下圖:

3.考試時間到,系統(tǒng)自動提交試卷。當(dāng)分?jǐn)?shù)為滿分則顯示大笑的表情。

 
 
 
 
  1. public class TimerListener implements ActionListener{
  2. @Override
  3. public void actionPerformed(ActionEvent e) {
  4.         // TODO Auto-generated method stub
  5.         second--;
  6.         if(second<0){
  7.             minute--;
  8.             second=59;
  9.         }
  10.         label_time.setText(minute+":"+second);
  11.         if(minute==0 && second==0){
  12.             timer.stop();
  13.             label_time.setText("考試結(jié)束!");
  14.             TextFinish();
  15.         }
  16.   }
  17. }

效果圖如下圖:

四、總結(jié)

1.介紹了JLabel、JButton、JPanel、ButtonGroup、JRadioButton單選框組件的基本使用,以及相應(yīng)的事件處理,完成界面的設(shè)計。

2.事件處理函數(shù)的添加,難點是運用理解構(gòu)造函數(shù)、內(nèi)部類的創(chuàng)建。這些代碼比較簡單,也是一個簡單的小案例,希望對你有所幫助!

3.如果有需要本文項目代碼的小伙伴,可以在后臺回復(fù)“考試系統(tǒng)”四個字進(jìn)行獲取。

本文轉(zhuǎn)載自微信公眾號「Java進(jìn)階學(xué)習(xí)交流」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Java進(jìn)階學(xué)習(xí)交流公眾號。


新聞標(biāo)題:手把手教你用Java打造一款簡單考試系統(tǒng)之二
網(wǎng)頁路徑:http://www.5511xx.com/article/cciodje.html