Tuynhiên, việc tổ chức làm nhiều mã đề thi trắc nghiêm cùng đề gặp nhiều khó khăn.Ngày nay công nghệ phát trển rất mạnh mẽ giúp cho con người tự động hóa được công việc tốt hơn.Trên cơ s
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áo cáo môn project I
Đề tài: phát triển chương trình sinh đề thi
Giáo viên hướng dẫn: TS Nguyễn Thị Oanh
Sinh viên thực hiện: Đỗ Kim Trà MSSV: 20183999
Hà Nội – 1/2020
Trang 2Bố cục báo cáo
I Tổng quan về đề tài 3
1 Đặt vấn đề 3
2 Tính cấp thiết 3
3 Mục tiêu 3
4 Phát biểu bài toán 4
4.1 Bài toán đặt ra 4
4.2 Các chức năng của phần mềm 4
II Thiết kế cơ sở dữ liệu 5
1 Sơ đồ thiết kết 5
2 Chi tiết các bảng 6
III Thực hiện 8
1 Các công cụ hỗ trợ xây dưng chương trình 8
2 Các packages chính: 8
3 Phân tích chứa năng các lớp trong java 9
3.1 Các lớp trong package view 9
3.2 Các lớp trong package model 9
3.3 Các lớp thuộc package connection 10
3.4 Các lớp thuộc package control 11
3.5 Các lớp thuộc package io 12
IV Tiến độ làm việc 12
1 Các chức năng đã hoàn thành 12
2 Các chức năng dự kiến chưa hoàn thành 13
V Đề xuất phát triển thêm trong tương lai 13
1 Các tính năng dự kiến phát triển 13
2 Đề xuất giải pháp giải quyết các bài toán trên 13
2.1 Tính năng xắp xếp thứ tự các câu theo chương 13
2.2 Tính năng bổ xung câu hỏi trắc nghiệm từ file txt 14
Trang 3I Tổng quan về đề tài
1 Đặt vấn đề
Mặc dù đề thi ngày nay có rất nhiều nhưng việc không nhất quán giứa người dậy cần sử dụng đề thi và người làm đề khiến cho việc sử dụng đề thi đã có gặp nhiều khó khăn
Hiện nay hình thức thi trắc nghiệm khách quan đang được Bộ Giáo dục & Đào tạo áp dụng rộng rãi trong các kỳ thi học kỳ của cấp 2, 3, các trường chuyên nghiệp và thậm chí cả thi vào đầu vào đại học và các trường chuyên nghiệp Tuy nhiên, việc tổ chức làm nhiều mã đề thi trắc nghiêm cùng đề gặp nhiều khó khăn
Ngày nay công nghệ phát trển rất mạnh mẽ giúp cho con người tự động hóa được công việc tốt hơn
Trên cơ sở ứng dụng những kiến thức đã học em đã có ý tưởng xây dựng một phần mềm giúp người dạy có thể tự xây dựng đề thi để khắc phục các nhược điểm sau:
• Đề thi được sinh ra chưa thực sự đảm bảo bảo tính khách quan, cân đối về hàm lượng kiến thức trong toàn bộ môn thi
• Các đề thi trong một ca thi có thể không tương đương (đồng đều) nhau về
độ khó
• Không đồng nhất giữa việc các câu hỏi và kiến thức giáo viên giảng dậy khi lấy đề ở các nguồn
• Không đa dạng các mã đề
2 Tính cấp thiết
Tin học hoá trong giáo dục đã và đang là mục tiêu lớn của ngành giáo dục hiện nay Cùng với việc thay đổi, cải tiến phương pháp dạy và học truyền thống thì việc triển khai tin học hoá trong thi cử cũng hết sức được quan tâm, chú ý nhằm mục tiêu nâng cao chất lượng các kỳ thi, đảm bảo độ chính xác, khách quan trong công tác quản lý và tổ chức thi
3 Mục tiêu
Phần mềm hỗ trợ quản lý và ra đề thi được xây dựng nhằm mục đích hỗ trợ bộ phận quản lý đề thi (hoặc giáo viên) trong việc quản lý, ra đề thi trên giấy một cách hiệu quả, đảm bảo tính khách quan, đồng đều, chính xác và bảo mật cũng như hoàn toàn thân thiện với người sử dụng
Trang 4Các tính năng cần đáp ứng:
• Quản lý dữ liệu ngân hàng câu hỏi, đề thi
• Ra đề thi trắc nghiệm khách quan theo nhiều lựa chọn khác nhau
• Ra đề hoặc bốc thăm đề tự luận ngẫu nhiên đảm bảo tính khách quan
• Ra đề thi trắc nghiệm khách quan kết hợp tự luận
• Giúp người dạy quả lí được những kiến thức mình dạy và kiểm tra
4 Phát biểu bài toán
4.1 Bài toán đặt ra
Cần xây dựng phần mềm hỗ trợ quản lý và ra đề thi được xây dựng nhằm mục đích hỗ trợ bộ phận quản lý đề thi (hoặc giáo viên) trong việc quản lý, ra đề thi trên giấy một cách hiệu quả, đảm bảo tính khách quan, đồng đều, chính xác và bảo mật cũng như hoàn toàn thân thiện với người sử dụng
4.2 Các chức năng của phần mềm
- Quản lí tài khoản người dùng gồm có tạo mới tài khoản và đăng nhập phần
mềm
- Quản lí môn học, chương, bài tập cho phép người dùng tạo mới thêm, sửa, xóa các đề mục
- Tạo template sinh đề thi mô tả cấu trúc của đề thi bao gồm các thông tin như:
Môn học
Tiêu đề của template
Loại đề thi: trắc nghiệm, tự luận, tổng hợp
Các chương của môn học
Số câu hỏi trong từng chương
Loại của câu hỏi gồm: trắc nghiệm và tự luận
Độ khó của câu bao gồm ba cấp độ: dễ, trung bình, khó
Điểm của từng câu
Ưu tiên sắp xếp câu dễ ở trước do người dùng tùy chọn
Trang 5- Sinh đề thi:
Đề thi sẽ bao gồm các thông tin:
Tiêu đê của bài thi được lấy từ tiêu đề của template
Ngày tạo đề thi là ngày sinh đề thi
Mã của đề thi
Các câu hỏi kèm số câu và điểm của câu được sinh ra dựa trên template
Đề thi đảm bảo các tiêu trí:
Có thể sinh nhiều mã đề từ một đề gốc với
Các câu hỏi được lấy ngẫu nhiên trong cơ sở dữ liệu
Thứ tự các câu trong đề được xắp xếp ngẫu nhiên
Thứ tự đáp án được đảo ngẫu nhiên đối với câu hỏi trắc nghiệm
Có tùy chọn xắp xếp các câu dễ trước khó sau do người dùng tùy chọn: Xuất ra đáp án cùng với đề thi được sinh ra đối với đề trắc nghiệm và
có thể được lưu dưới dạng tệp txt
Lưu đề và đáp án vào cơ sở dữ liệu giúp cho đề thi được an toàn và có thể được tải xuống sau này
II Thiết kế cơ sở dữ liệu
1 Sơ đồ thiết kết
Trang 62 Chi tiết các bảng
userlist
id
username
password
Int , not null Varchar(20),not null Varchar(20),not null
Primary key
subject
id
name
userid
Int,not null Text,not null Varchar(20),not null
Identity,primary key Foreign key to userlist
chapter
id
name
subid
Int,not null Text,not null Int,not null
Identity, primary key Foreign key to subject
question
id
content
qtype
qlevel
cid
Int, not null Text, not null Int, not null Int, not null Int, not null
Identity, Primary key
Foreign key to chapter
answer
Qid
Choose
Answer1
Answer2
Answer3
Int , not null Text, not null Text, not null Text test
Primary key(Foreign key to question)
Trang 7id
title
templatetype
subid
easyfirst
Int , not null Text, not null Int, not null Int, not null Int, not null
Identity, primary key
Foreign key to template
struct
id
cid
qcount
qlevel
Totalscore
templateid
Int not null Int not null Int not null Int not null Float, not null Int not null
Identity, Primary key Foreign key to chapter question count Question level Foreign key to template
test
id
subid
code
title
testtype
createdate
testtype
Int not null Int not null Varchar(10) not null Text not null Int not null date not null Int not null
Primary key Foreign key to subject
innerquestion
id
testid
qnumber
score
content
answer1
answer2
answer3
answer4
choose
Int not null Int not null Int not null float not null Text not null Text Text Text Text Text
Primary key ,Identity Foreign key
Trang 8III.Thực hiện
1 Các công cụ hỗ trợ xây dưng chương trình
Ngôn ngữ xây dựng phần mềm: java
Thư viện lập trình đồ họa: java swing
Hệ csdl sử dụng: mysql với phần mềm quản trị cơ sở dữ liệu xampp
2 Các packages chính:
Chú giải:
view: chứa các lớp định nghĩa giai diện
connection: chứa các lớp kết nối đến cơ sở để lấy dữ liệu
model: chứa các lớp mô tả dữ liệu tương tác trong csdl
control: chứa các lớp xử lí dữ liệu
io: chứa lớp đọc ghi file
control connection
model
io view
Trang 93 Phân tích chứa năng các lớp trong java
3.1 Các lớp trong package view
Nhiệm vụ: chứa các lớp định nghĩa giai diện
Cụ thể lớp view bao gồm các class:
LogIn: giao diện đăng nhập
Menu: giao diện quả lí các chức năng chính của phần mềm
TableOfContent: giao diện quản lí các môn học, các chương với các chức năng thêm mới, sửa, xóa
NewQuestion: giao diện dùng để thêm mới câu hỏi vào các chương trong trong môn học
QuestionManager: giao diện quản lí các câu hỏi với cac chức năng sủa, xóa NewTemplate: giao diện thêm mới template để sinh đề thi
TemplateManager: giao diện quản lí các template với chức năng chỉnh sửa các thông số trong template đã tạo, xóa template
NewTest: giao diện tạo sinh bài kiểm tra mới từ template đã tạo, và cho phép lưu chúng xuống máy tính hoặc lưu lên trên cơ sở dữ liệu
TestManager: giao diện quản lí các bài kiểm tra đã tạo với các chứ năng xem bài đã tạo, tải xuống máy tính bài hoặc đáp án của bài đã lưu trên cơ sở dữ liệu
3.2 Các lớp trong package model
Nhiệm vụ: các đối tượng đượng tạo ra từ các class thuộc package model chứa các dữ liệu được lấy từ cơ sở dữ liệu
Cụ thể lớp model bao gồm các class:
User: chứa dữ liệu về user
Bao gồm các trường: user name, password, id
Subject: chứa dữ liệu về các môn học
Bao gồm các trường: id, name
Chapter: chứa dữ liệu về các đề mục của các chương
Bao gồm các trường: id, name
Question: chứa dữ liệu về nội dung của câu hỏi
Bao gồm các trường: id, content, type, level
Answer: chứa dữ liệu về đáp án của câu hỏi với các câu hỏi trắc nghiệm Bao gồm các trường: qid, choose, answer1, answer2, answer3
FullQuestion: chứa dữ liệu của cả hai phần Question và Answer
Bao gồm các trường: cid, type, level, score, content, choose, answer1, answer2, answer3
Trang 10Template: chứa dữ liệu về các template.
Bao gồm các trường: id, title, type, easyfirst
Struct: chứa dữ liệu về cấu trúc của đề thi bao ứng với các template Bao gồm các trường: id, cid, cName, count, type, level, totalScore,
templateid
Test: chứa dữ liệu về đề thi
Bao gồm các trường: id, subid, code, title, testtype, date
InnerQuestion: chứa dữ liệu các câu hỏi và đáp án trong các đề thi được sinh ra
Bao gồm các trường: id, testid, qnumber, score, content, answer1, answer2, answer3, answer4, choose
3.3 Các lớp thuộc package connection
Nhiệm vụ: chứa các lớp kết nối đến cơ sở để lấy dữ liệu
Cụ thể package connection chứa các class:
ConnectDB: kết nối đến cơ sở dữ liệu
UserDao: thao tác đến cơ sở dữ liệu
Bao gồm các thao tác: thêm, kiểm tra, lấy dữ liệu về user
SubjectDao: thao tác đến cơ sở dữ liệu
Bao gồm các thao tác: thêm, cập nhật, xóa, try suất
ChapterDao: thao tác đến cơ sở dữ liệu
Bao gồm các thao tác: thêm, cập nhập, xóa, try suất
QuestionDao: thao tác đến cơ sở dữ liệu
Bao gồm các thao tác: thêm, cập nhật, xóa, truy suất
AnswerDao: thao tác đến cơ sở dữ liệu
Bao gồm các thao tác: thêm, cập nhật, xóa, truy suất
FullQuestion: thao tác đến cơ sở dữ liệu
Bao gồm các thao tác: truy suất, kiểm tra số câu hỏi có trong cơ sở dữ liệu ứng với struct
TemplateDao: thao tác đến cơ sở dữ liệu
Bao gồm các thao tác: thêm, xóa, truy suất
StructDao: thao tác đến cơ sở dữ liệu
Bao gồm các thao tác: thêm, xóa, sửa, truy suất
TestDao: thao tác đến cơ sở dữ liệu
Bao gồm các thao tác: thêm, cập nhật, xóa, truy suất
InnerQuestionDao: thao tác đến cơ sở dữ liệu
Bao gồm các thao tác: thêm, xóa, truy suất
Trang 113.4 Các lớp thuộc package control
Nhiệm vụ: chứa các lớp xử lí dữ liệu
Cụ thể package control chứa các class:
TestControl: xử lí cho việc sinh đề từ tập dữ liệu input là template và struct Các trường bao gồm: template, strList, fullQuestionList, innerQuestionList Quá trình sử lí của class TestControl để tạo ra đề thi:
Ban đầu khởi tạo đối tượng testControl thuộc lớp TestControl sẽ nhận vào đối tượng template
Bước 1: Dựa và đối tượng template được truyền vào testControl sẽ kết nối đến cơ sở dữ liệu để nhận lấy tập strList(tập struct) qua phương thức prepareStrList()
Bước 2: xóa phần tử struct thuộc strList có thuộc tính count (số câu hỏi) bằng không qua phương thức removeZero()
Bước 3: kiểm tra sự tồn tại đầy đủ các câu hỏi ứng với mỗi struct trong strList thông qua phương thức checkStrList() Nêu không có đủ câu hỏi trong cơ sở dữ liệu ứng với mỗi struct thì sẽ thông báo đến người dùng không thể sinh câu Ngược lại thì có thể tiếp tục quá trình
Bước 4: testControl sẽ kết nối với cơ sở dữ liệu lấy ngẫu nhiên tập câu hỏi(fullQuestionList) ứng với mỗi sruct
Bước 5: sắp xếp các phần tử thuộc fullQuestionList để đảm bảo các tiêu chí thứ tự xắp xếp các câu trong đề thi thông qua phương thức sort() Bước 6: tạo ra tập các innerQuestionList từ fullQuestionList thông qua phương thức setInnerQuestionList() Phương thức setInnerQuestionList() (phương thức sẽ gọi đến phương thức parseInnerQs() trong class InnerQuestionControl ) sẽ lấy tập fullQuestionList từ đối tượng testControl và qua lớp InnerQuestionControl sẽ lấy ra tập
innerQuestionList từ tập fullQuestionList
Tập innerQuestionList có thể được sử dụng để lưu đề thi vào cơ sở dữ liệu hoặc có thể tạo ra đề thi
Bước 7: để tạo ra đề thi thông qua phương thức getTestUnit()(nó gọi đến phương thức getTestUnit() trong class InerQuestionControl ) phương thức sẽ lấy tập innerQuestionList và thông qua lớp
InnerQuestionListControl để để xuất ra String chứa đề thi
Từ đó xuất ra màn hình
Trang 12InnerQuestionControl: chứa các phương thức static sử lí dữ liệu cho liên quan đến InnerQuestion để phục vụ cho lớp TestControl trong việc sinh đề thi
Bao gồm các phương thúc tiêu biểu:
getTestUnit(): nhập vào tập innerQuestionList để đưa ra String chứa đề thi
getTestAnswer(): nhập vào tập innerQuestionList để đưa ra String chứa đáp án của đề thi với đề trắc nghiệm hoặc tổng hợp
parseInnerQs() nhập vào tập các fullQuestionList để xuất ra tập inerQuestionLit
StructControl: dùng để giúp việc hiển thị cấu trúc đề thi Được sử dụng bởi class view.TemplateManager
QuestionControl: dùng để giúp việc hiển thị danh sách câu hỏi Được sử dụng bởi class view.QuestionManager
3.5 Các lớp thuộc package io
Nhiệm vụ: chứa lớp đọc ghi file
Cụ thể package io chứa các class
FileTypeFilter: được extends từ class FileFilter Nó được sử dụng để tạo phần mở rộng cho tên file
WriterTextFile: chứa phương thức static writeTextFile() nhận và dữ liệu string và lưu ra máy tính
IV Tiến độ làm việc
1 Các chức năng đã hoàn thành
Quản lí tài khoản người dùng gồm có tạo mới tài khoản và đăng nhập phần mềm
Quản lí môn học, chương, bài tập cho phép người dùng tạo mới thêm, sửa, xóa các đề mục
Tạo template sinh đề thi mô tả cấu trúc của đề thi bao gồm các thông tin như:
Môn học
Tiêu đề của template
Loại đề thi: trắc nghiệm, tự luận, tổng hợp
Các chương của môn học
Số câu hỏi trong từng chương
Loại của câu hỏi gồm: trắc nghiệm và tự luận
Trang 13Độ khó của câu bao gồm ba cấp độ: dễ, trung bình, khó
Điểm của từng câu
Ưu tiên sắp xếp câu dễ ở trước do người dùng tùy chọn
- Sinh đề thi:
Đề thi sẽ bao gồm các thông tin:
Tiêu đê của bài thi được lấy từ tiêu đề của template
Ngày tạo đề thi là ngày sinh đề thi
Mã của đề thi
Các câu hỏi kèm số câu và điểm của câu được sinh ra dựa trên template
2 Các chức năng dự kiến chưa hoàn thành
Không có
V Đề xuất phát triển thêm trong tương lai
1 Các tính năng dự kiến phát triển
- Tính năng xắp xếp thứ tự các câu theo chương
- Bổ xung tên chương vào đề
- Cho phép chỉnh sửa đề đã tạo và lưu vào cơ sở dữ liệu
- Cho phép tạo các đáp án và lưu vào cơ sở dữ liệu
- Cho phép nhập dữ liệu từ file text
- Cho phép tạo csdl từ file text
- Cho phép người khác có thể sử dụng thư viện để sinh đề thi
- Cho phép xuất tập các câu hỏi để có thể bổ xung cho cơ sở dữ liệu khác bằng file txt
2 Đề xuất giải pháp giải quyết các bài toán trên
2.1 Tính năng xắp xếp thứ tự các câu theo chương
Đối với tính năng này ở bước sinh đề thi, sau khi lấy được tập các câu ta bắt đầu xắp xếp đề thi đảm bảo từng tiêu chí từng bước vưới độ ưu tiên của các tiêu chí
Trang 14Cụ thể:
- Các tiêu trí với độ ưu tiên từ thấp đến cao
Các câu được sắp xếp ngẫu nhiên
Các câu được sắp xếp với dễ trước và khó sau
Các câu được sắp xếp với thứ tự bố cục các chương đã cho trước Chu trình thuật toán:
Ban đầu ta có một danh sách lưu các câu hỏi
Để đảm bảo các câu được sắp sếp ngẫu nhiên ta thực hiện:
Khỏi tạo một mảng mới
Thực hiện việc chọn bất kì một phần tử ở mảng đầu rồi di chuyển nó sang mảng thứ 2 cho đến khi kết thúc ta được danh sách các câu hỏi đảm bảo được xắp xếp ngẫu nhiên
Để có được danh sách với câu dễ ở trước ta thực hiện các bước sau:
Khởi tạo một danh sách mới
Duyệt từ đầu danh sách gặp phần tử dễ đầu tiên ta di chuyển vào cuối danh sách thứ hai
Cứ tiếp tục cho đến khi hết câu dễ
Ta lại bắt đầu việc trên với câu trung bình và khó
Để đảm bảo bố cục theo thứ tự các chương ta thực hiện:
Ta xây dụng danh sách các trương của đề thi và xắp xếp tương tự như việc sắp xếp thỏa mãn tiêu chí dễ ở trước khó ở sau
Note: Nếu có tiêu chí nào không được chọn thì ta bỏ bước làm ứng với nó đi
2.2 Tính năng bổ xung câu hỏi trắc nghiệm từ file txt
Đánh giá ý nghĩa:
Việc nhập liệu bằng file txt tỏ ra hiệu quả hơn đối với việc ta đã có tập dữ liệu lớn và cần nhập dữ liệu vào cơ sở dữ liệu một cách nhanh chóng và không phải thực hiện việc copy từng bài thông qua giao diện trong cơ sở dữ liệu
Ý tưởng phát triển:
Xuất phát từ ngôn ngữ đánh dấu dữ liệu html dùng các thẻ để nhận dạng các đối tượng trong file html ta có thể xây dựng một bộ quy tắc tương tự cho tập các câu hỏi để từ đó chương trình có thể nhận biết được các đối tượng và lưu trữ một các tự động quá trình nhập chương trình sẽ có giao diện một click hiểm thị lần lượt các câu hỏi để người dùng kiển tra nếu đúng thì chỉ cần click chuột để chưng trình thêm vào cơ sở dữ liệu và tiếp tục quá trình trên đến hết