图书管理系统,可以连接华为云数据库等数据库
首先 是进行数据库的设计。
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
- 点赞
- 收藏
- 关注作者
评论(0)