Sistema de gestión de libros JavaWeb

Ver más sistemas: Enciclopedia del sistema, Diseño de cursos, Diseño de graduación, haga clic aquí para ver

01 Resumen del sistema

El sistema de administración de libros es un software que utiliza computadoras e Internet para estructurar y automatizar la administración de libros para mejorar la eficiencia de la administración de libros.

02 Características del sistema

Marco principal integrado, desarrollo simple y optimizado, alta escalabilidad

03 Tecnología

springboot + jpa + mybatis + springsecurity + javaex

extremo posterior:

  • Marco básico: SpringBoot
  • Manipulación de datos simple: Spring Data Jpa
  • Manipulación de datos complejos: Mybatis
  • Marco de seguridad: SpringSecurity
  • Motor de plantilla: Thymeleaf

Interfaz:

  • javaEx es en realidad una encapsulación de html, css y js. Más cerca del original, es más conveniente modificar
  • jQuery, para ser honesto, jQuery sigue siendo muy cómodo de usar, rompiendo las limitaciones de varios marcos de front-end

04 Entorno operativo

jdk1.8 + maven3 + mysql5.7

05 Introducción a la función

Gestión de bibliotecas

Lista de libros: muestra la información de los libros que se han colocado en las estanterías, y puedes buscar, modificar y eliminar los libros de las estanterías.
Estante de libros: ingrese la información del libro, ingrese el nombre del libro, el autor, la clasificación del libro, el número de página, el precio y otros datos para ingresar al libro.

Gestión de préstamos

Búsqueda de libros: busque libros según el nombre del libro, el nombre del autor, la clasificación del libro, etc.
Préstamo de libros: ingrese la información del libro, ingrese el nombre del libro, el autor, la categoría del libro, el número de páginas, los precios y otros datos para el préstamo de libros.
Devolver libros: Devuelva los libros que se han prestado.

Gestión de lectores

Lista de lectores: muestra los usuarios lectores registrados.
Adición del lector: ingrese el apodo del usuario, nombre de usuario, contraseña, fecha de nacimiento, teléfono, correo electrónico y otra información para agregar un nuevo usuario.

Centro de usuarios

Información personal: vea y modifique la información personal.
Gestión de usuarios: busque, elimine y use información de autoridad para usuarios agregados.
Agregar administrador: ingrese el apodo, nombre de usuario, contraseña, fecha de nacimiento, número de teléfono, correo electrónico y otra información del administrador para agregar un nuevo administrador.

06 Ejecutar captura de pantalla

interfaz de inicio de sesión

Inserte la descripción de la imagen aquí

Página de inicio

Inserte la descripción de la imagen aquí

Interfaz de lista de libros

Inserte la descripción de la imagen aquí

Agregar interfaz de libro

Inserte la descripción de la imagen aquí

Interfaz de devolución de libros

Inserte la descripción de la imagen aquí

Interfaz de lista de lectores

Inserte la descripción de la imagen aquí

Interfaz de información personal

Inserte la descripción de la imagen aquí

Interfaz de gestión de usuarios

Inserte la descripción de la imagen aquí

07 código principal

Gestión de bibliotecas

package com.book.manager.controller;

import com.book.manager.entity.Book;
import com.book.manager.service.BookService;
import com.book.manager.util.R;
import com.book.manager.util.http.CodeEnum;
import com.book.manager.util.ro.PageIn;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/**
 * @Description 用户管理
 */
@Api(tags = "图书管理")
@RestController
@RequestMapping("/book")
public class BookController {

    @Autowired
    private BookService bookService;

    @ApiOperation("图书搜索列表")
    @PostMapping("/list")
    public R getBookList(@RequestBody PageIn pageIn) {
        if (pageIn == null) {
            return R.fail(CodeEnum.PARAM_ERROR);
        }

        return R.success(CodeEnum.SUCCESS,bookService.getBookList(pageIn));
    }

    @ApiOperation("添加图书")
    @PostMapping("/add")
    public R addBook(@RequestBody Book book) {
        return R.success(CodeEnum.SUCCESS,bookService.addBook(book));
    }

    @ApiOperation("编辑图书")
    @PostMapping("/update")
    public R modifyBook(@RequestBody Book book) {
        return R.success(CodeEnum.SUCCESS,bookService.updateBook(book));
    }

    @ApiOperation("图书详情")
    @GetMapping("/detail")
    public R bookDetail(Integer id) {
        return R.success(CodeEnum.SUCCESS,bookService.findBookById(id));
    }

    @ApiOperation("图书详情 根据ISBN获取")
    @GetMapping("/detailByIsbn")
    public R bookDetailByIsbn(String isbn) {
        return R.success(CodeEnum.SUCCESS,bookService.findBookByIsbn(isbn));
    }

    @ApiOperation("删除图书")
    @GetMapping("/delete")
    public R delBook(Integer id) {
        bookService.deleteBook(id);
        return R.success(CodeEnum.SUCCESS);
    }

}

Gestión de préstamos

package com.book.manager.controller;

import cn.hutool.core.date.DateUtil;
import com.book.manager.entity.Borrow;
import com.book.manager.service.BookService;
import com.book.manager.service.BorrowService;
import com.book.manager.util.R;
import com.book.manager.util.consts.Constants;
import com.book.manager.util.http.CodeEnum;
import com.book.manager.util.ro.RetBookIn;
import com.book.manager.util.vo.BackOut;
import com.book.manager.util.vo.BookOut;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @Description 用户管理
 */
@Api(tags = "借阅管理")
@RestController
@RequestMapping("/borrow")
public class BorrowController {

    @Autowired
    private BorrowService borrowService;

    @Autowired
    private BookService bookService;

    @ApiOperation("借阅列表")
    @GetMapping("/list")
    public R getBorrowList(Integer userId) {
        return R.success(CodeEnum.SUCCESS,borrowService.findAllBorrowByUserId(userId));
    }

    @ApiOperation("借阅图书")
    @PostMapping("/add")
    public R addBorrow(@RequestBody Borrow borrow) {
        Integer result = borrowService.addBorrow(borrow);
        if (result == Constants.BOOK_BORROWED) {
            return R.success(CodeEnum.BOOK_BORROWED);
        }else if (result == Constants.USER_SIZE_NOT_ENOUGH) {
            return R.success(CodeEnum.USER_NOT_ENOUGH);
        }else if (result == Constants.BOOK_SIZE_NOT_ENOUGH) {
            return R.success(CodeEnum.BOOK_NOT_ENOUGH);
        }
        return R.success(CodeEnum.SUCCESS,Constants.OK);
    }

    @ApiOperation("编辑借阅")
    @PostMapping("/update")
    public R modifyBorrow(@RequestBody Borrow borrow) {
        return R.success(CodeEnum.SUCCESS,borrowService.updateBorrow(borrow));
    }

    @ApiOperation("借阅详情")
    @GetMapping("/detail")
    public R borrowDetail(Integer id) {
        return R.success(CodeEnum.SUCCESS,borrowService.findById(id));
    }

    @ApiOperation("删除归还记录")
    @GetMapping("/delete")
    public R delBorrow(Integer id) {
        borrowService.deleteBorrow(id);
        return R.success(CodeEnum.SUCCESS);
    }

    @ApiOperation("已借阅列表")
    @GetMapping("/borrowed")
    public R borrowedList(Integer userId) {
        List<BackOut> outs = new ArrayList<>();
        if (userId!=null&&userId>0) {
            // 获取所有 已借阅 未归还书籍
            List<Borrow> borrows = borrowService.findBorrowsByUserIdAndRet(userId, Constants.NO);
            for (Borrow borrow : borrows) {
                BackOut backOut = new BackOut();
                BookOut out = bookService.findBookById(borrow.getBookId());
                BeanUtils.copyProperties(out,backOut);

                backOut.setBorrowTime(DateUtil.format(borrow.getCreateTime(),Constants.DATE_FORMAT));

                String endTimeStr = DateUtil.format(borrow.getEndTime(), Constants.DATE_FORMAT);
                backOut.setEndTime(endTimeStr);
                // 判断是否逾期
                String toDay = DateUtil.format(new Date(), Constants.DATE_FORMAT);
                int i = toDay.compareTo(endTimeStr);
                if (i>0) {
                    backOut.setLate(Constants.YES_STR);
                }else {
                    backOut.setLate(Constants.NO_STR);
                }

                outs.add(backOut);
            }
        }

        return R.success(CodeEnum.SUCCESS,outs);
    }

    @ApiOperation("归还书籍")
    @PostMapping("/ret")
    public R retBook(Integer userId, Integer bookId) {
        // 归还图书
        borrowService.retBook(userId,bookId);
        return R.success(CodeEnum.SUCCESS);
    }

}

Gestión de usuarios

package com.book.manager.controller;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.book.manager.entity.Users;
import com.book.manager.service.UserService;
import com.book.manager.util.R;
import com.book.manager.util.consts.Constants;
import com.book.manager.util.consts.ConvertUtil;
import com.book.manager.util.http.CodeEnum;
import com.book.manager.util.vo.PageOut;
import com.book.manager.util.ro.PageIn;
import com.book.manager.util.vo.UserOut;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @Description 用户管理
 */
@Api(tags = "用户管理")
@RestController
@RequestMapping("/user")
public class UsersController {

    @Autowired
    private UserService userService;

    @ApiOperation("用户列表")
    @PostMapping("/list")
    public R getUsers(@RequestBody PageIn pageIn) {
        if (pageIn == null) {
            return R.fail(CodeEnum.PARAM_ERROR);
        }
        // 封装分页出参对象
        PageInfo<Users> userList = userService.getUserList(pageIn);
        PageOut pageOut = new PageOut();
        pageOut.setCurrPage(userList.getPageNum());
        pageOut.setPageSize(userList.getPageSize());
        pageOut.setTotal((int) userList.getTotal());
        List<UserOut> outs = new ArrayList<>();
        for (Users users : userList.getList()) {
            UserOut out = new UserOut();
            BeanUtils.copyProperties(users,out);
            out.setIdent(ConvertUtil.identStr(users.getIdentity()));
            out.setBirth(DateUtil.format(users.getBirthday(),Constants.DATE_FORMAT));
            outs.add(out);
        }

        pageOut.setList(outs);

        return R.success(CodeEnum.SUCCESS,pageOut);
    }

//    @ApiOperation("添加用户")
//    @PostMapping("/add")
//    public R addUsers(@RequestBody Users users) {
//        return R.success(CodeEnum.SUCCESS,userService.addUser(users));
//    }

    @ApiOperation("添加读者")
    @PostMapping("/addReader")
    public R addReader(@RequestBody Users users) {
        if (users == null) {
            return R.fail(CodeEnum.PARAM_ERROR);
        }
        // 读者默认是普通用户
        users.setIsAdmin(1);
        return R.success(CodeEnum.SUCCESS,userService.addUser(users));
    }

    @ApiOperation("添加管理员")
    @PostMapping("/addAdmin")
    public R addAdmin(@RequestBody Users users) {
        if (users == null) {
            return R.fail(CodeEnum.PARAM_ERROR);
        }
        // 设置管理员权限
        users.setIsAdmin(0);
        return R.success(CodeEnum.SUCCESS,userService.addUser(users));
    }

    @ApiOperation("编辑用户")
    @PostMapping("/update")
    public R modifyUsers(@RequestBody Users users) {
        return R.success(CodeEnum.SUCCESS,userService.updateUser(users));
    }

    @ApiOperation("用户详情")
    @GetMapping("/detail")
    public R userDetail(Integer id) {
        Users user = userService.findUserById(id);
        if (user!=null) {
            UserOut out = new UserOut();
            BeanUtils.copyProperties(user,out);
            out.setBirth(DateUtil.format(user.getBirthday(),Constants.DATE_FORMAT));
            out.setIdent(ConvertUtil.identStr(user.getIdentity()));
            return R.success(CodeEnum.SUCCESS,out);
        }

        return R.fail(CodeEnum.NOT_FOUND);
    }

    @ApiOperation("删除用户")
    @GetMapping("/delete")
    public R delUsers(Integer id) {
        userService.deleteUser(id);
        return R.success(CodeEnum.SUCCESS);
    }

    @ApiOperation("获取当前用户登陆信息")
    @GetMapping("/currUser")
    public R getCurrUser() {
        Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        if (principal!=null) {
            Map<String,Object> map = BeanUtil.beanToMap(principal);
            String username = (String) map.get("username");
            if (StrUtil.isNotBlank(username)) {
                Users users = userService.findByUsername(username);
                UserOut out = new UserOut();
                BeanUtils.copyProperties(users,out);
                out.setBirth(DateUtil.format(users.getBirthday(),Constants.DATE_FORMAT));
                Integer identity = users.getIdentity();
                String ident = "";
                if (identity == Constants.STUDENT) {
                    ident = Constants.STU_STR;
                }else if (identity == Constants.TEACHER) {
                    ident = Constants.TEA_STR;
                }else if (identity == Constants.OTHER) {
                    ident = Constants.OTHER_STR;
                }else if (identity == Constants.ADMIN) {
                    ident = Constants.ADMIN_STR;
                }
                out.setIdent(ident);
                return R.success(CodeEnum.SUCCESS,out);
            }
        }
        return R.fail(CodeEnum.USER_NOT_FOUND);
    }
}

08 Instrucciones de uso

  1. Construya un entorno java8 local, base de datos MySQL5.5 +;
  2. Importe el archivo sql a la base de datos, modifique la conexión de datos (su propio nombre de biblioteca, nombre de usuario, contraseña, etc.);
  3. Importe el proyecto, configure maven y espere a que se complete la descarga de la dependencia;
  4. Instale el IDE y abra el proyecto;
  5. Simplemente comience a visitar http: // localhost: 8080;
  6. Cuenta: [Estudiante: stu / 123] [Profesor: tea / 123] [Otro: otro / 123] [Administrador: admin / 123]

09 ¿Cómo importar?

  • idea: abra la carpeta de origen directamente, recuerde que es el directorio donde se encuentra el archivo pom
  • eclipse: importación directa: seleccione un proyecto de importación maven existente
  • Compruebe si maven está configurado

10 Descarga el código fuente

Siga la cuenta pública [C usted de nuevo] y responda "JavaWeb Library Management System" para recibirla de forma gratuita.
También puede escanear directamente el código QR en la página de inicio para seguir y responder a "JavaWeb Library Management System" para recibirlo de forma gratuita. Haga clic aquí para abrir la página de inicio personal

Nota: Este código fuente proviene de Internet, si hay alguna infracción, ¡contáctese para eliminarlo! !

Autor: C usted nuevamente, comprometido en esfuerzos de desarrollo de software moviendo ladrillos en el camino en tecnología de TI
número público blanco : [ C usted nuevamente ], comparta un código fuente del proyecto de graduación de la clase de computación, artículos técnicos de TI, código fuente del juego, plantillas web, programa de la vida y así sucesivamente. Responda a la cuenta pública [ fans ] en el grupo técnico del blogger, comuníquese con los grandes y reciba materiales de aprendizaje de productos secos.
Acerca de la reimpresión : bienvenido a reimprimir el artículo del blogger e indicar la fuente cuando lo reimprima.
Enlace de alabanza : la creación no es fácil, recuerda dar me gusta, comentar + reenviar, gracias de todos modos, espera

Supongo que te gusta

Origin blog.51cto.com/15107850/2663700
Recomendado
Clasificación