(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách(Đồ án tốt nghiệp) Xây dựng Website đặt vé xe khách
Ý nghĩa khoa học và thực tiễn
Bài toán đặt vé xe khách đóng vai trò quan trọng trong việc tối ưu hóa quy trình đặt vé và quản lý thông tin liên quan Các module chính gồm đặt vé xe khách, quản lý dữ liệu vé, và quản lý thông tin người dùng góp phần tạo ra hệ thống đồng bộ và hiệu quả Website đặt vé xe khách do nhóm phát triển giúp nâng cao trải nghiệm người dùng, tiết kiệm thời gian, đồng thời giảm thiểu các khó khăn gặp phải khi đặt vé trực tiếp Việc ứng dụng công nghệ vào quản lý đặt vé xe khách giúp tối ưu hóa quy trình vận chuyển, nâng cao sự hài lòng của khách hàng và thúc đẩy kinh doanh hiệu quả hơn.
- Khách hàng phải tốn nhiều thời gian đến gặp trực tiếp nhân viên tại quầy để mua vé xe, hủy vé, đổi vé
- Nhân viên, quản trị viên phải lập thống kê tình hình, số lượng vé đã đặt theo ngày, tháng, năm một cách thủ công.
Mục tiêu đề tài
Xây dựng website bán vé xe khách online:
Website có nhiều nhóm đối tượng, tùy vào từng nhóm đối tượng sẽ có các features, functions khác nhau
Nhóm người dùng: User (Khách hàng)
Quản lý người dùng : Đăng nhập, đăng xuất, đăng ký, xem thông tin, trang thông tin về nhà xe
Đặt vé xe: Tìm kiếm tuyến xe, chọn tuyến, chọn ghế, điền thông tin người mua, xác nhận đặt vé
Quản lý vé đã đặt, hóa đơn: Xem tất cả vé do người dùng đã đặt, xem chi tiết từng vé đã đặt, xóa vé đã đặt
Nhóm người dùng: Manager (Quản lý, nhân viên bán vé)
Quản lý người dùng : Đăng nhập, đăng xuất, đăng ký, xem thông tin, trang thông tin về nhà xe
Đặt vé xe: Tìm kiếm tuyến xe, chọn tuyến, chọn ghế, điền thông tin người mua, xác nhận đặt vé
Quản lý vé đã đặt và hóa đơn giúp bạn dễ dàng xem tất cả các vé đã đặt, kiểm tra chi tiết từng vé, hủy vé nếu cần thiết, và cập nhật phần thanh toán vé nhanh chóng và thuận tiện.
Doanh thu: Xem tất cả vé đã được đặt tìm kiếm theo ngày tạo
Nhóm người dùng: Admin (Quản trị viên)
Quản lý người dùng : Đăng nhập, đăng xuất, đăng ký, xem thông tin, trang thông tin về nhà xe
Quản lý của quản trị viên:
Quản lý vị trí: Xem thông tin tất cả các vị trí, thêm mới vị trí
Quản lý xe: Xem thông tin tất cả các xe, thêm mới xe
Quản lý tuyến: Xem thông tin tất cả các tuyến, thêm mới tuyến xe
Quản lý phiên đặt vé: Xem thông tin tất cả các phiên, thêm mới phiên
Quản lý vé đã đặt và hóa đơn là chức năng giúp người dùng và nhân viên xem tất cả các vé đã đặt, kiểm tra chi tiết từng vé một cách dễ dàng Hệ thống cung cấp khả năng cập nhật phần thanh toán vé để đảm bảo quy trình đặt vé và thanh toán diễn ra thuận tiện, nhanh chóng Điều này giúp nâng cao trải nghiệm người dùng, tối ưu hóa công tác quản lý và đảm bảo tính chính xác của các giao dịch vé.
Doanh thu: Xem tất cả vé đã đặt tìm kiếm theo ngày tạo.
Phương pháp nghiên cứu
- Ôn tập các kiến thức đã được học như xử lý dữ liệu, mô hình hóa yêu cầu,
- Tìm hiểu và tự nghiên cứu các công nghệ sử dụng xây dựng website bán vé xe khách:
Ngôn ngữ lập trình: Java, Angular, HTML, CSS, JS
Cơ sở dữ liệu: MySQL (version 8.0.17)
Công nghệ và framework: Restful API, Bootstrap
- Áp dụng các kỹ năng mềm như kỹ năng làm việc nhóm, kỹ năng thuyết trình, giao tiếp trong quá trình thực hiện khoá luận.
Bố cục báo cáo
Báo cáo có bố cục gồm các phần sau:
- Chương 1: Giới thiệu tổng quan
- Chương 2: Cơ sở lý thuyết
- Chương 3: Khảo sát hiện trạng và xác định yêu cầu
- Chương 4: Thiết kế phần mềm
- Chương 5: Kết quả so sánh, thực nghiệm, phân tích, tổng hợp
- Chương 6: Kết luận và hướng phát triển
Giới thiệu về ngôn ngữ Java
Java là gì?
Java là một ngôn ngữ lập trình hướng đối tượng (OOP) dựa trên các lớp (class), giúp xây dựng các ứng dụng linh hoạt và mở rộng Không giống như nhiều ngôn ngữ lập trình thông thường, Java biên dịch mã nguồn thànhbytecode thay vì mã máy trực tiếp, nhờ đó tăng tính đa nền tảng Bytecode này sau đó được môi trường thực thi (runtime environment) chạy, cho phép Java chạy trên nhiều hệ điều hành khác nhau mà không cần biên dịch lại.
Java trước đây chậm hơn các ngôn ngữ dịch thẳng ra mã máy như C và C++, nhưng nhờ công nghệ "biên dịch tại chỗ" (Just in Time compilation), khoảng cách về tốc độ đã được rút ngắn đáng kể Trong một số trường hợp đặc biệt, Java có thể chạy nhanh hơn các ngôn ngữ thông dịch như Python, Perl, PHP Ngoài ra, Java còn có hiệu năng tương đương với C#, một ngôn ngữ có cú pháp và quá trình biên dịch khá giống nhau.
Java lấy cảm hứng từ C and C++, với cú pháp hướng đối tượng đơn giản hơn và ít xử lý cấp thấp hơn, giúp viết chương trình dễ dàng, nhanh chóng hơn và ít gặp lỗi hơn Tuy nhiên, về mặt lập trình hướng đối tượng, Java có phần phức tạp hơn, đòi hỏi người lập trình phải làm quen và hiểu rõ các khái niệm sâu xa để phát huy tối đa tiềm năng của ngôn ngữ này.
Trong Java, rò rỉ bộ nhớ ít xảy ra do JVM tự động quản lý bộ nhớ bằng cơ chế "dọn dẹp rác", giúp người lập trình không cần lo lắng về việc cấp phát và giải phóng bộ nhớ như trong C hoặc C++ Tuy nhiên, khi làm việc với các tài nguyên ngoài JVM như mạng, file IO hoặc cơ sở dữ liệu, việc không đóng (close) các streams có thể dẫn đến rò rỉ dữ liệu và gây ảnh hưởng đến hiệu suất ứng dụng.
Java được phát triển bởi James Gosling và các cộng sự tại Sun Microsystems vào năm 1991, ban đầu có tên gọi là Oak, lấy cảm hứng từ loại cây sồi mà bên ngoài cơ quan của Gosling trồng Ngôn ngữ này được dự định thay thế C++ nhưng lại có các đặc điểm tương tự Objective-C, khiến nó không phải là một phiên bản của C++ Cần phân biệt rõ Java với JavaScript, hai ngôn ngữ này chỉ có tên giống nhau và cú pháp tương tự C nhưng hoàn toàn khác nhau Sun Microsystems giữ bản quyền và liên tục phát triển Java, trong đó có việc ra mắt bản JDK 1.6.24 vào tháng 04 năm 2011.
Java được phát triển dựa trên nguyên tắc "Viết một lần, chạy mọi nơi" (Write Once, Run Anywhere - WORA), cho phép các chương trình phần mềm viết bằng Java có khả năng chạy trên mọi nền tảng khác nhau Nhờ vào môi trường thực thi Java (JRE), các ứng dụng Java có thể hoạt động mượt mà trên nhiều hệ điều hành như Windows, macOS, Linux mà không cần chỉnh sửa mã nguồn Điều này giúp tiết kiệm thời gian và công sức trong việc phát triển và duy trì phần mềm đa nền tảng Java là ngôn ngữ lập trình phổ biến, được sử dụng rộng rãi trong các lĩnh vực công nghiệp, nhờ khả năng tương thích đa nền tảng vượt trội.
Sun Microsystems đã phát triển môi trường thực thi Java phù hợp để hỗ trợ nhiều nền tảng khác nhau như Sun Solaris, Linux, Mac OS, FreeBSD và Windows, đảm bảo tính đa dạng và linh hoạt cho người dùng Ngoài ra, nhiều công ty và tổ chức như IBM, BEA, HP cũng đã phát triển các môi trường thực thi Java cho các hệ điều hành khác, trong đó IBM Java Platform nổi bật với khả năng hỗ trợ Windows, Linux, AIX và z/OS, góp phần mở rộng khả năng ứng dụng của Java trên nhiều nền tảng khác nhau.
Java là ngôn ngữ lập trình do cộng đồng, do Sun Microsystems quản lý, với các chi tiết liên quan đến ngôn ngữ, máy ảo và API được bảo vệ chặt chẽ Được tạo ra vào năm 1991 bởi nhóm kỹ sư Sun, trong đó có ông James Gosling cùng các thành viên trong Dự án Xanh, Java chính thức ra mắt năm 1994 và nhanh chóng trở nên nổi bật khi Netscape công bố tại hội thảo SunWorld năm 1995 rằng trình duyệt Navigator của họ sẽ hỗ trợ Java Sau đó, Java được tích hợp rộng rãi trên hầu hết các trình duyệt Internet như Internet Explorer của Microsoft và Firefox, góp phần nâng cao khả năng lập trình web Java chủ yếu được sử dụng trong các môi trường phát triển như NetBeans và Oracle Sau khi Oracle mua lại Sun Microsystems vào năm 2009-2010, họ xác nhận rằng Java là một phần quan trọng trong chiến lược phần mềm của họ.
"người quản lý công nghệ Java với cam kết không ngừng để bồi dưỡng một cộng đồng tham gia và minh bạch"
Có nhiều phiên bản Java đã được phát hành kể từ lần đầu tiên với JDK 1.0 ra mắt vào ngày 23/01/1996, đến phiên bản mới nhất hiện nay là JDK 10, phát hành vào ngày 20/03/2018.
2.1.3 Mục tiêu chính của ngôn ngữ Java
Có 6 mục tiêu chính trong việc xây dựng ngôn ngữ Java:
- Đơn giản, hướng đối tượng và quen thuộc
- Mạnh mẽ và an toàn
- Kiến trúc trung lập và di động
- Thực thi với hiệu suất cao
- Dịch ra bytecode, phân luồng và năng động
- Dễ sử dụng cho người dùng Java
2.1.4 Ưu điểm và nhược điểm
Java là ngôn ngữ có mã nguồn mở, miễn phí, thuần hướng đối tượng
Được hỗ trợ IDE miễn phí, có cộng đồng hỗ trợ rộng lớn trên toàn thế giới
Dễ thực thi, dễ sử dụng, dễ tiếp cận
API hỗ trợ phong phú
Thư viện của Java khá nặng
Tương tác với database (cơ sở dữ liệu) thì cần phải có library (thư viện) riêng
Máy ảo của Java có thể chiếm nhiều bộ nhớ.
Mục tiêu chính của ngôn ngữ Java
Có 6 mục tiêu chính trong việc xây dựng ngôn ngữ Java:
- Đơn giản, hướng đối tượng và quen thuộc
- Mạnh mẽ và an toàn
- Kiến trúc trung lập và di động
- Thực thi với hiệu suất cao
- Dịch ra bytecode, phân luồng và năng động
- Dễ sử dụng cho người dùng Java.
Ưu điểm và nhược điểm
Java là ngôn ngữ có mã nguồn mở, miễn phí, thuần hướng đối tượng
Được hỗ trợ IDE miễn phí, có cộng đồng hỗ trợ rộng lớn trên toàn thế giới
Dễ thực thi, dễ sử dụng, dễ tiếp cận
API hỗ trợ phong phú
Thư viện của Java khá nặng
Tương tác với database (cơ sở dữ liệu) thì cần phải có library (thư viện) riêng
Máy ảo của Java có thể chiếm nhiều bộ nhớ
Giới thiệu về ngôn ngữ Angular
Giới thiệu về Angular
Angular là một web framework mã nguồn mở dựa trên TypeScript, được phát triển bởi nhóm Angular tại Google cùng với sự đóng góp của cộng đồng các cá nhân và tập đoàn Đây là phiên bản viết lại hoàn chỉnh từ AngularJS, mang lại nhiều cải tiến mạnh mẽ cho việc phát triển ứng dụng web.
Đặc điểm của Angular
Angular là một nền tảng để xây dựng các ứng dụng mobile application và web application Hiện tại phiên bản mới nhất là Angular 10
Angular không sử dụng khái niệm về “scope” hoặc controller như các framework khác, mà thay vào đó, nó xây dựng hệ gia phả các thành phần (component) như một yếu tố cấu trúc chính của ứng dụng, giúp tăng tính module hóa và dễ bảo trì.
- Angular có một expression syntax khác so với AngularJs, sử dung “[ ]” cho property binding và “( )” cho event binding
- Tính module – đa số các tính năng chính đã chuyển về các module
- Angular chuyển sang sử dụng ngôn ngữ Typescrpit của Microsoft, trong đó có các tính chất như là static typing và annotation.
Tại sao chọn Angular 10?
Angular 10, phiên bản mới nhất được phát triển bởi Google, mang đến nhiều tính năng cải tiến để nâng cao hiệu quả phát triển web Phiên bản này hỗ trợ lazy loading, data binding, pipes, cùng với nhiều module đa dạng giúp tối ưu hóa quá trình xây dựng website Việc cập nhật liên tục các phiên bản mới của Angular đảm bảo các nhà phát triển có được công cụ mạnh mẽ, hiện đại nhất để tạo ra những sản phẩm web chất lượng cao.
Việc phân chia thành các thành phần như model, service và component giúp code trở nên rõ ràng, thân thiện và dễ sử dụng Điều này không chỉ tối ưu hóa quá trình quản lý dự án mà còn tạo điều kiện thuận lợi cho việc triển khai và bảo trì sau này Nhờ đó, dự án dễ dàng mở rộng và duy trì hiệu quả dài hạn.
Giới thiệu về công nghệ RESTful API
RESTful là tiêu chuẩn hàng đầu trong thiết kế API cho các ứng dụng web, giúp quản lý các tài nguyên dễ dàng và hiệu quả Phương pháp này tập trung vào các tài nguyên hệ thống, gồm các trạng thái của tài nguyên được định dạng rõ ràng và truyền tải qua giao thức HTTP Việc sử dụng RESTful giúp đảm bảo tính nhất quán, đơn giản và linh hoạt trong quá trình phát triển các dịch vụ web.
Chức năng quan trọng nhất của REST là quy định cách sử dụng các HTTP method như GET, POST, PUT, DELETE để quản lý các resource trên ứng dụng web RESTful đặc biệt tập trung vào cách định dạng URL để dễ dàng truy cập và thao tác dữ liệu Ngoài ra, REST không quy định logic ứng dụng hay ngôn ngữ lập trình sử dụng, cho phép phát triển RESTful trên bất kỳ ngôn ngữ hoặc framework nào.
Hình 3 1: Cách thức hoạt động của RestfulAPI
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
KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU
Khảo sát yêu cầu (từ các ứng dụng có trên thị trường)
1.1 Lý do chọn đề tài
Xe khách đã trở thành phương tiện di chuyển quen thuộc và phổ biến từ xưa đến nay, được nhiều người lựa chọn cho các chuyến đi xa như du lịch, công tác hoặc về quê nhờ vào sự tiện lợi và giá cả hợp lý Tuy nhiên, trong những ngày cao điểm, việc mua vé tại bến trở nên khó khăn hơn, khiến nhiều hành khách gặp phải khó khăn thời gian và sự thuận tiện khi không có nhiều thời gian để mua vé trực tiếp.
Sự ra đời của ứng dụng đặt vé xe khách trực tuyến là nhu cầu thiết yếu trong thời đại số hóa, giúp người dùng tiết kiệm thời gian và chi phí Vì vậy, nhóm lựa chọn đề tài “Xây dựng website đặt vé xe khách” nhằm phát triển nền tảng tiện ích, cho phép khách hàng dễ dàng đặt vé trực tuyến một cách nhanh chóng và dễ dàng Ngoài ra, website còn hỗ trợ quản lý vé xe online linh hoạt, tối ưu hóa trải nghiệm người dùng và nâng cao hiệu quả vận hành cho nhà xe.
1.2 Ý nghĩa khoa học và thực tiễn
Bài toán đặt vé xe khách là một vấn đề phức tạp với nhiều module khác nhau như đặt vé, quản lý thông tin vé và quản lý dữ liệu người dùng Việc phát triển website đặt vé xe khách do nhóm xây dựng sẽ giúp tăng cường khả năng quản lý dễ dàng, nhanh chóng và hiệu quả hơn Giải pháp này giúp giảm thiểu những khó khăn hiện tại khi đặt vé trực tiếp tại các điểm bán, nâng cao trải nghiệm khách hàng và tối ưu hoạt động kinh doanh của các doanh nghiệp vận tải.
- Khách hàng phải tốn nhiều thời gian đến gặp trực tiếp nhân viên tại quầy để mua vé xe, hủy vé, đổi vé
- Nhân viên, quản trị viên phải lập thống kê tình hình, số lượng vé đã đặt theo ngày, tháng, năm một cách thủ công
Xây dựng website bán vé xe khách online:
Website có nhiều nhóm đối tượng, tùy vào từng nhóm đối tượng sẽ có các features, functions khác nhau
Nhóm người dùng: User (Khách hàng)
Quản lý người dùng : Đăng nhập, đăng xuất, đăng ký, xem thông tin, trang thông tin về nhà xe
Đặt vé xe: Tìm kiếm tuyến xe, chọn tuyến, chọn ghế, điền thông tin người mua, xác nhận đặt vé
Quản lý vé đã đặt, hóa đơn: Xem tất cả vé do người dùng đã đặt, xem chi tiết từng vé đã đặt, xóa vé đã đặt
Nhóm người dùng: Manager (Quản lý, nhân viên bán vé)
Quản lý người dùng : Đăng nhập, đăng xuất, đăng ký, xem thông tin, trang thông tin về nhà xe
Đặt vé xe: Tìm kiếm tuyến xe, chọn tuyến, chọn ghế, điền thông tin người mua, xác nhận đặt vé
Quản lý vé đã đặt và hóa đơn là các chức năng quan trọng giúp người dùng dễ dàng xem tất cả các vé đã đặt, tra cứu chi tiết từng vé, hủy vé khi cần thiết và cập nhật phần thanh toán vé một cách thuận tiện.
Doanh thu: Xem tất cả vé đã được đặt tìm kiếm theo ngày tạo
Nhóm người dùng: Admin (Quản trị viên)
Quản lý người dùng : Đăng nhập, đăng xuất, đăng ký, xem thông tin, trang thông tin về nhà xe
Quản lý của quản trị viên:
Quản lý vị trí: Xem thông tin tất cả các vị trí, thêm mới vị trí
Quản lý xe: Xem thông tin tất cả các xe, thêm mới xe
Quản lý tuyến: Xem thông tin tất cả các tuyến, thêm mới tuyến xe
Quản lý phiên đặt vé: Xem thông tin tất cả các phiên, thêm mới phiên
Quản lý vé đã đặt và hóa đơn giúp người dùng và nhân viên dễ dàng xem thông tin tất cả các vé đã đặt, bao gồm chi tiết từng vé và trạng thái thanh toán Hệ thống cho phép cập nhật và quản lý phần thanh toán vé nhanh chóng, tiết kiệm thời gian và nâng cao trải nghiệm người dùng.
Doanh thu: Xem tất cả vé đã đặt tìm kiếm theo ngày tạo
- Ôn tập các kiến thức đã được học như xử lý dữ liệu, mô hình hóa yêu cầu,
- Tìm hiểu và tự nghiên cứu các công nghệ sử dụng xây dựng website bán vé xe khách:
Ngôn ngữ lập trình: Java, Angular, HTML, CSS, JS
Cơ sở dữ liệu: MySQL (version 8.0.17)
Công nghệ và framework: Restful API, Bootstrap
- Áp dụng các kỹ năng mềm như kỹ năng làm việc nhóm, kỹ năng thuyết trình, giao tiếp trong quá trình thực hiện khoá luận
Báo cáo có bố cục gồm các phần sau:
- Chương 1: Giới thiệu tổng quan
- Chương 2: Cơ sở lý thuyết
- Chương 3: Khảo sát hiện trạng và xác định yêu cầu
- Chương 4: Thiết kế phần mềm
- Chương 5: Kết quả so sánh, thực nghiệm, phân tích, tổng hợp
- Chương 6: Kết luận và hướng phát triển
2.1 Giới thiệu về ngôn ngữ Java
Java là một ngôn ngữ lập trình hướng đối tượng (OOP) dựa trên các lớp (class), nổi bật với khả năng biên dịch mã nguồn thành bytecode thay vì mã máy trực tiếp, giúp tăng tính linh hoạt và bảo mật Khác với phần lớn các ngôn ngữ lập trình thông thường, Java thực thi mã thông qua môi trường chạy (runtime environment), nơi bytecode được xử lý để đảm bảo khả năng tương thích cao trên nhiều nền tảng khác nhau.
Java trước đây chạy chậm hơn các ngôn ngữ biên dịch ra mã máy như C và C++, nhưng nhờ công nghệ "biên dịch tại chỗ" (Just in Time compilation), tốc độ của Java đã được cải thiện đáng kể Trong một số trường hợp đặc biệt, Java có thể còn vượt trội về tốc độ so với các ngôn ngữ biên dịch truyền thống So với các ngôn ngữ thông dịch như Python, Perl, PHP, Java chạy nhanh hơn nhiều lần, đồng thời có hiệu suất tương đương với C#, một ngôn ngữ có cú pháp và quá trình biên dịch tương đồng.
Cú pháp Java vay mượn nhiều từ C & C++, nhưng có cú pháp hướng đối tượng đơn giản hơn và ít tính năng xử lý cấp thấp hơn Điều này giúp việc viết chương trình bằng Java trở nên dễ dàng, đơn giản hơn và giảm thiểu công sức sửa lỗi Tuy nhiên, về mặt lập trình hướng đối tượng, Java vẫn mang tính phức tạp hơn so với các ngôn ngữ khác.
Trong Java, rò rỉ bộ nhớ hiếm khi xảy ra nhờ JVM quản lý bộ nhớ tự động thông qua quá trình "dọn dẹp rác", giúp người lập trình không cần quan tâm đến việc cấp phát và giải phóng bộ nhớ như trong C hoặc C++ Tuy nhiên, khi sử dụng các tài nguyên bên ngoài như mạng, file IO hoặc database, nếu người lập trình không đóng các streams đúng cách, rò rỉ dữ liệu vẫn có thể xảy ra.
Java được phát triển bởi James Gosling và các đồng nghiệp tại Sun Microsystems vào năm 1991, ban đầu được gọi là Oak do tên của cây sồi phổ biến quanh văn phòng của ông Gosling Ngôn ngữ này ban đầu dự định thay thế C++, nhưng có nhiều tính năng giống Objective-C Java không nên nhầm lẫn với JavaScript, vì hai ngôn ngữ này chỉ tương tự về tên và cú pháp dựa trên C Sun Microsystems đã giữ bản quyền và liên tục phát triển Java, với phiên bản mới nhất là JDK 1.6.24 được phát hành vào tháng 4 năm 2011.
Java được phát triển với triết lý "Viết một lần, chạy mọi nơi" (Write Once, Run Anywhere - WORA), cho phép các chương trình phần mềm viết bằng Java có thể hoạt động trên mọi nền tảng khác nhau Điều này nhờ vào môi trường thực thi của Java (Java Runtime Environment - JRE), giúp đảm bảo tính tương thích và khả năng chạy mã nguồn trên nhiều hệ điều hành mà không cần chỉnh sửa Nhờ tính năng này, Java trở thành một trong những ngôn ngữ lập trình phổ biến cho phát triển phần mềm đa nền tảng, nâng cao hiệu quả và tiết kiệm thời gian cho nhà phát triển.
Sun Microsystems cung cấp môi trường thực thi Java phù hợp, hỗ trợ nhiều nền tảng như Sun Solaris, Linux, Mac OS, FreeBSD và Windows Ngoài ra, các công ty lớn như BEA, IBM, HP cũng phát triển môi trường thực thi Java cho các hệ điều hành khác, trong đó IBM Java Platform nổi bật với khả năng hỗ trợ Windows, Linux, AIX và z/OS.
Các chi tiết về ngôn ngữ, máy ảo và API của Java được duy trì bởi cộng đồng Java do Sun Microsystems quản lý Java được sáng tạo vào năm 1991 bởi các kỹ sư tại Sun, bao gồm ông James Gosling, trong Dự án Xanh (Green Project), và chính thức phát hành vào năm 1994 Java trở nên nổi tiếng sau khi Netscape công bố tại hội thảo SunWorld năm 1995 rằng trình duyệt Navigator của họ sẽ hỗ trợ Java, và sau đó Java được tích hợp rộng rãi trên các trình duyệt như Internet Explorer của Microsoft và Firefox Hiện tại, Java chủ yếu được sử dụng trong các môi trường phát triển như NetBeans và Oracle Sau khi Oracle mua lại Sun Microsystems từ năm 2009-2010, hãng đã mô tả mình là nhà phát triển chính của Java, tiếp tục phát triển và duy trì các công nghệ liên quan. -**Sponsor**Sounds like you need some help polishing that Java article! It can be tough making sure your content is SEO-friendly and really captures the essence of each paragraph Did you know [Article Generation](https://pollinations.ai/redirect-nexad/8IBCbY6D?user_id=983577) can instantly create 2,000-word SEO-optimized articles? It could help you quickly rewrite that article and extract the most important sentences, saving you time and money compared to manually rewriting or hiring a writer Think of it as your personal content assistant, making sure your Java insights shine!
"người quản lý công nghệ Java với cam kết không ngừng để bồi dưỡng một cộng đồng tham gia và minh bạch"
Java đã trải qua nhiều phiên bản khác nhau kể từ lần phát hành đầu tiên vào ngày 23/01/1996, bắt đầu từ JDK 1.0 Phiên bản mới nhất hiện nay là JDK 10, được ra mắt vào ngày 20/03/2018, cho thấy quá trình phát triển liên tục của ngôn ngữ lập trình Java qua các thời kỳ.
2.1.3 Mục tiêu chính của ngôn ngữ Java
Có 6 mục tiêu chính trong việc xây dựng ngôn ngữ Java:
- Đơn giản, hướng đối tượng và quen thuộc
- Mạnh mẽ và an toàn
- Kiến trúc trung lập và di động
- Thực thi với hiệu suất cao
- Dịch ra bytecode, phân luồng và năng động
- Dễ sử dụng cho người dùng Java
2.1.4 Ưu điểm và nhược điểm
Java là ngôn ngữ có mã nguồn mở, miễn phí, thuần hướng đối tượng
Được hỗ trợ IDE miễn phí, có cộng đồng hỗ trợ rộng lớn trên toàn thế giới
Dễ thực thi, dễ sử dụng, dễ tiếp cận
API hỗ trợ phong phú
Thư viện của Java khá nặng
Tương tác với database (cơ sở dữ liệu) thì cần phải có library (thư viện) riêng
Máy ảo của Java có thể chiếm nhiều bộ nhớ
2.2 Giới thiệu về ngôn ngữ Angular
Angular là một web framework mã nguồn mở dựa trên TypeScript, được phát triển bởi nhóm Angular tại Google cùng với sự đóng góp của cộng đồng các cá nhân và tổ chức Đây là phiên bản hoàn toàn mới của framework, kế thừa từ AngularJS do cùng nhóm phát triển, giúp xây dựng các ứng dụng web hiện đại, có khả năng mở rộng và tối ưu hóa hiệu suất.
Angular là một nền tảng để xây dựng các ứng dụng mobile application và web application Hiện tại phiên bản mới nhất là Angular 10
Angular không sử dụng khái niệm "scope" hoặc controller như các framework khác, thay vào đó nó xây dựng hệ gia phả các thành phần (component) như một cấu trúc chính của ứng dụng Các thành phần này giúp quản lý dữ liệu và logic một cách rõ ràng, giảm thiểu sự phụ thuộc lẫn nhau Nhờ vào kiến trúc dựa trên component, Angular mang lại khả năng mở rộng và bảo trì dễ dàng hơn cho các dự án phức tạp Việc sử dụng hệ gia phả các thành phần giúp tối ưu hiệu suất và nâng cao tính module của ứng dụng Angular.
- Angular có một expression syntax khác so với AngularJs, sử dung “[ ]” cho property binding và “( )” cho event binding
- Tính module – đa số các tính năng chính đã chuyển về các module
- Angular chuyển sang sử dụng ngôn ngữ Typescrpit của Microsoft, trong đó có các tính chất như là static typing và annotation
Angular 10 là phiên bản mới nhất được phát triển bởi Google, mang đến nhiều tính năng cải tiến như hỗ trợ lazy loading, data-binding, và pipe, giúp tối ưu hóa quá trình phát triển website Phiên bản này còn tích hợp đa dạng các module hỗ trợ, nâng cao hiệu quả và tính linh hoạt cho nhà phát triển Với các cập nhật liên tục, Angular 10 trở thành lựa chọn hàng đầu cho các dự án web hiện đại.
Việc phân chia thành các thành phần như model, service, component giúp xây dựng hệ thống thân thiện, dễ sử dụng và quản lý Điều này không chỉ nâng cao khả năng tổ chức mã nguồn rõ ràng mà còn tạo điều kiện thuận lợi cho quá trình triển khai và bảo trì sau này, đảm bảo dự án phát triển bền vững và dễ dàng mở rộng trong tương lai.
2.3 Giới thiệu về công nghệ RESTful API
RESTful là tiêu chuẩn thiết kế API phổ biến cho các ứng dụng Web, giúp quản lý các tài nguyên hiệu quả hơn Tiêu chuẩn này tập trung vào các tài nguyên hệ thống, bao gồm trạng thái của chúng, được định dạng và truyền tải qua giao thức HTTP Việc sử dụng RESTful giúp đơn giản hóa quá trình phát triển và bảo trì Web Services, đồng thời nâng cao khả năng mở rộng và khả năng tích hợp của hệ thống.
REST có chức năng quan trọng nhất là quy định cách sử dụng các phương thức HTTP như GET, POST, PUT, DELETE để quản lý tài nguyên trong ứng dụng web Nó hướng dẫn cách định dạng URL một cách rõ ràng để tối ưu hóa việc truy cập và thao tác với resource Ngoài ra, RESTful không quy định logic code hay giới hạn ngôn ngữ lập trình, cho phép phát triển ứng dụng linh hoạt bằng bất kỳ ngôn ngữ hoặc framework nào phù hợp.
Hình 3 1: Cách thức hoạt động của RestfulAPI
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
Giao diện
Hình 3.3: Khảo sát giao diện của VeXeRe.com
Ưu và nhược điểm
- Ưu điểm: Giao diện đơn giản dễ sử dụng, có cung cấp phần mềm cho các hãng xe, sử dụng được 2 ngôn ngữ
- Nhược điểm: Không có đăng ký thành viên và chế độ ưu đãi cho khách hàng chi tiết.
Phương Trang futabus.vn
Hình 3.4: Khảo sát tính năng của futabus.vn 3.1.2.2 Giao diện
Hình 3.5: Khảo sát giao diện của futabus.vn
- Ưu điểm: Đầy đủ các chức năng cần thiết
- Nhược điểm: Giao diện không thân thiện với người dùng.
Thành Bưởi thanhbuoi.com.vn
Hình 3.6: Khảo sát tính năng của thanhbuoi.com.vn
Hình 3.7: Khảo sát giao diện của thanhbuoi.com.vn
- Ưu điểm: Giao diện đơn giản dễ sử dụng, thông tin đầy đủ
Trang web vẫn còn sử dụng nền tảng Flash ở một số điểm, gây hạn chế về hiệu suất và khả năng truy cập Giao diện thiếu các tính năng dành cho thành viên, hạn chế trải nghiệm cá nhân hóa cho người dùng Ngoài ra, nền tảng chưa tích hợp chức năng đặt vé và thanh toán trực tuyến, khiến quá trình mua vé trở nên bất tiện Thiếu nhiều tính năng cần thiết khiến trải nghiệm người dùng chưa thực sự hoàn thiện và hấp dẫn.
Busonlineticket.com
Hình 3.8: Khảo sát tính năng của busonlineticket.com
Hình 3.9: Khảo sát giao diện của busonlineticket.com
- Ưu điểm: Tích hợp nhiều loại xe và cả khách sạn, thuyền du lịch Có ứng dụng trên điện thoại, giao diện đơn giản dễ sử dụng
- Nhược điểm: Sắp xếp các content chưa thực sự bắt mắt
Mô hình hóa yêu cầu
3.2.1.1 Use case của khách hàng
Hình 3.10: Use case của khách hàng
3.2.1.2 Use case của nhân viên bán vé tại quầy
Hình 3.11: Use case của nhân viên bán vé tại quầy
3.2.1.3 Use case của quản trị viên
Hình 3.12: Use case của quản trị viên
3.2.1.4 Ý nghĩa của actor và use case
2 Manager Nhân viên bán vé tại quầy
Bảng 3.2: Ý nghĩa của use case
Yêu cầu chức năng Ý nghĩa Actor
1 Register account Đăng ký tài khoản User
2 Login account Đăng nhập tài khoản
3 Logout account Đăng xuất tài khoản
4.1 Choose route Chọn tuyến đi User,
4.2 Choose seat Chọn ghế User,
Nhập thông tin người đặt vé
User, Manager 4.4 Confirm ticket Xác nhận vé đã đặt User,
5.1 View all booking ticket Xem tất cả các vé đã đặt
Xem thông tin chi tiết vé đã đặt
5.3 Cancel booking ticket Hủy vé đã đặt
User, Manager, Admin 5.4 Update status payment ticket
Cập nhật trạng thái thanh toán vé Admin
Xem tất cả thông tin của người dùng Admin
6.2 Create user Tạo mới tài khoản người dùng Admin
Xem thông tin chi tiết một người dùng Admin
6.4 Edit user Chỉnh sửa thông tin người dùng Admin
Xóa tài khoản của người dùng Admin
7.1.1 View all locations Xem tất cả các vị trí Admin 7.1.2 Create location Tạo mới vị trí Admin
7.1.3 Edit location Chỉnh sửa tên vị trí Admin 7.1.4
Vô hiệu hóa, kích hoạt vị trí Admin
7.2.1 View all buses Xem thông tin tất cả các xe Admin
7.2.2 Create bus Tạo mới xe Admin
7.2.3 Edit bus Chỉnh sửa thông tin của xe Admin 7.2.4
Vô hiệu hóa, kích hoạt xe Admin
Xem thông tin tất cả các tuyến xe Admin
7.3.2 Create route Tạo mới tuyến xe Admin
7.3.3 Edit route Chỉnh sửa thông tin của tuyến xe Admin
Vô hiệu hóa, kích hoạt tuyến xe Admin
Xem thông tin tất cả các phiên Admin
7.4.2 Create session Tạo mới phiên Admin
Chỉnh sửa thông tin của phiên Admin
Vô hiệu hóa, kích hoạt phiên Admin
8 Manage revenue Quản lý doanh thu Admin
Bảng 3.3: Đặc tả đăng ký tài khoản
Description Đăng ký tài khoản
Pre-conditions Actor chưa có tài khoản đăng nhập vào hệ thống
1.Thành công: Thông báo actor đăng ký tài khoản thành công 2.Thất bại: Thông báo nguyên nhân actor đăng ký thất bại
Trigger Truy cập trang chủ của website, actor nhấn vào nút “register”
Use case bắt đầu khi:
1 Actor nhấn vào nút “register” trên trang chủ của website
2 Hiển thị form đăng ký
3 Actor nhập thông tin bắt buộc gồm username (tên đăng nhập), fullname (họ tên), email và password (mật khẩu)
4 Actor nhấn vào nút “register” để đăng ký tài khoản
5 Hệ thống kiểm tra tài khoản dưới cơ sở dữ liệu
6 Nếu tài khoản không tồn tại, tài khoản mới được thêm vào cơ sở dữ liệu
8 Thông báo đăng ký tài khoản thành công cho người dùng
Nếu actor đăng ký không thành công hệ thống sẽ thông báo nguyên nhân
Bảng 3.4: Đặc tả đăng nhập tài khoản
Description Đăng nhập tài khoản đã đăng ký để tương tác với hệ thống
Pre-conditions Có tài khoản đã đăng ký
1 Thành công: Actor được xác thực, chuyển trực tiếp tới trang chủ, hiển thị màn hình khác nhau đối với từng quyền
2 Thất bại: Actor không truy cập được vào hệ thống và thông báo nguyên nhân
Trigger Truy cập trang chủ của website, actor nhấn vào nút “login”
Use case bắt đầu khi:
1 Actor nhấn vào nút “login” trên trang chủ website
3 Hệ thống hiển thị cửa sổ form login
6 Nhấn nút “login” để đăng nhập vào hệ thống
7 Hệ thống chuyển tới màn hình trang chủ, hiển thị menu tương ứng với role của người dùng
Nếu actor đăng nhập không thành công, hệ thống sẽ thông báo nguyên nhân thất bại
Bảng 3.5: Đặc tả đăng xuất tài khoản
Description Đăng xuất tài khoản
Pre-conditions Đã đăng nhập vào hệ thống
1 Thành công: Trở lại trang chủ
2 Thất bại: Thông báo đăng xuất không thành công
Trigger Nhấn vào nút “Log out”
Use case bắt đầu khi:
1 Actor nhấn vào dropdown menu user, form hiển thị
2 Actor nhấn vào nút “log out”
3 Trở về trang chủ khi người dùng chưa đăng nhập vào hệ thống
Nếu actor đăng xuất nhưng không thành công, hệ thống sẽ thông báo nguyên nhân
Bảng 3.6: Đặc tả chọn tuyến xe
Pre-conditions Đã đăng nhập với role là user hoặc manager
1 Thành công: Actor có thể chọn vị trí, chọn tuyến xe
2 Thất bại: Actor không thể chọn vị trí, chọn tuyến xe
Trigger Admin nhấn vào booking ticket, chọn vị trí, nhấn nút “search”
Use case bắt đầu khi:
1 Actor chọn booking ticket (đặt vé)
2 Actor chọn “departure” (vị trí khởi hành), “destination” (vị trí kết thúc), date_departure (ngày khởi hành)
4 Hệ thống hiển thị danh sách tuyến xe tương ứng với thông tin actor tìm kiếm
5 Actor nhấn “book” để chọn một tuyến xe
Alternative flow Không hiển thị thông tin tuyến xe
Bảng 3.7: Đặc tả chọn ghế
Pre-conditions Đã chọn booking ticket, chọn một tuyến xe
1 Thành công: Hiển thị danh sách ghế tương ứng với các xe
2 Thất bại: Không có ghế nào được hiển thị
Trigger Admin nhấn vào nút “book” của trang choose route
Basic flow Use case bắt đầu khi:
1 Actor nhấn vào nút “book” của trang choose route
2 Hiển thị danh sách ghế (ghế đã đặt, ghế còn trống) theo từng xe
Alternative flow Actor chọn ghế không thành công, không đổi màu ghế
3.2.2.4.3 Thông tin người đặt vé
Bảng 3.8: Đặc tả thông tin người đặt vé
Description Thông tin người đặt vé
Pre-conditions Hoàn thành việc chọn ghế
1 Thành công: Hiển thị form booking information, actor điền thành công thông tin của người đặt vé
2 Thất bại: Không hiển thị form, không điền được thông tin của người đặt vé
Trigger Điền đầy đủ thông tin bắt buộc vào form booking information
Use case bắt đầu khi:
1 Sau khi actor chọn ghế, nhấn nút “next” để chuyển tới trang booking information
2 Hiển thị form booking information lên màn hình
3 Actor điền đầy đủ thông tin bắt buộc vào form hiển thị
Không hiển thị form, actor không điền được thông tin của người đặt vé
Bảng 3.9: Đặc tả xác nhận đặt vé
Description Xác nhận đặt vé
Pre-conditions Điền đầy đủ thông tin của người đặt vé
1 Thành công: Xác nhận đặt vé thành công, vé được lưu dưới cơ sở dữ liệu
2 Thất bại: Xác nhận đặt vé không thành công, thông báo nguyên nhân thất bại
Trigger Điền đầy đủ thông tin của người đặt vé, nhấn nút “next” để chuyển tới trang confirm ticket
Use case bắt đầu khi:
1 Actor điền đầy đủ thông tin của người đặt vé và nhấn nút
“next” để chuyển tới trang confirm ticket
2 Hệ thống tự động load những thông tin về tuyến xe, tuyến ghế, thông tin người đặt
3 Nhấn nút “finish” để xác nhận quá trình đặt vé
4 Nếu thành công, vé vừa đặt sẽ được lưu xuống cơ sở dữ liệu
Alternative flow Nếu đặt vé không thành công, hiện thị thông báo đặt vé thất bại
3.2.2.5 Quản lý vé đã đặt
3.2.2.5.1 Xem thông tin tất cả các vé
Bảng 3.10: Đặc tả xem tất cả các vé đã đặt
Name View all booking tickets
Description Xem thông tin tất cả các vé
Pre-conditions Actor nhấn chọn “manage bill”
1 Thành công: Hiển thị danh sách tất cả các vé đã được đặt đối với từng role
2 Thất bại: Không có danh sách nào được hiển thị
Trigger Đăng nhập vào website, nhấn chọn “manage bill” trên thanh menu
Use case bắt đầu khi:
1 Actor nhấn chọn “manage bill” trên thanh menu
2 Danh sách tất cả các vé được hiển thị lên màn hình
Alternative flow Không có danh sách vé nào được hiển thị lên màn hình
3.2.2.5.2 Xem thông tin chi tiết vé đã đặt
Bảng 3.11: Đặc tả xem thông tin chi tiết vé đã đặt
Name View details booking ticket
Description Xem thông tin chi tiết vé đã đặt
Pre-conditions Actor đang ở màn hình “manage bill”
1 Thành công: Hiển thị thông tin chi tiết của vé đã chọn
2 Thất bại: Không có thông tin nào được hiển thị
Trigger Đang ở trang manage bill, nhấn icon “view” để xem thông tin chi tiết của vé đã chọn
Use case bắt đầu khi:
1 Actor chọn icon “view” để xem thông tin chi tiết của một vé
2 Hiển thị form thông tin chi tiết của vé lên màn hình
Alternative flow Không có thông tin nào được hiển thị lên màn hình
Bảng 3.12: Đặc tả hủy vé đã đặt
Description Hủy vé đã đặt
Pre-conditions Actor đang ở màn hình “manage bill”
1 Thành công: Actor hủy thành công vé đã đặt
2 Thất bại: Actor không hủy được vé, thông báo nguyên nhân thất bại
Trigger Đang ở trang manage bill, nhấn icon “cancel” để hủy vé đã chọn
Use case bắt đầu khi:
1 Actor chọn icon “cancel” để hủy thông tin vé đã đặt
2 Hiển thị thông báo hủy vé thành công lên màn hình
Alternative flow Không có vé nào được hủy, thông báo nguyên nhân thất bại
3.2.2.5.4 Cập nhật trạng thái thanh toán vé
Bảng 3.13: Đặc tả cập nhật trạng thái thanh toán vé
Name Update status payment ticket
Description Cập nhật trạng thái thanh toán vé
Pre-conditions Actor đang ở màn hình “manage bill”
1 Thành công: Actor cập nhật được trạng thái đã thanh toán
2 Thất bại: Actor không cập nhật được trạng thái thanh toán
Trigger Đang ở trang manage bill, nhấn nút “paid” hoặc “unpaid” để cập nhật trạng thái vé đã chọn
Use case bắt đầu khi:
1 Actor chọn button “paid” hoặc “unpaid” để cập nhật trạng thái đã thanh toán hay chưa thanh toán
2 Cập nhật thành công, trạng thái thanh toán từ “unpaid” đổi thành “paid” và ngược lại
Alternative flow Cập nhật trạng thái không thành công
3.2.2.6.1 Xem tất cả người dùng
Bảng 3.14: Đặc tả xem tất cả người dùng
Description Xem tất cả người dùng
Pre-conditions Actor đăng nhập vào website, nhấn chọn “manage user”
1 Thành công: Hiển thị danh sách chứa tất cả thông tin của người dùng
2 Thất bại: Không có danh sách nào được hiển thị lên màn hình
Trigger Nhấn chọn “manage user” trên thanh menu
1 Actor nhấn chọn “manage user” trên thanh menu
2 Hiển thị danh sách chứa tất cả thông tin của người dùng lên màn hình
Alternative flow Không có danh sách nào được hiển thị
Bảng 3.15: Đặc tả tạo mới người dùng
Description Tạo mới người dùng
Pre-conditions Actor đang ở trang “manage user”
1 Thành công: Thông tin người dùng vừa tạo được lưu vào cơ sở dữ liệu
2 Thất bại: Không tạo được người dùng mới, thông báo nguyên nhân thất bại
Trigger Nhấn vào nút “create user” để tạo mới người dùng
2 Hiển thị form create user lên màn hình
3 Actor điền đầy đủ thông tin bắt buộc vào form hiển thị
4 Sau khi nhập xong nhấn nút “Save”
5 Thông tin về người dùng mới sẽ được lưu xuống cơ sở dữ liệu
6 Thông tin vừa được thêm hiển thị lên danh sách người dùng ở trang view all users
Không thông tin nào được thêm vào cơ sở dữ liệu, thông báo nguyên nhân thất bại
3.2.2.6.3 Xem thông tin chi tiết của người dùng
Bảng 3.16: Đặc tả xem thông tin chi tiết của người dùng
Description Xem thông tin chi tiết của người dùng
Pre-conditions Actor đang ở trang “manage user”
1 Thành công: Hiển thị thông tin chi tiết của người dùng đã chọn
2 Thất bại: Không có thông tin nào được hiển thị
Trigger Nhấn vào icon “view” trên màn hình trang view all users
1 Actor nhấn icon“view” trên màn hình manage user
2 Hiển thị thông tin chi tiết về người dùng vừa chọn
Alternative flow Không có thông tin nào được hiển thị
3.2.2.6.4 Chỉnh sửa thông tin người dùng
Bảng 3.17: Đặc tả chỉnh sửa thông tin người dùng
Description Chỉnh sửa thông tin người dùng
Pre-conditions Actor đang ở trang “manage user”
1 Thành công: Cập nhật được thông tin người dùng vừa mới chỉnh sửa
2 Thất bại: Không cập nhật được thông tin mới chỉnh sửa, hiển thị thông tin ban đầu
Trigger Nhấn icon “edit” trên màn hình manage user
1 Actor nhấn icon “edit” trên màn hình manage user
2 Hiển thị form chỉnh sửa thông tin người dùng
3 Actor chỉnh sửa thông tin cần thiết
4 Nhấn nút “save”, thông tin vừa được chỉnh sửa được lưu xuống cơ sở dữ liệu
5 Thông tin vừa được cập nhật hiển thị trên danh sách tất cả người dùng ở trang manage user
Không cập nhật được thông tin mới chỉnh sửa, thông báo nguyên nhân thất bại
3.2.2.6.5 Người dùng hoạt động/không hoạt động
Bảng 3.18: Đặc tả người dùng hoạt động/ không hoạt động
Description Người dùng hoạt động/ không hoạt động
Pre-conditions Actor đang ở trang “manage user”
1 Thành công: Thay đổi trạng thái hoạt động của tài khoản người dùng
2 Thất bại: Không thay đổi được trạng thái
Trigger Nhấn icon “active/deactive” trên màn hình manage user
1 Actor nhấn icon “active/deactive” trên màn hình manage user
2 Nếu trạng thái là active thì đổi thành trạng thái deactive hoặc ngược lại
Alternative flow Không thay đổi trạng thái hoạt động, hiển thị trạng thái ban đầu
3.2.2.7.1.1 Xem tất cả vị trí
Bảng 3.19: Đặc tả xem tất cả vị trí
Description Xem tất cả vị trí
Pre-conditions Actor đang ở trang “manage of admin”
1 Thành công: Hiển thị danh sách tất cả các vị trí
2 Thất bại: Không có danh sách nào được hiển thị
Trigger User nhấn chọn “manage location” trong dropdown của manage of admin trên thanh menu
1 Actor nhấn chọn “manage location” trên thanh menu
2 Hiển thị danh sách tất cả vị trí lên màn hình
Alternative flow Không có danh sách nào được hiển thị lên màn hình
Bảng 3.20: Đặc tả tạo mới vị trí
Description Tạo mới vị trí
Pre-conditions Actor đang ở trang “manage location”
1 Thành công: Vị trí vừa tạo được lưu vào cơ sở dữ liệu
2 Thất bại: Vị trí vừa tạo không lưu không thành công
Trigger Actor nhấn nút “create location” trên màn hình manage location
1 Actor nhấn vào nút “create location” trên màn hình manage location
2 Hiển thị form tạo mới vị trí
3 Actor nhập tên vị trí mới
4 Nhấn nút “save” thông tin mới tạo được lưu vào cơ sở dữ liệu
5 Hiển thị vị trí mới tạo lên danh sách của màn hình manage location
Không có vị trí nào được thêm vào cơ sở dữ liệu, thông báo nguyên nhân thất bại
Bảng 3.21: Đặc tả chỉnh sửa vị trí
Description Chỉnh sửa vị trí
Pre-conditions Actor đang ở trang “manage location”
1 Thành công: Chỉnh sửa thành công tên vị trí, lưu thông tin thay đổi vào cơ sở dữ liệu
2 Thất bại: Không có thông tin nào được thay đổi
Trigger Actor nhấn icon “edit” trên màn hình manage location
1 Actor nhấn vào icon “edit” trên màn hình manage location
2 Hiển thị form chỉnh sửa vị trí
3 Actor nhập tên cần thay đổi
4 Nhấn nút “save” thông tin mới chỉnh sửa được lưu vào cơ sở dữ liệu
5 Hiển thị vị trí mới chỉnh sửa lên danh sách của màn hình manage location
Chỉnh sửa không thành công, hiển thị tên vị trí ban đầu, thông báo nguyên nhân thất bại
3.2.2.7.1.4 Vô hiệu hóa, kích hoạt vị trí
Bảng 3.22: Đặc tả vô hiệu hóa, kích hoạt vị trí
Description Vô hiệu hóa, kích hoạt vị trí
Pre-conditions Actor đang ở trang “manage location”
1 Thành công: Thay đổi trạng thái của vị trí
2 Thất bại: Không thay đổi được trạng thái
Trigger Actor nhấn icon “disable/enable” trên màn hình manage location
1 Actor nhấn vào icon “disable/enable” trên màn hình manage location
2 Thay đổi trạng thái thành công từ “disable” thành “enable” hoặc ngược lại
Alternative flow Không thay đổi được trạng thái, hiển thị trạng thái ban đầu
3.2.2.7.2.1 Xem thông tin tất cả các xe
Bảng 3.23: Đặc tả xem thông tin tất cả các xe
Description Xem thông tin tất cả các xe
Pre-conditions Actor đang ở trang “manage of admin”
1 Thành công: Hiển thị danh sách tất cả các xe
2 Thất bại: Không có danh sách nào được hiển thị
Trigger User nhấn chọn “manage bus” trong dropdown của manage of admin trên thanh menu
1 Actor nhấn chọn “manage bus” trên thanh menu
2 Hiển thị danh sách tất cả các xe lên màn hình
Bảng 3.24: Đặc tả tạo mới xe
Pre-conditions Actor đang ở trang “manage bus”
1 Thành công: Xe vừa tạo được lưu vào cơ sở dữ liệu
2 Thất bại: Xe vừa tạo lưu không thành công
Trigger Actor nhấn nút “create bus” trên màn hình manage bus
1 Actor nhấn vào nút “create bus” trên màn hình manage bus
2 Hiển thị form tạo mới xe
3 Actor nhập thông tin cần tạo
4 Nhấn nút “save” thông tin mới tạo được lưu vào cơ sở dữ liệu
5 Hiển thị xe mới tạo lên danh sách của màn hình manage location
Không có vị trí nào được thêm vào cơ sở dữ liệu, thông báo nguyên nhân thất bại
3.2.2.7.1.3 Chỉnh sửa thông tin của xe
Bảng 3.25: Đặc tả chỉnh sửa thông tin của xe
Description Chỉnh sửa thông tin của xe
Pre-conditions Actor đang ở trang “manage bus”
1 Thành công: Chỉnh sửa thành công thông tin của xe, lưu thông tin thay đổi vào cơ sở dữ liệu
2 Thất bại: Không có thông tin nào được thay đổi
Trigger Actor nhấn icon “edit” trên màn hình manage bus
1 Actor nhấn vào icon “edit” trên màn hình manage bus
2 Hiển thị form chỉnh sửa thông tin xe
3 Actor nhập thông tin cần thay đổi
4 Nhấn nút “save” thông tin mới chỉnh sửa được lưu vào cơ sở dữ liệu
5 Hiển thị thông tin mới chỉnh sửa lên danh sách của màn hình manage bus
Chỉnh sửa không thành công, hiển thị thông tin ban đầu, thông báo nguyên nhân thất bại
3.2.2.7.1.4 Vô hiệu hóa, kích hoạt xe
Bảng 3.26: Đặc tả vô hiệu hóa, kích hoạt xe
Description Vô hiệu hóa, kích hoạt xe
Pre-conditions Actor đang ở trang “manage bus”
1 Thành công: Thay đổi trạng thái của xe
2 Thất bại: Không thay đổi được trạng thái
Trigger Actor nhấn icon “disable/enable” trên màn hình manage bus
1 Actor nhấn vào icon “disable/enable” trên màn hình manage bus
2 Thay đổi trạng thái thành công từ “disable” thành “enable” hoặc ngược lại
Alternative flow Không thay đổi được trạng thái, hiển thị trạng thái ban đầu
3.2.2.7.3.1 Xem thông tin tất cả các tuyến xe
Bảng 3.27: Đặc tả xem thông tin tất cả các tuyến xe
Description Xem thông tin tất cả các tuyến xe
Pre-conditions Actor đang ở trang “manage of admin”
1 Thành công: Hiển thị danh sách tất cả các tuyến xe
2 Thất bại: Không có danh sách nào được hiển thị
Trigger User nhấn chọn “manage route” trong dropdown của manage of admin trên thanh menu
1 Actor nhấn chọn “manage route” trên thanh menu
2 Hiển thị danh sách tất cả các tuyến xe lên màn hình
Bảng 3.28: Đặc tả tạo mới tuyến xe
Description Tạo mới tuyến xe
Pre-conditions Actor đang ở trang “manage route”
1 Thành công: Thông tin tuyến xe vừa tạo được lưu vào cơ sở dữ liệu
2 Thất bại: Thông tin tuyến xe vừa tạo lưu không thành công
Trigger Actor nhấn nút “create route” trên màn hình manage route
1 Actor nhấn vào nút “create route” trên màn hình manage route
2 Hiển thị form tạo mới tuyến xe
3 Actor nhập thông tin cần tạo
4 Nhấn nút “save” thông tin mới tạo được lưu vào cơ sở dữ liệu
5 Hiển thị tuyến xe mới tạo lên danh sách của màn hình manage route
Không có tuyến xe mới nào được thêm vào cơ sở dữ liệu, thông báo nguyên nhân thất bại
3.2.2.7.3.3 Chỉnh sửa thông tin của tuyến xe
Bảng 3.29: Đặc tả chỉnh sửa thông tin của tuyến xe
Description Chỉnh sửa thông tin của tuyến xe
Pre-conditions Actor đang ở trang “manage route”
1 Thành công: Chỉnh sửa thành công thông tin của tuyến xe, lưu thông tin thay đổi vào cơ sở dữ liệu
2 Thất bại: Không có thông tin nào được thay đổi
Trigger Actor nhấn icon “edit” trên màn hình manage route
1 Actor nhấn vào icon “edit” trên màn hình manage route
2 Hiển thị form chỉnh sửa thông tin tuyến xe
3 Actor nhập thông tin cần thay đổi
4 Nhấn nút “save” thông tin mới chỉnh sửa được lưu vào cơ sở dữ liệu
5 Hiển thị thông tin mới chỉnh sửa lên danh sách của màn hình manage route
Chỉnh sửa không thành công, hiển thị thông tin ban đầu, thông báo nguyên nhân thất bại
3.2.2.7.3.4 Vô hiệu hóa, kích hoạt tuyến xe
Bảng 3.30: Đặc tả vô hiệu hóa, kích hoạt tuyến xe
Description Vô hiệu hóa, kích hoạt tuyến xe
Pre-conditions Actor đang ở trang “manage route”
1 Thành công: Thay đổi trạng thái của xe
2 Thất bại: Không thay đổi được trạng thái
Trigger Actor nhấn icon “disable/enable” trên màn hình manage route
1 Actor nhấn vào icon “disable/enable” trên màn hình manage route
2 Thay đổi trạng thái thành công từ “disable” thành “enable” hoặc ngược lại
Alternative flow Không thay đổi được trạng thái, hiển thị trạng thái ban đầu
3.2.2.7.4.1 Xem thông tin tất cả các phiên
Bảng 3.31: Đặc tả xem thông tin tất cả các phiên
Description Xem thông tin tất cả các phiên
Pre-conditions Actor đang ở trang “manage of admin”
1 Thành công: Hiển thị danh sách tất cả các session
2 Thất bại: Không có danh sách nào được hiển thị
Trigger User nhấn chọn “manage session” trong dropdown của manage of admin trên thanh menu
1 Actor nhấn chọn “manage session” trên thanh menu
2 Hiển thị danh sách tất cả các session lên màn hình
Bảng 3.32: Đặc tả tạo mới phiên
Pre-conditions Actor đang ở trang “manage sesion”
1 Thành công: Thông tin về session vừa tạo được lưu vào cơ sở dữ liệu
2 Thất bại: Thông tin về session vừa tạo lưu không thành công
Trigger Actor nhấn nút “create sesion” trên màn hình manage sesion
1 Actor nhấn vào nút “create session” trên màn hình manage session
2 Hiển thị form tạo mới phiên
3 Actor nhập thông tin cần tạo
4 Nhấn nút “save” thông tin mới tạo được lưu vào cơ sở dữ liệu
5 Hiển thị phiên mới tạo lên danh sách của màn hình manage route
Không có session mới nào được thêm vào cơ sở dữ liệu, thông báo nguyên nhân thất bại
3.2.2.7.3.3 Chỉnh sửa thông tin của phiên
Bảng 3.33: Đặc tả chỉnh sửa thông tin của phiên
Description Chỉnh sửa thông tin của phiên
Pre-conditions Actor đang ở trang “manage session”
1 Thành công: Chỉnh sửa thành công thông tin của session, lưu thông tin thay đổi vào cơ sở dữ liệu
2 Thất bại: Không có thông tin nào được thay đổi
Trigger Actor nhấn icon “edit” trên màn hình manage session
1 Actor nhấn vào icon “edit” trên màn hình manage session
2 Hiển thị form chỉnh sửa thông tin session
3 Actor nhập thông tin cần thay đổi
4 Nhấn nút “save” thông tin mới chỉnh sửa được lưu vào cơ sở dữ liệu
5 Hiển thị thông tin mới chỉnh sửa lên danh sách của màn hình manage session
Chỉnh sửa không thành công, hiển thị thông tin ban đầu, thông báo nguyên nhân thất bại
3.2.2.7.3.4 Vô hiệu hóa, kích hoạt phiên
Bảng 3.34: Đặc tả vô hiệu hóa, kích hoạt phiên
Description Vô hiệu hóa, kích hoạt phiên
Pre-conditions Actor đang ở trang “manage session”
1 Thành công: Thay đổi trạng thái của session
2 Thất bại: Không thay đổi được trạng thái
Trigger Actor nhấn icon “disable/enable” trên màn hình manage session
1 Actor nhấn vào icon “disable/enable” trên màn hình manage session
2 Thay đổi trạng thái thành công từ “disable” thành “enable” hoặc ngược lại
Alternative flow Không thay đổi được trạng thái, hiển thị trạng thái ban đầu.
Thiết kế hệ thống
Hình 4.1: Xác thực 4.1.1.2 Quyền của người dùng
Hình 4.2: Quyền của người dùng
Hình 4.3: Quản lý người dùng 4.1.1.4 Quản lý vị trí
Hình 4.4: Quản lý vị trí
Hình 4.5: Quản lý xe 4.1.1.6 Quản lý tuyến xe
Hình 4.6: Quản lý tuyến xe
Hình 4.9: Quản lý vé 4.1.1.10 Quản lý hóa đơn
Hình 4.10: Quản lý hóa đơn
4.1.1.11 Thông tin người đặt vé
Hình 4.11: Thông tin người đặt vé 4.1.1.12 Đặt vé
4.1.2.1.3 Thông tin người đặt vé
Hình 4.16: Thông tin người đặt vé
4.1.2.1.4 Xác nhận thông tin đặt vé
Hình 4.17: Xác nhận thông tin đặt vé
4.1.2.5 Quản lý vé đã đặt
Hình 4.18: Quản lý vé đã đặt
Bảng users_roles
Bảng 4.3: Mô tả dữ liệu bảng users_roles
STT Tên bảng, tên thuộc tính Kiểu dữ liệu Ý nghĩa Ghi chú
1 User_id bigint(20) Mã của người dùng Khóa chính
2 Role_id bigint(20) Mã của role Khóa chính
Bảng location
Bảng 4.4: Mô tả dữ liệu bảng location
STT Tên bảng, tên thuộc tính Kiểu dữ liệu Ý nghĩa Ghi chú
1 Id bigint(20) Mã của vị trí Khóa chính
2 Created_by varchar(255) Tạo bởi người dùng
3 Created_date datetime Tạo ngày
4 Last_modified_by varchar(255) Chỉnh sửa lần cuối bởi người dùng
5 Last_modified_date datetime Chỉnh sửa lần cuối vào ngày
6 Name varchar(255) Tên vị trí
Bảng car
Bảng 4.5: Mô tả dữ liệu bảng car
STT Tên bảng, tên thuộc tính Kiểu dữ liệu Ý nghĩa Ghi chú
Car Thông tin của xe
1 Id bigint(20) Mã của vị trí Khóa chính
2 Created_by varchar(255) Tạo bởi người dùng
3 Created_date datetime Tạo ngày
4 Last_modified_by varchar(255) Chỉnh sửa lần cuối bởi người dùng
5 Last_modified_date datetime Chỉnh sửa lần cuối vào ngày
7 Car_number varchar(255) Biển số xe
8 Driver_name varchar(255) Tên tài xế
9 Status bigint(20) Trạng thái của xe
Bảng seat
Bảng 4.6: Mô tả dữ liệu bảng seat
STT Tên bảng, tên thuộc tính Kiểu dữ liệu Ý nghĩa Ghi chú
Seat Thông tin ghế xe
1 Id bigint(20) Mã của phiên Khóa chính
2 Created_by varchar(255) Tạo bởi người dùng
3 Created_date datetime Tạo ngày
4 Last_modified_by varchar(255) Chỉnh sửa lần cuối bởi người dùng
5 Last_modified_date datetime Chỉnh sửa lần cuối vào ngày
7 Car_id bigint(20) Mã của tuyến xe Khóa ngoại
11 Status bigint(20) Trạng thái của xe
Bảng route
Bảng 4.7: Mô tả dữ liệu bảng route
STT Tên bảng, tên thuộc tính Kiểu dữ liệu Ý nghĩa Ghi chú
Route Thông tin của tuyến xe
1 Id bigint(20) Mã của vị trí Khóa chính
2 Created_by varchar(255) Tạo bởi người dùng
3 Created_date datetime Tạo ngày
4 Last_modified_by varchar(255) Chỉnh sửa lần cuối bởi người dùng
5 Last_modified_date datetime Chỉnh sửa lần cuối vào ngày
6 Destination varchar(255) Điểm kết thúc
8 Starting_point varchar(255) Điểm khởi hành
9 Time_expecting varchar(255) Thời gian đến
10 Time_starting varchar(255) Thời gian đi
11 Status bigint(20) Trạng thái của xe
Bảng route_cars
Bảng 4.8: Mô tả dữ liệu bảng route_cars
STT Tên bảng, tên thuộc tính Kiểu dữ liệu Ý nghĩa Ghi chú
1 Route_id bigint(20) Mã của tuyến xe Khóa chính
2 Car_id bigint(20) Mã của xe Khóa chính
Bảng sessionr
Bảng 4.9: Mô tả dữ liệu bảng sessionr
STT Tên bảng, tên thuộc tính Kiểu dữ liệu Ý nghĩa Ghi chú
Sessionr Thông tin của phiên xe
1 Id bigint(20) Mã của phiên xe Khóa chính
2 Created_by varchar(255) Tạo bởi người dùng
3 Created_date datetime Tạo ngày
4 Last_modified_by varchar(255) Chỉnh sửa lần cuối bởi người dùng
5 Last_modified_date datetime Chỉnh sửa lần cuối vào ngày
6 Depart_date varchar(255) Ngày khởi hành
7 Route_id bigint(20) Mã của tuyến xe Khóa ngoại
8 Status bigint(20) Trạng thái của phiên
Bảng info_buyer
Bảng 4.10: Mô tả dữ liệu bảng thông tin người đặt vé
STT Tên bảng, tên thuộc tính Kiểu dữ liệu Ý nghĩa Ghi chú
Sessionr Thông tin của phiên tuyến xe
1 Id bigint(20) Mã của phiên Khóa chính
2 Created_by varchar(255) Tạo bởi người dùng
3 Created_date datetime Tạo ngày
4 Last_modified_by varchar(255) Chỉnh sửa lần cuối bởi người dùng
5 Last_modified_date datetime Chỉnh sửa lần cuối vào ngày
7 Email varchar(255) Địa chỉ email
8 Full_name varchar(255) Họ và tên người đặt vé
9 Number_phone varchar(255) Số điện thoại
Bảng ticket
Bảng 4.11: Mô tả dữ liệu bảng ticket
STT Tên bảng, tên thuộc tính Kiểu dữ liệu Ý nghĩa Ghi chú
Bill Thông tin của hóa đơn
1 Id bigint(20) Mã của phiên Khóa chính
2 Created_by varchar(255) Tạo bởi người dùng
3 Created_date datetime Tạo ngày
4 Last_modified_by varchar(255) Chỉnh sửa lần cuối bởi người dùng
5 Last_modified_date datetime Chỉnh sửa lần cuối vào ngày
6 Status int(11) Trạng thái của bill
7 Bill_id bigint(20) Mã của hóa đơn Khóa ngoại
8 Seat_id bigint(20) Mã của ghế Khóa ngoại
Bảng bill
Bảng 4.13: Mô tả dữ liệu bảng bill
STT Tên bảng, tên thuộc tính Kiểu dữ liệu Ý nghĩa Ghi chú
Bill Thông tin của hóa đơn
1 Id bigint(20) Mã của phiên Khóa chính
2 Created_by varchar(255) Tạo bởi người dùng
3 Created_date datetime Tạo ngày
4 Last_modified_by varchar(255) Chỉnh sửa lần cuối bởi người dùng
5 Last_modified_date datetime Chỉnh sửa lần cuối vào ngày
6 Status int(11) Trạng thái của bill
7 Total_price int(11) Tổng giá tiền
8 Payment varchar(255) Tình trạng thanh toán
9 Buyer_id bigint(20) Mã của người đặt vé Khóa ngoại
10 Session_id bigint(20) Mã của session Khóa ngoại
11 Car_id bigint(20) Mã của xe Khóa ngoại
Thiết kế giao diện
4.3.1.1 Screen flow của khách hàng và nhân viên bán vé tại quầy
Hình 4.20: Screen flow của khách hàng và nhân viên bán vé tại quầy
Bảng 4.14: Mô tả screen flow của khách hàng và nhân viên bán vé tại quầy
STT Tên màn hình Mô tả
SCU001 Home Screen Màn hình trang chủ
Manager and User Màn hình trang chủ của manager và user SCU002 Login Screen Màn hình đăng nhập
SCU003 Register Screen Màn hình đăng ký
Screen Màn hình đặt vé
Screen Màn hình chọn tuyến xe
SCU006 Choose Seat Screen Màn hình chọn ghế
Screen Màn hình thông tin người đặt vé
Screen Màn hình xác nhận đặt vé
Screen Màn hình xem tất cả vé đã đặt
Screen Màn hình xem chi tiết từng vé đã đặt
SCU011 Search Route Screen Màn hình tìm kiếm tuyến xe khi chưa đăng nhập tài khoản
4.3.1.2 Screen flow của quản trị viên
Hình 4.21: Screen flow của quản trị viên Bảng 4.15: Mô tả screen flow của quản trị viên
STT Tên màn hình Mô tả
SCA001 Home Screen Màn hình trang chủ
SCA001a Home Screen of Admin Màn hình trang chủ của admin
SCA002 Login Screen Màn hình đăng nhập
SCA003 Register Screen Màn hình đăng ký
SCA004 Search Route Screen Màn hình tìm kiếm tuyến xe khi chưa đăng nhập tài khoản SCA005 Manage User Screen Màn hình quản lý người dùng
SCA006 Create User Screen Màn hình tạo mới người dùng
Screen Màn hình xem thông tin chi tiết người dùng
SCA008 Edit User Screen Màn hình chỉnh sửa thông tin người dùng SCA009 Manage Ticket Screen Màn hình xem tất cả vé đã đặt
Screen Màn hình xem thông tin chi tiết từng vé
Screen Màn hình quản lý vị trí
SCA012 Create Location Screen Màn hình tạo mới vị trí
SCA013 Manage Bus Screen Màn hình quản lý xe
SCA014 Create Bus Screen Màn hình tạo mới xe
SCA015 Manage Route Screen Màn hình quản lý tuyến xe
SCA016 Create Route Screen Màn hình tạo mới tuyến xe
SCA017 Manage Session Screen Màn hình quản lý phiên xe
SCA018 Create Session Screen Màn hình tạo mới phiên xe
Screen Màn hình quản lý doanh thu
4.3.2 Đặc tả các màn hình
Hình 4.22: Màn hình trang chủ Bảng 4.16: Đặc tả màn hình trang chủ
STT Tên Yêu cầu Format Liên quan Chú thích
1 Home page True Text link
Khi click, chuyển đến màn hình SCU001
Khi click, chuyển đến màn hình SCU002
Khi click, chuyển đến màn hình SCU003
Khi click, hiển thị toàn bộ ngôn ngữ, người dùng tùy chọn
5 Departure True Dropdown Data từ
Hiển thị danh sách nơi khởi hành
6 Destination True Dropdown Data từ
Hiển thị danh sách nơi kết thúc
7 Date_departure True Date picker Hiển thị lịch chọn
Khi click, chuyển đến màn hình SCU001a
9 Tittle True Text Hiển thị nội dung thông tin
10 Card True Card Card chứa thông tin và hình ảnh
Khi click, chuyển đến các trang giới thiệu tương ứng
12 Image Image Chứa hình ảnh
Hình 4.23: Màn hình đăng nhập Bảng 4.17: Đặc tả màn hình đăng nhập
STT Tên Yêu cầu Format Liên quan Chú thích
1 Username True Text box Nhập username
2 Password True Text box Nhập password
Khi click, đăng nhập thành công sẽ chuyển đến màn hình trang chủ sau khi đăng nhập SCU001a Đăng nhập thất bại, thông báo nguyên nhân
Khi click, chuyển đến màn hình SCU003
Hình 4.24: Màn hình đăng ký Bảng 4.18: Đặc tả màn hình đăng ký
STT Tên Yêu cầu Format Liên quan Chú thích
1 Username True Text box Nhập username, có thể chứa ký tự, số
2 Fullname True Text box Nhập fullname
Nhập email theo đúng format Ví dụ: mai123@gmail.com
4 Password True Text box Nhập password
Khi click, chuyển đến màn hình đăng nhập SCU002
4.3.2.4 Màn hình quản lý người dùng
Hình 4.25: Màn hình quản lý người dùng Bảng 4.19: Đặc tả màn hình quản lý người dùng
STT Tên Yêu cầu Format Liên quan Chú thích
Khi click vào từng submenu, sẽ chuyển đến màn hình tương ứng
2 Menu icon True Icon Khi click, sẽ phóng to, thu gọn menu
3 Search bar True Text box
Nhập ký tự bất kỳ, tìm kiếm theo tên người dùng
Khi click, hiển thị danh sách thông tin tìm kiếm tương ứng
Khi click, chuyển đến màn hình SCA006
6 Grid information True Grid Data từ
Danh sách người dùng hiển thị dưới dạng grid
Khi click, chuyển đến màn hình SCA007
Khi click, chuyển đến màn hình SCA008
9 Disable/enable True Button icon
Khi click, thay đổi button từ “disable” sang “enable” hoặc ngược lại
Khi click, phân trang theo size đã chọn
11 Previous True Button Khi click, quay về trang trước
12 Next True Button Khi click, chuyển đến trang sau
Image Hiển thị hình ảnh mặc định
Dropdown Khi click, hiển thị chức năng
4.3.2.5 Màn hình xem thông tin chi tiết của người dùng
Hình 4.26: Màn hình xem thông tin chi tiết của người dùng
Bảng 4.20: Đặc tả màn hình xem thông tin chi tiết của người dùng
STT Tên Yêu cầu Format Liên quan Chú thích
Khi click, quay trở về màn hình SCA005
Khi click, quay trở về màn hình SCA005
Khi click, chuyển đến màn hình SCA008
4.3.2.6 Màn hình tạo mới người dùng
Hình 4.27: Màn hình tạo mới người dùng Bảng 4.21: Đặc tả màn hình tạo mới người dùng
STT Tên Yêu cầu Format Liên quan Chú thích
1 Email True Text box Nhập email theo đúng format
2 User name True Text box Nhập user name
3 Full name True Text box Nhập full name
4 Role of user True Dropdown Chọn role của người dùng
Khi click, chuyển đến màn hình SCA005
Khi click, nếu lưu thành công, chuyển đến màn hình SCA005 Nếu thất bai, hiển thị thông báo
4.3.2.7 Màn hình chỉnh sửa thông tin người dùng
Hình 4.28: Màn hình chỉnh sửa thông tin người dùng Bảng 4.22: Đặc tả màn hình chỉnh sửa thông tin người dùng
STT Tên Yêu cầu Format Liên quan Chú thích
1 Email True Text box Data từ
Nhập email theo đúng format
2 User name True Text box Data từ
3 Full name True Text box Data từ
4 Role of user True Dropdown Data từ
Chọn role của người dùng
4.3.2.8.1 Màn hình chọn tuyến xe
Hình 4.29: Màn hình chọn tuyến xe 4.3.2.8.2 Màn hình chọn ghế
Hình 4.30: Màn hình chọn ghế
4.3.2.8.3 Màn hình thông tin người đặt vé
Hình 4.31: Màn hình thông tin người đặt vé 4.3.2.8.4 Màn hình xác nhận đặt vé
Hình 4.32: Màn hình xác nhận đặt vé
4.3.2.9 Màn hình quản lý vị trí
Hình 4.33: Màn hình quản lý vị trí 4.3.2.10 Màn hình tạo mới vị trí
Hình 4.34: Màn hình tạo mới vị trí
4.3.2.11 Màn hình quản lý xe
Hình 4.35: Màn hình quản lý xe 4.3.2.12 Màn hình tạo mới xe
Hình 4.36: Màn hình tạo mới xe
4.3.2.13 Màn hình quản lý tuyến xe
Hình 4.37: Màn hình quản lý tuyến xe 4.3.2.14 Màn hình tạo mới tuyến xe
Hình 4.38: Màn hình tạo mới tuyến xe
4.3.2.15 Màn hình quản lý session
Hình 4.39: Màn hình quản lý session 4.3.2.16 Màn hình tạo mới session
Hình 4.40: Màn hình tạo mới session 4.3.2.17 Màn hình quản lý vé đã đặt của khách hàng và nhân viên
Hình 4 41: Màn hình quản lý vé đã đặt của khách hàng và nhân viên
4.3.2.18 Màn hình vé đã đặt của quản trị viên
Hình 4.42: Màn hình vé đã đặt của quản trị viên 4.3.2.18 Màn hình xem thông tin chi tiết của vé đã đặt
Hình 4.43: Màn hình xem thông tin chi tiết của vé đã đặt
4.3.2.19 Màn hình quản lý doanh thu
Hình 4.44: Màn hình quản lý doanh thu
KẾT QUẢ SO SÁNH, THỰC NGHIỆM, PHÂN TÍCH,
Back-end
Hệ thống back-end cung cấp các API hỗ trợ xây dựng website đặt vé cá nhân cho nhóm người dùng gồm admin, manager và user Các chức năng chính của hệ thống bao gồm quản lý đặt vé, xử lý thanh toán, cập nhật thông tin người dùng và theo dõi trạng thái vé Với các API này, việc phát triển website trở nên thuận tiện, nhanh chóng, đảm bảo hoạt động hiệu quả và an toàn cho tất cả các nhóm người dùng.
Phân quyền đăng nhập, đăng ký, đăng xuất
Quản lý thông tin người đặt vé
Đa ngôn ngữ (Tiếng Anh, Tiếng Việt)
Kết quả đạt được
KẾT QUẢ SO SÁNH, THỰC NGHIỆM, PHÂN TÍCH,
Hệ thống backend cung cấp các API hỗ trợ xây dựng website đặt vé khách hàng, phục vụ nhóm người dùng gồm admin, manager và user Các chức năng cơ bản của hệ thống bao gồm quản lý đơn hàng, kiểm tra trạng thái vé, quản lý thông tin người dùng và xử lý thanh toán Nhờ API linh hoạt, hệ thống đảm bảo trải nghiệm đặt vé tiện lợi và an toàn cho tất cả các loại người dùng Điều này giúp tối ưu hóa quy trình vận hành và nâng cao hiệu suất website đặt vé trực tuyến.
Phân quyền đăng nhập, đăng ký, đăng xuất
Quản lý thông tin người đặt vé
Đa ngôn ngữ (Tiếng Anh, Tiếng Việt)
- Hệ thống front-end được xây dựng trên nền tảng Angular, sử dụng framwork hỗ trợ như Bootstrap
- Nhóm người dùng gồm admin, manager, user có các chức năng chính như sau:
Xem tất cả người dùng
Xem thông tin chi tiết người dùng
Chỉnh sửa thông tin người dùng
Cho phép tài khoản hoạt động/ không hoạt động
Xem tất cả vị trí
Xem thông tin tất cả xe
Xem thông tin tất cả tuyến xe
Xem thông tin tất cả session
Xem tất cả hóa đơn (vé đã đặt)
Xem thông tin chi tiết hóa đơn
Manager (nhân viên bán vé tại quầy)
Điền thông tin người đặt vé
Xem những vé đã đặt
Điền thông tin người đặt vé
Xem những vé đã đặt
Sau thời gian nghiên cứu và triển khai đề tài “Xây dựng website đặt vé xe khách”, nhóm đã đạt được nhiều thành tựu quan trọng, đáp ứng đến 85% các yêu cầu đề ra Dự án thành công trong việc xây dựng nền tảng web đặt vé xe khách thuận tiện, thân thiện người dùng và tích hợp các tính năng chính như đặt vé trực tuyến, kiểm tra lịch trình và thanh toán an toàn Những kết quả này thể hiện nỗ lực nghiên cứu và phát triển công nghệ, góp phần nâng cao trải nghiệm khách hàng trong lĩnh vực vận tải hành khách.
- Tìm hiểu những kiến thức cơ bản về Spring Resful API, Angular, Bootstrap, MySQL để xây dựng trang web
- Website đặt vé xe khách bao gồm các chức năng cơ bản:
Authentication: đăng nhập, đăng ký, đăng xuất
Quản lý vị trí, xe, tuyến xe, session
Ưu điểm
- Website được xây dựng có giao diện thân thiện, dễ sử dụng đối với mọi đối tượng
- Việc đặt vé tương đối dễ dàng, không tốn nhiều thời gian, nhanh chóng
- Việc hiển thị danh sách ghế có màu sắc giúp người dùng dễ dàng phân biệt, không bị nhầm lẫn
- Tích hợp đa ngôn ngữ, giúp người dùng lựa chọn ngôn ngữ thích hợp.
Hạn chế
- Giao diện chưa ứng dụng trên nhiều thiết bị
- Chưa tích hợp được thanh toán online trong quy trình đặt vé
- Quản lý doanh thu thể hiện dưới dạng bảng chưa thực sự bắt mắt.
Khó khăn
- Còn chưa có nhiều kinh nghiệm trong việc thiết kế giao diện, cũng như cơ sở dữ liệu chưa thực sự thực tế
- Chưa tận dụng tối ưu các chức năng của thư viện và công nghệ
- Code còn dài, phức tạp và chưa tối ưu hóa.