酒店会员系统生日专属优惠实战:JSP技术实现
随着互联网技术的飞速发展,酒店行业也逐步迈向数字化、智能化。为了提高客户满意度和忠诚度,许多酒店开始推出会员系统,通过积分、优惠券等方式吸引和留住客户。本文将围绕酒店会员系统中的生日专属优惠功能,使用JSP技术进行实战开发,实现一个简单的生日优惠系统。
系统需求分析
在开发酒店会员系统生日专属优惠功能之前,我们需要明确以下需求:
1. 会员信息管理:包括会员注册、登录、信息修改等功能。
2. 生日提醒:系统自动识别会员生日,发送生日祝福和专属优惠。
3. 优惠发放:会员在生日当天可以领取专属优惠券。
4. 优惠券使用:会员在消费时可以使用优惠券抵扣部分金额。
技术选型
为了实现上述需求,我们选择以下技术栈:
- 前端:HTML、CSS、JavaScript
- 后端:Java、JSP、Servlet
- 数据库:MySQL
系统设计
数据库设计
我们需要设计数据库表结构。以下是主要表的设计:
1. 会员表(members):存储会员基本信息。
- id:主键,自增
- username:用户名
- password:密码
- phone:手机号
- birthday:生日
2. 优惠券表(coupons):存储优惠券信息。
- id:主键,自增
- member_id:会员ID,外键
- coupon_code:优惠券代码
- discount:折扣金额
- valid_date:有效期
功能模块设计
1. 会员管理模块:包括会员注册、登录、信息修改等功能。
2. 生日提醒模块:系统自动识别会员生日,发送生日祝福和专属优惠。
3. 优惠券发放模块:会员在生日当天可以领取专属优惠券。
4. 优惠券使用模块:会员在消费时可以使用优惠券抵扣部分金额。
JSP代码实现
1. 会员注册页面(register.jsp)
jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>会员注册</title>
</head>
<body>
<form action="RegisterServlet" method="post">
用户名:<input type="text" name="username" required><br>
密码:<input type="password" name="password" required><br>
手机号:<input type="text" name="phone" required><br>
生日:<input type="date" name="birthday" required><br>
<input type="submit" value="注册">
</form>
</body>
</html>
2. 会员登录页面(login.jsp)
jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>会员登录</title>
</head>
<body>
<form action="LoginServlet" method="post">
用户名:<input type="text" name="username" required><br>
密码:<input type="password" name="password" required><br>
<input type="submit" value="登录">
</form>
</body>
</html>
3. 生日提醒页面(birthdayReminder.jsp)
jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql." %>
<html>
<head>
<title>生日提醒</title>
</head>
<body>
<%
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hotel", "root", "password");
String sql = "SELECT FROM members WHERE MONTH(birthday) = MONTH(CURDATE()) AND DAY(birthday) = DAY(CURDATE())";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
String username = rs.getString("username");
out.println("亲爱的 " + username + ",祝您生日快乐!请查收您的专属优惠券。");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
%>
</body>
</html>
4. 优惠券发放页面(coupon.jsp)
jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql." %>
<html>
<head>
<title>优惠券发放</title>
</head>
<body>
<%
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hotel", "root", "password");
String sql = "SELECT FROM members WHERE id = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, Integer.parseInt(request.getParameter("member_id")));
rs = pstmt.executeQuery();
if (rs.next()) {
String username = rs.getString("username");
String coupon_code = "COUPON_" + UUID.randomUUID().toString().replaceAll("-", "");
String sql2 = "INSERT INTO coupons (member_id, coupon_code, discount, valid_date) VALUES (?, ?, ?, CURDATE() + INTERVAL 1 YEAR)";
pstmt = conn.prepareStatement(sql2);
pstmt.setInt(1, rs.getInt("id"));
pstmt.setString(2, coupon_code);
pstmt.setDouble(3, 100.0); // 假设优惠券为100元
pstmt.executeUpdate();
out.println(username + ",您的专属优惠券已发放,优惠券代码为:" + coupon_code);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
%>
</body>
</html>
5. 优惠券使用页面(useCoupon.jsp)
jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql." %>
<html>
<head>
<title>优惠券使用</title>
</head>
<body>
<%
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hotel", "root", "password");
String sql = "SELECT FROM coupons WHERE coupon_code = ? AND valid_date > CURDATE()";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, request.getParameter("coupon_code"));
rs = pstmt.executeQuery();
if (rs.next()) {
double discount = rs.getDouble("discount");
out.println("恭喜您,使用优惠券成功!已为您减免 " + discount + " 元。");
} else {
out.println("优惠券无效或已过期。");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
%>
</body>
</html>
总结
本文通过JSP技术实现了酒店会员系统生日专属优惠功能。在实际开发过程中,我们还需要考虑安全性、性能优化、用户体验等方面。希望本文能对您在酒店会员系统开发过程中有所帮助。
Comments NOTHING