Trắc nghiệm danh sách liên kết đơn

Hôm nay mình sẽ hướng dẫn các bạn giải quyết một bài toán cấu trúc dữ liệu và giải thuật, đồng thời cũng chia sẻ source code luôn nhé! Đây là một bài tập cấu trúc dữ liệu và giải thuật tổng hợp bao gồm nhiều cấu trúc dữ liệu và giải thuật khác nhau được sử dụng trong 1 bài tập. Hi vọng các bạn có những kiến thức thật bổ ích.

Bài tập cấu trúc dữ liệu & giải thuật

Chúng ta sẽ áp dụng cấu trúc dữ liệu & giải thuật để giải bài tập Xây dựng phần mềm thi trắc nghiệm.Ta sẽ tổ chức các danh sách cho bài tập cấu trúc dữ liệu và giải thuật này như sau:

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.

Bạn đang đọc: Bài tập cấu trúc dữ liệu và giải thuật tổng hợp

Danh sách Điểm thi [ list link đơn ] [ Mamh, Diem ]
Danh sách Câu hỏi thi : chứa những câu hỏi nguồn của những môn học [ Id, Mă MH, Nội dung, A, B, C, D, Đáp án ] ; trong đó A, B, C, D là 4 lựa chọn 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 thông tin 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 list lớp .
d / Nhập sinh viên của lớp : nhập vào mã lớp trước, sau đó nhập những sinh viên vào lớp đó .
e / Nhập môn học : được cho phép update [ 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 những câu hỏi trong list câu hỏi thi của môn .
h / In chi tiết cụ thể những 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 .
Lưu ý : Chương trình được cho phép lưu những list vào file ; Kiểm tra những điều kiện kèm theo làm dữ liệu bị sai. Có thể tự phong cách thiết kế thêm list để cung ứng nhu yếu của đề tài .

Hướng dẫn giải bài tập

Bài tập cấu trúc dữ liệu và giải thuật này sử dụng rất nhiều cấu trúc dữ liệu và giải thuật khác nhau. Chúng ta cùng đi xử lý nhé .

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

Ở trên bạn sẽ phải tạo những list thuộc những kiểu : mảng, list link đơn, cây nhị phân Cái này thì chắc rằng ai cũng biết làm rồi .
Lưu ý : Để đơn thuần thì những list thuộc dạng mảng như list câu hỏi và list lớp ta nên cấp phép tối đa hoàn toàn có thể tàng trữ .
Ta cần lưu danh sách câu hỏi và list lớp vào file. Khi khởi động chương trình thì hoàn toàn 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 để update lại dữ liệu vào file để lần chạy tới chượng trình hoàn toàn có thể sử dụng dữ liệu để update .
Bạn hoàn toàn có thể tìm hiểu thêm một số ít tài liệu ở đây để hiểu được bài tập cấu trúc dữ liệu và giải thuật này :

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

Dưới đây là những tính năng của bài tập cấu trúc dữ liệu và giải thuật thiết kế xây dựng ứng dụng thi trắc nghiệm, mỗi công dụng đều có hướng dẫn chi tiết cụ thể cho bạn .

a] Chức năng đăng nhập.

Với chức năng này bạn cần lấy dữ liệu của danh sách lớp từ file. Sau đó thực hiện các bước như sau:

Xem thêm: Cách định cấu hình DNS của bạn để có tốc độ Internet nhanh hơn / Internet

  • 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à passwork, 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.

Các bạn thực thi như sau :

  • 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]

Lưu ý : Cần 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.

Với tính năng này thì đơn thuần, bạn chỉ cần duyệt từng lớp trong list lớp. Sau đó từ lớp ta sẽ lấy list sinh viên và in tổng thể những sinh viên thuộc lớp đó ra màn hình hiển thị .

d] Chức năng nhập sinh viên của lớp.

Các bạn triển khai tuần tự như sau :

  • Nhập mã lớp vào
  • Tạo một sanh sách sinh viên
  • Tiến hành nhập từng sinh viên theo yêu cầu
  • Sau khi nhập xong thì gán danh sách sinh viên cho lớp đó

Lưu ý : Các bạn nên bắt lỗi những trường hợp người dùng nhập sai để chương trình hoàn toàn có thể triển khai xong hơn .

e/ Chức năng nhập môn học và cập nhật môn học.

Với tính năng thêm môn học : Các bạn chỉ cần tạo một node môn học sau đó chèn vào cây nhị phân tìm kiếm. Các bạn hoàn toàn có thể đọc kĩ mục cây nhị phân ở trên để hiểu rõ cách chèn hơn. Một chú ý quan tâm nhỏ là mình sẽ lấy tên môn học làm khóa cho một node .
Với công dụng xóa môn học : Các bạn chỉ cần nhập tên môn học sau đó triển khai duyệt cây và xóa node .
Với tính năng hiệu chỉnh : Các bạn 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 là được [ xóa node và lại thêm node mới ý ! ] .

f/ Chức năng nhập câu hỏi thi.

Bài tập cấu trúc dữ liệu và giải thuật này có tính năng nhập câu hỏi, với công dụng này thì bạn sẽ triển khai như sau :

  • Nhập số lượng câu hỏi muốn nhập.
  • Nhập vào thông tin câu hỏi.
  • Vì mỗi câu hỏi sẽ phải dùng hàm băm để xử lý[ xem thêm tại đây] và lấy vị trí theo mã câu hỏi. Điều này giúp chúng ta khi lấy câu hỏi sẽ không phải duyệt từ đầu đến cuối mảng.
  • Sau khi có vị trí thì tiến hành thêm vào danh sách câu hỏi thôi!

g/ Chức năng thi Trắc nghiệm

Bài tập cấu trúc dữ liệu và giải thuật này nhu yếu bạn lấy câu hỏi theo trình tự sau :

  • 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 đó thôi nhé !].
  • Sau khi có vị trí của câu hỏi đầu tiên rồi thì ta cứ duyệt đến khi hết câu hỏi của môn đó thì thôi[ so sánh mã câu hỏi].
  • Để đơn giản thì mình 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ì đồng thời mình sẽ thêm các câu hỏi vào danh sách này luôn.

Sau khi bạn đã có một list những câu hỏi thi theo môn đã nhập thì việc tiếp theo tất cả chúng ta sẽ bắt người dùng 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 list ]. Việc tiếp theo tất cả chúng ta chỉ cần chọn ngẫu nhiên những câu hỏi có trong list mà thôi. Tham khảo cách chọn số ngẫu nhiên tại đây !
Sao khi đã có lưu lại những câu hỏi được chọn thì thực thi in câu hỏi ra màn hình hiển thị và bắt người dùng nhập đáp án. Bước tiếp theo, bạn cầ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 .
Một quan tâm khi xử lý bài tập cấu trúc dữ liệu và giải thuật này :

  • Nếu user đăng nhập đăng là sinh viên thì bạn 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 bạn 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 đó.
  • Mẹo nhỏ là khi đăng nhập nếu là sinh viên thì bạn 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. Ở trên các bạn đã lưu lại các câu hỏi đã thi và lựa chọn của sinh viên bây giờ ta chỉ cần tìm file đó và hiển thị lên thôi. Cần kiểm tra nếu file không tồn tại tức là sinh viên đó chưa thi. Bạn tìm file có tên như sau: Tên file = mã sinh viên + tên môn thi

Xem thêm: Cách đưa iPhone hoặc iPad vào Chế độ được giám sát để mở khóa các tính năng quản lý mạnh mẽ TheFastCode

i/ Chức năng in bảng điểm thi trắc nghiệm môn học của 1 lớp.

Bài tập cấu trúc dữ liệu và giải thuật này cũng nhu yếu phải in bảng điểm, những bước triển khai như sau :

  • 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[ lưu ý 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 mà thôi].

Chia sẻ source code

Dưới đây là lời giải bâì tập cấu trúc dữ liệu và giải thuật Xây dựng phần mềm thi trắc nghiệm của mình, bạn đọc có thể tải về tại đây. Nếu các bạn có thắc mắc gì xin để lại comment phía dưới!

Source: //sangtaotrongtamtay.vn
Category: Công nghệ

Video liên quan

Chủ Đề