Java Web 图书管理系统
1、项目总体设计1.1、需求分析基于Java Web的图书管理系统该系统应包含图书信息的添加删除修改查询借书还书功能用户层面的查看个人 信息以及登录注销修改用户密码功能以及查询借阅记录功能。该系统区分三种不同的角色管理员、教师、学生。管理员拥有所有的功能可查询所有用户的借阅记录并且可无限借书且无超期限制。教师拥有图书查询借书还书查询个人借阅记录并且拥有用户层面的所有功能最多可借10本书超期天数为10天。学生拥有图书查询借书还书查询个人借阅记录并且拥有用户层面的所有功能最多可借5本书超期天数为8天。用户登录后可访问有权限的资源若未登录重定向到登录页面。借阅记录页面显示用户是否超期并且提示用户距离超期时间还有多少时间。技术选型前台 JSP jQuery CSS后台 Servlet JDBC MySQL权限使用JavaWeb的过滤器来实现1.2、系统功能模块设计2、详细设计2.1、数据库设计2.1.1、user用户表2.1.2、book图书表2.1.3、stock库存表2.1.4、borrow_record借阅记录表2.1.5、role角色表-- 角色表初始化数据INSERTINTOroleVALUES(1,teacher,教师);INSERTINTOroleVALUES(2,student,学生);INSERTINTOroleVALUES(3,admin,管理员);2.1.6、permission操作权限表-- 权限表初始化数据INSERTINTOpermissionVALUES(1,BookAddServlet,图书新增);INSERTINTOpermissionVALUES(2,BookDeleteServlet,图书删除);INSERTINTOpermissionVALUES(3,BookSearchServlet,图书查询);INSERTINTOpermissionVALUES(4,BookUpdateServlet,图书修改);INSERTINTOpermissionVALUES(5,BorrowBookServlet,借书);INSERTINTOpermissionVALUES(6,ReturnBookServlet,还书);INSERTINTOpermissionVALUES(7,BorrowRecordSearchServlet,借阅记录查询);2.1.7、role_permission角色权限对应表-- 角色权限映射表初始化数据INSERTINTOrole_permissionVALUES(1,1,3);INSERTINTOrole_permissionVALUES(2,1,5);INSERTINTOrole_permissionVALUES(3,1,6);INSERTINTOrole_permissionVALUES(4,1,7);INSERTINTOrole_permissionVALUES(5,2,3);INSERTINTOrole_permissionVALUES(6,2,5);INSERTINTOrole_permissionVALUES(7,2,6);INSERTINTOrole_permissionVALUES(8,2,7);INSERTINTOrole_permissionVALUES(9,3,1);INSERTINTOrole_permissionVALUES(10,3,2);INSERTINTOrole_permissionVALUES(11,3,3);INSERTINTOrole_permissionVALUES(12,3,4);INSERTINTOrole_permissionVALUES(13,3,5);INSERTINTOrole_permissionVALUES(14,3,6);INSERTINTOrole_permissionVALUES(15,3,7);2.2、功能实现2.2.1、登录输入用户名密码系统校验正确后方可登录成功进入系统。系统登录成功后将用户信息放置在session中。有其他请求进入系统后会被Java Web Filter拦截器拦截判断session中是否存在用户信息如果存在证明用户已经登录则允许继续访问否则重定向到登录页面核心代码见下图2.2.2、注册用户填写注册信息选择相应的角色本系统有三种角色管理员、教师、学生即可注册成功插入用户表。2.2.3、查看个人资料用户点击个人资料前台jQuery发送Ajax请求查询用户信息servlet将用户信息返回至前台页面核心代码如下2.2.4、修改密码用户登录成功后方可修改密码2.2.5、图书查询提供三个查询条件选择图书条码、图书名称、出版社均精确查找前台页面使用jQuery发送Ajax请求请求到达BookSearchServlet后由BookSearchServlet去调用BookDao提供的search方法search方法根据前台传过来的查询条件动态拼接sql语句使用jdbc做数据库查询操作查询结果由servlet返回至前台前台jQuery得到响应结果后动态的为图书table添加行核心代码如下2.2.6、图书编辑只有管理员角色才拥有此操作权限。前台通过jQuery发送Ajax请求到达BookUpdateServletservlet接收到http请求后调用BookDao提供的update方法通过jdbc做book表的update操作。核心代码如下2.2.7、图书删除只有管理员角色才拥有此操作权限。前台通过jQuery发送Ajax请求到达BookDeleteServletservlet接收到http请求后调用BookDao提供的delete方法通过jdbc做book表的delete操作。核心代码如下2.2.8、图书入库只有管理员角色才拥有此操作权限。前台通过jQuery发送Ajax请求到达BookAddServletservlet接收到http请求后调用BookDao提供的insert方法通过jdbc做book表的insert操作。核心代码如下2.2.9、借书前台通过jQuery发送Ajax请求到达BorrowBookServletservlet接收到http请求后首先调用StockDao提供的search方法查询图书的当前库存数量若库存不足返回“库存不足无法借书”如果库存充足接着调用BorrowRecordDao提供的search方法查询登录人的借书未还数量如果已经达到最大借书数量管理员没有限制教师最大数量为10学生为5则返回前台“已达到最大借书数量不允许继续借书”如果条件都满足后开启数据库事务做以下两个操作两个操作都成功后将事务提交如果有一个失败则将该事务回滚保证数据的一致性1、调用StockDao的update方法通过jdbc操作stock表将该书的库存-12、调用BorrowRecordDao的insert方法通过jdbc操作borrow_recod表插入一条借阅记录核心代码如下2.2.10、查询借阅记录管理员角色可以查看所有用户的借阅记录其他角色只能查询本人的借阅记录。前台通过jQuery发送Ajax请求到达BorrowRecordSearchServletservlet接收到http请求后首先调用BorrowRecordDao提供的search方法查询用户的借阅记录。查询到借阅记录集合后做遍历操作计算每条借阅记录距离超期时刻的时间间隔并且计算该借阅记录是否超期管理员没有超期限制教师最长借书天数为10学生为8数据计算完成后由BorrowRecordSearchServlet返回前台前台jQuery得到响应后遍历列表动态向借阅记录table添加行。核心代码如下2.2.11、还书用户点击还书按钮首先判断该借阅记录是否有还书时间若有提示前台“该书已还”。前台jQuery发送ajax请求到ReturnBookServletservlet接收到用户请求后首先查询当前登录人是否为该借阅记录的借书人如果不是则返回前台“不允许替他人还书”条件满足后开始事务做以下两个操作1、调用StockDao的update方法通过jdbc操作stock表做update操作将本书的库存12、调用BorrowRecordDao的update方法通过jdbc操作borrow_record表做update操作将该借阅记录的还书时间更新为当前时间这两个操作全部都正确执行后提交事务否则将事务回滚保证数据的一致性核心代码如下2.2.12、注销登录用户点击退出按钮后jQuery发送ajax请求到LogoutServletservlet接收到用户请求后将session中的用户信息置空由jQuery重定向到登录页面核心代码如下2.2.13、权限校验举例学生角色用户做图书删除操作会提示“抱歉您没有该权限”该权限校验功能采用Java Web Filter实现系统启动时先将三种角色对应的所有权限加载到系统中然后再过滤器中对用户的请求做过滤校验操作如果用户拥有该权限则继续执行。核心代码如下3、项目总结本项目采用JSP Servlet JDBC jQuery MySQL架构实现程序运行结果良好代码格式工整。适合作为入行者、学生等学习使用。