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

BÀI TẬP LỚN MÔN KỸ THUẬT LẬP TRÌNH

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 (228.8 KB, 22 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

PE10

Sinh viên thực hiện : 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, 2 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



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 của người điều khiển................................................................5
1.2.2. Chức năng của người sử dụng....................................................................6
1.3. Thiết kế chương trình....................................................................................7
1.4. Thiết kế dữ liệu...............................................................................................9
1.5. Thiết kế giải thuật.........................................................................................11
1.5.1. Giải thuật đóng/mở cửa............................................................................11
1.5.2. Giải thuật tìm kiếm thang máy thực hiện lệnh.........................................12
CHƯƠNG 2.

CÀI ĐẶT CHƯƠNG TRÌNH.........................................................15

2.1. Các kỹ thuật lập trình đã áp dụng..............................................................15
2.2. Kết quả chương trình...................................................................................16
2.3. Giao diện chương trình................................................................................16
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN................................................................20
TÀI LIỆU THAM KHẢO.........................................................................................21
PHỤ LỤC................................................................................................................... 22

Nhóm PE10 - Lớp KSCLC K54

2


Kỹ thuật lập trình

LỜI NÓI ĐẦU
Trong xã hội khan hiếm về tài nguyên sức người, thời gian và không gian hiện nay,

việc áp dụng các tiến bộ tin học vào các lĩnh vực của đời sống là hết sức cần thiết.
Theo quan điểm đó, trong lĩnh vực xây dựng cơ sở hạ tầng, để tiết kiệm công sức,
thời gian đi lại và không gian cho cho việc sử dụng cầu thang bộ, thang máy trở nên
được quan tâm trong các tòa nhà nhiều tầng.
Nhìn theo góc độ tin học, “thang máy” là một phần đặc biệt trông đối tượng hàng
đợi. Nhưng nó không đơn giản chỉ là FIFO.
Tùy vào nhu cầu thực tế, đối tượng hàng đợi này được mô tả khác nhau theo thứ tự
phục vụ của hàng đợi. Đối với các tòa nhà tren 15 tầng sử dụng 3 thang máy, đối
đượng hóa hàng đợi sẽ khác với hệ thống thang máy trong tòa nhà 4 tầng sử dụng
thang đôi, cụ thể là tòa nhà 4 tầng D6 trường Đại học Bách khoa Hà nội, cái tên mà
chúng tôi sẽ nhắc đến nhiều trong tài liệu này.
Sản phẩm chúng tôi mô phỏng không chỉ để phục vụ cho riêng 1 tòa nhà có số tầng
cụ thể, số thang cụ thể, thứ tự ưu tiên cụ thể và điều quan trọng là đáp ứng những yêu
cầu cơ bản của người hướng dẫn chúng tôi, cô giáo Vũ Thị Hương Giang. Mục địch
của chúng tôi là xậy dựng một cách thức chung để tiếp cận với những đội tượng hàng
đợi thang máy.
Trong quá trình phát triển chương trình này, bản thân mỗi thành viên trong nhóm
cũng chưa thấu hiểu về đối tượng hàng đợi thang máy và những kĩ năng lập trình
hướng đối tượng trên C++ nên còn nhiều thiếu sót. Vì vậy việc soạn ra một tài liệu
đúng chuẩn mô tả quá trình phát triển, kiểm thử và mô tả về sản phẩm sẽ giúp ích
nhiều cho quá trình phát triển của nhóm và việc nâng cấp về sau cho nhóm và những
người có nhu cầu sử dụng lại phần mềm.
Xin cảm ơn cô Vũ Thị Hương Giang người hướng dẫn của nhóm, thầy Huỳnh Quyết
Thắng, thầy Nguyễn Đức Nghĩa đã trang bị cho chúng tôi những kiến thức cơ bản để
có thể thực hiện chương trình này.
Nhóm PE10
Lớp KSCLC K54
Đại học Bách Khoa Hà nội

Nhóm PE10 - Lớp KSCLC K54


3


Kỹ thuật lập trình

PHÂN CÔNG THÀNH VIÊN TRONG NHÓM
Công việc

Người thực hiện

Thời gian

Phân tích yêu cầu

Cả nhóm

20/3/2012
đến 28/3/2012

Class elevator

Nguyền Bá Thủy

29/3 đến 4/4

Class floor

Vũ Đình Ba


29/3 đến 4/4

Class systemControl

Phạm Thanh Tùng

5/4 đến 10/4

Main(), đồ họa

Võ Tiến Tú

5/4 đến 10/4

Kiểm thử

Cả nhóm

11/4 đến 15/4

Viết tài liệu

Võ Tiến Tú

16/4 đến 19/4

Thiết kế giả pháp
Hợp thức hóa thiết kế
Cài đặt thiết kế


Nhóm PE10 - Lớp KSCLC K54

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
1.1. Mô tả yêu cầu bài toán
Mô phỏng hệ thống thang máy đôi cho tòa nhà D6

1.1.1. Yêu cầu được giao:
i) Thang đôi
ii) Phân biệt chức năng của người sử dụng và người quản lí
iii) Có giao diện nhập và hiển thị

1.1.2. Những yêu cầu ẩn
i) Cho phép nhập lệnh bất kì thời điểm nào
ii) Thang đôi liên kết
iii) Chọn ưu tiên theo chiều di chuyển và khoảng cách
iv) Có kiểm soát trọng lượng
v) Mở cửa ngay khi có sự cố trong quá trình đóng cửa

1.2. Biểu đồ IPO
1.2.1. Các chức năng của người điều khiển
1.2.1.1.

Bật đèn báo động
INPUT


PROCESS

OUTPUT

Tên thang

Bật đèn báo động

Thông báo đã thực hiện

INPUT

PROCESS

OUTPUT

Tên thang

Tắt đèn báo động

Thông báo đã thực hiện

INPUT

PROCESS

OUTPUT

Tên thang
Tên tầng


Nhập yêu cầu vào hàng đợi

Thông báo đã nhập yêu cầu

1.2.1.2. Tắt đèn báo động

1.2.1.3. Chọn tầng cần đến

1.2.1.4. Yêu cầu mở cửa
INPUT
Nhóm PE10 - Lớp KSCLC K54

PROCESS

OUTPUT
5


Kỹ thuật lập trình
Tên thang

Kiểm tra có đang đóng cửa không
Nếu đang đóng cửa thì nhập yêu
cầu vào hàng đợi

Thông báo đã nhập yêu cầu

1.2.1.5. Xóa các yêu cầu
INPUT


PROCESS

OUTPUT

Yêu cầu xóa

Xóa các phần tử trong hàng đợi

Thông báo đã thực hiện

1.2.1.6. Chuyển quyền sử dụng cho người sử dụng
INPUT

PROCESS

OUTPUT

Yêu cầu chuyển
quyền sử dụng

Chuyển quyền sử dụng

Thông báo đã thực hiện

1.2.2. Các chức năng của người sử dụng
1.2.2.1.

Bật đèn báo động
INPUT


PROCESS

OUTPUT

Tên thang

Bật đèn báo động

Thông báo đã thực hiện

INPUT

PROCESS

OUTPUT

Tên tầng hiện tại

Nhập yêu cầu vào hàng đợi

Thông báo đã nhập yêu cầu

INPUT

PROCESS

OUTPUT

Tên tầng hiện tại


Nhập yêu cầu vào hàng đợi

Thông báo đã nhập yêu cầu

1.2.2.2. Gọi đi lên

1.2.2.3. Gọi đi xuống

1.2.2.4. Chọn tầng cần đến
INPUT
Nhóm PE10 - Lớp KSCLC K54

PROCESS

OUTPUT
6


Kỹ thuật lập trình
Tên thang
Tên tầng

Nhập yêu cầu vào hàng đợi

Thông báo đã nhập yêu cầu

1.2.2.5. Yêu cầu mở cửa
INPUT
Tên thang


PROCESS

OUTPUT

Kiểm tra có đang di chuyển không
Kiểm tra có đang đóng cửa không
Nếu không đi chuyển và đang
Thông báo đã nhập yêu cầu
đóng cửa thì nhập yêu cầu vào
hàng đợi

1.3. Thiết kế chương trình
Sau khi tìm hiểu, chúng tôi quyết định thiết kế chương trình theo hướng đối tượng.
Vì bản chất hệ thống điều khiển thang máy gồm 3 phần: thang máy, các lời yêu cầu, bộ
điều khiển.
Các yêu cầu chia làm 2 loại:
1. Yêu cầu có thời gian thực hiện O(1), các yêu cầu này sẽ gọi các phương thức
tương ứng ở đối tượng thang máy:
i) Bật/tắt báo động
ii) Xóa các yêu cầu chưa thực hiện trước đó
iii) Chuyển quyền sử dụng cho người sử dụng
2. Yêu cầu có thời gian thực hiện O( �) hoặc có thể bị hủy, các yêu cầu này sẽ
được trừu tượng hóa để lưu trong đối tượng hàng đợi:
i) Yêu cầu đóng/mở cửa
ii) Gọi lên, gọi xuống, chọn tầng đến

Thiết kế chương trình cụ thể:
Đối tượng


Thuộc tính hoặc phương
thức
Biến lưu trạng
thái đèn báo
động
Biến lưu trạng
thái đang đi
Thuộc
chuyển hoặc
tính
trạng thái di
chuyển trước đó
Tầng hiện tại
Biến đềm thời
gian di chuyển

Nhóm PE10 - Lớp KSCLC K54

Chú thích
Đèn bất là 1, đèn tắt là 0
Đang đi lên là 1, đang đi xuống là -1

Từ 1 đến 4
Thang đang đứng yên là 0, khi di
chuyển sẽ tăng từ 1 đến 5

7


Kỹ thuật lập trình

Biến đếm quá
trình đóng/mở
cửa
Biến chỉ đang
trong quá trình
đóng cửa
Trọng lượng
bên trong thang

Thang máy

Cửa đóng là 0. cửa mở là 6, đang trong
quá trình trình đóng/mở thì giảm từ 6 về
0 / tăng từ 0 đên 6
Đang trong quá trình đóng cửa là 1,
ngược lại là 0. Nếu đang đóng cửa thì
yêu cầu mở cửa sẽ có hiệu lực
Không thể do người sử dụng hay người
quản trị nhập. Trọng lượng được nhập
từ ngoài chương trình.

Truyền các
thuộc tính
Phương
thức

Bật/tắt báo động
Đóng/mở cửa
Di chuyển


Hàng đợi

Thuộc
tính
Phương
thức

Bộ điều khiển

Phương
thức

Mảng ghi yêu
cầu gọi lên
Mảng ghi yêu
cầu gọi xuống
Truyền các
thuộc tính
Thực hiện các
yêu cầu gọi lên,
gọi xuống, chọn
tầng cần đến
Xóa các yêu cầu
Gọi hành động
tiếp theo

Nhóm PE10 - Lớp KSCLC K54

Cập nhật trọng lượng sau khi đong/mở
cửa

Đi chuyển lên hoặc xuống 1 tâng. Có
kiểm tra quá tải khi di chuyển
Có yêu cấu là 1, không có yêu cầu là 0.
Có yêu cầu chọn tầng thì ghi vào vị trí
tương ứng với tầng chọn giá trị 1

Các yêu cầu gọi lên/xuống, chọn tầng
cần đền, mở cửa sẽ được quyết định khi
nào thực hiện
Kế thừa đối tượng Hàng đợi và Thang
máy

8


Kỹ thuật lập trình

Cấu trúc phân cấp của chương trình:
Main
()

Class
systemControl

Class
elevator

Class floor

: Chỉ luồng điều khiển

: Chỉ luồng kế thừa thuộc tính

1.4. Thiết kế dữ liệu
Đối tượng

Elevator

Tên biến và tên hàm

Kiểu

Private Alert
Private Floor
Private countTimeFloor
Private isClosingDoor
Private countTimeDoor
Private State
Private volatile Weight
Private ThreadMove1/2 ( )
Private ThreadCloseDoor1/2 ( )
Private ThreadOpenDoor1/2 ( )
Protected getAlert (int E)
Protected getState (int E)
Protected getFloor (int E)
Protected getcountTimeFloor (int E)

Bool[2]
Int[2]
Int[2]
Bool[2]

Int[2]
Int[2]
Int
DWORD WINAPI
DWORD WINAPI
DWORD WINAPI
Bool
Int
Int
Int

Nhóm PE10 - Lớp KSCLC K54

Khởi
tạo
0
0
0
0
0
1
0

9


Kỹ thuật lập trình

floor


system
control

E: Elevator
F: Floor
D: Direction

Protected getisClosingDoor (int E)
Protected getcountTimeDoor
Protected closeDoor (int E)
Protected move (int E, int D)
Protected openDoor (int E)
Protected turnoffAlert (int E)
Protected turnonAlert (int E)
Private CallUp
Private CallDown
Protected getCallUp (int E, int F)
Protected getCallDown (int E, int F)
Protected getCallDes (int E, int F)
Protected reset ( )
Protected del (int E, int F)
Protected callUp (int F)

bool
Int
Void
Void
Void
Void
void

Bool[4][2]
Bool[4][2]
Bool
Bool
Bool
Void
Void
Void

Protected callDown (int F)
Protected refuse (int F, int S, int true E)

Void
Void

Private Flag
Private Run
Private DesFloor
Private StateFloor
Private ThreadCallAction ( )
Private findTarget (int E, int S, int D)
Private ElevatorTarget ( )
Private resetSystem ( )
Private changeFlag ( )
Private TurnonAlert (int E)
Private TurnoffAlert (int E)
Private openDoor (int E)
Private callDes (int E, int F)
Private callUp (int F)
Private callDown (int F)

S: StatusFloor

Bool
Bool
Int[2]
Int[2]
DWORD WINAPI
Int
Int
Void
Void
Void
Void
Void
Void
Void
Void

0
0

1
0
0
0

1.5. Thiết kế giải thuật
Trong phần này, chúng tôi sẽ nêu ra 2 giải thuật cơ bản là giải thuật mở cửa khi
thang máy đang đóng cửa của thang máy và giải thuật tìm thang máy thực hiện lệnh
của bộ điều khiển.


1.5.1. Giải thuật đóng/mở cửa
Biểu đồ luồng đóng/mở cửa ( hàm closeDoor và openDoor trong class elevator)
Nhóm PE10 - Lớp KSCLC K54

10


Kỹ thuật lập trình
closeDoor( E
)
isClosingDoor[E] = 1

T

countTimeFloor[E]>1

countTimeFloor -Đợi 1s

F
T

countTimeFloor[E]=1

countTimeFloor[E]=0

F
isClosingDoor[E]=0

Finish

closeDoor[E
]

Biểu đồ luồng mở cửa:
openDoor( E)

countTimeFloor[E]=0
Nhóm PE10 - Lớp KSCLC K54

F

isClosingDoor[E]=0
tmp = countTimeDoor[E]
countTimeDoor[E]= -1
11


Kỹ thuật lập trình
T

countTimeFloor[E]<5

F

F

tmp<
6
T


T
countTimeFloor ++
Đợi 1 s

tmp++
Đợi 1s

countTimeDoor[E]=6

Finish
closeDoor[E
]

E: Elevator

1.5.2. Giải thuật tìm thang máy thực hiện lệnh
Tùy vào điều kiện ưu tiên mà cách thực hiện của hàm ElevatorTarget khác nhau.
Đốivới cách ưu tiên chiều di chuyển và khoảng cách thì nó hoạt động như sau.
Trước hết hãy xem hàm findTarget ( ).
Hàm int findTarget (int Elevator, int StatusFloor, int Direction) :
i) Thực hiện tìm theo chiều Direction (chiều lên hoặc chiều xuống) cho thang
máy Elevator (thang 1 hoặc thang 2) 1 tầng có StatusFloor (có gọi lên hoặc có
gọi xuống).
ii) Nếu tìm thấy thì lưu tầng đó vào Floor[Elevator] và lưu StatusFloor vào
StateFloor[Elevator], trả về 0. Nếu không tìm thấy trả về -1
Hàm ElevatorTarget trả về thang máy cần được thực hiện lệnh hoặc -1 nếu không tìm
thấy. Nó chia làm 2 pha, pha tìm và pha so sánh.
Biểu đồ luồng hàm int ElevatorTarget ( ) pha tìm trong class systemControl
ElevatorTarget
pha tìm với thang

1
Elevator = -1
Nhóm PE10 - Lớp KSCLC K54

12


Kỹ thuật lập trình

T

getisClosingDoor[0]=1
getCallDes(0,getFloor(0))=
1
F

getcountTimeDoor(0)=6
&& getisClosingDoor(0) =
0

T

DesFloor[0]=getFloor[0]
Trả về 0, kết thúc pha tìm,
bỏ qua pha so sánh

F
D= getState(0)
T
findTarget(i, D, D)=1

F
F
findTarget(i, -D, D)=1

T

F
findTarget(i, -D,F
-D)=1
F
findTarget(i, D, -D)=1
F
F

T

T

Elevator = 0
Tiếp tục pha so sánh

Tiếp tục tìm như
trên với thang 2
Biểu đồ luồng hàm int ElevatorTarget ( ) pha sánh trong class systemControl, điều kiện
để đến pha này là Elevator tìm được bằng 0 hoặc 1. Xét Elevator = 0, nếu Elevator = 1
làm tương tự.
ElevatorTarget
pha so sánh với
Elevator=0
Nhóm PE10 - Lớp KSCLC K54


13


Kỹ thuật lập trình

DesFloor[0] != DesFloor[1]
| | StateFloor[0] !
=StateFloor[i])

T

F
T

getCallDes(0,
DesFloor[0])=1
F
| getFloor(0) - DesFloor[0]
|
< | getFloor(1) - DesFloor[1]
|

T

Trả về 0
Kết thúc so sánh

F
Trả về -1

Kết thúc so sánh

Nhóm PE10 - Lớp KSCLC K54

14


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
STT
I.
Các kỹ
thuật làm việc
với biến

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
1. Đặt tên biến nhất quán, Các biến trong các class và
Ngắn gọn, có tính chất gợi main
nhớ
2. Các biến đếm, biến trung
Các biến trong các class và
gian: đặt tên bằng 1 chữ cái: main
biến đếm i,j


II.
Các kỹ
thuật viết mã
chương trình
hiệu quả

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

1. Sử dụng các 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
2. Sử dụng else if trong cấu
trúc đa lựa chọn
3 Gióng hàng trong các biểu
thức điều kiện để tránh
nhầm lẫn
1. Sử dụng chương trình con.

Trong các hàm
Trong toàn bộ hàm và từng
đoạn chương trình


2 Tạo file header

Chia chương trình ra thành các
hàm
File PE10_Cursor

3 Đóng gói, bao bọc

Trong các class

1. Đặt tên hàm gợi nhớ, tiện sử Toàn bộ các hàm trong chương
dụng
trình.
2. Tham chiếu con trỏ, truyền Trong toàn chương trình
giá trị với biến int va bool
3. Inline funtion
4. Sử dụng lính canh

V.
Các kỹ
thuật bẫy lỗi và
lập trình phòng
ngừa

Trong toàn bộ hàm và từng
đoạn chương trình

1. Bẫy lỗi nhập từ bàn phím,
và xóa bộ nhớ đệm trước

khi nhập
2. Kiểm tra các điều kiện đặc
biệt trước khi xử lí
3. Assertion

Nhóm PE10 - Lớp KSCLC K54

Các hàm đơn giản trong các
class
Trong các vòng lặp
Hàm scanf trong hàm main
Toàn bộ chương trình
Các hàm quan trọng và các
thread trong chương trình
15


Kỹ thuật lập trình

VI. Phong
cách lập trình

4. Ghi lỗi riêng ra file

Khi xuất hiện lỗi ở Assertion

1. Luôn gióng hàng các câu
lệnh sau dấu mở ngoặc
2. Chú thích đầy đủ


Toàn bộ chương trình

3. Gióng hàng giữa các câu
lệnh

Toàn bộ chương trình

4. Gióng hàng các cặp mở
đóng ngoặc nhọn cùng cấp

Toàn bộ chương trình

5. Dùng dòng trống để chia
code thành các đoạn chính

Toàn bộ chương trình

Toàn bộ chương trình

2.2. Kết quả chương trình
Chức
năng
(đán
h số
theo
menu
từ 114)
1
2


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

(X: cài đặt
Y: kiểm thử)

Bật báo động
Tắt báo động

3
3

Thủy – Ba
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 yêu cầu
Chuyển quyền sử dụng
Gọi đi xuống
Gọi đi lên

2
2
3
3
2
2

Ba – Tùng
Ba – Tùng
Ba – Thủy
Tùng – Tú
Ba – Tú
Ba – Tú

Nhóm PE10 - Lớp KSCLC K54

16


Kỹ thuật lập trình


2.3. Giao diện chương trình
2.3.1. Chức năng chọn tầng đến với quyền Admin

Nhóm PE10 - Lớp KSCLC K54

17


Kỹ thuật lập trình

2.3.2. Chức năng gọi thang đi lên của User

Sẽ ưu tiên cho thang số 2 thực hiện lênh:

Nhóm PE10 - Lớp KSCLC K54

18


Kỹ thuật lập trình

2.3.3. Break quá trình đóng cửa và mở cửa

Để tránh sự cố khi đóng cửa, hành động đóng cửa bị hủy và hành động mở cửa được
thực hiện.

Nhóm PE10 - Lớp KSCLC K54

19



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 … .
Do mô hình hóa được các câu lệnh phức tạp nên vẫn đề cần xem xét quan trọng nhất
chỉ tập trung vào thead ThreadCallAction và hàm ElevatorTarget nếu 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 di chuyển …
Áp dụng tốt các phương pháp bẫy lỗi và lập trình phòng ngừa nên chương trình vẫn
chạy tốt nếu những biến đầu vào lỗi.
Thiết kế trên 1 cửa sổ nên người sử dụng dễ theo dõi, không cần phải cài đặt thư viện
đồ họa của C.
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
của hệ thống, độ trế thời gian phải được xem xét tới. Cách khắc phục:
a. Thay đổi các thuộc tính của class elevator ngay từ khi gọi thread.
b. Tính đến trế thời gian, dùng hàm Sleep(10) (đã thựu hiện)
Nhược điểm cuối cùng là giao diện nhập dữ liệu cùng với giao diện in ra nên có trường
hợp xảy ra lẫn con trỏ in ra hoặc nhập vào. Cách khắc phục:
Tạo giao diện đồ họa riêng (do khó khăn trong sử dụng đồ họa C nên nhóm
chưa đủ thời gian để sửa đổi giao diện)
Từ những ưu điểm và nhược điểm trên, nhóm chúng tôi cảm thấy còn nhiều điều cần
khắc phục. Tuy nhiên, sẽ là hài lòng nếu xem xét đây như bước đầu của sản phẩm với
những thiết kế thuật toán rõ ràng và dễ cập nhập.

Nhóm PE10 - Lớp KSCLC K54

20



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] Slide môn Cấu trúc dữ liệu và giải thuật của thầy Nguyễn Đức Nghĩa
[3] Slide môn Đồ án phần mềm của thầy Huỳnh Quyết Thắng
[4] The Art Of Computer Programming 3rd ed Vol1 - Donald Knuth

Nhóm PE10 - Lớp KSCLC K54

21


Kỹ thuật lập trình

PHỤ LỤC
Hãy chắc chắn rằng DevC++ hoặc một phần mềm biên dịch gcc
Đính kèm file PE10_Cursor.h cùng với file ElevatorSimalation.cpp trong cùng 1
folder.
Hãy chắc chắn rằng hệ điều hành của bạn cho phép tạo chương trình 1 file text và ghi
lên đó. Bạn có thể tạo sẵn file error.txt và để cùng trong thư mục chứa file
ElevatorSimalation.cpp. File text này sẽ lưu lại hiện trạng của thang máy khi xảy ra
lỗi.
Chương trình hoạt động tốt trên môi trường Window, bạn không cần cài đặt thêm.

Nhóm PE10 - Lớp KSCLC K54

22




×