1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng website đặt vé xe khách

91 8 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Website Đặt Vé Xe Khách
Thể loại đồ án
Định dạng
Số trang 91
Dung lượng 5,08 MB

Cấu trúc

  • 1.1. Lý do chọn đề tài (12)
  • 1.2. Ý nghĩa khoa học và thực tiễn (12)
  • 1.3. Mục tiêu đề tài (12)
  • 1.4. Phương pháp nghiên cứu (13)
  • 1.5. Bố cục báo cáo (13)
  • 2.1. Giới thiệu về ngôn ngữ Java (15)
    • 2.1.1. Java là gì? (15)
    • 2.1.2. Lịch sử phát triển (0)
    • 2.1.3. Mục tiêu chính của ngôn ngữ Java (16)
    • 2.1.4. Ưu điểm và nhược điểm (16)
  • 2.2. Giới thiệu về ngôn ngữ Angular (17)
    • 2.2.1. Giới thiệu về Angular (17)
    • 2.2.2. Đặc điểm của Angular (17)
    • 2.2.3. Tại sao chọn Angular 10? (17)
  • 2.3. Giới thiệu về công nghệ RESTful API (17)
  • 3.1. Khảo sát yêu cầu (từ các ứng dụng có trên thị trường) (19)
    • 3.1.1. VeXeRe.com (19)
      • 3.1.1.1. Tính năng (0)
  • Chương 1 (12)
  • Chương 2 (15)
  • Chương 3 (19)
    • 3.1.1.2. Giao diện (19)
    • 3.1.1.3. Ưu và nhược điểm (21)
    • 3.1.2. Phương Trang futabus.vn (21)
      • 3.1.2.1. Tính năng (0)
      • 3.1.2.2. Giao diện (21)
      • 3.1.2.3. Ưu và nhược điểm (22)
    • 3.1.3. Thành Bưởi thanhbuoi.com.vn (22)
      • 3.1.3.1. Tính năng (0)
      • 3.1.3.2. Giao diện (23)
      • 3.1.3.3. Ưu và nhược điểm (23)
    • 3.1.4. Busonlineticket.com (23)
      • 3.1.4.1. Tính năng (0)
      • 3.1.4.2. Giao diện (24)
      • 3.1.4.3. Ưu và nhược điểm (25)
    • 3.2. Mô hình hóa yêu cầu (26)
      • 3.2.1. Use case diagram (26)
        • 3.2.1.1. Use case của khách hàng (26)
        • 3.2.1.2. Use case của nhân viên bán vé tại quầy (27)
        • 3.2.1.3. Use case của quản trị viên (28)
        • 3.2.1.4. Ý nghĩa của actor và use case (28)
      • 3.2.2. Use case specification (31)
        • 3.2.2.1. Đăng ký tài khoản (31)
        • 3.2.2.2. Đăng nhập tài khoản (31)
        • 3.2.2.3. Đăng xuất tài khoản (32)
        • 3.2.2.4. Đặt vé xe (33)
        • 3.2.2.5. Quản lý vé đã đặt (35)
        • 3.2.2.6. Quản lý người dùng (37)
        • 3.2.2.7. Quản lý của admin (40)
    • 4.1. Thiết kế hệ thống (0)
      • 4.1.1. Class diagram (51)
        • 4.1.1.1. Xác thực (51)
        • 4.1.1.2. Quyền của người dùng (51)
        • 4.1.1.3. Quản lý người dùng (52)
        • 4.1.1.4. Quản lý vị trí (0)
        • 4.1.1.5. Quản lý xe (53)
        • 4.1.1.6. Quản lý tuyến xe (53)
        • 4.1.1.7. Quản lý ghế (54)
        • 4.1.1.8. Quản lý phiên (54)
        • 4.1.1.9. Quản lý vé (55)
        • 4.1.1.10. Quản lý hóa đơn (55)
        • 4.1.1.11. Thông tin người đặt vé (56)
        • 4.1.1.12. Đặt vé (56)
      • 4.1.2. Sequence Diagram (57)
        • 4.1.2.1. Đặt vé (57)
        • 4.1.2.5. Quản lý vé đã đặt (60)
    • 4.2. Thiết kế cơ sở dữ liệu (0)
      • 4.2.2.1. Bảng user (61)
      • 4.2.2.2. Bảng role (62)
  • Chương 4 (51)
    • 4.2.2.3. Bảng users_roles (62)
    • 4.2.2.4. Bảng location (63)
    • 4.2.2.5. Bảng car (63)
    • 4.2.2.6. Bảng seat (63)
    • 4.2.2.7. Bảng route (64)
    • 4.2.2.8. Bảng route_cars (64)
    • 4.2.2.9. Bảng sessionr (65)
    • 4.2.2.10. Bảng info_buyer (65)
    • 4.2.2.11. Bảng ticket (65)
    • 4.2.2.12. Bảng bill (66)
    • 4.3. Thiết kế giao diện (0)
      • 4.3.1. Screen flow (67)
        • 4.3.1.1. Screen flow của khách hàng và nhân viên bán vé tại quầy (67)
        • 4.3.1.2. Screen flow của quản trị viên (68)
      • 4.3.2. Đặc tả các màn hình (70)
        • 4.3.2.1. Màn hình trang chủ (70)
        • 4.3.2.2. Màn hình đăng nhập (0)
        • 4.3.2.3. Màn hình đăng ký (73)
        • 4.3.2.4. Màn hình quản lý người dùng (74)
        • 4.3.2.5. Màn hình xem thông tin chi tiết của người dùng (0)
        • 4.3.2.6. Màn hình tạo mới người dùng (76)
        • 4.3.2.7. Màn hình chỉnh sửa thông tin người dùng (77)
        • 4.3.2.8. Màn hình đặt vé (78)
        • 4.3.2.9. Màn hình quản lý vị trí (80)
        • 4.3.2.10. Màn hình tạo mới vị trí (80)
        • 4.3.2.11. Màn hình quản lý xe (81)
        • 4.3.2.12. Màn hình tạo mới xe (81)
        • 4.3.2.13. Màn hình quản lý tuyến xe (82)
        • 4.3.2.14. Màn hình tạo mới tuyến xe (82)
        • 4.3.2.15. Màn hình quản lý session (83)
        • 4.3.2.16. Màn hình tạo mới session (83)
        • 4.3.2.17. Màn hình quản lý vé đã đặt của khách hàng và nhân viên (84)
        • 4.3.2.18. Màn hình vé đã đặt của quản trị viên (85)
        • 4.3.2.18. Màn hình xem thông tin chi tiết của vé đã đặt (0)
        • 4.3.2.19. Màn hình quản lý doanh thu (86)
    • 5.1. Back-end (87)
    • 5.2. Front-end (87)
    • 6.1. Kết quả đạt được (0)
    • 6.2. Ưu điểm (89)
    • 6.2. Hạn chế (89)
    • 6.3. Khó khăn (89)
    • 6.4. Hướng phát triển của đề tài (89)
  • TÀI LIỆU THAM KHẢO (0)
    • Chương 5 (87)
    • Chương 6 (89)

Nội dung

Ý nghĩa khoa học và thực tiễn

Việc đặt vé xe khách là một thách thức phức tạp liên quan đến nhiều yếu tố như quản lý thông tin vé và thông tin người dùng Website đặt vé xe khách mà nhóm phát triển sẽ tối ưu hóa quy trình quản lý, giúp người dùng dễ dàng và nhanh chóng hơn trong việc đặt vé, đồng thời giảm thiểu những khó khăn hiện tại khi đặt vé trực tiếp.

- 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 dễ dàng với tính năng xem tất cả vé đã đặt, kiểm tra chi tiết từng vé, hủy vé khi cần thiết và cập nhật thông tin thanh toán một cách nhanh chóng.

 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 cho phép người dùng và nhân viên xem thông tin chi tiết về tất cả các vé đã đặt, đồng thời cập nhật tình trạng thanh toán của từng 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) Khác với nhiều ngôn ngữ lập trình khác, Java biên dịch mã nguồn thành bytecode thay vì mã máy, và bytecode này sẽ được môi trường thực thi (runtime environment) xử lý khi chạy.

Trước đây, Java chậm hơn các ngôn ngữ biên dịch như C và C++, nhưng nhờ công nghệ biên dịch tại chỗ (Just in Time Compilation), hiệu suất của Java đã được cải thiện đáng kể, và trong một số trường hợp, Java có thể chạy nhanh hơn So với các ngôn ngữ thông dịch như Python, Perl, và PHP, Java nhanh hơn nhiều lần Hiệu suất của Java cũng 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 tự.

Java có cú pháp vay mượn từ C và C++, nhưng đơn giản hơn và ít tính năng xử lý cấp thấp hơn, giúp việc viết chương trình dễ dàng hơn và giảm công sức sửa lỗi Tuy nhiên, trong lập trình hướng đối tượng, Java lại phức tạp hơn.

Trong Java, rò rỉ bộ nhớ hiếm khi xảy ra nhờ vào việc quản lý bộ nhớ tự động của Java Virtual Machine (JVM) thông qua cơ chế "dọn dẹp rác" 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 hay C++ Tuy nhiên, khi làm việc với các tài nguyên bên ngoài như mạng, file IO, và cơ sở dữ liệu, nếu không đóng (close) các streams, rò rỉ dữ liệu vẫn có thể xảy ra.

Java được phát triển bởi James Gosling và nhóm của ông tại Sun Microsystems vào năm 1991, ban đầu mang tên Oak Ngôn ngữ này được thiết kế để thay thế C++ và có các tính năng tương tự như Objective C Cần lưu ý rằng Java không giống JavaScript, mặc dù chúng chỉ tương đồng về tên và cú pháp Sun Microsystems giữ bản quyền và liên tục phát triển Java, với phiên bản JDK 1.6.24 được phát hành vào tháng 4 năm 2011.

Java được thiết kế với nguyên tắc "Viết một lần, thực thi khắp nơi" (WORA), cho phép các chương trình phần mềm viết bằng Java chạy trên nhiều nền tảng khác nhau Điều này được thực hiện thông qua một môi trường thực thi, giúp tối ưu hóa tính linh hoạt và khả năng tương thích của ứng dụng.

Môi trường thực thi Java của Sun Microsystems hỗ trợ nhiều hệ điều hành như Sun Solaris, Linux, Mac OS, FreeBSD và Windows Ngoài ra, các công ty và tổ chức khác như BEA, IBM và 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 Đặc biệt, nền tảng Java của IBM hỗ trợ các hệ điều hành Windows, Linux, AIX và z/OS.

Java, một ngôn ngữ lập trình được phát triển bởi Sun Microsystems vào năm 1991 dưới sự dẫn dắt của kỹ sư James Gosling, đã nhanh chóng trở nên nổi tiếng sau khi Netscape công bố hỗ trợ Java cho trình duyệt Navigator tại hội thảo SunWorld năm 1995 Được phát hành chính thức vào năm 1994, Java đã được tích hợp rộng rãi trên nhiều trình duyệt Internet như Internet Explorer và Firefox Hiện nay, Java chủ yếu được sử dụng trong môi trường NetBeans và Oracle Sau khi Oracle mua lại Sun Microsystems vào năm 2009-2010, công ty đã tiếp tục phát triển và duy trì Java như một ngôn ngữ lập trình quan trọng trong ngành công nghệ.

"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 từ khi ra mắt, bắt đầu với JDK 1.0 vào ngày 23/01/1996 và đến nay đã phát hành phiên bản mới nhất là JDK 10 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 framework web mã nguồn mở được phát triển dựa trên TypeScript, do nhóm Angular tại Google và cộng đồng đóng góp Đây là phiên bản viết lại hoàn toàn từ AngularJS, mang đến nhiều cải tiến và tính năng mới.

Đặ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 "scope" hay controller; thay vào đó, nó áp dụng hệ thống thành phần (component) như một cấu trúc chính, tạo ra sự phân cấp rõ ràng trong ứng dụng.

- 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?

Sản phẩm Angular 10 do Google phát triển không thể bị bỏ qua nhờ vào nhiều tính năng nổi bật và liên tục được cập nhật Phiên bản mới nhất này mang đến các cải tiến đáng kể, bao gồm hỗ trợ lazy loading, data-binding, pipe và nhiều ng module đa dạng, giúp tối ưu hóa quá trình phát triển website.

Việc phân chia thành các thành phần như model, service, component không chỉ giúp tăng tính thân thiện và dễ sử dụng mà còn tạo điều kiện cho việc quản lý dự án hiệu quả hơn, đồng thời hỗ trợ cho quá trình triển khai và bảo trì sau này.

Giới thiệu về công nghệ RESTful API

RESTful 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 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 tài nguyên được định dạng và truyền tải qua giao thức HTTP.

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 các URL cho ứng dụng web nhằm quản lý các tài nguyên RESTful không quy định logic mã nguồn của ứ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.

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, được nhiều người lựa chọn cho các chuyến đi xa như du lịch, công tác hay về quê nhờ vào tính phổ biến, tiện lợi và giá cả phải chăng Tuy nhiên, trong những ngày cao điểm, việc ra bến xe mua vé trực tiếp trở nên khó khăn, đặc biệt với những người không có nhiều thời gian.

Sự ra đời của ứng dụng đặt vé xe khách trực tuyến đáp ứng nhu cầu thiết yếu trong việc đặt vé dễ dàng và nhanh chóng Nhóm đã chọn đề tài "Xây dựng website đặt vé xe khách" nhằm giúp người dùng tiết kiệm thời gian và tiền bạc khi đặt vé xe Website không chỉ mang lại sự thuận tiện cho người dùng mà còn hỗ trợ quản lý online một cách linh hoạt và hiệu quả.

1.2 Ý nghĩa khoa học và thực tiễn

Bài toán đặt vé xe khách là một thách thức phức tạp, liên quan đến nhiều module như quản lý thông tin vé và thông tin người dùng Website đặt vé xe khách do nhóm phát triển sẽ tối ưu hóa quy trình quản lý, mang lại sự thuận tiện và nhanh chóng, đồng thời giảm thiểu những khó khăn hiện tại khi đặt vé trực tiếp.

- 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 một cách hiệu quả bằng cách xem tất cả vé đã đặt, kiểm tra chi tiết từng vé, hủy vé khi cần thiết và cập nhật thông tin thanh toán vé một cách dễ dàng.

 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 cho phép người dùng và nhân viên xem thông tin chi tiết về tất cả các vé đã đặt, đồng thời cập nhật thông tin thanh toán một cách dễ dàng và hiệu quả.

 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) Khác với nhiều ngôn ngữ lập trình khác, Java biên dịch mã nguồn thành bytecode thay vì mã máy, và bytecode này sẽ được chạy bởi môi trường thực thi (runtime environment).

Trước đây, Java chậm hơn các ngôn ngữ biên dịch trực tiếp như C và C++, nhưng nhờ công nghệ biên dịch tại chỗ (Just in time compilation), hiệu suất của Java đã được cải thiện đáng kể Hiện nay, Java có thể chạy nhanh hơn nhiều so với các ngôn ngữ thông dịch như Python, Perl và PHP Ngoài ra, hiệu suất của Java cũng tương đương với C#, một ngôn ngữ có cú pháp và quy trình biên dịch tương tự.

Java có cú pháp tương tự như C và C++, nhưng đơn giản hơn và ít tính năng xử lý cấp thấp hơn, giúp việc viết chương trình dễ dàng và tiết kiệm thời gian sửa lỗi Tuy nhiên, lập trình hướng đối tượng trong Java lại phức tạp hơn.

Trong Java, hiện tượng rò rỉ bộ nhớ hiếm khi xảy ra nhờ vào việc quản lý bộ nhớ tự động của Java Virtual Machine (JVM) thông qua quá trình "dọn dẹp rác" 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 hay C++ Tuy nhiên, khi làm việc với các tài nguyên mạng, file IO, và cơ sở dữ liệu bên ngoài kiểm soát của JVM, nếu không đóng (close) các streams, rò rỉ dữ liệu vẫn có thể xảy ra.

Java được phát triển bởi James Gosling và nhóm của ông tại Sun Microsystems vào năm 1991, ban đầu mang tên Oak Ngôn ngữ này được thiết kế để thay thế C++ nhưng tích hợp các tính năng tương tự như Objective C Cần phân biệt rõ Java với JavaScript, vì chúng chỉ giống nhau về tên gọi và cú pháp Sun Microsystems hiện đang sở hữu bản quyền và liên tục cải tiến Java, với phiên bản 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 nguyên tắc "Viết một lần, thực thi khắp nơi" (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 nhiều nền tảng khác nhau Điều này được thực hiện thông qua một môi trường thực thi, giúp tăng tính linh hoạt và khả năng tương thích của ứng dụng.

Môi trường thực thi Java hiện nay được hỗ trợ bởi nhiều nền tảng, bao gồm Sun Solaris, Linux, Mac OS, FreeBSD và Windows Ngoài ra, một số công ty và tổ chức như BEA, IBM và 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 Đặc biệt, nền tảng Java của IBM hỗ trợ các hệ điều hành Windows, Linux, AIX và z/OS.

Java, một ngôn ngữ lập trình được phát triển bởi Sun Microsystems vào năm 1991 bởi nhóm kỹ sư bao gồm James Gosling trong khuôn khổ Dự án Xanh, đã chính thức ra mắt vào năm 1994 Sự nổi bật của Java bắt đầu khi Netscape công bố hỗ trợ Java trong trình duyệt Navigator tại hội thảo SunWorld năm 1995, và sau đó, Java được tích hợp vào hầu hết các trình duyệt Internet như Internet Explorer và Firefox Ngày nay, Java chủ yếu được sử dụng trong môi trường NetBeans và Oracle Sau khi Oracle mua lại Sun Microsystems vào năm 2009-2010, họ đã tiếp tục phát triển và duy trì ngôn ngữ này.

"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, bắt đầu từ JDK 1.0 được phát hành vào ngày 23/01/1996, cho đến phiên bản mới nhất JDK 10 ra mắt 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ớ

2.2 Giới thiệu về ngôn ngữ Angular

Angular là một framework web 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ự hỗ trợ của cộng đồng Đây là phiên bản viết lại hoàn toàn từ AngularJS, do chính nhóm phát triển trước đó tạo ra.

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" hay controller; thay vào đó, nó áp dụng hệ thống các thành phần (component) như một cấu trúc chính, tạo ra sự phân cấp rõ ràng trong ứng dụng.

- 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, 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 hấp dẫn Các tính năng nổi bật như lazy loading, data-binding, và pipe, cùng với nhiều ng module đa dạng, hỗ trợ tối ưu cho việc phát triển website Sản phẩm này không ngừng được cập nhật, khẳng định vị thế của mình trong lĩnh vực phát triển ứng dụng web.

Việc phân chia thành các thành phần như model, service, và component không chỉ giúp tạo ra một hệ thống thân thiện và dễ sử dụng, mà còn làm cho việc quản lý dự án trở nên dễ dàng hơn Điều này cũng hỗ trợ cho quá trình triển khai và bảo trì sau này hiệu quả hơn.

2.3 Giới thiệu về công nghệ RESTful API

RESTful là tiêu chuẩn thiết kế API cho ứng dụng Web, giúp quản lý tài nguyên hiệu quả Nó tập trung vào các tài nguyên hệ thống, bao gồm trạng thái tài nguyên được định dạng và truyền tải qua giao thức HTTP.

Chức năng chính 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 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.

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 đủ

Mặc dù có nhiều ưu điểm, nhưng nền tảng này vẫn còn tồn tại một số nhược điểm như việc sử dụng Flash ở một số khu vực, không hỗ trợ tính năng thành viên, cũng như không có chức năng đặt vé và thanh toán trực tuyến Hơn nữa, nền tảng còn thiếu nhiều tính năng quan trọng khác.

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 API cho việc xây dựng website đặt vé, phục vụ cho ba nhóm người dùng: admin, manager và user, với các chức năng cơ bản như quản lý đặt vé, theo dõi tình trạng vé và hỗ trợ 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 back-end cung cấp API cho website đặt vé, phục vụ cho ba nhóm người dùng: admin, manager và user Các chức năng cơ bản của hệ thống bao gồm quản lý đặt vé, theo dõi trạng thái đơn hàng và hỗ trợ người dùng trong quá trình đặt vé.

 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 quá trình nghiên cứu và thực hiện đề 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 85% yêu cầu của đề tài với các mục tiêu cụ thể.

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

Ngày đăng: 07/06/2022, 22:41

HÌNH ẢNH LIÊN QUAN

Hình 3. 1: Cách thức hoạt động của RestfulAPI - Xây dựng website đặt vé xe khách
Hình 3. 1: Cách thức hoạt động của RestfulAPI (Trang 18)
Hình 3.3: Khảo sát giao diện của VeXeRe.com - Xây dựng website đặt vé xe khách
Hình 3.3 Khảo sát giao diện của VeXeRe.com (Trang 20)
Hình 3.6: Khảo sát tính năng của thanhbuoi.com.vn - Xây dựng website đặt vé xe khách
Hình 3.6 Khảo sát tính năng của thanhbuoi.com.vn (Trang 22)
Hình 3.8: Khảo sát tính năng của busonlineticket.com - Xây dựng website đặt vé xe khách
Hình 3.8 Khảo sát tính năng của busonlineticket.com (Trang 23)
Hình 3.9: Khảo sát giao diện của busonlineticket.com - Xây dựng website đặt vé xe khách
Hình 3.9 Khảo sát giao diện của busonlineticket.com (Trang 25)
Hình 3.10: Use case của khách hàng - Xây dựng website đặt vé xe khách
Hình 3.10 Use case của khách hàng (Trang 26)
Hình 3.12: Use case của quản trị viên - Xây dựng website đặt vé xe khách
Hình 3.12 Use case của quản trị viên (Trang 28)
Bảng 3.6: Đặc tả chọn tuyến xe - Xây dựng website đặt vé xe khách
Bảng 3.6 Đặc tả chọn tuyến xe (Trang 33)
Bảng 3.25: Đặc tả chỉnh sửa thông tin của xe - Xây dựng website đặt vé xe khách
Bảng 3.25 Đặc tả chỉnh sửa thông tin của xe (Trang 44)
Hình 4.5: Quản lý xe  4.1.1.6. Quản lý tuyến xe - Xây dựng website đặt vé xe khách
Hình 4.5 Quản lý xe 4.1.1.6. Quản lý tuyến xe (Trang 53)
Hình 4.7: Quản lý ghế - Xây dựng website đặt vé xe khách
Hình 4.7 Quản lý ghế (Trang 54)
Hình 4.9: Quản lý vé  4.1.1.10. Quản lý hóa đơn - Xây dựng website đặt vé xe khách
Hình 4.9 Quản lý vé 4.1.1.10. Quản lý hóa đơn (Trang 55)
Hình 4.12: Đặt vé - Xây dựng website đặt vé xe khách
Hình 4.12 Đặt vé (Trang 56)
Hình 4.14: Chọn tuyến - Xây dựng website đặt vé xe khách
Hình 4.14 Chọn tuyến (Trang 57)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w