- 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
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
Bùi Văn Phước 20122255 CNTT 2.02-K57
Nguyễn Đa Long 20122007 CNTT 2.01-K57
Đỗ Văn Diện 20121380 CNTT 2.01-K57
Trang 2
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
I Use-case quản lý hoạt động của thang máy 15
1 Biểu đồ trình tự 15
2 Biểu đồ giao tiếp 15
II Use-case quản lý thời gian hoạt động của thang máy 16
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
I Biểu đồ trình tự chi tiết 21
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
II Biểu đồ lớp chi tiết 23
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
Trang 3Phầ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
Trang 4Đề 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
Trang 5Giả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
- 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
Trang 6Phầ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
Trang 7Hì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ế)
Trang 8II 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
1 Hệ thống Hiển thị Các thang máy đang
hoạt động
2 Người quản lý Chọn các thang máy Số hiệu của thang máy
3 Người quản lý Lưu lại Danh sách các thang
máy
4 Hệ thống Thông báo Hiển thị thông báo
thành công 1.5 Luồng sự kiện phụ
1.6 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
1.7 Biểu đồ hoạt động
Trang 9Hì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
1 Người quản lý Chọn thang máy Số hiệu của thang máy
2 Người quản lý Chỉnh số tầng cho phép
thang máy hoạt động
Số hiệu của tầng
3 Người quản lý Lưu lại Thông tin đã chỉnh sửa
4 Hệ thống Kiểm tra Hệ thống kiểm tra và
thực hiện
4 Hệ thống Thông báo Hiển thị thông báo
Trang 102.5 Luồng sự kiện phụ
stt Bên thực hiện Hành động Dữ liệu
2a Người quản lý Xóa, thiết lập lại Xóa các thông tin thiết
lậpvà thiết lập lại cài đặt 4a Hệ thống Thông báo Lỗi trong quá trình thực thi
2.6 Input và Output
- Input: số tầng cần bỏ qua
- Output: thông báo
2.7 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
Trang 113.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 Bên thực hiện Hành động Dữ liệu
1 Hệ thống Hiển thị Hiển thị danh sách thang
máy đang hoạt động
2 Người quản lý Chọn thang máy Số hiệu thang máy
3 Người quản lý Thiết lập Thiết lập thời gian hoạt
động của thang máy
4 Người quản lý Lưu Lưu thông tin đã thiết lập
5 Hệ thống Kiểm tra Kiểm tra tính đúng đắn của
thời gian
6 Hệ thống Thông báo Hiển thị thông báo
3.5 Luồng sự kiện phụ
STT Bên thực hiện Hành động Dữ liệu
4a Người quản lý Xóa Xóa thời gian đã nhập
3.6 Input và Output
- Input: thời gian hoạt động của thang máy
- Output: thông báo
3.7 Biểu đồ hoạt động
Trang 12Hình 4 Biểu đồ hoạt động của use-case quản lý thời gian hoạt động của thang
2 Người dùng Gửi Yêu cầu tầng cần đến
3 Hệ thống Kiểm tra Kiểm tra tính hợp lệ của
tầng tòa nhà
4 Hệ thống Tính toán Tính toán để đưa ra thang
Trang 13máy tối ưu
5 Hệ thống Thông báo Hiển thị thang máy nào sẽ đi 4.5 Luồng sự kiện phụ
STT Bên thực hiện Hành động Dữ liệu
2a Người dùng Xóa số tầng Xóa tầng cần đến
4a Hệ thống Thông báo Tầng không có trong hệ
Trang 14Thuậ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
Trang 15Phầ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
Trang 16Hì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ự
Trang 17Hì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
Trang 18Hì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ự
Trang 19Hình 11 Biểu đồ trình tự của use-case chọn tầng cần đến
2 Biểu đồ giao tiếp
Trang 20- 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
Trang 21Phầ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
Trang 22Hì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
Trang 23Hì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
II Biểu đồ lớp chi tiết
1 Biểu đồ lớp tổng quát
Trang 24- Ngoài ra hệ thống có 2 lớp interface là: Screen, IMainView và IliftSystem
2 Biểu đồ lớp chi tiết
Trang 25Hì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
Trang 26- Thuộc tính liftID là đối tượng Label để hiển thị tên của thang máy
- Thuộc tính liftLocation là đối tượng ProgressBar để hiển thị trạng thái của gia tốc
- Phương thức getLiftID(): là phương thức trả về tên của thang máy
- Phương thức setAcceleration(int): là phương thức thiết lập hiển thị gia tốc của thang máy dựa vào tham số đầu vào
- Phương thức setFloor(int): là phương thức thiết lập hiển thị tầng thang máy đang ở
- Phương thức setFloorWaiting(Strirng): là phương thức thiết lập hiển thị danh sách các tầng có trong hàng đợi của thang máy
- Phương thức setSpeed(double): là phương thức thiết lập hiển thị tốc độ của thang máy dựa vào tham số đầu vào
Trang 27- Phương thức setStatus(string): là phương thức thiết lập hiển thị của trạng thái thang máy là đóng hay mở cửa
Trang 28- Phương thức showSetFloorsServe(string) là phương thức có chức năng hiển thị hộp thoại Dialog và lấy các tầng hoạt động do người quản lý nhập vào và trả lại theo định dạng chuỗi
- Phương thức showNotify(string): là phương thức trả lại thông báo cho người quản lý
- Phương thức setTimeAction() và phương thức setStatusAction(),
setFloorsServeAction để bắt sự kiện khi ấn nút
- Phương thức setStatus(boolean): phương thức thiết lập cho thuộc tính active và inactive
- Phương thức isActive(): phương thức trả lại giá trị của thuộc tính active
- Phương thức getLiftID(): phương thức trả lại tên của thang máy
Trang 29- Thuộc tính cbEnd, cbStart là đối tượng ComboBox để hiển thị danh sách tầng đến và tầng đang đứng
- Phương thức OKAction() để bắt sự kiện khi ấn nút OK
- Phương thức getFloor(boolean): trả lại tầng đang đứng hoặc tầng cần đến
- Phương thức setLift(string): hiển thị thông báo người dùng đi thang máy nào
- Phương thức showNotify(string): hiển thị thông báo lỗi
d Biểu đồ lớp ManagerScreen
Hình 21 Lớp ManagerScreen
- Thuộc tính ss là một danh sách đối tượng SettingScreen
- Thuộc tính currentIndex là chỉ số duyệt mảng hiện tại, được sử dụng cho design-pattern
- Thuộc tính role là tên lớp
- Phương thức iterator() thiết lập currentIndex bằng 0
- Phương thức hasNext() kiểm tra currentIndex nhỏ hơn kích thước danh sách ss, nếu nhỏ hơn thì trả lại true, ngược lại sẽ trả lại false
- Phương thức next() trả lại đối tượng SettingScreen tiếp theo trong danh sách
- Phương thức getRole() trả lại giá trị thuộc tính role
e Biểu đồ lớp LiftSystemScreen
Trang 30Hình 22 Lớp LiftSystemScreen
- Thuộc tính ls là danh sách đối tượng LiftScreen
- Thuộc tính role là tên lớp
- Thuộc tính currentIndex là chỉ số duyệt mảng hiện tại, được sử dụng cho design-pattern
- Phương thức getRole() trả lại giá trị thuộc tính role
- Phương thức iterator() thiết lập currentIndex bằng 0
- Phương thức hasNext() kiểm tra currentIndex nhỏ hơn kích thước danh sách ls, nếu nhỏ hơn thì trả lại true, ngược lại sẽ trả lại false
- Phương thức next() trả lại đối tượng ListScreen tiếp theo trong danh sách
f Biểu đồ lớp MainView
Hình 23 Biều đồ lớp MainView
- Thuộc tính screens là danh sách đối tượng Screen
- Phương thức getLiftSystemScreen() là phương thức trả lại đối tượng
LiftSystemScreen
- Phương thức getManagerScreen() là phương thức trả lại đối tượng
ManagerScreen