Tải bản đầy đủ (.docx) (19 trang)

Lập trình windown chương trình thi trắc nghiệm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (399.73 KB, 19 trang )

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



×