Professional Documents
Culture Documents
LỜI CẢM ƠN
Qua một thời gian tìm hiểu, học hỏi và triển khai đến nay, đồ án “Thiết
kế Website phục vụ hoạt động giảng dạy và nghiên cứu cho Khoa Điện tử” đã
hoàn thành. Trong suốt quá trình thực hiện đề tài, nhóm đã nhận được rất
nhiều sự giúp đỡ nhiệt tình của thầy cô và các bạn.
Xin cảm ơn giảng viên hướng dẫn là thầy ThS. Nguyễn Văn Cường,
thầy đã tận tình giúp đỡ, chỉ bảo và hướng dẫn trong suốt thời gian thực hiện
đề tài. Nhờ vào sự giúp đỡ, chỉ bảo đó của thầy mà nhóm đã hoàn thành báo
cáo thực tập. Nhóm cũng mong muốn được gửi lời cảm ơn đến các thầy cô đã
hướng dẫn và đóng góp vào quá trình thực hiện đồ án của nhóm. Sự giúp đỡ
và hướng dẫn của các thầy cô rất quan trọng đối với nhóm và giúp nhóm hoàn
thiện và nâng cao chất lượng đồ án của mình.
Nhóm rất vui và cảm kích với sự ủng hộ và động viên của gia đình và
bạn bè trong suốt quá trình thực hiện đồ án. Điều này thực sự là một động lực
rất lớn giúp nhóm vượt qua những khó khăn và hoàn thành đồ án tốt nhất có
thể.
ii
MỤC LỤC
LỜI CẢM
ƠN ....................................................................................................i MỤC
LỤC.........................................................................................................ii
DANH MỤC HÌNH
ẢNH ...............................................................................iii DANH MỤC
BẢNG BIỂU .............................................................................. v MỞ
ĐẦU........................................................................................................... 1
1. LÝ DO LỰA CHỌN ĐỀ TÀI............................................................... 1
2. MỤC TIÊU CỦA ĐỀ TÀI.................................................................... 1
3. ĐỐI TƯỢNG NGHIÊN CỨU .............................................................. 2
4. PHẠM VI NGHIÊN CỨU.................................................................... 2
5. PHƯƠNG PHÁP NGHIÊN CỨU......................................................... 2
6. Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN CỦA ĐỒ ÁN.................... 2
7. CẤU TRÚC CỦA BÁO CÁO ĐỒ ÁN TỐT NGHIỆP........................ 3
CHƯƠNG 1. TỔNG QUAN VỀ LẬP TRÌNH WEBSITE.............................. 4
1.1. GIỚI THIỆU CHUNG........................................................................... 4
1.2. PHƯƠNG PHÁP LẬP TRÌNH WEBSITE ......................................... 17
1.3. WEBSITE THỐNG KÊ KHỐI LƯỢNG GIẢNG DẠY VÀ CUNG
CẤP
THÔNG TIN NGHIÊN CỨU KHOA HỌC............................................... 25
1.4. KẾT LUẬN CHƯƠNG 1..................................................................... 25
CHƯƠNG 2. THIẾT KẾ WEBSITE THỐNG KÊ GIẢNG DẠY................. 26
2.1. PHÂN TÍCH YÊU CẦU BÀI TOÁN.................................................. 26
2.2. THIẾT KẾ Ý TƯỞNG......................................................................... 27
2.3. THIẾT KẾ CHI TIẾT .......................................................................... 33
2.4. KẾT LUẬN CHƯƠNG 2..................................................................... 45
CHƯƠNG 3. THỬ NGHIỆM VÀ ĐÁNH GIÁ ............................................. 46
3.1. VẬN HÀNH SẢN PHẨM................................................................... 46
3.2. THỬ NGHIỆM VÀ KIỂM CHỨNG SẢN PHẨM............................. 47
3.3. ĐÁNH GIÁ SẢN PHẨM .................................................................... 49
3.4. ỨNG DỤNG CỦA SẢN PHẨM ......................................................... 50
3.5. TÁC ĐỘNG CỦA SẢN PHẨM THIẾT KẾ TỚI MÔI TRƯỜNG/KINH
TẾ/ XÃ HỘI. ............................................................................................... 51
3.6. KẾT LUẬN CHƯƠNG 3..................................................................... 51
KẾT LUẬN..................................................................................................... 52
TÀI LIỆU THAM KHẢO............................................................................... 53
iii
Hình 2.15. Lưu đồ thuật toán hỗ trợ nhập thông tin thực hành ......................
44 Hình 2.16: Routing cho các phương thức của
Website .................................. 45 Hình 3.1. Ví dụ thống kê khối lượng giảng
dạy của giảng viên Dương Thị
Hằng ...................................................................................................................
...... 46 Hình 3.2. Thông tin nghiên cứu khoa
học....................................................... 46 Hình 3.3. Kết quả kiểm chứng của
giảng viên Đinh Thị Kim Phượng .......... 48 Hình 3.4. Kết quả kiểm chứng
của giảng viên Lê Việt Tiến .......................... 48 Hình 3.5. Kết quả kiểm
chứng của giảng viên Nguyễn Văn Cường .............. 48 Hình 3.6. Kết quả
kiểm chứng của giảng viên Vũ Thị Hoàng Yến................ 49 Hình 3.7. Kết quả
kiểm chứng của giảng viên Lê Mạnh Long....................... 49
v
DANH MỤC BẢNG BIỂU
Bảng 2.1. Bảng dữ liệu cho lịch đẩy đủ.......................................................... 39
Bảng 2.2. Bảng dữ liệu cho lịch thực hành.....................................................
40 Bảng 3.1. Bảng thống kê số giờ giảng dạy và số giờ được thanh toán của
một số giảng
viên.................................................................................................... 47
1
MỞ ĐẦU
Những năm gần đây, công cuộc đổi mới trong lĩnh vực giáo dục và đào
tạo luôn được Đảng và Nhà nước chú trọng mở rộng và phát triển, đặc biệt là
giáo dục đại học. Đi cùng với sự phát triển của thế giới, hệ thống giáo dục đại
học ở Việt Nam đã có nhiều chuyển biến mới, chất lượng đào tạo ngày càng
được nâng lên rõ rệt. Nhưng giáo dục nước nhà đang gặp nhiều thách thức và
bất cập trong công tác giảng dạy, quản lý, đảm bảo chất lượng đầu ra cho sinh
viên. Việc sử dụng Website để hỗ trợ hoạt động giảng dạy và nghiên cứu là
một giải pháp rất hiệu quả trong tình trạng hiện nay.
Trường Đại học Công nghiệp Hà Nội là một trong những trường tiên
phong áp dụng chương trình kiểm định chất lượng đào tạo theo chuẩn về phần
mềm máy tính, nhằm nâng cao hiệu quả dạy học, công tác quản lý sinh viên,
chất lượng đào tạo… Theo đó, Khoa Điện tử cũng đang trong quá trình triển
khai chương trình kiểm định đối với ngành Công nghệ Kỹ thuật Máy tính.
Trong quá trình kiểm định, có rất nhiều công đoạn được thực hiện một cách
thủ công, mất nhiều thời gian để hoàn thành theo từng chu kỳ. Nắm bắt được
sự
hạn chế đó, nhóm đã chọn đề tài “Thiết kế Website phục vụ hoạt động giảng
dạy và nghiên cứu cho Khoa Điện tử” làm đồ án tốt nghiệp chuyên ngành
Kỹ thuật máy tính của mình. Việc triển khai thiết kế một Website phục vụ cho
hoạt động giảng dạy và nghiên cứu mang lại nhiều lợi ích cho giảng viên,
nhân viên, giáo vụ, sinh viên và học viện trong việc quản lý và tra cứu thông
tin.
2. MỤC TIÊU CỦA ĐỀ TÀI
• Thiết kế được Website hỗ trợ giảng viên thống kê khối lượng giảng dạy. •
Giúp sinh viên tích luỹ được kiến thức về lập trình Website, quản lý cơ sở dữ
liệu, quản trị tài khoản.
• Giúp sinh viên rèn luyện được các kỹ năng như viết báo cáo, trình bày vấn
đề kỹ thuật, làm việc nhóm, tinh thần phấn đấu và thái độ nghiêm túc.
2
• Website hỗ trợ hoạt động giảng dạy và nghiên cứu cho Khoa Điện tử.
• Kỹ thuật lập trình, cách thức hoạt động và đối tượng sử dụng trong thiết kế
Website.
• Cách sử dụng các ngôn ngữ lập trình backend (Golang) và frontend (HTML,
CSS, Javascript)
Phạm vi: được sử dụng trong Khoa Điện tử - Trường Đại Học Công Nghiệp
Hà Nội
• Phương pháp thu thập thông tin từ giảng viên : Tổng hợp và phân tích hoạt
động giảng dạy và nghiên cứu cho Khoa Điện tử dựa trên việc ghi chép của
giảng viên
• Xây dựng ý tưởng và lập kế hoạch cụ thể để thiết kế Website ứng dụng.
• Kiểm tra, chỉnh sửa, triển khai và hoàn thiện Website ứng dụng.
• Điều chỉnh lịch giảng dạy để đáp ứng các yêu cầu của giảng viên tại trường.
• Xây dựng Website giúp giảng viên tìm kiếm 1 cách dễ dàng, khoa học và
đảm bảo tính bảo mật.
3
Báo cáo đồ án tốt nghiệp gồm ba phần chính và được tổ chức như sau: •
Chương 1: Trình bày khái quát chung về lập trình và thiết kế Website chuyên
nghiệp.
• Chương 2: Trình bày phân tích và thiết kế Website thống kê khối lượng
giảng dạy.
• Chương 3: Thực thi và đánh giá Website thống kê khối lượng giảng dạy đã
thiết kế.
4
Nhưng trước khi tạo trang Website của riêng mình, lập trình viên sẽ cần
quyết định loại trang Website nào sẽ tạo. Dưới đây là danh sách một số phổ
biến nhất trên Website hiện nay:
Trang Website thương mại điện tử
Thương mại điện tử là một ý tưởng kinh doanh tốt để bán sản phẩm trực
tuyến và sử dụng mô hình dropshipping để quản lý kho hàng của người bán
hàng. Dropshipping là một mô hình kinh doanh cho phép người bán bán sản
phẩm mà không cần lưu trữ hàng hóa trong kho của mình. Thay vào đó, người
bán đặt hàng từ nhà phân phối bên thứ ba và giao hàng trực tiếp cho khách
hàng của người bán từ nhà cung cấp.Hình 1.2 minh họa trang website thương
mại điện tử uy tín của Việt Nam
Hình 1.2. Website thương mại điện tử
Mẫu trang Website cửa hàng trực tuyến bao gồm các tính năng thương
mại điện tử có thể tùy chỉnh, như trang danh mục và thanh menu có thông tin
doanh nghiệp. Ngoài ra, thanh toán an toàn được xây dựng ngay bây giờ để
giữ an toàn cho thông tin của khách hàng khỏi tin tặc hoặc vi phạm dữ liệu.
Trang Website kinh doanh
Một trang Website doanh nghiệp có thể giúp thiết lập sự hiện diện trực
tuyến cho thương hiệu của doanh nghiệp. Trang Website này có thể được tạo
6
ra với mục đích giới thiệu công ty, sản phẩm và dịch vụ, nhận diện thương
hiệu của doanh nghiệp và cung cấp thông tin liên lạc cho khách hàng và đối
tác kinh doanh. Hình 1.3 minh họa trang website kinh doanh bán hàng Tết
Các chuyên gia sáng tạo, nghệ sĩ, nhà thiết kế đồ họa, nhiếp ảnh gia, nhà
văn và các chuyên gia khác thường sử dụng trang Website danh mục đầu tư để
8
hiển thị các tác phẩm của mình và giới thiệu về bản thân mình cho nhà tuyển
dụng hoặc khách hàng tiềm năng. Những người này có thể sử dụng trang
Website này như một công cụ để trưng bày tài năng của họ, thu hút khách
hàng mới và xây dựng thương hiệu cá nhân. Sử dụng mẫu danh mục đầu tư để
làm nổi bật cá nhân là ai cũng như thành tích nghề nghiệp của cá nhân đó.
Trang Website sự kiện
Một trang Website sự kiện là một công cụ quan trọng trong việc quản lý
sự kiện. Nó cho phép người tổ chức sự kiện quản lý tất cả các khía cạnh của sự
kiện, bao gồm quản lý đăng ký, lời mời, quảng cáo, bán vé, quản lý chương
trình, theo dõi các tham gia và nhiều hơn nữa. Bằng cách sử dụng một trang
Website sự kiện, người tạo Website có thể tăng khả năng tiếp cận của sự kiện
của mình bằng cách quảng cáo trên mạng xã hội và email marketing, và cung
cấp thông tin chi tiết về sự kiện cho các tham gia tiềm năng. Bên cạnh đó,
trang Website sự kiện cũng cho phép tổ chức các sự kiện ảo để tiếp cận đến
một đối tượng khán giả lớn hơn. Hình 1.6 minh họa trang website tiếng hát
công nhân.
Sử dụng mẫu trang Website sự kiện để tạo trang Website của riêng mình.
9
Ngoài ra, hãy thêm sự kiện wix để mở khóa khả năng trả lời trực tuyến và
trình tạo bản đồ chỗ ngồi cho khách của người tổ chức sự kiện.
Trang Website cá nhân
Một trang Website cá nhân cũng có thể được sử dụng để xây dựng danh
tiếng cá nhân và quảng bá kỹ năng của cá nhân cho mục đích tìm việc làm.
Mọi người có thể tạo một trang Website cá nhân để chia sẻ thông tin về bản
thân, kinh nghiệm làm việc, dự án đã hoàn thành, kỹ năng chuyên môn và đào
tạo. Một trang Website cá nhân cũng có thể giúp mọi người tiếp cận nhiều
khách hàng tiềm năng hoặc cơ hội việc làm mới.
Các trang Website cá nhân này tương tự như danh mục đầu tư nhưng
thường chứa ít yếu tố trực quan hơn, vì mục tiêu không nhất thiết phải hiển thị
công việc trong quá khứ. Ví dụ, Hình 1.7. Website cá nhân minh hoạ một
website cá nhân.
Các trang Website cá nhân này tương tự như danh mục đầu tư nhưng
10
thường chứa ít yếu tố trực quan hơn, vì mục tiêu không nhất thiết phải hiển thị
công việc trong quá khứ.
Trang Website thành viên
Trang Website thành viên là một cách để đảm bảo tính độc quyền cho
các nội dung, dịch vụ hoặc tài nguyên của . Bằng cách yêu cầu khách truy cập
đăng ký hoặc trả phí để truy cập đầy đủ các tính năng của Website, người quản
lý trang Website có thể cung cấp các ưu đãi đặc biệt hoặc nội dung bổ sung
cho các thành viên. Điều này có thể giúp tăng doanh thu và xây dựng lòng
trung thành giữa các thành viên của Website. Các trang Website thành viên có
thể được sử dụng cho mục đích giáo dục, giải trí, thương mại điện tử và nhiều
mục đích khác. Ví dụ, Hình 1.8 minh hoạ một website thành viên.
để giới thiệu những dự án mà tổ chức của cá nhân, tổ chức đang triển khai,
những hoạt động và sự kiện gần đây, cũng như cung cấp thông tin về những
người được hưởng lợi từ các hoạt động của tổ chức. Một trang Website phi lợi
nhuận cũng có thể được sử dụng để tuyển mộ tình nguyện viên và đối tác mới.
Hình 1.9 minh họa trang website Women's refugee commision.
Hình 1.9. Website phi lợi nhuận
Trang Website thông tin
Các trang Website thông tin cung cấp cho khách truy cập thông tin về
một loại nội dung cụ thể, từ kiến thức chuyên môn đến tin tức hàng ngày. Các
trang Website bách khoa toàn thư cung cấp thông tin đa dạng về các chủ đề
khác nhau, trong khi các trang Website tin tức cung cấp các bản tin và sự kiện
mới nhất. Các trang Website thông tin thường có tính năng tìm kiếm để người
dùng có thể tìm kiếm thông tin cụ thể mà họ quan tâm. Nội dung trên các trang
Website thông tin thường dài và chi tiết, cung cấp cho người đọc nhiều thông
tin để nghiên cứu và khám phá. Hình 1.10 minh họa trang website thông tin
của báo chí mylogo
12
Hình 1.10. Trang Website thông tin
• Năm 1991: Tim Berners-Lee giới thiệu HTML, URL và HTTP, các công
• Năm 1993: Mosaic, trình duyệt Website đầu tiên với khả năng hiển thị ảnh,
• Năm 2000: XHTML được giới thiệu bởi W3C, là một phiên bản nghiêm ngặt
• Năm 2004: Website 2.0 được đưa ra với các ứng dụng Website như Gmail,
Google Maps, và Facebook.
• Năm 2007: iPhone được giới thiệu, đưa ra một trải nghiệm Website di động
mới.
14
• Năm 2010: HTML5 được giới thiệu, bao gồm các tính năng mới như video
và canvas.
• Năm 2015: Progressive Website Apps được giới thiệu, đưa ra một trải
nghiệm Website tương tự như ứng dụng di động.
• Năm 2019: WebAssembly được giới thiệu, cho phép các ngôn ngữ khác
nhau (không chỉ JavaScript) chạy trên trình duyệt.
Các mốc thời gian này chỉ ra rằng Website đã trải qua nhiều sự phát triển và
trở thành một phần không thể thiếu trong cuộc sống hàng ngày của chúng ta.
1.1.3. Vấn đề cần nghiên cứu
Khi lập trình viên bắt đầu dự án phát triển Website của mình , lập trình
viên phải đối mặt với nhiều thách thức, bao gồm chiến lược phát triển, ngăn
xếp công nghệ, thiết kế, khả năng tương thích, hiệu suất và quyền truy cập của
nhà phát triển, trong số những thứ khác [3].
Ngăn xếp công nghệ
Việc lựa chọn ngăn xếp công nghệ phụ thuộc vào nhiều yếu tố, bao gồm
mức độ phức tạp của trang Website - tính năng, chức năng, tích hợp, v.v.; ngân
sách và quyền truy cập vào các nhà phát triển. Với các biến số khác nhau như
vậy, việc quyết định ngăn xếp công nghệ tốt nhất phù hợp với dự án của lập
trình viên thường trở nên khó khăn.
Giải pháp cho ngăn xếp công nghệ
Việc xác định rõ các yêu cầu của dự án - quy mô và ngân sách phát triển
sẽ đảm bảo rằng lập trình viên chọn được nhóm công nghệ phù hợp cho dự án
của mình. Đây là lý do tại sao việc thu thập và phân tích yêu cầu là rất quan
trọng trước khi bắt đầu quá trình phát triển Website. Khi lập trình viên đã xác
định và phân tích các yêu cầu, việc chọn ngăn xếp công nghệ phù hợp sẽ trở
nên dễ dàng và suôn sẻ hơn.
Thiết kế UI/UX
Thiết kế giao diện người dùng trực quan và mượt mà mang lại trải
nghiệm người dùng được tối ưu hóa là một khía cạnh quan trọng của một trang
15
Website chất lượng cao. Nó giúp cải thiện tỷ lệ tương tác thông qua trải
nghiệm nâng cao cho người dùng cuối của lập trình viên.
Thiết kế giao diện người dùng phải linh hoạt để thích ứng với các tích
hợp thiết yếu đồng thời cho phép người dùng điều hướng dễ dàng và tìm thấy
thông tin họ cần. Ngược lại, một UX tốt giúp trang Website dễ sử dụng và
mang lại trải nghiệm tích cực cho người dùng. Do đó, các vấn đề về thiết kế
Website
là những thách thức quan trọng mà các nhà phát triển Website phải đối mặt.
Giải pháp thiết kế UI/UX
Đối với thiết kế, điều cần thiết là phải có các nhà thiết kế Website có
nhiều kinh nghiệm trong ngành để giúp lập trình viên hoàn thiện các mục tiêu
thiết kế của mình. Nhưng ngoài ra, lập trình viên phải thực hiện nhiều nghiên
cứu và thử nghiệm thông qua diện mạo người dùng để có những hiểu biết quan
trọng về suy nghĩ của khách hàng. Thử nghiệm A/B là một cách hiệu quả để
tìm ra cái nào hoạt động tốt nhất khi lập trình viên trình bày hai tùy chọn thiết
kế cho người dùng. Lập trình viên cũng có thể sử dụng các khung giao diện
người dùng khác nhau trong các thiết kế khác nhau để tìm ra tùy chọn hiệu quả
nhất cho các yêu cầu của mình.
Khả năng tương thích nền tảng
Khả năng tương thích nền tảng là một trong những thách thức phát triển
Website phổ biến và quan trọng nhất mà các doanh nghiệp thường gặp phải
khi xây dựng dự án của họ. Tính di động cao và khả năng tương thích đa nền
tảng là điều cần thiết để tăng mức độ tương tác và năng suất của người dùng
trên thị
trường kỹ thuật số.
Lý tưởng nhất là các trang Website của lập trình viên phải chạy trơn tru
trên nhiều trình duyệt, hệ điều hành, thiết bị và nền tảng để mang lại trải
nghiệm thực sự hấp dẫn cho người dùng cuối. Tuy nhiên, việc xây dựng một
trang Website hoặc ứng dụng Website như vậy thường trở nên phức tạp và đòi
hỏi chuyên môn tốt từ các nhà phát triển Website.
Giải pháp khả năng tương thích nền tảng
16
Thử nghiệm toàn diện là một cách để đảm bảo rằng các ứng dụng
Website của lập trình viên thực sự đa nền tảng và tương thích với các hệ thống
khác nhau. Lập trình viên cần thực hiện nhiều thử nghiệm, bao gồm tự động và
thủ công, đồng thời sử dụng các công cụ kiểm tra trình duyệt dựa trên đám
mây để đảm bảo rằng trang Website chạy liền mạch trên nhiều trình duyệt
khác nhau.
Một số công cụ đám mây đa trình duyệt phổ biến bao gồm LambdaTest,
BrowserStack, TestingBot, TestGrid, v.v. Lập trình viên cũng phải xác thực
mã của mình để đảm bảo chúng bao gồm các tính năng đa nền tảng thông qua
các khung và thư viện nâng cao.
Hiệu suất
Hiệu suất của một ứng dụng Website là một trong những mục tiêu quan
trọng nhất của bất kỳ dự án dựa trên Website nào. Lập trình viên muốn trang
Website của mình mượt mà, liền mạch, tương tác và nhanh chóng. Các trang
Website có lỗi với thời gian tải chậm và tắc nghẽn hiệu suất gây khó chịu khi
sử dụng, cuối cùng khiến người dùng bỏ đi. Đây là lý do tại sao đảm bảo hiệu
suất Website tối ưu là một trong những thách thức phát triển Website lớn nhất
mà các nhà phát triển Website phải đối mặt.
Giải pháp cải thiện hiệu suất
Các công cụ và kỹ thuật khác nhau có thể được sử dụng để đảm bảo
hiệu suất tối ưu cho các trang Website của lập trình viên. Những công cụ nổi
bật này bao gồm số liệu ứng dụng Website, chỉ số quan trọng về Website cốt
lõi của Google và kỹ thuật tối ưu hóa. Các chỉ số ứng dụng Website giúp theo
dõi các KPI quan trọng như sự cố ứng dụng, lượt tải xuống, lượt gỡ cài đặt,
giá trị lâu dài và lượt nâng cấp. Các kỹ thuật tối ưu hóa liên quan đến việc tối
ưu hóa mã, hình ảnh và nội dung để có hiệu suất tốt hơn.
Bảo mật
Bảo mật Website là một trong những thách thức cấp bách nhất mà các
nhà phát triển Website phải đối mặt do các vụ tấn công mạng ngày càng gia
17
tăng trong thế giới kỹ thuật số. Một số cuộc tấn công mạng phổ biến được
triển khai nổi bật là kiểm soát truy cập, tập lệnh chéo trang, chèn liên kết, phá
vỡ xác thực và cấu hình sai bảo mật. Thông tin và dữ liệu quan trọng được
chia sẻ trên các ứng dụng Website, việc đảm bảo mức độ bảo mật cao để giữ
an toàn cho dữ liệu trở nên cấp thiết.
Giải pháp bảo mật
Điều quan trọng là phải có các chiến lược và giao thức bảo mật mạng
mạnh mẽ để cung cấp một khuôn khổ an toàn toàn diện cho người dùng cuối.
Một số biện pháp bảo mật được áp dụng bao gồm tích hợp chứng nhận SSL,
lưu trữ trên máy chủ bảo mật, cập nhật bảo mật thường xuyên, xác thực sinh
trắc học và đa yếu tố cũng như xác thực quyền truy cập, cùng các biện pháp
khác.
Bảo trì
Một trong những thách thức phát triển Website quan trọng mà các nhà
phát triển phải đối mặt là sau khi triển khai dự án của họ, đặc biệt là trong
trường hợp các trang Website đi vào hoạt động. Chắc chắn sẽ có các vấn đề và
lỗi khác nhau đối với các ứng dụng Website mới được tạo; do đó, cung cấp
bảo trì hiệu quả và hỗ trợ sau khi ra mắt là một phần quan trọng của quá trình
phát triển Website.
Giải pháp bảo trì
Điều quan trọng là cung cấp bảo trì liên tục cho các ứng dụng Website
của lập trình viên thông qua giám sát 24/7 và kiểm tra thường xuyên. Một
trong những khía cạnh quan trọng để đảm bảo hiệu suất trang Website mượt
mà là giảm sự phụ thuộc bằng cách sử dụng kiến trúc vi dịch vụ để cải thiện
hiệu quả và hiệu suất. Điều bắt buộc là phải có một chiến lược bảo trì được
xác định rõ ràng cho một quy trình có cấu trúc hơn nhằm đảm bảo hiệu suất
cao cho các dự án Website của lập trình viên.
nhất, trong đó dữ liệu được tổ chức thành các bảng có liên quan với nhau.
Các bảng này được kết nối với nhau thông qua các khóa ngoại và khóa
chính.
không phụ thuộc vào mối quan hệ giữa các bảng. Thay vào đó, dữ liệu được
lưu trữ dưới dạng tài liệu (document), đồ thị (graph) hoặc các tập hợp (set).
• Cơ sở dữ liệu cục bộ (Local Database): được lưu trữ trên máy tính của người
dùng và chỉ có thể được truy cập từ đó.
• Cơ sở dữ liệu trực tuyến (Online Database): được lưu trữ trên máy chủ và có
thể được truy cập từ bất kỳ địa điểm nào thông qua Internet. Các DBMS phổ
biến bao gồm MySQL, Oracle, Microsoft SQL Server, MongoDB và
PostgreSQL.
MongoDB là cơ sở dữ liệu NoSQL hướng tài liệu được sử dụng để lưu
trữ dữ liệu khối lượng lớn. MongoDB là một cơ sở dữ liệu ra đời vào khoảng
giữa những năm 2000. Nó thuộc danh mục cơ sở dữ liệu NoSQL. Loại DBMS
này sử dụng lược đồ động nghĩa là lập trình viên có thể tạo bản ghi mà không
cần xác định cấu trúc trước, chẳng hạn như trường hoặc loại và giá trị của
chúng. MongoDB cho phép lập trình viên thay đổi cấu trúc của các bản ghi mà
20
được gọi là tài liệu bằng cách thêm các trường mới hoặc xóa các trường hiện
có [6].
MYSQL là một hệ thống DBMS phổ biến và được sử dụng rộng rãi. Mã
nguồn của MYSQL có sẵn theo GNU GPL. Dự án được sở hữu và duy trì bởi
Tập đoàn Oracle. Nó là một RDBMS (Hệ thống quản lý cơ sở dữ liệu quan hệ)
và hoạt động chủ yếu trên mô hình cơ sở dữ liệu quan hệ. Nó làm cho việc
quản trị cơ sở dữ liệu dễ dàng và linh hoạt hơn. Trong MySQL, lập trình viên
cần xác định trước lược đồ cơ sở dữ liệu dựa trên các yêu cầu của mình và
thiết lập các quy tắc giúp lập trình viên quản lý mối quan hệ giữa các trường
trong bảng của mình [6].
1.2.2. Backend
Backend là mã chạy trên máy chủ, nhận yêu cầu từ máy khách và chứa
logic để gửi dữ liệu thích hợp trở lại máy khách. Back-end cũng bao gồm cơ
sở dữ liệu, sẽ lưu trữ liên tục tất cả dữ liệu cho ứng dụng. Bài viết này tập
trung vào phần cứng và phần mềm phía máy chủ giúp thực hiện điều này.
Hình 1.13 minh họa thành phần cần thiết để xây dựng backend.
Back-end là tất cả công nghệ cần thiết để xử lý yêu cầu đến, tạo và gửi
phản hồi cho khách hàng. Điều này thường bao gồm ba phần chính:
21
• Máy chủ: Đây là máy tính nhận yêu cầu.
• Ứng dụng: Đây là ứng dụng chạy trên máy chủ lắng nghe các yêu cầu, truy
• Kho dữ liệu: Cơ sở dữ liệu được sử dụng để tổ chức và duy trì dữ liệu. Một
số mã thường được sử dụng để xây dựng backend: PHP và Javascript [7] PHP
là ngôn ngữ kịch bản mã nguồn mở phía máy chủ được sử dụng rộng rãi, dễ
học và sử dụng mạnh mẽ. Nó được sử dụng để tạo mọi thứ từ các Trang
Website nhỏ và các ứng dụng cơ bản đến các hệ thống thương mại điện tử và
hệ thống quản lý nội dung phức tạp.
JS, hay JavaScript, là một trong những ngôn ngữ kịch bản phổ biến và
được sử dụng phổ biến nhất trên thế giới . JavaScript là ngôn ngữ lập trình
thường được sử dụng để tạo các trang web động, ứng dụng web và thiết bị di
động cũng như trò chơi.
Để hỗ trợ xây dựng backend dễ dàng và nhanh chóng có các Framework hỗ
trợ như Expressjs, Larvarel
Express.js là một framework được xây dựng dựa trên Node.js. Nó được
tạo ra để nhanh chóng, đơn giản và dễ sử dụng. Nhiều tính năng được Express
hỗ trợ, bao gồm routing, sessions và Templating Engine. Vì Express được phát
triển bằng JavaScript nên đôi khi nó được gọi là công nghệ hiện đại [8].
Laravel là một Framework của PHP mã nguồn mở cung cấp tài liệu định
tuyến và HTML ở phía máy chủ. Được tạo bởi Tylor Otwell, Laravel dựa trên
Symfony, cung cấp các thành phần PHP có thể tái sử dụng. Lợi ích chính dựa
trên phía máy chủ, tức là các ứng dụng kiến trúc được xác định trước có thể
được phát triển thông qua các mẫu tùy chỉnh, logic, cổng web và ứng dụng
toàn ngăn xếp. Hơn nữa, lập trình viên cũng sẽ có thể quản lý và duy trì các
dự án SaaS [9].
1.2.3. Frontend
Frontend là một phần của quá trình phát triển Website, tập trung vào
giao diện người dùng và các trải nghiệm trên trình duyệt. Frontend thường
bao gồm
22
các ngôn ngữ lập trình Website như HTML, CSS và JavaScript, và các công
cụ phát triển Website như trình biên tập mã nguồn, trình duyệt và khung thực
thi JavaScript. Hình 1.14 minh họa ý tưởng cốt lõi của frontend.
• Tạo ra các tài nguyên Website như hình ảnh, biểu tượng và các tệp CSS và
JavaScript
• Thử nghiệm và sửa lỗi trên nhiều trình duyệt khác nhau
• Cải thiện hiệu suất và khả năng tương thích của Website
Frontend cũng đóng vai trò quan trọng trong việc tăng trải nghiệm
người dùng của Website. Những công cụ và kỹ thuật mới như Responsive
Website Design, Progressive Website App và Single-Page Applications giúp
cải thiện tính năng và hiệu quả của frontend, giúp trang Website của lập trình
viên hoạt động mượt mà hơn và cung cấp trải nghiệm người dùng tốt hơn. Có
một số template engine thông dụng giúp xây dựng frontend như Mustache,
Handlebars and Angularjs [10]:
Mustache là một ngôn ngữ template nhẹ với cú pháp dễ đọc và thông số
23
kỹ thuật toàn diện. Mustache cũng được coi là hệ thống logic-less đơn giản vì
nó không đi kèm với các câu lệnh luồng điều khiển rõ ràng. Hệ thống tạo
khuôn mẫu được gọi là ria mép vì mã hóa được đặc trưng bởi việc sử dụng
nhiều dấu ngoặc nhọn thường giống với bộ ria mép. Dưới đây được liệt kê là
một số ưu điểm của Mustache.
Handlebars.js là một templating engine logic giúp tách biệt mã HTML
và phần logic của mã, đồng thời cho phép lập trình viên viết code rõ ràng hơn.
Handlebars.js đơn giản hóa khối lượng công việc bằng cách giảm số lượng
vòng lặp, mảng và câu lệnh mà lập trình viên phải viết để đạt được những gì
Handlebars.js có thể làm với các mẫu. Handlebars.js là một phía templating
engine máy khách (mặc dù nó cũng có thể được sử dụng trên máy chủ) cho
JavaScript. Đó là thư viện JavaScript mà lập trình viên đưa vào trang của mình
giống như lập trình viên đưa vào bất kỳ tệp JavaScript nào khác. Nó được viết
bằng JavaScript và Handlebars.js là một trình biên dịch lấy các biểu thức
HTML và Handlebars rồi biên dịch chúng thành một hàm JavaScript.
1.2.4. Server
Một server là một thiết bị hoặc phần mềm có khả năng cung cấp dịch vụ
hoặc tài nguyên cho các máy khách có yêu cầu. Trong lập trình Website,
server là máy tính hoặc thiết bị mạng có khả năng lưu trữ và cung cấp nội
dung Website cho các máy khách. Các server Website thường được cấu hình
với phần mềm máy chủ Website như Apache, Nginx, Microsoft IIS hoặc các
giải pháp đám mây như Amazon Website Services hoặc Microsoft Azure. Các
server Website có thể cung cấp nhiều loại dịch vụ và ứng dụng Website cho
người dùng, bao gồm trang Website tĩnh, trang Website động, dịch vụ
Website, email, cơ sở dữ liệu và nhiều hơn nữa.
Máy chủ chạy Website
Máy chủ chạy Website là một máy tính hoặc thiết bị mạng được cấu
hình để cung cấp nội dung Website cho các máy khách thông qua giao thức
HTTP (Hyper Text Transfer Protocol). Máy chủ chạy Website được cài đặt
các phần
24
mềm máy chủ Website như Apache, Nginx hoặc Microsoft IIS để phục vụ nội
dung Website và các ứng dụng có liên quan trên mạng. Máy chủ Website
thường được đặt trong các trung tâm dữ liệu hoặc các trang Website lớn hoạt
động một cách riêng biệt hoặc trong một môi trường máy chủ ảo để tăng tính
sẵn sàng và khả năng mở rộng. Các máy khách truy cập vào máy chủ Website
thông qua tên miền hoặc địa chỉ IP của máy chủ và yêu cầu các tài nguyên như
Website, hình ảnh hoặc tài liệu từ máy chủ.
Cách phương thức chính giữa client và server (get, post)
Trong Website, để giao tiếp giữa máy khách (client) và máy chủ
(server), hai phương thức chính được sử dụng là GET và POST.
GET: Phương thức GET được sử dụng để yêu cầu dữ liệu từ server. Khi
máy khách gửi yêu cầu GET, nó yêu cầu một tài nguyên (ví dụ: một Website)
từ máy chủ và máy chủ sẽ trả về tài nguyên đó trong phản hồi. Dữ liệu được
gửi bằng phương thức GET thường được gửi dưới dạng các tham số trên URL.
Ví dụ: http://example.com/search?query=keyword
POST: Phương thức POST được sử dụng để gửi dữ liệu từ máy khách
đến máy chủ. Khi máy khách gửi yêu cầu POST, nó gửi dữ liệu đến máy chủ
thông qua một yêu cầu HTTP và máy chủ sẽ xử lý và trả về phản hồi. Dữ liệu
được gửi bằng phương thức POST thường được gửi trong phần thân của yêu
cầu HTTP và không hiển thị trên URL.
So sánh sự khác nhau giữa GET và POST:
• GET thường được sử dụng để yêu cầu dữ liệu, trong khi POST được sử dụng
để gửi dữ liệu.
• Dữ liệu được gửi bằng phương thức GET thường được hiển thị trên URL,
trong khi dữ liệu được gửi bằng phương thức POST được gửi trong phần
thân của yêu cầu HTTP và không hiển thị trên URL.
• Phương thức GET thường nhanh hơn và dễ dàng cho việc truy cập Website,
nhưng phương thức POST được sử dụng nhiều hơn để gửi dữ liệu vì nó
được coi là an toàn hơn với các thông tin nhạy cảm.
25
1.3. WEBSITE THỐNG KÊ KHỐI LƯỢNG GIẢNG DẠY VÀ CUNG
CẤP THÔNG TIN NGHIÊN CỨU KHOA HỌC
Các vấn đề mà thầy cô gặp phải trong quá trình thống kê số lượng giảng
dạy là rất phổ biến. Những vấn đề này có thể gây ra những sai sót không đáng
có, mất thời gian và tốn kém trong việc lưu trữ thông tin và cập nhật dữ liệu.
Một trong những giải pháp để giảm thiểu các vấn đề này là sử dụng
công nghệ thông tin để tự động hóa quá trình thống kê số lượng giảng dạy.
Thay vì sử dụng các phương pháp thủ công, các thông tin về số lượng giảng
dạy có thể được lưu trữ và quản lý thông qua hệ thống quản lý cơ sở dữ liệu.
Việc thiết kế một Website phục vụ hoạt động giảng dạy và nghiên cứu
cũng có thể giúp giảm thiểu các vấn đề này. Trang Website này có thể cung
cấp các tính năng và chức năng để đăng nhập và lưu trữ thông tin về số lượng
giảng dạy của các giáo viên, đồng thời cũng cung cấp các công cụ để thống kê
và quản lý dữ liệu một cách chính xác và hiệu quả. Việc thiết kế trang
Website này cần được đảm bảo tính bảo mật và độ tin cậy để đảm bảo an toàn
cho dữ
liệu của giảng viên. Thiết kế Website như vậy sẽ được hướng dẫn chi tiết ở
Chương 2.
• Thống kê khối lượng giảng dạy của Giảng viên trong Khoa Điện tử theo
tháng
• Hỗ trợ nhập tập tin chứa thông tin thực hành theo tuần
• Yêu cầu thiết kế cho phép nhập, sửa lịch giảng dạy
• Yêu cầu thiết kế cho phép xem thông tin nghiên cứu
phản hồi của máy chủ khi người dùng gửi yêu cầu cần tương đối nhanh
• Các trang Website hiển thị đúng theo các đường link hồ sơ của từng người
2.2.1. Các phương pháp để xây dựng Website thống kê giảng dạy
Phương pháp 1
• Express làm cho các ứng dụng Website nhanh hơn và trong thời gian ngắn
hơn.
• Express cho phép các nhà phát triển sử dụng JavaScript trên cả máy chủ và
máy khách.
• Express có hỗ trợ Công cụ V8 của Google.
• Express bao gồm một hệ thống mô-đun giúp việc chia sẻ mã giữa các
• Vì xây dựng trên Nodejs nên Express có trình quản lý gói Node.js (npm) mở
rộng hơn.
28
• Không hoạt động tốt hơn trên các tác vụ sử dụng nhiều CPU • Các API
được sử dụng không ổn định vì chúng thay đổi thường xuyên • Thiếu hỗ
• Làm việc với cơ sở dữ liệu quan hệ có thể phức tạp trong Expressjs
Template Handlebar [11]
Ưu điểm của Handlebarjs:
• Handlebars biên dịch mã HTML thay vì thông dịch đẩy nhanh tốc độ xử lí
• Khi sử dụng Handlebarjs sẽ gặp khó khăn khi sử dụng một số framework
khác
• Để dùng Handlebarsjs cần học một số cú pháp và quy tắc mới, những quy
tắc này có thể không tương thích với các công cụ hoặc ngôn ngữ khác. •
Handlebarsjs không hỗ trợ tất cả các tính năng hoặc chức năng cần cho các
trang Website như tính tương tác, quản lý trạng thái hoặc định tuyến.
MongoDB [6]
Ưu điểm của MongoDB:
• MongoDB rất linh hoạt và có thể thích ứng với các tình huống và yêu cầu
thực tế.
• Các truy vấn có thể được thực hiện để trả về một số trường nhất định trong
tài liệu.
• MongoDB hỗ trợ trường, truy vấn dựa trên phạm vi, biểu thức chính quy,
v.v. để tìm kiếm dữ liệu từ dữ liệu được lưu trữ.
• MongoDB là một hệ thống DBMS rất dễ sử dụng, có thể dễ dàng tăng hoặc
giảm quy mô.
29
• MongoDB giúp sử dụng bộ nhớ trong để lưu trữ các bộ dữ liệu tạm thời đang
hoạt động với tốc độ nhanh hơn nhiều.
• MongoDB cung cấp các chỉ mục chính và phụ trên bất kỳ trường nào.
• Lập trình viên có thể sử dụng MongoDB làm hệ thống lưu trữ tệp được gọi
là GridFS.
• MongoDB cung cấp nhiều phương pháp khác nhau để thực hiện các hoạt
động tổng hợp trên dữ liệu như đường dẫn tổng hợp, thu nhỏ bản đồ hoặc
các lệnh tổng hợp mục tiêu đơn lẻ.
• MongoDB cho phép lưu trữ bất kỳ loại tệp nào có kích thước bất kỳ mà
không ảnh hưởng đến ngăn xếp
• MongoDB về cơ bản sử dụng các đối tượng JavaScript thay cho thủ tục. •
MongoDB hỗ trợ loại bộ sưu tập đặc biệt như TTL (Time-To-Live) để lưu trữ
dữ liệu sẽ hết hạn vào một thời điểm nhất định
JSON • Các chỉ mục có thể được tạo để cải thiện hiệu suất tìm kiếm trong
MongoDB. Bất kỳ trường nào trong tài liệu MongoDB đều có thể được lập
chỉ mục. • Bản sao – MongoDB có thể cung cấp tính sẵn sàng cao với các bộ
bản sao • MongoDB có thể chạy trên nhiều máy chủ, cân bằng tải và/hoặc sao
chép dữ liệu để duy trì hoạt động của hệ thống trong trường hợp lỗi phần
cứng. Nhược điểm của MongoDB:
• MongoDB không phải là ACID mạnh (Nguyên tử, Tính nhất quán, Cách ly
• Trong MongoDB, không có điều khoản nào cho Thủ tục lưu trữ hoặc chức
năng, vì vậy lập trình viên không thể triển khai bất kỳ logic nghiệp vụ nào ở
cấp cơ sở dữ liệu, điều mà lập trình viên có thể thực hiện trong bất kỳ hệ
thống RDBMS nào.
30
Phương pháp 2
Laravel – PHP [9]
Ưu điểm của Laravel:
• Bảo mật: Laravel sử dụng nhiều phương pháp xác thực và ủy quyền để ngăn
chặn mọi hình thức truy cập trái phép. Vì vậy, bất kỳ dữ liệu nào mà
Laravel sử dụng đều an toàn và bảo mật. Và để bảo vệ bằng mật khẩu,
Laravel mã hóa nó tương tự như WhatsApp. Mật khẩu không bao giờ được
lưu trữ trực tiếp bên trong cơ sở dữ liệu.
• Tài liệu: Tất cả các phiên bản của Laravel framework đều có tài liệu đầy đủ.
Tài liệu này bao gồm thông tin về các phương pháp viết mã, kiểu và lớp.
Những loại tài liệu này làm cho Laravel trở thành một framework thân thiện
với nhà phát triển.
• Khả năng tương thích với PHP: Các phiên bản PHP mới nhất được hỗ trợ
nguyên bản bởi khuôn khổ Laravel. Do đó, có thể bao gồm các tính năng và
bản cập nhật khác nhau của PHP. Một số trong số đó là, không gian tên,
chức năng quá tải và ẩn danh. Không giống như các framework khác, các
nhà phát triển Laravel được phép trực tiếp sử dụng chúng.
• Khả năng sử dụng lại mã: Laravel có khả năng sử dụng lại mã bằng cách
thực hiện theo phương pháp chỉnh sửa gói. Ví dụ: lập trình viên có thể chỉnh
sửa các trang để thêm các tính năng bổ sung. Các gói đã chỉnh sửa có thể
được sử dụng lại nhiều lần cho ứng dụng. Điều này đảm bảo rằng lập trình
viên có thể dễ dàng tùy chỉnh các dự án.
• Hỗ trợ cộng đồng: Bản chất mã nguồn mở của Laravel đã góp phần vào sự
phổ biến của nó. Nhiều người bắt đầu làm việc để cải thiện nó. Cộng đồng lớn
các nhà phát triển này sẵn sàng giúp lập trình viên giải quyết các vấn đề mà
lập trình viên gặp phải khi sử dụng công cụ này. Với mục đích này, có rất
nhiều diễn đàn cộng đồng và trang Website chuyên dụng. Nhược điểm của
Laravel:
• Học tập, tìm hiểu: Mặc dù Laravel đi kèm với một tài liệu toàn diện, nhưng
31
nó có thể khiến người dùng bình thường choáng ngợp. Với rất nhiều tài liệu
ngay từ cái nhìn đầu tiên, giai đoạn đầu làm việc với Laravel có thể trở nên
khó khăn. Vì vậy, người dùng cần trải qua các khóa đào tạo khác nhau để
thành thạo framework này. Hơn nữa, khung được xây dựng thông qua việc
sử dụng các quy tắc hướng đối tượng. Do đó, trước khi bắt đầu sử dụng
Laravel, lập trình viên phải làm quen với các khái niệm về kiến trúc MVC
và hướng đối tượng.
• Nâng cấp Framework: Tương tự như các khung PHP khác, Laravel cũng gặp
sự cố khi nâng cấp phiên bản. Một số cập nhật được biết là làm gián đoạn
chức năng của Laravel. Có lẽ, do điều này có thể có sự gián đoạn trong dự
án. Vì vậy, các nhà phát triển cần lưu ý trước khi nâng cấp một trang
Website hoặc ứng dụng.
• Chuyên môn kỹ thuật: Laravel bao gồm nhiều tính năng tự động có thể làm
cho khung dễ sử dụng. Nhưng có những tính năng phức tạp khác không phải
ai cũng có thể hiểu được. Vì vậy, luôn thiếu các nhà phát triển Laravel lành
nghề trên thị trường.
• Công cụ quản lí gói Composer: Composer được sử dụng trong Laravel với
mục đích quản lý các phụ thuộc và cài đặt chúng. Mặc dù Laravel hỗ trợ
composer, nhưng sức mạnh không đạt đến mức mong đợi. Đặc biệt, khi so
sánh với các framework khác như npm, pip và Ruby gems. Hầu hết các nhà
phát triển nghiệp dư đều gặp khó khăn khi xử lý khung này.
• Phương thức thanh toán: Laravel không hỗ trợ tính năng thanh toán. Các nhà
phát triển cần dựa vào các thư viện khung để bao gồm phương thức thanh
toán. Việc tích hợp các phương thức thanh toán như PayPal và Stripe có thể
tạm thời giải quyết vấn đề. Nếu quá trình này quá rườm rà, lập trình viên có
thể chọn sử dụng một khung khác với bộ xử lý thanh toán của bên thứ ba.
MySQL [6]
Ưu điểm của MySQL:
• Nó hỗ trợ báo cáo giảm tải, Phân phối dữ liệu địa lý, v.v. • Chi phí rất thấp
với công cụ lưu trữ MyISAM khi được sử dụng cho các ứng dụng chỉ đọc
• Hỗ trợ công cụ lưu trữ bộ nhớ cho các bảng được sử dụng thường xuyên • Bộ
đệm truy vấn cho các câu lệnh được sử dụng nhiều lần • Lập trình viên có thể
dễ dàng tìm hiểu và khắc phục sự cố MySQL từ các nguồn khác nhau như
blog, sách.
Nhược điểm của MySQL:
• Các giao dịch liên quan đến danh mục hệ thống không tuân thủ ACID • Đôi
khi sự cố máy chủ có thể làm hỏng danh mục hệ thống • Các thủ tục được lưu
trữ không được lưu trong bộ nhớ cache • Hầu hết các bảng MYSQL được sử
dụng cho thủ tục hoặc trình kích hoạt đều được khóa trước.
Dựa vào ưu nhược điểm của hai phương pháp trên, nhóm đã quyết
định sử dụng phương pháp 1 vì:
• Expressjs hỗ trợ phát triển Website một các nhanh chóng và đơn giản. •
Expressjs cho phép sử dụng Javascript trên cả máy chủ và máy khách điều
này khiến việc phát triển Website full-stack trở nên dễ dàng và nhất quán.
Hơn cả, Javacript hiện nay được coi là một ngôn ngữ phát triển Website hiện
đại
• Handlebarjs giúp tách riêng mã HTML khiến cho cấu trúc của mã nguồn rõ
ràng dễ dàng thiết kế theo mô hình MVC
• Handlebarjs cũng hỗ trợ việc hiển thị các môn học một cách dễ dàng tránh
• MongoBD không yêu cầu lược đồ giúp quá trình xây dựng dữ liệu nhanh
chóng
• MongoDB hỗ trợ truy vấn đến một trường một cách dễ dàng và chính xác •
Ứng dụng không cần phát triển trên nhiều ngôn ngữ nên Expressjs và
Handlebarjs chỉ tương thích với Javacript không gây trở ngại cho quá trình
33
• Dữ liệu đầu vào đơn giản không yêu cầu quá chặt chẽ về quan hệ nên
• Expressjs làm việc phức tạp với cơ sở dữ liệu quan hệ nên chọn dữ liệu phi
quan hệ như MongoBD sẽ giúp công việc trở nên thuận lợi và dễ dàng hơn
Controller: Là thành phần cho phép kết nối giữa View và Model nên nó
đóng vai trò trung gian. Controller không phải lo lắng về việc xử lý logic dữ
liệu, nó chỉ báo cho mô hình biết phải làm gì. Nó xử lý tất cả logic nghiệp vụ
và các yêu cầu đến, thao tác dữ liệu bằng cách sử dụng thành phần Model và
tương tác với View để hiển thị đầu ra cuối cùng.
Model: Tương ứng với tất cả logic liên quan đến dữ liệu mà người dùng
làm việc cùng. Điều này có thể đại diện cho dữ liệu đang được truyền giữa các
thành phần View và Controller hoặc bất kỳ dữ liệu nào khác liên quan đến
logic nghiệp vụ. Nó có thể thêm hoặc lấy dữ liệu từ cơ sở dữ liệu. Nó đáp ứng
yêu cầu của Controller vì Controller không thể tự tương tác với cơ sở dữ liệu.
Mô hình tương tác với cơ sở dữ liệu và trả lại dữ liệu cần thiết cho Controller.
34
View: được sử dụng cho tất cả logic giao diện người dùng của ứng
dụng. Nó tạo ra một giao diện người dùng cho người dùng. Chế độ xem được
tạo bởi dữ liệu được thu thập bởi Model nhưng những dữ liệu này không được
lấy trực tiếp mà thông qua Controller. Nó chỉ tương tác với Controller.
Client: là các trình duyệt Website có vai trò là máy khách
Database: là cơ sở dữ liệu của Website
• Khối thống kê khối lượng giảng dạy: Gửi yêu cầu đến Model để đọc dữ liệu
từ database, sau khi database phản hồi lại dữ liệu, thực hiện thống kê gửi kết
quả đến View, View sẽ kết hợp với dữ liệu đó với các logic và phản hồi lại
Khối thống kê. Sau đó Khối thống kê sẽ gửi đến Client.
• Hỗ trợ nhập thông tin thực hành: Gửi yêu cầu đến Model để đọc dữ liệu từ
database, sau khi database phản hồi lại dữ liệu gửi dữ liệu đó đến View,
View sẽ kết hợp với dữ liệu đó với các logic và phản hồi lại Khối thống kê.
Sau đó Khối thống kê sẽ gửi đến Client.
• Nhập dữ liệu: Đọc tập tin nhận, gửi dữ liệu đến Model để lưu dữ liệu vào
database, gửi yêu cầu lấy giao diện nhập mới đến View, sau khi nhận được
gửi về Client
35
2.3.2. Thiết kế từng thành phần cơ bản
Khối View
Giao diện trang chủ được minh họa như Hình 2.3
Giao diện trang tìm kiếm được minh họa như Hình 2.4
Giao diện trang nhập dữ liệu được minh họa như Hình 2.5
Hình 2.5. Trang nhập dữ liệu
Giao diện trang thống kê khối lượng giảng dạy được minh họa như Hình 2.6
Giao diện trang hỗ trợ thông tin thực hành được minh họa như Hình 2.7
Hình 2.7. Trang hỗ trợ điền thông tin thực hành
Giao diện trang thông tin nghiên cứu khoa học được minh họa như Hình 2.8
Giao diện trang nhóm nghiên cứu khoa học được minh họa như Hình 2.9
Giao diện trang đăng nhập được minh họa như Hình 2.10
Hình 2.10. Trang đăng nhập
Giao diện hướng dẫn sử dụng được minh họa như Hình 2.11
Khối Model
Bảng dữ liệu cho lịch đầy đủ Bảng 2.1
Field Type Description
Bomon String Tên bộ môn
Malop String Mã lớp
He String Hệ
Nganh String Ngành
Khoa String Khóa
Giangvien String Giảng viên
SoSV String Số sinh viên
Hinhthuc String LT/ TH/ ĐA/ TTTN
Ngay String Tuần
Sotietday String Số tiết dạy trong tuần
40
Field Type Description
Phong_thu_3 String Phòng dạy vào thứ 3
Ca_thu_4 String Ca dạy vào thứ 4
Phong_thu_4 String Phòng dạy vào thứ 4
Ca_thu_5 String Ca dạy vào thứ 5
Phong_thu_5 String Phòng dạy vào thứ 5
Ca_thu_6 String Ca dạy vào thứ 6
Phong_thu_6 String Phòng dạy vào thứ 6
Ca_thu_7 String Ca dạy vào thứ 7
Phong_thu_7 String Phòng dạy vào thứ 7
Ca_chu_nhat String Ca dạy vào chủ nhật
Phong_chu_nhat String Phòng dạy chủ nhật
Giang_vien String Tên giảng viên
Ngay String Tuần
Thang String Tháng
Nam String Năm
Khối Controller
Lưu đồ thuật toán nhập lịch đầy đủ được minh hoạ trong Hình 2.12: • Trước
khi nhập lịch đầy đủ người dùng cần đăng nhập tài khoản được cấp quyền
admin, nếu không sẽ không thử thực hiện tiếp
• Tiếp đó người dùng cần nhập tập tin của lịch đầy đủ.
• Nếu tập tin có đúng định dạng (tập tin Excel có đuôi mở rộng .xlsx) thì trình
duyệt sẽ gửi yêu cầu lên server với phương thức post kèm theo dữ liệu là tập
tin vừa nhập, nếu sai hoặc chưa nhập tập tin hệ thống sẽ thông báo lỗi và
yêu cầu nhập lại.
• Sau khi server nhận được yêu cầu sẽ tiến hành đọc tập tin nhận được. Lưu
dữ liệu với các biến local với các trường dữ liệu như bảng dữ liệu lịch đầy
đủ ở phần Khối Model
41
• Tiến hành xóa những dữ liệu có trường dữ liệu “Ngay” giống với dữ liệu của
tập tin đã nhập với phương thức deleteMany()
• Sau khi xóa xong, dữ liệu sẽ được lưu vào MongoDB với phương thức
create()
Lưu đồ thuật toán nhập lịch thực hành được minh hoạ trong Hình 2.13: •
Trước khi nhập lịch đầy đủ người dùng cần đăng nhập tài khoản được cấp
quyền admin, nếu không sẽ không thể thực hiện tiếp.
• Khi cần nhập lịch đầy đủ người dùng sẽ nhập tập tin của lịch thực hành và
• Nếu tập tin có đúng định dạng (tập tin Excel có đuôi mở rộng .xlsx) và đầy
đủ các thông tin thì trình duyệt sẽ gửi yêu cầu lên server với phương thức
post kèm theo dữ liệu là tập tin vừa nhập, ngày thứ Hai của tuần vừa nhập
nếu sai hoặc chưa nhập đầu đủ thông tin hệ thống sẽ thông báo lỗi và yêu
cầu nhập lại.
• Sau khi server nhận được yêu cầu sẽ tiến hành đọc tập tin nhận được. Lưu
dữ liệu với các biến local với các trường dữ liệu như bảng dữ liệu lịch thực
hành ở phần Khối Model.
42
• Tiến hành xóa những dữ liệu có trường dữ liệu “Ngay” giống với dữ liệu của
ngày thứ Hai đã nhập với phương thức deleteMany().
• Sau khi xóa xong, dữ liệu sẽ được lưu vào MongoDB với phương thức
create().
Lưu đồ thuật toán thống kê khối lượng giảng dạy được minh hoạ trong Hình
2.14:
• Trước khi nhập lịch đầy đủ người dùng cần đăng nhập tài khoản, nếu không
• Khi cần thống kê khối lượng giảng dạy người dùng cần nhập tên của giảng
viên cần thống kê và các tuần của các tháng cần thống kê (Các thứ Hai của
tuần đó)
• Nếu nhập đủ thông tin thì trình duyệt sẽ gửi yêu cầu lên server với phương
thức post kèm theo dữ liệu là tên giảng viên, các ngày thứ Hai của tuần vừa
nhập nếu sai hoặc chưa nhập đầu đủ thông tin hệ thống sẽ thông báo lỗi và
yêu cầu nhập lại.
• Sau khi server nhận được yêu cầu sẽ tiến hành tìm dữ liệu từ MongoDB với
phương thức find() có trường dữ liệu “Giangvien” và “Ngay” giống với tên
43
giảng viên và các ngày thứ Hai nhận được, sau khi tìm xong tiến hành thống
kê khối lượng giảng dạy.
• Gửi dữ liệu về khối lượng giảng dạy vừa thống kê được đến View, View sẽ
kết hợp với các logic tạo ra giao diện thống kê khối lượng giảng dạy • Gửi
giao diện vừa tạo về trình duyệt của người dùng yêu cầu.
Hình 2.14. Lưu đồ thuật toán thống kê khối lượng giảng dạy
Lưu đồ thuật toán hỗ trợ hiển thị thông tin thực hành được minh hoạ trong
Hình 2.15:
• Trước khi nhập lịch đầy đủ người dùng cần đăng nhập tài khoản, nếu không
• Khi cần hỗ trợ nhập thông tin thực hành người dùng cần nhập tên của giảng
viên cần thống kê và các tuần của các tháng cần thống kê (Các thứ Hai của
tuần đó)
• Nếu nhập đủ thông tin thì trình duyệt sẽ gửi yêu cầu lên server với phương
thức post kèm theo dữ liệu là tên giảng viên, các ngày thứ Hai của tuần vừa
nhập nếu sai hoặc chưa nhập đầu đủ thông tin hệ thống sẽ thông báo lỗi và
yêu cầu nhập lại.
• Sau khi server nhận được yêu cầu sẽ tiến hành tìm dữ liệu từ MongoDB với
phương thức find() có trường dữ liệu “Giang_vien” và “Ngay” giống với tên
giảng viên và các ngày thứ Hai nhận được.
44
• Gửi dữ liệu vừa tìm được đến View, View sẽ kết hợp với các logic tạo ra
giao diện hỗ trợ nhập thông tin thực hành
• Gửi giao diện vừa tạo về trình duyệt của người dùng yêu cầu.
Hình 2.15. Lưu đồ thuật toán hỗ trợ nhập thông tin thực hành
Routing
Routing trong Node.js giúp xác định ứng dụng sẽ đáp ứng như thế nào
khi người dùng tạo một request đến một endpoint (Điểm cuối) cụ thể. Điểm
cuối đó thường là một URI hoặc một đường dẫn (Path) với một Request
method (POST, PUT, GET, ...) cụ thể.
45
Chương này đã đưa ra cấu tạo, cách hoạt động của từng thành phần của
Website phục vụ hoạt động giảng dạy và nghiên cứu cho Khoa Điện tử, đồng
thời cũng thể hiện được phương pháp thiết kế các thành phần cấu tạo nên
Website và triển khai thành một Website hoàn chỉnh. Trong chương tiếp theo,
Website đã được triển khai và được kiểm chứng về khả năng thực thi, độ chính
xác.
46
Hình 3.1. Ví dụ thống kê khối lượng giảng dạy của giảng viên Dương Thị Hằng
Bảng thống kê số giờ giảng dạy và số giờ được thanh toán của một số
giảng viên được thể hiện ở Bảng 3.1
T11/2022 T1/2023 T3/2023
Tổng số Tổng số Tổng số Tổng số Tổng số Tổng
giờ giờ đề giờ giờ đề giờ số giờ
giảng nghị giảng nghị giảng đề
dạy thanh dạy thanh toán dạy nghị
toán thanh
toán
Bảng 3.1. Bảng thống kê số giờ giảng dạy và số giờ được thanh toán của
một số giảng viên
Hình 3.4. Kết quả kiểm chứng của giảng viên Lê Việt Tiến
Hình 3.5. Kết quả kiểm chứng của giảng viên Nguyễn Văn Cường
Hình 3.7. Kết quả kiểm chứng của giảng viên Lê Mạnh Long
3.3.1. Ưu điểm
• Hỗ trợ giảng viên thống kê khối lượng giảng dạy, nhập thông tin thực hành
• Vẫn còn tồn tại 1 chút thiếu sót trong việc quản trị thông tin.
• Thời gian phản hồi của việc nhập dữ liệu còn chậm
• Giao diện mới dừng lại ở mức độ cơ bản chưa tối ưu được giao diện
• Thời gian trên website hiển thị theo chuẩn Việt Nam
• Đối với giảng viên không thuộc ban chủ nhiệm của Khoa hay giáo vụ Khoa,
chỉ được tìm kiếm khối lượng giảng dạy của chính mình.
• Phần chuẩn bị tập tin lịch thực hành theo tuần chưa yêu cầu điền đủ các
thông tin quan trọng như mã lớp và tên nhóm với định dạng số
• Yêu cầu điền đủ thông tin quan trọng: mã lớp, tên nhóm, ca thực hành,
• Chưa cho phép xem khối lượng GD trong khoảng thời gian tự chọn
• Quản lý lịch giảng dạy: Giảng viên có thể xem lịch giảng dạy trên trang web
• Đăng tải, chia sẻ các thông tin nghiên cứu khoa học.
• Tăng sự tương tác giữa sinh viên và giảng viên khi tham gia nghiên cứu khoa
học.
51
Tóm lại việc thiết kế web là một công việc không đơn giản và yêu cầu
cần phải có kiến thức chuyên sâu về các yếu tố cơ bản của thiết kế web và lưu
ý đến các tác động của thiết kế web để bảo đảm mang đến một sản phẩm mang
trải nghiệm tốt nhất cho người dùng.
52
KẾT LUẬN
1. KẾT LUẬN
Đồ án đã đạt được những kết quả tích cực trong việc thiết kế và triển
khai Website hỗ trợ giảng dạy và nghiên cứu cho khoa Điện tử. Website được
thiết kế với nhiều tính năng hữu ích như hỗ trợ giảng viên thống kê khối
lượng giảng dạy, nhập thông tin lý thuyết/thực hành, cho phép nhập và sửa
đổi lịch giảng dạy, hiển thị thông tin nghiên cứu của khoa Điện tử, tính năng
đăng nhập và phân quyền cho người dùng.
2. KIẾN NGHỊ
Sản phẩm Website có thể được áp dụng cho khoa Điện tử để thống kê
khối lượng giảng dạy của giảng viên, cung cấp thông tin nghiên cứu khoa học
theo từng năm học. Website đã thiết kế giúp Thầy/Cô trong khoa Điện tử: •
• Đăng tải, chia sẻ các thông tin nghiên cứu khoa học.
• Tăng sự tương tác giữa sinh viên và giảng viên khi tham gia nghiên cứu khoa
học.
53
[9] Stefania Volpe (2022), Nodejs vs Laravel: How To Choose The Right
Framework. [Online]. Available: https://www.freelancermap.com/blog/
node-js-vs-laravel/, accessed on May 14, 2023.
[10] Cubet (2022), A vital comparison: Handlebars Vs Mustache Vs Angularjs
[Online]. Available: https://cubettech.com/resources/blog/a-vital
comparison-handlebars-vs-mustache-vs-angularjs/, accessed on May
14, 2023.
[11] Divyanshu Soni (2022), HTML Handlebars [Online]. Available:
https://www.scaler.com/topics/html/handlebars/, accessed on May 14,
2023.
1
PHỤ LỤC
Hướng dẫn sử dụng Website
Địa chỉ để truy cập Website: http://54.253.50.220/
Nhập dữ liệu: giúp quản trị viên tải các dữ liệu lý thuyết, thực hành, hướng
dẫn thực tập tốt nghiệp và đồ án tốt nghiệp theo năm học lên hệ thống. Tiện
ích: mô tả hướng dẫn sử dụng Website
• Nghiên cứu khoa học (NCKH): Cung cấp thông tin nghiên cứu khoa học
gồm: Giúp sinh viên nắm bắt được thông tin nghiên cứu khoa học và liên hệ
để tham gia các nhóm nghiên cứu của Khoa.
• Hiển thị thông tin về các giảng viên và sinh viên đang tham gia nghiên cứu
2
tại Khoa.
Chức năng tìm kiếm
Chức năng thống kê khối lượng giảng dạy và hướng dẫn TTTN và
ĐATN Các bước thực hiện chức năng thống kê:
• B2: Chọn tab “Xem thông tin giảng dạy” và chọn tên giảng viên cần tra cứu
• B3: Chọn năm, tháng cần tra cứu rồi bấm “Tìm kiếm”
• B4: Sau khi bấm tìm kiếm, trang website sẽ hiện các thông tin liên quan đến
học phần bao gồm các thông chính: tên học phần, mã học phần, thực giảng
và hệ số TĐ ĐT
3
Để có thể lọc danh sách chi tiết của giảng viên đã chọn, hãy chọn tên học phần,
mã lớp và hình thức giảng dạy (LT/TH/ĐA/TTTN), sau đó chọn biểu tượng bộ lọc. Ví
dụ lọc lớp “Lập trình mạng” có mã học phần “202210803153001” đối với “TH nhóm
2” sẽ trả về kết quả như Hình bên dưới.
Chức năng hiển thị thông tin thực hành theo tuần
Các bước thực hiện chức năng hiển thị thông tin thực hành theo tuần: •
• B2: Chọn tab “Xem thông tin thực hành” và chọn tên giảng viên cần tra cứu
4
•
B3: Chọn năm, tháng cần, ngày thứ 2 đầu tuần (đại diện cho tuần đó) và bấm
“Thông tin thực hành”
Nhập dữ liệu
Website cho phép nhập các dữ liệu sau:
• Nhập lịch đầy đủ bao gồm lịch lý thuyết, thực hành, đồ án môn học, đồ án
5
Chọn tập tin đã chuẩn bị theo mẫu, sau khi chọn xong sẽ có thông báo tên tập
tin đã chọn (Lưu ý: Tập tin chỉ chứa 1 sheet duy nhất tên là “KHOA DIEN
TU”)
• B3: Nhấn “Tải lên” và tải tập tin lịch đầy đủ lên Website
• B1: Chọn tab “Nhập dữ liệu” trên thanh công cụ và chọn “Lịch thực hành” •
B2: Chọn tuần nhập (Lưu ý: Chỉ chọn thứ 2 của tuần cần nhập) • B3: Chọn tập
tin đã chuẩn bị theo mẫu, sau khi chọn xong sẽ có thông báo
tên tập tin đã chọn (Lưu ý: tập tin chỉ chứa 1 sheet duy nhất) (Tương tự như
nhập lịch đầy đủ)
• B4: Nhấn “Tải lên” và tải tập tin lịch đầy đủ lên Website (Tương tự như
nhập lịch đầy đủ)
• Để tránh những lỗi xảy ra trong quá trình xử lý dữ liệu, các ký tự đặc biệt
như !,@,#,$... không nên được sử dụng trong các trường dữ liệu. • Thông tin
về số lượng nhóm và ca thực hành chỉ được viết bằng số, không được viết
bằng chữ. Tên cũng nên được viết bằng các ký tự hoặc số hợp lệ, không sử
dụng các ký tự đặc biệt.
Lịch đầy đủ
Khái quát
Trong lịch học lý thuyết bao gồm nhữ ng thành phần chính như:
• Mã lớp
• Hệ
• Khóa
• Giảng viên
• Số tiết hoặc giờ giảng dạy/hướng dẫn đối với từng tuần
7
Các bước chuẩn bị
• B1: Chuẩn bị bảng dữ liệu ví dụ như Hình dưới
B2: Thêm ngày tháng năm vào bảng tính như hình minh họa Điền ngày thứ 2
của tuần đầu tiên năm học đối với hệ Đại học, ví dụ như hình bên dưới là
ngày 04 tháng 07 năm 2022.
8
Chọn ô cạnh ô ngày 04 tháng 07 năm 2022 và viết câu lệnh bằng ngày đó
cộng với 7 và sao chép công thức tới tuần cuối cùng của năm học. Ví dụ như
hình bên dưới:
Lưu ý: Chuyển đổi hàng chứa thông tin ngày về dạng minh họa bên dưới
(tháng/ngày/năm):
• B3: Điền dữ liệu thông tin học phần bắt đầu từ hàng thứ 9, như hình bên
dưới
• B4: Yêu cầu một hàng trống ở ngay sau dữ liệu liên quan đến học phần
9
Các lưu ý
• Không gộp các mã lớp với nhau
• Sử dụng một sheet duy nhất với tên là “KHOA DIEN TU”
• Mã lớp
• Hệ
• Khóa
• Giảng viên
• Ca thực hành
•
B2: Điền dữ liệu thông tin học phần bắt đầu từ hàng thứ 13, như hình bên
dưới
• B3: Yêu cầu một hàng trống ở ngay sau dữ liệu liên quan đến học phần
Các lưu ý
• Không gộp các ca, phòng với nhau