个人主页:欢迎访问Ali.s的首页
⏰ 最近更新:2022年10月23日
⛽ Java框架学习系列:【Spring】【SpringMVC】【Mybatis】
Java项目实战系列:【飞机大战】【图书管理系统】
Java算法21天系列:【查找】【排序】【递归】
⛳ Java基础学习系列:【继承】【封装】【多态】
通信仿真学习系列:【硬件】【通信】【MATLAB】
个人简介:通信工程本硕、Java程序员。目前只会CURD
点赞 收藏 留言 都是我最大的动力
这里是【JAVASE】
项目实战的第八节课,前面完成了学生管理、书籍管理、院系管理、登录登出等功能,今天做的是最后的一个模块借阅管理功能,使用【Servlet】
、【AJax】
、【MySql】
、【Session】
来实现借阅卡管理和借阅图书的功能。基本功能模块就介绍到这里,整体项目的源码可以私信找我获取。
欢迎访问Ali.s的首页
与前面的前面的其他模块的功能不太一样,这里需要制作独一无二的借阅卡,与每个学生信息对应,然后通过借阅卡去查询、借阅、归还图书。不仅需要进行联合查询,而且对数据的传递要求较高,需要对【Ajax】
技术掌握较好。
管理员通过给不同的学生生成对应放入借书卡,同时学生可以看到自己的借书卡和对应的状态,凭借自己的借书卡去借阅图书。
public class ReaderCard implements Serializable {
private static final long serialVersionUID = 598227642102145185L;
/**
* 借书卡id
*/
private Integer id;
/**
* 学生编号
*/
private String stuId;
/**
* 学生姓名-冗余字段
*/
private String stuName;
/**
* 借书卡密码
*/
private String password;
/**
* 借书卡状态 0 未使用 1 已使用
*/
private Integer state;
/**
* 是否被删除 0 删除 1未删除
*/
private Integer isDeleted;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStuId() {
return stuId;
}
public void setStuId(String stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getState() {
return state;
}
public void setState(Integer state) {
this.state = state;
}
public Integer getIsDeleted() {
return isDeleted;
}
public void setIsDeleted(Integer isDeleted) {
this.isDeleted = isDeleted;
}
}
后端开发一般从dao
层开始写,然后在业务逻辑成实现业务逻辑,接着使用控制器对页面进行处理和跳转,这里使用UUID
生成唯一与学生对应的密文形式的借书卡。
private void save(HttpServletRequest req, HttpServletResponse resp) throws IOException {
try {
ReaderCard readerCard = RequestParameterUntil.getRequestParameterForReflect(req, ReaderCard.class);
Student student = studentService.queryStudentById(Integer.parseInt(readerCard.getStuId()));
readerCard.setStuName(student.getStuName());
//生成卡密
String password = UUID.randomUUID().toString();
readerCard.setPassword(password)
;
readerCardService.save(readerCard);
resp.sendRedirect("/readerCardServlet?sqltype=query");
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
管理员在管理页面可以看到所有的借书卡信息,而学生在管理页面只能看到自己的借书卡信息,使用学生的唯一字段与信息卡做绑定,就可以使每个学生都有自己唯一的借书卡。
private void querylist(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<ReaderCard>list=null;
User user = (User) req.getSession().getAttribute(Constant.SESSION_LONGIN);
if (!"admin".equals(user.getUserName())){
//如果不是管理员,就只查询当前自己的卡信息
String phone=user.getPhoneNum();
Student stu=studentService.queryByPhone(phone);
//判断是否已有借书卡
if (stu!=null){
list=readerCardService.queryByStuId(stu.getId());
}
}else{
//查询所有的借书卡信息
list=readerCardService.list(null);
}
//进行参数绑定
req.setAttribute("list",list);
//进行页面跳转
req.getRequestDispatcher("/card/card.jsp").forward(req, resp);
}
使用借书卡对不同的书进行借阅和归还操作,不仅要记录借阅记录,这里需要同时更新书籍信息和借书卡信息,
@Override
public Integer borrowLendList(LendList lendList) {
//更新借书卡的状态
ReaderCard readerCard=readerCardService.queryById(Integer.parseInt(lendList.getCardId()));
readerCard.setState(1);
readerCardService.update(readerCard);
//更新书籍的状态
Book book=bookService.queryBookById(lendList.getBookId());
book.setState(BookFlag.BORROW.code);
bookService.updateBook(book);
return listDao.borrowLendList(lendList);
}
@Override
public Integer backLendList(LendList lendList) {
//更新借书卡的状态
ReaderCard readerCard=readerCardService.queryById(Integer.parseInt(lendList.getCardId()));
readerCard.setState(0);
readerCardService.update(readerCard);
//更新书籍的状态
Book book=bookService.queryBookById(lendList.getBookId());
book.setState(BookFlag.FREE.code);
bookService.updateBook(book);
return listDao.backLendList(lendList);
}
启动服务器,让项目在服务器中运行,在借书卡管理页面使用【百里守约】学生的借阅卡,借阅【Java程序设计】书籍。
查看书籍的借阅状态,发现借阅的书籍状态为【借阅中】
归还操作与借阅的操作类似,可以完成书籍的归还,此时借阅卡也更新状态。
以上就是今天要讲的内容,使用【Servlet】
、【AJax】
、【MySql】
、【Session】
来实现借阅管理功能,整个项目到此就介绍完毕,对每个模块进行了详细分析与实现,对自己的基本知识进一步巩固,后面会继续写【SSM】项目。