Đề tài Mô phỏng hệ thống thang máy

Có lẽ ai học công nghệ thông tin đều biết,các ngôn ngữ lập trình hướng đối tượng ưu việt hơn nhiều so với các ngôn ngữ hướng thủ tục,điều này đã được kiểm nghiệm và chứng minh.Nhưng nhờ đâu các nhà thiết kế lại có thể nghĩ ra ngôn ngữ lập trình hướng đối tượng,có lẽ tên mà ta hay gọi cho nó cũng đã bao hàm câu trả lời cho câu hỏi trên rồi,đối tượng là một khái niệm không hề có trong lập trình hướng thủ tục,mà đối tượng chính là các thực thể trong thế giới thực.Khi mới bắt đầu làm quen với lập trình hướng đối tượng chúng thì cách tiếp cận khá tốt là đi vào các ví dụ mà ở đó ranh giới giữa các đối tượng rõ ràng. Từ thực tế thang máy đang rất phổ biến trong việc phục vụ di chuyển và hoạt động của nó cũng rất thú vị,đồng thời không khó khăn để xác định các thực thể trong hệ thống này, vì lý do đó nhóm sinh viên bọn em lựa chọn đề tài “Mô phỏng hoạt động của thang máy”,đề tài thực hiện chương trình mô phỏng hệ thống hai thang máy hoạt động ở chế độ một bảng điều khiển phục vụ di chuyển trong tòa nhà mười tầng.Chương trình được viết bởi ngôn ngữ thuần đối tượng java.

doc17 trang | Chia sẻ: tuandn | Lượt xem: 4240 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Đề tài Mô phỏng hệ thống thang máy, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ──────── * ─────── BÀI TẬP LỚN MÔN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Đề tài : “Mô phỏng hệ thống thang máy” Mã đề tài: De10A Sinh viên thực hiện Trịnh Viết Nam (NT) Nguyễn Thái Dương Đỗ Văn Quân Nhóm sinh viên : Nhóm 4 Lớp : KSTN-CNTT-K54 Giáo viên hướng dẫn : TS. Cao Tuấn Dũng Hà Nội, tháng 11 năm 2011 Lời nói đầu Có lẽ ai học công nghệ thông tin đều biết,các ngôn ngữ lập trình hướng đối tượng ưu việt hơn nhiều so với các ngôn ngữ hướng thủ tục,điều này đã được kiểm nghiệm và chứng minh.Nhưng nhờ đâu các nhà thiết kế lại có thể nghĩ ra ngôn ngữ lập trình hướng đối tượng,có lẽ tên mà ta hay gọi cho nó cũng đã bao hàm câu trả lời cho câu hỏi trên rồi,đối tượng là một khái niệm không hề có trong lập trình hướng thủ tục,mà đối tượng chính là các thực thể trong thế giới thực.Khi mới bắt đầu làm quen với lập trình hướng đối tượng chúng thì cách tiếp cận khá tốt là đi vào các ví dụ mà ở đó ranh giới giữa các đối tượng rõ ràng. Từ thực tế thang máy đang rất phổ biến trong việc phục vụ di chuyển và hoạt động của nó cũng rất thú vị,đồng thời không khó khăn để xác định các thực thể trong hệ thống này, vì lý do đó nhóm sinh viên bọn em lựa chọn đề tài “Mô phỏng hoạt động của thang máy”,đề tài thực hiện chương trình mô phỏng hệ thống hai thang máy hoạt động ở chế độ một bảng điều khiển phục vụ di chuyển trong tòa nhà mười tầng.Chương trình được viết bởi ngôn ngữ thuần đối tượng java. Do mới làm với ngôn ngữ Java,và việc xử lý đa luồng không đơn giản nên trong chương trình còn có một nhiều hạn chế. Nhóm em mong nhận được các nhận xét của thầy về đề tài này của nhóm để nhóm em có thể khắc phục các hạn chế trong đề tài này để có thể làm tốt hơn trong đề tài khác. PHẦN 1: TỔNG QUAN Kiến thức nền tảng phục vụ cho bài toán: + Phân tích và thiết kế hướng đối tượng,bao gồm : Tư duy lập trình hướng đối tượng. Các nguyên lý cơ bản trong lập trình hướng đối tượng (Đóng gói,kế thừa,sử dụng các giao diện,đa hình,chồng phương thức...) Biết sử dụng ngôn ngữ lập trình java. Tìm hiểu hoạt động thực sự của thang máy .... PHẦN 2 : PHÂN TÍCH THIẾT KẾ MỨC KIẾN TRÚC CỦA BÀI TOÁN 2.1 Mô tả yêu cầu bài toán Mô phỏng hệ thống thang máy. Tạo một chương trình gồm có: Cửa sổ chính mô phỏng hoạt động của thang máy (đi lên ,đi xuống theo yêu cầu,đứng yên khi đã chuyển người đến nơi và không có yêu cầu).Người sử dụng thang máy ở tầng được sinh ra theo hai chế độ ngẫu nhiên hoặc qua lệnh điều khiển,trong trường hợp ngẫu nhiên thì số người sinh ra tại một thời điểm không quá hai(khoảng cách hai lần sinh do tác giả tùy chỉnh). Cửa sổ phụ là giao diện phòng điều khiển.Tại phòng điều khiển nhân viên điều khiển có thể xem các thông số của thang máy :Tầng hiện tại,chiều chuyển động,trọng tải hiện tại,có thể dừng thang máy,sinh ra khách chờ cùng với yêu dùng thang máy ở chế độ điều khiển. Khi thang máy quá tải,báo chuông và chỉ hoạt động với số người hợp lý. Hoạt động tối ưu,Tiết kiệm năng lượng. 2.2 Biểu đồ use case Hình 1:Biểu đồ use case mô tả hệ thống 2.3 Biểu đồ trình tự Hình 2:Biểu đồ trình tự cho chức năng phục vụ di chuyển của thang 2.4 Biểu đồ lớp Hình 3:Biểu đồ lớp của chương trình PHẦN 3: THIẾT KẾ CHI TIẾT VÀ GIẢI PHÁP KỸ THUẬT XÂY DỰNG CÁC LỚP VÀ CHỨC NĂNG CHÍNH CỦA NÓ: 3.1 Mô tả các thuộc tính và phương thức của lớp Cabin Tên lớp Thuộc tính Ý nghĩa Cabin - tableInFloor Bảng hiển thị các phím bấm trên tường Có hai phím lên và xuống -tabelInCabin Bảng hiển thị các phím bấm như trong cabin thật - direction Điều khiển cabin như thay đổi tốc độ,Khóa tầng -openAndCloseDoor Thực hiện đóng mở cửa cabin -isMoving Kiểm tra trạng thái di chuyển hay không - isClosed Kiểm tra trạng thái cabin đã đóng kín cửa chưa -isOpenned Kiểm tra trạng thái cabin đã mở hết cửa chưa - nextFloor Tầng tiếp theo cabin sẽ đến,khi cabin đứng yên thì nó bằng tầng hiện tại - nextState Trạng thái tiếp theo của cabin -signalStop Tín hiệu báo thang máy phải dừng - leftDoor Hiển thị của trái -rightDoor Hiển thị của phải - labelCabin Hiển thị hình cabin - imageDoorRight ảnh cửa phải - imageCabin ảnh cabin - floor Tầng hiện tại của cabin - status Trạng thái hiện tại của cabin - numberPerson Số người trong cabin - speed Tốc độ của cabin - dialog Hộp thoại hiển thị bảng bên trong cabin - interrup Tín hiệu ngắt khi đóng mở của nhanh - positionAvalbel Vị trí có còn khả năng chứa người trong cabin -maxPersonInCabin Số người tối đa trong cabin - isUpdating Kiểm tra cabin có đang cập nhật người hay không - updateAgain Tín hiệu báo cabin cập nhật người thêm lân nữa - leftDoor2 Cửa trái trên tầng chắn người vào khoang chứa cabin,điều kiện an toàn - rightDoor2 Cửa phải trên tầng chắn người vào khoang chứa cabin,điều kiện an toàn - weigh Khối lượng người trong cabin - isClosing Kiểm tra trạng thái đang đóng của cabin - isOpening Kiểm tra trạng thái đang mở của cabin -arrayConsist Mảng chứa yêu cầu khi ấn nút gọi tầng trên tầng -checkPersonInCabin Kiểm tra có người trong cabin hay không Bảng 1. Tên lớp Phương thức Ý nghĩa Cabin - emergencyTreatment Xử lý khi cabin có tín hiệu dừng bắt buộc(người quản trị ấn nút stop) + closeCabin Đóng cửa cabin + openCabin Mở của cabin + setLocaldoor Thiết lập vị trí cửa của cabin + move Di chuyển cabin,trong quá trình di chuyển sẽ kiểm tra tầng nào gần sẽ chuyển tới + updateWeigh Cập nhật khối lượng cabin + distance Tính khoảng cách của cabin so với tầng yêu cầu + showDilogControl Hiển thị hộp thoại điều khiển cabin + showDialog Hiển thị hộp thoại chứa bảng gọi tầng trong cabin + setColorButtonCall Thiết lập màu cho các nút + checkPositionAvalbel Kiểm tra vị trí người có thể đứng + releasePositionAvalbel Trả lại ví trí người vừa dùng + updatePerson Cập nhật người vào cabin Bảng 2. 3.2 Mô tả các thuộc tính và phương thức của lớp Display Tên lớp Thuộc tính Ý nghĩa Display MAXPERSON Số người tối đa trong hệ thống - Fr Khung hiển thị chương trình -layerPanel Panel chứa giao diện -scrollPanel Đối tượng cho phép quan sát hệ thống ở vị trí người dùng muốn - lancan Label chứa ảnh hiển thị hành lang tâng nhà HEIGHTFLOOR Chiều cao của tầng WIDTHCABIN Chiều rộng của cabin - panelCabin Panel chứa hình ảnh cabin - hideDoor Panel che phần cửa đóng ra mở vào như bức tường. -Control Đối tượng tự động điều khiển cabin -tablecall Đối tượng hiển thị bảng gọi tầng trên các tầng - menuBar Thanh menubar - menuControl Một menu - help Một menu - tool Menuitem - scrollAuto Menuitem - setMaxNumberInCabin Menuitem - setMaxNumberOnfloor Menuitem - setMaxWeight Menuitem - setColorBackground Menuitem - aboutProgram Menuitem - aboutAuthor Menuitem - showTableCabin Menuitem - countComponent Đếm các thành phần trong lớp Display - changeMode Thay đổi chế độ điều khiển hay tự động - showTableManager Hiển thị bẳng nút ấn trong cabin - showDirectionCabin1 Hiển thị hộp thoại để điều khiển cabin1 - showDirectionCabin2 Hiển thị hộp thoại để điều khiển cabin2 - frCabin Frame hiển thị giao diện chính - updateInformation Cập nhật thông tin về vị trí tầng -containPerson Mảng chứa người trong cabin -checkExistPerson Kiểm tra có tồn tại người hay không -checkExistPersonAdvance Kết hợp với checkExistPerson Kiểm tra người có tồn tại trong hệ thống không -timeCreateRandomPerson Thời gian để sinh ra người trong trường hợp tự động -mode Chế độ hoạt động của thang tự động hoặc điều khiển -maxWeight Khối lượng tối đa trong cabin -maxPersonInFloor Số người tối đa trên mỗi tầng -crea Luồng tạo người - dialogInputFloor Hộp thoại nhập yêu cầu của người dùng ở chế độ điều khiển -autoScroll Thiết lập chế độ tự động di chuyển thanh cuộn sem Semaphore đồng bộ việc chọn vị trí trong cabin cho mỗi người vào ra cabin - colorBackground Màu nền cho giao diện chính - desktop Đối tượng thực thi mở file html để hướng dẫn và giới thiệu tác giả - imageMakeup ảnh trang trí trên tần Bảng 3. Tên lớp Phương thức Ý nghĩa Display -startSystem Gọi phương thức start() cho các luồng điều khiển cabin,cập nhật thông tin và luồng tạo người ngẫu nhiên -randomCreatePerson Thực thi luồng tạo người -showDilogInputFloorCall Hiển thị bảng nhập yêu cầu người của người dùng +setStatusFoorCall Thiết lập chiều mũi tên trên tầng -setMenu Khởi tạo các menu - intTableInCabin Khởi tạo nút ấn bên trong cabin - showTableInCabin Hiển thị bảng bấm trong cabin -showDialogDirection Hiển thị bảng điều khiển -updateMode Cập nhật chế độ hoạt động -confirmInputfloor Xử lý xác nhận yêu cầu nhập tầng Bảng 4. 3.3 Mô tả các thuộc tính và phương thức của lớp PersonWalking Tên lớp Thuộc tính Ý nghĩa PersonWalking -thread Luồng điều khiển người - weigh Khố lượng - cabinContain Cabin nó ở trong - orientation Chiều di chuyển - floorIn Tầng vào - floorOut Tầng ra - xposition Vị trí đứng trong cabin - yposition Vị trí đứng trong cabin - intoCabin Kiểm tra được vào cabin - pressButton Ấn nút - leaveCabin Kiểm tra thoát khỏi cabin - createFloorOut Tạo ra tầng ra(trường hợp random) - isintoed Kiểm tra đã vào cabin - isleaved Kiểm tra đã rời cabin Bảng 5. Tên lớp Phương thức Ý nghĩa Pesonwalking +createFloorOut Sinh ra tầng ra +start Khởi động luồng +stop Hủy luồng +run Thực thi luồng +goOutCanbin Đi ra khỏi cabin +turnLeft Rẽ trái +goLeft Đi sang bên trái +goRight Đi sang bên phải +pressButton Ấn nút +inToCabin Đi vào Cabin Bảng 6. 3.4 Mô tả các thuộc tính và phương thức của lớp CreateRandomPerson Tên lớp Thuộc tính Ý nghĩa CreateRandomPerson -Thread Luồng sinh người -person Người được sinh ra Bảng 7. Tên lớp Phương thức Ý nghĩa CreateRandomPerson +actionControl Sinh người ở chế độ điều khiển +action Sinh người ở chế độ random Bảng 8. Trên đây mới chỉ là những lớp cơ cản của chương trình,ngoài ra còn một số lớp khác như: Class Bell:lớp xử lý âm thanh trong chương trình Class TableInCabin :Tạo bảng trong Cabin Class Direction: tạo giao diện của người quản tri Class ButtonFloorCall:Tạo các nút cơ sở cho chương trình Class FloorCall:Bảng hiển thị trên mỗi tầng về chiều và tầng hiện tại Class Main:Tạo giao diện khi chạy chương trình Class UpdateInformation:Cập nhật thông tin về vị trí tầng và chiều dich chuyển của Cabin. Class PanelWelCome chứa ảnh nền giao diện ban đầu. Phần 4: KẾT LUẬN VÀ ĐÁNH GIÁ - Kết quả đạt được: Qua quá trình làm bài tập lớn nhóm đã cải thiện được khá nhiều tinh thần và kĩ năng làm việc theo nhóm,đồng thời nâng cao rõ rệt về khả năng sử dụng ngôn ngữ java vào các ứng dụng khác. - Khuyết điểm còn tồn tại: Tuy bọn em đã rất nỗ lực,nhưng không thể tránh được sai sót,người chuyển động chưa được mượt. Phân công công việc nhóm: Thảo luận chung để đưa ra định hướng gồm có: - Phân tích yêu cầu. Thống nhất thuật toá Tạo biểu đồ Use Case Biểu đồ trình tự Cá nhân mỗi người: Trịnh Viết Nam: code giao diện đồ họa,xử lý trường hợp :Đóng mở cửa nhanh,cập nhật tầng,quá tải Đỗ Văn Quân: code thuật toán Nguyễn Thái Dương: đồng bộ luồng,vẽ ảnh người chuyển động. Kế hoạch làm việc: Tuần 2 : Tạo nhóm và chọn chủ đề thực hiện Tuần 3-5 : Tìm hiểu ngôn ngữ java và lập trình đồ họa Phân tích bài toán Đưa ra các yêu cầu của bài toán và thuật toán Viết các biểu đồ lớp Tuần 6-9: Thiết kế giao diện Chỉnh sửa thuật toán sử dụng trong bài toán Tuần 10-11: Kết hợp xử lý luồng vào bài toán Chỉnh sửa giao diện đồ họa Hoàn thiện chương trình và test ,kiểm soát lỗi Tuần 12 Test Viết báo cáo theo đề cương chi tiết Quay video mô tả hoạt động của thang máy và các chức năng của thang máy Ghi đĩa CD và in báo cáo môn học Nộp bản toàn bộ chương trình và báo cáo Tuần 13 -15 : Bảo vệ đồ án môn học Nghe nhận xét của thầy và rút ra kinh nghiệm cho bản thân -Tự đánh giá % công việc của mỗi người: Trịnh Viết Nam: 40% Đỗ Văn Quân: 30% Nguyễn Thái Dương: 30% TÀI LIỆU THAM KHẢO Slide bài giảng cô Nguyễn Thị Thu Trang bộ môn Công nghệ phần mền ĐHBKHN. Lập trình đồ họa trên java 2D và 3D nguồn:tailieu.vn Giáo trình java sun của nhóm phát triển phần mềm SSDG Nhiều tài liệu tiếng Việt khác Java™ How to Program, SeventhEdition By H. M. Deitel - Deitel & Associates, Inc., P. J. Deitel - Deitel & Associates, Inc. Phụ lục: Danh mục bảng được sử dụng Tên Bảng Trang Ý nghĩa Bảng 1 8 Mô tả thuộc tính của lớp cabin Bảng 2 9 Mô tả phương thức của lớp cabin Bảng 3 10 Mô tả thuộc tính của lớp Display Bảng 4 12 Mô tả phương thức của lớp Display Bảng 5 12 Mô tả thuộc tính của lớp PersonWalking Bảng 6 13 Mô tả phương thức của lớp PersonWalking Bảng 7 13 Mô tả thuộc tính của lớp CreateRandomPerson Bảng 8 13 Mô tả phương thức của lớp CreateRandomPerson Danh mục hình ảnh được sử dụng Tên hình Trang Ý nghĩa Hình 1 5 Biểu đồ Usecase mô tả bài toán Hình 2 6 Biểu đồ trình tự chức năng phục vụ di chuyển của thang Hình 3 7 Biểu đồ lớp của chương trình