成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

手把手教你用Java打造一款簡單考試系統之二

開發 后端
設計一款應用程序,顯示駕照考試科目一的題目,進行計時,當用戶提交試卷后,判斷用戶的做題情況,統計得分,并顯示考試結果。

[[380638]]

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

一、項目背景

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

二、項目目標

設計一款應用程序,顯示駕照考試科目一的題目,進行計時,當用戶提交試卷后,判斷用戶的做題情況,統計得分,并顯示考試結果。

三、項目實施

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

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

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

1.setOpaque設置控件是否透明的,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.設置邊界

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

3.把整個窗格轉化為面板

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

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

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

效果圖如下圖所示:

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

  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); 

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

  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;//更新當前題號 
  8.                 showItem(num);//切換題目和選項 
  9.                 showMychoice(num);//顯示已選選項 
  10.                 showButton(num);//判斷顯示哪些按鈕 
  11.             } 
  12.         } 

(1)實現上一題功能

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

(2)實現下一題功能

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

(3)實現單選功能

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

(4)交卷,停止計時器

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

效果圖如下圖:

2.用戶自己提交試卷,當分數不是滿分則顯示大哭的表情。

(1)設置選中的答案

  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();//清空 

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

  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.   } 

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

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

(4)考試結束的方法

  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); 

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.         } 

4.2 設置分數,如果分數等于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.   } 

效果圖如下圖:

3.考試時間到,系統自動提交試卷。當分數為滿分則顯示大笑的表情。

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

效果圖如下圖:

四、總結

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

2.事件處理函數的添加,難點是運用理解構造函數、內部類的創建。這些代碼比較簡單,也是一個簡單的小案例,希望對你有所幫助!

3.如果有需要本文項目代碼的小伙伴,可以在后臺回復“考試系統”四個字進行獲取。

本文轉載自微信公眾號「Java進階學習交流」,可以通過以下二維碼關注。轉載本文請聯系Java進階學習交流公眾號。

 

責任編輯:武曉燕 來源: Java進階學習交流
相關推薦

2021-02-01 08:41:06

Java考試系統

2021-01-05 09:04:20

Javatxt文件

2023-05-22 10:04:24

2021-01-04 09:55:26

Java移動互聯網

2017-09-14 09:09:04

php應用LibreOfficeWord轉HTML

2022-02-17 10:26:17

JavaScript掃雷游戲前端

2021-01-10 08:14:01

Go語言TCP掃描器

2021-11-01 10:26:07

CanvasAPI畫布技術HTML5

2021-12-30 08:56:57

Python摸魚倒計界面Python基礎

2021-08-13 09:01:31

Python小游戲Python基礎

2024-01-07 20:00:27

2021-01-21 06:04:55

Go語言TCP目錄生成器

2022-10-19 14:30:59

2021-08-09 13:31:25

PythonExcel代碼

2021-01-13 09:03:48

Java游戲函數

2021-01-12 05:05:15

Java對碰游戲

2022-08-04 10:39:23

Jenkins集成CD

2011-03-28 16:14:38

jQuery

2021-02-04 09:00:57

SQLDjango原生

2021-02-06 14:55:05

大數據pandas數據分析
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品99久久久久久宅男 | 97色在线视频 | 国产精品久久久久久久一区探花 | 一级毛片色一级 | 亚洲欧美综合精品久久成人 | 欧美福利视频一区 | 亚洲精品高清视频在线观看 | 亚洲一区中文字幕在线观看 | 久热免费| 久久久久亚洲精品 | 激情欧美日韩一区二区 | 国产aⅴ爽av久久久久久久 | 麻豆国产一区二区三区四区 | 精品久久久久一区 | 天天天堂| 国产欧美在线一区 | 国产成人精品网站 | 蜜臀久久99精品久久久久野外 | 亚洲国产一区二区在线 | 99热激情 | 精精国产视频 | 午夜影院在线免费观看视频 | 日本三级做a全过程在线观看 | www久久久 | 欧洲精品在线观看 | 日日夜夜精品视频 | 国产高清免费在线 | 天堂在线中文 | 国产精品我不卡 | av毛片 | 国产a级毛毛片 | 日本a网站 | 成人三级视频 | 日韩一区二区在线视频 | 国产区精品 | 高清一区二区 | 麻豆av网站 | 精品久久国产 | 精品国产乱码一区二区三区 | 欧美国产精品一区二区三区 | 国产性色视频 |