THÔNG TIN CHUNG
Môi trường phát triển ứng dụng dự kiến
Thông tin về nhóm
1 Lê Trần Gia Bảo 22520105 KHMT2022.1
PHÁT BIỂU BÀI TOÁN
Khảo sát hiện trạng
Trong bối cảnh đô thị hóa nhanh chóng, nhu cầu đỗ xe tăng cao dẫn đến tình trạng thiếu hụt không gian và gây ùn tắc giao thông Để giải quyết vấn đề đỗ xe một cách nhanh chóng, kiểm tra chỗ trống trong bãi đỗ, kết xuất doanh thu, và giúp việc tìm ra chỗ đỗ xe nhanh chóng giúp việc giảm thiểu khí thải khi xe chạy lòng vòng cần phải có một phần mềm giúp quản lí các vấn đề trên Đó là lí do nhóm em chọn đề tài “Phần mềm quản lí bãi đỗ xe thông minh”
1.1 Mục đích của đề tài
Phần mềm quản lí bãi đỗ xe thông minh là một giải pháp giúp giải quyết các vấn đề được đề cập ở trên, nâng cao hiệu quả trong việc giải quyết vấn đề thực tiễn ngày nay.
1.2 Các phần mềm cùng loại hiện đang có
Phần mềm quản lí bãi đỗ xe ở UIT
Phần mềm quản lí bãi đỗ xe ở VinHomes
1.3 Những hạn chế của vấn đề đó
Chưa cho biết vị trí đỗ xe xảy ra việc việc xe chạy lòng vòng để kiếm chỗ để
Chưa cho biết thông tin chỗ trống
Chưa có một bảng giúp tổng hợp thông tin doanh thu của bãi đỗ
Yêu cầu đặt ra cho hệ thống
Lập phiếu giữ xe theo ngày
Lập phiếu giữ xe theo tháng
Nhận trả tiền gửi xe
Thống kê số chỗ trống còn lại
Lập báo cáo doanh thu trong ngày hiện tại
Tra cứu hạn sử dụng phiếu tháng
2.1 Lập phiếu giữ xe theo ngày:
Chức năng này là chức năng quan trọng, nòng cốt của phần mềm, xe khi vào bãi sẽ được hệ thống cung cấp một mã phiếu, và sẽ được chọn đăng kí theo phiếu ngày.
- Xe tiến hành vào, dừng lại ở vị trí định sẵn sao cho biển số xe hiển thị rõ ràng trong camera
- Người quản lí sẽ tiến hành chụp ảnh biển số và lấy thông tin biển
- Người quản lí sẽ đăng kí thông tin gồm biển số, mã phiếu, loại phiếu (ngày), và loại xe.
- Sau khi đăng kí, cho xe vào bãi.
2.2 Lập phiếu giữ xe theo tháng:
Tương tự với chức năng 2.1, nhưng xe sẽ được chọn đăng kí theo dạng phiếu tháng (chỉ trả tiền một lần cho cả tháng)
- Nếu chưa có phiếu tháng, chủ xe vẫn chạy xe vào và dừng lại ở vị trí định sẵn sao cho camera thấy rõ biển số
- Người quản lí sẽ chụp biển số lại và trích xuất thông tin biển
- Người quản lí sẽ đăng kí thông tin gồm biển số, mã phiếu, loại phiếu (tháng), và loại xe.
- Sau khi đăng kí, cho xe vào bãi.
- Nếu đã có phiếu tháng, sau khi nhập mã phiếu thì thông tin sẽ được hiển thị ngay, và chủ xe có thể vào ngay lập tức, không cần thêm thông tin gì thêm
2.3 Nhận trả tiền gửi xe
Hệ thống sẽ tính xem xe đã ở bãi đỗ được bao nhiêu ngày, và sẽ tính giá gửi xe tương ứng với số ngày đó, trong trường hợp chủ xe có vé tháng, sẽ không tính tiền gửi xe.
- Chủ xe tiến hành chạy xe ra bãi, dừng lại ở nơi được quy định nhằm mục đích kiểm tra xem có phải là chiếc xe lưu trong phiếu không
- Người quản lí sẽ nhập mã phiếu đã cấp trước đó cho chủ phiếu, hệ thống sẽ cung cấp thông tin loại phiếu, và hình chụp của biển số xe lúc vào bãi ứng với mã phiếu đó Tiến hành kiểm tra tính hợp lệ
- Nếu là phiếu ngày, hệ thống sẽ tính tiền và chủ xe sẽ trả tiền theo như giá tính và rời bãi
- Nếu là phiếu tháng, sau khi kiểm tra hợp lệ xong chủ xe có thể rời bãi ngay.
2.4 Thống kê số chỗ trống còn lại
Hệ thống sau khi nhận xe vào bãi đỗ sẽ phát sinh một vị trí đỗ định trước cho chủ xe đỗ vào, và sẽ đánh dấu vị trí đó là đã đỗ, và xuất ra trên màn hình.
- Chủ xe sẽ nhận phiếu đỗ xe và tiến hành đỗ vào vị trí được định sẵn
- Người quản lí chuyển sang tab “Chỗ trống hiện tại”
- Hệ thống đánh dấu vị trí đó đã được đỗ và hiển thị trên màn hình
2.5 Lập báo cáo doanh thu trong ngày hiện tại
Hệ thống sẽ hiển thị thông tin báo cáo doanh thu trong ngày, đồng thời cả về tỉ lệ phân bố lượng xe vào trong ngày
- Người quản lí sẽ chuyển sang tab “Báo cáo”
- Hệ thống sẽ thu thập dữ liệu đã được lưu và sẽ tiến hành hiển thị thông tin lên màn hình.
2.6 Tra cứu hạn sử dụng phiếu tháng
Tính năng này nhóm chưa hoàn thành phát triển.
MÔ HÌNH USE-CASE
Đặc tả use-case
2.1 Đặc tả use-case lấy thông tin từ biển số xe:
Người quản lí lấy thông tin biển số thông qua hệ thống một cách tự động 2.1.1.1 Dòng sự kiện chính
1 Khi người quản lí đang ở trong phần mềm, chuyển sang tab “Xe vào” bằng cách nhấn chuột.
2 Người quản lí kiểm tra xem camera ở chiều xe vào đã được chọn đúng chưa (tránh nhầm lẫn với các camera khác nếu hệ thống kết nối với nhiều camera)
3 Nếu chưa, chọn lại camera cho đúng
4 Người quản lí hướng dẫn chủ xe để xe đúng vị trí (nếu chưa để đúng) và nhấn nút chụp, biển số xe sẽ được hiển thị trên màn hình ngay lập tức.
2.1.1.2 Các dòng sự kiện khác
- Nếu người quản lí nhấn chụp trong lúc không có xe nào đứng trong phần làn chỉ định để đọc biển số, hệ thống không trả lại thông tin biển số xe.
- Nếu người quản lí chọn sai camera cho phần làn xe vào, và có một biển số xe vô tình nằm trong tầm nhìn camera, khi người quản lí nhấn chụp, hệ thống trả lại thông tin biển số của biển số xe bị vô tình lọt vào đó. 2.1.2 Các yêu cầu đặc biệt
Người quản lí chọn đúng camera cho làn xe vào
2.1.3 Trạng thái hệ thống khi bắt đầu thực hiện use-case
Người dùng đã bật phần mềm
2.1.4 Trạng thái hệ thống sau khi thực hiện use-case
Hệ thống sẽ ở giao diện tab “Xe ra”
2.2 Đặc tả use-case lập phiếu giữ xe theo ngày/tháng
Hệ thống lập phiếu giữ xe ngày (hoặc tháng) theo yêu cầu của chủ xe
1 Người quản lí hỏi mong muốn lựa chọn phiếu ngày/tháng cho chủ xe, đồng thời nêu rõ quy định giá
2 Sau khi chủ xe lựa chọn, người quản lí chọn loại phiếu trong ô “Loại phiếu” trên màn hình và chọn loại xe trong ô “Loại xe”
3 Nhấn vào ô “lưu” và sau đó hệ thống sẽ xuất ra mã phiếu và vị trí để đỗ xe, đưa thông tin này cho chủ xe.
2.2.1.2 Các dòng sự kiện khác
- Nếu người quản lí bỏ trống ô “Loại phiếu” mà sau đó nhấn “lưu” thì hệ thống sẽ báo lỗi.
- Tương tự với trường hợp bỏ trống ô “Loại xe”
2.2.2 Các yêu cầu đặc biệt
- Bắt buộc phải điền ô loại phiếu và loại xe.
2.2.3 Trạng thái hệ thống khi bắt đầu thực hiện use-case
- Sau khi nhận dạng biển số xe xong
2.2.4 Trạng thái hệ thống sau khi thực hiện use-case
- Thành công: Xuất hộp thoại thông báo thành công, và vẫn ở tab gốc
- Thất bại: Xuất hộp thoại lỗi
Có cơ chế cho biết vị trí đỗ xe.
2.3 Đặc tả use-case đối chiếu biển số xe lúc vào/ra
Lúc cho xe xuất khỏi bãi, người quản lí yêu cầu chủ xe cung cấp phiếu, sau khi có phiếu người quản lí tra cứu trong hệ thống và sau đó đối chiếu biển số.
1 Chủ xe cung cấp mã phiếu cho người quản lí
2 Người quản lí tiến hành tra cứu trong phần mềm bằng cách nhập mã phiếu vào ô “Mã phiếu”
3 Hệ thống sẽ kiểm tra và nếu có tồn tại mã phiếu thì sẽ hiện biển số xe lúc xe vào bãi lên màn hình, và trong khung hình cũng sẽ hiển thị camera chiếu vô biển số xe ở làn ra để người quản lí đối chiếu
2.3.1.2 Các dòng sự kiện khác
- Trường hợp chủ xe không có mã phiếu hợp lệ, sẽ phải đóng phạt
- Trường hợp phát hiện biển số xe không giống nhau, người quản lí sẽ phân tích tình huống (nhầm phiếu, xe bị trộm) mà đưa ra cách xử lí phù hợp
2.3.2 Các yêu cầu đặc biệt
Bắt buộc phải là một mã phiếu hợp lệ có tồn tại trong hệ thống mới có thể tra cứu
2.3.3 Trạng thái hệ thống khi bắt đầu thực hiện use-case
Người quản lí đang ở giao diện tab “Xe ra”
2.3.4 Trạng thái hệ thống sau khi thực hiện use-case
- Nếu thành công: xuất thông tin biển số xe để đối chiếu
- Nếu thất bại (mã phiếu không hợp lệ): Hệ thống không in ra gì hết 2.3.5 Điểm mở rộng
2.5 Đặc tả use-case kiểm tra thời hạn phiếu gửi xe (phiếu tháng) *chưa hoàn thành*
2.6 Đặc tả use-case kiểm tra chỗ trống trong bãi
Người quản lí sẽ mở giao diện tab “Chỗ trống” ra, và hệ thống sẽ báo cáo trạng thái hiện tại của bãi đỗ xe.
1 Người quản lí mở giao diện tab “Chỗ trống”
2 Hệ thống tự động hiện ra tất cả các vị trí của bãi đỗ xe, và đồng thời đánh dấu các vị trí đã đỗ bằng màu xanh lá.
2.6.1.2 Các dòng sự kiện khác
2.6.2 Các yêu cầu đặc biệt
2.6.3 Trạng thái hệ thống khi bắt đầu thực hiện use-case
Phần mềm đang được bật
2.6.4 Trạng thái hệ thống sau khi thực hiện use-case
Phần mềm hiển thị đang ở tab “Chỗ trống”
2.7 Đặc tả use-case nhận thông tin báo cáo doanh thu
Người quản lí mở giao diện tab “Báo cáo”, hệ thống sẽ báo cáo doanh thu theo ngày và theo tháng.
1 Người quản lí mở giao diện tab “Báo cáo”
2 Hệ thống sẽ tự động hiển thị số lượng xe đang có trong bãi (phụ trợ để có cái nhìn tương quan trong bãi đỗ xe), tỉ lệ phần trăm các loại xe, số lượng phiếu được lập trong ngày, số lượng phiếu được lập trong tháng, doanh thu ngày, doanh thu tháng.
2.7.1.2 Các dòng sự kiện khác
2.7.2 Các yêu cầu đặc biệt
2.7.3 Trạng thái hệ thống khi bắt đầu thực hiện use-case
Phần mềm đang được bật.
2.7.4 Trạng thái hệ thống sau khi thực hiện use-case
Phần mềm đang hiển thị ở tab “Báo cáo”
PHÂN TÍCH
THIẾT KẾ DỮ LIỆU
Sơ đồ logic
1.1 Mô hình quan hệ ER
Mô tả chi tiết các kiểu dữ liệu trong sơ đồ logic
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ Ghi chú
1 MAPHIEU int Khóa chính Mã phiếu, tự động tạo ra khi có xe vào bãi
2 LOAIPHIEU string NOT NULL Loại phiếu
3 BIENSO string Biển số xe
4 LOAIXE string NOT NULL Loại xe
KEY Thời gian xe vào bãi
6 CHODAU int NOT NULL Vị trí đậu được đánh dấu
7 TRONGBAI string NOT NULL Xe đang có trong bãi hay không
STT Tên thuộc tính Kiểu Ràng buộc Ý nghĩa/ Ghi chú
KEY Ngày lập báo cáo
2 DOANHTHUNGAY int NOT NULL Doanh thu ngày đó
3 SO_OTO int NOT NULL Số ô tô vào bãi trong ngày
4 SO_XEMAY int NOT NULL Số xe máy vào bãi trong ngày
5 SO_XEDAP int NOT NULL Số xe đạp vào bãi trong ngày
THIẾT KẾ KIẾN TRÚC
Kiến trúc hệ thống
Mô hình 3-layer gồm có 3 phần chính:
– Presentation Layer (GUI): Lớp này có nhiệm vụ chính giao tiếp với người dùng.
Nó gồm các thành phần giao diện (win form, web form…) và thực hiện các công việc như nhập liệu, hiển thị dữ liêu, kiểm tra tính đúng đắn dữ liệu trước khi gọi lớp Business Logic Layer (BLL).
– Business Logic Layer (BLL): Layer này phân ra 2 thành nhiệm vụ:
Đây là nơi đáp ứng các yêu cầu thao tác dữ liệu của GUI layer, xử lý chính nguồn dữ liệu từ Presentation Layer trước khi truyền xuống Data Access Layer và lưu xuống hệ quản trị CSDL.
Đây còn là nơi kiểm tra các ràng buộc, tính toàn vẹn và hợp lệ dữ liệu, thực hiện tính toán và xử lý các yêu cầu nghiệp vụ, trước khi trả kết quả về Presentation Layer.
– Data Access Layer (DAL): Lớp này có chức năng giao tiếp với hệ quản trị CSDL như thực hiện các công việc liên quan đến lưu trữ và truy vấn dữ liệu (tìm kiếm, thêm, xóa, sửa…).
Việc phân chia thành từng lớp giúp cho code được tường minh hơn Nhờ vào việc chia ra từng lớp đảm nhận các chức năng khác nhau và riêng biệt như giao diện, xử lý, truy vấn thay vì để tất cả lại một chỗ Nhằm giảm sự kết dính.
Dễ bảo trì khi được phân chia, thì một thành phần của hệ thống sẽ dễ thay đổi Việc thay đổi này có thể được cô lập trong 1 lớp, hoặc ảnh hưởng đến lớp gần nhất mà không ảnh hưởng đến cả chương trình.
Dễ phát triển, tái sử dụng: khi chúng ta muốn thêm một chức năng nào đó thì việc lập trình theo một mô hình sẽ dễ dàng hơn vì chúng ta đã có chuẩn để tuân theo Và việc sử dụng lại khi có sự thay đổi giữa hai môi trường
(Winform sang Webfrom ) thì chỉ việc thay đổi lại lớp GUI.
Dễ bàn giao Nếu mọi người đều theo một quy chuẩn đã được định sẵn, thì công việc bàn giao, tương tác với nhau sẽ dễ dàng hơn và tiết kiệm được nhiều thời gian.
Dễ phân phối khối lượng công việc Mỗi một nhóm, một bộ phận sẽ nhận một nhiệm vụ trong mô hình 3 lớp Việc phân chia rõ ràng như thế sẽ giúp các lập trình viên kiểm soát được khối lượng công việc của mình.
Phân tích chi tiết từng layer trong mô hình 3 lớp.
Có hai thành phần chính sau đây với những tác vụ cụ thể:
UI Components: gồm các thành phần tạo nên giao diện của ứng dụng (GUI).Chúng chịu trách nhiệm thu nhận và hiển thị dữ liệu cho người dùng… Ví dụ: textbox, button, combobox, …
UI Process Components: là thành phần chịu trách nhiệm quản lý các quá trình chuyển đổi giữa các UI… Ví dụ: Sắp xếp quá trình kiểm tra thông tin khách hàng:
1 Hiển thị màn hình tra cứu ID
2 Hiển thị màn hình thông tin chi tiết khách hàng tương ứng
3 Hiển thị màn hình liên lạc với khách hàng.
Lớp này gồm 4 thành phần:
Service Interface: là thành phần giao diện lập trình mà lớp này cung cấp cho lớp Presentation sử dụng.
Bussiness Workflows: chịu trách nhiệm xác định và điều phối các quy trình nghiệp vụ gồm nhiều bước và kéo dài Những quy trình này phải được sắp xếp và thực hiện theo một thứ tự chính xác.
Ví dụ: Thực hiện mua một đơn hàng trên tiki qua nhiều bước: kiểm tra gói hàng còn không, tính tổng chi phí, cho phép giao dịch và sắp xếp việc giao hàng.
Bussiness Components: chịu trách nhiệm kiểm tra các quy tắc nghiệp vụ, ràng buộc logic và thực hiện các công việc Các thành phần này cũng thực hiện các dịch vụ mà Service Interface cung cấp và Business Workflows sẽ sử dụng nó.
Ví dụ: Tiếp tục ví dụ ở trên Bạn sẽ cần một Bussiness Component để kiểm tra gói hàng có khả dụng không, hay một component để tính tổng chi phí…
THIẾT KẾ GIAO DIỆN
Danh sách các màn hình
STT Tên màn hình Ý nghĩa/ Ghi chú
1 Màn hình tổng Đây là khuôn mẫu về giao diện cho các màn hình khác dùng chung, và có thể chuyển qua lại giữa các màn hình
2 Màn hình bảng điều khiển (xe vào)
Các chức năng giúp đưa xe vào bãi sẽ ở trong màn hình này
3 Màn hình bảng điều khiển (xe ra) Màn hình này chứa các chức năng đưa xe ra bãi
4 Màn hình hiển thị số chỗ trống còn lại
Màn hình này hiển thị toàn bộ bãi đỗ xe và các vị trí đã được đỗ
5 Màn hình báo cáo Màn hình này báo cáo lại doanh thu cũng như số phiếu đã được lập
Mô tả chi tiết các màn hình
*Lưu ý: đây là giao diện mà các tab đi sau đều phải tuân theo, nên nhóm em gọi đây là màn hình tổng, màn hình này đồng thời cũng giúp chuyển đổi qua lại các tab.
Các thành phần trong màn hình trên:
1 tab_XeVao Button Text O Chuyển sang tab Xe Vào
2 tab_XeRa Button Text O Chuyển sang tab Xe Ra
3 tab_ChoTrong Button Text O Chuyển sang tab Chỗ
4 tab_BaoCao Button Text O Chuyển sang tab Báo Cáo
5 nightControlBox1 Button O Phóng to/ Thu nhỏ/ Ẩn/
3.2 Màn hình bảng điều khiển (xe vào)
Các thành phần trong màn hình trên:
1 videoBox PictureBox O Hiển thị camera được chọn trong cboDevice
2 labelCam Label Text O Cho biết tác dụng của ô cboDevice
3 Capture_picture Button Text O Chụp hình
4 cboDevice Guna2.ComboBox Text O Cho phép chọn camera
5 labelMaPhieu Label Text O Cho biết cần điền mã phiếu
6 labelBienSo Label Text O Cho biết cần điền biển số xe
7 labelLoaiPhieu Label Text O Cho biết cần điền loại phiếu
8 labelLoaiXe Label Text O Cho biết cần điền loại xe
9 maPhieu TextBox Text I Ô để điền mã phiếu (tự động điền khi ấn nút
10 bienSo TextBox Text I Ô để điền biển xe(tự động điền khi ấn nút
11 loaiPhieu TextBox Text I Ô để điền loại phiếu
12 loaiXe TextBox Text I Ô để điền loại xe
13 saveButton Button Text I Nút để lưu phiếu vào hệ thống
14 Time Label Text O Hiển thị giờ
15 Date Lable Text O Hiển thị ngày
3.3 Màn hình bảng điều khiển (xe ra)
Các thành phần trong màn hình trên:
Cho biết hình trong imageBox là hình chụp biển số lúc xe vào để đối chiếu
2 imageBox PictureBox O Hiển thị hình chụp biển số xe lúc xe vào
3 timeBox Label Text O Hiển thị giờ
4 dayBox Label Text O Hiển thị ngày
5 labelMaPhieu Label Text O Cho biết cần nhập mã phiếu vàođể tra cứu ở ô bên cạnh
Cho biếtđây là biển số xe ứng với mã phiếu đã điền ở ô bên cạnh
7 labelLoaiPhieu Label Text O Cho biếtđây là loại xe ứng với mã phiếu đã điền ở ô bên cạnh
8 labelLoaiXe Label Text O Cho biếtđây là loại xe ứng với mã phiếu đã điền ở ô bên cạnh
9 time_In Label Text O Cho biếtđây là lúc phiếu được lập ra ở ô bên cạnh
10 labelPhi Label Text O Cho biếtđây là số ền phải trả ở ô bên cạnh
11 maPhieu TextBox Text I Nhận input mã phiếu từ người quản lí
12 bienSo TextBox Text O Hiển thị biển số xe
13 loaiPhieu TextBox Text O Hiển thị loại phiếu
14 loaiXe TextBox Text O Hiển thị loại xe
15 thoiGianVao TextBox Text O Hiển thị thời gian xe vào bãi
16 money TextBox Text O Hiển thị số tiền cần phải trả
17 xuatButton Button O Nútđể cho xe ra khỏi bãi
3.4 Màn hình hiển thị số chỗ trống còn lại
Các thành phần trong màn hình trên:
1 Label2Banh Label Text O Cho biết dãy ôở bên dưới là các vị trí dành cho xe 2 bánh
2 Label3Banh Label Text O Cho bi ế t dãy ôở bên dưới là các vị trí dành cho xe ô tô
Các ôđánh dấu vị trí dành cho xe 2 bánh và sẽ tô xanh nếu đã có xe đỗ
Hi ển thị Các ô đánh dấu vị trí dành cho xe ô tô và sẽ tô xanh nếu đã có xe đỗ ngày
Các thành phần trong màn hình trên:
1 label1 Label Text O Cho biết đây là bảng thống kê
2 label2 Label Text O Cho biết đây là bảng cho biết chỗ trống còn lại
3 label4 Label Text O Cho biết số phiếu ngày được phát hành
4 label5 Label Text O Cho biết số phiếu tháng được phát hành
5 label7 Label Text O Cho biết doanh thu tuần
6 label8 Label Text O Cho biết doanh thu tháng
7 carSlot Label Text O Cho biết số lượng chỗ trống dành cho xe ô tô trong bãi
8 motorSlot Label Text O Cho biết số lượng chỗ trống dành cho xe 2 bánh trong bãi
9 pictureBox1 PictureBox O Hình minh họa cho xe ô tô
10 pictureBox2 PictureBox O Hình minh họa cho xe máy
11 vehicleRateChart Chart O Biểu đồ cho biết tỉ lệ các loại xe trong bãi
12 phieuNgay Label Text O Cho biết số lượng phiếu ngày được lập
13 phieuThang Label Text O Cho biết số lượng phiếu tháng được lập
14 doanhThuTuan Label Text O Cho biết doanh thu đã kiếm được trong tuần
15 doanhThuThang Label Text O Cho biết doanh thu đã kiếm được trong tháng