CƠ SỞ LÝ THUYẾT
Ngôn ngữ lập trình
PHP là chữ viết tắt của “Personal Home Page” do Rasmus Lerdorf tạo ra năm
1994 Vì tính hữu dụng của nó và khả năng phát triển, PHP bắt đầu được sử dụng trong môi trường chuyên nghiệp và nó trở thành ”PHP:Hypertext Preprocessor” Thực chất PHP là ngôn ngữ kịch bản nhúng trong HTML, nói một cách đơn giản đó là một trang HTML có nhúng mã PHP, PHP có thể được đặt rải rác trong HTML PHP là một ngôn ngữ lập trình được kết nối chặt chẽ với máy chủ, là một công nghệ phía máy chủ (Server-Side) và không phụ thuộc vào môi trường (crossplatform) Đây là hai yếu tố rất quan trọng, thứ nhất khi nói công nghệ phía máy chủ tức là nói đến mọi thứ trong PHP đều xảy ra trên máy chủ, thứ hai, chính vì tính chất không phụ thuộc môi trường cho phép PHP chạy trên hầu hết trên các hệ điều hành như Windows, Unix và nhiều biến thể của nó Đặc biệt các mã kịch bản PHP viết trên máy chủ này sẽ làm việc bình thường trên máy chủ khác mà không cần phải chỉnh sửa hoặc chỉnh sửa rất ít Khi một trang web muốn được dùng ngôn ngữ PHP thì phải đáp ứng được tất cả các quá trình xử lý thông tin trong trang web đó, sau đó đưa ra kết quả ngôn ngữ HTML Khác với ngôn ngữ lập trình, PHP được thiết kế để chỉ thực hiện điều gì đó sau khi một sự kiện xảy ra (ví dụ, khi người dùng gửi một biểu mẫu hoặc chuyển tới một URL).
2.1.1.2 Lý do nên dùng PHP Để thiết kế web động có rất nhiều ngôn ngữ lập trình khác nhau để lựa chọn, mặc dù cấu hình và tính năng khác nhau nhưng chúng vẫn đưa ra những kết quả giống nhau Chúng ta có thể lựa chọn cho mình một ngôn ngữ: ASP, PHP, Java, Perl, và một số loại khác nữa Vậy tại sao chúng ta lại nên chọn PHP? Rất đơn giản, có những lí do sau mà khi lập trình web chúng ta không nên bỏ qua sự lựa chọn tuyệt vời này:
- PHP được sử dụng làm web động vì nó nhanh, dễ dàng, tốt hơn so với các giải pháp khác.
- PHP có khả năng thực hiện và tích hợp chặt chẽ với hầu hết các cơ sở dữ liệu có sẵn, tính linh động, bền vững và khả năng phát triển không giới hạn.
- Đặc biệt PHP là mã nguồn mở do đó tất cả các đặc tính trên đều miễn phí, và chính vì mã nguồn mở sẵn có nên cộng đồng các nhà phát triển web luôn có ý thức cải tiến nó, nâng cao để khắc phục các lỗi trong các chương trình này
- PHP vừa dễ với người mới sử dụng vừa có thể đáp ứng mọi yêu cầu của các lập trình viên chuyên nghiệp, mọi ý tuởng của các PHP có thể đáp ứng một cách xuất sắc.
Laravel là PHP Web Framework miễn phí, mã nguồn mở, được tạo bởi Taylor Otwell và dành cho việc phát triển các ứng dụng web theo mô hình kiến trúc mô hình MVC và dựa trên Symfony PHP Framework Một số tính năng của Laravel như là sử dụng hệ thống đóng gói module, quản lý package (Composer), hỗ trợ nhiều hệ quản trị CSDL quan hệ (MySQL, MariaDB, SQLite, PostgreSQL…), các tiện ích hỗ trợ triển khai và bảo trì ứng dụng.
Mã nguồn của Laravel được lưu trữ trên GitHub và được cấp phép theo các điều khoản của Giấy phép MIT.
- Ngôn ngữ lập trình: PHP
2.1.2.2 Ưu điểm của Laravel PHP Framework a) Sử dụng các tính năng mới nhất của PHP
Sử dụng Laravel giúp các lập trình viên tiếp cận những tính năng mới nhất mà PHP cung cấp, nhất là đối với Namespaces, Interfaces, Overloading, Anonymous functions và Shorter array syntax. b) Nguồn tài nguyên vô cùng lớn và sẵn có
Nguồn tài nguyên của Laravel rất thân thiện với các lập trình viên với đa dạng tài liệu khác nhau để tham khảo Các phiên bản được phát hành đều có nguồn tài liệu phù hợp với ứng dụng của mình. c) Tích hợp với dịch vụ mail
Lavarel là framework được trang bị API sạch trên thư viện SwiftMailer, do đó,bạn có thể gửi thư qua các dịch vụ dựa trên nền tảng đám mây hoặc local. d) Tốc độ xử lý nhanh
Laravel hỗ trợ hiệu quả cho việc tạo lập website hay các dự án lớn trong thời gian ngắn Vì vậy, nó được các công ty công nghệ và lập trình viên sử dụng rộng rãi để phát triển các sản phẩm của họ. e) Dễ sử dụng
Laravel được đón nhận và trở nên sử dụng phổ biến vì nó rất d sử dụng. Thường chỉ mất vài giờ, bạn có thể bắt đầu thực hiện một dự án nhỏ với vốn kiến thức cơ bản nhất về lập trình với PHP. f) Tính bảo mật cao
Laravel cung cấp sẵn cho người dùng các tính năng bảo mật mạnh mẽ để người dùng hoàn toàn tập trung vào việc phát triển sản phẩm của mình:
- Sử dụng PDO để chống lại tấn công SQL Injection.
- Sử dụng một field token ẩn để chống lại tấn công kiểu CSRF.
Mặc định đều được Laravel escape các biến được đưa ra view mặc định, do đó có thể tránh được tấn công XSS.
2.1.2.3 Mô hình MVC (Model – View – Controller) của Laravel
Laravel được phát triển từ Symfony Framework nên nó kế thừa mô hình MVC của Symfony, tương tự như các PHP Framework khác Dưới đây là mô hình đầy đủ của Laravel:
Hình 1: Mô hình MVC trong laravel
Model Gồm những Class, tạo ra các table của Database, nơi mà Eloquent
ORM thao tác với CSDL
View Chứa các template được thiết kế ra và được xử lý để output ra mã html/css cho trang web
Controller Chứa các class, function để xử lý các request từ người dùng
Vuejs được gọi tắt là Vue Vue.js là một framework rất linh động được dùng phổ biến để xây dựng nên các giao diện người dùng Hoàn toàn khác với các framework nguyên khối thì Vue thường sở hữu thiết kế từ đầu theo những hướng cho phép cũng như khuyến khích làm việc để phát triển dễ dàng hơn các ứng dụng theo từng bước một.
Một khi đã phát triển lớp giao diện (view layer) thì người dùng chỉ cần sử dụng loại thư viện lõi của Vue Ngoài ra, nếu như bạn kết hợp với các kỹ thuật thiên hướng hiện đại thì Vue cũng có thể đáp ứng được dễ dàng mọi nhu cầu xây dựng ứng dụng của một trang với độ phức tạp cao hơn.
2.1.3.2 Lý do nên sử dụng VueJS:
Hiện nay, Vue đang giữ số stars cao nhất trên 160k; trong số đó thì framework frontend đang giữ vị trí lần lượt hiện nay là React(> 146k) và Angular(> 59.2k) Dưới đây là một số lý do nên sử dụng Vuejs.
Hê quản trị cơ sở dữ liệu: MySQL Workbench
Một tập hợp nhiều dữ liệu sẽ được gọi là một cơ sở dữ liệu Có nhiều loại cơ sở dữ liệu khác nhau từ đơn giản đến phức tạp cũng như nhiều cách lưu trữ cơ sở dữ liệu, truyền thống nhất là trên văn bản, giấy tờ hoặc có thể lưu trữ bằng những phần mềm thông qua các tập tin.
Tuy nhiên, đối với những cơ sở dữ liệu khó và phức tạp như lập trình, chúng ta cần phải sử dụng hệ quản trị cơ sở dữ liệu Và MySQL là một hệ thống quản trị cơ sở dữ liệu nhưng có mã nguồn mở dùng để tạo và quản trị các cơ sở dữ liệu và được sử dụng với ngôn ngữ truy vấn có cùng một cấu trúc là Structured Query Language – viết tắt là SQL.
MySQL Workbench chính là một chương trình giúp cho người lập trình có thể giao tiếp với hệ cơ sở dữ liệu MySQL thay vì phải sử dụng các lệnh Command-line phức tạp và mất thời gian MySQL Workbench được thiết kế đơn giản, dễ sử dụng và có thể thích ứng với nhiều hệ điều hành như là Microsoft Windowns, Max OS, Linux hay Ubuntu.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Đặc tả yêu cầu phần mềm (Software Requirements)
- Xem lịch trả tài sản
- Xác nhận khi được giao tài sản
- Xem thông tin tài sản
- Chỉnh sửa thông tin tài sản
- Cập nhật yêu cầu giao trả tài sản
- Xác nhận tài sản đã được trả
- Cập nhật các loại tài sản
- Cập nhật các trạng thái của tài sản
- Cập nhật thông tin nhà cung cấp
3.1.3 Nhóm quản lý (COO, CTO, CEO)
- Xem thông tin tài sản
- Chỉnh sửa thông tin tài sản
- Cập nhật yêu cầu giao trả tài sản
- Xác nhận tài sản đã được trả
- Cập nhật các loại tài sản
- Cập nhật các trạng thái của tài sản
- Cập nhật thông tin nhà cung cấp
Sơ đồ Uscase
Kịch bản cho Use-case
3.3.1.1 Xác nhận nhận khi được giao tài sản
1 Use-Case Name Xác nhận nhận tài sản
2 Description Nhân viên xác nhận khi đã nhận được tài sản
4 Input Trạng thái tài sản đang chờ xác nhận
5 Output Trạng thái tài sản đã được xác nhận
4 Chọn "Confirm" với tài sản đã nhận
7 Alternative flow (nêu các bước phát sinh trong
Sau khi xác nhận thành công sẽ có mail thông báo gửi về cho workplace team.
8 Exception flow (Nêu các trường hợp ngoại lệ của
+ Đăng nhập lỗi (hết phiên đăng nhập) Đăng nhập lại
3.3.1.2 Xem lịch trả tài sản.
1 Use-Case Name Xem lịch trả tài sản
2 Description Nhân viên xem thời gian để giao trả tài sản trước thời hạn được yêu cầu từ Workplace team
5 Output Thời gian cần giao trả tài sản
4 Xem ngày cần trả tài sản
7 Alternative flow (nêu các bước phát sinh trong
8 Exception flow (Nêu các trường hợp ngoại lệ của
+ Đăng nhập lỗi (hết phiên đăng nhập) Đăng nhập lại
1 Use-Case Name Thêm tài sản mới
2 Description Workplace team thêm thông tin về tài sản mới được mua vào hệ thống
5 Output Thông tin tài sản sau khi thêm
4 Chọn “New” để thêm tài sản mới.
5 Điền các thông tin cần thiết: tên người sử dụng, tình trạng… mới.
7 Alternative flow (nêu các bước phát sinh trong
8 Exception flow (Nêu các trường hợp ngoại lệ của
+ Đăng nhập lỗi (hết phiên đăng nhập) Đăng nhập lại
+ Không điền/ điền thiếu Trang báo lỗi ở ô điền thiếu.
3.3.2.2 Chỉnh sửa thông tin tài sản
1 Use-Case Name Chỉnh sửa thông tin tài sản
2 Description Workplace team cập nhật những thông tin đã thay đổi của tài sản (người sử dụng, mã code, trạng thái…)
4 Input Form them chỉnh sửa
5 Output Thông tin tài sản sau khi chỉnh sửa
4 Click chuột vào tài sản cần chỉnh sửa thông tin
5 Thay đổi các thông tin cần thiết
6 Chọn “Update” để lưu thay đổi
7 Alternative flow (nêu các bước phát sinh trong
8 Exception flow (Nêu các trường hợp ngoại lệ của
+ Đăng nhập lỗi (hết phiên đăng nhập) Đăng nhập lại
+ Không điền/ điền thiếu Trang báo lỗi ở ô điền thiếu.
1 Use-Case Name Giao tài sản
2 Description Workplace team bàn giao tài sản cho nhân viên.
4 Input Form giao tài sản
5 Output Thông tin tài sản, người được giao, người giao.
4 Chọn tài sản cần giao.
5 Chọn tên nhân viên được giao.
6 Chọn “Assign” để giao tài sản.
7 Alternative flow (nêu các bước phát sinh trong
Sau khi xác nhận thành công sẽ có mail thông báo gửi về cho nhân viên.
8 Exception flow (Nêu các trường hợp ngoại lệ của
+ Đăng nhập lỗi (hết phiên đăng nhập) Đăng nhập lại
3.3.2.4 Yêu cầu trả tài sản.
1 Use-Case Name Yêu cầu trả tài sản
2 Description Workplace team tạo yêu cầu về thời gian giao trả tài sản của nhân viên
4 Input Form yêu cầu trả tài sản.
5 Output Thông tin tài sản, nhân viên đang sử dụng, ngày yêu cầu giao trả tài sản.
4 Chọn người muốn yêu cầu trả tài sản.
5 Chọn tài sản nhân viên đó cần trả.
7 Chọn “Return” để tạo yêu cầu.
7 Alternative flow (nêu các bước phát sinh trong Sau khi xác nhận thành công sẽ có mail thông báo gửi về cho nhân viên.
8 Exception flow (Nêu các trường hợp ngoại lệ của
+ Đăng nhập lỗi (hết phiên đăng nhập) Đăng nhập lại
3.3.2.5 Xác nhận tài sản đã được trả
1 Use-Case Name Xác nhận tài sản đã được trả
2 Description Workplace team xác nhận khi đã nhận được tài sản mà nhân viên giao trả
4 Input Tình trạng tài sản đang đợi xác nhận đã trả
5 Output Tình trạng tài sản đã trả
4 Chọn nhân viên đã trả tài sản
5 Chọn “Confirm” với tài sản đã.
7 Alternative flow (nêu các bước phát sinh trong
Sau khi xác nhận thành công sẽ có mail thông báo gửi về cho nhân viên.
8 Exception flow (Nêu các trường hợp ngoại lệ của
3.3.3 Nhóm quản lý (CEO, CTO, COO)
1 Use-Case Name Xóa tài sản
2 Description Nhóm quản lý (CEO, CTO, COO) xóa những tài sản đã không thể sử dụng được nữa, đã bán, đã mất…
3 Actors Nhóm quản lý (CEO, CTO, COO)
4 Input Thông tin tài sản cần xóa
5 Output Tài sản đã được xóa
4 Click chuột vào tài sản cần xóa
5 Xác nhận để xóa tài sản.
7 Alternative flow (nêu các bước phát sinh trong
8 Exception flow (Nêu các trường hợp ngoại lệ của
+ Đăng nhập lỗi (hết phiên đăng nhập) Đăng nhập lại
3.4.1.1 Xác nhận khi được giao tài sản
Hình 4: Sơ đồ hoạt động Nhân viên xác nhận khi được giao tài sản
3.4.1.2 Xem lịch trả tài sản
Hình 5: Sơ đồ hoạt động Nhân xem lịch trả tài sản 3.4.2 Workplace Team
3.4.2.2 Chỉnh sửa thông tin tài sản
Hình 7: Sơ đồ hoạt động workplace team chỉnh sửa thông tin tài sản3.4.2.3 Giao tài sản
3.4.2.4 Yêu cầu trả tài sản
Hình 9: Sơ đồ hoạt động workplace team yêu cầu trả tài sản
3.4.2.5 Xác nhận tài sản đã trả
Hình 10: Sơ đồ hoạt động workplace team xác nhận tài sản đã trả 3.4.3 Nhóm quản lý (CEO, CTO, COO)
Hình 11: Sơ đồ hoạt động nhóm quản lý xóa tài sản
Sơ đồ Tuần tự Sequence
3.5.1.1 Xác nhận khi đã được giao tài sản
Hình 12: Sơ đồ tuần tự Nhân viên xác nhận khi đã nhận tài sản 3.5.2 Workplace Team
3.5.2.2 Chỉnh sửa thông tin tài sản
Hình 14: Sơ đồ tuần tự Workplace Team chỉnh sửa thông tin tài sản 3.5.2.3 Giao tài sản
Hình 15: Sơ đồ tuần tự Workplace Team giao tài sản
3.5.2.4 Yêu cầu trả tài sản
Hình 16: Sơ đồ tuần tự Workplace Team yêu cầu trả tài sản. 3.5.2.5 Xác nhận tài sản đã trả
Hình 17: Sơ đồ tuần tự Workplace Team xác nhận tài sản đã được trả
3.5.3 Nhóm quản lý (CEO, CTO, COO)
Hình 18: Sơ đồ tuần tự nhóm quản lý xóa tài sản
Thiết kế cơ sở dữ liệu
Tên trường Kiểu dữ liệu Mô tả Ràng buộc id int Khóa chính name string Tên nhân viên email string Email của nhân viên password string Mật khẩu team_id int Id của team đang quản lý người sử dụng tài sản
Khóa ngoại (Tham chiếu tới bảng Team)
User_status_id int Id trạng thái tài khoản của nhân viên
Khóa ngoại (Tham chiếu tới bảng User_status)
Tên trường Kiểu dữ liệu Mô tả Ràng buộc id int Khóa chính name string Tên team
Tên trường Kiểu dữ liệu Mô tả Ràng buộc id int Khóa chính name string Tên quyền hạn
Tên trường Kiểu dữ liệu Mô tả Ràng buộc id int Khóa chính name string Tên loại tài sản code string Mã loại tài sản note string Mô tả về loại tài
Tên trường Kiểu dữ liệu Mô tả Ràng buộc id int Khóa chính name string Tên trạng thái tài note string sảnMô tả về trạng thái của tài sản
Tên trường Kiểu dữ liệu Mô tả Ràng buộc id int Khóa chính name string Tên nhà cung cấp note string address string Địa chỉ nhà cung phone string cấpSố điện thoại nhà cung cấp
Tên trường Kiểu dữ liệu Mô tả Ràng buộc id int Khóa chính name string Tên trạng thái return của tài sản note string Mô tả
Tên trường Kiểu dữ liệu Mô tả Ràng buộc id int Khóa chính name string Tên tài sản code string Mã tài sản category_id int Id loại tài sản Khóa ngoại (Tham chiếu tới bảng Categories) asset_status_id int Id trạng thái của tài sản Khóa ngoại (Tham chiếu tới bảng Asset_status) vendor_id int Id nhà cung cấp Khóa ngoại (Tham chiếu tới bảng Vendor) current_user_id int Id người đang sử dụng tài sản Khóa ngoại (Tham chiếu tới bảng User) team_id int Id của team đang quản lý người sử dụng tài sản
Khóa ngoại (Tham chiếu tới bảng Team) cost Tiền tệ Giá của tài sản
Tên trường Kiểu dữ liệu Mô tả Ràng buộc id int Khóa chính request_date Date time Ngày giao tài note string sảnMô tả
Asset_id int Id tài sản Khóa ngoại (Tham chiếu tới bảng Asset)
Category_id int Id loại tài sản Khóa ngoại (Tham chiếu tới bảng categories)
Requester_id int Id người giao tài sản Lấy từ session
User_id int Id người đang sử dụng tài sản Khóa ngoại (Tham chiếu tới bảng User) Assign_return_status_id int Id trạng thái return của tài sản
Khóa ngoại (Tham chiếu tới bảng Asset_return_status)
Tên trường Kiểu dữ liệu Mô tả Ràng buộc id int Khóa chính request_date Date time Ngày cần trả tài note string sảnMô tả
Asset_id int Id tài sản Khóa ngoại (Tham chiếu tới bảng Asset)
Category_id int Id loại tài sản Khóa ngoại (Tham chiếu tới bảng categories)
Requester_id int Id người giao tài sản Lấy từ session
User_id int Id người đang sử dụng tài sản Khóa ngoại (Tham chiếu tới bảng User) Assign_return_status_id int Id trạng thái return của tài sản
Khóa ngoại (Tham chiếu tới bảng Asset_return_status)
Hình 19: Sơ đồ tuần ERD
KẾT QUẢ TRIỂN KHAI HỆ THỐNG WEBSITE
Nhân viên (Personnel)
Hình 21: Giao diện sau khi login với tài khoản nhân viên bình thường
Hình 22: Giao diện xem thông tin về lịch trả tài sản
Hình 23: Giao diện xác nhận khi được giao tài sản.
Hình 25: Mail thông báo khi nhân viên được giao tài sản
Nhóm quản lý (CEO, CTO, COO)
Hình 26: Giao diện xóa tài sản
Hình 27: Giao diện xác nhận để xóa tài sản