Tải bản đầy đủ (.doc) (15 trang)

Bài tập lớn môn kỹ thuật lập trình thang máy

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (171.53 KB, 15 trang )

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

<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>
Lớp

: cơ khí hàng không – K54

Giáo viên hướng dẫn : TS. Vũ Thị Hương Giang

Hà Nội, tháng 5 năm 2012


Kỹ thuật lập trình

MỤ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
CHƯƠNG 2. CÀI ĐẶT CHƯƠNG TRÌNH.............................................................10


..................................................................................................................................... 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 <Mã nhóm> - Lớp <Tên lớp> K5X

2


Kỹ thuật lập trình

LỜ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.

Nhóm <Mã nhóm> - Lớp <Tên lớp> K5X

3


Kỹ thuật lập trình

PHÂ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

Nhóm <Mã nhóm> - Lớp <Tên lớp> K5X

4


Kỹ thuật lập trình

CHƯƠNG 1. PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ GIẢI PHÁP

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
INPUT
Nút lên
Nút xuống

PROCESS
Đọc dữ liệu đầu vào
Đọc dữ liệu đầu vào

OUTPUT
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

INPUT
Thang 1, thang 2

PROCESS
Chọn thang gần nhất

1.2.3. chức năng chọn đường thang đến
INPUT
PROCESS
Thang 1
Thang 2

Chọn đường lên hay
xuống

Nhóm <Mã nhóm> - Lớp <Tên lớp> K5X

OUTPUT
Thang 1 hoặc thang 2

OUTPUT
Thành công hoặc thất bại
Thành công hoặc thất bại
5


Kỹ thuật lập trình

Chọn đường lên hay
xuống


1.2.4. chức năng mở cửa
INPUT
Thang 1
Thang 2

PROCESS
Mở cửa đón khách
Mở cửa đón khách

1.2.5. chức năng nhập bên trong thang máy
INPUT
PROCESS
Phím bấm tầng

Đọc dữ liệu

1.2.6. chức năng đóng cửa thang
INPUT
PROCESS
Thang 1
Thang 2

Đóng cửa để di chuyển
Đóng cửa để di chuyển

OUTPUT
Thất bại or thành công
Thất bại or thành công


OUTPUT
Cấu trúc khach.tangden

OUTPUT
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();

1.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:
Nhóm <Mã nhóm> - Lớp <Tên lớp> K5X

6


Kỹ thuật lập trì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
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
+ 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
Nhóm <Mã nhóm> - Lớp <Tên lớp> K5X

7


Kỹ thuật lập trình

- 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
+ 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

Nhóm <Mã nhóm> - Lớp <Tên lớp> K5X

8


Kỹ thuật lập trình

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


Nhóm <Mã nhóm> - Lớp <Tên lớp> K5X

9


Kỹ thuật lập trình

CHƯƠ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ỹ
1. Khai báo biến
2. Đặt tên biến
thuật làm việc
với 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ỹ
1. Sử dụng các cấu trúc rẽ

nhánh
thuật viết mã
2. Các cấu trúc lặp
chương trình
hiệu quả
III. Các kỹ
1. Thiết kế giải thuật
2. Thiết kế dữ liệu
thuật thiết kế
chương trình
IV. Các kỹ
1. Sử dụng các quy tắc tăng
tốc độ
thuật xây dựng
2. Kĩ thuật chồng, đa năng
hàm/thủ tục
hóa các hàm, toán tử
V.
Các kỹ
1. Dung hàm bao gói
2. Tạo giao diện rõ ràng
thuật bẫy lỗi và
lập trình phòng
ngừa
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
1. Tổ chức mã nguồn

2. Chú thích rõ ràng
cách lập trình

Nhóm <Mã nhóm> - Lớp <Tên lớp> K5X

10


Kỹ thuật lập trình

2.2. Kết quả chương trình
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
Chữ ký (Khai báo chức
Tình trạng khi nộp bài
Người thực
năng
năng)
( 0 : chưa làm
hiện : ai làm
(đán
1 : chưa chạy

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
Nhận yêu cầu ngoài thang
3
2
Nhận yêu cầu trong thang
3
3
Chạy thang lên
3
4
Chạy thang xuống
3
5
Tối ưu lựa chọn
3

Nhóm <Mã nhóm> - Lớp <Tên lớp> K5X

11


Kỹ thuật lập trình

2.3. Giao diện chương trình

Nhóm <Mã nhóm> - Lớp <Tên lớp> K5X


12


Kỹ thuật lập trình

KẾ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.

Nhóm <Mã nhóm> - Lớp <Tên lớp> K5X

13


Kỹ thuật lập trình

TÀI LIỆU THAM KHẢO
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]…

Nhóm <Mã nhóm> - Lớp <Tên lớp> K5X

14


Kỹ thuật lập trình

PHỤ LỤC
số các vấn đề khác muốn trình bày…>

Nhóm <Mã nhóm> - Lớp <Tên lớp> K5X

15



×