1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo thang máy

19 441 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 552 KB

Nội dung

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: KỸ THUẬT LẬP TRÌNH NHÓM PE10 Sinh viên thực : Võ Tiến Tú Vũ Đình Ba Nguyễn Bá Thủy Phạm Thanh Tùng Lớp : KSCLC – K54 Giáo viên hướng dẫn : TS Vũ Thị Hương Giang Hà Nội, tháng năm 2012 Kỹ thuật lập trình MỤC LỤC MỤC LỤC LỜI NÓI ĐẦU PHÂN CÔNG THÀNH VIÊN TRONG NHÓM .4 CHƯƠNG PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ GIẢI PHÁP .5 CHƯƠNG CÀI ĐẶT CHƯƠNG TRÌNH 11 b Giao diện bắt đầu chương trình (với user) 13 14 c.Yêu cầu thang máy đến tầng định: 14 15 d Gọi thang máy lên(xuống): 15 16 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .17 TÀI LIỆU THAM KHẢO 18 PHỤ LỤC 19 Nhóm PE10 - Lớp KSCLC K54 Kỹ thuật lập trình LỜI NÓI ĐẦU Hệ thống điều khiển thang má, nhóm tìm hiểu hệ thống điển hình xử lí hàng đợi Tuy nhiên việc xây dựng cấu trúc hàng đợi cho thang máy đôi hay ba việc khó khăn Trong khuôn khổ môn kĩ thuật lập trình, muốn mô thang máy dựa lập trình hướng đối tượng để có cấu trúc đơn giản cho thang máy Mục đích tập lớn thiết lập chương trình điều khiển hoạt động cụm hai thang máy cho tòa nhà D6 Nhóm PE10 - Lớp KSCLC K54 Kỹ thuật lập trình PHÂN CÔNG THÀNH VIÊN TRONG NHÓM Võ tiến Tú: Tìm hiểu tài liệu để xây dựng chương trình mô thang máy theo hướng đối tượng (1 tuần) Viết class cho chương trình, thread tìm đích tới thang máy thread chuyển(1 tuần) Nguyễn Bá Thủy: Viết thread đóng mở cửa, bổ sung hàm class elevator (1 tuần) Phạm Thanh Tùng: Viết giao diện nhập xuất, bổ sung hàm class systemControl(1 tuần) Vũ Đình Ba: bổ sung hàm class floor(4 ngày) Nhóm PE10 - Lớp KSCLC K54 Kỹ thuật lập trình CHƯƠNG PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ GIẢI PHÁP 1.1 Mô tả yêu cầu toán Bài toán đưa yêu cầu lệnh đóng, mở cửa thang máy; di chuyển thang máy lên, xuống theo yêu cầu người dùng Đồng thời, thang máy phải có cách xếp thực lệnh nhiều người dùng khác phân công chức hoạt động hai thang máy với cho việc giải yêu cầu người dùng thực hiệu nhanh Kèm theo đó, thang máy cần có bảo đảm an toàn trọng lượng, có chuông báo động tính giữ an toàn di chuyển 1.2 Biểu đồ IPO Bao gồm phần chức dành cho user (người sử dụng bên bên thang máy) admin (người điều khiển) 1.2.1 Admin 1.2.1.1 Chức 1: Bật báo động INPUT Tên thang máy PROCESS Kiểm tra tên thang máy Kiểm tra trạng thái đèn báo động Ghi trạng thái đèn OUTPUT Thông báo nhập lệnh (hoặc báo lỗi) Trạng thái đèn thang máy 1.2.1.2 Chức 2: Tắt báo động INPUT Tên thang máy PROCESS Kiểm tra tên thang máy Kiểm tra trạng thái đèn báo động Ghi trạng thái đèn Nhóm PE10 - Lớp KSCLC K54 OUTPUT Thông báo nhập lệnh (hoặc báo lỗi) Trạng thái đèn thang máy Kỹ thuật lập trình 1.2.1.3: Chức 3: Chọn tầng đến INPUT Tên thang máy E Tên tầng F PROCESS Kiểm tra tên thang máy tên tầng Ghi vào mảng CallUp[F] [E] =1 CallDown[F][E] =1 OUTPUT Thông báo nhập lệnh (hoặc báo lỗi) 1.2.1.4: Chức 4: Yêu cầu mở cửa thang máy INPUT Tên thang máy E PROCESS Kiểm tra tên thang máy Kiểm tra trạng thái di chuyển Tìm tầng F Ghi vào mảng CallUp[F] [E] =1 CallDown[F][E] =1 OUTPUT Thông báo nhập lệnh (hoặc báo lỗi) 1.2.1.5: Chức 5: Khởi động lại hệ thống INPUT PROCESS Lệnh khởi động hệ thống OUTPUT Thông báo khởi động lại 1.2.1.6: Chức 6: Chuyển quyền sử dụng cho người dùng INPUT Lệnh chuyển quyền sử dụng PROCESS In hình OUTPUT Hệ thống lệnh dành cho người dùng 1.2.1.7: Chức 7: Thoát INPUT Nhóm PE10 - Lớp KSCLC K54 PROCESS OUTPUT Kỹ thuật lập trình Lệnh thoát In hình Lời tạm biệt người dùng 1.2.2: User: 1.2.2.1: Chức 7: Bật báo động Giống Admin 1.2.2.2: Chức 8: Gọi thang máy lên (dành cho người dùng bên thang máy) INPUT Tên tầng F PROCESS Kiểm tra tên tầng Ghi vào mảng CallUp[F] [E] =1 cho hai thang máy OUTPUT Thông báo nhập lệnh (hoặc báo lỗi) 1.2.2.3: Chức 9: Gọi thang máy xuống (dành cho người dùng bên thang máy) INPUT Tên tầng F PROCESS Kiểm tra tên tầng Ghi vào mảng CallDown[F][E] =1 cho hai thang máy OUTPUT Thông báo nhập lệnh (hoặc báo lỗi) 1.2.2.4: Chức 10: Chọn tầng cần đến (dành cho người dùng bên thang máy) Giống Admin 1.2.2.5: Chức 11: Yêu cầu mở cửa thang máy Giống Admin 1.2.2.6: Chức 12: Chuyển quyền sử dụng cho Admin INPUT Nhóm PE10 - Lớp KSCLC K54 PROCESS OUTPUT Kỹ thuật lập trình Lệnh chuyển quyền sử dụng In hình Đã thực lệnh 1.3 Thiết kế chương trình Các thành phần : Người sử dụng, người quản lí, giao diện hiển thị, điều khiển đối tượng điều khiển Đồi tượng điều khiển Thang máy Người sử dụng Giao diện hiển thị Tầng Class: Bộ điều khiển g Người quản lí (1) Thang máy nhận lệnh bật báo động, tắt báo động, lệnh chuyển( lên, xuống đứng yên), đổi khóa di chuyển , mở cửa, đóng cửa, đổi khóa cửa, reset từ điều khiển (2): Bộ điều khiển có khả lấy thông tin vị trí tầng, trạng thái di chuyển, khóa di chuyển, trạng thái cửa, khóa cửa (3): Tầng nhận lệnh có yêu cầu chọn thang tầng số … , có yêu cầu lên xuống từ tầng …, reset từ điều khiển (4): Bộ điều khiển có khả lấy thông tin yêu cầu ghi tầng Nhóm PE10 - Lớp KSCLC K54 Kỹ thuật lập trình 1.4 Thiết kế liệu Dữ liệu thiết kế thể thông qua class Có nhóm class phục vụ cho việc theo dõi trạng thái thang máy theo dõi vị trí lệnh người dùng Trong nhóm class phục vụ cho việc theo dõi trạng thái thang máy, biến sử dụng là: Evelator - int: thể tên thang máy, với thang máy 1, thang máy 2, -1 không thang máy Direction - int: chiều thang máy đi, với lên -1 xuống Floor - int: Vị trí tầng thang máy State - int: Trạng thái di chuyển thang máy, với lên, -1 xuống Ngoài có số biến đếm int khác sử dụng để đếm thời gian di chuyển cho thang máy như: isClosingDoor, CountTimeDoor, CountTimeFloor… Trong nhóm class phục vụ cho việc theo dõi người dùng, có biến CallUp – bool CallDown – bool Các giá trị đưa vào mảng hai chiều CallUp[F][E] hay CallDown[F][E] theo cách thức sau: F: tên tầng, E: tên thang máy : thể biến int Quy ước: thang máy 1, thang máy Khi có lệnh gọi thang máy lên tầng F: CallUp[F][0] = CallUp[F][1] = Khi có lệnh gọi thang máy xuống tầng F: CallDown[F][0] = CallDown[F][1] = Khi có lệnh chọn tầng cần đến F thang máy E: CallUp[F][E] = CallDown[F][E] = Các giá trị bị xóa thang máy thực lệnh mở cửa tầng F ứng với lệnh 1.5 Thiết kế giải thuật Thuật toán dựa hàm goi thread Trong đó, hàm ThreadMove1 ThreadMove2 điều khiển trình di chuyển thang máy, hàm ThreadOpenDoor1 ThreatOpenDoor2 điều khiển mở cửa thang máy, hàm ThreadCloseDoor1 ThreadCloseDoor2 điều khiển đóng thang máy Nhóm PE10 - Lớp KSCLC K54 Kỹ thuật lập trình Những Thread thực độc lập với lệnh nhập liệu từ người dùng (bao gồm lệnh gọi thang máy, lệnh chọn tầng muốn đến…) Những Thread hoạt động theo cách thức so sánh giá trị vị trí tầng thang máy với vị trí tầng lệnh Thang máy mở (đóng) vị trí tầng trùng với tên tầng lệnh Hàm ThreadMove1 (ThreadMove2) thay đổi vị trí tầng thang máy (thang máy 2) tăng lên hay giảm không tên tầng lệnh trùng với vị trí tầng thang máy ThreadFindAction thực để tìm hành động máy gián tiếp lệnh cho thread thực Nhóm PE10 - Lớp KSCLC K54 10 Kỹ thuật lập trình CHƯƠNG CÀI ĐẶT CHƯƠNG TRÌNH 2.1 Các kỹ thuật lập trình áp dụng STT Mô tả kỹ thuật / quy tắc Mô tả đối tượng áp dụng (hàm, biến, biểu thức, câu lệnh) phạm vi áp dụng I Các kỹ Đặt tên biến quán, Các biến class Ngắn gọn, có tính chất gợi main thuật làm việc nhớ với biến Các biến đếm, biến trung Các biến class gian: đặt tên chữ cái: main biến đếm i,j II Các kỹ thuật viết mã Sử dụng khoảng trống hợp lý, phân đoạn chương trình, đánh dấu cấu trúc phân cấp Sử dụng else if cấu trúc đa lựa chọn Gióng hàng biểu thức điều kiện để tránh nhầm lẫn Sử dụng chương trình III Các kỹ thuật thiết kế chương trình IV Các kỹ thuật xây dựng hàm/thủ tục Trong toàn hàm đoạn chương trình Trong hàm Trong toàn hàm đoạn chương trình Tạo file header Chia chương trình thành hàm File PE10_Cursor Đóng gói, bao bọc Trong class Đặt tên hàm gợi nhớ, tiện sử Toàn hàm dụng chương trình Tham chiếu trỏ, truyền Trong toàn chương trình giá trị với biến int va bool Inline funtions Sử dụng lính canh Các hàm đơn giản class Trong vòng lặp … I Các kỹ thuật bẫy lỗi Bẫy lỗi nhập từ bàn phím, xóa nhớ đệm trước nhập Kiểm tra điều kiện đặc Nhóm PE10 - Lớp KSCLC K54 Hàm scanf hàm main Toàn chương trình 11 Kỹ thuật lập trình lập trình phòng ngừa biệt trước xử lí …3 II Phong cách lập trình Assertion Luôn gióng hàng câu lệnh sau dấu mở ngoặc Chú thích đầy đủ Các hàm quan trọng thread chương trình Toàn chương trình Toàn chương trình Gióng hàng câu lệnh Toàn chương trình Gióng hàng cặp mở đóng ngoặc nhọn cấp Toàn chương trình Dùng dòng trống để chia code thành đoạn Toàn chương trình 2.2 Kết chương trình Chức Chữ ký (Khai báo chức năng) Tình trạng nộp Người thực ( : chưa làm : làm (đán : chưa chạy h số : chạy thông chưa bắt (X: cài đặt theo hết ngoại lệ Y: kiểm thử) menu 3: chạy thông có bắt hết từ 1ngoại lệ) 14) Bật báo động Thủy – Ba Tắt báo động Thủy – Ba Chọn tầng đến Yêu cầu mở cửa Xóa yêu cầu Chuyển quyền sử dụng Gọi xuống Gọi lên 2 3 2 Tú – Tùng Thủy - Tú Ba – Thủy Tú - Tùng Tú – Thủy Tú – Thủy 2.3 Giao diện chương trình a, Giao diện bắt đầu chương trình (với admin) Nhóm PE10 - Lớp KSCLC K54 12 Kỹ thuật lập trình b Giao diện bắt đầu chương trình (với user) Nhóm PE10 - Lớp KSCLC K54 13 Kỹ thuật lập trình c.Yêu cầu thang máy đến tầng định: Nhóm PE10 - Lớp KSCLC K54 14 Kỹ thuật lập trình d Gọi thang máy lên(xuống): Nhóm PE10 - Lớp KSCLC K54 15 Kỹ thuật lập trình Nhóm PE10 - Lớp KSCLC K54 16 Kỹ thuật lập trình KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Chương trình thiết kế theo hướng đối tượng nên có ưu điểm cấu trúc rõ ràng, dễ dàng mở rộng với chức nhập số người khống chế số người, thêm tầng, thêm thang … Do mô hình hóa câu lệnh phức tạp nên đề cần xem xét quan trọng tập trung vào ThreadFindAction muốn cải tiến thuận toán theo cách di chuyển chẵn lẻ hay khống chế tầng Do sử dụng nhiều thread đồng thời nên chương trình phụ thuộc nhiều vào phần cứng hệ thống, độ trế thời gian phải xem xét tới Cách khắc phục: - Thay đổi cách biểu class elevator từ gọi thread - Tính đến trế thời gian, dùng hàm Sleep(200) Sleep(100) (đã thựu hiện) Nhược điểm cuối giao diện nhập liệu với giao diện in nên có trường hợp xảy lẫn trỏ in nhập vào Cách khắc phục: - Tạo giao diện đồ họa riêng (do khó khăn sử dụng đồ họa C nên nhóm chưa đủ thời gian để sửa đổi giao diện) Nhóm PE10 - Lớp KSCLC K54 17 Kỹ thuật lập trình TÀI LIỆU THAM KHẢO [1] Slide môn Kỹ thuật lập trình cô Vũ Thị Hương Giang [2] The Art of Computer Programming tập - Donald Knuth Nhóm PE10 - Lớp KSCLC K54 18 Kỹ thuật lập trình PHỤ LỤC Chú ý kèm file PE10_Cursor.h với file ElevatorSimalation.cpp folder, đính kèm file header chạy devC++ Chương trình hoạt động tốt môi trường Window, bạn bật lên sử dụng mà không cần thêm thao tác cài đặt Nhóm PE10 - Lớp KSCLC K54 19 [...]... cầu thang máy đi đến tầng chỉ định: Nhóm PE10 - Lớp KSCLC K54 14 Kỹ thuật lập trình d Gọi thang máy lên(xuống): Nhóm PE10 - Lớp KSCLC K54 15 Kỹ thuật lập trình Nhóm PE10 - Lớp KSCLC K54 16 Kỹ thuật lập trình KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Chương trình thiết kế theo hướng đối tượng nên có ưu điểm là cấu trúc rõ ràng, dễ dàng mở rộng với các chức năng nhập số người và khống chế số người, thêm tầng, thêm thang. .. họa, nêu qua những chức năng chính đã thực hiện được> Chức Chữ ký (Khai báo chức năng) Tình trạng khi nộp bài Người thực năng ( 0 : chưa làm hiện : ai làm (đán 1 : chưa chạy gì h số 2 : chạy thông và chưa bắt (X: cài đặt theo hết ngoại lệ Y: kiểm thử) menu 3: chạy thông và có bắt hết từ 1ngoại lệ) 14) 1 Bật báo động 3 Thủy – Ba 2 Tắt báo động 3 Thủy – Ba 3 4 5 6 7 8 Chọn tầng đến Yêu cầu mở cửa Xóa các

Ngày đăng: 14/06/2016, 16:19

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w