Đề tài Mô phỏng hệ thống thang máy
Lời nói đầu. 3
PHẦN 1: TỔNG QUAN 4
Kiến thức nền tảng phục vụ cho bài toán:. 4
PHẦN 2 : PHÂN TÍCH THIẾT KẾ MỨC KIẾN TRÚC CỦA BÀI TOÁN 4
2.1 Mô tả yêu cầu bài toán. 4
2.2 Biểu đồ use case. 5
2.3 Biểu đồ trình tự 5
2.4 Biểu đồ lớp. 6
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Ó:. 7
3.1 Mô tả các thuộc tính và phương thức của lớp Cabin. 7
3.2 Mô tả các thuộc tính và phương thức của lớp Display. 9
3.3 Mô tả các thuộc tính và phương thức của lớp PersonWalking. 11
3.4 Mô tả các thuộc tính và phương thức của lớp CreateRandomPerson. 12
Phần 4: Kết luận và đánh giá. 12
Phân công công việc nhóm:. 13
TÀI LIỆU THAM KHẢO 15
Phụ lục:. 16
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.
17 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 4359 | Lượt tải: 4
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
Các file đính kèm theo tài liệu này:
- Mô phỏng hệ thống thang máy.doc