1. Trang chủ
  2. » Giáo án - Bài giảng

Cau hoi tin 12

4 284 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Cách Tạo Chương Trình Trắc Nghiệm Bằng Access
Trường học e-CHÍP
Chuyên ngành Programming
Thể loại Hướng Dẫn
Định dạng
Số trang 4
Dung lượng 95 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.. Bạn tạo một table có tên NganHangCauHoi để chứa ngân hàng các câu hỏi,

Trang 1

Đó hỏi: Em muốn nhờ e-CHÍP hướng dẫn em cách tạo chương trình trắc nghiệm bằng Access

virion32@

Đây trả lời: 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

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

Trang 2

' 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

Trang 3

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

Bảng 1: Cấu trúc bảng NganHangCauHoi

Field Name Type Size Ghi chú

Bảng 2: Cấu trúc bảng DeThiVaKetQua

Field Name Type Size Ghi chú

DapAnDuocChon Number/Byte 1

Trang 4

Hình 1: Form trắc nghiệm

Hình 2: Query cho form

Ngày đăng: 18/08/2013, 07:10

Xem thêm

HÌNH ẢNH LIÊN QUAN

Bảng 1: Cấu trúc bảng NganHangCauHoi - Cau hoi tin 12
Bảng 1 Cấu trúc bảng NganHangCauHoi (Trang 3)
Hình 1: Form trắc nghiệm - Cau hoi tin 12
Hình 1 Form trắc nghiệm (Trang 4)
Hình 2: Query cho form - Cau hoi tin 12
Hình 2 Query cho form (Trang 4)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w