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
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:
Nguyễn Hữu Trung 20102767 CNTT4 - K55
Nguyễn Xuân Trường 20102400 CNTT4- K55
Nguyễn Tường Quân 20102044 CNTT4 - K55
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
2.4.2 Package model : 16
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 em hoàn thành được đề tài này.
Trang 5 Cá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 6
PHÂN CÔNG THÀNH VIÊN TRONG NHÓM
Nguyễn Hữu Trung Thiết kế Use-case, biểu đồ lớp, giao
diện Code phần View Nguyễn Xuân Trường Thiết kế CSDL, code phần Model,
Control và View Nguyễn Tường Quân 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
Xây dựng chương trình quản lý khách sạn
Quản lý thông tin về phòng cho thuê của khách sạn bao gồm : Tênphò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
Thống kê về lịch sử khách hàng, những phiên đặt phòng, trảphòng
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 9 Chươ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
Trang 10 Use case Quản lý phòng
Trang 11
Use case Quản lý khách hàng :
Use case Thuê phòng :
Trang 12
Use 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òngtrùng với tên phòng đã có sẽ xuất hiện thông báo Nhập lỗi và yêucầ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ệnsửa thông tin phòng trực tiếp lên Dialog.Các Dialog thông báo lỗitương tự như ở chức năng thêm phòng Nếu phòng đang trong tìnhtrạng “Đã thuê” Bởi 1 khách hàng sẽ không được phép chỉnh sửaphò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ôngxó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
Trang 14 Sử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ựchiện sửa thông tin phòng trực tiếp lên Dialog đó Các Dialog thôngbáo lỗi tương tự như ở chức năng thêm phòng Nếu phòng đangtrong tình trạng “Đã thuê” Bởi 1 khách hàng sẽ không được phépchỉ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áchhà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ên quan đến chức năng quản lý khách hàng Tạo thựcthể cho package control 1 số phương thức chính như :
addCustomer(), deleteCustomer(), editCustomer(), testInforCustomer()…
Lớp RoomManagerModel : Sử dụng những lớp đóng gói dữ liệu Room
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ý phòng 1 số phương thức chính :
Trang 21 Lớp HirePayModel : Sử dụng lớp đóng gói dữ liệu Checkout Tươngtá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ý 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 25 Tương ứng với mỗi phần của giao diện, các lớp tương ứng sẽ thựchiệ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áchhà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êmphò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ìnhthiết kế được sử dụng trong kỹ thuật phần mềm Nó giúp các developertách riêng ứng dụng của họ ra làm thành phần khác nhau Model, View,Control và mỗi thành phần có 1 nhiệm vụ riêng biệt, độc lập khác nhau
Model
Đây là thành phần chứa tất cả các nghiệp vụ logic, phương thức xử
lý, truy xuất database, đối tượng mô tả dữ liệu như các Class, hàm
Trang 27 Controller
Giữ nhiệm vụ nhận điều hướng các yêu cầu từ người dùng và gọiđúng những phương thức xử lý chúng Chẳng hạn thành phần này
sẽ nhận request 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úp tă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ềm bằng cách cho phép lập trình viên tập trung vào các đốitượng phần mềm ở bậc cao hơ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ới học về lập trình hơn là các phươngphá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ên Giao diện chính của chương trình, nhóm đã lựa chọn hệ quảntrị cơ sở dữ liệu MySQL, 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ữngphần mềm giao diện lập trình ứng dụng (Application ProgrammingInterfaces – APIs) cho việc kết nối cơ sở dữ liệu Ở đây nhóm đã lựa chọnJDBC (Java Database Connection) - Một trong những phầm mềm giao diệnlập trình ứng dụng trong bộ sưu tập của thư viện ứng dụng và trình điềukhiể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 28 Nhữ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ệu
Create and Execute an SQL Statement - Tạo và thực thi 1 câutruy 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ệnhtruy 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àinguyên
Trong khi lập trình xây dựng ứng dụng nhóm đã gặp phải khá nhiềulỗ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
Sử dụng đối tượng Statement
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 recordsthỏa mãn câ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ỗitrong quá trình sử dụng phần mềm nhóm đã lựa chọn them vào Projectthư 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ờilưu trữ hóa đơn khách hàng cho khách sạn Nhóm đã nghiên cứu và viếtlớp Export trong package Model để thực hiện in hóa đơn Ở dạng thực thiHTML, và mặc định xuất ra file 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ựcquan
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ênchắc chắn sẽ còn nhiều thiếu sót cả về kỹ năng thiết kế hệ thống, kỹ nănglậ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ũngnhư đó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ểm của chương trình so với yêu cầu của bàitoá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ư 1 chương trình Window bình thường Dễ dàng sử dụngcho 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àngchỉ có thể đặt, thuê phòng vào ngày hiện tại và không thể đặtphò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ầnnà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ế hoạch và công việc cần làm để hoàn thiện chương trình :