Biểu đồ lớpBiểu đồ phụ thuộc của các package : Mô hình MVC : Tầng cơ sở dữ liệu : Package model Tầng nghiệp vụ : Package control, bean Tầng giao diện : Package main,view,data Khi người s
Trang 1-o0o -BÀI TẬP LỚN PROJECT1
Đề tài : Phát triển phần mềm quản lí khách sạn
Giáo viên hướng dẫn: ThS Trịnh Tuấn Đạt
Nhóm sinh viên thực hiện:
Trang 2PROJECT1 Hà nội – 11/2012
Mục lục
Mục lục ii
LỜI NÓI ĐẦU 1
PHÂN CÔNG THÀNH VIÊN TRONG NHÓM 2
CHƯƠNG 1 KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀI TOÁN 3
1.1 Mô tả yêu cầu bài toán 3
1.1.1 Tên đề tài 3
1.1.2 Mô tả yêu cầu 3
1.1.3 Yêu cầu 3
1.2 Biểu đồ use case 4
1.2.1 Biểu đồ Use case tổng quan 4
1.2.2 Biểu đồ use case phân rã mức 2 5
1.3 Đặc tả use case 9
Quản lý phòng: 9
Quản lý khách hàng : 9
Thuê phòng : 10
Trả phòng 10
Thống kê : 10
Chương 2 : PHÂN TÍCH THIẾT KẾ BÀI TOÁN 11
2.1 Thiết kế Cơ sở dữ liệu 11
2.2 Biểu đồ trình tự 12
2.2.1 Biểu đồ trình tự thao tác nhân viên cho thuê phòng 12
2.2.2 Biểu đồ trình tự thao tác nhân viên nhận trả phòng 13
2.3 Biểu đồ lớp 14
2.4 Thiết kế chi tiết lớp 15
2.4.1 Package bean : 15
Trang 3Chương 3 : CÔNG NGHỆ VÀ THUẬT TOÁN SỬ DỤNG 22
3.1 Mô hình MVC 22
3.2 Kỹ thuật lập trình hướng đối tượng 23
3.3 Kỹ thuật xử lý kết nối Data base và truy vấn SQL 23
3.3.1 Kết nối Data base 23
3.3.2 Khởi tạo, thực hiện câu lệnh truy vấn SQL 24
3.4 Các kỹ thuật và ứng dụng khác 25
3.4.1 Sử dụng XML DOM Parse để ghi và đọc file xml 25
3.4.2 Thư viện JDate 25
3.4.3 In hóa đơn 26
3.4.4 Tối ưu giao diện bằng việc thiết kế trên Photoshop 27
3.4.5 Chương trình Setting đi kèm 27
Chương 4 : XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA 29
4.1 Kết quả chương trình minh họa 29
4.2 Giao diện chương trình 29
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 33
TÀI LIỆU THAM KHẢO 35
Trang 4LỜI NÓI ĐẦU
Trong giai đoạn hiện nay, giai đoạn mà đất nước ta đang phấn đầu trở thành quốc gia mạnh về công nghệ thông tin và viễn thông, coi công nghệ thông tin là mục tiêu phát triển hàng đầu Việc ứng dụng công nghệ thông tin vào tất cả các ngành kinh tế trong nền kinh tế quốc dân là một
xu thế tất yếu, nhất là khi các ngành công nghiệp, dịch vụ đang ngày một pháp triển mạng trên quy mô lớn.
Nắm bắt được xu thế này, cùng với những kiến thức trong thực tế, kiến thực tiếp thu được ở trong các bài giảng trên lớp, thành viên trong
nhóm thống nhất và đi đến quyết định chọn đề tài xây dựng phần mềm quản lý khách sạn với nhưng yêu cầu và chức năng cơ bản nhất.
Để hoàn thành được bài tập lớn này, nhóm chúng em xin được gửi lời cảm ơn chân thành đến:
Thầy giáo hướng dẫn đề tài - Thạc Sĩ Trịnh Tuấn Đạt,
Giảng viên Khoa Công nghệ Thông tin Trường Đại học Bách Khoa
Hà Nội - đã hết lòng giúp đỡ, hướng dẫn, chỉ dạy tận tình để nhóm
Trang 5Các bạn cùng lớp Project 1 cũng đã góp ý và giúp đỡ trong
quá trình làm đề tài.
Trang 6PHÂN CÔNG THÀNH VIÊN TRONG NHÓM
Tên thành viên
Nguyễn Hữu Trung
Nguyễn Xuân Trường
Nguyễn Tường Quân
Công việc Thiết kế Use-case, biểu đồ lớp, giao diện Code phần View Thiết kế CSDL, code phần Model,
Control và View Code phần Model, Control, kiểm thử chương trình, viết báo cáo, Silde.
Trang 7CHƯƠNG 1 KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀI TOÁN
1.1 Mô tả yêu cầu bài toán
1.1.1 Tên đề tài
Xây dựng chương trình quản lý khách sạn
1.1.2 Mô tả yêu cầu
Quản lý thông tin về phòng cho thuê của khách sạn bao gồm : Tên phòng, Loại phòng, Giá phòng, Tình trạng phòng
Thông tin về khách hàng : Mã số khách hàng, Tên khách hàng, Năm sinh, Giới tính, Số CMTND, Địa chỉ, Số điện thoại
Quản lý nhận và trả phòng, lập hóa đơn thanh toán
Thông kê, kế toán
Mô hình hóa bài toán:
Trang 81.2 Biểu đồ use case
1.2.1 Biểu đồ Use case tổng quan
Trang 9Chương trình phân cấp người sử dụng gồm :
Kiểu tài khoản Admin
Kiểu tài khoản User
Với 2 lớp người dùng này thì chương trình có những chức năng Quản
Trang 10Use case Quản lý phòng
Trang 11Use case Quản lý khách hàng :
Use case Thuê phòng :
Trang 12Use case Trả phòng
Trang 131.3 Đặc tả use case
Quản lý phòng:
Thêm phòng: Người dùng nhập thông tin vào Dialog thêm phòng, Nếu những
trường nhập vào sai với yêu cầu hay nhập tên phòng trùng với tên phòng đã có
sẽ xuất hiện thông báo Nhập lỗi và yêu cầu nhập lại Khi nhập đầy đủ và chính xác thông tin thì xuất hiện thông báo “Nhập thành công”.
Sửa phòng: Người dùng chọn phòng trên bảng danh mục chọn phòng Xuất
hiện thông tin phòng lên Dialog sửa phòng Thực hiện sửa thông tin phòng trực tiếp lên Dialog.Các Dialog thông báo lỗi tương tự như ở chức năng thêm phòng Nếu phòng đang trong tình trạng “Đã thuê” Bởi 1 khách hàng sẽ không
được phép chỉnh sửa phòng
Xóa phòng : Người dùng chọn phòng trên bảng danh mục chọn phòng Xuất
hiện Dialog xác nhận Phòng đang được thuê sẽ không xóa được
Thiết lập kiểu phòng : 2 chức năng , Thêm kiểu phòng và sửa kiểu phòng
Người dùng sẽ nhập thông tin các trường tên phòng và giá phòng ở thêm kiểu
phòng Đồng thời sửa những trường này ở chức năng sửa kiểu phòng.
Tìm kiếm phòng : Thực hiện tìm kiếm theo tên phòng, tình trạng phòng và kiểu
phòng
Quản lý khách hàng :
Thêm khách hàng : Người dùng nhập thông tin vào Dialog thêm khách hàng,
nếu những trường nhập vào sai với yêu cầu hay nhập thiếu trường sẽ xuất
hiện thông báo Nhập lỗi và yêu cầu nhập lại Khi nhập đầy đủ và chính xác thông tin thì xuất hiện thông báo “Nhập thành công”.
Trang 14Sửa khách hàng: Người dùng chọn phòng trên bảng danh mục khách hàng
Xuất hiện thông tin khách hàng lên Dialog sửa phòng Thực hiện sửa thông tin phòng trực tiếp lên Dialog đó Các Dialog thông báo lỗi tương tự như ở chức năng thêm phòng Nếu phòng đang trong tình trạng “Đã thuê” Bởi 1 khách hàng
sẽ không được phép chỉnh sửa phòng
Xóa khách hàng : Người dùng chọn khách hàng trên bảng danh mục khách
hàng Xuất hiện Dialog xác nhận Khách hàng đang thuê phòng sẽ không xóa được
Tìm kiếm khách hàng : Thực hiện tìm kiếm theo tên, CMTND và điện thoại.
Thuê phòng :
Người dùng sẽ chọn khách hàng, chọn phòng ở danh mục phòng và khách hàng Tương ứng với chưc năng tìm kiếm phòng và khách hàng giống với use
case Quản lý phòng và Quản lý khách hàng.
Thuê phòng : Xuất hiện Dialog xác nhận thuê phòng.
Trang 15Chương 2 : PHÂN TÍCH THIẾT KẾ BÀI TOÁN
2.1 Thiết kế Cơ sở dữ liệu
Cơ sở dữ liệu của bài toán được thiết kế như sau :
Trang 162.2 Biểu đồ trình tự
2.2.1 Biểu đồ trình tự thao tác nhân viên cho thuê phòng
Trang 172.2.2 Biểu đồ trình tự thao tác nhân viên nhận trả phòng
Trang 182.3 Biểu đồ lớp
Biểu đồ phụ thuộc của các package :
Mô hình MVC :
Tầng cơ sở dữ liệu : Package model
Tầng nghiệp vụ : Package control, bean
Tầng giao diện : Package main,view,data
Khi người sử dụng tương tác với giao diện của chương trình (package View), yêu cầu sẽ được gửi tới tầng nghiệp vụ (package Control - Kết nối giữa giao diện và
cơ sở dữ liệu ) , package Model tương tác với cơ sở dữ liệu và thực hiện yêu cầu
của người sử dụng
Trang 192.4 Thiết kế chi tiết lớp
2.4.1 Package bean :
Là lớp đóng gói dữ liệu, được sử dụng trong package view và model
Trang 202.4.2 Package model :
Lớp ConnectDB : Lấy dữ liệu kết nối trong file config Tạo kết nối đến cơ sở dữ
liệu Khởi tạo giá trị ban đầu của các câu lệnh cho câu lệnh
Lớp CustomerManagerModel : Sử dụng những lớp đóng gói dữ liệu Customer.
Tương tác trực tiếp với cơ sở dữ liệu thông qua các câu lệnh truy vấn, liênquan đến chức năng quản lý khách hàng Tạo thực thể cho package control
Trang 21Lớp HirePayModel : Sử dụng lớp đóng gói dữ liệu Checkout Tương tác trực
tiếp với cơ sở dữ liệu thông qua các câu lệnh truy vấn, liên quan đến chức năng quản lý Thuê phòng, trả phòng, thống kê, kế toán…
2.4.3 Package Control
Là Lớp kết nối giữa lớp giao diện và lớp cơ sở dữ liệu
Trang 222.4.4 Package view
Trang 25Tương ứng với mỗi phần của giao diện, các lớp tương ứng sẽ thực hiện chức năng tương tác với người dùng, lấy thông tin, yêu cầu và hiển thị trở lại giao diện.
Lớp CustomerCategoryPanel : Thực hiện chức năng quản lý khách hàng Hiển
thị bảng danh sách khách hàng hiện có, thêm khách hàng, sửa,xóa khách hàng
Lớp RoomCategoryPanel : Thực hiện chức năng quản lý phòng : Hiện thị danh
sách thông tin về phòng hiện có, Thêm loại phòng, thêm phòng, sửa xóa phòng
Lớp HireRoomPanel : Hiển thị thông tin khách hàng, phòng có thể được thuê,
Lấy thông tin về khách hàng, phòng thực hiện thuê phòng và lưu vào cơ sở dữ liệu
Lớp CheckOutPanel : Chọn phòng được trả, ngày trả và thực hiện trả phòng
Hỗ trợ chức năng in hóa đơn của khách hàng
Trang 26Chương 3 : CÔNG NGHỆ VÀ THUẬT TOÁN SỬ DỤNG
3.1 Mô hình MVC
Mô hình MVC (Model, Control,View) là kiến trúc phần mềm hay mô hình thiết kếđược sử dụng trong kỹ thuật phần mềm Nó giúp các developer tách riêng ứng dụngcủa họ ra làm thành phần khác nhau Model, View, Control và mỗi thành phần có 1nhiệm vụ riêng biệt, độc lập khác nhau
Trang 27Giữ nhiệm vụ nhận điều hướng các yêu cầu từ người dùng và gọi đúngnhững phương thức xử lý chúng Chẳng hạn thành phần này sẽ nhậnrequest từ form để thao tác trực tiếp với Model
3.2 Kỹ thuật lập trình hướng đối tượng
Là kĩ thuật lập trình hỗ trợ công nghệ đối tượng( OOP ) Được xem như là giúptăng năng suất, đơn giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềmbằng cách cho phép lập trình viên tập trung vào các đối tượng phần mềm ở bậc caohơn Ngoài ra, nhiều người còn cho rằng OOP dễ tiếp thu hơn cho những người mớihọc về lập trình hơn là các phương pháp trước đó
3.3 Kỹ thuật xử lý kết nối Data base và truy vấn SQL
3.3.1 Kết nối Data base
Để truy xuất, tương tác được với dữ liệu trong Database và hiển thị, thao tác trênGiao diện chính của chương trình, nhóm đã lựa chọn hệ quản trị cơ sở dữ liệuMySQL, môi trường IDE là Netbeans
Và để kết nối các ứng dụng Java với Database, thì cần phải có những phần mềmgiao diện lập trình ứng dụng (Application Programming Interfaces – APIs) cho việckết nối cơ sở dữ liệu Ở đây nhóm đã lựa chọn JDBC (Java Database Connection) -Một trong những phầm mềm giao diện lập trình ứng dụng trong bộ sưu tập của thưviện ứng dụng và trình điều khiển cơ sở dữ liệu, nó thực hiện độc lập với ngôn ngữlập trình, hệ thống cơ sở dữ liệu và hệ điều hành
Trang 28Những bước cơ bản để làm việc với JDBC:
Load Driver – Nạp trình điều khiển kết nối
Establish a database connection - Thiết lập kết nối đến cơ sở dữ liệuCreate and Execute an SQL Statement - Tạo và thực thi 1 câu truy vấn dữ liệu dạng SQL
Process the results - Xử lý kết quả nhận về sau khi thi hành lệnh truy vấn thành công trên cơ sở dữ liệu
Close the database connection - Đóng kết nối và giải phóng tài nguyênTrong khi lập trình xây dựng ứng dụng nhóm đã gặp phải khá nhiều lỗi, và khókhăn quá trình làm việc với JDBC
o Lỗi “Too many connection” : Tạo quá nhiều kết nối Database mà không đóng kết nối và giải phóng tài nguyên làm chương trình bị lỗi kết nối và treo
Giải pháp : Sau mỗi lần kết nối Database, hay tạo và thực hiện các câu
lệnh truy vấn SQL đều sử dụng phương thức đóng kết nối và câu lệnh truy vấn
o Thao tác và hiển thị dữ liệu lên bảng khó khăn
Giải pháp : Nhóm đã tìm hiểu và nghiên cứu viết riêng lớp Resultset table
trong package Model để thao tác trực tiếp với Database lấy dữ liệu, hiện thị, thao tác trên bảng giao diện
3.3.2 Khởi tạo, thực hiện câu lệnh truy vấn SQL
Trang 29Với đối tượng này, chúng ta có thể dùng để thực thi câu các SQL Tương ứng với loại câu SQL ta sẽ dùng các phương thức tương ứng.
o Phương thức khởi tạo : Statement stmt=con.createStatement() ; Thực thi câu
SQL :
int executeUpdate(String sql) : Phương thức này dùng để thực thi các câu
sql insert, delete, update,… ngoại trừ câu select
ResultSet executeQuery(String sql) : Phương thức này thực thi câu select
SQL, trả về 1 đối tượng ResultSet để chứa 1 danh sách các records thỏa mãncâu select
Sử dụng đối tượng PrepareStatement
Đối tượng này được sử dụng khi chúng ta muốn thực thi 1 câu truy vấn
có tham số truyền vào
PreparedStatement prepareStatement(String sql)throws SQLException
Trang 303.4 Các kỹ thuật và ứng dụng khác
3.4.1 Sử dụng XML DOM Parse để ghi và đọc file xml
3.4.2 Thư viện JDate
Để giải quyết vấn đề chọn thời gian tránh nhầm lần và pháp sinh lỗi trong quátrình sử dụng phần mềm nhóm đã lựa chọn them vào Project thư viện JDate Và sửdụng JDateChoose như 1 công cụ trong Java Swing
Giao diện của công cụ này :
Trang 313.4.3 In hóa đơn
Để thuận tiện cho việc xuất, in hóa đơn cho khách hàng đồng thời lưu trữ hóa
đơn khách hàng cho khách sạn Nhóm đã nghiên cứu và viết lớp Export trong
package Model để thực hiện in hóa đơn Ở dạng thực thi HTML, và mặc định xuất rafile văn bản word
Kết quả khi in ra:
Trang 323.4.4 Tối ưu giao diện bằng việc thiết kế trên Photoshop
Trước khi chương trình được code, giao diện chuẩn được thiết kế trên photoshop, đảm bảo tính thẩm mĩ
3.4.5 Chương trình Setting đi kèm
Setting là 1 công cụ phát triển kèm theo chương trình chính này, có nhiệm vụcấu hình kết nối và khởi tạo CSDL (trong trường hợp chưa có CSDL ban đầu) Công cụ này tối ưu hóa việc thiết lập CSDL cho người sử dụng, thay vì copy file sql, thực thi… thì chỉ cần nhập cấu hình kết nối, còn lại chương trình sẽ tự động làm
Đoạn code mô tả cách Setting xây dựng CSDL:
Trang 34Chương 4 : XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA
4.1 Kết quả chương trình minh họa
Sau khoảng 8 tuần tích cực xây dựng, hoàn thiện chương trình, chúng em đã thu được những kết quả hết sức khả quan
Về kết quả đạt được :
Kỹ năng lập trình java tương đối tốt
Kỹ năng phân tích thiết kế hướng đối tượng một chương trình Kỹ năng làm việc nhóm
Kỹ năng bẩy lỗi và kiểm thử phần mềm Làm
việc, thao tác với CSDL
Về chương trình :
Chương trình chạy tốt ổn định
Hoàn hiện hầu hết các chức năng cơ bản nhất
Giao diện chương trình bắt mắt, thao tác sử dụng dễ dàng trực quan
Trang 354.2 Giao diện chương trình
Dialog đăng nhập
Trang 36Giao diện chương trình chính
Giao diện trang quản trị
Trang 37Dialog thêm khách hàng
Giao diện Setting
Trang 38KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Đây là chương trình gần như là đầu tiên nhóm chúng em xây dựng nên chắcchắn sẽ còn nhiều thiếu sót cả về kỹ năng thiết kế hệ thống, kỹ năng lập trình cũng nhưlàm báo cáo, rất mong thầy và mọi người thông cảm cũng như đóng góp ý kiến đểchúng em có thể hoàn thiện chương trình hơn nữa Sau đây là một số ưu nhược điểmcủa chương trình so với yêu cầu của bài toán đặt ra
1 Về ưu điểm :
Hoàn thiện tất cả những yêu cầu chức năng của bài toán đưa ra Như các
thao tác Quản lý phòng, Quản lý khách hàng, Đặt phòng, Trả phòng, Hóa
đơn, Thống kê kế toán.
Chương trình được thiết kế với giao diện rất đẹp, hợp lý và vô cùng trực
quan với những thao tác như Nhập thông số phòng, khách hàng Các thao tác Tìm kiếm, Thao tác Thuê phòng.
Chương trình được đóng gói 1 cách gọn nhẹ, thao tác cài đặt dễ dàng như 1chương trình Window bình thường Dễ dàng sử dụng cho người mới tiếp cận
2 Về nhược điểm :
Chương trình vẫn còn khuyết đi chức năng đặt phòng Khách hàng chỉ có thể đặt, thuê phòng vào ngày hiện tại và không thể đặt phòng trước ngày đó.Khả năng phòng ngừa bẫy lỗi của chương trình còn nhiều hạn chế Chỉ bắt được những lỗi chung chung và chưa chỉ rõ được lỗi ở phần nào, lỗi do nguyên nhân gì
Tư duy lập trình hướng đối tượng chưa tốt, thể hiện ở phần thiết kế và viết code còn nhiều chỗ không hợp lý
Nhằm khắc phục nhưng mặt nhược điểm của chương trình, nhóm đưa ra kế
Trang 39Nghiên cứu, xử lý thời gian, sắp xếp phòng để bổ sung và hoàn thiện chức năng đặt phòng Sẽ cho khách hàng đặt phòng trước qua điện thoại hoặc email trước khi khách hàng trực tiếp đến nhận phòng.
Để giải quyết vấn đề về bẫy lỗi và lập trình phần mềm, nhóm sẽ viết riêng những hàm xử lý lỗi, hiển thị thông báo, chỉ ra cụ thể phần lỗi trong những thao tác của người dung chương trình