Background of the project
With the rapid development of science and technology, all walks of life are striving to integrate with modern advanced technology and improve their own advantages through scientific and technological means; of course, the gym information management system cannot be excluded. As network technology continues to mature, it has led to the development of gyms. The information management system has completely changed the traditional management methods in the past, not only making service management easier, but also improving the flexibility of management. This personalized platform pays special attention to the mutual cooperation of interaction coordination and management, which stimulates the creativity and initiative of managers, which is very beneficial to the gym information management system.
The database used in this system is Mysql, which is developed using the SSM framework. The operating environment uses the Tomcat server. ECLIPSE
is the development platform of this system. During the design process, the system code was fully guaranteed to have good readability, practicality, easy scalability, versatility, easy later maintenance, easy operation, and simple page.
Keywords: gym information management system Mysql database SSM framework
feature design
Function module diagram
Admin use case
After logging in, the administrator can perform homepage, personal center, user management, coach management, membership card management, membership purchase management, course type management, course information management, course purchase management, venue information management, venue reservation management, and system management.
User use cases
After registering and logging in, users can conduct homepage, personal center, membership purchase management, course purchase management, and venue reservation management.
System structure diagram
Function screenshot
user module
The user clicks to enter the system operation interface, and can access the homepage, personal center, purchase membership management, course purchase management, venue reservation management and other functional modules. Purchase membership management: through the list, you can
obtain the number, name, card type, price, validity time, User name, name, mobile phone, whether to pay and other information and details, delete operation
venue reservation management: through the list, you can obtain the gym name, work number, hourly price, number of people, reservation content, reservation time, user name, name, mobile phone, whether Payment, review reply, review status and other information, perform detailed and delete operations
Administrator function module
After the administrator successfully logs in, he will enter the system operation interface and can manage the homepage, personal center, user management, coach management, membership card management, membership purchase management, course type management, course information management, course purchase management, venue information management, and venue reservation. Management, system management and other functional modules perform corresponding operations.
User management: User name, name, gender, avatar, age, ID card, mobile phone and other contents can be obtained through the list, and modification or deletion operations can be performed. Membership card
management: Number, name, picture, card type, price, etc. can be obtained through the list. Validity time and other information can be detailed, deleted or modified.
Purchase membership management: through the list, you can obtain information such as number, name, card type, price, valid time, user name, name, mobile phone, whether to pay or not, and perform detailed, modified or deleted information. Operation
Course type management: Through the list, you can obtain information such as course type, modify or delete the operation.
Course information management: Through the list, the administrator can obtain the course name, course type, pictures, course videos, class duration, employee number, release time, and coach. Name and other information can be used for details, modification or deletion.
Venue information management: the administrator can obtain the gym name, venue pictures, opening hours, employee number, coach name, hourly price, number of people, location, whether there is a swimming pool, and whether it is a chain through the list and other information, perform operations such as details, modification or deletion.
Venue reservation management: the administrator can obtain the gym name, work number, hourly price, number of people, reservation content, reservation time, user name, name, mobile phone, payment or not, and review reply through the list. , review status and other information to perform details, modification or deletion operations
Coaching function module
The coach clicks to enter the system operation interface, and can access the home page, personal center, course information management, course purchase management, venue information management, venue reservation management and other functional modules. Course information management: through the list, you can obtain the course name, course type, pictures
, Course video, class duration, employee ID, release time, coach name and other information and perform detailed, modified, and deletion operations.
Venue information management: through the list, you can obtain the gym name, venue pictures, opening hours, employee ID, coach name, hourly price, Information about the number of people, location, whether there is a swimming pool, whether it is a chain, etc., can be viewed in detail.
Venue reservation management: Through the list, you can obtain the gym name, employee number, hourly price, number of people, reservation content, reservation time, user name, name, mobile phone, whether Payment, review reply, review status, review and other information, perform detailed and delete operations
Front page function module
Gym information management system, you can view the homepage, membership card, course information, venue information, personal center, backend management and other content on the system homepage. User
registration, user login, you can fill in the user name, password, name, age, ID card on the registration page. , mobile phone and other details to register and log in to
the personal center. On the personal center page, fill in the user name, password, name, gender, avatar, age, ID card, mobile phone and other information to update the information. Log out and check the number on the membership card page
. , name, card type, price, validity time and other information for purchase operations.
Related code
Database configuration
# Tomcat
server:
tomcat:
uri-encoding: UTF-8
port: 8080
servlet:
context-path: /springbootg4y26
spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/springbootg4y26?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8
username: root
password: 123456
# driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=springbootg4y26
# username: sa
# password: 123456
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
resources:
static-locations: classpath:static/,file:static/
#mybatis
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.entity
global-config:
#主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
id-type: 1
#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
field-strategy: 2
#驼峰下划线转换
db-column-underline: true
#刷新mapper 调试神器
refresh-mapper: true
#逻辑删除配置
logic-delete-value: -1
logic-not-delete-value: 0
#自定义SQL注入器
sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
call-setters-on-nulls: true
#springboot 项目mybatis plus 设置 jdbcTypeForNull (oracle数据库需配置JdbcType.NULL, 默认是Other)
jdbc-type-for-null: 'null'
Controller
package com.controller;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
return R.error("用户名已存在。");
}
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
Business layer (Service)
package com.service;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.service.IService;
import com.entity.UserEntity;
import com.utils.PageUtils;
/**
* 系统用户
*/
public interface UserService extends IService<UserEntity> {
PageUtils queryPage(Map<String, Object> params);
List<UserEntity> selectListView(Wrapper<UserEntity> wrapper);
PageUtils queryPage(Map<String, Object> params,Wrapper<UserEntity> wrapper);
}
Data access layer (Dao)
package com.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.entity.UserEntity;
/**
* 用户
*/
public interface UserDao extends BaseMapper<UserEntity> {
List<UserEntity> selectListView(@Param("ew") Wrapper<UserEntity> wrapper);
List<UserEntity> selectListView(Pagination page,@Param("ew") Wrapper<UserEntity> wrapper);
}