Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
288,5 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 Sinh viên thực : Hà Đức Thắng Phan Tuấn Phúc Võ Tá Hoàng Vũ Phi Long Lớp : KSCLC – K54 Giáo viên hướng dẫn : TS Vũ Thị Hương Giang Kỹ thuật lập trình Hà Nội, tháng năm 2012 Nhóm PE 05 - Lớp KSCLC K54 Kỹ thuật lập trình MỤC LỤC MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ GIẢI PHÁP .6 CHƯƠNG CÀI ĐẶT CHƯƠNG TRÌNH 10 12 12 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .13 TÀI LIỆU THAM KHẢO 14 PHỤ LỤC 15 Nhóm PE 05 - Lớp KSCLC K54 Kỹ thuật lập trình LỜI NÓI ĐẦU Bài tập lớn môn Kĩ thuật lập trình lớp KSCLC là: ”Mô tả hoạt động hệ thống thang máy tòa nhà D6” Tòa nhà D6 gồm có tầng hệ thống thang máy tòa nhà tổ hợp thang Qua khảo sát hệ thống thang máy tòa nhà khác hệ thống thang máy thư viện Tạ Quang Bửu, nhóm PE05 cố gắng mô tả gần hệ thống thang máy nhà D6 với thư viện Tạ Quang Bửu Từ kiến thức học lớp với việc tìm hiểu thông tin liên quan đến thang máy Internet cấu trúc thang máy, thuật toán dùng việc xử lí thang máy hay yêu cầu cần phải xử lí toán thang máy, nhóm thu thập thông tin cần thiết để đề phương án giải toán thang máy nhóm bắt đầu phân công công việc cụ thể cho thành viên thường xuyên gặp gỡ trao đổi kiểm tra tiến độ công việc Sau hoàn thành xong phần code xử lí cho thang máy, nhóm bắt tay vào nghiên cứu phần giao diện cho thang máy để quan sát cách tốt trình hoạt động thang, qua nhận cách thức để tối ưu hóa trình di chuyển thang máy Mặc dù thời gian có hạn với kinh nghiệm lập trình hạn chế nhóm PE05 cố gắng để hoàn thành tập cách tốt Trong trình code, quan điểm chủ quan sơ suất, chương trình có số lỗi trình hoạt động, mong nhận ý kiến đóng góp thầy cô bạn Xin chân thành cảm ơn Nhóm PE05 Nhóm PE 05 - Lớp KSCLC K54 Kỹ thuật lập trình PHÂN CÔNG THÀNH VIÊN TRONG NHÓM TUẦN 9: - Từng thành viên nhóm tự tìm hiểu thông tin thang máy, sau nhóm tập trung lại để thảo luận tìm phương án tốt phù hợp với khả nhóm để bắt tay vào thực - Sau thống phương án thực hiện, nhóm bắt đầu đề xuất cấu trúc liệu hàm cần thiết cho chương trình phân công thực TUẦN 10: Các thành viên nhóm tập trung hoàn thành công việc giao Cụ thể sau: • Hà Đức Thắng : Thực hàm nhập liệu cho thang • Võ Tá Hoàng : Thực hàm kiểm tra liệu nhập xử lí liệu nhập • Phan Tuấn Phúc: Thực hàm xử lí trình chạy thang • Vũ Phi Long : Thực hàm kiểm tra trình chạy thang TUẦN 11: - Nhóm PE05 tập trung lại để tổng hợp kết tổng hợp hàm vào chương trình thống nhất.\ - Sau thang hoạt động đáp ứng yêu cầu toán, nhóm tiếp tục nghiên cứu phần giao diện tối ưu trình hoạt động thang Phân công cụ thể sau: • • • • Hà Đức Thắng : Vẽ khung hệ thống thang máy Võ Tá Hoàng : Thực hàm di chuyển cho thang Vũ Phi Long : Thực hàm đóng mở cửa cho thang Phan Tuấn Phúc: Thực hàm tối ưu hóa hoạt động TUẦN 12: - Kiểm tra lại trình hoạt động thang, chỉnh sửa code cho hợp lí kiểm thử - Cuối phân công viết báo cáo Nhóm PE 05 - 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 Qua quan sát thực tế lần thảo luận nhóm, nhóm đến việc thống cấu trúc thang máy để lập trình cách thuận tiện Cùng với việc tham khảo mạng nhóm thống trình chạy thang, kết hợp hai thang cho đạt hiệu tối ưu Bài toán mô trình hoạt động thang đôi cho tòa nhà D6, hệ thống thang máy bao gồm thang Mỗi thang vừa hoạt động độc lập cách xác, vừa kết hợp với để phục vụ hành khách cách tối ưu Về phần giao diện thang, nhóm cố gắng mô cách xác Đó bên thang cung cấp thông tin tầng thời khách chờ hướng mà người khách Ở bên có tầng mà khách muốn đến 1.2 Biểu đồ IPO 1.2.1 Chức 1: Nhận yêu cầu từ bên thang INPUT PROCESS OUTPUT Tầng mà khách đứng chiều mà khách muốn Thêm tầng hướng vào vector tương ứng Vector tầng hướng thêm giá trị 1.2.2 Chức 2: Nhận tiếp yêu cầu từ bên INPUT PROCESS OUTPUT Tầng mà khách đứng chiều mà khách muốn Thêm tầng hướng vào vector tương ứng Vector tầng hướng thêm giá trị Vector tầng hướng thêm giá trị tương ứng sau khách gọi Sắp xếp lại vector theo trình tự di chuyển thang thực tế Vector tầng hướng xếp lại cách xác Nhóm PE 05 - Lớp KSCLC K54 Kỹ thuật lập trình 1.2.3 Chức 3: Nhận yêu cầu tầng mà khách muốn đến: INPUT PROCESS OUTPUT Tầng mà khách muốn đến vào thang Thêm tầng muốn đến cảu khác vào vector điểm đến Vector điểm đến thêm giá trị Vector điểm đến thêm giá trị Sắp xếp lại vector tuyến đường thang theo trình tự di chuyển thang thực tế Vector tuyến đường xếp lại cách xác 1.2.4 Chức 4: Di chuyển INPUT PROCESS OUTPUT Tuyến đường thang Di chuyển thang theo tuyến Thang đến tầng đích 1.2.5 Chức 5: Đóng mở cửa INPUT PROCESS OUTPUT Thang đến tầng đích Mở đóng cửa Đón trả xong khách 1.3 Thiết kế chương trình int main() Nhóm PE 05 - Lớp KSCLC K54 Kỹ thuật lập trình void left() Thang trái Moving void Arange() Thang trái EditStart DoorAction void right() Thang phải Route Arrange Moving DoorAction Mục đích hàm xem phần phụ lục 1.4 Thiết kế liệu Đầu tiên, trình hoạt động thang phụ thuộc nhiều vào vị trí thang hướng thang di chuyển nên nhóm dùng struct để mô tả trạng thái thang Nhóm PE 05 - Lớp KSCLC K54 Kỹ thuật lập trình Từ việc yêu cầu thang bao gồm tầng gọi, hướng di chuyển tầng đến yêu cầu thiết kế theo kiểu liệu struct Đối với trình chạy thang, từ hoạt động thực tế thang phục vụ khách theo thứ tự gọi thang, điều có nghĩa khách gọi thang trước ưu tiên phục vụ trước Từ nhóm nghĩ đến kiểu liệu mà tương tự với ngăn xếp hàng đợi, cuối nhóm đến thống sử dụng Vector để lưu thông tin tầng mà thang máy phải đến Vector có tính chất queue stack Hơn nữa, Vector có ưu điểm so với Array chế xếp chèn đơn giản nhiều 1.5 Thiết kế giải thuật 1.5.1 Giải thuật Giải thuật xếp vector startPoints lưu tầng mà thang gọi Do vector route vector lưu tầng mà thang phải đến phụ thuộc vào vector startPoints nên cần phải xếp lại vector startPoints Việc xếp có sử dụng đến thuật toán xếp lựa chọn Cụ thể sau: - Khi size vector startPoints lớn phải xếp tất tầng có lệnh gọi hướng di chuyển theo thứ tự tùy thuộc vào việc di chuyển thang - Sử dụng thuật toán xếp lựa chọn có cải tiến để xếp vector khoảng vị trí 1.5.2 Giải thuật Giải thuật xếp vector route vector lưu tầng phải đến thang - Với giá trị tầng phải đón tầng cần đến, xếp vector route để thang chạy hiệu - Hàm xếp có sử dụng hàm chèn theo thứ tự từ trái sang lớn từ phải sang Nhóm PE 05 - Lớp KSCLC K54 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 có tính gợi nhớ Đối với tất biến để dễ kiểm soát chương thuật làm việc trình với biến Sử dụng linh hoạt biến toàn Đối với hàm có sử dụng cục biến cục biến toàn cục hay cục Chú thích biến khai Đối với biến quan trọng báo II Các kỹ Sử dụng vòng lặp for Đối với hàm vẽ thang while cách linh hoạt hàm chạy song song thuật viết mã Sử dụng switch if else Các hàm phụ thuộc vào hướng chương trình cấu trúc đa thang, hàm cần xử lí hiệu lựa chọn nhiều trường hợp Soạn thảo code theo chuẩn Đối với tất hàm để dễ dàng theo dõi III Các kỹ Sử dụng thư viện cho phép Các hàm xử lí riêng cho chạy nhiều hàm song song thang thuật thiết kế Chia toán thành nhiều Đối với hầu hết hàm chương trình con, hàm sử dụng hàm rút ngán code IV Các kỹ Đặt tên vị trí phù hợp Đối với hầu hết hàm cho hàm thuật xây dựng Sử dụng phương pháp Đối với hầu hết hàm tham chiếu biến hợp lí V Các kỹ Luôn kiểm tra size Đối với hàm xếp vector trước thực thuật bẫy lỗi phép toán vector lập trình phòng Theo dõi thay đổi Đối với hàm xếp biến để dễ dàng kiểm soát VI Phong Đặt tên biến gợi nhớ Đối với tất biến Căn lề sử dụng dấu Đối với hầu hết hàm cách lập trình ngoặc để phân biệt đoạn chương trình Chú thích đầy đủ Đối với tất biến hàm Nhóm PE 05 - Lớp KSCLC K54 10 Kỹ thuật lập 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 ( : chưa làm : chưa chạy : chạy thông chưa bắt hết ngoại lệ 3: chạy thông có bắt hết ngoại lệ) Gọi thang 2 Đón khách 3 Đóng mở cửa Nhập tầng đến Người thực : làm (X: cài đặt Y: kiểm thử) Hoàng cài đặt Long kiểm thử Phúc cài đặt Thắng kiểm thử Thắng cài đặt Hoàng kiểm thử Long cài đặt Phúc kiểm thử 2.3 Giao diện chương trình Nhóm PE 05 - Lớp KSCLC K54 11 Kỹ thuật lập trình Nhóm PE 05 - Lớp KSCLC K54 12 Kỹ thuật lập trình KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Ưu điểm: - Mô tả cấu trúc thang thang - Chạy giống với thang máy thật Nhược điểm: - Chưa nhập nhiều tầng đến lúc - Thỉnh thoảng gặp lỗi Sẽ khắc phục nhược điểm bảo vệ Nhóm PE 05 - Lớp KSCLC K54 13 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] GENETIC ALGORITHM FOR CONTROLLERS IN ELEVATOR GROUPS: ANALYSIS AND SIMULATION DURING LUNCHPEAK TRAFFIC Download link sau: http://io.us.es/componentes/p.cortes/pdfs/asoc%2002146%20(gahca).pdf Nhóm PE 05 - Lớp KSCLC K54 14 Kỹ thuật lập trình PHỤ LỤC Hương dẫn cài đặt - Cài thư viện graphics.h - Thêm linker cần thiết Làm theo link sau: http://consoleapp.blogspot.com/2011/01/su-dung-thu-vien-graphicsh-voi-devc.html Hướng dẫn sử dụng - Muốn gọi thang click chuột vào sổ đồ họa sau nhấn phím ‘s’ Có thể gọi nhiều thang cách - Sau click vào sổ đồ họa nhấn phím ‘s’ click sang sổ console để nhập tầng Quy ước nhập tầng: n : lên tầng n - n : xuống tầng n - Khi thang đón xong khì phải click vào cửa sổ đồ họa nhấn phím ‘d’ để nhập tầng muốn đến Danh sách hàm sơ đồ phân cấp: void left(void* data ); // ham chay thang trai void right(void* data); // ham chay thang phai void Arrange (void* data);// ham xu lí don va nhap tang goi void EditStart ( ElevatorState &eleState, bool& edit, vector& startPoints, vector& direction); // ham sap xep route void RouteArrange( ElevatorState &eleState, vector& startPoints, vector& destPoints, vector& route, vector& direction); // ham di chuyen thang Nhóm PE 05 - Lớp KSCLC K54 15 Kỹ thuật lập trình void Moving(int& x1, int& y1, int& x2, int& y2, int &cua1, int &cua2, int& don, ElevatorState &eleState, vector& startPoints, vector& destPoints, vector& route, vector& direction); // ham dong mo cua void DoorAction(int& x1, int& y1, int& x2, int& y2, int &cua1, int &cua2); Nhóm PE 05 - Lớp KSCLC K54 16 [...]... LUẬN VÀ HƯỚNG PHÁT TRIỂN Ưu điểm: - Mô tả được cấu trúc ngoài thang trong thang - Chạy khá giống với thang máy thật Nhược điểm: - Chưa nhập được nhiều tầng đến một lúc - Thỉnh thoảng còn gặp lỗi Sẽ khắc phục các nhược điểm trong bài bảo vệ Nhóm PE 05 - Lớp KSCLC K54 13 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ủa cô Vũ Thị Hương Giang [2] GENETIC ALGORITHM FOR CONTROLLERS... http://consoleapp.blogspot.com/2011/01/su-dung-thu-vien-graphicsh-voi-devc.html 2 Hướng dẫn sử dụng - Muốn gọi thang thì click chuột vào của sổ đồ họa sau đó nhấn phím ‘s’ Có thể gọi nhiều thang bằng cách trên - Sau khi click vào của sổ đồ họa nhấn phím ‘s’ thì click sang của sổ console để nhập tầng Quy ước khi nhập tầng: n : lên tầng n - n : xuống tầng n - Khi thang đón xong khì phải click vào cửa sổ đồ họa và nhấn phím ‘d’ để nhập tầng... 1 Gọi thang 2 2 Đón khách 3 3 Đóng mở cửa 3 4 Nhập tầng đến 2 Người thực hiện : ai làm gì (X: cài đặt Y: kiểm thử) Hoàng cài đặt Long kiểm thử Phúc cài đặt Thắng kiểm thử Thắng cài đặt Hoàng kiểm thử Long cài đặt Phúc kiểm thử 2.3 Giao diện chương trình Nhóm PE 05 - Lớp KSCLC K54 11 Kỹ thuật lập trình Nhóm PE 05 - Lớp KSCLC K54 12 Kỹ thuật lập trình KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Ưu điểm: - Mô tả được... tầng n - Khi thang đón xong khì phải click vào cửa sổ đồ họa và nhấn phím ‘d’ để nhập tầng muốn đến Danh sách các hàm khi trong sơ đồ phân cấp: void left(void* data ); // ham chay thang trai void right(void* data); // ham chay thang phai void Arrange (void* data);// ham xu lí don va nhap tang goi void EditStart ( ElevatorState &eleState, bool& edit, vector& startPoints, vector&... xep route void RouteArrange( ElevatorState &eleState, vector& startPoints, vector& destPoints, vector& route, vector& direction); // ham di chuyen thang Nhóm PE 05 - Lớp KSCLC K54 15 Kỹ thuật lập trình void Moving(int& x1, int& y1, int& x2, int& y2, int &cua1, int &cua2, int& don, ElevatorState &eleState, vector& startPoints, vector