本项目是基于Java Web开发技术,采用Struts2框架实现的一个图书管理系统。系统包含了用户管理、书籍信息管理和借阅记录等核心功能模块,并提供全面的增删改查操作接口,适用于图书馆或小型书店的日常业务处理需求。
### 功能简介
1. **图书管理系统**:实现一个能够管理图书馆书籍的系统,并将所有数据存储在数据库内。
- 图书包含的信息有:编号、名称、作者名、价格及备注信息。
2. **用户与权限管理**
1. 用户分为两类,分别是管理员和普通用户;
2. 提供注册功能以及登录验证机制。其中需要的登陆信息包括用户名和密码。
3. 管理员负责对用户的管理和图书的操作(创建、查询、修改及删除)。
4. 普通用户仅能查看书籍,并进行借阅与归还操作,每人最多可同时持有8本书籍。在达到这个上限后,必须先归还才能再借。
### 使用技术
- Struts2框架
- MySQL数据库
- C3P0数据池
- JSP、HTML、CSS和JavaScript
### 设计思路
1. 利用Struts2进行编程设计,并通过MySQL执行对书籍信息的增删改查操作。页面美化使用Jsp、Html、Css及JavaScript。
2. 创建两个数据库表,分别为book(存放图书数据)与user(存储用户资料)。其中在user表中设置一个标识位用于区分管理员和普通用户的权限差异。
3. 设计Book类和User类来映射对应的数据库表格。每个对象都有唯一的ID属性用来唯一识别。
4. 使用C3P0配置文件及连接工具类建立与数据库的链接,同时创建操作用户信息(UserDao)以及图书信息(BookDao)的方法集。
5. 创建两个Action:UserAction、BookAction,并通过注解的方式来定义它们的功能和行为。
6. 在注册时区分不同类型的账号,在登录后根据类型决定进入不同的主页面进行相应的管理或查询等操作。
7. 管理员能够执行对用户的全部管理任务(如显示用户信息,模糊搜索,删除及批量选择)以及图书的相关处理工作;
8. 普通账户可以查看书籍,并完成借书和还书的操作。当点击“借阅”按钮时,系统将更新对应记录的borrowperson字段为当前登录者的名字;同样地,“归还”操作会清空该字段。
### 存在的问题
1. 原计划是每个用户都拥有一个独立的数据表来存放其借书信息,但由于SQL语句无法直接嵌入Java代码中执行这一限制而未实现。因此选择为book表添加borrowperson列以记录当前的持有者。
2. 在进行模糊查询时遇到困难,因为同时需要where筛选条件导致原生SQL失效。最终采用先模糊搜索再遍历结果集的方法解决。
### 改进预想
1. 实现验证码登录功能;
2. 查询内容分页显示;
3. 优化Action之间的值传递方式;
4. 进一步美化页面设计。
5. 记录用户借书和还书的时间,并设置合理的借阅时间限制。