💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目
@TOC
基于SpringBoot的健身房管理系统介绍
基于SpringBoot的健身房管理系统是一个采用现代化技术栈开发的综合性健身房信息管理平台,该系统运用SpringBoot框架作为后端核心架构,结合SpringMVC和Mybatis实现数据持久化操作,前端采用Vue.js框架配合ElementUI组件库构建用户界面,数据存储采用MySQL关系型数据库,整体采用B/S架构模式进行设计开发。系统功能涵盖了健身房日常运营管理的各个核心环节,包括系统首页展示、用户信息管理、健身教练资源管理、教练类型分类、健身课程设置、课程预约与取消预约功能、会员卡管理、会员卡订单处理、教练评价系统、个性化健身计划制定、系统后台管理、新闻资讯发布、轮播图管理、系统日志记录、AI智能咨询服务、新闻资讯分类管理、个人中心、密码修改以及个人信息维护等20余个功能模块。该系统通过合理的功能模块划分和直观的用户界面设计,实现了健身房会员、教练、管理员等不同角色的业务需求,为健身房提供了从会员管理、课程安排、教练调度到财务统计的一站式数字化解决方案,有效提升了健身房的运营效率和服务质量,同时借助AI咨询功能为用户提供智能化的健身指导建议,体现了传统健身房管理与现代信息技术深度融合的创新实践。
基于SpringBoot的健身房管理系统演示视频
基于SpringBoot的健身房管理系统演示图片
基于SpringBoot的健身房管理系统代码展示
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.time.LocalDateTime;
@RestController
@RequestMapping("/fitness")
public class FitnessController {
@Autowired
private SparkSession sparkSession = SparkSession.builder().appName("FitnessAnalysis").master("local[*]").getOrCreate();
@PostMapping("/courseBooking")
public Map<String, Object> courseBooking(@RequestBody Map<String, Object> bookingData) {
Map<String, Object> result = new HashMap<>();
Integer userId = (Integer) bookingData.get("userId");
Integer courseId = (Integer) bookingData.get("courseId");
LocalDateTime bookingTime = LocalDateTime.now();
String sql = "SELECT COUNT(*) as current_count, max_capacity FROM fitness_course WHERE course_id = " + courseId;
List<Map<String, Object>> courseInfo = jdbcTemplate.queryForList(sql);
if (courseInfo.isEmpty()) {
result.put("success", false);
result.put("message", "课程不存在");
return result;
}
Integer currentCount = (Integer) courseInfo.get(0).get("current_count");
Integer maxCapacity = (Integer) courseInfo.get(0).get("max_capacity");
if (currentCount >= maxCapacity) {
result.put("success", false);
result.put("message", "课程已满,无法预约");
return result;
}
String checkBookingSql = "SELECT COUNT(*) FROM course_booking WHERE user_id = " + userId + " AND course_id = " + courseId + " AND status = 1";
Integer existingBooking = jdbcTemplate.queryForObject(checkBookingSql, Integer.class);
if (existingBooking > 0) {
result.put("success", false);
result.put("message", "您已预约过该课程");
return result;
}
String insertBookingSql = "INSERT INTO course_booking (user_id, course_id, booking_time, status, create_time) VALUES (?, ?, ?, 1, ?)";
jdbcTemplate.update(insertBookingSql, userId, courseId, bookingTime, bookingTime);
String updateCourseSql = "UPDATE fitness_course SET current_count = current_count + 1 WHERE course_id = ?";
jdbcTemplate.update(updateCourseSql, courseId);
Dataset<Row> bookingAnalysis = sparkSession.sql("SELECT course_id, COUNT(*) as booking_count FROM course_booking WHERE DATE(booking_time) = CURRENT_DATE GROUP BY course_id ORDER BY booking_count DESC");
bookingAnalysis.cache();
result.put("success", true);
result.put("message", "预约成功");
result.put("bookingId", getLastInsertId());
return result;
}
@PostMapping("/memberCardOrder")
public Map<String, Object> createMemberCardOrder(@RequestBody Map<String, Object> orderData) {
Map<String, Object> result = new HashMap<>();
Integer userId = (Integer) orderData.get("userId");
Integer cardId = (Integer) orderData.get("cardId");
String paymentMethod = (String) orderData.get("paymentMethod");
LocalDateTime orderTime = LocalDateTime.now();
String orderNo = "ORDER" + System.currentTimeMillis() + userId;
String cardSql = "SELECT card_name, card_price, valid_days FROM member_card WHERE card_id = " + cardId;
List<Map<String, Object>> cardInfo = jdbcTemplate.queryForList(cardSql);
if (cardInfo.isEmpty()) {
result.put("success", false);
result.put("message", "会员卡类型不存在");
return result;
}
String cardName = (String) cardInfo.get(0).get("card_name");
Double cardPrice = (Double) cardInfo.get(0).get("card_price");
Integer validDays = (Integer) cardInfo.get(0).get("valid_days");
String checkActiveSql = "SELECT COUNT(*) FROM member_card_order WHERE user_id = " + userId + " AND order_status = 'ACTIVE'";
Integer activeCardCount = jdbcTemplate.queryForObject(checkActiveSql, Integer.class);
if (activeCardCount > 0) {
result.put("success", false);
result.put("message", "您已有有效会员卡,请先使用完毕");
return result;
}
String insertOrderSql = "INSERT INTO member_card_order (order_no, user_id, card_id, card_name, card_price, valid_days, payment_method, order_status, order_time, create_time) VALUES (?, ?, ?, ?, ?, ?, ?, 'PAID', ?, ?)";
jdbcTemplate.update(insertOrderSql, orderNo, userId, cardId, cardName, cardPrice, validDays, paymentMethod, orderTime, orderTime);
LocalDateTime startDate = orderTime;
LocalDateTime endDate = startDate.plusDays(validDays);
String insertMemberSql = "INSERT INTO user_membership (user_id, card_id, start_date, end_date, remaining_days, status, create_time) VALUES (?, ?, ?, ?, ?, 'ACTIVE', ?)";
jdbcTemplate.update(insertMemberSql, userId, cardId, startDate, endDate, validDays, orderTime);
Dataset<Row> orderAnalysis = sparkSession.sql("SELECT card_id, COUNT(*) as order_count, SUM(card_price) as total_revenue FROM member_card_order WHERE DATE(order_time) >= DATE_SUB(CURRENT_DATE, 30) GROUP BY card_id");
orderAnalysis.show();
String updateCardSql = "UPDATE member_card SET sold_count = sold_count + 1 WHERE card_id = ?";
jdbcTemplate.update(updateCardSql, cardId);
result.put("success", true);
result.put("message", "会员卡购买成功");
result.put("orderNo", orderNo);
result.put("validUntil", endDate.toString());
return result;
}
@PostMapping("/coachEvaluation")
public Map<String, Object> submitCoachEvaluation(@RequestBody Map<String, Object> evaluationData) {
Map<String, Object> result = new HashMap<>();
Integer userId = (Integer) evaluationData.get("userId");
Integer coachId = (Integer) evaluationData.get("coachId");
Integer rating = (Integer) evaluationData.get("rating");
String comment = (String) evaluationData.get("comment");
String serviceType = (String) evaluationData.get("serviceType");
LocalDateTime evaluationTime = LocalDateTime.now();
if (rating < 1 || rating > 5) {
result.put("success", false);
result.put("message", "评分必须在1-5分之间");
return result;
}
String checkCoachSql = "SELECT coach_name, coach_level FROM fitness_coach WHERE coach_id = " + coachId;
List<Map<String, Object>> coachInfo = jdbcTemplate.queryForList(checkCoachSql);
if (coachInfo.isEmpty()) {
result.put("success", false);
result.put("message", "教练不存在");
return result;
}
String checkEvaluationSql = "SELECT COUNT(*) FROM coach_evaluation WHERE user_id = " + userId + " AND coach_id = " + coachId + " AND DATE(evaluation_time) = CURRENT_DATE";
Integer todayEvaluationCount = jdbcTemplate.queryForObject(checkEvaluationSql, Integer.class);
if (todayEvaluationCount > 0) {
result.put("success", false);
result.put("message", "今日已评价过该教练");
return result;
}
String insertEvaluationSql = "INSERT INTO coach_evaluation (user_id, coach_id, rating, comment, service_type, evaluation_time, create_time) VALUES (?, ?, ?, ?, ?, ?, ?)";
jdbcTemplate.update(insertEvaluationSql, userId, coachId, rating, comment, serviceType, evaluationTime, evaluationTime);
String updateRatingSql = "UPDATE fitness_coach SET total_rating = total_rating + ?, evaluation_count = evaluation_count + 1 WHERE coach_id = ?";
jdbcTemplate.update(updateRatingSql, rating, coachId);
String avgRatingSql = "UPDATE fitness_coach SET avg_rating = total_rating / evaluation_count WHERE coach_id = ?";
jdbcTemplate.update(avgRatingSql, coachId);
Dataset<Row> coachAnalysis = sparkSession.sql("SELECT coach_id, AVG(rating) as avg_rating, COUNT(*) as total_evaluations FROM coach_evaluation WHERE evaluation_time >= DATE_SUB(CURRENT_DATE, 90) GROUP BY coach_id HAVING COUNT(*) >= 5 ORDER BY avg_rating DESC");
coachAnalysis.createOrReplaceTempView("coach_performance");
Dataset<Row> topCoaches = sparkSession.sql("SELECT * FROM coach_performance WHERE avg_rating >= 4.0 LIMIT 10");
topCoaches.cache();
if (rating >= 4) {
String bonusPointsSql = "UPDATE fitness_coach SET bonus_points = bonus_points + 10 WHERE coach_id = ?";
jdbcTemplate.update(bonusPointsSql, coachId);
}
result.put("success", true);
result.put("message", "评价提交成功");
result.put("evaluationId", getLastInsertId());
return result;
}
}
基于SpringBoot的健身房管理系统文档展示
💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目