├── README.md
└── hotel_project
├── images
├── room1.jpg
├── room2.jpg
├── room3.jpg
├── room4.jpg
├── room5.jpg
├── room6.jpg
└── room7.jpg
├── logout.jsp
├── admin
├── deleteUser.jsp
├── shutdown.jsp
├── index.jsp
├── bookings.jsp
├── contactDashboard.jsp
├── reviews.jsp
├── rooms.jsp
├── users.jsp
└── editUser.jsp
├── reviews.jsp
├── bookings.jsp
├── contact.jsp
├── ratings.jsp
├── checkout.jsp
├── room.jsp
├── signup.jsp
├── myaccount.jsp
├── login.jsp
├── searchresults.jsp
├── facilities.jsp
├── updateMyAccount.jsp
├── index.jsp
├── about.jsp
├── rooms.jsp
└── pic.txt
/README.md:
--------------------------------------------------------------------------------
1 | # Hazrat Ali
2 |
3 | # Software Engineering
4 |
5 | # Hotel Management
--------------------------------------------------------------------------------
/hotel_project/images/room1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Hotel-Management-System-Oracle-Database/HEAD/hotel_project/images/room1.jpg
--------------------------------------------------------------------------------
/hotel_project/images/room2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Hotel-Management-System-Oracle-Database/HEAD/hotel_project/images/room2.jpg
--------------------------------------------------------------------------------
/hotel_project/images/room3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Hotel-Management-System-Oracle-Database/HEAD/hotel_project/images/room3.jpg
--------------------------------------------------------------------------------
/hotel_project/images/room4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Hotel-Management-System-Oracle-Database/HEAD/hotel_project/images/room4.jpg
--------------------------------------------------------------------------------
/hotel_project/images/room5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Hotel-Management-System-Oracle-Database/HEAD/hotel_project/images/room5.jpg
--------------------------------------------------------------------------------
/hotel_project/images/room6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Hotel-Management-System-Oracle-Database/HEAD/hotel_project/images/room6.jpg
--------------------------------------------------------------------------------
/hotel_project/images/room7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Hazrat-Ali9/Hotel-Management-System-Oracle-Database/HEAD/hotel_project/images/room7.jpg
--------------------------------------------------------------------------------
/hotel_project/logout.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2 | <%
3 | session.invalidate();
4 | response.sendRedirect("login.jsp?logout=success");
5 | %>
6 |
--------------------------------------------------------------------------------
/hotel_project/admin/deleteUser.jsp:
--------------------------------------------------------------------------------
1 | <%@ page import="java.sql.*" %>
2 | <%
3 | String userId = request.getParameter("id");
4 | String message = "";
5 |
6 | if(userId != null){
7 | Connection conn = null;
8 | PreparedStatement pst = null;
9 |
10 | try{
11 | Class.forName("oracle.jdbc.driver.OracleDriver");
12 | conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","a12345");
13 |
14 | pst = conn.prepareStatement("DELETE FROM Users WHERE user_id=?");
15 | pst.setInt(1, Integer.parseInt(userId));
16 |
17 | int rows = pst.executeUpdate();
18 | if(rows > 0){
19 | message = "User deleted successfully!";
20 | } else {
21 | message = "User not found!";
22 | }
23 |
24 | } catch(Exception e){
25 | message = "Error: " + e.getMessage();
26 | } finally {
27 | try{ if(pst != null) pst.close(); } catch(Exception e){}
28 | try{ if(conn != null) conn.close(); } catch(Exception e){}
29 | }
30 | }
31 |
32 | // Redirect back to users.jsp with message
33 | response.sendRedirect("users.jsp?msg=" + java.net.URLEncoder.encode(message,"UTF-8"));
34 | %>
35 |
--------------------------------------------------------------------------------
/hotel_project/admin/shutdown.jsp:
--------------------------------------------------------------------------------
1 | <%@ page import="java.sql.*" %>
2 |
3 |
4 |
5 |
6 |
20 |
21 |
22 | Booking ID
23 | Username
24 | Room
25 | Check-in
26 | Check-out
27 |
28 | <%
29 | Connection conn=null;
30 | Statement stmt=null;
31 | ResultSet rs=null;
32 | try{
33 | Class.forName("oracle.jdbc.driver.OracleDriver");
34 | conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","a12345");
35 | stmt=conn.createStatement();
36 | String query="SELECT b.booking_id,u.username,r.room_name,b.check_in,b.check_out " +
37 | "FROM Bookings b " +
38 | "JOIN Users u ON b.user_id=u.user_id " +
39 | "JOIN Rooms r ON b.room_id=r.room_id";
40 | rs=stmt.executeQuery(query);
41 | while(rs.next()){
42 | %>
43 |
44 | <%=rs.getInt("booking_id")%>
45 | <%=rs.getString("username")%>
46 | <%=rs.getString("room_name")%>
47 | <%=rs.getDate("check_in")%>
48 | <%=rs.getDate("check_out")%>
49 |
50 | <%
51 | }
52 | }catch(Exception e){ out.println("Error: "+e.getMessage()+" "); }
53 | finally{ try{if(rs!=null)rs.close();}catch(Exception e){} try{if(stmt!=null)stmt.close();}catch(Exception e){} try{if(conn!=null)conn.close();}catch(Exception e){} }
54 | %>
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/hotel_project/contact.jsp:
--------------------------------------------------------------------------------
1 | <%@ page import="java.sql.*" %>
2 |
3 |
4 |
5 |
Contact - Hotel Management System
6 |
17 |
18 |
19 |
31 |
32 |
Get in Touch
33 |
39 | <%
40 | if(request.getMethod().equalsIgnoreCase("POST")){
41 | String name=request.getParameter("name");
42 | String email=request.getParameter("email");
43 | String message=request.getParameter("message");
44 | out.println("
Thank you, "+name+". Your message has been received.
");
45 | // Optionally insert into DB table "ContactMessages"
46 | }
47 | %>
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/hotel_project/admin/rooms.jsp:
--------------------------------------------------------------------------------
1 | <%@ page import="java.sql.*, java.text.SimpleDateFormat" %>
2 |
3 |
4 |
5 |
Admin - Bookings
6 |
13 |
14 |
15 |
All Bookings
16 |
17 |
18 | Booking ID
19 | Username
20 | Room
21 | Check-in
22 | Check-out
23 |
24 | <%
25 | Connection conn = null;
26 | Statement stmt = null;
27 | ResultSet rs = null;
28 |
29 | try {
30 | Class.forName("oracle.jdbc.driver.OracleDriver");
31 | conn = DriverManager.getConnection(
32 | "jdbc:oracle:thin:@localhost:1521:xe", "system", "a12345"
33 | );
34 |
35 | stmt = conn.createStatement();
36 | String sql = "SELECT b.booking_id, u.username, r.room_name, b.check_in, b.check_out " +
37 | "FROM Bookings b " +
38 | "JOIN Users u ON b.user_id = u.user_id " +
39 | "JOIN Rooms r ON b.room_id = r.room_id";
40 |
41 | rs = stmt.executeQuery(sql);
42 |
43 | SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
44 |
45 | while(rs.next()) {
46 | int bookingId = rs.getInt("booking_id");
47 | String username = rs.getString("username");
48 | String roomName = rs.getString("room_name");
49 | java.sql.Date checkIn = rs.getDate("check_in");
50 | java.sql.Date checkOut = rs.getDate("check_out");
51 | %>
52 |
53 | <%= bookingId %>
54 | <%= username %>
55 | <%= roomName %>
56 | <%= checkIn != null ? sdf.format(checkIn) : "" %>
57 | <%= checkOut != null ? sdf.format(checkOut) : "" %>
58 |
59 | <%
60 | }
61 | } catch(Exception e) {
62 | %>
63 |
64 | Error: <%= e.getMessage() %>
65 |
66 | <%
67 | } finally {
68 | try { if(rs != null) rs.close(); } catch(Exception e) {}
69 | try { if(stmt != null) stmt.close(); } catch(Exception e) {}
70 | try { if(conn != null) conn.close(); } catch(Exception e) {}
71 | }
72 | %>
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/hotel_project/admin/users.jsp:
--------------------------------------------------------------------------------
1 | <%@ page import="java.sql.*" %>
2 |
3 |
4 |
5 |
Admin - Manage Users
6 |
16 |
17 |
18 |
Manage Users
19 |
20 | <%
21 | // Show message if any (from deleteUser.jsp)
22 | String msg = request.getParameter("msg");
23 | if(msg != null){
24 | %>
25 |
<%= msg %>
26 | <%
27 | }
28 | %>
29 |
30 |
31 |
32 | User ID
33 | Username
34 | Email
35 | Role
36 | Actions
37 |
38 | <%
39 | Connection conn = null;
40 | Statement stmt = null;
41 | ResultSet rs = null;
42 |
43 | try {
44 | Class.forName("oracle.jdbc.driver.OracleDriver");
45 | conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "system", "a12345");
46 | stmt = conn.createStatement();
47 |
48 | rs = stmt.executeQuery("SELECT user_id, username, email, user_role FROM Users");
49 |
50 | while(rs.next()) {
51 | int userId = rs.getInt("user_id");
52 | String username = rs.getString("username");
53 | String email = rs.getString("email");
54 | String role = rs.getString("user_role");
55 | %>
56 |
57 | <%= userId %>
58 | <%= username %>
59 | <%= email %>
60 | <%= role %>
61 |
62 | Edit |
63 | Delete
64 |
65 |
66 | <%
67 | }
68 | } catch(Exception e) {
69 | %>
70 |
71 | Error: <%= e.getMessage() %>
72 |
73 | <%
74 | } finally {
75 | try { if(rs != null) rs.close(); } catch(Exception e) {}
76 | try { if(stmt != null) stmt.close(); } catch(Exception e) {}
77 | try { if(conn != null) conn.close(); } catch(Exception e) {}
78 | }
79 | %>
80 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/hotel_project/ratings.jsp:
--------------------------------------------------------------------------------
1 | <%@ page import="java.sql.*" %>
2 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
3 |
4 |
5 |
6 |
Ratings - Hotel Management System
7 |
15 |
16 |
17 |
20 |
21 |
22 |
23 | Username
24 | Room
25 | Rating
26 | Date
27 |
28 | <%
29 | Connection conn = null;
30 | Statement stmt = null;
31 | ResultSet rs = null;
32 |
33 | try {
34 | Class.forName("oracle.jdbc.driver.OracleDriver");
35 | conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","a12345");
36 |
37 | String query = "SELECT u.username, r.room_name, rev.rating, rev.review_date " +
38 | "FROM Reviews rev " +
39 | "JOIN Users u ON rev.user_id = u.user_id " +
40 | "JOIN Rooms r ON rev.room_id = r.room_id";
41 |
42 | stmt = conn.createStatement();
43 | rs = stmt.executeQuery(query);
44 |
45 | while(rs.next()){
46 | %>
47 |
48 | <%= rs.getString("username") %>
49 | <%= rs.getString("room_name") %>
50 | <%= rs.getInt("rating") %>
51 | <%= rs.getDate("review_date") %>
52 |
53 | <%
54 | }
55 | } catch(Exception e){
56 | out.println("Error: " + e.getMessage() + " ");
57 | } finally {
58 | try { if(rs != null) rs.close(); } catch(Exception e){}
59 | try { if(stmt != null) stmt.close(); } catch(Exception e){}
60 | try { if(conn != null) conn.close(); } catch(Exception e){}
61 | }
62 | %>
63 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/hotel_project/checkout.jsp:
--------------------------------------------------------------------------------
1 | <%@ page import="java.sql.*" %>
2 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
3 |
4 |
5 |
6 |
Checkout - Hotel Management System
7 |
15 |
16 |
17 |
18 |
Checkout
19 | <%
20 | String roomId = request.getParameter("room_id");
21 | String username = (String)session.getAttribute("username");
22 | if(username==null){ response.sendRedirect("login.jsp"); }
23 | if(request.getMethod().equalsIgnoreCase("POST")){
24 | String checkin=request.getParameter("checkin");
25 | String checkout=request.getParameter("checkout");
26 | Connection conn=null;
27 | PreparedStatement pst=null;
28 | try{
29 | Class.forName("oracle.jdbc.driver.OracleDriver");
30 | conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","a12345");
31 | // get user_id
32 | Statement stmt=conn.createStatement();
33 | ResultSet rs=stmt.executeQuery("SELECT user_id FROM Users WHERE username='"+username+"'");
34 | int user_id=0;
35 | if(rs.next()){ user_id=rs.getInt("user_id"); }
36 | pst=conn.prepareStatement("INSERT INTO Bookings(booking_id,user_id,room_id,check_in,check_out) VALUES(Bookings_seq.NEXTVAL,?,?,TO_DATE(?,'YYYY-MM-DD'),TO_DATE(?,'YYYY-MM-DD'))");
37 | pst.setInt(1,user_id);
38 | pst.setInt(2,Integer.parseInt(roomId));
39 | pst.setString(3,checkin);
40 | pst.setString(4,checkout);
41 | int i=pst.executeUpdate();
42 | if(i>0){ out.println("
Booking successful!
"); }
43 | }catch(Exception e){ out.println("
Error: "+e.getMessage()+"
"); }
44 | finally{ try{if(pst!=null)pst.close();}catch(Exception e){} try{if(conn!=null)conn.close();}catch(Exception e){} }
45 | }
46 | %>
47 |
48 | Check-in Date
49 |
50 | Check-out Date
51 |
52 | Book Now
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/hotel_project/room.jsp:
--------------------------------------------------------------------------------
1 | <%@ page import="java.sql.*" %>
2 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
3 |
4 |
5 |
6 |
Room Details
7 |
17 |
18 |
19 |
31 |
32 | <%
33 | String roomId = request.getParameter("room_id");
34 | if(roomId != null){
35 | Connection conn = null;
36 | PreparedStatement ps = null;
37 | ResultSet rs = null;
38 | try{
39 | Class.forName("oracle.jdbc.driver.OracleDriver");
40 | conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","a12345");
41 |
42 | int rId = Integer.parseInt(roomId);
43 | ps = conn.prepareStatement("SELECT * FROM Rooms WHERE room_id=?");
44 | ps.setInt(1, rId);
45 | rs = ps.executeQuery();
46 |
47 | if(rs.next()){
48 | %>
49 |
" alt="<%=rs.getString("room_name")%>">
50 |
51 |
<%=rs.getString("room_name")%>
52 |
Type: <%=rs.getString("room_type")%>
53 |
Price: ₹<%=rs.getInt("price")%>
54 |
<%=rs.getString("description")%>
55 |
">Book Now
56 |
57 | <%
58 | } else {
59 | out.println("
Room not found.
");
60 | }
61 | } catch(Exception e){
62 | out.println("
Error: "+e.getMessage()+"
");
63 | } finally{
64 | try{if(rs!=null) rs.close();}catch(Exception e){}
65 | try{if(ps!=null) ps.close();}catch(Exception e){}
66 | try{if(conn!=null) conn.close();}catch(Exception e){}
67 | }
68 | } else {
69 | out.println("
Invalid Room ID.
");
70 | }
71 | %>
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/hotel_project/signup.jsp:
--------------------------------------------------------------------------------
1 | <%@ page import="java.sql.*" %>
2 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
3 |
4 |
5 |
6 |
Sign Up - Hotel Management System
7 |
17 |
18 |
19 |
20 |
Sign Up
21 |
22 |
23 |
24 |
25 | Sign Up
26 |
27 | <%
28 | if(request.getMethod().equalsIgnoreCase("POST")){
29 | String username=request.getParameter("username");
30 | String email=request.getParameter("email");
31 | String password=request.getParameter("password");
32 | Connection conn=null;
33 | PreparedStatement pst=null;
34 | try{
35 | Class.forName("oracle.jdbc.driver.OracleDriver");
36 | conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","a12345");
37 |
38 | // Corrected: use user_role instead of role
39 | pst=conn.prepareStatement(
40 | "INSERT INTO Users(user_id, username, password, email, user_role) VALUES(Users_seq.NEXTVAL, ?, ?, ?, ?)"
41 | );
42 | pst.setString(1, username);
43 | pst.setString(2, password);
44 | pst.setString(3, email);
45 | pst.setString(4, "user"); // default role
46 |
47 | int i=pst.executeUpdate();
48 | if(i>0){
49 | out.println("
Account created successfully! Login here
");
50 | }
51 | }catch(Exception e){
52 | out.println("
Error: "+e.getMessage()+"
");
53 | }finally{
54 | try{if(pst!=null)pst.close();}catch(Exception e){}
55 | try{if(conn!=null)conn.close();}catch(Exception e){}
56 | }
57 | }
58 | %>
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/hotel_project/myaccount.jsp:
--------------------------------------------------------------------------------
1 | <%@ page import="java.sql.*" %>
2 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
3 |
4 |
5 |
6 |
My Account - Hotel Management System
7 |
18 |
19 |
20 |
32 |
33 |
34 | <%
35 | // Session থেকে username নাও
36 | String username = (String) session.getAttribute("username");
37 | if(username == null){
38 | response.sendRedirect("login.jsp");
39 | return;
40 | }
41 |
42 | Connection conn = null;
43 | PreparedStatement pst = null;
44 | ResultSet rs = null;
45 |
46 | try {
47 | Class.forName("oracle.jdbc.driver.OracleDriver");
48 | conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","a12345");
49 |
50 | // শুধু session username এর data select করো
51 | pst = conn.prepareStatement("SELECT * FROM Users WHERE username=?");
52 | pst.setString(1, username);
53 | rs = pst.executeQuery();
54 |
55 | if(rs.next()){
56 | %>
57 |
Welcome, <%= rs.getString("username") %>
58 |
59 |
60 | Username:
61 | " readonly>
62 |
63 | Email:
64 | " required>
65 |
66 | Update Info
67 |
68 | <%
69 | } else {
70 | out.println("
User data not found!
");
71 | }
72 | } catch(Exception e){
73 | out.println("
Error: "+e.getMessage()+"
");
74 | } finally {
75 | try{if(rs!=null) rs.close();}catch(Exception e){}
76 | try{if(pst!=null) pst.close();}catch(Exception e){}
77 | try{if(conn!=null) conn.close();}catch(Exception e){}
78 | }
79 | %>
80 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/hotel_project/login.jsp:
--------------------------------------------------------------------------------
1 | <%@ page import="java.sql.*" %>
2 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
3 |
4 |
5 |
6 |
7 |
Login - Hotel Management System
8 |
55 |
56 |
57 |
58 |
59 |
Login
60 |
61 |
62 |
63 | Login
64 |
65 | <% if(request.getMethod().equalsIgnoreCase("POST")){ String username=request.getParameter("username");
66 | String password=request.getParameter("password"); Connection conn=null; PreparedStatement pst=null;
67 | ResultSet rs=null; try{ Class.forName("oracle.jdbc.driver.OracleDriver");
68 | conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","a12345");
69 | pst=conn.prepareStatement("SELECT * FROM Users WHERE username=? AND password=?"); pst.setString(1,
70 | username); pst.setString(2, password); rs=pst.executeQuery(); if(rs.next()){
71 | session.setAttribute("username", username); response.sendRedirect("myaccount.jsp"); }else{
72 | out.println("
Invalid username or password
");
73 | }
74 | }catch(Exception e){ out.println("
Error: "+e.getMessage()+"
"); }
75 | finally{ try{if(rs!=null) rs.close();}catch(Exception e){}
76 | try{if(pst!=null)pst.close();}catch(Exception e){} try{if(conn!=null)conn.close();}catch(Exception
77 | e){} }
78 | }
79 | %>
80 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/hotel_project/admin/editUser.jsp:
--------------------------------------------------------------------------------
1 | <%@ page import="java.sql.*" %>
2 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
3 |
4 |
5 |
6 |
Edit User - Admin
7 |
15 |
16 |
17 |
18 | <%
19 | String userIdStr = request.getParameter("id");
20 |
21 | if(userIdStr == null || userIdStr.trim().equals("")) {
22 | out.println("
No user selected. Go back
");
23 | } else {
24 |
25 | int userId = Integer.parseInt(userIdStr);
26 | Connection conn = null;
27 | PreparedStatement ps = null;
28 | ResultSet rs = null;
29 | String username = "", email = "", role = "";
30 |
31 | try {
32 | Class.forName("oracle.jdbc.driver.OracleDriver");
33 | conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","a12345");
34 |
35 | if("POST".equalsIgnoreCase(request.getMethod())) {
36 | // Update user
37 | String newUsername = request.getParameter("username");
38 | String newEmail = request.getParameter("email");
39 | String newRole = request.getParameter("user_role");
40 |
41 | ps = conn.prepareStatement("UPDATE Users SET username=?, email=?, user_role=? WHERE user_id=?");
42 | ps.setString(1, newUsername);
43 | ps.setString(2, newEmail);
44 | ps.setString(3, newRole);
45 | ps.setInt(4, userId);
46 |
47 | int updated = ps.executeUpdate();
48 | if(updated > 0) {
49 | out.println("
User updated successfully. Back to Manage Users
");
50 | } else {
51 | out.println("
Update failed. Back
");
52 | }
53 | } else {
54 | // Fetch user data
55 | ps = conn.prepareStatement("SELECT username, email, user_role FROM Users WHERE user_id=?");
56 | ps.setInt(1, userId);
57 | rs = ps.executeQuery();
58 |
59 | if(rs.next()) {
60 | username = rs.getString("username");
61 | email = rs.getString("email");
62 | role = rs.getString("user_role");
63 | } else {
64 | out.println("
User not found. Back
");
65 | }
66 | }
67 |
68 | } catch(Exception e) {
69 | out.println("
Error: "+e.getMessage()+"
");
70 | } finally {
71 | try { if(rs != null) rs.close(); } catch(Exception e) {}
72 | try { if(ps != null) ps.close(); } catch(Exception e) {}
73 | try { if(conn != null) conn.close(); } catch(Exception e) {}
74 | }
75 |
76 | // Only show form if user exists
77 | if(username != null && !username.equals("")) {
78 | %>
79 |
80 | Username:
81 |
82 |
83 | Email:
84 |
85 |
86 | Role:
87 |
88 | >Admin
89 | >User
90 |
91 |
92 | Update User
93 |
94 | <%
95 | } // end if username exists
96 | } // end else for userIdStr null check
97 | %>
98 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/hotel_project/searchresults.jsp:
--------------------------------------------------------------------------------
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
2 | <%@ page import="java.sql.*" %>
3 |
4 |
5 |
6 |
Search Results - Hotel Management System
7 |
26 |
27 |
28 |
29 |
30 | Hotel Management System
31 |
32 |
33 |
34 | Home
35 | Rooms
36 | Facilities
37 | About
38 | Contact
39 |
40 |
41 |
42 |
43 |
44 | Search
45 |
46 |
47 |
48 |
49 | <%
50 | String keyword = request.getParameter("keyword");
51 | if(keyword == null || keyword.trim().equals("")){
52 | out.println("
Please enter a keyword to search.
");
53 | } else {
54 | Connection conn = null;
55 | PreparedStatement ps = null;
56 | ResultSet rs = null;
57 | try{
58 | Class.forName("oracle.jdbc.driver.OracleDriver");
59 | conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","a12345");
60 |
61 | // Make sure column names match your database
62 | ps = conn.prepareStatement(
63 | "SELECT * FROM Rooms WHERE LOWER(room_name) LIKE ? OR LOWER(room_type) LIKE ?"
64 | );
65 | ps.setString(1, "%" + keyword.toLowerCase() + "%");
66 | ps.setString(2, "%" + keyword.toLowerCase() + "%");
67 |
68 | rs = ps.executeQuery();
69 |
70 | while(rs.next()){
71 | %>
72 |
73 |
" alt="<%=rs.getString("room_name")%>">
74 |
<%=rs.getString("room_name")%>
75 |
Type: <%=rs.getString("room_type")%>
76 |
Price: ₹<%=rs.getInt("price")%>
77 |
">View Details
78 |
79 | <%
80 | }
81 | } catch(Exception e){
82 | out.println("
Error: " + e.getMessage() + "
");
83 | } finally{
84 | try{if(rs!=null) rs.close();}catch(Exception e){}
85 | try{if(ps!=null) ps.close();}catch(Exception e){}
86 | try{if(conn!=null) conn.close();}catch(Exception e){}
87 | }
88 | }
89 | %>
90 |
91 |
92 |
95 |
96 |
97 |
98 |
--------------------------------------------------------------------------------
/hotel_project/facilities.jsp:
--------------------------------------------------------------------------------
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
2 |
3 |
4 |
5 |
Facilities - THA Hotel
6 |
7 |
59 |
60 |
61 |
62 |
65 |
66 |
67 | Home
68 | Rooms
69 | Facilities
70 | About
71 | Contact
72 |
73 |
74 |
75 |
Hotel Facilities
76 |
77 |
Free Wi-Fi in all rooms
78 |
Multi-cuisine Restaurant
79 |
Swimming Pool
80 |
Gym & Fitness Center
81 |
Free Parking
82 |
Spa and Wellness Center
83 |
24/7 Room Service
84 |
85 |
86 |
87 |
88 |
119 |
120 |
121 |
122 |
--------------------------------------------------------------------------------
/hotel_project/updateMyAccount.jsp:
--------------------------------------------------------------------------------
1 | <%@ page import="java.sql.*" %>
2 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
3 |
4 |
5 |
6 |
7 |
Update My Account - Hotel Management System
8 |
71 |
72 |
73 |
74 |
75 |
Update Account
76 |
77 | <%
78 | // Session check
79 | if(session == null || session.getAttribute("username") == null){
80 | response.sendRedirect("login.jsp");
81 | return;
82 | }
83 |
84 | String usernameSession = (String) session.getAttribute("username");
85 | String message = "";
86 | String error = "";
87 |
88 | String currentUsername = "";
89 | String currentEmail = "";
90 | String currentPassword = "";
91 |
92 | Connection conn = null;
93 | PreparedStatement pst = null;
94 | ResultSet rs = null;
95 |
96 | try {
97 | Class.forName("oracle.jdbc.driver.OracleDriver");
98 | conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","a12345");
99 |
100 | // Load current user info first
101 | pst = conn.prepareStatement("SELECT username, email, password FROM users WHERE username=?");
102 | pst.setString(1, usernameSession);
103 | rs = pst.executeQuery();
104 | if(rs.next()){
105 | currentUsername = rs.getString("username");
106 | currentEmail = rs.getString("email");
107 | currentPassword = rs.getString("password");
108 | }
109 | if(rs != null) { rs.close(); pst.close(); }
110 |
111 | // Form submit
112 | if(request.getMethod().equalsIgnoreCase("POST")){
113 | String username = request.getParameter("username");
114 | String email = request.getParameter("email");
115 | String password = request.getParameter("password");
116 |
117 | // Fix for ORA-01407: if password blank, keep old password
118 | if(password == null || password.trim().isEmpty()){
119 | password = currentPassword;
120 | }
121 |
122 | pst = conn.prepareStatement("UPDATE users SET username=?, email=?, password=? WHERE username=?");
123 | pst.setString(1, username);
124 | pst.setString(2, email);
125 | pst.setString(3, password);
126 | pst.setString(4, usernameSession);
127 |
128 | int rows = pst.executeUpdate();
129 | if(rows > 0){
130 | message = "Account updated successfully!";
131 | session.setAttribute("username", username); // update session
132 | currentUsername = username;
133 | currentEmail = email;
134 | currentPassword = password;
135 | } else {
136 | error = "Update failed!";
137 | }
138 | }
139 |
140 | } catch(Exception e){
141 | error = "Error: " + e.getMessage();
142 | } finally {
143 | try { if(rs != null) rs.close(); } catch(Exception e){}
144 | try { if(pst != null) pst.close(); } catch(Exception e){}
145 | try { if(conn != null) conn.close(); } catch(Exception e){}
146 | }
147 | %>
148 |
149 |
<%= message %>
150 |
<%= error %>
151 |
152 |
153 |
154 |
155 |
156 | Update
157 |
158 |
159 |
Logout
160 |
161 |
162 |
163 |
164 |
--------------------------------------------------------------------------------
/hotel_project/index.jsp:
--------------------------------------------------------------------------------
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
2 | <%@ page import="java.sql.*" %>
3 |
4 |
5 |
6 |
THA Hotel - Home
7 |
8 |
61 |
62 |
63 |
64 |
76 |
77 |
78 | <%
79 | Connection conn = null;
80 | Statement stmt = null;
81 | ResultSet rs = null;
82 | try {
83 | Class.forName("oracle.jdbc.driver.OracleDriver");
84 | conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","a12345");
85 | stmt = conn.createStatement();
86 |
87 | rs = stmt.executeQuery("SELECT * FROM Rooms ORDER BY room_id");
88 | while(rs.next()){
89 | %>
90 |
91 |
" alt="<%= rs.getString("room_name") %>">
92 |
<%= rs.getString("room_name") %>
93 |
Type: <%= rs.getString("room_type") %>
94 |
Price: ₹<%= rs.getInt("price") %>
95 |
">View Details
96 |
97 | <%
98 | }
99 | } catch(Exception e){
100 | out.println("
Error: "+e.getMessage()+"
");
101 | } finally {
102 | try{ if(rs!=null) rs.close(); } catch(Exception e){}
103 | try{ if(stmt!=null) stmt.close(); } catch(Exception e){}
104 | try{ if(conn!=null) conn.close(); } catch(Exception e){}
105 | }
106 | %>
107 |
108 |
109 |
115 |
116 |
147 |
148 |
149 |
150 |
--------------------------------------------------------------------------------
/hotel_project/about.jsp:
--------------------------------------------------------------------------------
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
2 |
3 |
4 |
5 |
About Us - THA Hotel
6 |
7 |
134 |
135 |
136 |
137 |
138 | About THA Hotel
139 |
140 |
141 |
142 | Home
143 | Rooms
144 | Facilities
145 | About
146 | Contact
147 |
148 |
149 |
150 |
151 |
Our Story
152 |
Welcome to THA Hotel, your premier destination for luxury stays and exceptional hospitality. We offer a wide range of services to ensure a comfortable and memorable experience for all our guests.
153 |
Our goal is to make your stay enjoyable, convenient, and unforgettable. From modern amenities to personalized services, our hotel strives to meet all your needs, whether you are traveling for business or leisure.
154 |
Book with us today and experience excellence in every aspect of your stay at our Mohakhali location in Dhaka.
155 |
156 |
157 |
158 |
159 |
Our Location
160 |
166 |
167 |
168 |
169 |
200 |
201 |
202 |
203 |
--------------------------------------------------------------------------------
/hotel_project/rooms.jsp:
--------------------------------------------------------------------------------
1 | <%@ page import="java.sql.*" %>
2 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
3 |
4 |
5 |
6 |
Rooms - Hotel Management System
7 |
8 |
9 |
135 |
136 |
137 |
149 |
150 |
Available Rooms
151 |
152 | <%
153 | Connection conn = null;
154 | Statement stmt = null;
155 | ResultSet rs = null;
156 | try {
157 | Class.forName("oracle.jdbc.driver.OracleDriver");
158 | conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","a12345");
159 | stmt = conn.createStatement();
160 |
161 | rs = stmt.executeQuery("SELECT * FROM Rooms ORDER BY room_id");
162 | while(rs.next()){
163 | %>
164 |
165 |
" alt="<%=rs.getString("room_name")%>">
166 |
<%=rs.getString("room_name")%>
167 |
Type: <%=rs.getString("room_type")%>
168 |
Price: ₹<%=rs.getInt("price")%>
169 |
<%=rs.getString("description")%>
170 |
">View Details
171 |
172 | <%
173 | }
174 | } catch(Exception e) {
175 | out.println("
Error: "+e.getMessage()+"
");
176 | } finally {
177 | try{ if(rs!=null) rs.close(); } catch(Exception e){}
178 | try{ if(stmt!=null) stmt.close(); } catch(Exception e){}
179 | try{ if(conn!=null) conn.close(); } catch(Exception e){}
180 | }
181 | %>
182 |
183 |
184 |
185 |
186 |
216 |
217 |
218 |
--------------------------------------------------------------------------------
/hotel_project/pic.txt:
--------------------------------------------------------------------------------
1 | সেই ছবি গুলোকে room1.jpg, room2.jpg, room3.jpg, room4.jpg, room5.jpg, room6.jpg নামে rename করে রাখবে।
2 |
3 | Logo এর জন্য একটি PNG ছবি ডাউনলোড করে logo.png নামে রাখবে।
4 |
5 |
6 |
7 | Email / Username = admin@hotel.com
8 |
9 | Password = admin123
10 |
11 | Role = admin
12 |
13 |
14 |
15 | 🛠 Step 2: তোমার নিজের User বানাও (Optional, একবার করলে হবে)
16 |
17 | যদি আলাদা user বানাতে চাও (যেমন hotel):
18 |
19 | CREATE USER hotel IDENTIFIED BY hotel123;
20 | GRANT CONNECT, RESOURCE TO hotel;
21 |
22 |
23 |
24 |
25 |
26 | SQL*Plus: Release 21.0.0.0.0 - Production on Mon Sep 15 03:20:10 2025
27 | Version 21.3.0.0.0
28 |
29 | Copyright (c) 1982, 2021, Oracle. All rights reserved.
30 |
31 | Enter user-name: system
32 | Enter password:
33 | Last Successful login time: Mon Sep 15 2025 02:09:59 +06:00
34 |
35 | Connected to:
36 | Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
37 | Version 21.3.0.0.0
38 |
39 |
40 |
41 |
42 | SQL> CREATE TABLE Rooms(
43 | 2 room_id NUMBER PRIMARY KEY,
44 | 3 room_name VARCHAR2(50),
45 | 4 room_type VARCHAR2(50),
46 | 5 price NUMBER(10,2),
47 | 6 image VARCHAR2(100),
48 | 7 description VARCHAR2(500)
49 | 8 );
50 |
51 | Table created.
52 |
53 | SQL>
54 | SQL> CREATE TABLE Users(
55 | 2 user_id NUMBER PRIMARY KEY,
56 | 3 username VARCHAR2(50) UNIQUE NOT NULL,
57 | 4 password VARCHAR2(50) NOT NULL,
58 | 5 full_name VARCHAR2(100),
59 | 6 email VARCHAR2(100),
60 | 7 phone VARCHAR2(20)
61 | 8 );
62 |
63 | Table created.
64 |
65 | SQL>
66 | SQL> CREATE TABLE Bookings(
67 | 2 booking_id NUMBER PRIMARY KEY,
68 | 3 user_id NUMBER REFERENCES Users(user_id),
69 | 4 room_id NUMBER REFERENCES Rooms(room_id),
70 | 5 check_in DATE,
71 | 6 check_out DATE,
72 | 7 total_amount NUMBER(10,2)
73 | 8 );
74 |
75 | Table created.
76 |
77 | SQL>
78 | SQL> CREATE TABLE Reviews(
79 | 2 review_id NUMBER PRIMARY KEY,
80 | 3 user_id NUMBER REFERENCES Users(user_id),
81 | 4 room_id NUMBER REFERENCES Rooms(room_id),
82 | 5 rating NUMBER(1),
83 | 6 review_comment VARCHAR2(500),
84 | 7 review_date DATE DEFAULT SYSDATE
85 | 8 );
86 |
87 | Table created.
88 |
89 | SQL>
90 | SQL> CREATE TABLE Contact(
91 | 2 contact_id NUMBER PRIMARY KEY,
92 | 3 name VARCHAR2(100),
93 | 4 email VARCHAR2(100),
94 | 5 subject VARCHAR2(200),
95 | 6 message VARCHAR2(1000),
96 | 7 contact_date DATE DEFAULT SYSDATE
97 | 8 );
98 |
99 | Table created.
100 |
101 | SQL>
102 | SQL> CREATE TABLE Admins(
103 | 2 admin_id NUMBER PRIMARY KEY,
104 | 3 username VARCHAR2(50) UNIQUE NOT NULL,
105 | 4 password VARCHAR2(50) NOT NULL,
106 | 5 full_name VARCHAR2(100)
107 | 6 );
108 |
109 | Table created.
110 |
111 | SQL>
112 | SQL> -- =========================
113 | SQL> -- CREATE SEQUENCES
114 | SQL> -- =========================
115 | SQL> CREATE SEQUENCE rooms_seq START WITH 7 INCREMENT BY 1;
116 |
117 | Sequence created.
118 |
119 | SQL> CREATE SEQUENCE users_seq START WITH 3 INCREMENT BY 1;
120 |
121 | Sequence created.
122 |
123 | SQL> CREATE SEQUENCE bookings_seq START WITH 3 INCREMENT BY 1;
124 |
125 | Sequence created.
126 |
127 | SQL> CREATE SEQUENCE reviews_seq START WITH 3 INCREMENT BY 1;
128 |
129 | Sequence created.
130 |
131 | SQL> CREATE SEQUENCE contact_seq START WITH 3 INCREMENT BY 1;
132 |
133 | Sequence created.
134 |
135 | SQL> CREATE SEQUENCE admins_seq START WITH 2 INCREMENT BY 1;
136 |
137 | Sequence created.
138 |
139 | SQL>
140 | SQL> -- =========================
141 | SQL> -- INSERT DATA
142 | SQL> -- =========================
143 | SQL>
144 | SQL> -- Rooms
145 | SQL> INSERT INTO Rooms VALUES(1,'Deluxe Room','Deluxe',5000,'room1.jpg','Spacious deluxe room');
146 |
147 | 1 row created.
148 |
149 | SQL> INSERT INTO Rooms VALUES(2,'Luxury Room','Luxury',7000,'room2.jpg','Luxury amenities room');
150 |
151 | 1 row created.
152 |
153 | SQL> INSERT INTO Rooms VALUES(3,'Suite','Suite',10000,'room3.jpg','Suite with sea view');
154 |
155 | 1 row created.
156 |
157 | SQL> INSERT INTO Rooms VALUES(4,'Family Room','Family',6000,'room4.jpg','Perfect for families with children');
158 |
159 | 1 row created.
160 |
161 | SQL> INSERT INTO Rooms VALUES(5,'Single Room','Single',3000,'room5.jpg','Cozy single room for solo travelers');
162 |
163 | 1 row created.
164 |
165 | SQL> INSERT INTO Rooms VALUES(6,'Presidential Suite','Luxury',15000,'room6.jpg','Top-notch luxury with all amenities');
166 |
167 | 1 row created.
168 |
169 | SQL>
170 | SQL> -- Users
171 | SQL> INSERT INTO Users VALUES(1,'john_doe','password123','John Doe','john@example.com','017XXXXXXXX');
172 |
173 | 1 row created.
174 |
175 | SQL> INSERT INTO Users VALUES(2,'jane_smith','mypassword','Jane Smith','jane@example.com','018XXXXXXXX');
176 |
177 | 1 row created.
178 |
179 | SQL>
180 | SQL> -- Bookings
181 | SQL> INSERT INTO Bookings VALUES(1,1,2,TO_DATE('2025-09-20','YYYY-MM-DD'),TO_DATE('2025-09-22','YYYY-MM-DD'),14000);
182 |
183 | 1 row created.
184 |
185 | SQL> INSERT INTO Bookings VALUES(2,2,1,TO_DATE('2025-10-01','YYYY-MM-DD'),TO_DATE('2025-10-05','YYYY-MM-DD'),20000);
186 |
187 | 1 row created.
188 |
189 | SQL>
190 | SQL> -- Reviews
191 | SQL> INSERT INTO Reviews VALUES(1,1,2,5,'Amazing room and service!',SYSDATE);
192 |
193 | 1 row created.
194 |
195 | SQL> INSERT INTO Reviews VALUES(2,2,1,4,'Very comfortable stay.',SYSDATE);
196 |
197 | 1 row created.
198 |
199 | SQL>
200 | SQL> -- Contact
201 | SQL> INSERT INTO Contact VALUES(1,'Alice','alice@example.com','Booking Inquiry','I want to know room availability.',SYSDATE);
202 |
203 | 1 row created.
204 |
205 | SQL> INSERT INTO Contact VALUES(2,'Bob','bob@example.com','General Question','Do you have parking facility?',SYSDATE);
206 |
207 | 1 row created.
208 |
209 | SQL>
210 | SQL> -- Admins
211 | SQL> INSERT INTO Admins VALUES(1,'admin','admin123','Super Admin');
212 |
213 | 1 row created.
214 |
215 | SQL>
216 | SQL> COMMIT;
217 |
218 | Commit complete.
219 |
220 | SQL>
221 | SQL> -- =========================
222 | SQL> -- OPTIONAL: NEW INSERTS USING SEQUENCES
223 | SQL> -- =========================
224 | SQL>
225 | SQL> -- Rooms
226 | SQL> INSERT INTO Rooms (room_id, room_name, room_type, price, image, description)
227 | 2 VALUES (rooms_seq.nextval, 'Executive Room', 'Executive', 8000, 'room7.jpg', 'Stylish and comfortable');
228 |
229 | 1 row created.
230 |
231 | SQL>
232 | SQL> -- Users
233 | SQL> INSERT INTO Users (user_id, username, password, full_name, email, phone)
234 | 2 VALUES (users_seq.nextval, 'alice_w', 'alice123', 'Alice Wonderland', 'alice@example.com', '019XXXXXXXX');
235 |
236 | 1 row created.
237 |
238 | SQL>
239 | SQL> -- Bookings
240 | SQL> INSERT INTO Bookings (booking_id, user_id, room_id, check_in, check_out, total_amount)
241 | 2 VALUES (bookings_seq.nextval, 3, 4, TO_DATE('2025-12-01','YYYY-MM-DD'), TO_DATE('2025-12-05','YYYY-MM-DD'), 24000);
242 |
243 | 1 row created.
244 |
245 | SQL>
246 | SQL> -- Reviews
247 | SQL> INSERT INTO Reviews (review_id, user_id, room_id, rating, review_comment)
248 | 2 VALUES (reviews_seq.nextval, 3, 4, 5, 'Excellent stay with amazing facilities!');
249 |
250 | 1 row created.
251 |
252 | SQL>
253 | SQL> -- Contact
254 | SQL> INSERT INTO Contact (contact_id, name, email, subject, message)
255 | 2 VALUES (contact_seq.nextval, 'Charlie', 'charlie@example.com', 'Feedback', 'Great service and rooms!');
256 |
257 | 1 row created.
258 |
259 | SQL>
260 | SQL> -- Admins
261 | SQL> INSERT INTO Admins (admin_id, username, password, full_name)
262 | 2 VALUES (admins_seq.nextval, 'admin2', 'admin456', 'Second Admin');
263 |
264 | 1 row created.
265 |
266 | SQL>
267 | SQL> COMMIT;
268 |
269 | Commit complete.
270 |
271 | SQL> ALTER TABLE Users
272 | 2 ADD user_role VARCHAR2(20) DEFAULT 'user';
273 |
274 | Table altered.
275 |
276 | SQL>
277 | SQL> COMMIT;
278 |
279 | Commit complete.
280 | INSERT INTO Reviews(review_id, user_id, room_id, rating, review_comment)
281 | VALUES(1, 1, 2, 5, 'Amazing room and service!');
282 |
283 | INSERT INTO Reviews(review_id, user_id, room_id, rating, review_comment)
284 | VALUES(2, 2, 1, 4, 'Very comfortable stay.');
285 |
286 | COMMIT;
287 |
--------------------------------------------------------------------------------