Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
3,11 MB
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 PE03_THCN Sinh viên thực : Trần Phong Vũ Đào Trọng Đại Nguyễn Lâm Hoàng Nguyễn An Hoan 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 Giải thuật mô tả giống thích code Giải thuật viết cho thang nhận lệnh thực lệnh gọi khách hàng hợp lý thuận tiện nhất, hiệu tốt Nhờ vào việc so sánh tầng (curr1, curr2) chiều (updown1, updown2) thang, đồng thời đánh giá chiều muốn (udord) khách hàng, giải thuật không ngoại trừ trường hợp 12 CHƯƠNG CÀI ĐẶT CHƯƠNG TRÌNH 13 Giao diện khởi động cho chương trình 15 15 Đến tầng gọi, gọi tầng di chuyển, mở cửa đón khách 15 15 Mở cửa đón khách, nhập tầng đến , mở cửa trả khách đóng cửa 15 16 Nhập tầng đến thang máy 16 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 PE03 - Lớp KSCLC K54 Kỹ thuật lập trình LỜI NÓI ĐẦU Trong sống hàng ngày, điều kiện sống ngày phát triển nhu cầu lại, vận chuyển người ngày tăng, phương tiện giúp người lại, vận chuyển theo quãng đường rộng hay dài, phương tiện giúp người mở rộng không gian sống phát triển theo Hệ thống thang bộ, thang hệ thống thang máy sáng tạo giúp thuận tiện mặt phát triển không gian sống Trường Đại học Bách Khoa Hà Nội có hai tòa nhà có hệ thống thang máy, tòa nhà B1 thư viện Tạ Quang Bửu Để trước hỗ trở lại, sau nâng cao mặt mạnh khu vực trung tâm tài trường, chúng em thấy cần hệ thống thang đôi cho khu vực Theo đó, để tiếp cận cách trực quan hệ thống thang máy, mặt khác để hoàn thành tập lớn môn Kỹ Thuật Lập Trình cô Vũ Thị Hương Giang hướng dẫn Chúng em Trần Phong Vũ – Đào Trọng Đại – Nguyễn Lâm Hoàng – Nguyễn An Hoan - PE03 lớp Kỹ sư chất lượng cao K54 xin đề xuất nhìn tổng quát hệ thống thang máy, cụ thể hệ thống thang đôi, thiết kế cho khu vực nhà D6 Dựa phân tích hệ thống đôi thang máy thư viện Tạ Quang Bửu, chúng em tiếp cận hoàn thành tập lớn: Thiết kế hệ thống đôi thang máy cho khu vực D6 dựa hệ thống đôi thang máy tòa nhà thư viện Tạ Quang Bửu Trong trình làm tập này, chưa có nhiều kinh nghiệm việc phân tích thiết kế hệ thống, thời gian hoàn thành tập lớn có hạn nên phần trình bày chúng em nhiều hạn chế, mong giáo viên hướng dẫn bạn góp ý để phần tập lớn ngày hoàn thiện Thay mặt: Trần Phong Vũ Nhóm PE03 - Lớp KSCLC K54 Kỹ thuật lập trình PHÂN CÔNG THÀNH VIÊN TRONG NHÓM Stt Tên công việc Phân công Nhận định tập lớn Khảo sát trạng tòa nhà thư viện Tạ Quang Bửu Phân tích hệ thống chức Phong Vũ Phong Vũ An Hoan K Q 07/03/2012 07/03/2012 x Từ ngày Đến ngày 09/03/2012 09/03/2012 x Trọng Đại 09/03/2012 16/03/2012 Lâm Hoàng x Phong Vũ Trọng Đại 09/03/2012 16/03/2012 Lâm Hoàng x x x x x x Phân tích hệ thống liệu Thiết kế hệ thống - Thiết kế tổng thể - Thiết kế chương trình - Thiết kế giao diện sử dụng - Thiết kế kiểm soát Phong Vũ 09/03/2012 23/03/2012 Trọng Đại Lâm Hoàng An Hoan Cài đặt chương trình (Code) - - - Phong Vũ 23/03/2012 15/04/2012 Trọng Đại Lâm Hoàng Kiểm thử chương trình phần : - Phong Vũ, An Hoan - Trọng Đại Kiểm thử hệ thống Trọng Đại 06/04/2012 20/04/2012 Lâm Hoàng An Hoan Tài liệu hướng dẫn sử dụng Phong Vũ Triển khai sử dụng Trọng Đại Nhóm PE03 - Lớp KSCLC K54 13/4/2012 20/042012 x x x x x x 0 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 Yêu cầu: Thiết kế hệ thống thang máy cho khu vực nhà D6, dựa hệ thống thang máy tòa nhà thư viện Tạ Quang Bửu Yêu cầu cụ thể: +) Hệ thống thang máy hệ thống thang đôi, xử lý thang cho lần nhập liệu gọi lên xuống, xử lý thang, ưu tiên thang hay gọi thang đón trả khách.(1) +) Bảng điều khiển thang máy có đầy đủ chức năng: - Có nút nhập tầng từ tầng đến tầng (2) - Có chức giữ cửa, đóng cửa, mở cửa (3) - Có thể có chức báo động (4) - Có chức hiển thị giá trị thông báo cho người dùng (5) 1.2 Biểu đồ IPO 1.2.1 Chức INPUT Tầng đợi (ord) PROCESS Gọi thang Sắp xếp danh sách đến Chiều xuống (0) (udord =0) Danh sách tầng cần đón trả khách Danh sách tầng cần đón trả khách Gọi thang Nhập điều kiện gọi thang Chiều lên (1) (udord = 1) OUTPUT Danh sách tầng cần đón trả khách Gọi thang Nhập điều kiện gọi thang Danh sách tầng cần đón trả khách Thang máy di chuyển Tầng đến Nhóm PE03 - Lớp KSCLC K54 Kỹ thuật lập trình 1.2.2 Chức INPUT PROCESS OUTPUT Tầng muốn đến (1,2,3,4,5) Sắp xếp danh sách đến Danh sách tầng cần đón trả khách Danh sách tầng cần đón trả khách Thang máy di chuyển Tầng đến 1.2.3 Chức INPUT PROCESS OUTPUT Nút giữ cửa thang máy (BARSPACE) Ngừng đóng/mở cửa Cửa tạm ngừng hoạt động Tầng đến Mở cửa Trạng thái mở cửa Tầng đến Đóng cửa Trạng thái đóng cửa 1.2.4 Chức INPUT PROCESS OUTPUT Số người thang máy ( x){ int count = 0; for (i=0; i m[i]) || (m[i-1] < m[i])){ for (j= count-1; j>=i; j ){ m[j+1] = m[j]; } m[i]=x; break; } if ((m[i] > x) && (m[i+1] == 0)) m[count] = x; } } } } Giải thuật dùng để chèn tầng mô tả sau: - Chèn giá trị nhập vào x(tầng đợi) vào mảng m1doi[] mảng chưa có phần tử chứa giá trị x (tránh không xử lý qua lần) - Nếu mảng m1[] có phần tử có giá trị x không chèn - Nếu thang máy đứng yên (updown = 0) m[] có phần tử m[0] # nên chèn x vào m[1] để thang máy tiếp tục xử lý - Nếu thang máy lên (updown = 1) tầng gọi lớn tầng thang máy (curr = m[0]) tiến hành xếp vào dãy tăng thang máy, tầng gọi nhỏ tầng thang máy tiến hành xắp xếp vào dãy giảm thang máy - Tương tự cho trường hợp thang máy chiều xuống Biểu đồ luồng cho trường hợp thang máy lên tầng gọi nhỏ tầng Nhóm PE03 - Lớp KSCLC K54 Kỹ thuật lập trình thời thang máy: Start x, updown, m, mdoi T mdoi[i] == mdoi[i] = x F T m[i] == x F T updown == m [1] = x F updown == T m[0] > x T T m[i] < x for (j= count-1; j>=i; j ){ m[j+1] = m[j]; }; m[i]=x; F … end Nhóm PE03 - Lớp KSCLC K54 10 Kỹ thuật lập trình 1.5.2 Giải thuật Giải thuật tiến hành liên kết hai thang, nhập vào giá trị tầng gọi thang nhận lệnh gọi, thang không nhận lệnh gọi khách hàng Giải thuật gắn với chức xử lý thang đôi, tiến hành chạy hai thang lúc void lienkethaithang(int updown1, int updown2, int x){//lien ket hai thang// if ((updown1 == 0) && (updown2 == 0)){//hai thang dang dung yen// x = tangdoi(x); udord = chieudi(udord); if (curr1 == curr2) chentang(x,m1,m1doi,updown1); else { if ( abs(curr1-x) curr2))) chentang(x,m1,m1doi,updown1); else chentang(x,m2,m2doi,updown2); } if ((updown1 == 1) && (updown2 == 0)){//thang dung yen, thang chuyen dong di len// x = tangdoi(x); udord = chieudi(udord); if ((udord == 0) || ((udord == 1)&&(x < curr1))) chentang(x,m2,m2doi,updown2); else chentang(x,m1,m1doi,updown1); } if ((updown1 == -1) && (updown2 == 0)){//thang dung yen, thang chuyen dong di xuong// x = tangdoi(x); udord = chieudi(udord); if ((udord == 1) || ((udord == 0)&&(x > curr1))) chentang(x,m2,m2doi,updown2); else chentang(x,m1,m1doi,updown1); } if ((updown1 == 1) && (updown2 == 1)){//thang va cung di len// x = tangdoi(x); udord = chieudi(udord); if (curr1 == curr2) chentang(x,m1,m1doi,updown1); //uu tien thang 1//; if (curr1 > curr2){ if ((udord == 1) && (curr2 [...]... tạp, được cài đặt thuận tiện, sao cho phù hợp và dễ chấp nhận nhất theo ý muốn của người dùng cũng như người thực hiện bài tập này Vì thế bài tập lớn mà nhóm PE03 hoàn thành, mặc dù còn nhiều thiếu sót không thể tránh khỏi, tuy nhiên đã trình bày và cài đặt một cách tương đối đầy đủ chức năng mà hệ thống đôi thang máy yêu cầu Chương trình mô phỏng hệ thống đôi thang máy của nhóm PE03 được trình bày... if - else - Cấu trúc lặp for( ) While( ) được sử dụng hầu hết trong các hàm sử dụng - Hàm chaythang() sử dụng vòng lặp while( ) để lặp với số lần lặp không biết trước do yêu cầu của người sử dụng thang máy là không biết trước Thiết kế cho cả chương trình, phân cấp chương trình Thiết kế top_down cho hàm Chaythang() Cấu trúc dữ liệu mảng với các giải thuật thêm, xóa, chèn trong mảng Các tên hàm có tính... 2 Giải thuật này tiến hành liên kết hai thang, khi nhập vào một giá trị tầng gọi thì thang nào sẽ được nhận lệnh gọi, thang nào không nhận lệnh gọi của khách hàng Giải thuật này gắn với chức năng xử lý thang đôi, tiến hành chạy hai thang cùng lúc void lienkethaithang(int updown1, int updown2, int x){//lien ket hai thang/ / if ((updown1 == 0) && (updown2 == 0)){//hai thang dang dung yen// x = tangdoi(x);... hàng đợi thang 1, 2 Updown1, updown2: tầng 1, 2 lên xuống hay đứng yên Curr1, curr2: tầng thang hiện tại Udord: chiều khách hàng muốn đi Dùng kiểu int cho tất cả các biến, để đánh các chỉ số và mã hóa các trạng thái thang máy m1[], m2[], m1doi[], m2doi[], i,j: khởi tạo 1 lần dùng nhiều lần - Gióng hàng hợp lý, thống nhất - Sử dụng khoảng cách hợp lý Hàm lienkethaithang(), chentang(), chaythang() chủ... Các kỹ thuật viết mã chương trình hiệu quả Khởi tạo biến Thêm biến trung gian 1 Nguyên tắc 2 Cấu trúc rẽ nhánh 3 Cấu trúc lặp III Các kỹ thuật thiết kế chương trình IV Các kỹ thuật xây dựng 1 Thiết kế top_down 2 Tinh chỉnh từng bước 3 Thiết kế dữ liệu 1 Đăt tên cho hàm Nhóm PE03 - Lớp KSCLC K54 Mô tả đối tượng áp dụng (hàm, biến, biểu thức, câu lệnh) và phạm vi áp dụng Biến toàn thể: m1[], m2[], m1doi[],... Giao diện khởi động cho chương trình Đến tầng gọi, gọi tầng khi đang di chuyển, mở cửa đón khách Mở cửa đón khách, nhập tầng đến , mở cửa trả khách và đóng cửa Nhóm PE03 - Lớp KSCLC K54 15 Kỹ thuật lập trình Nhập tầng đến khi đang ở trong thang máy Nhóm PE03 - Lớp KSCLC K54 16 Kỹ thuật lập trình KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Đây là một bài tập lớn có quy mô nhỏ, nhưng bài tập với hệ thống có tính năng... các tính năng có của chương trình này Nhưng chương trình này chưa xử lý được hệ thống báo động khi có sự cố quá tải hay quá số người quy định, lúc nhập dữ liệu vào hai thang thì phải dừng hoạt động của hai thang Vì thế tính khả thi chưa cao.Hơn nữa giao diên của chương trình còn thô sơ, không đẹp và bắt mắt gây nhàm chán cho người dùng Chương trình được chúng em hoàn thành trong 10 tuần, chưa được... chentang(x,m2,m2doi,updown2); } if ((updown1 == 1) && (updown2 == 0)){/ /thang 2 dung yen, thang 1 chuyen dong di len// x = tangdoi(x); udord = chieudi(udord); if ((udord == 0) || ((udord == 1)&&(x < curr1))) chentang(x,m2,m2doi,updown2); else chentang(x,m1,m1doi,updown1); } if ((updown1 == -1) && (updown2 == 0)){/ /thang 2 dung yen, thang 1 chuyen dong di xuong// x = tangdoi(x); udord = chieudi(udord);... chentang(x,m2,m2doi,updown2); } } if ((updown1 == 0) && (updown2 == 1)){/ /thang 1 dung yen, thang 2 chuyen dong di len// x = tangdoi(x); udord = chieudi(udord); if ((udord == 0) || ((udord == 1)&&(x < curr2))) chentang(x,m1,m1doi,updown1); else chentang(x,m2,m2doi,updown2); } if ((updown1 == 0) && (updown2 == -1)){/ /thang 1 dung yen, thang 2 chuyen dong di xuong// x = tangdoi(x); udord = chieudi(udord);... hàm sử dụng không thay đổi cách thức 3 Kiểm tra mã nguồn trong khi viết chương trình 1 Nhất quán 2 Rõ ràng, chú thích đầy đủ Áp dụng cho các hàm con, vừa viết vừa kiểm tra điều kiện, điều kiên biên, kiểm thử Áp dụng cho toàn bộ chương trình Cho toàn chương trình 1.7 Kết quả chương trình Chức năng (đán h số theo menu từ 114) 1 Chữ ký (Khai báo chức năng) Tình trạng khi nộp bài ( 0 : chưa làm 1 : chưa