Tải bản đầy đủ (.pdf) (15 trang)

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

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 (624.2 KB, 15 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

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

<b>Báo cáo mơn project I</b>

<b>Đề tài: phát triển chương trình sinh đề thi</b>

Giáo viên hướng dẫn: TS. Nguyễn Thị Oanh

Sinh viên thực hiện: Đỗ Kim Trà MSSV: 20183999

<b><small>Hà Nội – 1/2020 </small></b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

4. Phát biểu bài toán...4

4.1 Bài toán đặt ra...4

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 tố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

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>I. Tổng quan về đề tài</b>

<b>1. Đặt vấn đề</b>

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. 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ở ứ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 tồ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ã đề.

<b>2. Tính cấp thiết</b>

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.

<b>3. Mục tiêu</b>

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.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="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.

<b>4. Phát biểu bài toán</b>

<b>4.1 Bài toán đặt ra</b>

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ư hồn tồn thân thiện với người sử dụng.

Tiêu đề của template

Loại đề thi: trắc nghiệm, tự luận, tổng hợpCá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

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="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 templateNgà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ớiCác câu hỏi được lấy ngẫu nhiên trong cơ sở dữ liệuThứ 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ệmCó 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.

<b>II. Thiết kế cơ sở dữ liệu</b>

<b>1. Sơ đồ thiết kết</b>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>2. Chi tiết các bảng</b>

Int , not nullVarchar(20),not nullVarchar(20),not null

Primary key

Int,not nullText,not nullVarchar(20),not null

Identity,primary keyForeign key to userlist

Int,not nullText,not nullInt,not null

Identity, primary keyForeign key to subject

Int, not nullText, not nullInt, not nullInt, not nullInt, not null

Identity, Primary key

Foreign key to chapter

Int , not nullText, not nullText, not nullTexttest

Primary key(Foreign key to question)

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Int , not nullText, not nullInt, not nullInt, not nullInt, not null

Identity, primary keyForeign key to template

Int not nullInt not nullInt not nullInt not nullFloat, not nullInt not null

Identity, Primary keyForeign key to chapterquestion countQuestion levelForeign key to template

Int not nullInt not nullVarchar(10) not nullText not nullInt not nulldate not nullInt not null

Int not nullInt not nullInt not nullfloat not nullText not nullTextTextTextTextText

Primary key ,IdentityForeign key

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>III.Thực hiện</b>

<b>1. Các công cụ hỗ trợ xây dưng chương trình</b>

Ngơn ngữ xây dựng phần mềm: javaThư 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

<b>2. Các packages chính:</b>

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.

ioview

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>3. Phân tích chứa năng các lớp trong java</b>

<b>3.1 Các lớp trong package view</b>

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óaNewTemplate: 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éplư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 xembà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.

<b>3.2 Các lớp trong package model</b>

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.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="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.

<b>3.3 Các lớp thuộc package connection</b>

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.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>3.4 Các lớp thuộc package control</b>

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.Q 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.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="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.

Tiêu đề của template

Loại đề thi: trắc nghiệm, tự luận, tổng hợpCá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

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="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.

<b>2. Các chức năng dự kiến chưa hồn thành</b>

Khơng có

<b>V. Đề xuất phát triển thêm trong tương lai</b>

<b>1. Các tính năng dự kiến phát triển</b>

- 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

<b>2. Đề xuất giải pháp giải quyết các bài tốn trên</b>

<b>2.1 Tính năng xắp xếp thứ tự các câu theo chương</b>

Đố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 đầuxắ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í.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Cụ thể:

- Các tiêu trí với độ ưu tiên từ thấp đến caoCá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ướcChu trình thuật tố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.

<b>2.2 Tính năng bổ xung câu hỏi trắc nghiệm từ file txt</b>

Đá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 đốitượ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. q 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.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Khi đó nếu ta có tập dữ liệu thơ ta cần phải bổ xung các thẻ để tạo dữ liệu chuẩncho việc nhập tự đông dữ liệu và cơ sở dữ liệu.

</div>

×