Đánh giá chủ đề:
  • 5 Votes - 2.8 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Tạo chương trình trắc nghiệm bằng Access
#1
Tôi xin trình bày một ví dụ đơn giản nhưng rất cơ bản để từ đó bạn có thể tự "chíp" theo ý đồ của mình. Ví dụ: số câu hỏi cho mỗi lần trắc nghiệm là 30 (được chọn ngẫu nhiên từ ngân hàng câu hỏi), chọn 1 trong 4 đáp án.

Giả sử ứng dụng Access có tên là DataTN.MDB. Bạn tạo một table có tên NganHangCauHoi để chứa ngân hàng các câu hỏi, có cấu trúc như bảng 1. Bảng này chứa số lượng không hạn chế các câu hỏi, mỗi câu hỏi được đánh số tự động, và có 4 mục tin (TraLoi1, TraLoi2, TraLoi3, TraLoi4) chứa nội dung 4 câu trả lời mà thí sinh có thể chọn. Mục tin DapAnDung chứa số thứ tự (từ 1 đến 4) của câu trả lời đúng. Mục tin DaDuocChon dùng để đánh dấu câu hỏi nào đã được chọn trong quá trình lựa chọn ngẫu nhiên 30 câu hỏi dùng cho bộ đề. Bạn cần phải thiết kế một form để nhập liệu vào bảng này.
Tương tự, bạn cần tạo bảng DeThiVaKetQua như trong bảng 2 để chứa bộ đề 30 câu hỏi. Bảng này có mục tin DapAnDuocChon cho biết thí sinh đã chọn câu trả lời nào trong 4 câu trả lời được phép. Giả sử: trả lời đúng được 1 điểm, trả lời sai được 0 điểm. Tạo một query có tên qryDeThiVaKetQua như hình 2 để làm Record Source cho form trắc nghiệm.
Sau khi thiết kế xong cấu trúc các bảng, việc đầu tiên bạn nên làm là nhập hơn 30 câu hỏi vào ngân hàng câu hỏi.
Bạn thiết kế biểu mẫu trắc nghiệm như trong hình 1. Khi thiết kế biểu mẫu này, cần lưu ý:
Đặt thuộc tính AllowAdditions của form là No. Thuộc tính Locked của ô SoThuTu và NoiDung là Yes.
Đặt tên cho frame chứa 4 đáp án là grpTraLoi. Đặt tên cho các label liên kết với mỗi option thuộc grpTraLoi lần lượt là lblTraLoi1, lblTraLoi2, lblTraLoi3, lblTraLoi4 theo thứ tự từ trên xuống.
Đặt tên cho 2 nút lệnh Kết quả và Chọn đề là cmdKetQua và cmdChonDe. Xong, bạn gõ vào đoạn mã 1 (xử lý tình huống).

Đoạn mã 1
Code:
Mã:
Private Sub Form_Current()
    ‘ Nội dung 4 đáp án liệt kê mỗi lần chuyển sang câu khác
    lblTraLoi1.Caption = Me.TraLoi1  
    lblTraLoi2.Caption = Me.TraLoi2
    lblTraLoi3.Caption = Me.TraLoi3
    lblTraLoi4.Caption = Me.TraLoi4
    grpTraLoi = Me.DapAnDuocChon
End Sub
Private Sub grpTraLoi_Click()
    Me.DapAnDuocChon = grpTraLoi   ‘ Khi thí sinh chọn đáp án
End Sub
Private Sub cmdChonDe_Click()
     Dim db As Database, tbDeThi As Recordset, tbNganHang As Recordset
     Dim rsTamThoi As Recordset
     Dim nSoLuongCau As Byte, I As Byte, sSQL As String
     Dim nTongSoCauTrongNH As Long, nSoNgauNhien As Long
     nSoLuongCau = 30    ' Giả sử 30 câu
     Set db = CurrentDb
     ' Tạm thời không kiểm tra trường hợp số lượng câu hỏi cần chọn có lớn hơn
     ' hay bằng tổng số câu trong ngân hàng đề thi không
     Set tbNganHang = db.OpenRecordset("NganHangCauHoi")
     tbNganHang.MoveFirst
     If tbNganHang.EOF Then
          MsgBox "Không có câu hỏi trong ngân hàng dữ liệu đề thi !"
          tbNganHang.Close
          db.Close
          Exit Sub
     End If
     ' Xóa đề trước đó
     sSQL = "DELETE * FROM DeThiVaKetQua;"
     db.Execute sSQL    
     ' Tính tổng số câu hỏi trong ngân hàng đề thi
     sSQL = "SELECT Max(SoThuTu) AS TongSoCauHoi FROM NganHangCauHoi"
    Set rsTamThoi = db.OpenRecordset(sSQL)
     rsTamThoi.MoveFirst
     nTongSoCauTrongNH = rsTamThoi!TongSoCauHoi
     rsTamThoi.Close
     Set tbDeThi = db.OpenRecordset("DeThiVaKetQua")
      ' Tạo đề mới
     tbNganHang.Index = "SoThuTu"
     For I = 1 To nSoLuongCau
          Do While True
             nSoNgauNhien = Int((nTongSoCauTrongNH * Rnd) + 1)   ‘ Chọn số thứ tự ngẫu nhiên
             tbNganHang.Seek "=", nSoNgauNhien
             If Not tbNganHang.NoMatch Then   ' chắc chắn tìm thấy
                    If Not tbNganHang!DaDuocChon Then   ' Câu này chưa chọn
                        tbDeThi.AddNew
                        tbDeThi!SoThuTu = I
                        tbDeThi!NoiDung = tbNganHang!NoiDung
                        tbDeThi!TraLoi1 = tbNganHang!TraLoi1
                        tbDeThi!TraLoi2 = tbNganHang!TraLoi2
                        tbDeThi!TraLoi3 = tbNganHang!TraLoi3
                        tbDeThi!TraLoi4 = tbNganHang!TraLoi4
                        tbDeThi!DapAnDung = tbNganHang!DapAnDung
                        tbDeThi!DapAnDuocChon = 0
                        tbDeThi.Update
                        ' Đánh dấu đã chọn câu này để đưa vào bộ đề thi rồi
                        tbNganHang.Edit
                        tbNganHang!DaDuocChon = True
                        tbNganHang.Update
                        Exit Do
                    End If
              End If
          Loop
     Next
     tbDeThi.Close
     '  Đánh dấu chưa được chọn đối với các câu hỏi trong ngân hàng đề thi
     tbNganHang.Close
     sSQL = "UPDATE NganHangCauHoi SET DaDuocChon = False WHERE DaDuocChon = True"
     db.Execute (sSQL)
     db.Close
     '  Bộ đề mới đã tạo xong, hiển thị lại trên biểu mẫu
     Me.Requery
     SoThuTu.SetFocus            ‘ Để có thể disable nút Chọn đề
     cmdChonDe.Enabled = False   ‘ Không cho chọn đề khác nữa
End Sub
Private Sub cmdKetQua_Click()
     Dim nTongDiem As Byte, rs As Recordset
     Set rs = Me.Recordset
     nTongDiem = 0
     With rs
          .MoveFirst
          While Not .EOF
               nTongDiem = nTongDiem + IIf(!DapAnDuocChon = !DapAnDung, 1, 0)
               .MoveNext
          Wend
          .MoveFirst
     End With
     MsgBox "Tổng số điểm đạt được là: " & nTongDiem, vbInformation, Me.Caption
     Set rs = Nothing
End Sub

[Hình: cautruc.JPG]

[Hình: hoidap.jpg]

[Hình: hoidap3.jpg]

Query cho form

CHƯƠNG CAN CHÍP : st từ Theo Echip
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Hạ Vàng , Cafe Via He , haquocquan , huynguyenbd , hugox03
#2
Đang có nhu cầu tạo hệ thống câu hỏi để tổ chức tập huấn cho cán bộ
No có file DEMO nào không cho xin một bản.
Lười thiết kế quá.
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#3
Chưa có! Cái này hồi đó copy từ echip về, không down được demo của nó!
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#4
Mình xin lỗi No.
haquocquan ơi bản demo đây nhé
http://www.mediafire.com/?fnlca7py66mqhgl
Chữ ký của nguyenbalai Càng học càng thấy mình ngu, vì thấy mình ngu nên càng phải học!
Reply
Những người đã cảm ơn haquocquan , Noname , Hạ Vàng , DoquangLam
#5
Đây là bản demo chương trình trắc nghiệm như trên
http://www.mediafire.com/?fnlca7py66mqhgl
Chữ ký của nguyenbalai Càng học càng thấy mình ngu, vì thấy mình ngu nên càng phải học!
Reply
Những người đã cảm ơn Noname , haquocquan , DoquangLam
#6
link die rùi bạn ơi.ai có chương trình đó ko cho mình với đang cần gấp!!!Cry_smile
Chữ ký của ngocduc003 (♀♂♥ღஐ:._†ħǻñ€ħë†_.:ღஐ♥♀♂)
Reply
Những người đã cảm ơn
#7
Đại ca quảng cáo hay là chơi khăm anh em đó. kểm tra links trước rùi hãng share links chứ. làm anh em leo cây há?
Chữ ký của quanghoasla Hãy chia sẻ kinh nghiệm cùng mình trênThuThuatAccess nhé! Chúc vui vẻ rose
My site: My site hoặc My site
ღღღღღTài sản của quanghoasla (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#8
Trời ơi hay quá, sao anh Noname không làm demo cho anh em thưởng thức vậy. Thấy cái link ai ngờ mừng hụt. huhu
Chữ ký của huynguyenbd Khi ta buồn giải sầu bên men rượu, sống không yêu cho con gái nó them!
ღღღღღTài sản của huynguyenbd (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#9
Question 
Tôi làm thử phần mềm theo hướng dẫn trên nhưng gặp vấn đề khi chạy Form trắc nghiệm (không hiện gì khi xem ở chế độ View). Xin anh/ chị chỉ giúp.
Tôi định gửi đính kèm tệp access để các anh/ chị xem giúp nhưng lại thấy thông báo kiểu tập tin mà bạn gửi kèm không được chấp nhận. Không hiểu vì sao nữa. 027
Chữ ký của huonglan12 Xin chào, mình là huonglan12, Tham gia http://thuthuataccess.com/forum từ ngày 21-11 -12.
Reply
Những người đã cảm ơn
#10
Sao tôi thực hiện theo NoName hướng dẫn nhưng không được. NoName có thể làm gửi bản demo giúp tôi được không? tôi đang cần tham khảo để tạo một phần mềm trắc nghiệm gấp.
Chữ ký của huonglan12 Xin chào, mình là huonglan12, Tham gia http://thuthuataccess.com/forum từ ngày 21-11 -12.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Phần mềm quản lý cà phê access khuuquytrung 6 1,518 12-01-16, 11:45 AM
Bài mới nhất: hmanhha
  Phần mềm Quản lý phòng trọ Access 2010 ecompc 17 6,939 02-12-15, 11:38 AM
Bài mới nhất: maidinhdan
  Quản lý thư viện bằng Access Noname 66 48,147 15-09-15, 10:32 AM
Bài mới nhất: vanduc9004
  [Chương trình] Quản lý bán lẻ quầy thuốc lưu dữ liệu bằng MySQL trên Cloud manaphar 6 1,215 25-08-15, 04:28 PM
Bài mới nhất: manaphar
  [Help] tim kiem bang radio button nguyenhoangbanhan 11 1,589 12-06-15, 08:12 PM
Bài mới nhất: tranthanhan1962

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ