1、设计任务与目的
功能要求
- 对系统登陆后进行增删改查功能
- 用主页面提供用户登录,包括用户名、密码,管理员可进行“登陆”和“修改”户名,密码登陆
- 管理员系统管理、基础管理、读者管理、图书查询管理、借阅以及归还管理
- 普通用户:图书查询管理、个人信息修改、密码、借阅以及归还管理
2、设计思路
本项目采用B/S工作模式,采用MVC三层架构模式,选用MySQL作为后台数据库。主要实现管理员和学生的登陆。学生登陆后可以进行搜索目前书库中的书,并且可以实现借书与还书。管理员登陆后可以进行查看学生借阅书籍的情况。查看书库书的剩余数量,并对书库中书进行管理。
(1)登陆管理:通过输入用户名和密码进行登陆
(2)图书管理:管理员登陆后可以对书库中的书进行管理
(3)借书管理:学生可以借书与还书
(4)图书检索:学生和管理员可以搜索书库中的书
3、概要设计
Java图书管理系统:
1.后端设计:包含Bean、Dao、Servlet。
1.1 Bean层包含对对象的定义的封装以及set和get方法的实现
1.2 Dao层是对具体操作的实现,例如增删改查。
1.3 Servlet层定义抽象的服务操作。
2.前端设计
本系统的用户界面按功能分为面向读者和面向管理员两个部分:
2.1管理端界面设计管理端主要实现可以完成书籍和学生的增加,删除和修改以及对读者,借阅、续借、归还的确认。
2.2客户端界面设计客户端主要为学生提供借阅、续借、归还和查询书籍等操作
3.1系统结构图设计
3.2 开发工具及运行环境
系统开发环境 IntelliJ IDEA
系统开发语言 Java
数据库 MySql
4、详细设计
4.1系统用户用例图
4.2用户登录用例图
4.3业务流程图
4.4数据流程图
4.5数据字典
用户={管理员|读者}
管理员=管理员id+管理员姓名+管理员账号+密码+邮箱+手机号;
读者=读者id+读者姓名+读者账号+密码+邮箱+手机号+最大可借数+可借天数;
图书=图书id+图书名称+图书号+作者+图书数量+图书分类+图书类型;
图书分类=图书id+分类名称;
借阅=借阅记录的id+读者id+图书id+图书号+图书名称+读者账号+读者姓名+借阅时间+还书时间;
4.6数据库介绍
使用mysql+ Navicat Premium实现数据库的访问和存储相关数据,主要包含4个:
1.Admin:用于存储用户的账号信息,包含管理员和读者的信息,用status来判断是管理员还是读者,读者的值为1,管理员为2。包含的元素有如下:
2.Book:存储书籍的相关信息。
3.booktype:图书类型。
4.history:借阅相关的信息。
4.7 E-R实体图设计
书籍E-R图
读者E-R图
借阅信息E-R图
整体E-R图
5、软件需求
5.1 系统登录模块
图 5-1登陆流程图
具体运行效果如图5-2所示。
其代码关键程序代码如下所录:
//登录的判断
PrintWriter out=response.getWriter();
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
//获取账号和密码
String username=request.getParameter("username");
String password=request.getParameter("password");
AdminDao userDao= new AdminDao();
//对账号和密码进行判断
boolean result= userDao.Login_verify(username,password);
HttpSession session=request.getSession();
//判断输入正确
if (result){
AdminBean adminBean=new AdminBean();
AdminDao adminDao=new AdminDao();
//更加账号和密码查找出读者的信息
adminBean=adminDao.getAdminInfo(username,password);
//将aid存入session中
session.setAttribute("aid",""+adminBean.getAid());
//设置session的失效时间
session.setMaxInactiveInterval(6000);
//根据status的值来判断是管理员,还是读者,status=1为读者
if (adminBean.getStatus()==1){
response.sendRedirect("/index2.jsp");
}else {
response.sendRedirect("/admin.jsp");
}
}else {
//没有找到对应的账号和密码,返回重新登录
session.setAttribute("state","密码错误");
response.sendRedirect("/login.jsp");
}
5. 2 添加图书信息模块
其代码关键程序代码如下所录:
//添加图书
public class AddBookServlet extends HttpServlet {
private static final long serialVersionUID =1L;
public AddBookServlet() {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
String card = request.getParameter("card");
String name = request.getParameter("name");
String type = request.getParameter("type");
String autho = request.getParameter("autho");
String press = request.getParameter("press");
int num=Integer.parseInt(request.getParameter("num"));
BookDao bookdao = new BookDao();
BookDao.addBook(card,name, type,autho,press,num);
response.sendRedirect("admin_book.jsp");
}
5. 3 查看图书借阅记录模块
public class borrowServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public borrowServlet() {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
BookDao bookDao=new BookDao();
int tip=Integer.parseInt(request.getParameter("tip"));
if (tip==2) {
int hid=Integer.parseInt(request.getParameter("hid"));
int show=Integer.parseInt(request.getParameter("show")) ;
bookDao.borrowBook2(hid);
if (show==2){
response.sendRedirect("admin_borrow.jsp");
}else{
response.sendRedirect("borrow.jsp");
}
}else{
int bid=Integer.parseInt(request.getParameter("bid"));
HttpSession session=request.getSession();
String aid=(String) session.getAttribute("aid");
AdminDao adminDao=new AdminDao();
AdminBean admin =new AdminBean();
admin=adminDao.get_AidInfo2(aid);
bookDao.borrowBook(bid,admin);
response.sendRedirect("select.jsp");
}
}
5. 4 添加读者信息模块
图5-5添加读者效果图
其代码关键程序代码如下所录:
String username = request.getParameter("username");
String name = request.getParameter("name");
String password = request.getParameter("password");
String email = request.getParameter("email");
String phone = request.getParameter("phone");
int lend_num = Integer.parseInt(request.getParameter("lend_num"));
int max_num = Integer.parseInt(request.getParameter("max_num"));
AdminDao userdao = new AdminDao();
userdao.Register(username, password, name, email, phone, lend_num, max_num);
response.sendRedirect("admin_user.jsp");
6、可行性研究
现在大多数的图书管理方式为手工处理,重复劳动多,劳动强度大,而且容易出错,新系统的使用能否可以很好的解决这些问题要看系统的可行性,可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。系统的可行性分析有以下几个方面:
(1)经济可行性
系统建设不需要很大的投入、可缩减人力投入。
(2)技术可行性
技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求等。本图书管理系统用的是JAVA开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于目前单机模式相对发展成熟,故软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。
(3)操作可行性
对新系统运行后给现行系统带来的影响(包括组织机构、管理方式、工作环境等)和后果进行估计和评价。同时还应考虑现有管理人员的培训、补充,分析在给定时间里能否完成预定的系统开发任务等。
(4)从各种社会因素可行性
可降低工作人员工作强度,提高效率,会得到学校工作人员的一致同意的。
综上所述通过可行性分析认为新系统的开发方案切实可行,可进行开发。
7、参考文献
[1]FLANAGAN,《Java技术手册》 ., 中国电力出版社,2002年6月
[2]孙一林,彭波,《Java数据库编程实例》.,清华大学出版社,2002年8月
[3]张帆,《java范例开发大全》 ,清华大学出版社,2010年6月