图书管理系统,可以连接华为云数据库等数据库

举报
yd_223262566 发表于 2023/10/14 14:51:11 2023/10/14
【摘要】 首先 是进行数据库的设计。1.book 记录图书的相关信息2.book_user 记录图书被借阅者借阅了的借阅信息3.classify 记录图书的分类信息4.returner 记录图书的归还信息5.user 记录用户的个人信息 具体的设计字段可以根据大家的具体要求进行设计,在这里不再赘述。数据库在本地的Mysql中可以进行,也可以放入华为云数据库中,这样可以承载更多的数据~接下来是接口的相关...

首先 是进行数据库的设计。

1.book 记录图书的相关信息

2.book_user 记录图书被借阅者借阅了的借阅信息

3.classify 记录图书的分类信息

4.returner 记录图书的归还信息

5.user 记录用户的个人信息

 

具体的设计字段可以根据大家的具体要求进行设计,在这里不再赘述。

数据库在本地的Mysql中可以进行,也可以放入华为云数据库中,这样可以承载更多的数据~

接下来是接口的相关设计,经过后来与后端的联调,让我意识到了接口设计对于整个软件开发的重要性,只有进行了完善的接口设计,并且与前端人员达成一致,才能大大减少后面返工的可能性和工作量。

本次我使用了apipost作为接口工具。分为以下的部分,可以供大家进行参考。

有需要的软件开发同学可以参考下面的apipost网址,打开来是下面的效果。

然后进行代码的编写实践,这里我是采用Springboot、Mybatisplus等进行编写,能在实践过程中充分感受到这类框架的简洁性和友好性。

整体项目的开发骨架如图所示:

common是公共资源,R表示了返回数据的格式;

controller service mapper 三个文件夹所表示的分别是软件开发的controller service mapper三层架构;

entity里面放的则是实体,对应的就是刚刚我们所设计的数据库表。

这里我放一下其中的一部分代码 带大家感受一下:

1:controller层 图书的增删改查

@RestController
@RequestMapping("/bookmanager")
@Slf4j
public class BookController {
    @Autowired
    private BookService bookService;

    @Autowired
    private ClassifyService classifyService;

    @GetMapping()
    public R<List<Book>> list(String name){
        LambdaQueryWrapper<Book> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(name != "", Book::getName, name);
        List<Book> bookList = bookService.list(queryWrapper);
        return R.success(bookList);
    }
    /**
     * 新增图书
     *
     * @param book
     * @return
     */
    @PostMapping()
    public R<String> save(@RequestBody Book book) {
        if(!test(book)) return R.error("不存在分类名,请重新输入");
        log.info(book.toString());
        bookService.save(book);
        return R.success("新增图书成功");
    }
    /**
     * 修改图书
     *
     * @param book
     * @return
     */
    @PutMapping
    public R<String> update(@RequestBody Book book) {
        if(!test(book)) return R.error("不存在分类名,请重新输入");
        log.info(book.toString());
        LambdaQueryWrapper<Book> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Book::getBookId, book.getBookId());
        bookService.update(book, queryWrapper);
        return R.success("修改图书成功");
    }
    /**
     * 删除
     * @param bookId
     * @return
     */
    @DeleteMapping
    public R<String> delete(String bookId){
        Integer integer = Integer.parseInt(bookId);
        LambdaQueryWrapper<Book> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Book::getBookId, bookId);
        bookService.remove(queryWrapper);
        return R.success("删除图书成功!");
    }

//    @DeleteMapping
//    public void delete(String bookId){
//        System.out.println(bookId);
//    }
//



    boolean test(Book book){
        LambdaQueryWrapper<Classify> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Classify::getClassname, book.getType());
        if(classifyService.getOne(queryWrapper) == null){
            return false;
        }
        else return true;
    }
}

2.架构向下 service层:

(1)接口

public interface BookService extends IService<Book> {
}

(2)实现类

@Service
@Slf4j
public class BookServiceImpl extends ServiceImpl<BookMapper, Book> implements BookService {
}

3.继续向下,mapper层:

@Mapper
public interface BookMapper extends BaseMapper<Book> {
}

3.实体类entity:

@Data
public class Book implements Serializable {
    //图书号
    private Long id;
    private Integer bookId;
    //图书类型
    private String type;
    //图书名称
    private String name;
    //作者名称
    private String author;
    //出版社
    private String press;
    //总数量
    private Integer num;


    }

s

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。