Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

CẤU TRÚC DỮ LIỆU & GIẢI THUẬT

XÂY DỰNG PHẦN MỀM THI TRẮC NGHIỆM


Yêu cầu:

– Danh sách môn học: cây nhị phân tìm kiếm (MAMH (C15), TENMH).

– Danh sách Lop: mảng con trỏ có tối đa 500 lớp (MALOP, TENLOP, con trỏ dssv):
con trỏ dssv trỏ đến danh sách sinh viên thuộc lớp đó.

– Danh sách sinh viên: danh sách liên kết đơn (MASV, HO, TEN, PHAI, password,
con trỏ): con trỏ sẽ trỏ đến điểm các môn đã thi trắc nghiệm.

– Danh sách Điểm thi (danh sách liên kết đơn) (Mamh, Diem)

– Danh sách Câu hỏi thi: chứa các câu hỏi nguồn của các môn học (Id, Mă MH, Nội
dung, A, B, C, D, Đáp án); trong đó A, B, C, D là 4 chọn lựa tương ứng với nội dung
câu hỏi. Danh sách câu hỏi thi là 1 mảng con trỏ có tối đa 2000 câu, và luôn có sắn thứ
tự theo mã môn học.

Chương trình có các chức năng sau:

a/ Đăng nhập dựa vào mã sinh viên, password. Nếu tài khoản đăng nhập là GV, pass là
GV thì sẽ có toàn quyền.
b/ Nhập lớp.
c/ In danh sách lớp.
d/ Nhập sinh viên của lớp: nhập vào mã lớp trước, sau đó nhập các sinh viên vào lớp
đó.
e/ Nhập môn học: cho phép cập nhật (thêm / xóa / hiệu chỉnh) thông tin của môn học.
f/ Nhập câu hỏi thi (Id là số ngẫu nhiên do chương trình tự tạo).
g/ Thi Trắc nghiệm (trước khi thi hỏi người thi môn thi, số câu hỏi thi, số phút thi-sau
đó lấy ngẫu nhiên các câu hỏi trong danh sách câu hỏi thi của môn.
h/ In chi tiết các câu hỏi đã thi 1 môn học của 1 sinh viên.
i/ In bảng điểm thi trắc nghiệm môn học của 1 lớp (nếu có sinh viên chưa thi thì ghi
“Chưa thi”.

Tổ chức các danh sách lưu trữ dữ liệu:


- Tạo các danh sách thuộc các kiểu: mảng, danh sách liên kết đơn, cây nhị phân…
- Các danh sách thuộc dạng mảng như danh sách câu hỏi và danh sách lớp ta nên cấp
phát tối đa có thể lưu trữ.
- Lưu danh sách câu hỏi và danh sách lớp vào file. Khi khởi động chương trình thì có
thể lấy dữ liệu lên để sử dụng. Sau khi kết thúc chương trình cần lưu lại để cập nhật lại
dữ liệu vào file để lần chạy tới chương trình có thể sử dụng dữ liệu để cập nhật.

Xây dựng các chức năng của chương trình:


a) Chức năng đăng nhập.
- Kiểm tra xem user đó có phải là giáo viên hay không. Nếu phải thì hiện các chức
năng mà giáo viên có thể sử dụng (hầu hết các chức năng giáo viên đều có thể sử
dụng).
- Nếu không không phải là user giáo viên thì ta cần duyệt đến từng sinh viên trong
danh sách lớp (Danh sách lớp -> Lớp -> Danh sách sinh viên -> Sinh viên). Sau đó
kiểm tra user và password, nếu đăng nhập thành công thì hiện các chức năng mà sinh
viên sử dụng (thi và xem lịch sử thi).
b) Chức năng nhập lớp.
- Nhập số lượng lớp muốn thêm
- Tiến hành nhập dữ liệu cho từng lớp (mã lớp và tên lớp)
- Bắt trường hợp người dùng để trống (hay nhập chuỗi rỗng “”).
c) Chức năng in danh sách lớp.
Duyệt từng lớp trong danh sách lớp -> lấy danh sách sinh viên và in tất cả các sinh
viên thuộc lớp đó ra màn hình.
d) Chức năng nhập sinh viên của lớp.
- Nhập mã lớp
- Tạo một sanh sách sinh viên
- Nhập từng sinh viên theo yêu cầu
- Gán danh sách sinh viên cho lớp đó
- Bắt lỗi các trường hợp người dùng nhập sai.
e/ Chức năng nhập môn học và cập nhật môn học.
Tạo một node môn học sau đó chèn vào cây nhị phân tìm kiếm. Lấy tên môn học làm
khóa cho một node.
- Chức năng xóa môn học: Nhập tên môn học sau đó tiến hành duyệt cây và xóa node.
- Chức năng hiệu chỉnh: Chỉ cần xóa node môn học đó và bắt người dùng nhập lại tên
môn học và mã môn học (xóa node và lại thêm node mới).
f/ Chức năng nhập câu hỏi thi.
- Nhập số lượng câu hỏi muốn nhập.
- Nhập vào thông tin câu hỏi.
(Mỗi câu hỏi sẽ phải dùng hàm băm để xử lý và lấy vị trí theo mã câu hỏi. Khi lấy câu
hỏi sẽ không phải duyệt từ đầu đến cuối mảng)
- Tiến hành thêm vào danh sách câu hỏi.
g/ Chức năng thi Trắc nghiệm
- Nhập vào tên môn học muốn thi.
- Duyệt sanh sách môn học để lấy mã môn học.
- Dùng hàm băm để xử lý mã môn học thành vị trí của câu hỏi (vị trí ở đây là vị trí của
câu hỏi đầu tiên của môn học).
- Sau khi có vị trí của câu hỏi đầu tiên rồi thì duyệt đến khi hết câu hỏi của môn đó (so
sánh mã câu hỏi).
- Tạo thêm một danh sách câu hỏi thi theo môn khi tiến hành duyệt thì sẽ thêm các câu
hỏi vào danh sách này luôn.
- Sau khi đã có một danh sách các câu hỏi thi theo môn -> nhập số câu hỏi muốn thi
(không được lớn hơn số lượng câu hỏi trong danh sách).
- Chọn ngẫu nhiên các câu hỏi có trong danh.
- Tiến hành in câu hỏi ra màn hình và bắt người dùng nhập đáp án. So sánh đáp án của
câu hỏi với đáp án người dùng nhập để tính điểm.
Nếu user đăng nhập đăng là sinh viên thì cần tạo một file để lưu các câu hỏi và đáp án
mà sinh viên đã chọn lại để phục vụ cho chức năng bên dưới. Tên file có thể đặt như
sau: Tên file = mã sinh viên + tên môn thi
Nếu user đăng nhập là sinh viên thì đồng thời sau khi thi xong bạn cần cập nhật điểm
của môn thi vào danh sách điểm của sinh viên đó.
(khi đăng nhập nếu là sinh viên thì cần giữ một tham chiếu đến sinh viên đó (biến toàn
cục) để các bước xử lý dễ dàng hơn. Ví dụ nếu tham chiếu là NULL thì user đó là giáo
viên và bạn không cần lưu lại câu hỏi đã kiểm tra…)
h/ Chức năng in chi tiết các câu hỏi đã thi 1 môn học của 1 sinh viên (Chức năng
này chỉ dành cho sinh viên)
Cần kiểm tra nếu file không tồn tại tức là sinh viên đó chưa thi. Tìm file có tên như
sau: Tên file = mã sinh viên + tên môn thi
i/ Chức năng in bảng điểm thi trắc nghiệm môn học của 1 lớp.
- Nhập vào mã lớp, nhập vào tên môn học.
- Từ mã lớp đó ta có thể lấy được danh sách sinh viên của đó.
- Duyệt từng sinh viên trong danh sách sinh viên, với mỗi sinh viên sẽ có danh sách
điểm ta chỉ cần duyệt đến điểm của môn đó mà in ra (trong trường hợp không tìm thấy
điểm tức là sinh viên chưa thi, lúc này ta chỉ cần in ra “Chua thi”).

You might also like