LibrarySystem图书管理系统(二)攻略
一、概述
本文主要针对“LibrarySystem图书管理系统(二)”的学习内容,进行详细的攻略说明,包括系统的整体架构、功能模块及其实现方式等。
二、整体架构
LibrarySystem图书管理系统(二)是一个基于Java Web技术实现的图书管理系统,主要包含以下几个模块:
- 图书管理模块
- 图书借阅模块
- 图书归还模块
- 用户管理模块
整个系统采用B/S架构,前端使用了HTML、JavaScript、CSS等技术,后端使用了Java Servlet和JSP等技术,同时使用了MySQL作为数据库。
三、功能模块及实现方式
1. 图书管理模块
图书管理模块是系统的核心模块之一,主要实现了图书的添加、修改和删除等功能。其中,添加图书的过程是通过向MySQL数据库添加一条新的图书记录实现的,修改和删除图书的过程则是通过相应的SQL语句实现的。
示例:添加一本新书到系统中
String bookname = request.getParameter("bookname"); // 获取表单提交的图书名称
String author = request.getParameter("author"); // 获取表单提交的图书作者
String publisher = request.getParameter("publisher"); // 获取表单提交的出版社信息
String sql = "INSERT INTO Books(bookname, author, publisher) VALUES(?, ?, ?)"; // 编写SQL插入语句
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = DBUtil.getCon(); // 获取数据库连接
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, bookname); // 设置第一个参数bookname的值
pstmt.setString(2, author); // 设置第二个参数author的值
pstmt.setString(3, publisher); // 设置第三个参数publisher的值
pstmt.executeUpdate(); // 执行SQL插入语句
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(conn, pstmt, null); // 释放资源
}
2. 图书借阅模块
图书借阅模块实现了用户借书的功能,其实现方式为首先查询图书是否可借,如果可借,则将借书记录添加到借书记录表中,并将对应图书的库存数量减1。
示例:借阅一本图书
int bookid = Integer.parseInt(request.getParameter("bookid")); // 获取表单提交的图书ID
String username = request.getParameter("username"); // 获取表单提交的用户名
String sql1 = "SELECT COUNT(*) FROM Borrow WHERE bookid = ?"; // 查询借书记录表中借出此书的数量
String sql2 = "SELECT stock FROM Books WHERE bookid = ?"; // 查询图书库存数量
String sql3 = "INSERT INTO Borrow(bookid, username, borrowdate) VALUES(?, ?, ?)"; // 添加借书记录
String sql4 = "UPDATE Books SET stock = ? WHERE bookid = ?"; // 更新图书库存数量
Connection conn = null;
PreparedStatement pstmt1 = null, pstmt2 = null, pstmt3 = null, pstmt4 = null;
ResultSet rs = null;
try {
conn = DBUtil.getCon(); // 获取数据库连接
pstmt1 = conn.prepareStatement(sql1);
pstmt1.setInt(1, bookid);
rs = pstmt1.executeQuery();
int borrowNum = 0;
while (rs.next()) {
borrowNum = rs.getInt(1);
}
pstmt2 = conn.prepareStatement(sql2);
pstmt2.setInt(1, bookid);
rs = pstmt2.executeQuery();
int stockNum = 0;
while (rs.next()) {
stockNum = rs.getInt(1);
}
if (borrowNum >= stockNum) { // 判断图书是否可借
out.print("库存不足,该书暂时无法借出!");
} else {
Date borrowDate = new Date(); // 获取当前日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String borrowDateString = sdf.format(borrowDate); // 将日期格式化为字符串
pstmt3 = conn.prepareStatement(sql3);
pstmt3.setInt(1, bookid);
pstmt3.setString(2, username);
pstmt3.setString(3, borrowDateString);
pstmt3.executeUpdate(); // 添加借书记录
int newStockNum = stockNum - 1; // 更新图书库存数量
pstmt4 = conn.prepareStatement(sql4);
pstmt4.setInt(1, newStockNum);
pstmt4.setInt(2, bookid);
pstmt4.executeUpdate();
out.print("借书成功!");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(conn, pstmt1, rs);
DBUtil.close(null, pstmt2, null);
DBUtil.close(null, pstmt3, null);
DBUtil.close(null, pstmt4, null);
}
3. 图书归还模块
图书归还模块实现了用户归还图书的功能,其实现方式为首先修改借书记录中的归还日期,然后将对应图书的库存数量加1。
示例:归还一本图书
int borrowid = Integer.parseInt(request.getParameter("borrowid")); // 获取表单提交的借书记录ID
int bookid = 0;
String sql1 = "SELECT bookid FROM Borrow WHERE borrowid = ?"; // 查询图书ID
String sql2 = "UPDATE Borrow SET returndate = ? WHERE borrowid = ?"; // 更新归还日期
String sql3 = "SELECT stock FROM Books WHERE bookid = ?"; // 查询图书库存数量
String sql4 = "UPDATE Books SET stock = ? WHERE bookid = ?"; // 更新图书库存数量
Connection conn = null;
PreparedStatement pstmt1 = null,pstmt2 = null,pstmt3 = null,pstmt4 = null;
ResultSet rs = null;
try {
conn = DBUtil.getCon(); // 获取数据库连接
pstmt1 = conn.prepareStatement(sql1);
pstmt1.setInt(1, borrowid);
rs = pstmt1.executeQuery();
while (rs.next()) {
bookid = rs.getInt(1);
}
Date returnDate = new Date(); // 获取当前日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String returnDateString = sdf.format(returnDate); // 将日期格式化为字符串
pstmt2 = conn.prepareStatement(sql2);
pstmt2.setString(1, returnDateString);
pstmt2.setInt(2, borrowid);
pstmt2.executeUpdate(); // 更新归还日期
pstmt3 = conn.prepareStatement(sql3);
pstmt3.setInt(1, bookid);
rs = pstmt3.executeQuery();
int stockNum = 0;
while (rs.next()) {
stockNum = rs.getInt(1);
}
int newStockNum = stockNum + 1; // 更新图书库存数量
pstmt4 = conn.prepareStatement(sql4);
pstmt4.setInt(1, newStockNum);
pstmt4.setInt(2, bookid);
pstmt4.executeUpdate();
out.print("还书成功!");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.close(conn, pstmt1, rs);
DBUtil.close(null, pstmt2, null);
DBUtil.close(null, pstmt3, null);
DBUtil.close(null, pstmt4, null);
}
4. 用户管理模块
用户管理模块实现了管理员对用户的管理操作,包括添加用户、删除用户和修改用户信息等功能。其中添加用户和删除用户的实现方式与图书管理模块类似,而修改用户信息是通过相应的SQL语句实现的。
示例:修改用户的密码
String username = session.getAttribute("username").toString(); // 获取当前管理员的用户名
String oldpassword = request.getParameter("oldpassword"); // 获取表单提交的旧密码
String newpassword = request.getParameter("newpassword"); // 获取表单提交的新密码
String sql = "UPDATE Users SET password = ? WHERE username = ? AND password = ?"; // 更新用户密码的SQL语句
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = DBUtil.getCon(); // 获取数据库连接
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, newpassword); // 设置新密码
pstmt.setString(2, username); // 设置用户名
pstmt.setString(3, oldpassword); // 设置旧密码
int result = pstmt.executeUpdate(); // 执行SQL更新语句
if (result > 0) {
out.print("密码修改成功!");
} else {
out.print("原密码错误,请重新输入!");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(conn, pstmt, null); // 释放资源
}
四、总结
本文详细介绍了“LibrarySystem图书管理系统(二)”的完整攻略,包括系统的整体架构、各个功能模块的实现方式以及示例说明等内容。通过学习、理解和实践本文所述内容,相信读者已经掌握了该图书管理系统的设计和实现方法,具备了基本的Java Web开发能力。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:LibrarySystem图书管理系统(二) - Python技术站