1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập lớn website quản lý đặt phòng khách sạn

29 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Với Servlet, bạn được phép thu thập dữ liệu đầu vào của người dùng thông qua website.. ● Quá trình hoạt động của một ứng dụng JSP kết hợp với Servlet như sau:➔ Người dùng gửi một yêu cầu

lOMoARcPSD|39269578 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN 1 -🙞🙜🕮🙞🙜 - B䄃ĀO C䄃ĀO BÀI TẬP LỚN “WEBSITE QUẢN LÝ ĐẶT PHÒNG KH䄃ĀCH SẠN” Giảng viên hướng dẫn: Nguyễn Mạnh Sơn NHÓM HỌC PHẦN 05 NHÓM HỌC PHẦN BTL 12 1 Vũ Hữu Đức – B21DCCN259(Nhóm trưởng) 2 Nguyễn Thị Thùy Linh -B21DCCN487 3 Lê Đức Nam – B20DCCN234 4 Lại Bá Quân - B21DCCN009 5 Phạm Hải Dương - B21DCCN008 BTL OOP - Trang 1 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 LỜI CẢM ƠN Lời đầu tiên, chúng em xin gửi lời cảm ơn đến Học viện Công nghệ Bưu chính Viễn Thông đã tạo điều kiện cho chúng em được học môn Lập trình Hướng đối tượng Đặc biệt, chúng em xin gửi lời cảm ơn chân thành và sâu sắc nhất tới thầy Nguyễn Mạnh Sơn , giảng viên bộ môn đã hướng dẫn và truyền đạt những kiến thức hết sức bổ ích và quý báu trong suốt thời gian học tập vừa qua Với vốn hiểu biết sâu rộng và kinh nghiệm nhiều năm giảng dạy cũng như làm việc trong môi trường công nghệ thông tin, thầy khiến chúng em thật sự ấn tượng, khâm phục và “ngỡ ngàng” trước những hiểu biết của thầy Những kiến thức, kinh nghiệm thầy chia sẻ khiến chúng em thật sự ngưỡng mộ và một phần hãnh diện khi được học dưới sự hướng dẫn của thầy Lập trình Hướng đối tượng là một môn học nền tảng với một lượng kiến thức tương đối nhiều và cần đầu tư thời gian học khá lớn nên khó có thể hiểu rõ, hiểu sâu nhanh chóng khi thời lượng học trên lớp có hạn Chính vì vậy mặc dù thầy đã truyền đạt rất nhiệt tình và tận tâm nhưng do năng lực có hạn, khả năng tư duy và khả năng tiếp thu còn chưa nhanh nên trong báo cáo bài tập lớn này chúng em khó có thể tránh khỏi được những sai sót Do đó, chúng em kính mong thầy xem xét và bổ sung giúp đỡ chúng em hoàn thiện bài báo cáo này một cách đầy đủ và đúng đắn hơn Một lần nữa, chúng em xin chân thành cảm ơn thầy! BTL OOP - Trang 2 Hà Nội, Tháng 11 năm 2023 Thay mặt nhóm 12 Nhóm trưởng Đức Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 Vũ Hữu Đức Contents LỜI CẢM ƠN I, Lý do chọn đề tài: II, Lập trình JSP/Servlet theo mô hình MVC 1 Lập trình JSP/Servlet 2 Mô hình MVC(Model-View-Controller) 2.1 Model 2.2 View 2.3 Controller III, Mô tả dự án và các chức năng cơ bản của website 1 Mô tả dự án: 2 Mô tả cơ bản về chức năng của website: IV, Hoạt động nhóm và phân chia nhiệm vụ từng thành viên V, Thiết kế cơ sở dữ liệu VI, Cấu trúc thư mục backend 1 Model 2 Dao 3 Controller: VII, Cấu trúc thư mục frontend VIII, Hướng dẫn cài đặt, triển khai và đánh giá kết quả 1 Hướng dẫn cài đặt 2 Kết quả 3 Đánh giá và hướng phát triển trong tương lai XI Tài liệu tham khảo BTL OOP - Trang 3 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 I, Lý do chọn đề tài: - Hiện nay, công nghệ thông tin ngày càng phát triển mạnh mẽ, Internet được phổ biến rộng rãi, nhu cầu đặt phòng khách sạn trực tuyến ngày càng tăng nên việc đặt phòng qua mạng không còn mới lạ với mọi người nữa Mặc dù xây dựng một trang web đặt phòng trực tuyến ở nước ta là còn mới mẻ nhưng rất khả thi khi đất nước đã và đang từng bước đổi mới và phát triển, đây cũng là một cơ hội rất lớn cho thương mại điện tử ở Việt Nam phát triển - Đề tài “Website quản lý đặt phòng khách sạn” rất thực tế và phù hợp với tình hình hiện nay Việc thiết lập một website đặt phòng trực tuyến nhanh chóng với nhiều dịch vụ tiện ích và hoàn toàn miễn phí có thể quảng bá được hình ảnh của khách sạn, tạo cơ hội thuận lợi cho mọi người, tiết kiệm được khoảng thời gian và hoàn toàn thuận lợi cho tất cả mọi người - Đây có thể coi là giải pháp tối ưu và thiết thực đối với các khách sạn ở nước ta hiện nay II, Lập trình JSP/Servlet theo mô hình MVC 1 Lập trình JSP/Servlet ● JSP: JSP là viết tắt của JavaServer Pages là một công nghệ để phát triển các trang web động JSP giúp các nhà phát triển chèn java code vào các trang HTML bằng cách sử dụng các thẻ JSP đặc biệt JSP là một kiểu Java servlet được thiết kế để tạo ra giao diện người dùng cho một ứng dụng Java web Các nhà phát triển web viết các JSP như các tệp văn bản kết hợp mã HTML hoặc XHTML, các phần tử XML, các action và lệnh JSP ● Servlet: Servlet là công nghệ được dùng để thiết lập ra các ứng dụng web Servlet được xem là một API cung cấp các interface, lớp và cả các tài liệu BTL OOP - Trang 4 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 Servlet cũng là một thành phần website được lập trình viên triển khai trên máy chủ, phục vụ cho mục đích tạo các trang web động Với Servlet, bạn được phép thu thập dữ liệu đầu vào của người dùng thông qua website Cụ thể, chúng sẽ hiển thị bản ghi từ một nguồn cơ sở dữ liệu hay từ nguồn khác Java Servlet là chương trình chạy trên một Web hoặc ứng dụng máy chủ (Application Server) Nó hoạt động như một lớp trung gian giữa một yêu cầu đến từ một trình duyệt Web hoặc HTTP khách (Client) khác và cơ sở dữ liệu hoặc các ứng dung trên máy chủ HTTP (HTTP Server) ● Quá trình hoạt động của một ứng dụng JSP kết hợp với Servlet như sau: ➔ Người dùng gửi một yêu cầu HTTP từ trình duyệt đến một URL tương ứng với một Servlet ➔ Servlet nhận yêu cầu và xử lý thông tin từ yêu cầu đó, thường là thông qua các phương thức như doGet() hoặc doPost() ➔ Trong quá trình xử lý, Servlet có thể truy cập và xử lý dữ liệu từ các nguồn khác nhau như cơ sở dữ liệu ➔ Sau khi xử lý hoàn tất, Servlet có thể đặt các thuộc tính (attributes) chứa kết quả hoặc dữ liệu mà nó thu được bằng cách sử dụng phương thức setAttribute() của đối tượng HttpServletRequest ➔ Tiếp theo, Servlet chuyển hướng yêu cầu đến một trang JSP bằng cách sử dụng phương thức getRequestDispatcher() và phương thức forward() để gửi dữ liệu đến JSP tương ứng ➔ Trang JSP nhận dữ liệu từ Servlet thông qua các biến hoặc thuộc tính (attributes) và sử dụng mã JSP (bao gồm cả Java và HTML) để hiển thị kết quả lên trình duyệt của người dùng 2 Mô hình MVC(Model-View-Controller) BTL OOP - Trang 5 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 2.1 Model - Có nhiệm vụ thao tác với Database - Nó chứa tất cả các hàm, các phương thức truy vấn trực tiếp với dữ liệu - Controller sẽ thông qua các hàm, phương thức đó để lấy dữ liệu rồi gửi qua View 2.2 View - Là giao diện người dùng (User Interface) - Chứa các thành phần tương tác với người dùng như menu, button, image, text, - Nơi nhận dữ liệu từ Controller và hiển thị 2.3 Controller - Là thành phần trung gian giữa Model và View - Đảm nhận vai trò tiếp nhận yêu cầu từ người dùng, thông qua Model để lấy BTL OOP - Trang 6 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 dữ liệu sau đó thông qua View để hiển thị cho người dùng Luồng xử lý của mô hình MVC: - Đầu tiên, người dùng gửi request từ client đến server - Sau đó, Controller nhận request từ người dùng rồi tiến hành giao tiếp với Model để lấy dữ liệu từ database - Cuối cùng, Controller gửi dữ liệu mà nó lấy được về View và hiển thị ra cho người dùng Trong website này, chúng em sử dụng JSP và Servlet để xây dựng mô hình trên JSP: Lấy thông tin, yêu cầu từ người dùng Servlet: Nhận thông tin từ người dùng thông qua JSP rồi xử lý dữ liệu từ database, cuối cùng gửi ngược lại JSP để hiển thị thông tin cho người dùng III, Mô tả dự án và các chức năng cơ bản của website 1 Mô tả dự án: Tên dự án “Website quản lý đặt phòng khách sạn”: Quản lý danh sách các phòng, phân loại theo loại phòng, xem bài viết, thông tin khách sạn và đặt phòng ● Ngôn ngữ backend: Java JSP/Serlet ● Cơ sở dữ liệu: My sql ● Server: Apache Tomcat 2 Mô tả cơ bản về chức năng của website: ● Xem thông tin giới thiệu về khách sạn ● Xem danh sách phòng phân theo loại phòng ● Xem chi tiết thông tin phòng ● Xem bài viết mới ● Đặt phòng BTL OOP - Trang 7 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 IV, Hoạt động nhóm và phân chia nhiệm vụ từng thành viên Nhóm chúng em đã họp bàn chủ đề bài tập lớn và chốt được chủ đề Sau đó lên ý tưởng, chia nhau nhiệm vụ và bắt tay vào làm Nhóm em đã sử dụng github để lưu code và để dễ dàng trong làm việc nhóm Các thành viên thực hiện công việc trên nhánh đã tạo, có thể thêm, sửa đổi hoặc xóa các code trong dự án Sau khi hoàn thành phần việc thì mỗi người sẽ đẩy code của mình lên github Khi đó nhóm trưởng sẽ xem xét và hợp nhất các thay đổi lại Các thành viên sẽ cập nhật lại code mới nhất để đảm bảo tính đồng bộ Dưới đây là phần phân chia nhiệm vụ mà mỗi thành viên phải làm: 1.Vũ Hữu Đức – B21DCCN111(Nhóm trưởng): -Code backend -Hoàn thiện phần frontend -Viết báo cáo 2 Nguyễn Thị Thùy Linh– B21DCCN487 -Code frontend - Viết báo cáo 3 Lê Đức Nam -B20DCCN567 -Thiết kế cơ sở dữ liệu - Viết báo cáo 4 Lại Bá Quân - B21DCC009 - Code frontend -Viết báo cáo 5 Phạm Hải Dương - B21DCCN887 -Làm slide BTL OOP - Trang 8 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 V, Thiết kế cơ sở dữ liệu Cơ sở dữ liệu của website gồm 5 thực thể (bảng) với các thuộc tính: ➢ Bảng customers: chứa các thông tin của khách hàng, dữ liệu của khách hàng sẽ được đưa vào đây khi thực hiện các thao tác trong đặt phòng ○ customerId: id của khách hàng, được tăng 1 cách tự động và là khóa chính ○ customerName: tên của khách hàng ○ email: Email của khách hàng ○ tel: số điện thoại liên lạc của khách hàng ➢ Bảng rooms: chứa thông tin của phòng, dữ liệu sẽ được đưa vào từ trước ○ roomId: id của phòng, được tăng 1 cách tự động và là khóa chính ○ roomName: tên phòng (VD:102,103,…) ○ roomType: loại phòng (VD:Standard,Deluxe,…) ○ price: giá phòng trong 1 đêm/ngày ○ sale: Phần trăm giảm giá ○ rate: chất lượng phòng (3 sao, 4 sao,…) BTL OOP - Trang 9 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 ○ square: diện tích phòng ○ guest: số lượng khách tối đa có thể vào ở ○ description: mô tả ngắn gọn về phòng ○ detail: mô tả chi tiết phòng ➢ Bảng roomimages: chứa đường dẫn về hình ảnh của phòng, dữ liệu sẽ được đưa vào từ trước ○ roomImageId: id của hình ảnh, được tăng 1 cách tự động và là khóa chính ○ roomId: id của phòng, là khóa ngoài trỏ đến bảng rooms ○ imgURL: đường dẫn đến hình ảnh ➢ Bảng booking: chứa các thông tin về đặt phòng khách sạn, dữ liệu về đặt phòng sẽ được đưa vào đây khi thực hiện các thao tác đặt phòng ○ bookId: id cho đặt phòng, được tăng 1 cách tự động và là khóa chính ○ customerId: id của khách hàng, là khóa ngoài trỏ đến bảng customers ○ roomId: id của phòng, là khóa ngoài trỏ đến bảng rooms ○ checkIndate: ngày vào ở ○ checkOutdate: ngày trả phòng ○ totalDay: số ngày ở (thời gian từ ngày vào ở đến ngày trả phòng ở dạng int) ➢ Bảng bill: chứa thông tin hóa đơn, dữ liệu của hóa đơn được đưa vào đây sau khi xác nhận đặt phòng ○ billId: id của hóa đơn, được tăng 1 cách tự động và là khóa chính ○ bookId: id cho đặt phòng, là khóa ngoài trỏ đến bảng booking ○ totalPrice: tổng giá tiền phải trả, được tính bằng: (totalDay)x(price)x(1- rate)/100 ➢ Trong đó: ○ Bảng customers có quan hệ 1 – nhiều với bảng booking ○ Bảng rooms có quan hệ 1 – nhiều với bảng booking ○ Bảng rooms có quan hệ 1 – nhiều với bảng roomimages ○ Bảng booking có quan hệ 1 – nhiều với bảng bill BTL OOP - Trang 10 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 - RoomDAO: Trong RoomDAO: Có hai phương thức chính đó là: + getAllRooom(): lấy toàn bộ phòng từ cơ sở dữ liệu + getRoom(): lấy 1 phòng cụ thể thông qua loại phòng - CustomerDAO: BTL OOP - Trang 15 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 Thông qua CustomerDAO ta có thể thêm khách hàng đã đặt phòng vào cơ sở dữ liệu bằng phương thức insertCus() - BookingDAO: Phương thức: + check(): Kiểm tra xem phòng còn trống trong khoảng thời gian checkInDate - checkOutDate hay không + insertBooking(): Thêm lần đặt phòng vào cơ sở dữ liệu + getBookedDate(): Trả về danh sách các ngày mà phòng đó đã được đặt - BillDAO: Sử dụng phương thức insertBill() để thêm hóa đơn vào cơ sở dữ liệu BTL OOP - Trang 16 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 3 Controller: - RoomListServlet.java: + Kết nối với database thông qua RoomDAO để lấy toàn bộ thông tin phòng.(getAllRoom()) + Gửi dữ liệu đến JSP(room.jsp) bằng phương thức request.getRequestDispatcher() - RoomDetailServlet: BTL OOP - Trang 17 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 Lấy thông tin của phòng cụ thể rồi gửi về phía boonow.jsp - BookServlet: BookedServlet có nhiệm vụ lấy thông tin từ form đặt phòng rồi kiểm tra xem phòng mà khách hàng vừa đặt còn trống hay là không BTL OOP - Trang 18 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 + Nếu trống thì tiến hành xác nhận đặt phòng(confirm.jsp) + Nếu không trống thì trả về thông báo phòng đã được đặt trong khoảng thời gian nào đó(test.jsp) - ConfirmServlet: Xác nhận đặt phòng, thêm vào cơ sở dữ liệu về thông tin của lần đặt phòng, hóa đơn của lần đặt phòng đó VII, Cấu trúc thư mục frontend Trong thư mục WebPage chứa các file HTML, CSS, JSP, mục đích để hiển thị giao diện tương tác với người dùng BTL OOP - Trang 19 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 ● META-INF:Thư mục META-INF chứa các tệp tin cấu hình như context.xml chứa các cấu hình liên quan đến môi trường thực thi của ứng dụng ● WEB-INF: là một thư mục quan trọng trong ứng dụng web Java và nằm trong thư mục gốc của ứng dụng web Trong WEB-INF có chưa web.xml là tệp tin cấu hình chính của ứng dụng web Java Nó chứa các khai báo servlet, filter, listener và các cấu hình khác liên quan đến ứng dụng web ● CSS: chứa các tập tin của Bootstrap được thêm vào dự án phục vụ quá trình làm giao diện nhanh chóng và thuận tiện hơn ● Fonts: Chứa các font chữ cũng như icon được nhúng vào dự án để thuận tiện cho việc sử dụng ● images: Chứa các ảnh (.jpg và png) phục vụ cho quá trình xây dựng trang web ● js: có chứa các file JSP như rooms.jsp, booknow.jsp Việc sử dụng file jsp có tác dụng để xây dựng giao diện người dùng cho ứng dụng web Bằng cách sử dụng các thẻ JSP, ta có thể nhúng mã Java vào trong các phần tử HTML để tạo ra giao diện tương tác và hiển thị dữ liệu động ➢ Hiển thị thông tin phòng đã đặt: như số phòng, loại phòng, giá, ngày đặt, và các thông tin khác liên quan ➢ Xử lý thông tin đặt phòng: Bằng cách truy cập vào các tham số gửi từ biểu mẫu (sử dụng request.getParameter()) và thực hiện các xử lý logic cần thiết, có thể xác nhận đặt phòng, lưu thông tin vào cơ sở dữ liệu, và hiển thị thông báo thành công cho người dùng ➢ Gửi kết quả về cho người dùng: Trang JSP có thể sử dụng để hiển thị kết quả của quá trình đặt phòng hoặc xử lý thông tin, có thể sử dụng các phần BTL OOP - Trang 20 Downloaded by SAU SAU (saudinh1@gmail.com)

Ngày đăng: 22/03/2024, 22:37

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w