- taikhoan: nick name để đăng nhập- matkhau: mật khẩu đăng nhập dộ dài >=6, đã mã hóa MD5 - ten: tên người dùng - quyendangnhap: quyền đăng nhập Admin / GV /TS * Bảng dethi: - made: mã đ
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Viện Công nghệ Thông tin và Truyền thông
BÀI TẬP LỚN
Môn học: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
ĐỀ TÀI: Xây dựng chương trình Windows-based hỗ trợ tạo đề,đảo đề,thi và chấm thi trắc nghiệm
Mã đề tài: De07A
Số hiệu nhóm:
Giảng viên hướng dẫn: TS Cao Tuấn Dũng
Sinh viên thực hiện:
Trang 2MỤC LỤC
Lời nói đầu
Phần 1: TỔNG QUAN VỀ CÁC VẤN ĐỀ LIÊN QUAN 1.1.Đề tài
1.2.Giới thiệu về các kiến thức nền tảng và mô hình MVC 1.2.1.Kiến thức nền tảng
1.2.1.1.Xây dựng cơ sở dữ liệu
1.2.1.2.Thiết kế chương trình
1.2.2.Giới thiệu về mô hình mvc
Phần 2:PHÂN TÍCH THIẾT KẾ MỨC KIẾN TRÚC 2.1.Thiết kế cơ sở dữ liệu
2.2 Biểu đồ Use Case
2.2.1 Các tác nhân của hệ thống
2.2.2.Các Use case với tác nhân Admin
2.2.2.Các Use case với tác nhân giáo viên
2.2.2.Các Use case với tác nhân thí sinh
2.3.Biểu đồ tuần tự
2.3.1.Các chức năng liên quan đến Admin
2.3.2.Các chức năng liên quan đến giáo viên
2.3.3.Các chức năng liên quan đến thí sinh
2.4.Biểu đồ lớp
Phần 3:THIẾT KẾ CHI TIẾT
Phần 4:KẾT LUẬN VÀ ĐÁNH GIÁ
Trang 4LỜI NÓI ĐẦU
Như chúng ta đã biết, thi trắc nghiệm hiện nay là một hình thức thi phổ biến trongcác kỳ thi Việc có một công cụ để giúp học sinh làm quen và thành thạo với hìnhthức thi này, cũng như để cho giáo viên thuận tiện trong việc soạn đề và chấm thi
là hết sức cần thiết
Nhận thấy điều đó, cộng với những kiến thức học được từ môn “Lập trình hướng
đối tượng”, chúng em đã cùng nhau thực hiện đề tài “Xây dựng chương trình
Windows-based hỗ trợ tạo đề, đảo đề, thi và chấm thi trắc nghiệm” Trong quá
trình thực hiện đề tài, chúng em đã có cơ hội thực hành những kiến thức về phântích, thiết kế đối tượng, về cách xây dựng một chương trình hướng đối tượng cótương tác với cơ sở dữ liệu theo mô hình MVC Bên cạnh đó, chúng em cũng thuđược những kĩ năng quý báu trong làm việc nhóm
Chúng em xin chân thành cảm ơn sự hướng dẫn tận tình của thầy Cao Tuấn Dũng,
cả về chuyên môn cũng như định hướng trong quá trình chúng em thực hiện đềtài.Vì kiến thức còn hạn hẹp, nên chương trình của chúng em không thể tránh khỏinhiều thiếu sót Rất mong được sự góp ý của thầy giáo cũng như các bạn trong lớp
để chúng em có thể cải tiến được chất lượng của chương trình
Trang 5Phần 1: TỔNG QUAN VỀ CÁC VẤN ĐỀ LIÊN QUAN 1.1.Đề tài
Xây dựng một công cụ Windows-based ( sử dụng Java/C#.NET… với một hệ quản trị CSDL nào đó) với các tính năng sau:
- Cho phép quản lý các câu hỏi thi trắc nghiệm theo từng phần của một môn học (thêm mới, sửa xóa, tìm kiếm)
- Cho phép tiến hành tạo đề thi cho một môn học nào đó, trong đó, cho phép chọn số lượng câu trắc nghiệm (cho phép chọn mức độ khó dễ, hoặc
số điểm các câu) cho từng phần trong môn học đó Hệ thống sẽ tự động lấy ngẫu nhiên trong ngân hàng câu hỏi
o Lưu đề thi trong CSDL để khi cần cho sinh viên thi
o Cho phép xuất ra file doc theo khuôn dạng một đề thi
- Cung cấp chức năng thi cho sinh viên để sinh viên có thể tham gia thi trực tiếp (sinh các câu hỏi thi một cách ngẫu nhiên) sau đó đưa ra kết quả (theo từng phần và đưa ra kết quả cuối cùng) thi khi hết giờ thi hoặc thí sinh chọn kết thúc thi Khi sinh viên tham gia thi, cần đăng nhập
và chọn một đề thi đã được tạo ra trong phần trên
- Hỗ trợ việc chấm thi trắc nghiệm một đề thi nào đó, giáo viên chỉ cần chọn môn thi và nhập kết quả sinh viên đã chọn, sau đó hệ thống hiển thị kết quả tương ứng (theo từng phần và đưa ra kết quả cuối cùng)
1.2.Giới thiệu về các kiến thức nền tảng và công nghệ MVC framework
1.2.1.Kiến thức nền tảng
1.2.1.1.Xây dựng cơ sở dữ liệu
- Cơ sở dữ liệu của bài toán được thiết kế theo mô hình cơ sở dữ liệu quan hệ
- Yêu cầu quan trọng nhất trong một bài toán thực tế là CSDL phải được thiết kế một cách tối ưu nhất.Ở đây chúng ta sẽ sử dụng các phương pháp chuẩn hóa,bảo toàn tập phụ thuộc hàm,tách không mất mát thông tin… để xây dựng CSDL
- Hệ quản trị cơ sở dữ liệu được sử dụng là MySQL
1.2.1.2.Thiết kế chương trình
Trang 6- Đề tài được thực hiện với cách tiếp cận là hướng đối tượng
- Việc thiết kế chương trình được dựa theo các lý thuyết cơ bản về thiết kế hướng đối tượng và ngôn ngữ mô hình hóa UML
- Quá trình thiết kế chương trình thực hiện theo các giai đoạn : Thiết kế biểu đồ Use Case, thiết kế biểu đồ tuần tự, thiết kế biểu đồ lớp
- Phần mềm thiết kế được sử dụng là Visio 2007
1.2.2.Giới thiệu về mô hình MVC
Phương pháp thiết kế MVC bắt nguồn từ việc phát triển giao diện người dùng trong ngôn ngữ lập trình Smalltalk, đây là một trong những phương pháp thiết kế thành công nhất trong các phương pháp thiết kế hướng đối tượng Hiện nay, MVC được dùng rộng rãi trong nhiều hệ thống phần mềm hướng đối tượng, bất kể được viết bằng ngôn ngữ hướng đối tượng nào.
Các thành phần của MVC:
Trang 7-Model (tạm dịch là phần “Mô hình” ): Là một đối tượng hoặc tập hợp các đối tượng biểu diễn cho phần dữ liệu của chương trình, ví dụ các dữ liệu được lưu trong cơ sở dữ liệu (CSDL) hay từ các hệ thống ứng dụng khác (như mail )
-View (tạm dịch là phần “Hiển thị”): Là phần giao diện với người dùng, bao gồm việc hiện dữ liệu ra màn hình, cung cấp các menu, nút bấm, hộp đối thoại, chọn lựa , để người dùng có thể thêm, xóa, sửa, tìm kiếm và làm các thao tác khác đối với dữ liệu trong hệ thống.
-Controller (tạm dịch là phần “Điều khiển”): Là phần điều khiển toàn bộ logic về hoạt động của giao diện, tương tác với thao tác của người dùng (từ chuột, bàn phím
và các thiết bị ngoại vi khác) và cập nhật, thao tác trên dữ liệu theo đầu vào nhận được và điều khiển việc chọn phần “Hiển thị” thích hợp để truyền dữ liệu tới ngườidùng
Ưu điểm của chương trình dựa theo mô hình MVC:
-Tách biệt rõ ràng nhiệm vụ của từng phần: model-view-controller => giúp cho việc phân công công việc trong nhóm được dễ dàng
-Mang lại hiệu quả cao trong việc tổ chức và tái sử dụng lại code Chẳng hạn như với kiến trúc tổ chức của model thì kết quả trả về là trung lập => có thể tái sử dụnglại cho các tầng View ở ứng dụng khác )
- Tính dễ thay đổi tầng View hay tầng Model nếu có nhu cầu vì mỗi tầng nay hoàn toàn tách biệt và không có mối ảnh hưởng ràng buộc với nhau
- Hỗ trợ kết hợp rất tốt giữa người lập trình và người thiết kế giao diện
Trang 8Phần 2:PHÂN TÍCH THIẾT KẾ MỨC KIẾN TRÚC 2.1.Thiết kế cơ sở dữ liệu
Sơ đồ thực thể liên kết:
Trang 9Chuyển sang sơ đồ quan hệ được các bảng:
* Các mã số (MS ) của các bảng kiểu int, là khóa chính, được tạo ra tự động
* Bảng cauhoi:
- noidung: nội dung câu hỏi
- sodapan: số đáp án của câu hỏi
- dokho: độ khó câu hỏi (giá trị nguyên: 1 4)
- msmonhoc: mã số môn học (khóa ngoài đến bảng monhoc)
- mphanmonhoc: mã số phần môn học (khóa ngoài đến bảng phanmonhoc)
- msnguoitao: MS người tạo câu hỏi (khóa ngoài đến bảng nguoidung)
* Bảng dapan:
- mscauhoi: mã số câu hỏi chứa đáp án (khóa ngoài đến bảng đáp án)
- thutudapan: thứ tự đáp án (1, 2, )
- noidung: nội dung đáp án
- dungsai: đúng hoặc sai (TRUE/FALSE)
- giaithich: giải thích cho mỗi đáp án (tại sao đúng / sai)
Trang 10- taikhoan: nick name để đăng nhập
- matkhau: mật khẩu đăng nhập (dộ dài >=6, đã mã hóa MD5)
- ten: tên người dùng
- quyendangnhap: quyền đăng nhập (Admin / GV /TS)
* Bảng dethi:
- made: mã đề do người ra đề đặt (phân biệt với msdethi)
- msmonhoc: mã số môn học có kiến thức thuộc đề thi (khóa ngoài đền bảng monhoc)
- socauhoi: số câu hỏi của đề thi
- diemtoida: điểm tối đa
-> Điểm 1 câu của đề = DiemToiDa / SoCauHoi
- thoigian: thời gian làm đề thi (theo phút)
- msnguoitao: mã số người ra đề (khóa ngoài đến bảng nguoidung)
* Bảng đề thi gồm câu hỏi:
- msdethi: mã số đề thi (khóa ngoài đến bảng dethi)
- thutu: thứ tự câu hỏi (1,2 ), đảm bảo biết đúng thứ tự câu hỏi phòng khi các hàng câu hỏi của đề thi bị đảo lộn)
- thutudapandung: thứ tự xếp đáp án (vd: 2*341, dấu * trước thứ tự của đáp
án đúng)
* Bảng bailam:
- msthisinh: MS thí sinh làm bài thi (khóa ngoài đến bảng NguoiSuDung)
- msdethi: MS đề thi của bài làm (khóa ngoài đến bảng DeThi)
Trang 11- diem: điểm thi (do GV chấm hoặc chấm tự động)
* Bảng lambaithi:
- msbailam: Mã số bài làm (khóa ngoài đến bảng BaiLam)
- thutu: Thứ tự câu hỏi trong bài làm (1,2, )
- thutudapanchon: Thứ tự đáp án chọn (1,2, )
Thuật toán đảo đề
Trang 12* Lựa chọn 1 số lượng câu hỏi ngẫu nhiên
- Với mỗi hàng câu hỏi trong ngân hàng, gán thêm 1 trường newid ngẫu nhiên
- Sắp xếp lại các hàng câu hỏi theo trường newid
- Chọn ra một số câu hỏi xếp hàng đầu sau khi sắp xếp
=> Lựa chọn được các câu hỏi ngẫu nhiên, với thứ tự đáp án ngẫu nhiên
2.2 Biểu đồ Use Case
Các chức năng chính của hệ thống:
Trang 132.2.1 Các tác nhân của hệ thống
- Admin: quản lí các thành viên và các hoạt động chung trong hệ thống.
- Giáo viên : Là các giáo viên có các chức năng : Tạo và quản lý câu hỏi, tạo đề
thi, chấm thi
- Thí sinh : Là sinh viên hay là thí sinh
Sơ đồ tổng quan về các use case trong hệ thống
Trang 15Use case quản lý người dùng:
Mô tả Người dùng thực hiện đăng ký, đăng nhập, sửa thông tin cá
nhân
Đôi tượng Thí sinh, giáo viên
Thông tin đưa vào Tài khoản, mật khẩu, họ tên, quyền đăng nhập(giáo viên hay
thí sinh )
Hệ thống xử lý Đăng ký : kiểm tra thông tin đăng nhập, nếu đúng lưu vào
CSDL, nếu sai yêu cầu nhập lại
Đăng nhập: kiểm tra thông tin đăng nhập, nếu đúng chuyển sang trạng thái đã đăng nhập, nếu sai y/c nhập lại
Sửa hồ sơ: ghi lại sự thay đổi của người dùng và lưu vào CSDL
Thông tin trả về
Use case quản lý kết quả thi:
Trang 16Phân tích:
Mô tả Thí sinh quản lý kết quả của mình hoặc giáo viên quản lý
kết quả của thí sinhĐối tượng Thí sinh, giáo viên
Thông tin vào Môn thi, mã đề, mã số thí sinh, thời gian
Hệ thống xử lý Tìm bài thi rồi đưa ra kết quả cho người dùng, nếu không
thấy hoặc có lỗi thì đưa ra thông báoThông tin trả về Điểm thi, đáp án cho từng câu hỏi
2.2.2.Các Use case với tác nhân Admin
2.2.3.Các Use case với tác nhân giáo viên
Trang 17use case quản lý câu hỏi:
Mô tả Giáo viên quản lý các câu hỏi trong ngân hàng câu hỏi
Đối tượng Giáo viên
Thông tin vào Các yêu cầu của người dùng
Hệ thống xử lý Tìm kiếm, cập nhật CSDL, đưa ra câu hỏi theo yêu cầu của
người dùng
Thông tin trả về Đưa ra câu hỏi theo yêu cầu Nếu có lỗi hoặc không tìm thấy,
đưa ra thông báo
Use case quản lý đề thi:
Trang 18Mô tả Giáo viên quản lý đề thi trong ngân hàng đề thi.
Đối tượng Giáo viên
Thông tin vào Yêu cầu của giáo viên
Hệ thống xử lý Tạo đề, tìm, sửa, xóa đề, lưu vào CSDL, xuất ra file doc Trả về Đưa ra đề thi được tạo, thông báo thành công nếu thực hiện
xong yêu cầu hoặc thông báo lỗi nếu không tìn thấy hoặc có lỗi
Use case chấm thi:
Trang 19Mô tả Giáo viên lấy bài làm của sinh viên để hệ thống chấm.
Đối tượng Giáo viên
Thông tin vào Môn thi, mã đề, mã thí sinh, thời gian thi
Hệ thống xử lý So sánh đáp án với bài làm của thí sinh để đưa ra kết quả thi
cho thí sinhTrả về Điểm thi của thí sinh Số câu sai đúng và vị trí của chúng
2.2.4.Các Use case với tác nhân sinh viên
Use case thi trắc nghiệm:
Mô tả Thí sinh làm bài trực tiếp
Đối tượng Thí sinh
Thông tin vào Mã số thí sinh, môn thi, thời gian,
Hệ thống xử lý Tạo đề thi và đưa ra kết quả thi khi hết giờ
Trả về Kết quả thi, số lượng câu đúng sai, đáp án chi tiết từng câu hỏi
Trang 202.3 Biểu đồ tuần tự
Chức năng quản lý người dùng:
Trang 21Các chức năng liên quan đến admin:
2.3.2.Các chức năng liên quan đến giáo viên Quản lý câu hỏi:
Trang 22Quản lý đề thi:
Trang 24Chấm thi:
2.3.3.Các chức năng liên quan đến thí sinh
Thi trắc nghiệm
Trang 26-maso -taikhoan -matkhau -ten -quyendangnhap +dangky() +dangnhap() +dangxuat() +suahoso() +nhapten() +nhapquyendangnhap()
-noidung -sodapan -dokho -msmonhoc -msnguoitao
+nhapnoidung()
+nhapdokho() +nhapmonhoc() +nhapphanmonhoc() +them(dapan) +xoa(dapan) +sua(dapan) +nhapnguoitao() +nhapsodapan() +nhapdapan()
giaovien
+chamdiem(bailam) +them(monhoc) +them(dethi) +them(cauhoi) +sua(monhoc) +sua(dethi) +sua(cauhoi) +xoa(dethi) +xoa(cauhoi) +xoa(monhoc)
admin +duytri(CSDL)
+nhapmonhoc()
+nhapthoigian() +nhapdokho() +nhapnguoitao() +nhapsocauhoi() +them(cauhoi) +sua(cauhoi) +xoa(cauhoi) +nhapdanhsachcauhoi()
phanmonhoc
-ten
-msphanmonhoc
+nhapten()
Trang 27Tên Kiểu truy
Tên thật của người sử dụng
quyendangnhap Private byte Quyền đăng nhập (Thí Sinh, Giáo
Viên, Admin) Phương
viên, admin, guest) xemketqua(bailam) Public int Xem kết quả bài thi
Trang 28CLASS thisinh : nguoidung
Thuộc tính
Phương thức lambaithi(dethi) Public BaiLam Thực hiện thi trên máy
CLASS GiaoVien: nguoidung QuanLyCauHoi, QuanLyDeThi, QuanLyMonHoc
Tên Kiểu truy cập Ý Nghĩa Thuộc tính
Phương thức
chamdiem(bailam) Publiic int Chấm điểm bài làm của thí sinh them(cauhoi) Public void Thêm câu hỏi vào ngân hàng câu hỏi them(monhoc) Public void Thêm môn học vào ngân hàng môn học them(dethi) Public void Thêm đề thi vào ngân hàng đề thi sua(cauhoi) Public void Sửa câu hỏi trong ngân hàng câu hỏi sua(monhoc) Public void Sửa môn học trong ngân hàng môn học sua(dethi) Public void Sửa đề thi trong ngân hàng đề thi xoa(cauhoi) Public void Xóa câu hỏi trong ngân hàng câu hỏi xoa(monhoc) Public void Xóa môn học trong ngân hàng môn học xoa(dethi) Public void Xóa đề thi trong ngân hàng đề thi
CLASS Admin : NguoiSuDung, QuanLyCauHoi, QuanLyDeThi, QuanLyMonHoc
Trang 29Tên Kiểu truy cập Ý Nghĩa Thuộc tính
Phương
thức
xemThanhVien() Public void Thống kê thành viên đang truy
cập xoaThanhVien(taikhoan) Public void Xóa thành viên khỏi CSDL,các dữ
liệu của người này sẽ do Admin quản lí
xemCSDL() Public void Đưa ra các thống kê về website
như số lượng câu hỏi,môn học,đề thi…
nhapthisinh Public ThiSinh Trả về đối tượng thí sinh làm bài thi này nhapdethi Public DeThi Trả về đối tượng đề thi của bài làm này
CLASS PhanMonHoc
Trang 30Tên Kiểu truy cập Ý Nghĩa Thuộc tính maso Private int Mã số phần môn học
ten Public string Tên của phần môn học Phương thức Nhapten() Public string Lấy mô tả phần môn học
CLASS MonHoc
Thuộc tính maso Private int Mã số môn học
ten Private string Tên môn học Phương
thức
nhapten() Public string Trả về tên môn học them(phanmonhoc) Public void Thêm một phần môn học vào môn
học xoa(phanmonhoc) Public void Xóa một phần môn học ra khỏi môn
học sua(phanmonhoc) Public void Chỉnh sửa một phần môn học trong
môn học nhaplistphanmonhoc() Public
Trang 31thutu Private byte Thứ tự đáp án trong câu hỏi Noidung Private string Nội dung đáp án
dungsai Private bool Đúng / Sai giaithich Private string Giải thích cho đáp án Phương thức
CLASS CauHoi
Thuộc tính maso Private int Mã số câu hỏi
noidung Private string Nội dung câu hỏi sodapan Private byte Số đáp án của câu hỏi dokho Private byte Độ khó (1->6)
msmonhoc Private int Mã số môn học của câu hỏi msphanmonhoc Private int Mã số phần môn học của câu hỏi msnguoitao Private int Mã số người tạo ra câu hỏi Phương thức nhapnoidung Public string Lấy nội dung câu hỏi
nhapsodapan Public byte Lấy số đáp án nhapdanhsachdapan Public DapAn[] Lấy danh sách đối tượng đáp án nhapdokho Public byte Lấy độ khó của câu hỏi
nhapmonhoc Public MonHoc Trả về đối tượng môn học của câu
hỏi nhapphanmonhoc Public PhanMonHoc Trả về đối tượng phần môn học nhapnguoitao Public GiaoVien Trả về đối tượng giáo viên tạo đề them(dapan) Public void Thêm đáp án vào câu hỏi
sua(dapan) Public void Sửa đáp án khỏi câu hỏi xoa(dapan) Public void Xóa đáp án trong câu hỏi
Trang 32thoigianthi Private int Thời gian thi (phút) msnguoitao Private int MS người ra đề Phương thức Nhapmonhoc Public MonHoc Trả về đối tượng môn học
nhapsocauhoi Public int Trả về số câu hỏi của đề thi nhapdanhsachcauhoi Public CauHoi[] Trả về danh sách đối tượng câu hỏi của đề nhapdokho Public byte Tính toán trả về dộ khó TB của đề thi nhapthoigian Public int Lấy thời gian thi
nhapnguoitao Public int Lấy mã số người tạo them(cauhoi) Public void Thêm câu hỏi vào đề thi xoa(cauhoi) Public void Xóa câu hỏi khỏi đề thi sua (cauhoi) Public void Sửa câu hỏi trong đề thi