BỘ CÔNG THƯƠNG
CAO ĐẲNG KỸ THUẬT LÝ TỰ TRỌNG
THÀNH PHỒ HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
LẬP TRÌNH WINDOWS NÂNG CAO
Đồ Án Môn Học
Chương Trình Thi Trắc Nghiệm
Tin Học Đại cương
Nhóm SVTH :
Trần Thanh Dân
Lê Nguyễn Tiến Đạt
TP HCM, Ngày 25/12/2014
1
Lời mở đầu
Hiện nay, ứng dụng công nghệ thông tin đang là vấn đề nóng của toàn thế giới. Không
chỉ trong hoạt động khoa học kỹ thuật, lao động sản xuất mà đặc biệt trong lĩnh vực đào
tạo giáo dụccông nghệ thông tin cũng đã trở thành công cụ trợ giúp đắc lực. Vượt ra
ngoài các ứng dụng chính như giải các bài tập, phân tích, tính toán thiết kế, học trên máy
tính, mô phỏng, tra cứu..., máy tính còn là công cụ để đánh giá kết quả đào tạo thông qua
các chương trình thi trắc nghiệm.
Trong quá trình đào tạo, đánh giá kết quả học tập bằng các kỳ thi, kiểm tra là công việc
phải tiến hành thường xuyên, không kém phần khó khăn cho người quản lý và khó bảo
đảm độ chính xác, tính công bằng khách quan đối với người học. Do đó, việc cải tiến hệ
thống thi, kiểm tra đã và đang dược nhiều người quan tâm. Một trong những xu hướng
chung và đầy triển vọng, được nhiều cơ sở đào tạo trên thế giới cũng như trong nước đầu
tư nghiên cứu là áp dụng thi trắc nghiệm trên máy tính .
Sự kết hợp giữa hình thức thi trắc nghiệm và tin học không những đáp ứng được các yếu
tố mà còn giúp tiết kiệm được chi phí tổ chức 1 kỳ thi , thời gian ,công sức của giáo viên
đồng thời kết quả đem lại nhanh chóng , chính xác cao và mang tính khách quan .
Chương trình thi trắc nghiệm tin học đại cương có thể giúp giáo viên tạo các đề thi và
chủ đề tương ứng với đề thi được ra .Có thể giúp giáo viên lưu đề và mở đề thi, bổ sung
them các đề mục và các câu hỏi cho đề thi .Giúp thì sinh có thể luyện tập trước kì thi để
đánh giá năng lực có cách học hiệu quả hơn trước kỳ thi .Giúp sinh viên đánh giá năng
lức bản than trong môn học .và nhất là rèn luyện khả năng nhanh nhạy trong phương
pháp học tập .
TP HCM , Ngày 25 tháng 12 năm 2014
Nhóm thực hiện
2
Mục lục
I.
GIỚI THIỆU SƠ LƯỢC ĐỀ TÀI
1. Mục đích đề tài
- Tạo chương trình thi trắc nghiệm tin học đại cương
-
Cho phép admin nhập đề và các chủ đề
-
Cho phép admin chỉnh sửa chủ đề và đề thi
-
Cho phép Sinh viên thi thử
-
Cho phép sinh viên thi trắc nghiệm
2. Yêu cầu đặt ra
- Tạo CSDL Acess
-
Không cho phép sinh viên chỉnh sửa đề thi
-
Đề thi được ra ngẫu nhiên với các đáp án lựa chọn ngẫu nhiên
-
Định dạng lưu và mở đề là dạng xml hoặc các định dạng khác
-
II.
THỰC HIỆN
1. Sơ đồ use case
3
2. Phân tích CSDL
- Dữ liệu gồm 4 bảng .Bảng admin sẽ quản lý các chủ đề .Một admin có
-
thể tạo nhiều chủ đề .Mỗi chủ đề gổm nhiều các câu hỏi khác nhau.
Bảng sinh viên sẽ thi nhiều bộ đề. Các bộ đề gồm nhiều câu nỏi nằm
trong chủ đề
4
3. Các ràng buộc toàn vẹn
3.1.
Bảng admin (tbadmin)
STT
Thuộc tính
1
2
3
Kiểu dữ liệu
Cap
User
Pass
Chuỗi
Chuỗi
Chuỗi
Diễn giải
Phân biệt Admin và sinh viên
Tên đăng nhập
Mật khẩu đăng nhập
Ví dụ :
STT
1
2
3.2.
STT
1
2
3
4
5
Pass
123
121
User
Dan
Dat
Cap
1
2
Bảng sinh viên (tbsinhvien)
Thuộc tính
maSinhvien
tenSinhVien
matKhau
diaChi
NgaySinh
Kiểu dữ
liệu
Diễn giải
Chuỗi
Chuỗi
Chuỗi
Chuỗi
Chuỗi
Là khóa chính để phân biệt các sinh viên
Tên của sinh viên
Mật khẩu đăng nhập
Địa chỉ sinh viên
Ngày sinh
Ví dụ :
STT
1
2
maSinhvien
108381
107651
3.3.
STT
1
2
tenSinhVien
phuong
sang
matKhau
1234
1234
diaChi
NgaySinh
Gò Vấp
29/6/91
Bình Thạnh 13/11/92
Bảng chủ đề (tbchude)
Thuộc tính
maChuDe
tenChuDe
Kiểu dữ
liệu
Chuỗi
Chuỗi
Diễn giải
Là khóa chính để phân biệt các chủ đề
Tên các chủ đề
5
3
4
maAdmin
maSinhVien
Chuỗi
Chuỗi
Admin tạo chủ đề
Sinh viên làm đề thi thuộc chủ đề
Ví dụ :
STT
1
2
3
4
maChuDe
1
2
3
4
3.4.
STT
1
2
3
4
5
6
7
8
tenChuDe
Phần cứng
Phần mềm
Tổng hợp
Hệ điều hành
maAdmin
123
123
121
121
maSinhVien
108381
107651
108381
107651
Bảng câu hỏi (tbcauhoi)
Thuộc tính
maCauHoi
maChuDe
noiDung
dapAnA
dapAnB
dapAnC
dapAnD
dapAnDung
Kiểu dữ liệu
Chuỗi
Chuỗi
Chuỗi
Chuỗi
Chuỗi
Chuỗi
Chuỗi
Số nguyên
Diễn giải
Là khóa chính để phân biệt các mã câu hỏi
Mỗi chủ đề có nhiều câu hỏi
Nội dung câu hỏi
Đáp án a
Đáp án b
đáp án c
đáp án d
Đáp án đúng
Ví dụ :
STT maCau
Hoi
1
1
maC noiDung
huD
e
Đơn vị nhỏ nhất để đo
1
2
3
2
3
3
1
4.
thông tin là gì?
Bộ phận lưu trữ thông tin
là gì?
Cổng DVI dùng để kết
nối với thiết bị nào sau
đây?
Cài đặt chương trình
4.1.
Màn hình chính
6
dapAn
A
dapA
nB
Byte
Kiloby Bit
te
Bộ nhớ CPU
HDD
CDROM 1
Printer
NULM
onitor
Fax
Scann
er
dapAn
C
dapAnD
dapAn
Dung
Megabyt
e
3
3
1
4
2
3
5
Danh sách các đối tượng thể hiện
STT
1
2
3
4
5
Tên
lblNgayThu
btnAdmin
btnSinhVien
lblGioHeThong
btnThoat
Kiểu
Label
Button
Button
Label
Button Button
Ý nghĩa
Ghi chú
Ngày thứ
admin
Sinh viên
Giờ Hệ thống
Thoát
Danh sách các biến cố
STT
1
2
3
4
5
Biến cố
Load label
Click button
Click button
Load label
Click button
Xử lý
Hiển thị thứ ngày hiện tại
Admin đăng nhập
Sinh viên đăng nhập
Hiển thị giờ hệ thống
Thoát chương trình
7
Ghi chú
Màn hình admin
4.2.
1
2
3
4
Danh sách các đối tượng thể hiện
STT
1
2
3
4
Tên
txtTenDN
txtMatKhau
btnDangNhap
btnHuy
Kiểu
Texbox
Texbox
Button
Button
Ý nghĩa
Ghi chú
Tên đăng nhập
Mật khẩu
Đăng nhập
Hủy
Danh sách các biến cố
STT
1
2
3
4
Biến cố
Nhập textbox
Nhập textbox
Click button
Click button
Xử lý
Nhập tên đăng nhập
Nhập mật khẩu đăng nhập
Đăng nhập hệ thống
Hủy đăng nhập
8
Ghi chú
private void btnDangNhap_Click(object sender, EventArgs e)
{
int kq1, kq2;
dl.MaHoa(txtMatKhau.Text, ref strMatMa);
string DK = "User = '" + txtTenDN.Text + "'";
kq1 = string.Compare(txtTenDN.Text, (string)dl.DlookUp("User",
"tbadmin", DK), true);//khong phan biet hoa thuong
kq2 = string.Compare(strMatMa, (string)dl.DlookUp("Pass",
"tbadmin", DK), false);//co phan biet hoa thuong
if (kq1 == 0 && kq2 == 0)
{
MessageBox.Show("Mật mã hợp lệ! \n Chấp nhận truy cập!", "Đăng
nhập chương trình");
frmChinhPQ fr = new frmChinhPQ();
fr.QuanTri = dl.LaAdMin(txtTenDN.Text);
fr.DieuKien = DK;
Hide();
fr.Show();
return;
}
Solan++;
if (Solan > 3)
{
MessageBox.Show("Bạn đã đăng nhập sai 3 lần! \n Từ chối truy
cập!", "Đăng nhập chương trình!");
Application.Exit();
}
lblSoLan.Text = "Đăng nhập lần " + Solan;
txtTenDN.Focus();
txtMatKhau.SelectAll();
}
4.3.
Màn hình soạn câu hỏi
9
5
4
8
3
2
1
6
7
10
11
9
12
13
14
15
20
21
16
17
18
22
19
Danh sách các đối tượng thể hiện
STT
1
2
3
4
5
Tên
tooltlblTaoMoi
tooltlblMoDe
tooltlblLuuTai
tooltlblThemCauHoi
tooltlblXoaCauHoi
Kiểu
Ý nghĩa
ToolStriplabel
ToolStriplabel
ToolStriplabel
ToolStriplabel
ToolStriplabel
10
Tạo chủ đề mới
Mở đề
Lưu đề
Thêm câu hỏi
Xóa câu hỏi
Ghi chú
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
tooltlblXoaDapAn
lblNgay
lblGio
btnThemChuDe
cboChonChuDe
listCauHoi
txtMaCauHoi
txtNoiDungCauHoi
txtDapAnA
radA
btnSoanCauHoi
btnThemCauHoi
btnCauTruoc
btnCauSau
btnSuaCauHoi
btnXoaCauHoi
btnThoat
ToolStriplabel
Label
Label
Button
Combobox
Listbox
Textbox
Textbox
Textbox
Radiobutton
Button
Button
Button
Button
Button
Button
Button
Xóa đáp án
Ngày
Giờ
Thêm chủ đề
Chọn chủ đề
Danh sách câu hỏi
Mã câu hỏi
Nội dung câu hỏi
Đáp án a
Đánh đáp án
Soạn câu hỏi
Thêm câu hỏi
Câu trước
Câu sau
Sửa câu hỏi
Xóa câu hỏi
thoát
Danh sách các biến cố
STT
1
2
3
4
5
6
7
8
9
10
11
15
16
17
18
19
20
21
Biến cố
Click ToolStriplabel
Click ToolStriplabel
Click ToolStriplabel
Click ToolStriplabel
Click ToolStriplabel
Click ToolStriplabel
Load label
Load label
Click button
Load combobox
Load listbox
Checked
Click button
Click button
Click button
Click button
Click button
Click button
Xử lý
Tạo mới 1 đề thi
Mở đề thi đã có
Lưu đề thi đã tạo
Thêm mới 1 câu hỏi
Xóa câu hỏi
Xóa đáp án
Hiển thị ngày hiện tại
Hiển thị giờ hiện tại
Thêm mới chủ đề
Chọn chủ đề
Danh sách câu hỏi
Chọn đáp án
Soạn câu hỏi
Thêm mới 1 câu hỏi
Câu hỏi trước
Câu hỏi sau
Sửa câu hỏi đã tạo
Xóa câu hỏi đã
11
Ghi chú
22
using
using
using
using
using
using
using
Click button
tạothoát chương trình
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Text;
System.Windows.Forms;
namespace ChuongTrinhThiTracNghiem_DeAn
{
public partial class frmTaoVaChinhSuaDeThi : Form
{
public frmTaoVaChinhSuaDeThi()
{
InitializeComponent();
}
ClsDuLieu ketnoi;
private void btnThoat_Click(object sender, EventArgs e)
{
this.Hide();
}
Danh sách
các chủ đề
private void listCauHoi_SelectedIndexChanged(object sender, EventArgs
e)
{
}
public void themcauhoiclear()
{
radA.Checked = false;
radB.Checked = false;
radC.Checked = false;
radD.Checked = false;
txtDapAnA.Clear();
txtDapAnB.Clear();
txtDapAnC.Clear();
txtDapAnD.Clear();
txtMaCauHoi.Clear();
txtNoiDungCauHoi.Clear();
}
private void btnThemCauHoi_Click(object sender, EventArgs e)
{
if (txtMaCauHoi.Text.Trim() == "" || txtNoiDungCauHoi.Text.Trim()
== "" || txtDapAnA.Text.Trim() == "" || txtDapAnB.Text.Trim() == "" ||
txtDapAnC.Text.Trim() == "" || txtDapAnD.Text.Trim() == "")
{
MessageBox.Show("thông tin chưa đủ không thể thêm câu hỏi!",
"thông báo!");
return;
}
ketnoi = new ClsDuLieu();
12
ketnoi.KetNoi();
string kq = "";
if (radA.Checked == true)
{
kq = txtDapAnA.Text;
}
if (radB.Checked == true)
{
kq = txtDapAnB.Text;
}
if (radC.Checked == true)
{
kq = txtDapAnC.Text;
}
if (radD.Checked == true)
{
kq = txtDapAnD.Text;
}
ketnoi.insertCauhoi(Int32.Parse(txtMaCauHoi.Text),
cboChonChuDe.SelectedValue.ToString(), txtNoiDungCauHoi.Text, txtDapAnA.Text,
txtDapAnB.Text, txtDapAnC.Text, txtDapAnD.Text, kq);
themcauhoiclear();
}
}
private void frmTaoVaChinhSuaDeThi_Load(object sender, EventArgs e)
{
ketnoi = new ClsDuLieu();
ketnoi.KetNoi();
cboChonChuDe.DataSource = ketnoi.DataChuDe();
cboChonChuDe.DisplayMember = "tenChuDe";
cboChonChuDe.ValueMember = "maChuDe";
}
}
4.4.
Màn hình sinh viên đăng nhập
4
13
1
2
5
3
6
7
Danh sách các đối tượng thể hiện
STT
1
2
3
4
5
6
7
Tên
txtTenSV
txtMatKhau
lblSoLan
radLuyenThi
radThi
btnDongY
btnHuy
Kiểu
Textbox
Textbox
Label
Radio button
Radio button
Button
Button
Ý nghĩa
Ghi chú
Tên sinh viên
Mật khẩu
Số lần đăng nhập
Luyện tập
Thi
Đồng ý
thoát
Danh sách các biến cố
STT
4
5
6
7
using
using
using
using
using
Biến cố
Checked
Checked
Click button
Click button
Xử lý
Chọn luyện tập
Chọn thi
Đồng ý
Thoát chương trình
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
14
Ghi chú
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace ChuongTrinhThiTracNghiem_DeAn
{
public partial class frmSVDangNhap : Form
{
ClsDuLieu dl = new ClsDuLieu();
int SoLan = 1;
string strMatMa = "";
public frmSVDangNhap()
{
InitializeComponent();
}
private void btnHuy_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void btnDangNhap_Click(object sender, EventArgs e)
{
if (txtTenDN.Text.Trim() == "")
{
MessageBox.Show("Xin cho biết tên người dùng");
return;
}
int kq1, kq2;
dl.MaHoa(txtMatKhau.Text, ref strMatMa);
string DK = "User='" + txtTenDN.Text + "'";
kq1 = string.Compare(txtTenDN.Text, dl.LayMatMa("User", DK),
true);
kq2 = string.Compare(strMatMa, dl.LayMatMa("Pass", DK), false);
//Có phân biệt HOA thường
if (kq1 == 0 && kq2 == 0)
{
MessageBox.Show("Mật mã hợp lệ", "Kiểm tra mật mã");
return;
}
SoLan += 1;
if (SoLan > 3)
{
MessageBox.Show("Bạn đã đăng nhập 3 lần không hợp lệ", "Thông
báo");
Application.Exit();
}
lblSoLan.Text = "Đăng nhập lần " + SoLan;
txtMatKhau.Focus();
txtMatKhau.Select(0, txtMatKhau.TextLength);
if (radLuyenThi.Checked == true)
{
frmThiThu fr = new frmThiThu();
this.Hide();
fr.Show();
return;
}
15
else
{
}
}
if (radThiThat.Checked == true)
{
frmThiTracNghiem f = new frmThiTracNghiem();
this.Hide();
f.Show();
return;
}
}
}
4.5.
Màn hình luyện tập
Ràng buộc dữ
liệu chọn hình
thức thi
16
1
2
3
4
6
5
7
8
9
10
12
11
14
13
Danh sách các đối tượng thể hiện
STT
1
2
Tên
txtDuongDan
btnDuongDan
Kiểu
Textbox
Button
17
Ý nghĩa
Đường dẫn
Đường dẫn
Ghi chú
3
4
5
6
7
8
9
10
11
12
13
14
btnBatDau
btnKetThuc
btnXemDapAn
lblThoiGianConLai
btnCauTiep
btnCauTruoc
lblCauHoi
radA
lblCauDung
lblDiem
lblDanhGia
btnThoat
Button
Button
Button
Label
Button
Button
Label
RadioButton
Label
Label
Label
Button
Bắt đầu
Kết thúc
Xem đáp án
Thời gian thi
Câu tiếp
Câu trước
Câu hỏi
Đáp án
Số câu đúng
Điểm
Đánh giá
thoát
Danh sách các biến cố
STT
Biến cố
2
3
4
5
6
7
8
9
10
11
12
13
14
Click button
Click button
Click button
Click button
Load label
Click button
Click button
Load label
Checked
Load label
Load label
Load label
Click button
I.
Xử lý
Tìn đường dẫn lưu tệp tin
Bắt đầu làm bài
Kết thúc bài thi
Xem đáp án
Hiển thị thời gian thi
Câu tiếp theo
Câu trước đó
Hiển thị nội dung câu hỏi
Chọn đáp án
Hiển thị số câu đúng
Số điểm đạt được
Đánh giá xếp loại
Thoát chương trình
KẾT LUẬN
1. Nhận xét đề tài
1.1.
Đã làm được
- Cho phép admin tạo chủ đề
- Cho phép admin tạo đề thi theo các chủ đề
- Không cho phép sinh viên chỉnh sửa đề thi
18
Ghi chú
1.2.
Chưa làm được
- Chưa load tự động câu hỏi cho sinh viên có thể thi thật
- Cho phép admin chỉnh sửa đề thi
- Cho phép admin được phép lưu đề thi dưới dạng xml và các định dạng
khác
- Cho phép sinh viên có thể mở tệp tin và thi thử
- Sinh viên có thể xem đáp án sau khi thi thử
- Sinh viên có thể xem kết quả đánh giá sau khi thi thử
2. Hướng phát triển
-
-
Tạo đề tài lưu dưới nhiều định dạng khác nhau
Tạo ra chương trình thi trắc nghiệm cho nhiều môn thi trắc nghiệm
(vd :trắc nghiệm tiếng anh ,luyện thi đại học, thi trắc nghiệm bằng lái
xe,….)
Tạo mô hình quản lý chương trình thi trắc nghiệm
Tạo định dạng câu hỏi hình ảnh
Tạo các mục với các mức độ khác nhau (căn bản, sơ cấp, tổng hợp ….)
19