第三章 总体设计

3.1 系统功能结构图

新型的图书馆管理系统为现代图书馆提供了一个操作更简单,实用性更好的一个图书馆管理平台。在系统中,可以进行登录,借书还书,管理图书信息,管理会员信息等操作。系统实现的模块包括:

  1. 登录模块:根据输入的内容判断身份进入不同页面。
  2. 主页模块

(3)借书还书模块:借书还书。

  1. 图书管理模块:图书的增删改查。

(3)图书分类管理模块:图书分类的增删改查。

(4)会员信息管理:会员的增删改查。

系统功能结构图,如图3-1所示:

图3-1 系统功能结构图

3.2 系统用例图设计

设计图书馆管理系统,用户分为两种,一种是会员,另一种是管理员。

(1)会员:通过管理员进行注册办理借书卡,会员用例图如图3-2所示:

图3-2 会员用例图

(2)管理员:管理员可以进行图书信息管理、图书分类管理、会员信息管理、逾期还书管理。管理员用例图如图3-3所示:

图3-3 管理员用例图

3.3 系统登录模块

用户输入账号和密码登陆,当登陆成功后,系统判断是不是管理员,如果是管理员则进入管理员首页,如果不是则进入到会员首页。具体页面如图3-4所示:

图3-4 系统登陆流程图

在登陆模块,系统可以根据用户权限的不同登陆不同的页面。具体如图3-5所示:

图3-5 登陆状态图

3.4 图书管理模块

管理员登陆系统,当登陆成功后在图书管理模块可以对图书进行编辑和删除处理。具体如图3-6所示:

图3-6 图书管理流程图

在图书查看模块下面有俩个主要功能分别是编辑和删除。具体如图3-7所示:

图3-7 图书管理状态图

3.5 图书订单管理模块

管理员登陆后台管理系统,在图书订单管理模块,可以查看图书的订单,同时管理员可以对订单进行发货和退款处理。具体如图3-8所示:

图3-8 图书订单流程图

在图书订单模块下面有俩个主要功能分别是发货和退款。具体如图3-9所示:

图3-9 图书订单状态图

3.6 会员管理模块

当管理员登陆成后在用户列表可以查看用户的信息,也可以对用户进行编辑和删除处理。具体如图3-10所示:

图3-10 用户管理流程图

在会员列表模块下面有俩个主要功能分别是编辑和删除。具体如图3-11所示:

图3-11 用户管理状态图

3.7借书模块

会员首先浏览图书信息,然后点击借书模块,系统判断是否达到了借阅的上限,如果达到了则借阅失败,如果没有达到则判断这本书该用户是否借过,如果没有借过则提示借书成功,如果借过则结书失败。具体功能模块图如图3-12所示:

图3-12 借书流程图

在借书模块下面有俩个主要功能分别是查看书籍和申请借阅。具体如图3-13所示:

图3-13 借书状态图

3.8 还书模块

用户点击已经借过的图书,点击还书按钮,系统判断是否逾期,如果没有则提示还书成功,如果逾期,则提示先缴费再还书。具体功能模块图如图3-14所示:

图3-14 还书流程图

在还书模块下面有俩个主要功能分别是查看书籍和申请还书。具体如图3-15所示:

图3-15 还书状态图

3.9 数据库设计

3.9.1 数据库的概念结构设计

通过分析,可以发现本系统有三个实体:会员、图书、管理员。结合实体数据及其关系,可以绘制出E-R图。图书馆管理系统E-R图如图3-16所示:

图3-16 会员E-R图

图3-17 图书E-R图

图3-18 管理员E-R图

图3-19图书分类E-R图

3.9.2 数据库的逻辑结构设计

表3-1 图书信息表(book)

表3-2 图书分类表

表3-3性别表

表3-3 图书借阅表

表3-4 角色表

表3-5 用户表

第四章 系统的实现

4.1 登陆模块页面设计

用户模块主要实现了用户登录,图书信息浏览,图书信息查询,借书还书等功能。

登录需要用户的帐号和密码,如果不填,将无法激活登录按钮,如果错填,将会提示帐号或密码错误。当输入正确的用户名和密码以后,会跳转到对应的用户主页面,并将相关登录信息记录到session对象中,用于显示登录人的信息。登录图如下图4-1所示。

图4-1 用户登录图

部分代码如下:

<div class="container">

<div class="row">

<div class="col-lg-12">

<div class="alert alert-info">

<a class="close" data-dismiss="alert" href="#">×</a>

欢迎登录图书馆管理系统

</div>

<form class="bootstrap-admin-login-form" method="post" action="/books/LoginServlet">

<%

String state = (String)session.getAttribute("state");

session.removeAttribute("state");

if(state!=null){

%>

<label class="control-label" for="username">密码错误</label>

<%}%>

<div class="form-group">

<label class="control-label" for="username">账 号</label>

<input type="text" class="form-control" id="username" name="username" required="required" placeholder="账号"/>

<label class="control-label" for="username" style="display:none;"></label>

</div>

<div class="form-group">

<label class="control-label" for="password">密 码</label>

<input type="password" class="form-control" id="password" name="password" required="required" placeholder="密码"/>

<label class="control-label" for="username" style="display:none;"></label>

</div>

<label class="control-label" for="password">没有账号请<a href="/books/register.jsp" style="color:blue;">注册</a></label>

<br>

<input type="submit" class="btn btn-lg btn-primary"  value="登    录"/>

</form>

</div>

</div>

</div>

4.2 图书管理模块页面设计

主页模块分为用户的主页和管理员的主页,其中用户的主页主要包括图书信息浏览,图书检索,借书还书等功能。管理员的主页主要包括图书信息浏览,图书管理,会员管理,逾期还书缴费等功能。其中主页主要是用于展示本系统的主要功能,类似于使用向导。用户主页和管理员主页如图4-2和4-3所示:

图4-2 用户主页

图4-3 管理员主页

4.2.1 图书信息浏览页面设计

此模块用于显示所有图书的基本信息,包括编号,作者,书名,价钱等等。另外,图书检索也在本页面进行,可以根据图书编号进行精确查找,也可以根据图书名称进行模糊查询。其中有一项比较重要的技术,也是比较难处理的技术,就是分页技术,需要注意的几点就是当前页,总页数,每页的条数以及数据库中的总条数。这里我贴出主要的代码。

String p = request.getParameter("page");

int pageNo = 1;

if(p!=null){

pageNo = Integer.parseInt(p);

}

if(pageNo<1){

pageNo++;

}

bService = new BookService();

List<Book> list = new ArrayList<Book>();

int rowCount;

try {

rowCount = bService.getRowCount("");

System.out.print("=========rowCount"+rowCount);

Pager pager = new Pager(rowCount,5, pageNo);

list = bService.getAllBooks(pager);

System.out.print("=========list"+list.size());

request.setAttribute("list", list);

request.setAttribute("total_page", pager.getPageCount());

request.setAttribute("pageNo", pageNo);

request.setAttribute("rowperpage", pager.getRowPerPage());

int num = bService.getNum();

request.setAttribute("num", num);

RequestDispatcher rd = request.getRequestDispatcher("Allbooks.jsp");

rd.forward(request, response);

} catch (SQLException e) {

e.printStackTrace(); }

图4-4 用户图书浏览图

图4-5 管理员图书信息浏览图

这里用户界面,我把借阅模块与信息浏览模块放在一块,一方面可以使界面看起来整洁清爽,另一方面也比较实用。同样的管理员界面,我把图书浏览,图书检索,图书管理功能一并放到一起,使整个系统的操作显得简单易上手。

4.2.2 图书新建页面社交

图书管理模块包括新增图书,删除图书,修改图书。其中考虑到优化系统界面以及交互的便利,我把修改图书与删除图书放到了图书信息浏览界面(管理员),这样便于管理员的操作。新增与删除没什么好说的,简单的录入与删除。而值得一提的是修改功能,为了最大化的加强交互性,在点击修改图书信息的时候会把原图书的信息都打印出来,在<input>框中以value的形式输出出来,这样会很方便,因为有的时候,我们可能只需要修改图书信息的某几条或者是某一条信息,这样设计的话,是可以实现这种情况的。

图4-6 新增图书

部分代码如下:

<div class="row">

<div class="col-lg-12">

<div class="panel panel-default bootstrap-admin-no-table-panel">

<div class="panel-heading">

<div class="text-muted bootstrap-admin-box-title">查询</div>

</div>

<div class="bootstrap-admin-no-table-panel-content bootstrap-admin-panel-content collapse in">

<form class="form-horizontal" action="/books/selectServlet" method="post">

<input type="hidden" name="tip" value="1">

<div class="col-lg-7 form-group">

<label class="col-lg-4 control-label" for="query_bname">图书名称</label>

<div class="col-lg-8">

<input class="form-control" id="bookName" name="name" type="text" value="">

<label class="control-label" for="query_bname" style="display: none;"></label>

</div>

</div>

<div class="col-lg-3 form-group">

<button type="submit" class="btn btn-primary" id="btn_query" οnclick="">查询</button>

</div>

<div class="col-lg-3 form-group">

<button type="button" class="btn btn-primary" id="btn_add" data-toggle="modal" data-target="#addModal">添加图书</button>

</div>

</form>

</div>

</div>

</div>

</div>

4.2.3 图书分类页面设计

每本图书都有自己的分类,而分类也很重要,因为图书分类可以帮助用户很快的找到图书所在位置所以也要对图书分类进行设计,图书分类管理设计包括新增图书分类,修改图书分类,删除图书分类以及图书分类检索。其中这些功能都在一个页面实现,整个页面很简洁,不会显得拥挤繁杂。

同样的这里也用到了跟图书一样的分页技术,核心代码我就不贴出来了,上面都有,其余的新增修改删除等功能都与图书管理大致类似,在这里不做过多阐述。

图4-7 图书分类管理

部分代码如下:

<div class="row">

<div class="col-lg-12">

<div class="panel panel-default bootstrap-admin-no-table-panel">

<div class="panel-heading">

<div class="text-muted bootstrap-admin-box-title">图书分类管理</div>

</div>

<div class="bootstrap-admin-no-table-panel-content bootstrap-admin-panel-content collapse in">

<form class="form-horizontal" action="/books/selectServlet" method="post">

<div class="col-lg-3 form-group">

<button type="button" class="btn btn-primary" id="btn_add" data-toggle="modal" data-target="#addModal">添加分类</button>

</div>

</form>

</div>

</div>

</div>

</div>

4.3 图书订单管理模块页面设计

在图书订单管理模块页面下面,管理员可以看到用户的下单地址、用户的姓名、状态和操作等等。具体如图4-8所示:

图4-8 图书订单页面设计

4.4 会员信息管理模块页面设计

会员信息管理模块是管理员特有的模块,这也是目前为止最不好替换为自助的一个模块。因为考虑到是图书馆管理系统,所以关于对会员信息的一些操作都是属于设计到安全的方面,所以还是放到管理员模块里来比较合适。这个模块不同于缴费模块,缴费模块后期其实也是可以实现自助的,只要处理好第三方支付的方式就好处理了。

这个模块的主要内容是对会员的操作,如注册,修改会员的具体信息等操作。本系统不同于一般的系统,一般正常的系统是用户进行自助注册的,本系统是图书馆管理系统,设计到图书馆业务,不是普通的电子商务,所以注册这种硬性条件还是得通过人工办理,类似于读书证,借书证的作用。交互页面图如图4-9所示:

图4-9 会员信息管理图

关于新增会员以及新增图书的功能,是没有要求输入编号的,在这里我用的方法是首先获得数据库中最大的编号然后执行加一操作,返回值用作新的编号添加到数据库,这样会永远不会出现重复。后来学到了另一种技术就是获取系统当前时间用作编号,这样既永远不会重复,还可以保证安全性。以后会进行尝试这样的做法。新增会员图,如图4-10所示:

图4-10 新增会员图

部分代码如下:

<div class="row">

<div class="col-lg-12">

<div class="panel panel-default bootstrap-admin-no-table-panel">

<div class="panel-heading">

<div class="text-muted bootstrap-admin-box-title">读者管理</div>

</div>

<div class="bootstrap-admin-no-table-panel-content bootstrap-admin-panel-content collapse in">

<form class="form-horizontal" action="/books/selectServlet" method="post">

<div class="col-lg-3 form-group">

<button type="button" class="btn btn-primary" id="btn_add" data-toggle="modal" data-target="#addModal">添加读者</button>

</div>

</form>

</div>

</div>

</div>

</div>

4.5 借书模块页面设计

我的图书模块只存在与用户登录页面,在这个模块里可以看到用户已经借阅的图书,如果没有,则会弹框提示当前未借图书。在这个页面下可以显示我借的图书,同时后面会有一个还书按钮,点击会提示是否还书,这也体现了本系统的“自助借书还书理念”,但是如果还书截止日期已到的话,会提示已经超过还书日期,需要联系管理员进行缴费还书。

图4-11 我的图书

以上是用户自助还书模块,借书模块与图书信息浏览模块放在了一起,这样用户在浏览图书的过程中就可以直接点击借书了,这样会很方便,同时也是对系统的一种优化。

4.6 还书模块页面设计

还书模块是在点击主页的还书与缴费按钮时触发一个弹框,要求管理员输入需要还书的会员编号,如图4-12所示:

图4-12 还书与缴费图

第五章 系统测试

5.1登录模块测试

使用户名和密码的框都为空,测试系统是否会提示。测试页面如图5-1所示:

图5-1 为空登录测试

使用错误的用户名和密码组合测试登录验证功能。

图5-2 错误的用户名密码组合测试

当输入正确的用户名密码组合以后,系统会根据不同的组合判断身份分别进入不同的首页,管理员进入管理员首页,对应的会员进入会员首页。而且会在右上角显示登录人信息。

图5-3 会员登录信息

图5-4 管理员登录信息

5.2 图书管理模块测试

5.2.1 新增图书测试

点击首页的图书管理>>新增图书,填写书名,作者,价格,选择分类,数量等基本信息。

图5-5 新增图书

填好信息后点击添加,会弹出“添加成功!”的提示框。点击确定后跳转到图书信息浏览界面,可以看到这本名为《和自己对话》的书已经添加成功。

图5-6 新增图书成功

5.2.2 修改图书信息测试

点击首页的图书管理>>查看图书,点击想要修改的图书信息后面的黄色“修改”按钮,在新页面修改想要修改的内容后点击提交。

图5-7 图书修改

这里我们把《和自己对话》的总数量和在馆数量修改为99,点击提交,弹出“修改成功!”的提示框,点击确定后返回图书浏览界面可以发现《和自己对话》的数量和在馆数量已经被修改成99了。

图5-8 图书修改成功

5.2.3 图书删除测试

点击首页图书管理>>查看图书,点击想要删除的图书信息后面的红色删除按钮,会弹框提示是否删除,点击确认后删除并返回查看图书页面。

图5-9 图书删除

在这里我们点击了《和自己对话》图书信息后面的删除按钮,点击确认后弹出“删除成功!”提示框,点击确认后返回查看图书页面,此时可以发现《和自己对话》这本书已经被删除了。

图5-10 图书删除成功

5.2.4 图书检索测试

图书检索分为按编号进行精确查找和按名称进行模糊查询。接下来分别测试查询编号为“1008”和图书名称为“中”的图书。

图5-11 按编号进行查询

根据查询结果可以发现两种检索方式都是正确无误的。

图5-12 按名称进行模糊查询

5.2.5 新增图书分类测试

点击首页图书分类管理>>查看图书分类,在图书分类名称中直接填写要添加的图书分类名称然后点击添加。

图5-13 添加图书分类

这里我们选择添加名为测试的图书分类,点击添加后弹框提示确认添加,点击确定后弹出提示框“新增分类成功!”点击确定后返回查看图书分类页面。此时可以发现“测试”已经添加成功了。

图5-14 添加图书分类成功

5.2.6 修改图书分类测试

点击首页图书分类管理>>查看图书分类,点击想要修改的图书分类信息后面的黄色按钮修改进入修改页面,在填写新的名称后点击提交,弹出提示框修改成功,点击确认返回查看图书分类页面。

图5-15 图书分类修改

这里我们选择把“测试”修改为“test”,可以发现已经修改成功了。

图5-16 图书分类修改成功

5.2.7 删除图书分类测试

点击首页图书分类管理>>查看图书分类,点击想要修改的图书分类信息后面的红色按钮删除,弹出确认框“确认删除?”点击确定后删除该条数据并返回查看图书分类页面。

图5-17 图书分类删除

这里我们选择删除“test”这条信息,点击确认后,返回查看图书分类页面,可以发现删除成功了。

图5-18 图书分类删除成功

5.2.8 图书分类检索

图书分类检索在这里是根据分类名称的模糊查询,在图书名称框中输入需要检索的分类名称后点击检索。

图5-19 图书分类检索

这里我们输入“文”来检索所有包括“文”的图书分类,可以发现,图书分类检索功能测试成功。

5.3 图书当你孤单管理模块测试

管理员可以点击发货按钮来进行发货,同时也可以对订单进行修改。具体如图5-20所示:

图5-20 修改订单页面

5.4会员管理模块页面测试

5.4.1 新增会员测试

点击首页会员管理>>新增会员,填写会员姓名以及会员密码并点击添加,弹出提示框“注册成功”,点击确定后返回查看会员信息界面。

图5-21 新增会员

点击确定后返回查看会员信息界面,可以发现测试成功。

图5-22 新增会员成功

5.4.2 修改会员信息测试

点击首页>>查看会员,点击想要修改的会员信息后面的黄色修改按钮,在新页面中修改需要修改的信息然后点击提交。

图5-23 修改会员信息

这里我们选择修改刚刚添加的名为“test”的会员信息,把“test”修改为“小文”,点击确定后返回查看会员页面可以发现测试成功了。

图5-24 修改会员信息成功

5.4.2 删除会员测试

点击首页>>查看会员,然后点击想要删除的会员信息后面的红色删除按钮。

图5-25 删除会员

这里我选择删除名为“小文”的会员信息,点击确定后弹出提示框“删除成功!”,点击确定返回查看会员页面可以发现测试成功。

图5-26 删除会员成功

5.4.3 会员信息检索测试

会员信息检索这里分为按编号精确检索和按姓名模糊检索两种。点击首页会员管理>>查看会员,分别在会员编号文本框和会员姓名文本框里填写想要查询的信息进行查询。为了方便显示,这里我先多添加几条信息用于演示。

图5-27 按会员编号检索

这里我们可以发现成功检索出了编号为1003的会员的信息,所以根据会员编号进行检索测试成功。

图5-28 按会员名称进行检索

这里我们可以发现成功检索出了所有会员姓名中包含“小”的会员,所以按会员姓名进行模糊查询测试成功。

5.5 借书模块页面设计测试

用户借书模块页面,选择图书类别,图书名称、图书编号、作者等等,点击查询,然后点击借阅就可以借阅图书了。

图5-29 借书模块页面设计

5.6 还书模块页面设计测试

在管理员输入用户编号以后,会显示所输入的用户的当前所借所有图书的信息,其中已经逾期的图书后面会有一个还书并缴费按钮,点击后会弹框提示缴费金额,确认后会提示还书缴费成功。

图5-30 显示用户借书信息图

基于JSP的图书管理系统相关推荐

  1. 基于JSP(java)图书管理系统的设计和实现(含源文件)

    获取项目源文件,联系Q:1225467431,可指导毕设,课设 摘 要 伴随着互联网的蓬勃发展,人们已经不再满足于信息的浏览和发布,而是渴望着能够充分享受网络所带来的更加多的便利.掌握计算机知识和应用 ...

  2. 基于jsp的图书管理系统_计算机毕业设计基于JSP书籍租阅管理系统的设计与实现...

    系统总业务流程图: 普通用户业务流程图: 管理员业务流程图: 系统功能需求设计: 1.系统用户管理:超级管理员和普通管理员都需要对系统用户进行管理,包括添加.删除.修改和查询普通管理员,修改管理员密码 ...

  3. 基于javaweb的图书管理系统(java+jsp+layui+bootstrap+servlet+mysql)

    基于javaweb的图书管理系统(java+jsp+layui+bootstrap+servlet+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse ...

  4. java图书销售系统,基于jsp的图书销售管理系统-JavaEE实现图书销售管理系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的图书销售管理系统, 该项目可用各类java课程设计大作业中, 图书销售管理系统的系统架构分为前后台两部分, 最终实 ...

  5. 含文档+PPT+源码等]精品基于SSM的图书管理系统[包运行成功]

     博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 含文档+PPT+源码等]精品基于SSM的图书管理系统[包运行成功] 系统介绍 & ...

  6. 基于SpringBoot的图书管理系统[毕业设计]

    基于SpringBoot的图书管理系统[毕业设计] 前言 该图书管理系统是基于SpringBoot的项目,包含源码和非正式论文,下载地址: https://download.csdn.net/down ...

  7. 【JAVA程序设计】基于SSM的图书管理系统-有论文文档

    基于SSM的图书管理系统-有文档 项目获取 项目简介 开发环境 项目技术 功能结构 文档目录 运行截图 项目获取 获取方式(点击下载):是云猿实战 项目经过多人测试运行,可以确保100%成功运行. 项 ...

  8. (附源码)计算机毕业设计SSM基于vue的图书管理系统2022

    (附源码)计算机毕业设计SSM基于vue的图书管理系统2022 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclis ...

  9. java图书馆管理系统_六天写出来的基于Swing的图书管理系统你不来吐槽一下?

    前段时间学习完了MySQL和JDBC,想着自己做个东西实战一下,于是写了一个烂大街的图书管理系统...但好歹是自己一个人日夜兼程,硬着头皮做出来的还像样的东西,总结一手吧.看的人欢迎吐槽.我会从以下几 ...

  10. java动物乐园_基于jsp的动物园管理系统-JavaEE实现动物园管理系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的动物园管理系统, 该项目可用各类java课程设计大作业中, 动物园管理系统的系统架构分为前后台两部分, 最终实现在 ...

最新文章

  1. ggplot2 图形排版:patchwork 包简单入门
  2. myeclipse同时部署两个项目-permgen space
  3. cisco vPC技术
  4. javascript函数调用的各种方法!!
  5. sccm终于把用户装软件的问题解决了
  6. Keil(MDK-ARM-STM32)系列教程(六)Configuration(Ⅱ)
  7. Linux之进程管理基础概念
  8. JQuery EasyUI 1.5.1 美化主题大包
  9. MCMC算法深入理解
  10. WS2:Windows系统中嵌入式Linux开发之神器
  11. Unity实时全局光照和烘焙全局光照 Unity2019
  12. Linux中文件颜色代表类型
  13. FPGA 之 SOPC 系列(七)NIOS II 高级技术
  14. 大数据入门学习:SQL与NOSQL数据库
  15. 数据结构课后习题答案
  16. eclipse如何用Debug调试程序
  17. 计算机操作系统 - 目录
  18. 在线免费pdf转ppt工具分享
  19. 计算机二级的关系与关系模式一样吗,2013年计算机二级access关系数据库知识
  20. 会用Retrofit了?你也能自己动手写一个!

热门文章

  1. 如何部署WAR到tomcat?
  2. DPDK DPVS 笔记 -> 基本框架整理
  3. c++ PP第九章最后一题
  4. android信息实现,Android 信息分享实现
  5. MFC字符串操作(一)MFC CString 成员函数用法大全
  6. MySQL 入门(七)—— 视图
  7. 一般的病毒通过注册表自启动的方式不断完善中。。。。
  8. sqlserver2010教程百度云盘_SQLServer数据库基础教程(72集),全套视频教程学习资料通过百度云网盘下载...
  9. 万能表单资料管理系统
  10. Linux中ctrl+z 和trl+c的区别以及jobs、bg、fg命令