jsp 语言 酒店会员系统生日专属优惠实战

JSP阿木 发布于 26 天前 5 次阅读


酒店会员系统生日专属优惠实战: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技术实现了酒店会员系统生日专属优惠功能。在实际开发过程中,我们还需要考虑安全性、性能优化、用户体验等方面。希望本文能对您在酒店会员系统开发过程中有所帮助。