📜  电子图书馆管理系统(1)

📅  最后修改于: 2023-12-03 15:40:57.050000             🧑  作者: Mango

电子图书馆管理系统

电子图书馆管理系统是一个管理图书馆资源的重要软件。本文将介绍该系统的设计和实现。

功能
  1. 用户管理:支持用户注册、登录、密码找回、个人信息查看和修改。
  2. 图书管理:包括图书检索、查询、借阅、归还等操作。图书信息包括书名、作者、出版社、ISBN、价格、出版日期、封面等。
  3. 借阅管理:记录读者的借阅情况和还书情况,包括借阅日期、应还日期、实际归还日期等。
  4. 系统管理:管理员对系统进行管理,包括用户管理、图书管理、借阅管理、权限管理、系统设置等。
  5. 数据统计:对系统数据进行统计与分析,如图书借阅次数、读者借阅情况、图书库存情况等。
  6. 其他功能:如验证码、文件上传下载、短信提醒等。
设计与实现

该系统分为前端和后端两部分,前端主要是用Vue.js框架开发,后端采用SpringBoot框架实现。数据库采用MySQL,在前端和后端之间使用了RESTful API进行数据传输。

前端实现了用户登录、注册、注销、图书检索、借阅、归还等功能,使用了axios进行后台API调用。

后端实现了用户管理、图书管理、借阅管理、权限管理等功能,使用了MyBatis进行数据库操作。同时,使用了Swagger UI进行API文档生成和测试,方便前后端联调。

源码片段
@RestController
@RequestMapping("/api/books")
public class BookController {
    @Autowired
    private BookMapper bookMapper;

    @GetMapping("/{bookId}")
    public Book getBookById(@PathVariable Long bookId) {
        return bookMapper.selectByPrimaryKey(bookId);
    }

    @PostMapping("/")
    public int addBook(@RequestBody Book book) {
        return bookMapper.insertSelective(book);
    }

    @PutMapping("/")
    public int updateBook(@RequestBody Book book) {
        return bookMapper.updateByPrimaryKeySelective(book);
    }

    @DeleteMapping("/{bookId}")
    public int deleteBookById(@PathVariable Long bookId) {
        return bookMapper.deleteByPrimaryKey(bookId);
    }
}
<template>
  <div>
    <input type="text" v-model="keyword" placeholder="请输入关键词" />
    <button @click="searchBooks">搜索</button>
    <ul>
      <li v-for="book in books" :key="book.id">
        <img :src="book.coverUrl" />
        <span>{{ book.name }}</span>
        <button @click="borrowBook(book.id)">借阅</button>
      </li>
    </ul>
  </div>
</template>
<script>
import axios from 'axios'

export default {
  data() {
    return {
      keyword: '',
      books: []
    }
  },
  methods: {
    searchBooks() {
      axios.get('/api/books/search?keyword=' + this.keyword).then(res => {
        this.books = res.data
      })
    },
    borrowBook(bookId) {
      axios.post('/api/borrow', { bookId }).then(() => {
        alert('借阅成功')
      })
    }
  }
}
</script>