网吧会员管理系统(附源码)

目录

一.数据库表设计

1、管理员表

2、使用记录表

3、交易记录表

4、会员卡表

5、客户表

6、电脑表

二.页面展示

1、首页

2、管理员管理页面

3、顾客信息页面

4、会员卡信息页面

5、电脑信息页面

6、电脑使用记录页面

7、消费和充值记录页面

三.部分代码

1、index.jsp

2、UserServlet

3、IUserService

4、UserServiceImpl

5、IUserDao

6、UserDaoImpl

四.配置文件

1、db.properties

2、pom.xml

五.源码


一.数据库表设计

1、管理员表

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '管理员id',
  `image` varchar(255) DEFAULT NULL COMMENT '管理员头像',
  `name` varchar(255) DEFAULT NULL COMMENT '管理员姓名',
  `gender` varchar(10) DEFAULT NULL COMMENT '管理员性别',
  `phone` varchar(11) DEFAULT NULL COMMENT '管理员联系电话',
  `username` varchar(50) DEFAULT NULL COMMENT '登录账号',
  `password` varchar(50) DEFAULT NULL COMMENT '登录密码',
  `identity` tinyint(4) DEFAULT NULL COMMENT '管理员身份(0代表投资人,1代表店长,2代表网管,3代表系统管理员)',
  `status` tinyint(4) DEFAULT NULL COMMENT '状态(1:正常 0:停用)',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

2、使用记录表

CREATE TABLE `usage_records` (
  `record_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '记录ID',
  `customer_id` int(11) DEFAULT NULL COMMENT '顾客ID',
  `computer_id` int(11) DEFAULT NULL COMMENT '电脑ID',
  `start_time` datetime DEFAULT NULL COMMENT '使用开始时间',
  `end_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '使用结束时间',
  PRIMARY KEY (`record_id`),
  KEY `customer_id` (`customer_id`),
  KEY `computer_id` (`computer_id`),
  CONSTRAINT `usage_records_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`customer_id`),
  CONSTRAINT `usage_records_ibfk_2` FOREIGN KEY (`computer_id`) REFERENCES `computers` (`computer_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

3、交易记录表

CREATE TABLE `transaction_records` (
  `record_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '充值和消费记录',
  `customer_id` int(11) DEFAULT NULL COMMENT '顾客ID',
  `card_number` int(11) DEFAULT NULL COMMENT '会员卡号',
  `transaction_type` varchar(50) DEFAULT NULL COMMENT '交易类型',
  `amount` decimal(10,2) DEFAULT NULL COMMENT '交易金额',
  `transaction_date` date DEFAULT NULL COMMENT '交易日期',
  PRIMARY KEY (`record_id`),
  KEY `customer_id` (`customer_id`),
  KEY `card_number` (`card_number`),
  CONSTRAINT `transaction_records_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`customer_id`),
  CONSTRAINT `transaction_records_ibfk_2` FOREIGN KEY (`card_number`) REFERENCES `membership_cards` (`card_number`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8;

4、会员卡表

CREATE TABLE `membership_cards` (
  `card_number` int(11) NOT NULL COMMENT '会员卡号',
  `password` varchar(50) DEFAULT NULL COMMENT '会员密码',
  `name` varchar(255) DEFAULT NULL COMMENT '会员姓名',
  `gender` varchar(10) DEFAULT NULL COMMENT '会员性别',
  `registration_date` varchar(10) DEFAULT NULL COMMENT '注册日期',
  `membership_level` varchar(50) DEFAULT NULL COMMENT '会员等级',
  `balance` decimal(20,2) DEFAULT NULL COMMENT '余额',
  `status` tinyint(4) DEFAULT NULL COMMENT '状态(0代表冻结,1代表正常)',
  `customer_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '顾客ID',
  PRIMARY KEY (`card_number`),
  KEY `customer_id` (`customer_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

5、客户表

CREATE TABLE `customers` (
  `customer_id` int(11) NOT NULL COMMENT '顾客ID',
  `name` varchar(255) DEFAULT NULL COMMENT '顾客姓名',
  `gender` varchar(10) DEFAULT NULL COMMENT '顾客性别',
  `date_of_birth` varchar(10) DEFAULT NULL COMMENT '顾客的出生日期',
  `phone` varchar(20) DEFAULT NULL COMMENT '顾客的联系电话',
  `id_address` varchar(255) DEFAULT NULL COMMENT '顾客的身份证地址',
  `id_number` varchar(20) DEFAULT NULL COMMENT '顾客的身份证号码',
  `is_member` tinyint(4) DEFAULT NULL COMMENT '顾客是否为会员(1:是会员 0:不是会员)',
  `status` tinyint(4) DEFAULT NULL COMMENT '顾客的上机状态(1:上机 0:下机)',
  PRIMARY KEY (`customer_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

6、电脑表

CREATE TABLE `computers` (
  `computer_id` int(11) NOT NULL COMMENT '电脑ID',
  `model` varchar(255) DEFAULT NULL COMMENT '电脑型号',
  `cpu` varchar(255) DEFAULT NULL COMMENT 'CPU',
  `graphics_card` varchar(255) DEFAULT NULL COMMENT '显卡',
  `monitor` varchar(255) DEFAULT NULL COMMENT '显示器',
  `status` tinyint(4) DEFAULT NULL COMMENT '电脑状态',
  PRIMARY KEY (`computer_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

二.页面展示

1、首页

2、管理员管理页面

3、顾客信息页面

4、会员卡信息页面

5、电脑信息页面

6、电脑使用记录页面

7、消费和充值记录页面

三.部分代码

1、index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
	<title>主页</title>
	<link rel="stylesheet" type="text/css" href="/static/layui/css/layui.css"/>
	<script src="/static/layui/layui.js" type="text/javascript" charset="utf-8"></script>
	<script src="/static/kindeditor/kindeditor.js" type="text/javascript" charset="utf-8"></script>
	<script src="/static/jquery-2.1.4.js" type="text/javascript" charset="utf-8"></script>
	<%--<script src="/static/layer/layer.js" type="text/javascript" charset="utf-8"></script>--%>
	<script src="/static/mylayer.js" type="text/javascript" charset="utf-8"></script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
	<div class="layui-header">
		<div class="layui-logo">网吧会员管理系统</div>
		<ul class="layui-nav layui-layout-left">   </ul>
		<ul class="layui-nav layui-layout-right">
			<li class="layui-nav-item">
				<c:if test="${user.name != null}">
					<a href="javascript:;">
						管理员${user.name}
					</a>
				</c:if>
				<c:if test="${user.name == null}">
					<a href="javascript:;">
						用户${user.name}
					</a>
				</c:if>
				<dl class="layui-nav-child">
					<dd>
						<a href="javascript:openUser()">基本资料</a>
					</dd>
					<dd>
						<a href="javascript:openPass()">修改密码</a>
					</dd>
					<dd>
						<a href="javascript:openPic()">修改头像</a>
					</dd>
				</dl>
			</li>
			<li class="layui-nav-item">
				<a href="javascript:login()">管理员登录</a>
			</li>
			<li class="layui-nav-item">
				<a href="javascript:logout()">注销</a>
			</li>
		</ul>
	</div>
	<div class="layui-side layui-bg-black">
		<div class="layui-side-scroll">
			<!-- 左侧导航区域(可配合layui已有的垂直导航) -->
			<ul class="layui-nav layui-nav-tree" >
				<li class="layui-nav-item layui-nav-itemed">
					<a href="javascript:;">电脑上机信息</a>
					<dl class="layui-nav-child">
						<%--<dd>
							<a href="javascript:;"
							   data-url="/user_list.jsp"
							   class="site-demo-active">管理员管理</a>
						</dd>--%>
						<c:if test="${user.name != null}">
							<c:if test="${user.identity ==0 ||user.identity == 3}">
								<c:if test="${user.status == 0}">
									<dd>
										<a href="javascript:;"
										   data-url="computers_list.jsp"
										   class="site-demo-active">电脑信息</a>
									</dd>
									<dd>
										<a href="javascript:;"
										   data-url="usageRecords_list.jsp"
										   class="site-demo-active">电脑使用记录</a>
									</dd>
								</c:if>
								<c:if test="${user.status == 1}">
									<dd>
										<a href="javascript:;"
										   data-url="/user_list.jsp"
										   class="site-demo-active">管理员管理</a>
									</dd>
									<dd>
										<a href="javascript:;"
										   data-url="/customers_list.jsp"
										   class="site-demo-active">顾客信息</a>
									</dd>
									<dd>
										<a href="javascript:;"
										   data-url="membershipCards_list.jsp"
										   class="site-demo-active">会员卡信息</a>
									</dd>
									<dd>
										<a href="javascript:;"
										   data-url="computers_list.jsp"
										   class="site-demo-active">电脑信息</a>
									</dd>
									<dd>
										<a href="javascript:;"
										   data-url="usageRecords_list.jsp"
										   class="site-demo-active">电脑使用记录</a>
									</dd>
									<dd>
										<a href="javascript:;"
										   data-url="transactionRecords_list.jsp"
										   class="site-demo-active">消费和充值记录</a>
									</dd>
								</c:if>
							</c:if>
							<c:if test="${user.identity == 1 ||user.identity == 2}">
								<c:if test="${user.status == 0}">
									<dd>
										<a href="javascript:;"
										   data-url="computers_list.jsp"
										   class="site-demo-active">电脑信息</a>
									</dd>
									<dd>
										<a href="javascript:;"
										   data-url="usageRecords_list.jsp"
										   class="site-demo-active">电脑使用记录</a>
									</dd>
								</c:if>
								<c:if test="${user.status == 1}">
									<dd>
										<a href="javascript:;"
										   data-url="/customers_list.jsp"
										   class="site-demo-active">顾客信息</a>
									</dd>
									<dd>
										<a href="javascript:;"
										   data-url="membershipCards_list.jsp"
										   class="site-demo-active">会员卡信息</a>
									</dd>
									<dd>
										<a href="javascript:;"
										   data-url="computers_list.jsp"
										   class="site-demo-active">电脑信息</a>
									</dd>
									<dd>
										<a href="javascript:;"
										   data-url="usageRecords_list.jsp"
										   class="site-demo-active">电脑使用记录</a>
									</dd>
									<dd>
										<a href="javascript:;"
										   data-url="transactionRecords_list.jsp"
										   class="site-demo-active">消费和充值记录</a>
									</dd>
								</c:if>
							</c:if>
						</c:if>
						<c:if test="${user.name == null}">
							<dd>
								<a href="javascript:;"
								   data-url="computers_list.jsp"
								   class="site-demo-active">电脑信息</a>
							</dd>
							<dd>
								<a href="javascript:;"
								   data-url="usageRecords_list.jsp"
								   class="site-demo-active">电脑使用记录</a>
							</dd>
						</c:if>
					</dl>
				</li>
			</ul>
		</div>
	</div>
	<div class="layui-body"><!-- 内容主体区域 -->
		<iframe name="rightframe" width="99%" height="97%" src="computers_list.jsp"></iframe>
	</div>
	<div class="layui-footer" style="color: deeppink;background-color: #e9ecef" >祝您上网愉快</div>
</div>
<script type="text/javascript">
	var $ = layui.jquery;
	var layer = layui.layer;
	var element = layui.element;
	$('.site-demo-active').click(function() {
		window.open($(this).data('url'), "rightframe");
	});
	element.render();// element.init();
	function openURL(url){
		window.open(url, "rightframe");
	}

	function logout() {
		layer.confirm(
				'您确认要退出么',
				{icon:3},
				function() {
					location.href = '/user?method=logout'
				}
		);
	}

	function login() {
		layer.confirm(
				'只有管理员才能登录哟',
				{icon:3},
				function() {
					location.href = '/user?method=logout'
				}
		);
	}
</script>
</body>
</html>

2、UserServlet

package com.project.netbar_membership.controller;

import com.project.netbar_membership.pojo.User;
import com.project.netbar_membership.pojo.query.UserQuery;
import com.project.netbar_membership.service.IUserService;
import com.project.netbar_membership.service.impl.UserServiceImpl;
import com.project.netbar_membership.util.JSONUtil;
import com.project.netbar_membership.util.LayUITableResult;
import com.project.netbar_membership.util.Result;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@WebServlet("/user")
public class UserServlet extends HttpServlet {
    private IUserService userService = (IUserService) new UserServiceImpl();

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");

        String method = req.getParameter("method");
        if (method == null || method.equals("")) {
            method = "selectByPage";
        }
        switch (method) {
            case "selectByPage":
                selectByPage(req, resp);
                break;
            case "deleteById":
                deleteById(req, resp);
                break;
            case "deleteAll":
                deleteAll(req, resp);
                break;
            case "add":
                add(req, resp);
                break;
            case "getUserUpdatePage":
                getUserUpdatePage(req, resp);
                break;
            case "update":
                update(req, resp);
                break;
            case "login":
                login(req, resp);
                break;
            case "logout":
                logout(req, resp);
                break;
            case "updateStatus":
                updateStatus(req, resp);
                break;
        }
    }

    private void updateStatus(HttpServletRequest req, HttpServletResponse resp) {
        System.out.println("UserServlet.updateStatus");
        String id = req.getParameter("id");
        String status = req.getParameter("status");
        boolean isSuccess = userService.updateStatus(Integer.parseInt(id), Integer.parseInt(status));

        Result result = isSuccess ? Result.ok("更新状态成功") : Result.error("更新状态失败");
        JSONUtil.toJSON(resp, result);
    }

    private void logout(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        System.out.println("UserServlet.logout");
        //确认注销,清空session数据
        HttpSession session = req.getSession();
        session.invalidate();
        //重定向到登录页面(login.jsp)
        resp.sendRedirect(req.getContextPath() + "/login.jsp");
    }

    private void login(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        System.out.println("UserServlet.login");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String code = req.getParameter("code");

        HttpSession session = req.getSession();
        String codeInSession = (String) session.getAttribute("codeInSession");
        if (!codeInSession.equalsIgnoreCase(code)) {
            // {'code':1, 'msg':'验证码错误'}
            Map<String, Object> map = new HashMap<>();
            map.put("code", 1);
            map.put("msg", "验证码错误");
            JSONUtil.toJSON(resp, map);
            return;
        }

        //User user = userService.login(name, MD5Util.MD5Encode(password + MD5Util.SALT));
        User user = userService.login(username, password);
        if (user != null) {
            //该用户是否被禁用
            if (user.getStatus() == 0) {
                JSONUtil.toJSON(resp, Result.error("该用户被禁用"));
                return;
            }
            //把user作为登录凭证放到Session,
            //后面只要判断Session里面有没有user,就知道当前这个用户有没有登录
            session.setAttribute("user", user);
            JSONUtil.toJSON(resp, Result.ok("登录成功"));
        } else {
            JSONUtil.toJSON(resp, Result.error("用户名或密码错误"));
        }
    }

    private void update(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        System.out.println("UserServlet.update");
        //id,image,name,gender,phone,username,password,identity,status
        String id = req.getParameter("id");
        String image = req.getParameter("image");
        String name = req.getParameter("name");
        String gender = req.getParameter("gender");
        String phone = req.getParameter("phone");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String identity = req.getParameter("identity");
        String status = req.getParameter("status");

        //User user = new User(Integer.parseInt(id), name, MD5Util.MD5Encode(password + MD5Util.SALT), Integer.parseInt(role), nickName, email, phone, image,Integer.parseInt(status));
        User user = new User(Integer.parseInt(id), image, name, gender, phone, username, password, Integer.parseInt(identity), Integer.parseInt(status));
        boolean isSuccess = userService.update(user);
        Result result = isSuccess ? Result.ok("修改成功") : Result.error("修改失败");
        JSONUtil.toJSON(resp, result);
    }

    private void getUserUpdatePage(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("UserServlet.getUserUpdatePage");
        String id = req.getParameter("id");
        User user = userService.getUserUpdatePage(Integer.parseInt(id));
        //把user数据放到req里面
        req.setAttribute("user", user);
        //转发到user_update.jsp页面进行展示
        req.getRequestDispatcher("user_update.jsp").forward(req, resp);
    }

    private void add(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        System.out.println("UserServlet.add");
        //id,image,name,gender,phone,username,password,identity,status
        String image = req.getParameter("image");
        String name = req.getParameter("name");
        String gender = req.getParameter("gender");
        String phone = req.getParameter("phone");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String identity = req.getParameter("identity");
        User user = new User(image,name,gender,phone,username,password,Integer.parseInt(identity));
        boolean isSuccess = userService.add(user);
        Result result = isSuccess ? Result.ok("添加成功") : Result.error("添加失败");
        JSONUtil.toJSON(resp, result);
    }

    private void deleteById(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        System.out.println("UserServlet.deleteById");
        String id = req.getParameter("id");
        boolean isSuccess = userService.deleteById(Integer.parseInt(id));
        //resp.sendRedirect(req.getContextPath() + "/user");
        Result result = isSuccess ? Result.ok("删除成功") : Result.error("删除失败");
        JSONUtil.toJSON(resp, result);
    }

    private void deleteAll(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        System.out.println("UserServlet.deleteAll");
        //String id = req.getParameter("id");
        String[] ids = req.getParameterValues("ids[]");
        boolean isSuccess = userService.deleteAll(ids);
        Result result = isSuccess ? Result.ok("删除成功") : Result.error("删除失败");
        JSONUtil.toJSON(resp, result);
    }

    //http://localhost:8080/JavaWeb/user?method=selectByPage&page=1&limit=10
    private void selectByPage(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("UserServlet.selectByPage");
        String pageStr = req.getParameter("page");
        if (pageStr == null || pageStr.equals("")) {
            pageStr = "1";
        }
        String limitStr = req.getParameter("limit");
        if (limitStr == null || limitStr.equals("")) {
            limitStr = "10";
        }
        int page = Integer.parseInt(pageStr);
        int limit = Integer.parseInt(limitStr);
        String name = req.getParameter("name");
        String gender = req.getParameter("gender");
        UserQuery userQuery = new UserQuery(page, limit, name, gender);
        LayUITableResult layUITableResult = userService.selectByPage(userQuery);
        System.out.println("LayUITableResult" + layUITableResult);

        JSONUtil.toJSON(resp, layUITableResult);
    }
}

3、IUserService

package com.project.netbar_membership.service;

import com.project.netbar_membership.pojo.User;
import com.project.netbar_membership.pojo.query.UserQuery;
import com.project.netbar_membership.util.LayUITableResult;

public interface IUserService {
    //PageInfo<User> selectByPage(Integer pageNo, Integer pageSize);
    LayUITableResult selectByPage(UserQuery userQuery);

    boolean deleteById(int id);

    boolean add(User user);

    User getUserUpdatePage(int id);

    boolean update(User user);

    User login(String username, String password);

    boolean deleteAll(String[] ids);

    boolean updateStatus(int id, int status);
}

4、UserServiceImpl

package com.project.netbar_membership.service.impl;


import com.project.netbar_membership.dao.IUserDao;
import com.project.netbar_membership.dao.impl.UserDaoImpl;
import com.project.netbar_membership.pojo.User;
import com.project.netbar_membership.pojo.query.UserQuery;
import com.project.netbar_membership.service.IUserService;
import com.project.netbar_membership.util.LayUITableResult;

import java.util.List;

public class UserServiceImpl implements IUserService {
    private IUserDao userDao = new UserDaoImpl();

    //业务:为了封装PageInfo,查询两次数据库
    @Override
    public LayUITableResult selectByPage(UserQuery userQuery) {
        List<User> list = userDao.selectByPage(userQuery);
        Integer totalCount = userDao.selectTotalCount(userQuery);
        return LayUITableResult.ok(totalCount, list);
    }

    @Override
    public boolean deleteById(int id) {
        int deleteCount = userDao.deleteById(id);
        return deleteCount == 1 ? true : false;
    }

    @Override
    public boolean add(User user) {
        int addCount = userDao.add(user);
        return addCount == 1 ? true : false;
    }

    @Override
    public User getUserUpdatePage(int id) {
        User user = userDao.getUserUpdatePage(id);
        return user;
    }

    @Override
    public boolean update(User user) {
        int updateCount = userDao.update(user);
        return updateCount == 1 ? true : false;
    }

    @Override
    public User login(String username, String password) {
        return userDao.login(username, password);
    }

    @Override
    public boolean deleteAll(String[] ids) {
        // delete from user where id in();
        int count = 0;
        for (String id : ids) {
            count += userDao.deleteById(Integer.parseInt(id));
        }
        return count == ids.length ? true : false;
    }

    @Override
    public boolean updateStatus(int id, int status) {
        int count = userDao.updateStatus(id, status);
        return count == 1 ? true : false;
    }
}

5、IUserDao

package com.project.netbar_membership.dao;

import com.project.netbar_membership.pojo.User;
import com.project.netbar_membership.pojo.query.UserQuery;

import java.util.List;

public interface IUserDao {
    List<User> selectByPage(UserQuery userQuery);
    Integer selectTotalCount(UserQuery userQuery);

    int deleteById(int id);

    int add(User user);

    User getUserUpdatePage(int id);

    int update(User user);

    User login(String username, String password);

    int updateStatus(int id, int status);
}

6、UserDaoImpl

package com.project.netbar_membership.dao.impl;

import com.project.netbar_membership.dao.IUserDao;
import com.project.netbar_membership.dao.IUserDao;
import com.project.netbar_membership.pojo.User;
import com.project.netbar_membership.pojo.query.UserQuery;
import com.project.netbar_membership.util.JDBCUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class UserDaoImpl implements IUserDao {
    @Override
    public List<User> selectByPage(UserQuery userQuery) {
        int offset = (userQuery.getPage() - 1) * userQuery.getLimit();
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        List<User> list = new ArrayList<>();
        try {
            connection = JDBCUtil.getConnection();
            //id,image,name,gender,phone,username,password,identity,status
            String sql = "SELECT id,image,name,gender,phone,username,password,identity,status FROM user where 1=1 ";
            //这里面放所有搜索条件
            List<Object> queryList = new ArrayList<>();
            String queryName = userQuery.getName();
            if (queryName != null && !"".equals(queryName)) {
                sql += " and name like ? ";
                //queryList.add(queryName);
                queryList.add("%" + queryName + "%");
            }
            String queryGender = userQuery.getGender();
            if (queryGender != null && !"".equals(queryGender)) {
                sql += " and gender=? ";
                queryList.add(queryGender);
            }
            sql += " limit ?,? ";
            preparedStatement = connection.prepareStatement(sql);
            for (int i = 0; i < queryList.size(); i++) {
                preparedStatement.setObject(i + 1, queryList.get(i));
            }
            preparedStatement.setInt(queryList.size() + 1, offset);
            preparedStatement.setInt(queryList.size() + 2, userQuery.getLimit());
            System.out.println(preparedStatement);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                //id,image,name,gender,phone,username,password,identity,status
                int id = resultSet.getInt("id");
                String image = resultSet.getString("image");
                String name = resultSet.getString("name");
                String gender = resultSet.getString("gender");
                String phone = resultSet.getString("phone");
                String username = resultSet.getString("username");
                String password = resultSet.getString("password");
                int identity = resultSet.getInt("identity");
                int status = resultSet.getInt("status");
                User user = new User(id, image, name, gender, phone, username, password, identity, status);
                list.add(user);
            }
            for (User user : list) {
                System.out.println(user);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBCUtil.close(connection, preparedStatement, resultSet);
        }
        return list;
    }

    @Override
    public Integer selectTotalCount(UserQuery userQuery) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        int totalCount = 0;
        try {
            connection = JDBCUtil.getConnection();
            //String sql = "select count(*) from user";
            String sql = "select count(*) from user where 1=1 ";
            List<Object> queryList = new ArrayList<>();
            String queryName = userQuery.getName();
            if (queryName != null && !"".equals(queryName)) {
                sql += " and name like ? ";
                queryList.add(queryName);
            }
            String queryGender = userQuery.getGender();
            if (queryGender != null && !"".equals(queryGender)) {
                sql += " and gender=? ";
                queryList.add(queryGender);
            }
            preparedStatement = connection.prepareStatement(sql);
            for (int i = 0; i < queryList.size(); i++) {
                preparedStatement.setObject(i + 1, queryList.get(i));
            }
            System.out.println(preparedStatement);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                totalCount = resultSet.getInt(1);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally{
            JDBCUtil.close(connection, preparedStatement, resultSet);
        }
        return totalCount;
    }

    @Override
    public int deleteById(int id) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        int count = 0;
        try {
            connection = JDBCUtil.getConnection();
            String sql = "delete from user where id=?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setInt(1, id);
            System.out.println(preparedStatement);
            count = preparedStatement.executeUpdate();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBCUtil.close(connection, preparedStatement, null);
        }
        return count;
    }

    @Override
    public int add(User user) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        int count = 0;
        try {
            connection = JDBCUtil.getConnection();
            //id,image,name,gender,phone,username,password,identity,status
            String sql = "insert into user(image,name,gender,phone,username,password,identity) values(?,?,?,?,?,?,?)";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, user.getImage());
            preparedStatement.setString(2, user.getName());
            preparedStatement.setString(3, user.getGender());
            preparedStatement.setString(4, user.getPhone());
            preparedStatement.setString(5, user.getUsername());
            preparedStatement.setString(6, user.getPassword());
            preparedStatement.setInt(7, user.getIdentity());
            System.out.println(preparedStatement);
            count = preparedStatement.executeUpdate();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBCUtil.close(connection, preparedStatement, null);
        }
        return count;
    }

    @Override
    public User getUserUpdatePage(int id) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        User user = null;
        try {
            connection = JDBCUtil.getConnection();
            //id,image,name,gender,phone,username,password,identity,status
            String sql = "select id,image,name,gender,phone,username,password,identity,status from user where id=?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setInt(1, id);
            System.out.println(preparedStatement);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                String image = resultSet.getString("image");
                String name = resultSet.getString("name");
                String gender = resultSet.getString("gender");
                String phone = resultSet.getString("phone");
                String username = resultSet.getString("username");
                String password = resultSet.getString("password");
                int identity = resultSet.getInt("identity");
                int status = resultSet.getInt("status");
                user = new User(id, image, name, gender, phone, username, password, identity, status);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return user;
    }

    @Override
    public int update(User user) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        int updateCount = 0;
        try {
            connection = JDBCUtil.getConnection();
            //id,image,name,gender,phone,username,password,identity,status
            String sql = "update user set image=?,name=?,gender=?,phone=?,username=?,password=?,identity=?,status=? where id=?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, user.getImage());
            preparedStatement.setString(2, user.getName());
            preparedStatement.setString(3, user.getGender());
            preparedStatement.setString(4, user.getPhone());
            preparedStatement.setString(5, user.getUsername());
            preparedStatement.setString(6, user.getPassword());
            preparedStatement.setInt(7, user.getIdentity());
            preparedStatement.setInt(8, user.getStatus());
            preparedStatement.setInt(9, user.getId());
            System.out.println(preparedStatement);
            updateCount = preparedStatement.executeUpdate();
            //System.out.println(updateCount);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBCUtil.close(connection, preparedStatement, null);
        }
        return updateCount;
    }

    @Override
    public User login(String username, String password) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        User user = null;
        try {
            connection = JDBCUtil.getConnection();
            //id,image,name,gender,phone,username,password,identity,status
            String sql = "SELECT id,image,name,gender,phone,username,password,identity,status FROM user where username=? and password=?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, username);
            preparedStatement.setString(2, password);
            System.out.println(preparedStatement);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {//判断下一个有没有,如果返回true而且指向下一个,没有返回false
                //id,image,name,gender,phone,username,password,identity,status
                int id = resultSet.getInt("id");
                String image = resultSet.getString("image");
                String name = resultSet.getString("name");
                String gender = resultSet.getString("gender");
                String phone = resultSet.getString("phone");
                int identity = resultSet.getInt("identity");
                int status = resultSet.getInt("status");
                user = new User(id, image, name, gender, phone, username, password, identity, status);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBCUtil.close(connection, preparedStatement, resultSet);
        }
        return user;
    }

    @Override
    public int updateStatus(int id, int status) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        int count = 0;
        try {
            connection = JDBCUtil.getConnection();
            String sql = "update user set status=? where id=?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setInt(1, status);
            preparedStatement.setInt(2, id);
            System.out.println(preparedStatement);
            count = preparedStatement.executeUpdate();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return count;
    }
}

四.配置文件

1、db.properties

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/netbar_membership?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2b8
username=root
password=123456

2、pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>netbar_membership</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>netbar_membership Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.mysql</groupId>
      <artifactId>mysql-connector-j</artifactId>
      <version>8.0.31</version>
    </dependency>


    <!--Jackson包-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.0</version>
    </dependency>

    <!--lombok-->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.14</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>netbar_membership</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <configuration>
            <port>8070</port>
            <path>/</path>
            <uriEncoding>UTF-8</uriEncoding>
            <!-- tomcat虚拟映射路径 -->
            <staticContextPath>/pic</staticContextPath>
            <!-- 设置本地存放图片的路径-->
            <staticContextDocbase>D:/mypic/</staticContextDocbase>
            <contextReloadable>true</contextReloadable>
            <useTestClasspath>true</useTestClasspath>
          </configuration>
        </plugin>

        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

五.源码

网吧会员管理系统

C# + SQL Server 本系统包括两类用户:学生、管理员。管理员可以通过系统来添加管理员信息、修改管理员信息、添加学生信息、修改学生信息;开设课程、查询课程、录入成绩、统计成绩 管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: 用于学校或教育机构的学生信息、教职员工信息、课程管理、成绩记录、考勤管理等。学校管理系统帮助提高学校的组织效率和信息管理水平。 人力资源管理系统(HRM): 用于处理组织内的人事信息,包括员工招聘、培训记录、薪资管理、绩效评估等。HRM系统有助于企业更有效地管理人力资源,提高员工的工作效率和满意度。 库存管理系统: 用于追踪和管理商品或原材料的库存。这种系统可以帮助企业避免库存过剩或不足的问题,提高供应链的效率。 客户关系管理系统(CRM): 用于管理与客户之间的关系,包括客户信息、沟通记录、销售机会跟踪等。CRM系统有助于企业更好地理解客户需求,提高客户满意度和保留率。 医院管理系统: 用于管理医院或医疗机构的患者信息、医生排班、药品库存等。这种系统可以提高医疗服务的质量和效率。 财务管理系统: 用于记录和管理组织的财务信息,包括会计凭证、财务报表、预算管理等。财务管理系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

py爱好者~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值