You are on page 1of 17

Trường Đại học Công nghệ - ĐHQGHN

Khoa Công nghệ thông tin

BÀI TẬP LỚN: THỰC HÀNH PHÁT TRIỂN PHẦN MỀM


Giảng viên: Nguyễn Đức Anh

HỆ THỐNG BÁN VÉ XE KHÁCH

Ngày: 20/12/2021

Tình trạng tài liệu: Tài liệu báo cáo môn học

Chuẩn bị bởi: Nhóm 1

Thành viên:

1. Trần Quốc Cường 18020262


2. Nguyễn Tiến Đạt 18020281
3. Phạm Trọng Đại 18020264
4. Đinh Việt Anh 18020002
5. Đỗ Quang Anh 18020136
Mục lục
Lời mở đầu 3
Phân công công việc 4
1. Giới thiệu 5
1.1. Mục đích 5
1.2. Bài toán giải quyết 5
1.3. Phạm vi dự án 5
1.4. Phương pháp hoàn thành dự án 6
1.5. Tài liệu tham khảo 6
2. Các tác nhân 7
2.1. Người xem 7
2.2. Quản trị hệ thống 7
2.3. Người dùng 7
3. Giới thiệu về môi trường cài đặt 8
3.1. Back-end 8
3.2. Front-end 9
3.3. Học máy (Machine Learning) 9
4. Các chức năng đã cài đặt 11
4.1. Tìm kiếm, khám phá chuyến đi 11
4.2. Đăng ký tham gia chuyến đi 11
4.3. Quản lý trên hệ thống 13
Phụ lục: Mục lục hình ảnh 17

2
Lời mở đầu
Hệ thống bán vé xe khách là một sản phẩm của tập thể. Chúng em xin gửi lời cảm ơn
tới thầy Nguyễn Đức Anh đã góp ý giúp sản phẩm hoàn thiện hơn về chức năng.

Sau đây là tài liệu báo cáo về hệ thống bán vé xe khách. Chúng em đã tổng hợp và
chỉnh sửa. Mặc dù vậy nếu có điều gì thiếu sót, mong thầy thông cảm và góp ý cho
chúng em.

Chúng em xin trân trọng cảm ơn thầy!

3
Phân công công việc

Họ tên Vai trò Công việc đã hoàn thành Tỷ lệ


% hoàn
thành

Đỗ Quang Anh Frontend Thiết kế giao diện và xây dựng 100%


các màn hình phía người dùng

Phạm Trọng Đại Frontend Thiết kế giao diện và xây dựng 100%
các màn hình phía admin

Nguyễn Tiến Đạt Backend Thiết kế server và cài đặt các 100%
function phía admin

Trần Quốc Cường Tài liệu, Phân tích các yêu cầu nghiệp vụ, 100%
requirement và data lập ra báo cáo và các chức năng
analytics cần thực hiện; cài đặt các chức
năng về machine learning cho
admin.

Đinh Việt Anh Backend Thiết kế server và cài đặt các 100%
function phía người dùng

4
1. Giới thiệu
1.1. Mục đích

Tài liệu này là báo cáo về chủ đề Hệ thống bán vé xe khách online của nhóm 01 trong
khóa học Thực hành phát triển phần mềm.

Báo cáo được viết dựa trên định dạng báo cáo của “IEEE Std 830-1998 IEEE
Recommended Practice for Software Requirements Specifications”. Báo cáo dựa trên
các nội dung đã được nhóm chấp nhận và thống nhất.

Mục đích của Báo cáo là giới thiệu về môi trường cài đặt hệ thống và các chức năng
cung cấp trong phiên bản hiện tại.

1.2. Bài toán giải quyết


Từ hiện trạng của hệ thống hiện thời, ta có thể thấy các hệ thống mua bán vé xe hiện
nay gặp nhiều vấn đề cần phải để tâm chẳng hạn như:

● Các nhà xe được biết đến phần lớn là dựa vào lời giới thiệu của khách hàng và
các trang review ở trên facebook, khó khăn trong việc tiếp cận các khách hàng
mới.
● Khách hàng khó khăn trong việc tìm được thông tin về các nhà xe để biết nhà
xe có chất lượng phục vụ như thế nào, giá cả ra sao, có nhồi nhét khách không.
● Khách hàng khi muốn mua vé xe thì phải ra bến xe hoặc ra phòng vé của nhà
xe, đặc biệt là trong những dịp lễ lớn thì phải xếp hàng chờ mua vé, có đôi khi
xếp hàng nhưng chưa chắc đã mua được vé.

1.3. Phạm vi dự án

Hệ thống bán vé xe khách online được xây dựng như một phương tiện để kết nối trực
tiếp nhà xe và người mua vé xe.

Hệ thống sẽ được phát triển dưới dạng một ứng dụng web, Người dùng cuối sẽ tương
tác với hệ thống qua Internet thông qua các thiết bị thông minh (laptop, PC, máy tính
bảng, điện thoại thông minh).

5
1.4. Phương pháp hoàn thành dự án

Quy trình phát triển phần mềm: Sử dụng mô hình Scrum họp 4 ngày 1 lần để cập nhật
tiến độ, trao đổi về các vấn đề đang gặp phải và lên kế hoạch phát triển sản phẩm
trong thời gian tiếp theo.

Công cụ sử dụng:

● GitLab: Quản lý mã nguồn, hỗ trợ CI/CD.


● Discord: Là một kênh trao đổi, cập nhật thông tin giữa các thành viên.

Ngôn ngữ và công nghệ sử dụng:

● Backend: Node.js + MongoDB, FastAPI.


● Frontend: React.
● Infrastructure: Docker.
● VCS: GitLab.

1.5. Tài liệu tham khảo

[1] IEEE Std 830-1998 IEEE Recommended Practice for Software Requirements
Specifications. IEEE Computer Society, 1998.

6
2. Các tác nhân
2.1. Người xem

Khách xem có thể tìm kiếm các chuyến xe dựa vào điểm đi, điểm đến, thời gian đi.
Người xem có thể đăng ký thành viên trên hệ thống để trở thành người dùng, để có
nhiều tác vụ hơn.

2.2. Quản trị hệ thống

Người có trách nhiệm giám sát và quản lý tài khoản hành khách, bến xe, nhà xe,
thông tin về lịch trình chuyến đi, thông tin các vé đã đặt.

2.3. Người dùng

Người dùng có thể là quản trị hệ thống, chủ nhà xe, và người tham gia. Người dùng
có các ca sử dụng sau:
● Đăng nhập.
● Quản lý thông tin cá nhân.
● Tìm kiếm vé.
● Đặt vé.
● Quản lý vé đã đặt.
● Đánh giá, bình luận về chuyến đi.

7
3. Giới thiệu về môi trường cài đặt
3.1. Back-end

● NodeJS là một nền tảng được xây dựng dựa trên “V8 Javascript engine” và
được viết bằng ngôn ngữ lập trình C++, Javascript. NodeJS có thể chạy được
trên nhiều hệ điều hành như Linux, Microsoft Windows, OS X.

NodeJS tương tự một ngôn ngữ lập trình, nhưng chương trình được thiết kế bởi
NodeJS sẽ chạy ở môi trường là máy chủ thay cho môi trường trình duyệt.

● Express là một framework dành cho nodejs. Nó cung cấp cho chúng ta rất
nhiều tính năng mạnh mẽ trên nền tảng web cũng như trên các ứng dụng di
động. Express hỗ trợ các phương thức HTTP và middleware tạo ra một API vô
cùng mạnh mẽ và dễ sử dụng. Có thể tổng hợp một số chức năng chính của
express như sau:
○ Thiết lập các lớp trung gian để trả về các HTTP request.
○ Định nghĩa router cho phép sử dụng với các hành động khác nhau dựa
trên phương thức HTTP và URL.
○ Cho phép trả về các trang HTML dựa vào các tham số.
● FastAPI là 1 web framework của ngôn ngữ Python dùng để build API server có
hiệu năng cao, code đơn giản nhưng cũng hỗ trợ tốt cho việc làm sản phẩm.
Đặc điểm:
○ Fast: Hiệu suất cao ngang với NodeJS và Go.
○ Fast to code: Code nhanh hơn, tốc độ code các features tăng khoảng 200
đến 300 %.
○ Fewer bugs: do đơn giản nên giảm số bugs của developer đến 40%.
○ Intuitive: hỗ trợ code dễ hơn với tự động gợi ý, debug cần ít thời gian
hơn so với trước.
○ Easy: được thiết kế sao cho dễ dùng dễ học.
○ Short: Tối thiểu việc lặp code. Các tham số truyền vào có nhiều tính
năng. Ít bugs.
○ Robust: hiệu năng mạnh mẽ, có thể tương tác API qua docs.

8
3.2. Front-end

JavaScript và các thư viện đi kèm đã tạo nên một hệ thống mạnh mẽ. Các thư viện
thường xuyên được phát triển và thêm mới giúp người dùng thoải mái lựa chọn các
tính năng.

Trong số các framework của JavaScript, nổi bật lên trên tất cả là ReactJS. ReactJS đã
được nhiều công ty đưa vào sử dụng hiện nay như Facebook, Netflix, AirBNB,
Dropbox, IMDb, Paypal,... ReactJS được hỗ trợ mạnh mẽ với hàng triệu nhà phát
triển và đặc biệt được sự hậu thuẫn của Facebook.

Nhóm đã sử dụng ReactJS với các ưu điểm: Dễ dàng sử dụng, sử dụng components
tiện lợi, dễ dàng tái sử dụng với JSX, các công cụ phát triển với một cộng đồng mạnh
mẽ,...

React hỗ trợ tạo các giao diện người dùng tương tác một cách dễ dàng. Thiết kế các
khung nhìn đơn giản cho từng trạng thái trong ứng dụng và React sẽ cập nhật và kết
xuất đúng các thành phần phù hợp khi dữ liệu của bạn thay đổi. Các khung nhìn được
khai báo làm cho mã nguồn dễ hiểu và dễ gỡ lỗi hơn.

React giúp xây dựng các thành phần đóng gói quản lý trạng thái của riêng chúng, sau
đó kết hợp chúng lại để tạo các UI phức tạp. Vì logic thành phần được viết bằng
JavaScript, ta có thể dễ dàng truyền dữ liệu qua ứng dụng và tránh trạng thái ra khỏi
DOM.

Yêu cầu môi trường:


● NodeJS >= 13.0.1
● npm >= 6.12.0
● ReactJS >= 16.8.0

3.3. Học máy (Machine Learning)


Nhóm sử dụng mô hình Exponential Smoothing - dự đoán xu hướng dựa trên chuỗi
thời gian với một chuỗi các điểm dữ liệu, được đo theo từng khoảnh khắc thời gian
liền nhau theo một tần suất thời gian thống nhất.

9
10
4. Các chức năng đã cài đặt
4.1. Tìm kiếm, khám phá chuyến đi

Người dùng có thể tìm kiếm, khám phá các chuyến đi bằng cách nhập các từ khóa tại
ô “Search”. Hệ thống sẽ hiển thị các chuyến đi có liên quan đến từ khóa mà người
dùng đã nhập. Từ đó người dùng có thể chọn xem các chuyến đi và đăng ký tham gia
chuyến đi phù hợp.

Giao diện tìm kiếm chuyến đi từ Hà Nội đến Đà Nẵng được hiển thị như hình dưới
đây.

Hình 1: Giao diện hệ thống “Tìm kiếm, khám phá chuyến đi”

4.2. Đăng ký tham gia chuyến đi

Người dùng có nhu cầu đăng ký tham gia chuyến đi. Đầu tiên, người dùng chọn
chuyến đi mình muốn đăng ký tham gia. Ví dụ, người dùng chọn “chuyến đi từ Hà
Tĩnh đến Trà Vinh”.

11
Hình 2: Giao diện hệ thống hiển thị các chuyến đi đã đăng tải trên hệ thống

Sau khi người dùng ấn chọn chuyến đi, hệ thống hiển thị giao diện các thông tin về
chuyến đi. Người dùng muốn tham gia chuyến đi thì cần điền các thông tin vào.

Hình 3: Giao diện hệ thống đăng ký chuyến đi

Sau khi chọn xong, người dùng sẽ tiến hành xác nhận lại thông tin và sẽ được điều
hướng đến trang thanh toán.

12
Hình 4: Giao diện trang thanh toán

Người dùng cũng có thể quản lý các chuyến đi đã đặt và có thể bình luận về các
chuyến đi.

Hình 5: Giao diện quản lý chuyến đi của người dùng

4.3. Quản lý trên hệ thống


Đây là màn hình quản lý các tài khoản, bến xe, chuyến xe, vé và phân tích dữ liệu của
admin. Admin sẽ có các quyền xem chi tiết tài khoản, chỉnh sửa mật khẩu của tài
khoản, và xóa các tài khoản, bến xe, chuyến xe và vé trên hệ thống.

Sau đây là màn hình quản lý tài khoản của Admin.

13
Hình 6: Giao diện quản lý tài khoản trên hệ thống

Admin có thể quản lý các bến xe.

Hình 7: Quản lý bến xe

Admin chọn tab quản lý xe khách để quản lý các chuyến xe đã được tạo.

14
Hình 8: Quản lý chuyến xe

Ngoài ra, admin có thể xem các dữ liệu dự đoán cho các nhà xe để có chiến lược hiệu
quả hơn.

Hình 9: Phân tích dữ liệu hệ thống

Phiên bản demo chưa phát triển hoàn tất mà tập trung phát triển một số tính năng
chính và tiêu biểu trong hệ thống. Cụ thể được trình bày ở các mục bên dưới.

15
Ngoài ra, tài liệu demo có đính kèm link video giới thiệu nhằm mô tả rõ hơn về các
chức năng đã cài đặt.

● Màn hình người dùng: https://www.youtube.com/watch?v=rHrnhwhKX_Q


● Màn hình admin: https://www.youtube.com/watch?v=vg1SflUZhCY&t=7s

16
Phụ lục: Mục lục hình ảnh

Hình 1: Giao diện hệ thống “Tìm kiếm, khám phá chuyến đi” 8

Hình 2: Giao diện hệ thống hiển thị các chuyến đi đã đăng tải trên hệ thống 9

Hình 3: Giao diện hệ thống đăng ký chuyến đi 10

Hình 4: Giao diện trang thanh toán 11

Hình 5: Giao diện quản lý chuyến đi của người dùng 11

Hình 6: Giao diện quản lý tài khoản trên hệ thống 12

Hình 7: Quản lý bến xe 12

Hình 8: Quản lý chuyến xe 13

Hình 9: Phân tích dữ liệu hệ thống 13

17

You might also like