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

13 0 0
Tài liệu đã được kiểm tra trùng lặp
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

Đ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

Hình 1: Thông tin thiếu trọng tâm, không nhất quánVì 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ử

Trang 1

TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

BÁO CÁO PROJECT I

ĐỀ TÀ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 ớọủờ

Giảng viên hư ng dớẫn : ThS Vũ Đức Vượng

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

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

Trang 2

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

CHƯƠNG 3 GIẢI QUYẾT BÀI TOÁN 7

3.1 Công nghệ sử dụ ng 7

3.2 Giải quy t bài toánế 7

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

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

4.1 Kết luận 12

4.2 Định hư ng phát triớển 12

Trang 3

Hình 1: Thông tin thiếu trọng tâm, không nhất quán

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 hoá thời gian đăng kí tín chỉ

1.2 Định hướng giải pháp

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 quán và cũng không dễ dàng để theo dõi được hết toà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

Trang 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

Trang 5

Như vậy, công việc của phần mềm là xử lý toàn bộ thông tin ở trên, xử lý các edge cases và các thông tin không nhất quán, loạ ỏ toà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

2.2 Sơ lược về phần mềm cần xây dựng

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;

Trang 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, xoá các lớp đã chọn khỏi hệ ống lưu trữ, thời gian biểu th

Trang 7

IDE Lập trình Visual Studio Code https://code.visualstudio.com/download

TailwindCSS

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

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

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

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

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:

Trang 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

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

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ó yê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.

Trang 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ó yê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 yêu cầu phải hoà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

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

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 ngoà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ể

Trang 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)

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

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 ngoà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

Trang 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

4.2 Định hư ng phát triớển

Đầ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 xoá 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 hoàn toà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, hoàn toà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/quá 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 toá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

Trang 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

Ngày đăng: 13/06/2024, 16:33

Tài liệu liên quan