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

báo cáo project i tạo thời khoá biểu cho sinh viên đhbk dựa vào file excel lớp học của trường

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 (1.45 MB, 13 trang )

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

<b>TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG </b>

<b>BÁO CÁO PROJECT I </b>

<b>ĐỀ TÀI: Tạo thời khoá biểu cho sinh viên ĐHBK </b>

dựa vào file Excel l p h c c a trư ng ớọủờ

<b>Giảng viên hư ng dớẫn </b>: ThS. Vũ Đức Vượng

<b>Sinh viên thực hiện </b>: Phan Huy Hiệp – 20210328

Hà Nội, Tháng 1 năm 2024

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

<b>2.2. Sơ lư c vợề phần mềm cần xây dựng ... 5 </b>

<i><b>CHƯƠNG 3. GIẢI QUYẾT BÀI TOÁN ... 7 </b></i>

<b>3.1. Công nghệ sử dụ ng ... 7 </b>

<b>3.2. Giải quy t bài toánế ... 7 </b>

3.2.1. Xử lý đầu vào ... 7

3.2.2. Xử lý trả về thông tin dựa vào mã h c phọ ần nh p vàoậ ... 8

3.2.3. Xử lý thông tin đăng ký lớp: ... 9

3.2.4. Thuật toán kiểm tra trùng thời gian ... 10

3.2.5. Đặt các môn học hợ ệ p l vào thời gian biểu ... 11

<i><b>CHƯƠNG 4: KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN ... 12 </b></i>

<b>4.1. Kết luận ... 12 </b>

<b>4.2 Định hư ng phát triớển ...12 </b>

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

Hình 1: Thơng tin thiếu trọng tâm, khơng nhất qn

Vì thế, thay vì dành quá nhiều thời gian vào việc tra cứu file Excel này, em nhận thấy cần có một phần mềm cung cấp thông tin đã qua xử lí sơ bộ, giúp sinh viên dễ hình dung hơn các lớp mình có thể chọn, đồng thời tối ưu hố thời gian đăng kí tín chỉ.

<b>1.2. Định hướng giải pháp </b>

Một vấn đề rất lớn của file Excel mà nhà trường gửi sinh viên là thời gian tiết học. tớiNhà trường dành ra 4 cột để hiển thị thời gian học, tuy nhiên lại khơng có sự nhất qn và cũng khơng dễ dàng để theo dõi được hết tồn bộ thơng tin. Một học phần có thể có nhiều tiết học rời rạc khơng thống nhất. Nhưng vì bản chất file Excel chỉ có thể hiển thị duy nhất một khoảng thời gian học liên tục, sinh viên sẽ mất thêm thời gian để kiểm tra đầy đủ tất cả các tiết của học phần đó. Chính vì thế, phần mềm của em sẽ gộp lại toàn bộ các mốc thời gian này và giúp sinh viên tiết kiệm được nhiều thời gian và thao tác hơn trong việc đăng kí lớp học phần.

Hơn nữa, file Excel, cũng như trang web đăng ký môn học của trường không thể hiện một cách trực quan các môn mà sinh viên đã đăng ký. Nguồn thông tin duy nhất sinh viên có th thể ấy được khi (chuẩn bị trước) đăng ký mơn học là những dịng số. Vì thế, em muốn bổ sung một thời gian biểu giúp sinh viên dễ hình dung và quản ời gian mơn học hơn. lí th

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

4 Một vấn đề nữa của file Excel là file hiển thị nhiều lượng thông tin không cần thiết / không quan trọng đố với sinh viên. Phần lớn sinh viên không quá quan i tâm đến tên các học phần bằng tiếng Anh hay kì học đăng ký. Vì thế em muốn giảm thiểu lượng thông tin không cần thiết được hiển ị cho sinh viên khi đăng ký môn học. th

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

Như vậy, cơng việc của phần mềm là xử lý tồn bộ thông tin ở trên, xử lý các edge cases và các thơng tin khơng nhất qn, loạ ỏ tồn bộ i b các loại thông tin không cần thiết đối với sinh viên, và ến hành gộp thông tin nếu cần. ti

<b>2.2. Sơ lược về phần mềm cần xây dựng </b>

Giao diện phần mềm sẽ xử lý các phần chính sau: • Một phần để cho sinh viên gửi phần mềm file Excel;

• Một phần cho sinh viên nhập vào mã học phần mình muốn đăng ký;

• Một thời gian biểu để sinh viên có thể hình dung đượ các mơn họ mình đã đăng c c ký;

• Một phần hiển thị thơng tin các lớp;

• Cho sinh viên biết các lớp cần có lớp thí nghiệm. Phần hệ ống cần phải giải quyế th t:

• Xử lý được file Excel;

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

6 • Trả về những thông tin quan trọng cho sinh viên;

• Xử lý những lớp có nhiều mốc thời gian; • Xử lý các lớp bắt buộc phải có mã đi kèm;

• Thêm, xố các lớp đã chọn khỏi hệ ống lưu trữ, thời gian biểu. th

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

<b>IDE Lập trình </b> Visual Studio Code

<b>TailwindCSS </b>

<b>3.2. Giải quyết bài toán 3.2.1. Xử lý đầu vào </b>

Hệ ống sẽ xử lý đầu vào là một file Excel được tải lên từ sinh viên, thể hiện qua mộth t chiếc nút (như hình dưới đây), chỉ giới hạn cho (một) file loại Excel (xlsx, xls):

Hình Nút cho ngư2: ời dùng chọn file Excel

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

8 Hình 3: Màn hình chọn file Excel

Sau đó, hệ ống sẽ ến hành đọc và lưu lại thông tin cho đến khi cần sử dụng đến từ th tifile Excel nhận đượ c.

<b>3.2.2. Xử lý trả về thông tin dựa vào mã học ph n nh p vàoầậ</b>

Sinh viên sau khi tải lên file Excel thành cơng, có ể nhập mã học phần của mơn họth c mà mình muốn đăng ký. Hệ ống sẽ dựa vào thông tin nhận đượ để ả về thông tin củth c tr a các lớp học có chứa mã học phần được nhập vào, rồi trả về dướ dạng json để đượi c xử lý bởi frontend và trả về cho sinh viên:

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

9 Hình 4: Thông tin nhập vào và thông tin trả về

Khi điền mã học phần vào “input box”, hệ ống chỉ nhận mã học phần chính xác để thtrả về thông tin các mã lớp. Các thông tin về thời gian đã được thu gọn và kết hợp nếu cần thiế t.Khi điền thông tin mã học phần không tồn tại hoặc sai, hệ ống sẽ không trả về kết quả, đồng ththời báo lỗi về cho sinh viên biết mã lớp đó khơng tồn tại trong file đầu vào.

<b>3.2.3. Xử lý thông tin đăng ký lớp: </b>

Khi sinh viên nhấn “Choose” ở trong các ẻ môn học, hệ ống sẽ ến hành đối chiếu th th ti2 điều kiện sau đây:

• Mã lớp đi kèm có phải chính mã lớp học hoặc là “NULL ”;• Lớp có u cầu thí nghiệm hay khơng.

Nếu sinh viên chọn lớp có mã lớp đi kèm có điều kiện khác đã nêu trên, hệ ống sẽ th trả thêm mộ lời nhắc báo cho sinh viên rằng nếu muốn đăng ký học phần này, sẽ bắt buột c phải đăng ký cả học phần đi kèm. Sinh viên có thể nhấn “OK” để hệ ống đăng ký cả 2 học phần thcho sinh viên, hoặc “Huỷ bỏ” để huỷ đăng ký môn họ c.

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

10 Hình 5: Màn hình xác nhận đăng ký 2 môn học

Nếu sinh viên chọn môn học có u cầu thí nghiệm, hệ thống sẽ lưu trữ mã học phần, rồi hiển thị cho sinh viên thấy ở góc trên bên phải phần chọn học phần. Vì có nhiều lớp thí nghiệm cho một học phần, và cũng có những học phần khơng u cầu phải hồn thành thí nghiệm và lý thuyết trong cùng 1 học kì, em để học phần thí nghiệm như một tác vụ tuỳ chọn.

Hình 6: Các học phần cần lớp TN

Khi sinh viên quyế ịnh chọn môn học và thông qua 2 điều kiện nêu trên ở frontend, t đthông tin lớp học sẽ được trả về cho backend xử lý. Backend sẽ ến hành kiểm tra xem thờti i gian mơn họ đã chọn có bị trùng vớc i thời gian của các môn khác hay không, rồi trả về kết quả cho sinh viên.

<b>3.2.4. Thuật toán kiểm tra trùng thời gian </b>

Thời gian bắ ầu và kết thúc môn họt đ c là một Integer 4 chữ số, nên việc so sánh giữa các số với nhau là hoàn toàn có thể. Chính vì vậy, em đã tạo ra mộ cấu trúc dữ ệu: t liVec<Vec<i32>> để ứa thông tin ch các mốc thời gian này. Các vector trong sẽ ứa các giờ, chvà vector ngồi sẽ chứa các ngày. Vì thế, để gọ ập các thời gian trong thứ 2, chúng ta sẽ có: i tVec[0].

Từ đó, chúng ta sẽ nhập các thông tin về các giờ học dựa theo ngày, rồi sort lại cái vector chứa thời gian. Hàm Vec.sort() của Rust có worst-case time complexity là O(n*logn), best-case là O(n). Sử dụng vector đã sort, chúng ta đi qua từng giá trị của vector đến khi tìm thấy ời gian bắ ầu củ ớp đã chọn, rồi kiểm tra xem giá trị ếp theo có phảth t đ a l ti i thời gian kết thúc củ ớp đã chọn. Nếu giá trị đằng sau không phảa l i thời gian kết thúc, chúng ta có thể một cách chắc chắn kết luận rằng lớp học đã chọn đã trùng thời gian với m t lộ ớp khác. Việc kiểm tra này có worst-case time complexity là O(n), best case là O(1). Từ đó có thể

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

11 thấy time complexity của cả thuật toán ở trường hợp tệ nhất là O(n^2*log(n)) và trường hợp tốt nhất là O(n).

<b> 3.2.5. Đặt các môn học hợp l vào thời gian biệ ểu </b>

Hình 7: Thời gian biểu

Sau khi được lựa chọn, các môn họ ẽ tự động hiển thị trong ời gian biểu như trên. c s thThời gian biểu là mộ bảng vớt i mỗi hàng là 10p và có 7 cộ ổng cộng. Để xử lý thông tin đưa t tvào thời gian biểu, hệ thống lập ra một array 2D để lưu trữ các thơng tin các mơn học, với array ngồi là ngày học, array trong là các thông tin của môn học, điểm bắt đầu cho card môn học, và độ dài của card. Điểm bắt đầu của card được tính là mộ ố ập phân, với phần nguyên là t s thsố giờ, phần thập phân là số phút /60.

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

Qua dự , em đã học được cách xây dựng một phần mềán m cơ bản sử dụng API và các cách trình bày thơng tin lên màn hình chính, đồng thờ ọc được cách xử lý thông tin phù hợp i hđể giảm thiểu thời gian chờ đợi giữa các bước async.

<b>4.2 Định hư ng phát triớển </b>

Đầu tiên, phần mềm hiện tạ ẫn còn tồn đọng một vài vấn đề cần được giải quyết: Vấn i vđề ời gian “NULL” của các mơn đồ án có thể được giải quyế ằng cách tạo ra mộth t b t cột mới để ứa những mơn đó, từ đó có thể một cách hợp lý đi kèm nút xố môn học đi vớch i học phần. Vấn đề tách tuần chẵn lẻ có thể giải quyết bằng cách tạo thêm một thời gian biểu nữa, kèm theo một array 2D để điền thông tin, kèm theo xử lý cột tuần trong file Excel.

Hơn nữa, em dự định áp dụng một số bướ để cải thiện phần mềm, cụ ể như sau: c th1. Phần mềm hồn tồn có thể lưu trữ lại thơng tin sinh viên đã đăng ký vào một file

JSON để sinh viên có thể mở lại vào thời điểm đăng ký lớp, do các thông tin được lưu trữ ở backend, hồn tồn có thể tạo ra một nút “Export” để ả về file JSON và trtạo ra một method để đọc lại thông tin.

2. Do phần mềm đã có sẵn khả năng đọc file Excel, em thấy rằng em có thể xử lý cả file Excel lịch thi giữa kì, cuối kì để ả về tr các mốc ời gian thi cho sinh viên. Từ thđó, tạo thêm lý do để sinh viên export các mơn mình đã đăng ký, và lý do để sử dụng phần mềm thường xuyên hơn.

3. Phần mềm cũng có thể được bổ sung ức năng nhập điểch m số, cùng vớ phân phối i điểm thí nghiệm/q trình/cuối kì. Sinh viên có thể nhập các đầu điểm của mình vào để phần mề tính ra điểm theo bậc ữ, bậc 4, và tính tốn điểm ch m thấp nhấ ần t cđạt được cho các đầu điểm để đạt đượ bậc điểm theo mong c muốn.

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

13 Sau khi thực hiện các dự định trên, kết quả sẽ là một phần mề toàn diện giúp sinh m viên quản lý việc học trên trường, giảm thiểu thời gian thao tác chuyển dị giữa ch các trang web của trường để xem những đầu mục thông tin khác nhau.

</div>

×