Đề tài Chương trình xử lý chấm điểm các bài thi trắc nghiệm trên giấy

MỤC LỤC

Tóm tắt khóa luận.6

Chương1 Mở đầu.7

1.1. Tổng quan.7

1.2. Mục tiêu đềtài.7

Chương2 Giai đoạn phân tích.8

2.1. Xác định vấn đề.8

2.1.1.Các vấn đề.8

2.1.2.Các mong đợi.8

2.2. Các Actor.8

2.3. Sơ đồUse-case.9

2.4. Đặc tảUse-case.10

2.4.1.Use case: Đăng nhập hệthống.10

2.4.2.Use case: Nhận dạng bài thi.11

2.4.3.Use case: Tổchức thi.12

2.4.4.Use case: Quét bài thi.13

2.4.5.Use case: Xem bảng điểm.14

2.4.6.Use case: Chấm điểm vàlưu điểm bài thi.15

2.5. Các sơ đồSequences Diagram.16

2.5.1.Sơ đồSequences Diagram nhận dạng bài thi.16

2.5.2.Sơ đồSequences Diagram nhận chấm điểm bài thi.17

2.6. Các sơ đồCollaboration.18

2.6.1.Sơ đồCollaboration nhận dạng bài thi.18

2.6.2.Sơ đồCollaboration chấm điểm bài thi.19

2.7. Sơ đồmôhình dữliệu.20

2.8. Mô tảchi tiết các bảng.21

Chương3 Giai đoạn thiết kế.29

Chương4 Xác định thuật toán.32

4.1. Cấu trúc của một ảnh Bipmap.32

4.2. Thuật toán đọc và hiển thịfile ảnh Bipmap.33

4.3. Thuật toán xửlý ảnh Bipmap.34

Chương5 Tiến hành cài đặt.40

5.1. Môi trường cài đặt.40

5.2. Đánh giá kết quả đạt được.40

5.3. Hướng phát triển.40

5.4. Kết luận:.41

Danh mục tham thảo.42

pdf42 trang | Chia sẻ: netpro | Lượt xem: 2311 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Đề tài Chương trình xử lý chấm điểm các bài thi trắc nghiệm trên giấy, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
............................................................................... 8 2.3. Sơ đồ Use-case ..................................................................................... 9 2.4. Đặc tả Use-case .................................................................................. 10 2.4.1.Use case: Đăng nhập hệ thống ......................................................... 10 2.4.2.Use case: Nhận dạng bài thi............................................................. 11 2.4.3.Use case: Tổ chức thi ....................................................................... 12 2.4.4.Use case: Quét bài thi ...................................................................... 13 2.4.5.Use case: Xem bảng điểm................................................................ 14 2.4.6.Use case: Chấm điểm và lưu điểm bài thi........................................ 15 2.5. Các sơ đồ Sequences Diagram........................................................... 16 2.5.1.Sơ đồ Sequences Diagram nhận dạng bài thi................................... 16 2.5.2.Sơ đồ Sequences Diagram nhận chấm điểm bài thi......................... 17 2.6. Các sơ đồ Collaboration..................................................................... 18 2.6.1.Sơ đồ Collaboration nhận dạng bài thi............................................. 18 2.6.2.Sơ đồ Collaboration chấm điểm bài thi ........................................... 19 2.7. Sơ đồ mô hình dữ liệu ........................................................................ 20 4 2.8. Mô tả chi tiết các bảng ....................................................................... 21 Chương3 Giai đoạn thiết kế ...................................................................... 29 Chương4 Xác định thuật toán .................................................................. 32 4.1. Cấu trúc của một ảnh Bipmap............................................................ 32 4.2. Thuật toán đọc và hiển thị file ảnh Bipmap ....................................... 33 4.3. Thuật toán xử lý ảnh Bipmap............................................................. 34 Chương5 Tiến hành cài đặt....................................................................... 40 5.1. Môi trường cài đặt .............................................................................. 40 5.2. Đánh giá kết quả đạt được.................................................................. 40 5.3. Hướng phát triển ................................................................................ 40 5.4. Kết luận: ............................................................................................. 41 Danh mục tham thảo. ................................................................................ 42 5 Tóm tắt khóa luận ™ Vấn đề nghiên cứu: Xây dựng chương trình nhận dạng kết quả trả lời của bài thi trắc nghiệm trên giấy, sau đó lưu và ghi nhận lại kết quả xuống cơ sở dữ liệu. ™ Phương pháp tiếp cận: Sử dụng cách tiếp cận như sau o Nhận dạng và đọc các điểm ảnh trong file ảnh BMP o Mô hình chấm điểm các bài thi trắc nghiệm trên giấy theo hai giai đoạn.Gai đoạn thứ nhất là tiền xử lý ảnh đó là nhận dạng và đọc được file ảnh BMP.Giai đoạn thứ hai so sánh kết quả nhận dạng dược với các đáp án đúng trong cơ sở dữ liệu. ™ Kết quả đạt được: Chương trình hoạt động tốt và đạt được một số kết quả như sau: o Tìm hiểu được về cấu trúc của một file ảnh bitmap. o Đọc và hiển thị file ảnh bitmap. o Nhận dạng được số báo danh, mã số đề thi, số câu hỏi, phương án trả lời của bài làm, số câu hợp lệ, không hợp lệ. o So sánh đáp án của câu hỏi trong bài làm với đáp án của đề thi và từ đó chấm điểm bài làm. o Lưu kết quả bài làm xuống cơ sở dữ liệu. 6 Chương1 Mở đầu 1.1. Tổng quan Trong những năm gần đây, sự phát triển của công nghệ thông tin đã và đang làm thay đổi cục diện thế giới. Mọi ngành nghề, mọi lĩnh vực như kinh tế, y khoa, công nghiêp, …dần dần đã được tin học hóa làm cho công việc ngày càng trở nên dễ dàng, nhanh chóng, chính xác hơn. Đặc biệt là trong công tác giáo dục việc tin học hóa góp phần nâng cao chất lượng dạy và học.Trong thi cử cũng vậy, để đảm bảo chất lượng của một kỳ thi tính khách quan, chính xác phải được đặt lên hàng đầu. Sự kết hợp giữa trắc nghiệm và tin học hóa không những đáp ứng được các yêu cầu đó, mà còn giúp tiết kiệm chi phí tổ chức thi, thời gian công sức của giáo viên đồng thời kết quả lại nhanh chóng và có độ chính xác cao.Với các ưu điểm trên, Bộ Giáo Dục nước ta đang tiến hành đưa phương pháp thi trắc nghiệm vào các kỳ thi tuyển sinh đại học trong những năm tới. Còn ở các trường từ phổ thông đến đại học, thì hình thức thi trắc nghiệm cũng đã và đang được sử dụng trong hầu hết các môn thi. Nhìn chung, phương pháp thi trắc nghiệm đang là xu hướng trong đào tạo. 1.2. Mục tiêu đề tài Sau khi tìm hiểu và nghiên cứu các phương pháp chấm điểm thủ công trước đây, chúng em đã và đang xây dựng một chương trình chấm điểm các bài thi trên giấy với mục tiêu: hỗ trợ việc chấm điểm các bài thi trắc nghiệm trên giấy một cách dễ dàng và nhanh chóng mà độ chính xác lại cao. 7 Chương2 Giai đoạn phân tích 2.1. Xác định vấn đề 2.1.1. Các vấn đề ™ Việc phân chia các mã đề thi và các bài làm của thí sinh gặp nhiều khó khăn. ™ Việc chấm điểm bằng thủ công còn gặp nhiều khó khăn, mất thời gian và còn nhiều sai sót. ™ Việc nhập và lưu điểm bằng tay vào sổ sách mất nhiều thời gian và dễ sai sót 2.1.2. Các mong đợi ™ Chương trình mới này giúp việc nhận dạng các bài làm theo mã đề thi một cách nhanh chóng và chính xác. ™ Chấm điểm tự động một cách nhanh chóng nhờ vào việc so sánh các đáp án trong cơ sở dữ liệu một cách nhanh chóng và chính xác. ™ Nhập và lưu điểm một cách nhanh chóng và không mất nhiều thời gian. 2.2. Các Actor 2.2.1. Sinh viên:Đăng nhập hệ thống được quyền xem điểm 2.2.2. Giáo viên:Đăng nhập hệ thống được quyền xem bảng điểm, xem tra cứu đề thi 2.2.3. Quản trị:Đăng nhập hệ thống được quyền quét bài thi, tổ chức thi, xem tra cứu đề thi, nhận dạng bài thi, chấm điểm và lưu điểm 8 9 2.3. Sơ đồ Use-case Sơ đồ mức hai của nhận dạng bài thi nhan dang bai thi nhan dang so bao danh nhan dang ma de thi nhan dang cau hoi va phuong an > > > 2.4. Đặc tả Use-case 2.4.1. Use case: Đăng nhập hệ thống 2.4.1.1. Tóm tắt -Use case này mô tả chức năng đăng nhập vào hệ thống của giáo viên, sinh viên, quản trị. 2.4.1.2. Dòng sự kiện 2.4.1.2.1. Dòng sự kiện chính -Use case này bất đầu khi một Actor muốn đăng nhập vào hệ thống. -Hệ thống yêu cầu chọn một trong bốn người dùng. -Hệ thống yêu cầu nhập tên và mật khẩu. -Người dùng nhập tên và mật khẩu. -Hệ thống kiểm tra tên và mật khẩu, xác nhận là đúng và cho phép người dùng đăng nhập vào hệ thống. 2.4.1.2.2. Dòng sự kiện khác -Tên mật khẩu sai: Nếu trong dòng sự kiện chính, Actor nhập sai tên hoặc mật khẩu hoặc cã hai. Hệ thống sẽ hiển thị thông báo lỗi. Actor có thể chọn trở về đầu dòng sự kiện chính hoặc hủy bỏ việc đăng nhập. 2.4.1.3. Các yêu cầu đặc biệt: Không có. 2.4.1.4. Điều kiện tiên quyết: Không có. 2.4.1.5. Điều kiện sau khi hoàn thành 10 -Nếu actor nhập sai tên hoặc mật khẩu thì hệ thống sẽ thông báo lỗi và nếu đăng nhập quá 3 lần cùng một tên thì hệ thống sẽ ngừng hoạt động của người sử dụng này. 2.4.1.6. Điểm mở rộng: Không có 2.4.2. Use case: Nhận dạng bài thi 2.4.2.1. Tóm tắt -Use case này mô tả chức năng nhận dạng bài thi của sinh viên khi được scan qua máy. Người quản trị là actor chính của use_case này. 2.4.2.2. Dòng sự kiện 2.4.2.2.1. Dòng sự kiện chính -Use case này bắt đầu khi người quản trị muốn nhận dạng bài làm có hợp lệ hay không. -Hệ thống yêu cầu người sử dụng chọn chức năng nhận dạng bài thi. -Hệ thống yêu cầu người sử dụng chọn nút browse để chọn file ảnh của một bài làm. -Hệ thống sẽ tiến hành kiểm tra thông tin của bài làm theo quy định và sẽ trả về thông báo bài thi hợp lệ có thể chấm điểm nếu thỏa điều kiện. 2.4.2.2.2. Dòng sự kiện khác -Nếu thông tin bài làm không hợp lệ thì hệ thống sẽ trả về thông báo bài làm không hợp lệ. 2.4.2.3. Các yêu cầu đặc biệt: Không có. 2.4.2.4. Điều kiện tiên quyết 11 -Hệ thống yêu cầu người quản trị phải đăng nhập thành công. 2.4.2.5. Điều kiện sau khi hoàn thành -Hệ thống phải xuất thông báo là thông tin bài làm là hợp lệ hay không hợp lệ cho người sử dụng biết. 2.4.2.6. Điểm mở rộng: Không có 2.4.3. Use case: Tổ chức thi 2.4.3.1. Tóm tắt -Use case này mô tả chức năng tổ chức thi cho sinh viên.Người quản trị là actor chính của use case này. 2.4.3.2. Dòng sự kiện 2.4.3.2.1. Dòng sự kiện chính -Use case này bắt đầu khi người quản trị muốn tổ chức một kỳ thi -Hệ thống yêu cầu người sử dụng chọn chức năng tổ chức kỳ thi. -Hệ thống yêu cầu người sử dụng đánh số kỳ thi. -Hệ thống sẽ tiến hành kiểm tra thông tin của kỳ thi theo quy định và sẽ trả về thông báo kỳ thi hợp lệ. 2.4.3.2.2. Dòng sự kiện khác -Nếu thông tin kỳ thi không hợp lệ thì hệ thống sẽ trả về thông báo kỳ thi không hợp lệ. 2.4.3.3. Các yêu cầu đặc biệt: Không có. 2.4.3.4. Điều kiện tiên quyết 12 -Hệ thống yêu cầu người quản trị phải đăng nhập thành công. 2.4.3.5. Điều kiện sau khi hoàn thành -Hệ thống phải xuất thông báo là thông tin kỳ thi là hợp lệ hay không hợp lệ cho người sử dụng biết. 2.4.3.6. Điểm mở rộng: Không có 2.4.4. Use case: Quét bài thi 2.4.4.1. Tóm tắt -Use case này mô tả chức năng quét bài thi của sinh viên khi sinh viên làm bài xong. Người quản trị là actor chính của use case này. 2.4.4.2. Dòng sự kiện 2.4.4.2.1. Dòng sự kiện chính -Use case này bắt đầu khi người quản trị muốn quét bài thi -Hệ thống yêu cầu người sử dụng chọn chức năng quét bài thi. -Hệ thống yêu cầu người sử dụng chọn máy scan -Hệ thống sẽ tiến hành kiểm tra thông tin giấy scan nếu hợp lệ thì thông báo cho người sử dụng biết 2.4.4.2.2. Dòng sự kiện khác -Nếu thông tin giấy không hợp lệ thì hệ thống sẽ trả về thông báo giấy không hợp lệ. 2.4.4.3. Các yêu cầu đặc biệt: Không có. 2.4.4.4. Điều kiện tiên quyết 13 -Hệ thống yêu cầu người quản trị phải đăng nhập thành công. 2.4.4.5. Điều kiện sau khi hoàn thành -Hệ thống phải xuất thông báo là thông tin giấy là hợp lệ hay không hợp lệ cho người sử dụng biết. 2.4.4.6. Điểm mở rộng: Không có 2.4.5. Use case: Xem bảng điểm 2.4.5.1. Tóm tắt -Use case này mô tả chức năng xem bảng điểm của sinh viên.Người quản trị và sinh viên là actor chính của use_case này. 2.4.5.2. Dòng sự kiện 2.4.5.2.1. Dòng sự kiện chính -Use case này bắt đầu khi người quản trị và sinh viên muốn xem điểm. -Hệ thống yêu cầu người sử dụng chọn chức năng xem điểm bài thi. -Hệ thống yêu cầu người sử dụng chọn nút xem điểm. -Hệ thống sẽ tiến hành kiểm tra thông tin và xuất ra bảng điểm của các sinh viên. 2.4.5.2.2. Dòng sự kiện khác -Nếu thông tin xem điểm không hợp lệ thì hệ thống sẽ trả về thông báo điểm không hợp lệ. 2.4.5.3. Các yêu cầu đặc biệt: Không có. 2.4.5.4. Điều kiện tiên quyết 14 -Hệ thống yêu cầu người quản trị và sinh viên phải đăng nhập thành công. 2.4.5.5. Điều kiện sau khi hoàn thành -Hệ thống phải xuất thông báo là thông tin điểm là hợp lệ hay không hợp lệ cho người sử dụng biết. 2.4.5.6. Điểm mở rộng: Không có 2.4.6. Use case: Chấm điểm và lưu điểm bài thi 2.4.6.1. Tóm tắt -Use case này mô tả chức năng tự động chấm điểm các bài thi sau khi đã nhận dạng là hợp lệ. Người quản trị là actor chính của use case này. 2.4.6.2. Dòng sự kiện -Use case này bắt đầu khi người sử dụng muốn chấm điểm các bài thi sau khi đã nhận dạng. -Hệ thống yêu cầu người sử dụng chọn chức năng chấm điểm bài thi. -Hệ thống yêu cầu người sử dụng chọn nút browse để chọn file ảnh của một bài làm đã được nhận dạng. -Hệ thống sẽ tiến hành chấm điểm bài làm một cách tự động khi người sử dụng nhấn vào nút chấm điểm. -Trả về bài thi cùng số điểm chấm thông qua đáp án có sẳn của câu hỏi trong bài thi. 2.4.6.3. Các yêu cầu đặc biệt: Không có. 2.4.6.4. Điều kiện tiên quyết 15 16 -Yêu cầu người quản trị phải đăng nhập thành công -Chỉ chấm được những bài thi thỏa điều kiện nhận dạng. 2.4.6.5. Điều kiện sau khi hoàn thành -Hệ thống phải trả ra số điểm của bài thi. 2.4.6.6. Điểm mở rộng: Không có 2.5. Các sơ đồ Sequences Diagram 2.5.1. Sơ đồ Sequences Diagram nhận dạng bài thi 17 2.5.2. Sơ đồ Sequences Diagram nhận chấm điểm bài thi 18 2.6. Các sơ đồ Collaboration 2.6.1. Sơ đồ Collaboration nhận dạng bài thi 19 2.6.2. Sơ đồ Collaboration chấm điểm bài thi 20 2.7. Sơ đồ mô hình dữ liệu 2.8. Mô tả chi tiết các bảng 2.8.1. Mô tả bảng sinh viên Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc MSSV Mã số sinh viên Char 10 >=1 PK TenSV Tên sinh viên Varchar 50 >=1 NgaySinh Ngày sinh Date MSLop Mã số lớp Char 10 >=1 FK 2.8.2. Mô tả bảng lớp Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc MSLop Mã số lớp Char 10 >=1 PK IDKhoa Mã số khoa Char 10 >=1 FK TenLop Tên lớp Varchar 50 >=1 2.8.3. Mô tả bảng khoa Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc IDKhoa Mã số khoa Char 10 >=1 PK TenKhoa Tên khoa Varchar 50 >=1 TruongKhoa Trưởng khoa Varchar 50 >=1 21 2.8.4. Mô tả bảng môn học Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc MSMH Mã số môn học Char 10 >=1 PK TenMH Tên môn học Varchar 50 >=1 2.8.5. Mô tả bảng kỳ thi Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc IDKyThi Mã kỳ thi Char 10 >=1 PK LanThi Lần thi Integer Phong Phòng Char 10 >=1 GiamThi Giám thị Varchar 50 >=1 MSMH Mã số môn học Varchar 10 >=1 FK 2.8.6. Mô tả bảng nội dung đề thi Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc IDDT Mã đề thi Char 10 >=1 PK,FK STTCau Số thứ tự câu Integer PK IDCauHoi Mã câu hỏi Char 10 >=1 FK 22 2.8.7. Mô tả bảng đề thi Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc IDDT Mã đề thi Char 10 >=1 PK TenDeThi Tên đề thi Varchar 50 STTDe Số thứ tự đề Integer ChiSo Chỉ số Integer ThoiGian Thời gian char 10 >=1 IDKyThi Mã kỳ thi Char 10 >=1 FK DoKho Độ khó Char 10 >=1 FK MSGV Mã số giáo viên Varchar 20 >=1 FK 2.8.8. Mô tả bảng câu hỏi Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc IDCauHoi Mã câu hỏi Char 10 >=1 PK NoiDung Nội dung Varchar 200 >=1 DoKho Độ khó int IDHP Mã học phần int FK IDNhom Mã nhóm int FK Sudung Sử dụng bit 23 2.8.9. Mô tả bảng trả lời Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc IDCauHoi Mã câu hỏi Char 10 >=1 PK,FK PhuongAn Phương án Varchar 200 >=1 ThuTu Thứ Tự Integer LaDung Câu đúng Bit 2.8.10. Mô tả bảng bài làm Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc MSSV Mã số sinh viên Char 10 >=1 PK,FK STTCau Số thứ tự câu Integer PK,FK IDDT Mã đề thi Char 10 >=1 PK,FK ChonPA Chọn phương án Char 10 >=1 24 2.8.11. Mô tả bảng kết quả Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc IDKyThi Mã kỳ thi Char 10 >=1 PK,FK MSSV Mã số sinh viên Char 10 >=1 PK,FK MSMH Mã số môn học Char 10 >=1 PK,FK DiemSo Điểm số DECIMAL(10,2) 2.8.12. Mô tả bảng học phần Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc IDHP Mã học phần Char 10 >=1 PK MSMH Mã số môn học Char 10 >=1 FK TenHP Tên học phần Char 50 ThuTu Thứ tự Integer 25 2.8.13. Mô tả bảng quy định kiến thức Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc IDCapDo Mã cấp độ Char 10 >=1 PK,FK IDHP Mã học phần Char 10 >=1 PK,FK SoluongCauHoi Số lượng câu hỏi Integer CauHoiDong DangToiDa Câu hỏi đồng đạng tối đa Integer SoLuongCauHoi KhoDo1 Số lượng câu hỏi khó độ 1 Integer SoLuongCauHoi KhoDo2 Số lượng câu hỏi khó độ 2 Integer SoLuongCauHoi KhoDo3 Số lượng câu hỏi khó độ 3 Integer 26 2.8.14. Mô tả bảng cấp độ Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc IDCapDo Mã cấp độ Char 10 >=1 PK TenCapDo Tên cấp độ Varchar 50 >=1 SoluongCau Hoi Số lượng câu hỏi Integer 2.8.15. Mô tả bảng Nhóm đồng dạng Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc IDNhóm Mã số đồng dạng Integer PK Ten Tên nhóm Varchar 50 >=1 IDHP Mã học phần Integer FK 27 2.8.16. Mô tả bảng Giáo viên Vùng Diễn giải Kiểu dữ liệu Kích thước Giá giới hạn Giá trị ngầm định Ràng buộc MSGV Mã số giáo viên Varchar 20 PK TenGV Tên giáo viên Varchar 50 >=1 IDKhoa Mã số khoa Integer FK Truongkhoa Trưởng khoa Varchar 50 28 29 Chương3 Giai đoạn thiết kế Màn hình đăng nhập Màn hình chọn công cụ nhận dạng và chấm điểm 30 Cơ chế hoạt động của hệ thống Hệ thống nhận dạng và chấm điểm In điểm Chọn tên lượt thiIn bài làm Mở tập tin ảnh Nhận dạng Lưu bài Chấm điểm Thoát khỏi chương trình 31 Màn hình chính của chương trình nhận dạng và chấm điểm Chương4 Xác định thuật toán 4.1. Cấu trúc của một ảnh Bipmap -Gồm 3 phần: - BitmapHeader. -BitmapInfor. -BitmapData. a). BitmapHeader: gồm 14 byte 1-2 Nhận dạng file Kiểu arrayp[1..2] of char:chứa ký tự BM 3-6 Kích thước file Kiểu Longint: tính bằng byte 7-10 Reserve nt : tôi chưa biết(có lẽ là tên file thừa) 11-14 Byte bắt đầu Kiểu longint, vị trí byte bắt đầu vùng vùng data data kể từ đầu file b). BitmapInfor: gồm 40 byte 1-4 Số byte trong vùng info Kiểu Longint, hiện tại có giá trị 40 5-8 Chiều rộng bitmap Kiểu longint tính bằng pixel 9-12 Chiều cao bitmap Kiểu longint tính bằng pixel 13-14 Số Planes màu Kiểu Word số bảng màu 15-16 Số bits cho một pixel Kiểu Word, các giá trị có thể có 1: Đen/trắng, 4:16 màu, 8:256 màu, 24: 24bit màu 17-20 Kiểu nén dữ liệu Kiểu Longint có giá trị là 0: Không nén 1: Nén runlength+8bit/pixel 2: Nén runlength+4bit/pixel 21-24 Kích thước ảnh Kiểu Longint, bằng số byte của ảnh 25-28 Độ phân giải ngang Kiểu Longint, tính bằng pixel 29-32 Độ phân giải dọc Kiểu Longint, tính bằng pixel 33-36 Số màu được sử dụng Kiểu Longint trong ảnh 37-40 Số màu được sử dụng Kiểu Longint khi hiện ảnh Bitmap palette 32 -Tiếp theo sau vùng info là palette màu của BMP, gồm nhiều bộ có kích thước bằng 4 byte xếp liền nhau theo cấu trúc Blue-Green-Red và một Byte dành riêng cho Itensity.Kích thước của vùng Palette màu bằng 4*số màu của ảnh.Vì Palette màu của màn hình có cấu tạo theo thứ tự Red- Green-Blue, nên khi đọc palette màu của ảnh BMP vào ta phải chuyển đổi lại cho phù hợp. Số màu của ảnh được biết dựa trên số bít cho 1 pixel cụ thể là: 8bits/pixel: ảnh 256 màu, 4bits/pixel: ảnh 16 màu, 24bits/pixel ảnh 24 bít màu c). BitmapData: -Phần này kề tiếp ngay sau Palette màu của BMP.Đây là phần chứa các giá trị màu của các điểm ảnh trong BMP.Các điểm ảnh được lưu theo thứ tự từ trái qua phải trên một dòng và các dòng lại được lưu theo thứ tự dưới lên trên.Mỗi Byte trong vùng BitmapData biểu diễn 1 hoặc nhiều điểm ảnh tùy theo số bits cho một pixel. 4.2. Thuật toán đọc và hiển thị file ảnh Bipmap -Thuật toán hiển ảnh BMP gồm các bước sau: B1:-Khai báo cấu trúc ảnh bitmap B2:-Đọc BitmapHeader để nhận dạng file có đúng là BMP thật không (hai byte đầu tiên là "BM") và xác định Byte bắt đầu vùng Bitmap Data B3:-Đọc BitmapInfo để lấy các thông tin cơ bản về ảnh như chiểu rộng, chiều cao, số Bits cho 1 pixel từ đó suy ra số màu và kích thước palette màu. B4:-Đọc Palette màu và chuyển đổi palette màu từ dạng Blue-Green- Red-Reverse sang Ren-Green-Blue. B5:-Đọc phần Bitmap Data, tính toán và vẽ từng điểm ra màn hình theo thứ tự từ trái qua phải và từ dưới lên trên. 33 4.3. Thuật toán xử lý ảnh Bipmap 4.3.1. Xác định vị trí 4.3.1.1. Vị trí đáp án Private Sub GetViTri(ByVal SttCau As Long, ByVal PhuongAn As Long, ByRef x As Long, ByRef y As Long) x = csGOC1_X - csPAGOC1_Dx + ((SttCau - 1) \ csSOCAUMOICOT) * csCOL_Dy + (PhuongAn - 1) * csPA_Dx y = csGOC1_Y + csPAGOC1_Dy + ((SttCau - 1) Mod csSOCAUMOICOT) * csPA_Dy End Sub 4.3.1.2. Vị trí số báo danh Private Sub getvitrisbd(ByVal sttsosbd As Long, ByVal chisosbd As Long, ByRef x As Long, ByRef y As Long) x = csGOC1_X - cschisobdGOC1_Dx + (sttsosbd - 1) * cssbd_Dx y = csGOC1_Y + cschisobdGOC1_Dy + (chisosbd - 1) * cssbd_Dy End Sub 4.3.1.3. Vị trí mã đề thi Private Sub getvitridethi(ByVal sttsodethi As Long, ByVal chisodethi As Long, ByRef x As Long, ByRef y As Long) x = csGOC1_X - cschisodtGOC1_Dx + (sttsodethi - 1) * cssbd_Dx y = csGOC1_Y + cschisodtGOC1_Dy + (chisodethi - 1) * cssbd_Dy End Sub 4.3.2. Đọc file ảnh BMP Private Sub docbmp() Dim Position As Long = 0, temp As Integer = 0 On Error GoTo Handle_FileError Me.Cursor = Cursors.WaitCursor 34 FileOpen(1, listdsbt.Text, OpenMode.Binary) '---- Doc phan Header---------- Position = 1 FileGet(1, HeaderBmp.NhanDangFile, Position) Position = Position + 2 FileGet(1, HeaderBmp.KichThuocFile, Position) Position = Position + 4 FileGet(1, HeaderBmp.DuTru, Position) Position = Position + 4 FileGet(1, HeaderBmp.ByteDuLieuBatDau, Position) Position = Position + 4 '---- Doc phan InfoHeader---------- Position = 15 FileGet(1, InfoHeaderBmp.SoByteInfo, Position) Position = Position + 4 FileGet(1, InfoHeaderBmp.ChieuRongAnh, Position) Position = Position + 4 FileGet(1, InfoHeaderBmp.ChieuCaoAnh, Position) Position = Position + 4 FileGet(1, InfoHeaderBmp.SoBangMau, Position) Position = Position + 2 FileGet(1, InfoHeaderBmp.SoBitMotPixel, Position) Position = Position + 2 FileGet(1, InfoHeaderBmp.KieuNenDuLieu, Position) Position = Position + 4 FileGet(1, InfoHeaderBmp.KichThuocAnh, Position) Position = Position + 4 FileGet(1, InfoHeaderBmp.DoPhanGiaiNgang, Position) Position = Position + 4 FileGet(1, InfoHeaderBmp.DoPhanGiaiDoc, Position) Position = Position + 4 35 FileGet(1, InfoHeaderBmp.SoMauSuDungTrongAnh, Position) Position = Position + 4 FileGet(1, InfoHeaderBmp.SoMauSuDungHienAnh, Position) Position = Position + 4 Position = HeaderBmp.ByteDuLieuBatDau + 1 FileClose(1) Me.Cursor = Cursors.Default Exit Sub Handle_FileError: FileClose(1) Me.Cursor = Cursors.Default End Sub 4.3.3. Mở file ảnh BMP Private Sub CmdOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdOpen.Click On Error GoTo Handle Dim i As Integer, ThuMucAnh As String, TaptinAnh As String Dialog = New OpenFileDialog Dialog.Filter = "Bitmap files (*.bmp)|*.bmp|All files (*.*)|*.*" Dialog.FilterIndex = 1 Dialog.Multiselect = True Dialog.ShowDialog(Me) Dim s As String listdsbt.Items.Clear() For i = Dialog.FileNames.GetLowerBound(0) To Dialog.FileNames.GetUpperBound(0) s = Dialog.FileNames(i) listdsbt.Items.Add(s) Next TaptinAnh = Dialog.FileName Exit Sub Handle: If Err.Number MsgBoxStyle.Critical Then MsgBox(Err.Description, MsgBoxStyle.OkOnly + MsgBoxStyle.Exclamation) 'cdlCancel=32755 End Sub 36 4.3.4. Xử lý có tô hay không Private Function GetToMau(ByVal x As Long, ByVal y As Long) As Boolean Dim position As Integer, temp As Short Dim i As Short, j As Short Dim mauden As Integer, mautrang As Integer On Error GoTo Handle_FileError Me.Cursor = Cursors.WaitCursor FileOpen(1, listdsbt.Text, OpenMode.Binary) '---- Doc phan Header---------- position = 1 FileGet(1, HeaderBmp.NhanDangFile, position) position = position + 2 FileGet(1, HeaderBmp.KichThuocFile, position) position = position + 4 FileGet(1, HeaderBmp.DuTru, position) position = position + 4 FileGet(1, HeaderBmp.ByteDuLieuBatDau, position) position = position + 4 '---- Doc phan InfoHeader---------- position = 15 FileGet(1, InfoHeaderBmp.SoByteInfo, position) position = position + 4 FileGet(1, InfoHeaderBmp.ChieuRongAnh, position) position = position + 4 FileGet(1, InfoHeaderBmp.ChieuCaoAnh, position)

Các file đính kèm theo tài liệu này:

  • pdfLuận văn- Xây dựng phần mềm chấm điểm bài thi trắc nghiệm trên giấy.pdf