Để có thể quản lý và giám sát hoạt động của các thang máy ta có thể sử dụng các chương trình phần mềm để có thể quản lý tốt nhất một cách có hệ thống, an toàn và dễ sử dụng.. Chính vì th
Trang 1VIỆ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
<TÊN NHÓM>
PE 11
Sinh viên thực hiện : <Đỗ Văn Dũng>
<Nguyễn Xuân Bình> <Nguyễn Tiến Cường> <Nguyễn Thành Đạt>
Giáo viên hướng dẫn : TS Vũ Thị Hương Giang
Hà Nội, tháng 5 năm 2012
Trang 2MỤC LỤC
MỤC LỤC 2
LỜI NÓI ĐẦU 3
PHÂN CÔNG THÀNH VIÊN TRONG NHÓM 4
CHƯƠNG 1 PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ GIẢI PHÁP 5
1.1 Mô tả yêu cầu bài toán 5
1.2 Biểu đồ IPO 5
1.2.1 Chức năng 1 5
1.2.2 Chức năng 2 5
1.3 Thiết kế chương trình 5
1.4 Thiết kế dữ liệu 5
1.5 Thiết kế giải thuật 5
1.5.1 Giải thuật 1 6
1.5.2 Giải thuật 2 6
CHƯƠNG 2 CÀI ĐẶT CHƯƠNG TRÌNH 7
2.1 Các kỹ thuật lập trình đã áp dụng 7
2.2 Kết quả chương trình 7
2.3 Giao diện chương trình 8
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 9
TÀI LIỆU THAM KHẢO 10
PHỤ LỤC 11
Trang 3LỜI NÓI ĐẦU
Hiện nay, cùng với sự tăng trưởng mạnh mẽ của nền kinh tế quốc gia kéo theo nhu cầu về đô thị hóa tăng cao Các dự án đầu tư lớn về cơ sở hạ tầng, khu
đô thị mới, chung cư cao cấp, trung tâm thương mại được xây dựng ngày càng nhiều Do vậy, nhu cầu tiêu thụ thang máy ở Việt Nam sẽ tăng lên rất nhanh trong những năm tới
Để có thể quản lý và giám sát hoạt động của các thang máy ta có thể sử dụng các chương trình phần mềm để có thể quản lý tốt nhất một cách có hệ thống, an toàn và dễ sử dụng
Việc điều khiển, vận hành giám sát nó là một bài toán cần được giải quyết dành cho các kĩ sư Chính vì thế bài tập lớn của chúng tôi chọn đề tài” chương trình điều khiển thang máy trong tòa nhà 6 tầng”
Quá trình tiếp cận:
- Nghiên cứu hoạt động của thang máy Thư viện Ta Quang Bửu
- Tìm hiểu thành phần cấu tạo cơ bản của thang máy
- Xây dựng thuật toán điều khiển thang máy
- Xây dựng chương trình điều khiển với ngôn ngữ C và C++
Được sự hướng dẫn tận tình của cô giáo: Vũ Thị Hương Giang – Viện Công nghệ thông tin và truyền thông- Trường Đại học Bách khoa Hà Nội, chúng tôi
đã hoàn thành bài tập này
Do thời gian làm đồ án có hạn, nên không thể tránh khỏi thiết sót và hạn chế, chúng tôi rất mong nhận được sự đóng góp ý kiến của thầy cô và các bạn
Xin chân thành cảm ơn
Trang 4PHÂN CÔNG THÀNH VIÊN TRONG NHÓM
Phân công công việc nhóm:
Đỗ Văn Dũng: tổng hợp bài tập, kiểm thử chương trình
Nguyễn Xuân Bình: xây dựng chương trình, viết code, đồ họa
Nguyễn Tiến Cường: tìm hiểu thực tế, xây dựng thuật toán
Nguyễn Thành Đạt: xây dựng thuật toán, viết code, kiểm thử chương trình, test
Trang 5CHƯƠNG 1. PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ GIẢI PHÁP
<Trình bày, mô tả chi tiết về các kết quả khảo sát về bài toán – thông qua đề bài
và sau những lần trao đổi, gặp mặt các thành viên trong nhóm>
<Thiết kế dữ liệu, giải thuật, giao diện chương trình>
1.1 Mô tả yêu cầu bài toán
Nội dung bài tập: thiết kế chương trình điều khiển thang máy đôi cho tòa
nhà D6 (6 tầng)
gồm các phần:
- thực nghiệm tìm hiểu hoạt động thang máy đôi thư viện Tạ Quang Bửu
- thiết kế giải thuật cho chương trình điểu khiển thang máy
- Test và kiểm tra giải thuật
- Viết chương trình bằng ngôn ngữ lập trình C
- Kiểm thử chương trình
- Viết báo cáo và mở rộng chương trình
1.2 Biểu đồ IPO
<Mô tả biểu đồ IPO cho các nghiệp vụ của bài toán >
1.2.1 chức năng ngoài thang
Nút lên
Nút xuống
Đọc dữ liệu đầu vào Đọc dữ liệu đầu vào
Cấu trúc khach.vitri Cấu trúc khach.vitri
1.2.2 Chức năng chọn thang gần nhất
Thang 1, thang 2 Chọn thang gần nhất Thang 1 hoặc thang 2
1.2.3 chức năng chọn đường thang đến
Thang 1
Thang 2
Chọn đường lên hay xuống
Thành công hoặc thất bại
Trang 6Chọn đường lên hay xuống
Thành công hoặc thất bại
1.2.4 chức năng mở cửa
Thang 1
Thang 2
Mở cửa đón khách
Mở cửa đón khách
Thất bại or thành công Thất bại or thành công
1.2.5 chức năng nhập bên trong thang máy
1.2.6 chức năng đóng cửa thang
Thang 1
Thang 2
Đóng cửa để di chuyển Đóng cửa để di chuyển
Thành công hoặc thất bại
Thành công hoặc thất bại
1.3 Thiết kế chương trình
Các hàm có trong chương trình:
int lenh_goi_thang();
void lenh_goi_cat_ngang();
void dieu_thang(thang_may tm, int tang);
int lenh_trong_thang(thang_may tm);
void do_lenh_trong(thang_may tm,int tang_dich);
void xoa_lenh_goi(int n);
void xoa_lenh_trong(thang_may tm, int n);
int abi(int a);
void nhap_lenh_dieu_khien(thang_may tm);
void gioi_thieu();
Trang 71.4 Thiết kế dữ liệu
Cấu trúc dữ liệu chính:
Cấu trúc :thang máy gồm các thuộc tính:
-mã TM
- Vị trí( từ tầng 1 đến tầng 6)
- Trạng thái(-1 đi xuống,0 đứng yên,1 đi lên)
- Tầng cuối(tầng 1đến tầng 6)
- Được chọn(0 không được chọn,1 được chọn kiểu 1 có nghĩa là thang máy đang đi lên hoặc đi xuống khách chọn chiều đến cùng chiều đi
chuyển của thang,2 nghia là thang đang đi lên hoặc đi xuống khách chọn chiều đến ngược chiều di chuyển của thang)
Cấu trúc tầng:gồm các thuộc tính:
- Trạng thái( 0-không có khách,-1 khách đi xuống,1 khách đi lên)
- Thang1 (0 thang1 đứng yên tại tầng này,-1 thang1 sẽ xuống khỏi tầng này,1 thang1 sẽ lên khỏi tầng này)
- Thang2 tương tự
- Số khách trả của mỗi thang
Cấu trúc khách: gồm các thuộc tính:
- Vị trí(tầng 1,2, ,6)
- Trạng thái(0,-1,1)
- Tầng đến(1,2, ,6)
1.5 Thiết kế giải thuật
<Mô tả chi tiết về 2-4 giải thuật quan trọng tương ứng với các thành phần chính trong chương trình và các IPO giới thiệu ở trên Lưu ý: chỉ giới thiệu các giải thuật được sinh viên cải tiến hay áp dụng có sáng tạo; nếu không có thì thôi>
<Với những nghiệp vụ phức tạp, có thể vẽ thêm biểu đồ luồng>
1.5.1 Giải thuật 1
Hàm chọn thang máy
Nếu vị trí khách ở trên 2 thang
- 2 thang cùng chiều
+ Thang đi lên, khách đi lên và vị trí khách khác tầng trên cùng
Khoảng cách thang nào tới vị trí của khách nhỏ hơn sẽ được chọn + Các trường hợp còn lại, thang được chọn là thang có khoảng cách giữa tầng cuối cùng với vị trí khách nhỏ hơn (nếu bằng thì thang được chọn là thang 1)
- 2 thang ngược chiều
+ Khách đi lên, vị trí khách khác tầng trên cùng thang đi lên sẽ được chọn
Trang 8+ Khách đi xuống, vị trí khách khác tầng dưới cùng, thang được chọn
là thang có khoảng cách giữa tầng cuối cùng( tầng trên cùng hoặc dưới cùng) đến vị trí khách nhỏ hơn
- Một thang đứng im, một thang chuyển động
+ Nếu thang máy chuyển động lên, khách đi lên, thang máy đó được chọn, nếu không thang còn lại sẽ được chọn
- 2 thang đều đứng yên
+ Thang được chọn là thang có khoảng cách đến vị trí khác nhỏ hơn
Nếu khách ở dưới 2 thang
- 2 thang cùng chiều
+ Thang đi xuống, khách đi xuống (vị trí khách khác tầng 1), thang được chọn là thang có khoảng cách gần hơn đến vị trí khách
+ Các trường hợp còn lại thang được chọn là thang có khoảng cách
từ tầng cuối cùng đến vị trí khách nhỏ hơn( trường hợp bằng nhau, thang 1 sẽ được chọn)
- 2 thang ngược chiều
+ Khách đi xuống, thang có chiều đi xuống sẽ được chọn
+ Khách đi lên, thang được chọn là thang có khoảng cách từ tầng cuối cùng đến vị trí khách nhỏ hơn( trường hợp bằng nhau, thang 1 sẽ được chọn)
- Một thang chuyển động, một thang đứng yên
+ Nếu thang chuyển động xuống, khách đi xuống, thang đó được chọn, nếu không, thang còn lại được chọn
- 2 thang đều đứng yên, thang được chọn là thang có khoảng cách tới vị trí khách nhỏ hơn( nếu bằng nhau, thang 1 được chọn)
Khách ở giữa hai thang
- 2 thang ngược chiều,
+ thang ở trên đi xuống, thang có cùng chiều với lệnh gọi sẽ được chọn
+ thang ở trên đi lên, thang có khoảng cách tầng cuối cùng đến vị trí khách nhỏ hơn sẽ được chọn (Nếu bằng nhau, thang 1 sẽ được chọn)
- 2 thang cùng chiều
+ khách đi lên, thang đi lên, thang bên dưới được chọn +khách đi xuống, thang đi xuống, thang bên trên được chọn +khách đi ngược chiều với thang, thang được chọn là thang đi đến tầng cuối trước
- 2 thang đứng yên
+ thang được chọn là thang có khoảng cách đến vị trí khách nhỏ hơn
- Một thang đứng yên, một thang chuyển động
+ nếu thang bên trên chuyển động xuống, lệnh gọi xuống, thang đó được chọn
+ nếu thang bên dưới chuyển động lên, lệnh gọi lên, thang đó được chọn
Trang 9+ ngoài hai trường hợp trên, thang đứng yên được chọn
Thang đứng yên tại vị trí khách gọi, thang đó được chọn
1.5.2 Giải thuật 2
Thang máy có 2 kiểu gọi
Kiểu 1 là trên đường thang máy di chuyển, dừng lại đón khách
Kiểu 2 là trên đường thang máy di chuyển, không dừng lại đón khách, đến tầng cuối cùng, quay lại đón khách
Hàm gọi thang máy đến
Nếu thang được gọi theo kiểu 1 và có vị trí tầng khác vị trí khách
- Vị trí thang lớn hơn vị trí khách
for ( i = vi tri khách + 1; i<= vị trí thang máy; i++) hướng đi của thang
là đi xuống(-1)
- Vị trí thang nhỏ hơn vị trí khách
for ( i = vị trí thang máy; i<=vị trí khách-1; i++) hướng đi thang máy
là đi lên
- Xác định lại điểm cuối
m=fabs( tầng cuối – vị trí thang máy)
n= fabs(vị trí thang máy – vị trí khách)
nếu n>m tầng cuối = vi trí khách
Trang 10CHƯƠNG 2. CÀI ĐẶT CHƯƠNG TRÌNH
2.1 Các kỹ thuật lập trình đã áp dụng
<Liệt kê các kỹ thuật lập trình đã sử dụng để làm bài tập lớn >
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) và phạm vi áp dụng
I Các kỹ
thuật làm việc
với biến
1 Khai báo biến
2 Đặt tên biến
3 Sử dụng kiểu dữ liệu hợp
lý cho biến
4 Khởi tạo biến
5 Sử dụng biến trung gian
6 Sử dụng con trỏ
II Các kỹ
thuật viết mã
chương trình
hiệu quả
1 Sử dụng các cấu trúc rẽ nhánh
2 Các cấu trúc lặp
III Các kỹ
thuật thiết kế
chương trình
1 Thiết kế giải thuật
2 Thiết kế dữ liệu
IV Các kỹ
thuật xây dựng
hàm/thủ tục
1 Sử dụng các quy tắc tăng tốc độ
2 Kĩ thuật chồng, đa năng hóa các hàm, toán tử
V Các kỹ
thuật bẫy lỗi
và lập trình
phòng ngừa
1 Dung hàm bao gói
2 Tạo giao diện rõ ràng
3 Đơn giản hóa các hàm bằng cách cấu trúc chương trình
4 Kiểm tra tham số đầu vào
VI Phong
cách lập trình
1 Tổ chức mã nguồn
2 Chú thích rõ ràng
Trang 112.2 Kết quả chương trình
<Trình bày tổng quan về kết quả đạt được trong quá trình làm bài tập lớn trong chương trình minh họa, nêu qua những chức năng chính đã thực hiện được> Chức
năng
(đán
h số
theo
men
u từ
1-14)
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 chạy
2 : chạy thông và chưa bắt
hết ngoại lệ 3: chạy thông và có bắt hết
ngoại lệ)
Người thực hiện : ai làm
gì
(X: cài đặt Y: kiểm thử)
Trang 122.3 Giao diện chương trình
Trang 13KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trong quá trình thực hiện bài tập lớn, nhóm đã thực hiện được yêu cầu của bài toán đặt ra Ưu điểm là đã sử dụng được những kiến thức đã tiếp thu từ bài giảng môn kĩ thuật lập trình ở trên lớp để xây dựng chương trình
Nhược điểm là chưa có kinh nghiệm lập trình, chưa tối ưu hóa được chương trình về dung lượng và thời gian chạy
Hướng phát triển cho đề tài:
Tiếp tục tìm hiểu xây dựng chương trình tối ưu hơn
Thêm vào những tính năng quản lý cần thiết với 1 thang máy như khối lượng tối
đa hay chức năng báo động trong thang
Đưa thêm đồ họa để việc giao tiếp giữa người sử dụng và chương trình thuận tiện hơn
Trang 14TÀI LIỆU THAM KHẢO
<Liệt kê thông tin chi tiết về các tài liệu tham khảo đã sử dụng trong quá trình làm bài tập lớn – kể cả tài liệu tiếng Anh, tiếng Việt, trên Internet hay sách, báo…>
[1] Slide môn Kỹ thuật lập trình của cô Vũ Thị Hương Giang
[2]…
Trang 15PHỤ LỤC
<Phần này đưa ra hướng dẫn cài đặt, hướng dẫn sử dụng của chương trình, một
số các vấn đề khác muốn trình bày…>