1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo môn project i đề tài phát triển chương trình sinh đề thi

15 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Phát triển chương trình sinh đề thi
Tác giả Đỗ Kim Trà
Người hướng dẫn TS. Nguyễn Thị Oanh
Trường học Trường Đại học Bách khoa Hà Nội, Viện Công nghệ Thông tin và Truyền thông
Chuyên ngành Công nghệ thông tin
Thể loại Báo cáo môn Project I
Năm xuất bản 2020
Thành phố Hà Nội
Định dạng
Số trang 15
Dung lượng 624,2 KB

Nội dung

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 1

TRƯỜ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 2

Bố 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 3

I 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 4

Cá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 6

2 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 7

id

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 8

III.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 9

3 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 10

Template: 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 11

3.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 12

InnerQuestionControl: 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 14

Cụ 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

Ngày đăng: 13/06/2024, 19:08

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w