ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
——***——
BÁO CÁO
Bài tập lớn
Đề Tài 3
Giảng viên hướng dẫn: T.S Nguyễn Thị Thu Trang
Nhóm 11
Bùi Văn Phước
Nguyễn Đa Long
Đỗ Văn Diện
20122255 CNTT 2.02-K57
20122007 CNTT 2.01-K57
20121380 CNTT 2.01-K57
Hà Nội, tháng 11 năm 2015
Mục lục
Đề bài .............................................................................................................................................................4
Giải pháp thực hiện ........................................................................................................................................5
Phần I: Đặc tả yêu cầu phần mềm ..............................................................................................................6
I.
Biểu đồ Use-case ................................................................................................................................6
II.
Phân tích Use-case .............................................................................................................................8
1.
Quản lý số lượng thang máy hoạt động..........................................................................................8
2.
Quản lý hoạt động của thang máy ..................................................................................................9
3.
Quản lí thời gian hoạt động của thang máy ..................................................................................10
4.
Chọn tầng cần đến ........................................................................................................................12
5.
Bảng thuật ngữ .............................................................................................................................13
6.
Tài liệu phụ trợ .............................................................................................................................14
Phần II: Thiết kế kiến trúc ............................................................................................................................15
Use-case quản lý hoạt động của thang máy .....................................................................................15
I.
1.
Biểu đồ trình tự ............................................................................................................................15
2.
Biểu đồ giao tiếp ..........................................................................................................................15
Use-case quản lý thời gian hoạt động của thang máy ......................................................................16
II.
1.
Biều đồ trình tự ............................................................................................................................16
2.
Biểu đồ giao tiếp ..........................................................................................................................17
III.
Use-case chọn tầng cần đến .........................................................................................................18
1.
Biểu đồ trình tự ............................................................................................................................18
2.
Biểu đồ giao tiếp ..........................................................................................................................19
Phần III: Thiết kế chi tiết..............................................................................................................................21
Biểu đồ trình tự chi tiết ....................................................................................................................21
I.
1.
Use case quản lí thời gian hoạt động của thang máy ...................................................................21
2.
Use case quản lí hoạt động thang máy .........................................................................................21
3.
Use case chọn tầng .......................................................................................................................22
Biểu đồ lớp chi tiết ...........................................................................................................................23
II.
1.
Biểu đồ lớp tổng quát ...................................................................................................................23
2.
Biểu đồ lớp chi tiết .......................................................................................................................24
3.
Giải thuật ......................................................................................................................................35
III.
Giao diện ......................................................................................................................................42
Phần IV: Sử dụng Design-Pattern ................................................................................................................44
1.
Pattern Builder .................................................................................................................................44
2.
Iterator ..............................................................................................................................................44
Phần V: Kiểm thử.........................................................................................................................................46
1.
Test case cho chức năng quản lý hoạt động thang máy ...................................................................46
2.
Test case cho chức năng cài đặt thời gian hoạt độngc của thang máy .............................................46
3.
Test case kiểm tra thời gian xung đột...............................................................................................47
4.
Test case cho chức năng chọn tầng ..................................................................................................47
Đề bài
Một trung tâm thương mại lớn bao gồm 49 tầng, với 10 thang máy (từ A đến J).
Hãy xây dựng hệ thống quản lý các thang máy này, với một số yêu cầu sau. Vào
một số thời điểm nhất định (ví dụ đêm, sáng sớm), chỉ cho phép một số thang
máy hoạt động, biết rằng thời gian, số lượng và danh sách thang máy hoạt động
có thể được thiết lập bởi người quản lý. Tại một thời điểm nhất định, có thể thiết
lập để một số thang máy có thể bỏ qua một số tầng nào đó. Khi có một khách bấm
thang máy, hệ thống cần tính toán để tối ưu hoá: khoảng cách từ vị trí yêu cầu đến
vị trí hiện tại của thang máy, hướng của thang máy và hướng được yêu cầu
(lên/xuống), số thang máy rỗi và số lượng yêu cầu thang máy. Tại mỗi tầng, người
dùng được thao tác với một bảng số gồm 10 chữ số (0->9) để nhấn số tầng yêu
cầu (từ -2 đến 49). Sau khi gửi yêu cầu số tầng, hệ thống hiển thị tên thang máy
(A->Z) để người dùng biết có thể đi thang máy nào.
4
Giải pháp thực hiện
Bước 1: tìm hiểu rõ nghiệp vụ bài toán
- Hệ thống cung cấp cho người đi thang máy và người quản lý hệ thống thang
máy
- Hệ thống cần xây dựng có 10 thang máy, 49 tầng
- Giao diện tương tác với người dùng là một bảng số (0->9) để bấm tầng, phần
hiển thị để người dùng biết đi thang nào.
- Giao diện cho người quản lý: tại giao diện này người quản lý biết được tình
trạng các thang hoạt động thế nào, đưa ra các thiết lập cần thiết
- Hệ thống phải xử lý tối ưu cho việc chọn tầng của người dùng
- Từ đó xác định được vấn đề căn bản cần xử lý :
+ Xây dựng được giao diện cho người dùng, người quản lý
+ Xây dựng thuật toán tối ưu cho việc xử lý chọn tầng của người dùng
Bước 2:
- Xác định hướng thiết kế
- Thiết kế hướng đối tượng
Bước 3: Xác định công nghệ sử dụng
- Ngôn ngữ lập trình: java
- Ngôn ngữ mô hình hoá: UML
Bước 4: Đi vào thiết kế và cài đặt chương trình
5
Phần I: Đặc tả yêu cầu phần mềm
I.
Biểu đồ Use-case
- Biểu đồ use-case của người quản lý thang máy
Hình 1. Biểu đồ use-case của người quản lý thang máy
Người quản lý có 3 use-case là quản lý thời gian hoạt động của thang
máy, quản lý số lượng thang máy hoạt động và quản lý hoạt động của
thang máy.
Quản lý thời gian hoạt động của thang máy là người quản lý có quyền
thiết lập thời gian hoạt động của thang máy trong ngày.
Quản lý số lượng thang máy hoạt động là thiết lập số lượng thang máy
cùng hoạt động tại một thời điểm.
Quản lý hoạt động của thang máy là thiết lập danh sách các tầng thang
máy hoạt động và không hoạt động.
- Biểu đồ use-case của người dùng
6
Hình 2. Biểu đồ use-case của người dùng
Người dùng sẽ có 1 use-case là chọn tầng cần đến, người dùng sẽ chọn
tầng cần đến và ấn ok, hệ thống sẽ tính toán và đưa ra tên thang máy cho
người dùng đi.
- Có 3 use chính:
Quản lý hoạt động thang máy( Nguyễn Đa Long thiết kế)
Quản lý thời gian hoạt động của thang máy(Đỗ Văn Diện thiết kế)
Chọn tầng cần đến(Bùi Văn Phước thiết kế)
7
II.
Phân tích Use-case
1. Quản lý số lượng thang máy hoạt động
1.1. Mã use-case
- Mã use-case: UC01
1.2. Tên use-case
- Tên use-case: quản lí số lượng thang máy hoạt động
1.3. Tác nhân tham gia
- Tác nhân: người quản lý
1.4. Luồng sự kiện chính
Bên thực hiện
Hệ thống
Hành động
Hiển thị
2
3
Người quản lý
Người quản lý
Chọn các thang máy
Lưu lại
4
Hệ thống
Thông báo
STT
1
1.5.
1.6.
1.7.
Dữ liệu
Các thang máy đang
hoạt động
Số hiệu của thang máy
Danh sách các thang
máy
Hiển thị thông báo
thành công
Luồng sự kiện phụ
Dữ liệu vào ra
Input: thông tin số lượng thang máy hoạt đông
Output: Các loại thông báo
Biểu đồ hoạt động
8
Hình 2. Biểu đồ hoạt động của use-case quản lý số lượng thang máy
2. Quản lý hoạt động của thang máy
2.1. Mã use-case
- Mã use-case: UC02
2.2. Tên use-case
- Tên use-case: quản lý hoạt động của thang máy
2.3. Tác nhân tham gia
- Tác nhân: người quản lý
2.4. Luồng sự kiện chính
3
4
Người quản lý
Hệ thống
Hành động
Chọn thang máy
Chỉnh số tầng cho phép
thang máy hoạt động
Lưu lại
Kiểm tra
4
Hệ thống
Thông báo
STT
1
2
Bên thực hiện
Người quản lý
Người quản lý
Dữ liệu
Số hiệu của thang máy
Số hiệu của tầng
Thông tin đã chỉnh sửa
Hệ thống kiểm tra và
thực hiện
Hiển thị thông báo
9
2.5. Luồng sự kiện phụ
stt
Bên thực hiện
2a
Người quản lý
4a
2.6.
2.7.
Hệ thống
Hành động
Xóa, thiết lập lại
Thông báo
Dữ liệu
Xóa các thông tin thiết
lậpvà thiết lập lại cài đặt
Lỗi trong quá trình thực thi
Input và Output
Input: số tầng cần bỏ qua
Output: thông báo
Biểu đồ hoạt động
Hình 3. Biểu đồ hoạt động của use-case quản lý cách hoạt động của thang máy
3. Quản lí thời gian hoạt động của thang máy
3.1. Mã use-case
- Mã use-case: UC03
3.2. Tên use-case
- Tên use-case: quản lý thời gian hoạt động của thang máy
10
3.3. Tác nhân tham gia
- Tác nhân: người quản lý
3.4. Luồng sự kiện chính
STT
1
Bên thực hiện
Hệ thống
Hành động
Hiển thị
2
3
Người quản lý
Người quản lý
Chọn thang máy
Thiết lập
4
5
Người quản lý
Hệ thống
Lưu
Kiểm tra
6
Hệ thống
Thông báo
3.5.
Luồng sự kiện phụ
STT
4a
3.6.
3.7.
Bên thực hiện
Hành động
Người quản lý
Xóa
Input và Output
Input: thời gian hoạt động của thang máy
Output: thông báo
Biểu đồ hoạt động
Dữ liệu
Hiển thị danh sách thang
máy đang hoạt động
Số hiệu thang máy
Thiết lập thời gian hoạt
động của thang máy
Lưu thông tin đã thiết lập
Kiểm tra tính đúng đắn của
thời gian
Hiển thị thông báo
Dữ liệu
Xóa thời gian đã nhập
11
Hình 4. Biểu đồ hoạt động của use-case quản lý thời gian hoạt động của thang
máy
4. Chọn tầng cần đến
4.1. Mã use-case
- Mã use-case: UC04
4.2. Tên use-case
- Tên use-case: chọn tầng cần đến
4.3. Tác nhân chính
- Tác nhân chính: người dùng
4.4. Luồng sự kiện chính
STT
1
2
3
Bên thực hiện
Người dùng
Người dùng
Hệ thống
Hành động
Nhập
Gửi
Kiểm tra
4
Hệ thống
Tính toán
Dữ liệu
Tầng cần đến
Yêu cầu tầng cần đến
Kiểm tra tính hợp lệ của
tầng tòa nhà
Tính toán để đưa ra thang
12
5
Hệ thống
4.5.
Luồng sự kiện phụ
STT
2a
4a
Bên thực hiện
Người dùng
Hệ thống
4.6.
4.7.
Thông báo
Hành động
Xóa số tầng
Thông báo
máy tối ưu
Hiển thị thang máy nào sẽ đi
Dữ liệu
Xóa tầng cần đến
Tầng không có trong hệ
thống
Input và Output
Input: tầng cần đến
Output: thông báo
Biểu đồ hoạt động
Hình 5. Biểu đồ hoạt động của use-case chọn tầng cần đến
5. Bảng thuật ngữ
13
Thuật ngữ
Mô tả
Điểm dừng
Tầng mà thang máy dừng để đón khách
Trạng thái 1
Thang máy đang đi lên
Trạng thái 2
Thang máy đang đi xuống
Trạng thái 0
Thang máy dừng
6. Tài liệu phụ trợ
- Yêu cầu tính ổn định: đảm bảo phần mềm luôn chạy tốt, hiệu quả cao, không
bất thường
- Yêu cầu độ chính xác: đảm bảo điều khiển các thang máy chính xác cao nhất
với các trường hợp
- Yêu cầu khác:
Yêu cầu về hiệu năng hoạt động: phải đảm bảo được về tính thời gian,
tài nguyên sử dụng, công suất tối đa.
Tính khả dụng: Phù hợp với nhu cầu khách hàng, dễ dàng học cách sử
dụng; giao diên đơn giản, không màu mè.
Tính tin cậy: độ sẵn sang cao ; khả năng chịu lỗi, xử lý lỗi tốt; Thời
gian giữa các lần xảy ra sự cố gián đoạn hoạt động của hệ thống ít;
14
Phần II: Thiết kế kiến trúc
I.
Use-case quản lý hoạt động của thang máy
1. Biểu đồ trình tự
Hình 6. Biểu đồ trình tự của use-case quản lý hoạt động của thang máy
2. Biểu đồ giao tiếp
15
Hình 7.Biểu đồ giao tiếp của use-case quản lý hoạt động của thang máy
- ManagerScreen: lớp giao diện cho phép người quản lý thiết lập tầng hoạt
động của thang máy
- ManagerController: xử lý các thông tin đã thiết lập và truyền vào thang máy
- Elevator: Lớp lưu các thuộc tính, hành động của thang máy
II.
Use-case quản lý thời gian hoạt động của thang máy
1. Biều đồ trình tự
16
Hình 8. Biểu đồ trình tự của use-case quản lý thời gian hoạt động của thang
máy
2. Biểu đồ giao tiếp
17
Hình 10. Biểu đồ giao tiếp của use-case quản lý thời gian hoạt động của
thang máy
- ManagerScreen: Giao diện tương tác cho người quản lý tháng máy
- ManagerController: Điều khiển hoạt động của quản lý với giao diện
- Management: Kiểm tra và xử lý yêu cầu cập nhật thời gian hoạt động cho
các thang máy.
III. Use-case chọn tầng cần đến
1. Biểu đồ trình tự
18
Hình 11. Biểu đồ trình tự của use-case chọn tầng cần đến
2. Biểu đồ giao tiếp
Hình 12. Biểu đồ giao tiếp của use-case chọn tầng cần đến
19
- UserScreen: lớp giao diện giúp cho người dùng tương tác với hệ thống
- Alorithm: Lớp xử lý thuật toán để khi người dùng ấn tầng cần đến thì hệ
thống sẽ tính toán và đưa ra một phương án tối ưu nhất
- ManagerController: Trả lại các thông tin của thang máy đã được thiết lập
20
Phần III: Thiết kế chi tiết
I.
Biểu đồ trình tự chi tiết
1. Use case quản lí thời gian hoạt động của thang máy
Hình 13. Biều đồ trình tự chi tiết của use case quản lí thời gian hoạt động của
thang máy
- Trong use-case sẽ có giao diện hiển thị lên để người quản lý thao tác thiết
lập thời gian
- Khi bắt đầu use-case này, lớp SettingScreen gọi đến contructer() của nó
để khởi tạo giao diện.
- Sau đó người quản lý sẽ chọn thang máy cần thiết lập, hệ thống sẽ trả lại
thang máy được yêu cầu.
- Tiếp theo người quản lý sẽ nhập thời gian hoạt động cho thang máy, khi
nhấn ok thì nó gọi tới phương thức setTimeAction() trong lớp
MainViewController, trong phương thức này gọi tới phương thức
setLiftTime() để thiết lập thời gian cho thang máy và cuối cùng gọi
phương thức setUptime() đề cập nhập thời gian vừa thiết lập vào mảng,
rồi hiển thị thông báo đã thiết lập.
2. Use case quản lí hoạt động thang máy
21
Hình 14. Biểu đồ trình tự chi tiết của use case quản lí hoạt động của thang
máy
- Trong use-case này có màn hình hiển thị để cho người quản lý thao tác
thiết lập hoạt động của thang máy.
- Khi bắt đầu use-case này, lớp SettingScreen gọi đến contructer() của nó
để khởi tạo giao diện.
- Người quản lý sẽ chọn thang máy nào cần thiết lập, hệ thống sẽ trả lại
thang máy được yêu cầu.
- Sau đó người quản lý sẽ nhập các tầng hoạt động của thang máy, từ giao
diện nó gọi đến phương thức setFloorsServeAction() trong
MainViewController, nếu dữ liệu nhập vào đúng thì sẽ gọi phương thức
setFloorsNotServe() trong lớp LiftSystem, còn nếu nhập sai thì sẽ có
thông báo cho người quản lý.
- Tiếp theo từ phương thức setFloorsNotServe() trong lớp LiftSystem gọi
đến phương thức setFloorsNotServe() trong lớp Lift để cho danh sách các
tầng hoạt động vào mảng.
- Cuối cùng trả lại thông báo và được hiển thị để cho người quản lý biết.
3. Use case chọn tầng
22
-
-
-
II.
Hình 15. Biểu đồ trình tự chi tiết của use case chọn tầng
Trong use-case này có màn hình đề người dùng chọn tầng cần đến.
Khi bắt đầu use-case này, lớp UserScreen gọi đến contructer để khởi tạo
giao diện.
Người dùng sẽ chọn tầng cần đến và nhấn Ok để đồng ý.
Thông tin tầng cần đến và tầng đang ở sẽ được lớp UserScreen lấy và gọi
phương thức OKAction() trong lớp MainViewController với hai tham số
trên.
Tiếp theo từ phương thức OKAction() trong lớp MainViewController gọi
đến phương thức goFloor() trong lớp LiftSystem với 2 tham số là tầng
hiện tại người dùng và tầng người dùng yêu cầu đến, trong phương thức
này gọi đến phương thức timeToGoFloor() để tính toán thời gian đi giữa
2 tầng, trong phương thức này dùng vòng lặp gọi đến phương thức
addFloorWaiting() để tính toán thang máy tối ưu và đưa tầng hiện tại và
tầng cần đến vào hàng đợi của thang máy.
Cuối cùng sẽ hiển thị tên thang máy mà người dùng sẽ đi.
Biểu đồ lớp chi tiết
1. Biểu đồ lớp tổng quát
23
Hình 16. Biểu đồ lớp tổng quát
- Hệ thống có các lớp chính là:
Lớp SettingScreen
Lớp LiftScreen
Lớp UserScreen
Lớp ManagerScreen
Lớp LiftSystemScreen
Lớp MainView
Lớp ScreenBuilder
Lớp MainViewController
Lớp LiftSystem
Lớp Lift
Lớp Uptime
- Ngoài ra hệ thống có 2 lớp interface là: Screen, IMainView và IliftSystem
2. Biểu đồ lớp chi tiết
24
Hình 17. Biều đồ lớp chi tiết
- Lớp SettingScreen, LiftScreen, UserScreen lần lượt là lớp giao diện quản lí
hoạt động của thang máy, quản lí thời gian hoạt động thang máy và của
người dùng.
- Ba giao diện trên nằm trên cùng MainView nên được kết tập vào lớp
MainView.
- Các lớp MainViewController, LiftSystem là các lớp xử lý tương tác người
dùng yêu cầu và của người quản trị hệ thống.
- Lớp Lift và lớp Uptime là lớp thực thể, lưu các trạng thái, sô tầng hoạt
động của thang máy.
a. Biểu đồ lớp ListScreen
25