Tính cấp thiết của đề tài
Ngày nay, mặc dù đời sống ngày càng cải thiện, vẫn còn nhiều học sinh, sinh viên gặp khó khăn tài chính trong việc học tập Do đó, cần có các chương trình học bổng để hỗ trợ những em này, giúp họ có cơ hội hoàn thành việc học và nâng cao chất lượng giáo dục Những học bổng không chỉ thúc đẩy sự đa dạng trong môi trường học tập mà còn khuyến khích nghiên cứu trong các lĩnh vực cụ thể Bên cạnh đó, chúng cũng tạo điều kiện cho sinh viên mở rộng mạng lưới cá nhân và xây dựng mối quan hệ Đồng thời, các tổ chức tài trợ và doanh nghiệp cũng có thể tham gia vào việc nâng cao chất lượng giáo dục và nghiên cứu thông qua việc hỗ trợ học sinh có hoàn cảnh khó khăn.
Nắm bắt được tình hình đó, em đã mạnh dạn lựa chọn đề tài: “Xây dựng website trao nhận học bổng cho sinh viên”.
Mục tiêu của đề tài
Cung cấp thông tin về các chương trình học bổng và giúp sinh viên tìm kiếm và nộp đơn học bổng dễ dàng hơn
Xây dựng một hệ thống quản lý học bổng tự động và tích hợp với các hệ thống khác sẽ nâng cao hiệu quả trong việc quản lý và cập nhật thông tin.
Nâng cao chất lượng và sự đa dạng của sinh viên trong trường học hoặc ngành học cụ thể bằng cách tạo cơ hội học tập cho những sinh viên có hoàn cảnh khó khăn Việc này không chỉ giúp phát triển tài năng mà còn góp phần xây dựng một môi trường học tập toàn diện và công bằng hơn.
Thúc đẩy giáo dục và nghiên cứu trong lĩnh vực cụ thể bằng cách tạo cơ hội học tập cho sinh viên có năng lực và đam mê.
Giúp các tổ chức tài trợ hoặc các công ty có thể.
Phương pháp thực hiện
Để phục vụ cho quá trình phát triển và xây dựng website, em đã áp dụng các kiến thức:
- Nắm vững kỹ thuật phân tích thiết kế hệ thống thông tin
- Tìm hiểu tài liệu về hệ quản trị cơ sở dữ liệu MySQL
Để phát triển web hiệu quả, bạn cần nắm vững kiến thức cơ bản về ngôn ngữ lập trình như HTML, JavaScript và PHP theo mô hình MVC Bên cạnh đó, việc áp dụng các công nghệ hiện đại như Next.js, Laravel, JSON Web Token, Restful API, Bootstrap và Tailwind CSS cũng rất quan trọng.
- Tham khảo các đề tài liên quan.
KHẢO SÁT HIỆN TRẠNG
Phân tích hiện trạng
Trong bối cảnh dịch COVID-19 hiện nay, việc trao nhận học bổng cho học sinh, sinh viên gặp nhiều khó khăn do hạn chế ra ngoài Thông tin về các chương trình học bổng chủ yếu được thực hiện thủ công thông qua các hoạt động gặp gỡ trực tiếp, dẫn đến khó khăn trong việc tìm kiếm thông tin và điều kiện để đạt được học bổng.
Do đó việc thiết kế một website trao nhận học bổng cho sinh viên đã trở thành nhu cầu thiết yếu và thu hút được nhiều người tham gia.
Khảo sát một số trang web hiện nay
Hình ảnh: 1 Khảo sát bdu.edu.vn
Hình ảnh: 2 Khảo sát idp.com
Hình ảnh: 3 Khảo sát daihoc.fpt.edu.vn
Phân tích yêu cầu dự án
Xây dựng website trao nhận học bổng cho sinh viên có các chức năng:
Trang web cần cung cấp thông tin chi tiết về các chương trình học bổng khác nhau, bao gồm các loại học bổng, điều kiện đủ để nhận học bổng, hạn chót nộp đơn và các yêu cầu cần thiết khác.
Trang web cần tích hợp các tính năng giúp sinh viên dễ dàng tìm kiếm và nộp đơn cho các chương trình học bổng phù hợp, nhằm hỗ trợ tối đa trong quá trình xin học bổng.
Trang web cần xây dựng một hệ thống quản lý thông tin sinh viên và học bổng hiệu quả, nhằm tối ưu hóa việc cập nhật và quản lý dữ liệu liên quan.
Danh sách các chức năng nghiệp vụ
STT Chức năng Tính năng Ghi chú
1 Quản lý học bổng CRUD
Cung cấp các thông tin, điều kiện về học bổng
2 Quản lý trường/công ty CRUD
Quản lý thông tin của các công ty nhằm đảm bảo thông tin chính xác
3 Quản lý tin tức CRUD
Tin tức về các chương trình học bổng
4 Quản lý học sinh/sinh viên CRUD
Thống kê, báo cáo các sinh viên đạt được học bổng
Gửi thông tin học bổng về cho các sinh viên
Danh sách các chức năng hệ thống
STT Nội dung Mô tả chi tiết
1 Phân quyền sử dụng - Công ty: được phép quản lý tài khoản
(chỉnh sửa tài khoản mật khẩu), đăng tin tức, các chương trình học bổng theo dõi sinh viên đăng ký và đã nhận học bổng
- Quản trị viên: có tất cả các quyền của công ty và xét duyệt các tin tức và các chương trình học bổng của các công ty
2 Sao lưu, back up, phục hồi thông tin
- Sao lưu toàn bộ cơ sở dữ liệu định kỳ, phục hồi khi có sự cố xảy ra.
Cơ sở lý thuyết
Next.js
Next.js is a powerful framework for building server-rendered or statically-exported web applications using React It offers essential features such as automatic code splitting, hot module replacement, and a straightforward page model, making it easier to develop robust applications.
For instance, Next.js can be utilized to create a static website or a server-rendered web application Additionally, it supports the development of serverless applications by employing Next.js's "export" mode to generate a static bundle from the built pages.
Laravel
Laravel là một framework PHP mạnh mẽ, được sử dụng rộng rãi để phát triển ứng dụng web Dựa trên kiến trúc Model-View-Controller (MVC), Laravel giúp đơn giản hóa quá trình phát triển ứng dụng Framework này cung cấp nhiều tính năng hữu ích, bao gồm hỗ trợ routing, ORM, middleware và các công cụ phát triển giao diện người dùng.
Laravel cung cấp nhiều công cụ hữu ích cho việc kiểm thử và triển khai, giúp nâng cao hiệu quả phát triển và bảo trì ứng dụng Ngoài ra, Laravel còn hỗ trợ nhiều loại cơ sở dữ liệu khác nhau, bao gồm MySQL, PostgreSQL và SQLite.
Laravel sở hữu một cộng đồng lập trình viên đông đảo và đa dạng, cung cấp nhiều gói và công cụ hỗ trợ phát triển ứng dụng Ngoài ra, Laravel còn có tài liệu và hướng dẫn chi tiết, giúp người mới dễ dàng học hỏi và sử dụng framework này.
Restful API
API đóng vai trò thiết yếu trong các ứng dụng hiện đại, tương tự như việc một máy tính không thể hoạt động hiệu quả nếu không có kết nối internet Qua thời gian, các tiêu chuẩn chung đã được hình thành, trong đó RESTful trở thành chuẩn mực quan trọng cho việc phát triển API.
Nguyên lý REST và cấu trúc dữ liệu RESTful đã trở thành những khái niệm phổ biến trong cộng đồng lập trình web và phát triển ứng dụng.
REST không phải là một công nghệ mà là phương thức tạo API dựa trên các nguyên lý tổ chức nhất định Những nguyên lý này giúp lập trình viên xây dựng môi trường xử lý yêu cầu API một cách toàn diện.
RESTful API là tiêu chuẩn thiết kế API cho ứng dụng web, giúp quản lý hiệu quả các tài nguyên như tệp văn bản, hình ảnh, âm thanh, video và dữ liệu động Tiêu chuẩn này tập trung vào các trạng thái tài nguyên được định dạng và truyền tải qua giao thức HTTP.
Các thành ph ầ n c ủ a RESTful API:
API (Giao diện lập trình ứng dụng) là tập hợp các quy tắc và cơ chế cho phép các ứng dụng hoặc thành phần tương tác với nhau Nó cung cấp dữ liệu cần thiết cho ứng dụng của bạn dưới các định dạng phổ biến như JSON hoặc XML.
REST (REpresentational State Transfer) là một kiến trúc API sử dụng phương thức HTTP để giao tiếp giữa các máy Thay vì chỉ sử dụng một URL để xử lý thông tin người dùng, REST gửi yêu cầu HTTP như GET, POST, DELETE đến một URL để quản lý và xử lý dữ liệu hiệu quả.
RESTful API là tiêu chuẩn thiết kế API cho ứng dụng web nhằm quản lý tài nguyên Đây là một trong những kiểu thiết kế API phổ biến hiện nay, cho phép các ứng dụng web và di động giao tiếp hiệu quả với nhau.
Chức năng quan trọng nhất của REST là quy định cách sử dụng các phương thức HTTP như GET, POST, PUT, DELETE và cách định dạng URL cho ứng dụng web nhằm quản lý các tài nguyên RESTful không quy định logic của mã ứng dụng và không bị giới hạn bởi ngôn ngữ lập trình, cho phép bất kỳ ngôn ngữ hoặc framework nào cũng có thể được sử dụng để thiết kế một RESTful API.
RESTful API ho ạt động như thế nào?
Hình ảnh: 5 Cách hoạt động của restful api
REST hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động cơ bản nêu trên sẽ sử dụng những phương thức HTTP riêng
GET (SELECT): Trả về một Resource hoặc một danh sách Resource
POST (CREATE): Tạo mới một Resource
PUT (UPDATE): Cập nhật thông tin cho Resource
DELETE (DELETE): Xoá một Resource
Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa
CSS, viết tắt của Cascading Style Sheets, là ngôn ngữ dùng để tìm kiếm và định dạng các phần tử do HTML tạo ra Nói một cách đơn giản, CSS là công cụ giúp tạo phong cách cho trang web, với HTML đảm nhiệm vai trò định dạng các phần tử trên website.
CSS cho phép chúng ta thêm kiểu dáng cho các phần tử HTML như thay đổi bố cục, màu sắc trang, màu chữ, font chữ và cấu trúc.
CSS được phát triển bởi W3C (World Wide Web Consortium) vào năm 1996, vì HTML không được thiết kế để gắn tag để giúp định dạng trang web
CSS hoạt động bằng cách tìm kiếm các vùng chọn, bao gồm tên thẻ HTML, ID, class và nhiều kiểu khác Sau khi xác định được vùng chọn, CSS sẽ áp dụng các thuộc tính cần thay đổi lên các phần tử đó.
HTML và CSS có mối quan hệ chặt chẽ, với HTML đóng vai trò là ngôn ngữ đánh dấu nền tảng cho trang web, trong khi CSS chịu trách nhiệm định hình phong cách và giao diện của nó Sự kết hợp giữa hai ngôn ngữ này là không thể tách rời, tạo nên một trải nghiệm người dùng hoàn chỉnh trên website.
Mô hình hóa yêu cầu
Lược đồ chức năng
Hình ảnh: 6 Lược đồ chức năng của quản trị viên
Hình ảnh: 7 Lược đồ chức năng của trường/ công ty
Hình ảnh: 8 Lược đồ chức năng của sinh viên
Thiết kế hệ thống
Thiết kế cơ sở dữ liệu
1.1 Lược đồ cơ sở dữ liệu
Hình ảnh: 9 Lược đồ cơ sở dữ liệu
1.2 Mô tả cơ sở dữ liệu
Hình ảnh: 15 Bảng save scholaship
Hình ảnh: 17 Bảng tag news
Hình ảnh: 19 Bảng tag scholaship
Hình ảnh: 20 Bảng user role
Thiết kế giao diện
- Trang tìm kiếm học bổng:
Hình ảnh: 23 Trang tìm kiếm
Hình ảnh: 24 Trang tin tức
- Trang quy định và điều khoản:
Hình ảnh: 25 Trang quy định và điều khoản
Hình ảnh: 27 Giao diện quản lý
Hình ảnh: 28 Trang quản lý tin tức
Hình ảnh: 29 Trang thêm tin tức
Hình ảnh: 30 Trang quản lý học bổng
Hình ảnh: 31 Trang quản lý trường/công ty
Hình ảnh: 32 Trang sinh viên cần tư vấn
Hình ảnh: 33 Trang sinh viên đã đăng ký
Cài đặt và kiểm thử hệ thống
Cài đặt
1 Cài XAMPP và mở port để mở phpmyadmin
Hình ảnh: 34 Cài đặt xampp
2 Vào phpadmin tạo cở sở dữ liệu giống với cấu hình file env scholaship- be
Hình ảnh: 35 Cấu hình env backend
3 Mở scholaship-be và chạy lệnh composer install, npm install để cài đặt các package cần thiết
4 Chạy lệnh php artisan migrate để add table vào cở sở dữ liệu
5 Chạy lệnh php artisan db:Seed UserSeeder để tạo tài khoản mặc định
6 Chạy lệnh php artisan serve để start be
7 Mở http://localhost:8000/admin để vào trang admin quản lý
1 Chạy lệnh npm íntall để cài đặt các package cần thiết
2 Chạy lệnh npm run dev để start fe
3 Mở http://localhost:3000/ để vào trang chủ
Kiểm thử phần mềm
Trưởng nhóm test sẽ thực hiện viết test plan cho toàn bộ hệ thông gồm các phần sau:
- Định nghĩa phạm vi kiểm thử
- Định nghĩa các chiến lược kiểm thử
- Nhận dạng các rủi ro và các yếu tố bất ngờ
- Nhận dạng các hoạt động kiểm thử và xây dựng lịch kiểm thử
- Nhận dạng môi trường kiểm thử
- Hiệu chỉnh trong suốt chu kỳ kiểm thử để phản ánh các thay đổi cần thiết
2.2 Quy trình thiết kế kiểm thử
Hình ảnh: 36 Quy trình kiểm thử
Trong quy trình này, TestManager sẽ xây dựng kế hoạch kiểm thử thông qua việc phân tích và đánh giá các yếu tố như phạm vi, chiến lược, rủi ro tiềm ẩn, các dạng kiểm thử và môi trường kiểm thử.
Dựa trên cơ sở đó, Test Analysis sẽ viết các testcase cho từng chức năng trong mỗi module một cách kỹ lưỡng, nhằm mục tiêu phát hiện lỗi trong từng module cũng như lỗi tổng thể của dự án.
Các TestCase sẽ được thực hiện trên các module cụ thể bởi từng Tester Trong giai đoạn chuẩn bị, Tester sử dụng mẫu prototype, use case và các đặc tả chức năng để viết TestCase theo trình tự từng bước một.
Trong quá trình thực hiện kiểm thử, Tester cần liên tục tạo báo cáo lỗi và gửi kết quả cho TestManager TestManager sẽ tổng hợp và đánh giá hoạt động kiểm thử, xác định xem các tiêu chí thành công đã được đáp ứng và liệu quá trình kiểm thử đã hoàn tất hay chưa.
Hình ảnh: 37 Quy trình chạy các bộ kiểm thử
Tester sẽ được bố trí công việc bởi Test Leader để thi hành kiểm thử theo quy trình cụ thể sau:
- Thi hành kiểm thử theo từng testcase cho từng module cụ thể
- Chạy lại các case bị failed trước đó để xác nhận là case đó đã được sửa
- So sách kết quả ghi nhận được khi thực thi với kết quả mong đợi
- Đánh giá kết quả kiểm thử (Passed/Failed) cho các trường hợp kiểm thử
- Viết báo cáo lỗi cho những trường hợp kết quả ghi nhận được và kết quả mong đợi không giống nhau
Những kiến thức đã đạt được
Sử dụng hiệu quả các công nghệ phần mềm và website hiện đại như Next.js, Laravel, JSON Web Token, RestfulAPI và CSS, cùng với việc nghiên cứu và áp dụng cơ sở dữ liệu MySQL, đã mang lại kết quả cao trong các dự án phát triển.
Để xây dựng thành công một website tìm kiếm việc làm, cần tích hợp các chức năng như đăng nhập và đăng ký tài khoản Quản trị viên sẽ có quyền hạn giống như người dùng thông thường, đồng thời có khả năng thêm, xóa và sửa đổi tài khoản người dùng, học bổng và tin tức Họ cũng có thể chỉnh sửa thông tin cá nhân, tìm kiếm người dùng và học bổng, đổi mật khẩu, cũng như thống kê số lượng học bổng hiện có.
Công ty: Đăng tin tức, học bổng cho sinh viên, xác nhận và tư vấn cho sinh viên đăng ký nhận học bổng
Cách hoạt động nhóm hiệu quả, linh hoạt các vị trí trong lĩnh vực công nghệ thông tin.
Ưu điểm
Ứng dụng các chức năng quản lý, kiểm soát dữ liệu đầu vào cũng như các dữ liệu đầu ra
Website có cấu trúc khá hoàn thiện, có khả năng bảo trì và nâng cấp
Giao diện thân thiện với người dung, dễ dàng sử dụng
Sử dụng các công nghệ Website hiện đại, có chia cấu trúc Frontend - Backend rõ ràng.
Nhược điểm
Chưa gửi email thông báo cho sinh viên và các bên liên quan khi xác nhận trao học bổng cho sinh viên.
Hướng phát triển
Deloy ứng dụng lên server thực
Tiến hành phân tích dữ liệu người dùng dựa trên các thông tin như đề xuất học bổng phù hợp cho sinh viên
Xây dựng tính năng chia sẽ, bình luận về học bổng.