Thiết kế hệ thống bãi giữ xe ô tô tự động
PHẦN I
HỆ THỐNG BÃI GIỮ XE ÔTÔ TỰ ĐỘNG
I.TÌM HIỂU VỀ BÃI GIỮ XE
Ngày nay ở các trung tâm thành phố lớn với sự phát triển mật độ dân cư và
xe cộ ngày càng đông đúc. Đặc biệt là sự gia tăng về số lượng xe ôtô ngày càng
nhiều và điều này phần nào cũng phản ánh sự phát triển của một quốc gia. Song
song với sự phát triển đó, người ta đặt vấn đề là xây dựng những bãi giữ xe để phục
vụ cho người dân trong công việc cũng như trong việc đi lại của họ. Vì thế, ngày
nay trên các nước tiên tiến trên thế giới như Nhật Bản, Hàn Quốc, ở những thành
phố chật hẹp, người ta xây dựng hệ thống bãi giữ xe ôtô tự động được trang bị thiết
bị nâng để di chuyển ôtô từ mặt đất lên điểm
đỗ trên cao(hệ thống nổi hoặc di chuyển xe
xuống điểm đỗ dưới lòng đất (hệ thống ngầm).
Đây là những giải pháp giúp tăng hơn 100 lần
số lượng xe trên một diện tích truyền thống,
cho phép giải quyết trình trạng thiếu mặt bằng
xây dựng.
Một số mô hình bãi xe thực tế ở một số nước __________________________
__________________________________________________ ______________
__________________________________________________ ______________
__________________________________________________ ______________
(Tài liệu dài 124 trang)
125 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2637 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Thiết kế hệ thống bãi giữ xe ô tô tự động, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ý:
Không được nhầm lẫn giữa hai đặc tính OutBufferCount và OutBufferSize với
nhau. Đặc tính OutBufferCount nói lên số byte hiện đang có trong bộ đệm truyền,
còn OutBufferSize qui định tổng kích thước của bộ đệm truyền.
Không nên để kích thước của bộ đệm truyền quá lớn. Tuy nhiên, nếu để quá
nhỏ sẽ xảy ra hiện tượng tràn dữ liệu (trừ khi làm việc ở chế độ bắt tay). Thông
Phần IV: Truyền thông nối tiếp dùng Visual Basic Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 57
thường nên bắt đầu kích thước bộ đệm truyền 512 bytes. Nếu lỗi tràn xảy ra phải
tăng kích thước bộ đệm thích hợp.
Đặc tính OutBufferCount:
Đặc tính này trả lại số ký tự trong bộ đệm truyền. Nhờ đặc tính này, ta có thể
xoá nội dung bộ đệm truyền bằng cách đặt giá trị của OutBufferCount=0.Cú pháp
của câu lệnh này là:
[form]Mscomm.OutBufferCount[=value%]
Kiểu dữ liệu của đặc tính này là Integer.
Đặc tính SThreshold
Đặt và trả lại số ký tự tối thiểu của các ký tự có thể cho phép trong bộ đệm
truyền trước khi điều khiển truyền thông xác lập đặc tính CommEvent và phát sinh
sự kiện OnComm. Xác lập đặc tính SThreshold bằng 0 để vô hiệu hoá sự phát sinh
sự kiện OnComm. Ngược lại, nếu đặt SThreshold bằng 1 thì điều khiển truyền
thông phát sinh sự kiện OnComm (sự kiện OnComm được gọi) khi bộ đệm truyền
không có dữ liệu (hay bộ đệm truyền rỗng). Cú pháp của câu lệnh này là :
[form}MScomm.SThreshold[=numChars%]
II.CƠ SỞ DỮ LIỆU
1. Giới thiệu Cơ sở dữ liệu
Cơ sở dữ liệu là một kho chứa thông tin. Có nhiều loại cơ sở dữ liệu, nhưng
trong đề tài này chỉ quan tâm đến cơ sở dữ liệu quan hệ, là kiểu cơ sở dữ liệu phổ
biến nhất hiện nay.
Một cơ sở dữ liệu quan hệ:
Chứa dữ liệu trong các bảng, được cấu tạo bởi các dòng còn gọi là các mẩu tin,
và cột còn gọi là các trường
Cho phép lấy về (hay truy vấn) các tập hợp dữ liệu con từ các bảng.
Cho phép nối các bảng với nhau cho mục đích truy nhập các mẩu tin liên quan
với nhau chứa trong các bảng khác nhau.
Phần IV: Truyền thông nối tiếp dùng Visual Basic Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 58
Thiết kế cơ sở dữ liệu :
Để tạo một cơ sở dữ liệu, trước hết, ta phải xác định thông tin gì cần theo dõi.
Sau đó, ta thiết kế cơ sở dữ liệu, tạo bảng chứa các trường định nghĩa kiểu dữ liệu
sẽ có. Sau khi tạo ra cấu trúc cơ sở dữ liệu, cơ sở dữ liệu có thể chứa dữ liệu dưới
dạng mẩu tin. Ta không thể đưa dữ liệu vào mà không có bảng hay định nghĩa
trường vì dữ liệu sẽ không có chổ để chứa. Do đó, thiết kế cơ sở dữ liệu cực kỳ
quan trọng, nhất là rất khó thay đổi thiết kế một khi ta đã tạo xong nó.
Bảng ( tables ): chứa các mẩu tin là các mẩu dữ liệu riêng rẽ bên trong phân
nhóm dữ liệu.
Mẩu tin : chứa các trường( field ) . Mỗi trường thể hiện một bộ phận dữ liệu
trong một mẩu tin. Ví dụ như mổi mẩu tin thể hiện một mục trong danh bạ địa chỉ
chứa các trường tên và họ, địa chỉ, thành phố, số điện thoại.
Recordset là một cấu trúc dữ liệu thể hiện một tập hợp con các mẩu tin lấy về
từ cơ sở dữ liệu. Về khái niệm, nó tương tự một bảng nhưng có thêm một vài thuộc
tính riêng biệt quan trọng.
Các recordset được thể hiện như là các đối tượng, về khái niệm tương tự như
là các đối tượng giao diện người sử dụng ( như là một nút lệnh và hộp văn bản trong
Visual Basic)
2. Sử dụng Microsoft Access để tạo một cơ sở dữ liệu
Microsoft Access có một giao diện tinh xảo và dể dàng để tạo các đối tượng cơ
sở dữ liệu . Quan hệ giữa các bảng
a.Quan hệ Một - Một
Là loại quan hệ dễ hiểu và dể thực hiện nhất, bởi vì trong những mối quan hệ
như vậy, một bảng sẽ lấy vị trí của một trường trong bảng khác; trường liên quan
cũng dễ nhận dạng. Tuy nhiên, quan hệ một - một không phải là mối quan hệ thông
dụng nhất trong ứng dụng cơ sở dữ liệu.
b.Quan hệ Một - Nhiều
Phần IV: Truyền thông nối tiếp dùng Visual Basic Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 59
Phổ biến hơn quan hệ Một - Một, trong đó, mỗi mẩu tin trong một bảng này
không có, hoặc có một, hoặc nhiều mẩu tin trong một bảng liên hệ
c.Quan hệ Nhiều - Nhiều
Quan hệ Nhiều - Nhiều là bước phát triển của quan hệ Một - Nhiều. Ví dụ cổ
điển nhất của quan hệ Nhiều - Nhiều là học sinh và lớp. Mổi học sinh có nhiều lớp,
mỗi lóp có nhiều học sinh.
3.Liên kết Cơ sở dữ liệu( Access ) với Visual Basic
a.Sử dụng điều khiển DAO DATA
Ta có thể sử dụng điều khiển DAO Data để kết nối với một cơ sở dữ liệu Jet
của Microsoft. Mặc dù với sự xuất hiện của điều khiển mạnh hơn, ADO Data, việc
sử dụng điều khiển DAO Data bị giảm bớt, nhưng vẫn tồn tại lý do để sử dụng điều
khiển cổ điển DAO Data. Ngoài ra, nó còn có khả năng kết nối với các nguồn dữ
liệu như các tập tin dBASE, văn bản, bảng tính Excel.
b.Sử dụng điều khiển ADO DATA
Để tạo một ứng dụng dùng điều khiển ADO Data rất đơn giản. Thực ra, nếu
những gì ta quan tâm chỉ là duyệt cơ sở dữ liệu thì ta không cần phải lập trình gì cả.
Đây là một quy trình gồm hai bước quy định thuộc tính ConnectionString và
RecordSource của điều khiển Data, sau đó ràng buộc điều khiển với điều khiển giao
diện người sử dụng. Để thực hiện điều này, ta theo các bước sau:
Bắt đầu một đề án mới của Visual Basic
Dùng menu Project Components, lập trình tham chiếu đến “Microsoft ADO
Data Control 6.0 (OLEDB) bằng cách chọn vào hộp đánh dấu trong danh sách.
Nhấn OK. Điều khiển ADO Data xuất hiện trên thanh công cụ của Visual
Basic. Nhấn đúp chuột lên điều khiển để tạo một instance của điều khiển trên biểu
mẩu.
Hình 7: Điều khiển ADO Data
Phần IV: Truyền thông nối tiếp dùng Visual Basic Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 60
Nhấn nút phải chuột lên điều khiển. Từ menu bật ra, chọn ADODC
Properties. Chọn “User Connection Srting” rồi nhấn Build.
Hộp thoại Data Link Properties xuất hiện. Đây là hộp thoại ta dùng để kết
nối với cơ sở dữ liệu. Sau đó nhấn nút OK khi hoàn tất.
Đến đây bạn đã quay lại hộp thoại Property Pages của điều khiển ADO Data.
Kế tiếp, ta thông báo cho điều khiển bảng nào sẽ được dùng. Chọn tab
RecordSource, rồi chọn 2 – adCmdTable từ hộp kết hợp CommandType.
Chọn hợp kết hợp Table ỏ Stored Procedure Name. Hộp kết hợp hiển thị
danh sách tất cả các bảng trong cơ sở dữ liệu. Chọn tblCustomer, rồi nhấn OK.
Kết nối đến cơ sở dữ liệu xảy ra khi ứng dụng thi hành. Tuy nhiên kết nối
không có thông báo, bởi vì không có cách nào để hiển thị dữ liệu. Để hiển thị dữ
liệu trả về từ một điều khiển dữ liệu, ta phải tạo các điều khiển kết nối ràng buộc
với điều khiển dữ liệu bằng cách gán thuộc tính Datasource và DataField.
Cài đặt và thiết lập tham chiếu đến ADO trong ứng dụng Visual Basic
Trong đề án Visual Basic, chọn Project, References.
Hộp thoại References xuất hiện.
Chọn vào hộp đánh dấu “Microsoft AtiveX Data Objects 2.0 Library” rồi
nhấn OK.
Dùng đối tượng Connection của ADO để kết nối với nguồn dữ liệu
Đây là cách thứ hai liên kết với nguồn dữ liệu mà không thông qua điều khiển
ADO Data.
Dùng phương thức Open của đối tượng Connection để thiết lập kết nối với
nguồn dữ liệu. Để thông báo cho ADO cách nối với nguồn dữ liệu, ta phải cung cấp
thông tin dưới dạng chuỗi kết nối tương tự chuỗi kết nối của ODBC. Ta dùng thuộc
tính ConnectionString để thực hiện điều này. Ta còn có khả năng tùy chọn để chọn
trình cung cấp nào sẽ được dùng bằng cách quy định giá trị của thuộc tính Provider
của đối tượng Connection.
Ví dụ: Cách khai báo biến kết nối với nguồn dữ liệu
Phần IV: Truyền thông nối tiếp dùng Visual Basic Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 61
Option Explicit
Dim dl as New ADODB. Connection ‘ Biến kết nối với nguồn dữ liệu
Dim rs as New ADODB. Recordset ‘ Biến truy cập đến các bảng trong nguồn dữ
liệu
Public Sub ADOconnect()
Dim dbpath As String
dbpath = App.Path & "\DATA.mdb" ‘ đường dẩn đến nguồn dữ liệu
Set DL = New ADODB.Connection
With DL
.ConnectionString = "Provider=microsoft.jet.oledb.4.0; data source=" & bpath
.CommandTimeout = 0
.CursorLocation = adUseClient
.Open
End With
End Sub
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 62
PHẦN V
LẬP TRÌNH ỨNG DỤNG
I.PHÂN TÍCH CÁC NGÕ VÀO RA
Qui ước
Bãi xe chứa tối đa 100 xe.
Khi bãi xe trống đèn xanh sáng cho phép xe vào, khi bãi xe đầy, đèn đỏ
sáng báo hiệu xe không được vào.
Cảm biến S1 là cảm biến từ đặt dưới mặt đất trước cửa vào để nhận biết có
xe vào bãi xe.
Cảm biến S5 là cảm biến quang đặt sau cửa vào để biết xe đã vào bãi xe để
đóng cửa vào đồng thời S5 cũng là cảm biến phân loại cho xe 4 chỗ vào bãi xe.
Cảm biến S4 là cảm biến quang đặt ở độ cao 2m để loại bỏ sự phân loại cho
xe 4 chỗ vào. Khi đồng thời chỉ 2 cảm biến S4 và S5 nhận biết được tín hiệu tức là
có xe 7 chỗ vào bãi xe.
Cảm biến S3 là cảm biến quang đặt cách cảm biến quang S5 một khoảng cách
khoảng 4m để loại bỏ sự phân loại của xe 4 chỗ và xe 7 chỗ vào bãi xe. Khi đồng
thời cả 3 cảm biến S5, S4 và S3 nhận biết được tín hiệu tức là có xe 12 chỗ vào bãi
xe.
Cảm biến S2 là cảm biến quang đặt cách cảm biến quang S5 một khoảng cách
khoảng 8m để loại bỏ sự phân loại xe 4 chỗ, xe 7 chỗ và xe 12 chỗ vào bãi xe. Khi
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 63
đồng thời cả 4 cảm biến S5, S4, S3 và S2 nhận biết được tín hiệu tức là có xe 30 chỗ
vào bãi xe.
Cảm biến S6 là cảm biến từ đặt dưới mặt đất trước cửa ra để nhận biết có xe
ra.
Cảm biến S10 là cảm biến quang đặt sau cửa ra để biết xe đã ra khỏi bãi xe để
đóng cửa ra đồng thời S10 cũng là cảm biến phân loại cho xe 4 chỗ ra khỏi bãi xe.
Cảm biến S9 là cảm biến quang đặt ở độ cao 2m để loại bỏ sự phân loại cho
xe 4 chỗ ra khỏi bãi xe. Khi đồng thời chỉ 2 cảm biến S10 và S9 nhận biết được tín
hiệu tức là có xe 7chỗ ra khỏi bãi xe.
Cảm biến S8 là cảm biến quang đặt cách cảm biến quang S10 một khoảng
cách khoảng 4m để loại bỏ sự phân loại của xe 4 chỗ và xe 7 chỗ ra khỏi bãi xe.Khi
đồng thời cả 3 cảm biến S10, S9 và S8 nhận biết được tín hiệu tức là có xe 12 chỗ ra
khỏi bãi xe.
Cảm biến S7 là cảm biến quang đặt cách cảm biến quang S10 một khoảng
cách khoảng 8m để loại bỏ sự phân loại xe 4 chỗ, xe 7 chỗ và xe 12 chỗ ra khỏi bãi
xe. Khi đồng thời cả 4 cảm biến S10, S9, S8 và S7 nhận biết được tín hiệu tức là có xe
30 chỗ ra khỏi bãi xe.
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 64
Mô hình bãi giữ xe
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 65
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 66
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 67
Qui định các ngõ vào ra , Timer và Counter
Các ngõ vào :
Cảm biến S1:
I0.0 = 0 : không có xe
I0.0 = 1 : có xe
Cảm biến S2 :
I0.1 = 0 : không có xe
I0.1 = 1 : có xe
Cảm biến S3 :
I0.2 = 0 : không có xe
I0.2 = 1 : có xe
Cảm biến S4 :
I0.3 = 0 : không có xe
I0.3 = 1 :có xe
Cảm biến S5 :
I0.4 = 0 : không có xe
I0.4 = 1 : có xe
Cảm biến S6 :
I0.5 = 0 : không có xe
I0.5 = 1 : có xe
Cảm biến S7 :
I0.6 = 0 : không có xe
I0.6 = 1 : có xe
Cảm biến S8 :
I0.7 = 0 : không có xe
I0.7 = 1 : có xe
Cảm biến S9 :
I1.0 = 0 : không có xe
I1.0 = 1 : có xe
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 68
Cảm biến S10:
I1.1 = 0 : không có xe
I1.1 = 1 : có xe
Công tắc hành trình dưới tại cửa vào (CT1)
I1.2 = 0 : khi không bị thanh gạt tác động
I1.2 = 1 : khi bị thanh gạt tác động
Công tắc hành trình trên tại cửa vào (CT2)
I1.3 = 0 : khi không bị thanh gạt tác động
I1.3 = 1 : khi bị thanh gạt tác động
Công tắc hành trình dưới tại cửa ra (CT3)
I1.4 = 0 : khi không bị thanh gạt tác động
I1.4 = 1 : khi bị thanh gạt tác động
Công tắc hành trình trên tại cửa ra (CT4)
I1.5 = 0 : khi không bị thanh gạt tác động
I1.5 = 1 : khi bị thanh gạt tác động
Các ngõ ra :
Cửa vào :
Q0.0 = 0 : không mở cửa
Q0.0 = 1 : mở cửa
Q0.1 = 0 : không đóng cửa
Q0.1 = 1 : đóng cửa
Cửa ra :
Q0.2 = 0 : không mở cửa
Q0.2 = 1 : mở cửa
Q0.3 = 0 : không đóng cửa
Q0.3 = 1 : đóng cửa
Đèn xanh :
Q0.4 = 0 : đèn xanh tắt
Q0.4 = 1 : đèn xanh sáng
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 69
Đèn đỏ :
Q0.5 = 0 : đèn đỏ tắt
Q0.5 = 1 : đèn đỏ sáng
Đèn chiếu sáng :
Q0.6 = 0 : không bật đèn
Q0.6 = 1 : bật đèn
Sự cố :
Q1.0 = 0 : không có sự cố
Q1.0 = 1 : có sự cố
Counter :
C48 đếm xe 4 chỗ hiện có trong bãi xe.
C49 đếm xe 7 chỗ hiện có trong bãi xe.
C50 đếm xe 12 chỗ hiện có trong bãi xe.
C51 đếm xe 30 chỗ hiện có trong bãi xe.
C52 chứa kết quả của xe 7 chỗ nhân 2.
C53 chứa kết quả của xe 12 chỗ nhân 3.
C54 chứa kết quả của xe 30 chỗ nhân 4.
C55 chứa kết quả cộng của C48 và C52
C56 chứa kết quả cộng của C53 và C54
C57 chứa kết quả cộng của C55 và C56 (C57 chứa tổng số xe hiện
còn trong bãi xe).
Timer :
T37 là thời gian tối đa để mở cửa vào.
T38 là thời gian tối đa để mở cửa ra.
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 70
Bắt đầu
Có xe vào
Mở cửa vào
Mở xong
Ngừng mở
Kích Timer
<10s
Xe đã vào
Phân loại xe
vào
Xe 4 chỗ
Xe 7 chỗ
Xe 12 chỗ
Xe 30 chỗ
Đếm xe vào
( xe 4 chỗ + xe 7 chỗ x 2 +
xe 12chỗ x 3 + xe 30chỗ x 4)
Hiệu số
Có xe ra
Mở cửa ra
Mở xong
Ngừng mở
Kích Timer
<10s
Xe đã ra
Phân loại xe ra
Tính tiền
Y
Y
N
N
Đóng cửa vào
Đóng xong
Đếm xe ra
( xe 4 chỗ + xe 7 chỗ x 2 +
xe 12chỗ x 3 + xe 30chỗ x 4)
Đóng cửa ra
Đóng xong
Ngưng đóng Kết thúc
N
Y
N
Y
Y
N
Xekhácvào Y
N
Y
Y
Y
Y
N
N
N
Xe khác ra
Y
Y
Y
Y
Y
Y
Y
Y
N
N
Y
<100
Đèn xanh
CAR
EMPTY
Đèn đỏ
CAR FULL
PART
Y N
Ngưng đóng
N
N
II. LƯU ĐỒ GIẢI THUẬT
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 71
III.GIAO DIỆN GIAO TIẾP MÁY TÍNH
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 72
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 73
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 74
IV.VIẾT CODE CHO GIAO DIỆN
Code Form Giao diện giao tiếp
Option Explicit
Dim Nhan() As Byte
' KHAI BAO BIEN DE KET NOI CSDL
Dim sqlLuuDL As String
Public rsLuuDL As New ADODB.Recordset
Dim sqlXera As String
Public rsCapnhatXera As New ADODB.Recordset
Dim sqlPhanloaixe As String
Dim rsPhanloaixe As New ADODB.Recordset
Public Soxe As String
Public Loaixe As String
Dim sott As Integer
Public ngayvao As Date
Dim giovao As String
Dim ngayra As Date
Dim giora As String
Public thanhtien As Double
Public thoigian As String
Private Sub Chitiet_Click()
Load Baixe
Baixe.Show
End Sub
Private Sub ClosePort_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
OPENPORT.Enabled = True
sco.Enabled = True
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 75
End If
End Sub
Private Sub CmbXera_Click()
Dim soxe1 As String
soxe1 = CmbXera.Text
rsCapnhatXera.Find "[so xe] = '" & soxe1 & "'", , , adBookmarkFirst
If Not rsCapnhatXera.EOF Then
txtLoaixera.Text = rsCapnhatXera.Fields(1)
End If
End Sub
Private Sub CmbXera_Change()
Dim soxe1 As String
soxe1 = CmbXera.Text
rsCapnhatXera.Find "[so xe] = '" & soxe1 & "'", , , adBookmarkFirst
If Not rsCapnhatXera.EOF Then
txtLoaixera.Text = rsCapnhatXera.Fields(1)
End If
End Sub
Private Sub cmdBoqua_Click()
txtSoxevao.Text = ""
CmbLoaixevao.Text = "Chon loai xe"
CmbXera.Text = "Xe ra"
txtLoaixera.Text = "Chon loai xe"
txtSoxevao.Enabled = False
CmbLoaixevao.Enabled = False
CmbXera.Enabled = False
txtLoaixera.Enabled = False
CmdLuuVao.Enabled = False
CmdLuuRa.Enabled = False
End Sub
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 76
Private Sub CmdPhanloaixe_Click()
Load Form5
Form5.Show
End Sub
Private Sub lbxevao_Click()
txtSoxevao.Enabled = True
CmbLoaixevao.Enabled = True
CmbXera.Enabled = False
txtLoaixera.Enabled = False
lbxevao.ForeColor = &HFF0000
txtLoaixera.Text = "Loai xe ra"
CmbXera.Text = "Xe ra"
txtSoxevao.Text = ""
CmdLuuRa.Enabled = False
CmdLuuVao.Enabled = True
cmdBoqua.Enabled = True
End Sub
Private Sub lbxera_Click()
CmdLuuVao.Enabled = False
CmdLuuRa.Enabled = True
cmdBoqua.Enabled = True
txtSoxevao.Text = "Xe vao"
txtSoxevao.Enabled = False
CmbLoaixevao.Enabled = False
CmbXera.Enabled = True
txtLoaixera.Enabled = True
txtLoaixera.Locked = True
lbxera.ForeColor = &HFF0000
sqlXera = "SELECT * FROM CHITIET"
Set rsCapnhatXera = LayDL(sqlXera)
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 77
rsCapnhatXera.Sort = "[so xe] ASC"
If rsCapnhatXera.RecordCount > 0 Then
rsCapnhatXera.MoveFirst
Do While Not rsCapnhatXera.EOF
CmbXera.AddItem rsCapnhatXera.Fields(2)
rsCapnhatXera.MoveNext
Loop
rsCapnhatXera.MoveFirst
CmbXera.Text = rsCapnhatXera.Fields(2)
txtLoaixera.Text = rsCapnhatXera.Fields(1)
End If
End Sub
Private Sub CmdLuuVao_Click()
Dim Error As Integer
TIEP.Enabled = True
sqlLuuDL = "select * from chitiet"
Error = kiemtra
Set rsLuuDL = LayDL(sqlLuuDL)
If Error = 0 Then
If Val(CmbLoaixevao.Text) = False Then
MsgBox "Loai xe vao chi duoc chon gia tri tu 1 den 4 "
CmbLoaixevao.Text = ""
Exit Sub
End If
If Val(CmbLoaixevao.Text) > 4 Then
MsgBox "Loai xe khong duoc lon hon 4"
CmbLoaixevao.Text = ""
Exit Sub
End If
rsLuuDL.AddNew
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 78
GhiDL rsLuuDL
LuuDL rsLuuDL
txtSoxevao.Text = ""
CmbLoaixevao.Text = ""
End If
If Error = 1 Then
MsgBox "Vui long nhap so xe!"
Exit Sub
End If
If Error = 2 Then
MsgBox "Vui long chon loai xe!"
Exit Sub
End If
If Error = 3 Then
MsgBox "So xe chi duoc nhap 7 ki tu!"
txtSoxevao.Text = ""
Exit Sub
End If
If Error = 4 Then
MsgBox "Loai xe chi duoc chon tu 1 den 4!"
CmbLoaixevao.Text = ""
Exit Sub
End If
End Sub
Private Sub GhiDL(rs As ADODB.Recordset)
Dim s As String
Dim MALN As Variant
Dim tam As Variant
Dim rsDem As New ADODB.Recordset
s = "select * from chitiet"
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 79
Set rsDem = LayDL(s)
MALN = 0
Do While (Not rsDem.EOF)
tam = rsDem![stt]
If (MALN < tam) Then
MALN = tam
End If
rsDem.MoveNext
Loop
MALN = MALN + 1
rs.Fields(0) = MALN
rs.Fields(1) = CmbLoaixevao.Text
rs.Fields(2) = txtSoxevao.Text
rs.Fields(3) = Date
rs.Fields(4) = Time
rs.Fields(5) = 0
rs.Fields(6) = 0
rs.Fields(7) = 0
rs.Fields(8) = 0
Set rsDem = Nothing
End Sub
Private Sub Sco_Click()
Timer18.Enabled = False
MSComm1.Output = "a"
Timer18.Enabled = True
sco.Enabled = False
End Sub
Private Sub Exit_Click()
Call ClosePort_Click
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 80
End
End Sub
Private Sub Form_mousemove(button As Integer, shift As Integer, X As Single, Y
As Single)
lbxevao.FontUnderline = False
lbxevao.ForeColor = &HFF&
End Sub
Private Sub lbxevao_mousemove(button As Integer, shift As Integer, X As Single,
Y As Single)
lbxevao.FontUnderline = True
lbxevao.ForeColor = &HC000C0
lbxera.FontUnderline = False
lbxera.ForeColor = &HFF0000
End Sub
Private Sub lbxera_mousemove(button As Integer, shift As Integer, X As Single, Y
As Single)
lbxera.FontUnderline = True
lbxera.ForeColor = &HC000C0
lbxevao.FontUnderline = False
lbxevao.ForeColor = &HFF0000
End Sub
Private Sub Form_Load()
'---------------------------------------------------------------'
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
App.Path & "\baigiuxe.mdb;Persist Security Info=False"
cnn.CursorLocation = adUseClient
cnn.Open
txtSoxevao.Enabled = False
CmbXera.Enabled = False
CmbLoaixevao.Enabled = False
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 81
txtLoaixera.Enabled = False
txtSoxevao.Text = " Xe vao"
CmdLuuVao.Enabled = False
CmdLuuRa.Enabled = False
cmdBoqua.Enabled = False
Dim i As Integer
For i = 1 To 4
Me.CmbLoaixevao.AddItem i
Next i
'--------------------------------------------------------------'
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
MSComm1.RThreshold = 11
MSComm1.InputMode = comInputModeBinary
MSComm1.PortOpen = True
OPENPORT.Enabled = True
CLOSEPORT.Enabled = False
Timer18.Enabled = True
End Sub
Private Sub OpenPort_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
MSComm1.PortOpen = True
Timer18.Enabled = True
Timer19.Enabled = True
OPENPORT.Enabled = False
CLOSEPORT.Enabled = True
End Sub
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 82
Private Sub MSComm1_OnComm()
If MSComm1.InBufferCount >= 11 Then MSComm1.InputLen = 0
Nhan() = MSComm1.Input
Dim i, j, k, l, m, n, o, p, q, r, s As Integer
i = Nhan(0)
j = Nhan(1)
k = Nhan(2)
l = Nhan(3)
m = Nhan(4)
n = Nhan(5)
o = Nhan(6)
p = Nhan(7)
q = Nhan(8)
r = Nhan(9)
s = Nhan(10)
Text3.Text = o 'xe 4 cho
Text4.Text = p 'xe 7 cho
Text5.Text = q 'xe 12 cho
Text6.Text = r 'xe 30 cho
Text7.Text = s 'tong so xe
If i = 1 Then 'mo cua vao
Timer1.Enabled = True
Cuavao.Text = " MỞ "
If XanhVao.Visible = False Then
XanhVao.Visible = True
TatXanhVao.Visible = False
DoVao.Visible = False
TatDoVao.Visible = True
End If
If CTraiVao.Width = 495 And CPhaiVao.Width = 495 Then
Do
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 83
CTraiVao.Width = CTraiVao.Width - 1
CPhaiVao.Width = CPhaiVao.Width - 1
CPhaiVao.Left = CPhaiVao.Left + 1
Loop Until CTraiVao.Width = 15 And CPhaiVao.Width = 15
End If
End If
If i = 2 Then 'dong cua vao
Timer1.Enabled = True
Cuavao.Text = " ĐÓNG "
If XanhVao.Visible = True Then
XanhVao.Visible = False
TatXanhVao.Visible = True
DoVao.Visible = True
TatDoVao.Visible = False
End If
If CTraiVao.Width = 15 And CPhaiVao.Width = 15 Then
Do
CTraiVao.Width = CTraiVao.Width + 1
CPhaiVao.Width = CPhaiVao.Width + 1
CPhaiVao.Left = CPhaiVao.Left - 1
Loop Until CTraiVao.Width = 495 And CPhaiVao.Width = 495
End If
End If
If j = 1 Then 'mo cua ra
Timer2.Enabled = True
Cuara.Text = " MỞ "
If XanhRa.Visible = False Then
XanhRa.Visible = True
TatXanhRa.Visible = False
DoRa.Visible = False
TatDoRa.Visible = True
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 84
End If
If CTraiRa.Width = 495 And CPhaiRa.Width = 495 Then
Do
CTraiRa.Width = CTraiRa.Width - 1
CPhaiRa.Width = CPhaiRa.Width - 1
CPhaiRa.Left = CPhaiRa.Left + 1
Loop Until CTraiRa.Width = 15 And CPhaiRa.Width = 15
End If
End If
If j = 2 Then 'dong cua ra
Timer2.Enabled = True
Cuara.Text = " ĐÓNG "
If XanhRa.Visible = True Then
XanhRa.Visible = False
TatXanhRa.Visible = True
DoRa.Visible = True
TatDoRa.Visible = False
End If
If CTraiRa.Width = 15 And CPhaiRa.Width = 15 Then
Do
CTraiRa.Width = CTraiRa.Width + 1
CPhaiRa.Width = CPhaiRa.Width + 1
CPhaiRa.Left = CPhaiRa.Left - 1
Loop Until CTraiRa.Width = 495 And CPhaiRa.Width = 495
End If
End If
If k = 1 Then 'bai xe trong
Timer3.Enabled = True
TTrang.Text = " TRỐNG XE "
If XanhTrong.Visible = False Then
XanhTrong.Visible = True
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 85
TatXanhTrong.Visible = False
DoDay.Visible = False
TatDoDay.Visible = True
End If
End If
If k = 2 Then 'bai xe day
Timer3.Enabled = True
TTrang.Text = " ĐẦY XE "
If XanhTrong.Visible = True Then
XanhTrong.Visible = False
TatXanhTrong.Visible = True
DoDay.Visible = True
TatDoDay.Visible = False
End If
End If
If l = 1 Then ' mo den chieu sang
Timer5.Enabled = True
HTDen.Text = " MỞ "
If XanhDen.Visible = False Then
XanhDen.Visible = True
TatXanhDen.Visible = False
DoDen.Visible = False
TatDoDen.Visible = True
End If
End If
If l = 2 Then 'tat den chieu sang
Timer5.Enabled = True
HTDen.Text = " TẮT "
If XanhDen.Visible = True Then
XanhDen.Visible = False
TatXanhDen.Visible = True
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 86
DoDen.Visible = True
TatDoDen.Visible = False
End If
End If
If m = 1 Then
CmbLoaixevao.Text = "1"
End If
If m = 2 Then
CmbLoaixevao.Text = "2"
End If
If m = 3 Then
CmbLoaixevao.Text = "3"
End If
If m = 4 Then
CmbLoaixevao.Text = "4"
End If
If n = 1 Then
txtLoaixera.Text = "1"
End If
If n = 2 Then
txtLoaixera.Text = "2"
End If
If n = 3 Then
txtLoaixera.Text = "3"
End If
If n = 4 Then
txtLoaixera.Text = "4"
End If
End Sub
Private Sub CmdLuuRa_Click()
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 87
Dim gio1 As Integer
Dim phut1 As Integer
Dim tam1 As Integer
Dim tam2 As Integer
Dim tam3 As Integer
Dim gio2 As Integer
Dim phut2 As Integer
Dim gio3 As Integer
Dim phut3 As Integer
Dim Gia As Double
sqlXera = "select [so xe], [loai xe] from chitiet where [so xe] like '" &
CmbXera.Text & "' and [loai xe] like '" & txtLoaixera.Text & "' "
Set rsCapnhatXera = LayDL(sqlXera)
If (rsCapnhatXera.BOF = True And rsCapnhatXera.EOF = True) Then
MsgBox ("Khong co so xe nay, hay chon trong combo so xe!")
Else
rsCapnhatXera.MoveFirst
sqlXera = "select * from chitiet"
Set rsCapnhatXera = LayDL(sqlXera)
sqlXera = "select stt from chitiet where [so xe] = '" & Soxe & "' and [loai
xe]='" & Loaixe & "' "
sott = rsCapnhatXera.Fields(0)
Soxe = CmbXera.Text
Loaixe = txtLoaixera.Text
sqlXera = "UPDATE chitiet SET [ngay ra] = '" & Date & _
"' WHERE [loai xe] = '" & Loaixe & "' and [so xe] = '" & Soxe & "'" 'and [stt] =
'" & Val(sott) & "' "
Set rsCapnhatXera = LayDL(sqlXera)
sqlXera = "UPDATE chitiet SET [gio ra] = '" & Time & _
"' WHERE [loai xe] = '" & Loaixe & "'and [so xe] = '" & Soxe & "'" 'and [stt] =
'" & Val(sott) & "' " 'and [gio vao] = '" & rsGiovao.Fields(4) & "' "
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 88
Set rsCapnhatXera = LayDL(sqlXera)
sqlXera = "select [gio vao] from chitiet where [so xe] = '" & Soxe & "' and
[loai xe] = '" & Loaixe & "'" 'and [stt] = '" & Val(sott) & "' "
Set rsCapnhatXera = LayDL(sqlXera)
gio1 = (Hour(rsCapnhatXera![gio vao]))
phut1 = (Minute(rsCapnhatXera![gio vao]))
gio2 = Hour(Time)
phut2 = Minute(Time)
gio3 = gio2 - gio1
phut3 = phut2 - phut1
tam1 = gio1 * 60 + phut1
tam2 = gio2 * 60 + phut2
tam3 = tam2 - tam1
gio3 = tam3 / 60
phut3 = tam3 - (gio3 * 60)
thoigian = gio3 & " :" & phut3
sqlXera = "UPDATE chitiet SET [thoi gian goi (gio)] = '" & thoigian & _
"' WHERE [loai xe] = '" & Loaixe & "' and [so xe] = '" & Soxe & "'" 'and
[stt] = '" & Val(sott) & "'" 'and [gio vao] = '" & giovao & "' "
Set rsCapnhatXera = LayDL(sqlXera)
sqlPhanloaixe = "select [gia tien (vnd/gio)] from phanloaixe where loai = '" &
Loaixe & "'" 'and [stt] = '" & Val(sott) & "' "
Set rsPhanloaixe = LayDL(sqlPhanloaixe)
Gia = rsPhanloaixe![gia tien (vnd/gio)]
If Val(gio3 = 0) And Val(phut3) < 30 Then
gio3 = 1
thanhtien = Val(Gia) * Val(gio3)
End If
If (Val(phut3) > 15) And Val(gio3 > 0) Then
thanhtien = Val(Gia) * (Val(gio3) + 1)
Else
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 89
thanhtien = Val(Gia) * Val(gio3)
End If
sqlXera = "UPDATE chitiet SET [thanh tien (vnd)]= '" & Val(thanhtien) & "'
WHERE [loai xe] = '" & Loaixe & "' and [so xe] = '" & Soxe & "'" 'and [stt] = '" &
Val(sott) & "' " 'and [gio vao] = '" & giovao & "' "
Set rsCapnhatXera = LayDL(sqlXera)
soxe1 = Soxe
loaixe1 = Loaixe
sqlXera = "select [gio vao] from chitiet where [so xe] = '" & Soxe & "' and [loai
xe] = '" & Loaixe & "'" 'and [stt] = '" & Val(sott) & "' "
Set rsCapnhatXera = LayDL(sqlXera)
giovao1 = rsCapnhatXera![gio vao]
sqlXera = "select [ngay vao] from chitiet where [so xe] = '" & Soxe & "' and
[loai xe] = '" & Loaixe & "'" 'and [stt] = '" & Val(sott) & "' "
Set rsCapnhatXera = LayDL(sqlXera)
ngayvao1 = rsCapnhatXera![ngay vao]
thoigian1 = thoigian
thanhtien1 = thanhtien
Load Form4
Form4.Show
End If
End Sub
Private Sub TIEP_Click()
Load Form3
Form3.Show
End Sub
Private Sub Thoat2_Click()
Unload Me
End Sub
Private Sub Timer19_Timer()
MSComm1.Output = "*" + "*" + "*"
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 90
End Sub
Private Sub Timer7_Timer()
Dim X, Y
X = Right(FORM2.Caption, 1)
Y = Left(FORM2.Caption, Len(FORM2.Caption) - 1)
FORM2.Caption = X + Y
End Sub
Private Sub Timer8_Timer()
Tgian.Caption = Time
End Sub
Private Sub Timer9_Timer()
Ngay.Caption = Date
End Sub
Private Sub Timer16_Timer()
Dim U As String
Dim V As String
U = Left(Label2.Caption, 1)
V = Right(Label2.Caption, Len(Label2.Caption) - 1)
Label2.Caption = V + U
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set rsLuuDL = Nothing
cnn.Close
End Sub
Private Sub Timervao_Timer()
If lbxevao.ForeColor = vbBlue Then lbxera.ForeColor = vbRed Else
lbxevao.ForeColor = vbBlue
End Sub
Private Sub XOA_Click()
Load Form4
Form4.Show
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 91
End Sub
Private Function kiemtra() As Integer
If (Me.txtSoxevao.Text = "") Then
kiemtra = 1
Exit Function
End If
If (Me.CmbLoaixevao.Text = "") Then
kiemtra = 2
Exit Function
End If
If Len(Me.txtSoxevao.Text) > 7 Or Len(Me.txtSoxevao.Text) < 7 Then
kiemtra = 3
Exit Function
End If
If Len(Me.CmbLoaixevao.Text) 1 Then
kiemtra = 4
Exit Function
Else
kiemtra = 0
End If
End Function
Code Form Cơ sở dữ liệu
Option Explicit
Dim sql As String
Dim str1 As String
Public rs1 As New ADODB.Recordset
Public rsCapnhatXe As New ADODB.Recordset
Dim sqlCapnhat As String
Dim Soxe As String
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 92
Dim Loaixe As String
Dim ngayvao As Date
Dim giovao As String
Dim ngayra As Date
Dim giora As String
'---------
Private Sub cbSoxe_Click()
Soxe = cbSoxe.Text
rsCapnhatXe.MoveFirst
rsCapnhatXe.Find "[so xe] = '" & Soxe & "'", , , adBookmarkFirst
If Not rsCapnhatXe.EOF Then
txtStt.Text = rsCapnhatXe.Fields(0)
DTPNgayvao.Value = rsCapnhatXe.Fields(3)
txtGiovao.Text = rsCapnhatXe.Fields(4)
txtThoigian.Text = rsCapnhatXe.Fields(7)
txtLoaixe.Text = rsCapnhatXe.Fields(1)
DTPNgayra.Value = rsCapnhatXe.Fields(5)
txtGiora.Text = rsCapnhatXe.Fields(6)
txtThanhtien.Text = rsCapnhatXe.Fields(8)
End If
End Sub
Private Sub CmdTim_Click()
OptSoxe.Visible = True
OptLoaixe.Visible = True
OptNgayvao.Visible = True
OptNgayra.Visible = True
If (OptSoxe) Then
str1 = "select * from chitiet where [so xe] like '" & cbSoxe.Text & "'"
Set rs1 = LayDL(str1)
rs1.Sort = "stt ASC"
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 93
Call XUATBANGCHITIETXETIM(cbSoxe.Text)
Else
If (OptNgayvao = True) Then
str1 = "select * from chitiet where [ngay vao] like '" & DTPNgayvao.Value & "'"
Set rs1 = LayDL(str1)
rs1.Sort = "stt ASC"
Call XUATBANGCHITIETXETIM(DTPNgayvao.Value)
Else
If (OptLoaixe = True) Then
str1 = "select * from chitiet where [loai xe] like '" & txtLoaixe.Text & "'"
Set rs1 = LayDL(str1)
rs1.Sort = "stt ASC"
Call XUATBANGCHITIETXETIM(txtLoaixe.Text)
Else
str1 = "select * from chitiet where [ngay ra] like '" & DTPNgayra.Value & "'"
Set rs1 = LayDL(str1)
rs1.Sort = "stt ASC"
Call XUATBANGCHITIETXETIM(DTPNgayra.Value)
End If
End If
End If
End Sub
Private Sub cmdTimkiem_Click()
OptSoxe.Visible = True
OptLoaixe.Visible = True
OptNgayvao.Visible = True
OptNgayra.Visible = True
txtLoaixe.Enabled = False
DTPNgayvao.Enabled = False
DTPNgayra.Enabled = False
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 94
cbSoxe.Enabled = False
CmdTimkiem.Visible = False
CmdTim.Visible = True
cmdXoa.Visible = False
CmdTimXoa.Visible = True
lbStt.Visible = False
LbGiovao.Visible = False
LbThoigiangoi.Visible = False
lbGiora.Visible = False
LbThanhtien.Visible = False
txtStt.Visible = False
txtGiovao.Visible = False
txtThoigian.Visible = False
txtGiora.Visible = False
txtThanhtien.Visible = False
End Sub
Private Sub CmdTimXoa_Click()
CmdTimkiem.Visible = True
cmdXoa.Visible = True
CmdTimkiem.Visible = True
CmdTim.Visible = False
lbStt.Visible = True
LbGiovao.Visible = True
LbThoigiangoi.Visible = True
lbGiora.Visible = True
LbThanhtien.Visible = True
txtStt.Visible = True
txtGiovao.Visible = True
txtThoigian.Visible = True
txtGiora.Visible = True
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 95
txtThanhtien.Visible = True
OptSoxe.Visible = False
OptLoaixe.Visible = False
OptNgayvao.Visible = False
OptNgayra.Visible = False
End Sub
Private Sub cmdXoa_Click()
Dim sql As String
Dim rs1 As New ADODB.Recordset
Dim vitri As Integer
OptSoxe.Visible = False
OptLoaixe.Visible = False
OptNgayvao.Visible = False
OptNgayra.Visible = False
sql = "select * from chitiet where [so xe]= '" & Soxe & "'"
Set rs1 = LayDL(sql)
If (rs1.BOF = True And rs1.EOF = True) Then
MsgBox ("Khong co so xe nay, hay chon trong combo so xe!")
Else
If MsgBox("Ban co chac la xoa khong ?", vbYesNo) = vbYes Then
rsCapnhatXe.Find "[so xe] = '" & Soxe & "'", , , adBookmarkFirst
rsCapnhatXe.Delete
LuuDL rsCapnhatXe
vitri = cbSoxe.ListIndex
cbSoxe.RemoveItem vitri
cbSoxe.Refresh
Call XUATBANGCHITIETXE
End If
End If
Set rs1 = Nothing
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 96
End Sub
Private Sub MSHFlexGridChitiet_Click()
MSHFlexGridChitiet.Refresh
Dim sql As String
Dim rs1 As New ADODB.Recordset
txtStt.Text = MSHFlexGridChitiet.MouseRow
Set rs1 = Nothing
End Sub
Private Sub OptLoaixe_Click()
txtLoaixe.Enabled = True
DTPNgayvao.Enabled = False
DTPNgayra.Enabled = False
cbSoxe.Enabled = False
txtLoaixe.Locked = False
End Sub
Private Sub OptNgayra_Click()
txtLoaixe.Enabled = False
DTPNgayvao.Enabled = False
DTPNgayra.Enabled = True
cbSoxe.Enabled = False
End Sub
Private Sub OptNgayvao_Click()
txtLoaixe.Enabled = False
DTPNgayvao.Enabled = True
DTPNgayra.Enabled = False
cbSoxe.Enabled = False
End Sub
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 97
Private Sub OptSoxe_Click()
txtLoaixe.Enabled = False
DTPNgayvao.Enabled = False
DTPNgayra.Enabled = False
cbSoxe.Enabled = True
End Sub
Private Sub THOAT_Click()
End
rs1.Close
End Sub
Private Sub TROVE_Click()
Unload Me
End Sub
Private Sub Form_Load()
OptSoxe.Visible = False
OptLoaixe.Visible = False
OptNgayvao.Visible = False
OptNgayra.Visible = False
txtStt.Locked = False
cbSoxe.Locked = False
DTPNgayvao.Enabled = True
DTPNgayra.Enabled = True
txtThoigian.Locked = True
txtThanhtien.Locked = True
txtLoaixe.Locked = True
txtGiora.Locked = True
txtGiovao.Locked = True
CmdTim.Visible = False
sqlCapnhat = "select * from chitiet where stt = 1 "
Set rsCapnhatXe = LayDL(sqlCapnhat)
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 98
txtStt.Text = rsCapnhatXe.Fields(0)
txtLoaixe.Text = rsCapnhatXe.Fields(1)
DTPNgayvao.Value = rsCapnhatXe.Fields(3)
txtGiovao.Text = rsCapnhatXe.Fields(4)
txtGiora.Text = rsCapnhatXe.Fields(6)
DTPNgayra.Value = rsCapnhatXe.Fields(5)
txtThoigian.Text = rsCapnhatXe.Fields(7)
txtThanhtien.Text = rsCapnhatXe.Fields(8)
cbSoxe.Text = rsCapnhatXe.Fields(2)
sqlCapnhat = "select * from chitiet"
Set rsCapnhatXe = LayDL(sqlCapnhat)
If rsCapnhatXe.RecordCount > 0 Then
rsCapnhatXe.MoveFirst
Do While Not rsCapnhatXe.EOF
cbSoxe.AddItem rsCapnhatXe.Fields(2)
rsCapnhatXe.MoveNext
Loop
End If
Call XUATBANGCHITIETXE
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSHFlexGridChitiet.Refresh
Set rsCapnhatXe = Nothing
Set rs1 = Nothing
End Sub
Private Sub XUATBANGCHITIETXETIM(thamso As String)
Dim i As Integer
Dim soluong As Integer
soluong = 0
Dim Mang(9) As String
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 99
Mang(0) = "STT"
Mang(1) = "LOẠI XE"
Mang(2) = "SỐ XE"
Mang(3) = "NGÀY VÀO"
Mang(4) = "GIỜ VÀO"
Mang(5) = "NGÀY RA"
Mang(6) = "GIỜ RA"
Mang(7) = "THỜI GIAN GỬI (GIỜ)
Mang(8) = "THÀNH TIỀN (VNĐ)"
While Not rs1.EOF
soluong = soluong + 1
rs1.MoveNext
Wend
MSHFlexGridChitiet.Rows = soluong + 1
MSHFlexGridChitiet.Cols = 9
If (rs1.BOF = True And rs1.EOF = True) Then
MsgBox ("Co so du lieu rong!")
Else
rs1.MoveFirst
End If
For i = 0 To 8
MSHFlexGridChitiet.Row = 0
MSHFlexGridChitiet.Col = i
MSHFlexGridChitiet.Text = Mang(i)
Next i
i = 1
rs1.Sort = " stt asc"
While Not rs1.EOF
MSHFlexGridChitiet.Row = i
MSHFlexGridChitiet.Col = 0
MSHFlexGridChitiet.ColWidth(0) = 500
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 100
MSHFlexGridChitiet.Text = rs1.Fields(0)
MSHFlexGridChitiet.Col = 1
MSHFlexGridChitiet.ColWidth(1) = 900
MSHFlexGridChitiet.Text = rs1![loai xe]
MSHFlexGridChitiet.Col = 2
MSHFlexGridChitiet.ColWidth(2) = 1000
MSHFlexGridChitiet.Text = rs1![so xe]
MSHFlexGridChitiet.Col = 3
MSHFlexGridChitiet.ColWidth(3) = 1200
MSHFlexGridChitiet.Text = rs1![ngay vao]
MSHFlexGridChitiet.Col = 4
MSHFlexGridChitiet.ColWidth(4) = 1000
MSHFlexGridChitiet.Text = rs1![gio vao]
MSHFlexGridChitiet.Col = 5
MSHFlexGridChitiet.ColWidth(5) = 1200
MSHFlexGridChitiet.Text = rs1![ngay ra]
MSHFlexGridChitiet.Col = 6
MSHFlexGridChitiet.ColWidth(6) = 900
MSHFlexGridChitiet.Text = rs1![gio ra]
MSHFlexGridChitiet.Col = 7
MSHFlexGridChitiet.ColWidth(7) = 1500
MSHFlexGridChitiet.Text = rs1.Fields(7)
MSHFlexGridChitiet.Col = 8
MSHFlexGridChitiet.ColWidth(8) = 1800
MSHFlexGridChitiet.Text = rs1.Fields(8)
i = i + 1
rs1.MoveNext
Wend
Set rs1 = LayDL(str1)
End Sub
Private Sub XUATBANGCHITIETXE()
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 101
Dim i As Integer
Dim soluong As Integer
str1 = "select * from chitiet "
Set rs1 = LayDL(str1)
soluong = 0
Dim Mang(9) As String
Mang(0) = "STT"
Mang(1) = "LOẠI XE"
Mang(2) = "SỐ XE"
Mang(3) = "NGÀY VÀO"
Mang(4) = "GIỜ VÀO"
Mang(5) = "NGÀY RA"
Mang(6) = "GIỜ RA"
Mang(7) = "THỜI GIAN GỬI (GIỜ)"
Mang(8) = "THÀNH TIỀN (VNĐ)"
While Not rs1.EOF
soluong = soluong + 1
rs1.MoveNext
Wend
MSHFlexGridChitiet.Rows = soluong + 1
MSHFlexGridChitiet.Cols = 9
rs1.MoveFirst
For i = 0 To 8
MSHFlexGridChitiet.Row = 0
MSHFlexGridChitiet.Col = i
MSHFlexGridChitiet.Text = Mang(i)
Next i
i = 1
rs1.Sort = " stt asc"
While Not rs1.EOF
MSHFlexGridChitiet.Row = i
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 102
MSHFlexGridChitiet.Col = 0
MSHFlexGridChitiet.ColWidth(0) = 500
MSHFlexGridChitiet.Text = rs1.Fields(0)
MSHFlexGridChitiet.Col = 1
MSHFlexGridChitiet.ColWidth(1) = 900
MSHFlexGridChitiet.Text = rs1![loai xe]
MSHFlexGridChitiet.Col = 2
MSHFlexGridChitiet.ColWidth(2) = 1000
MSHFlexGridChitiet.Text = rs1![so xe]
MSHFlexGridChitiet.Col = 3
MSHFlexGridChitiet.ColWidth(3) = 1200
MSHFlexGridChitiet.Text = rs1![ngay vao]
MSHFlexGridChitiet.Col = 4
MSHFlexGridChitiet.ColWidth(4) = 1000
MSHFlexGridChitiet.Text = rs1![gio vao]
MSHFlexGridChitiet.Col = 5
MSHFlexGridChitiet.ColWidth(5) = 1200
MSHFlexGridChitiet.Text = rs1![ngay ra]
MSHFlexGridChitiet.Col = 6
MSHFlexGridChitiet.ColWidth(6) = 900
MSHFlexGridChitiet.Text = rs1![gio ra]
MSHFlexGridChitiet.Col = 7
MSHFlexGridChitiet.ColWidth(7) = 1500
MSHFlexGridChitiet.Text = rs1.Fields(7)
MSHFlexGridChitiet.Col = 8
MSHFlexGridChitiet.ColWidth(8) = 1800
MSHFlexGridChitiet.Text = rs1.Fields(8)
i = i + 1
rs1.MoveNext
Wend
Set rs1 = LayDL(str1)
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 103
End Sub
Code Form Phiếu thu :
Dim So As Integer
Dim tam As Integer
Private Sub CmdIn_Click()
MsgBox "Da thu tien!"
End Sub
Private Sub Form_Load()
lbNgay.Caption = Date
So = 0
If (So < tam) Then
LbSo.Caption = tam + 1
Else
So = 1
LbSo.Caption = So
End If
LbSoxe.Caption = soxe1
LbLoaixe.Caption = loaixe1
LbNgaygui.Caption = ngayvao1
LbGiogui.Caption = giovao1
Lbthoigian.Caption = thoigian1
LbThanhtien.Caption = thanhtien1
tam = So
End Sub
Code Form Cập nhật :
Dim sqlPhanloaixe As String
Dim rsPhanloaixe As New ADODB.Recordset
Dim sqlCapnhatPhanloai As String
Dim rsCapnhatPhanloai As New ADODB.Recordset
Dim sqlXoa As String
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 104
Dim rsXoa As New ADODB.Recordset
Dim sql As String
Dim rsxe As New ADODB.Recordset
Dim kiemtra As Integer
Private Sub cmdCapnhat_Click()
kiemtra = 2
cmdLuu.Visible = True
cmdThem.Visible = False
cmdCapnhat.Enabled = False
cmdXoa.Enabled = False
txtLoaixe.Enabled = False
txtChitietxe.Locked = False
txtGiatien.Locked = False
End Sub
Private Sub cmdLuu_Click()
Dim str As String
Dim rs1 As New ADODB.Recordset
cmdThem.Visible = True
cmdLuu.Visible = False
cmdCapnhat.Enabled = True
cmdXoa.Enabled = True
If kiemtra = 1 Then
rsPhanloaixe.AddNew
GhiPhanLoaiXe rsPhanloaixe
LuuDL rsPhanloaix
Else
If kiemtra = 2 Then
sqlCapnhatPhanloai = "UPDATE PHANLOAIXE SET [CHI TIET XE] = '"
& txtChitietxe.Text & _
"' WHERE LOAI = '" & txtLoaixe.Text & "'"
Set rsCapnhatPhanloai = LayDL(sqlCapnhatPhanloai)
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 105
sqlCapnhatPhanloai = "UPDATE PHANLOAIXE SET [GIA TIEN
(VND/GIO)] = '" & txtGiatien.Text & _
"' WHERE LOAI = '" & txtLoaixe.Text & "'"
Set rsCapnhatPhanloai = LayDL(sqlCapnhatPhanloai)
Else
sqlXoa = "select * from phanloaixe"
Set rsXoa = LayDL(sqlXoa)
If MsgBox("Ban co chac la xoa khong ?", vbYesNo) = vbYes Then
rsXoa.Find " loai = '" & txtLoaixe.Text & "'", , , adBookmarkFirst
rsXoa.Delete
LuuDL rsXoa
End If
End If
End If
Call HIENTHIPHANLOAIXE
End Sub
Private Sub cmdThem_Click()
kiemtra = 1
cmdThem.Visible = False
cmdLuu.Visible = True
cmdCapnhat.Enabled = False
cmdXoa.Enabled = False
txtLoaixe.Enabled = True
txtLoaixe.SetFocus
txtLoaixe.Text = ""
txtChitietxe.Text = ""
txtGiatien.Text = ""
txtLoaixe.Locked = False
txtChitietxe.Locked = False
txtGiatien.Locked = False
End Sub
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 106
Private Sub cmdTrove_Click()
Unload Me
End Sub
Private Sub cmdXoa_Click()
kiemtra = 3
cmdThem.Enabled = True
cmdThem.Visible = False
cmdLuu.Visible = True
cmdLuu.Enabled = True
cmdCapnhat.Enabled = False
cmdXoa.Enabled = False
txtLoaixe.Locked = True
txtChitietxe.Locked = True
txtGiatien.Locked = True
End Sub
Private Sub Form_Load()
cmdLuu.Visible = False
sqlPhanloaixe = "SELECT * FROM PHANLOAIXE"
Set rsPhanloaixe = LayDL(sqlPhanloaixe)
rsPhanloaixe.Sort = "LOAI ASC"
txtLoaixe.Locked = True
txtChitietxe.Locked = True
txtGiatien.Locked = True
txtLoaixe.Text = rsPhanloaixe.Fields(0)
txtChitietxe.Text = rsPhanloaixe.Fields(1)
txtGiatien.Text = rsPhanloaixe.Fields(2)
If rsPhanloaixe.RecordCount > 0 Then
rsPhanloaixe.MoveFirst
Call HIENTHIPHANLOAIXE
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 107
End If
End Sub
Private Sub HIENTHIPHANLOAIXE()
Dim i As Integer
Dim soluong As Integer
sql = "select * from phanloaixe "
Set rsxe = LayDL(sql)
soluong = 0
Dim Mang(3) As String
Mang(0) = "LOAÏI XE"
Mang(1) = "CHI TIEÁT XE"
Mang(2) = "GIAÙ TIEÀN (VNÑ/GIÔØ)"
While Not rsxe.EOF
soluong = soluong + 1
rsxe.MoveNext
Wend
MSHFGridPhanLoai.Rows = soluong + 1
MSHFGridPhanLoai.Cols = 3
rsxe.MoveFirst
For i = 0 To 2
MSHFGridPhanLoai.Row = 0
MSHFGridPhanLoai.Col = i
MSHFGridPhanLoai.Text = Mang(i)
Next i
i = 1
rsxe.Sort = " loai asc"
While Not rsxe.EOF
MSHFGridPhanLoai.Row = i
MSHFGridPhanLoai.Col = 0
MSHFGridPhanLoai.ColWidth(0) = 970
MSHFGridPhanLoai.Text = rsxe.Fields(0)
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 108
MSHFGridPhanLoai.Col = 1
MSHFGridPhanLoai.ColWidth(1) = 1300
MSHFGridPhanLoai.Text = rsxe![chi tiet xe]
MSHFGridPhanLoai.Col = 2
MSHFGridPhanLoai.ColWidth(2) = 2100
MSHFGridPhanLoai.Text = rsxe![gia tien (vnd/gio)]
i = i + 1
rsxe.MoveNext
Wend
Set rsxe = LayDL(sql)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set rsxe = Nothing
Set rsPhanloaixe = Nothing
Set rsCapnhatPhanloai = Nothing
Set rsXoa = Nothing
End Sub
Private Sub GhiPhanLoaiXe(rs As ADODB.Recordset)
rsPhanloaixe.Fields(0) = txtLoaixe.Text
rsPhanloaixe.Fields(1) = txtChitietxe.Text
rsPhanloaixe.Fields(2) = txtGiatien.Text
End Sub
Private Sub MSHFGridPhanLoai_Click()
txtLoaixe.Text = MSHFGridPhanLoai.MouseRow
sqlPhanloaixe = "select * from phanloaixe where loai = '" &
MSHFGridPhanLoai.MouseRow & "'"
Set rsPhanloaixe = LayDL(sqlPhanloaixe)
txtChitietxe.Text = rsPhanloaixe.Fields(1)
txtGiatien.Text = rsPhanloaixe.Fields(2)
End Sub
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 109
V. LẬP TRÌNH CHO PLC Ở DẠNG LADDER
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 110
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 111
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 112
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 113
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 114
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 115
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 116
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 117
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 118
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 119
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 120
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 121
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 122
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 123
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 124
Các file đính kèm theo tài liệu này:
- he_thong_bai_giu_xe_oto_tu_dong_4365.pdf