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)

pdf125 trang | Chia sẻ: lvcdongnoi | Ngày: 04/06/2013 | Lượt xem: 266 | Lượt tải: 7download
Tóm tắt 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:

  • pdfhe_thong_bai_giu_xe_oto_tu_dong_4365.pdf