zoukankan      html  css  js  c++  java
  • 图书管理系统设计与实现—看这篇就够了

    图书管理系统设计与实现

    图书馆人员结构复杂,人员数量有限,涉及方面很广,如果还使用手工操作处理图书借阅问题,工作将非常繁琐,需要大量的人力、物理、财力,极大的浪费了资源,对于图书管理人员来说,图书馆管理包括图书信息管理、图书类别管理、借阅信息管理、管理员信息管理等等。而这些项目在过去靠手工操作,需要手工记录这些事情,不但麻烦,还经常出错,给广大用户带来很多不便,因此,开发这样一套图书馆管理系统软件。让管理员方便的管理图书及用户信息,方便用户查找图书。

    1、本课程设计的目的

    (1)掌握企业级应用系统的基本开发流程;
    (2)培养开发者掌握应用系统设计的基本思路和方法;
    (3)培养开发者分析、解决问题的能力;

    2、系统要实现的功能概述

    (1)用户登录。管理员或会员根据用户名和密码进行身份验证登录系统。
    (2)图书管理。根据图书编号、图书名称查询图书基本信息添加、修改、删除图书。
    (3)读者管理。根据账号、姓名查询读者基本信息。添加、修改、删除读者信息。
    (4)图书分类管理。根据分类名称查询图书分类信息。添加、修改、删除图书分类。
    (5)图书借阅。展示所有正在借阅图书的信息。
    (6)图书归还。展示所有已归还图书的信息。
    (7)修改和查询个人信息。

    3、实现平台及技术

    (1)JAVA语言
    (2)MYSQL数据库
    (3)WINDOWS 10操作系统
    (4)JAVAEE 技术
    (5)Servlet技术
    (6)Eclipse工具
    (7)Html、css、JavaScript

    4、需求分析

        系统的主要目的是实现一个图书管理系统。系统有2类用户分别为管理员、 读者会员。管理员经口令认证进人系统后,管理员可完成维护系统的功能,包括管理图书和管理会员。读者会员则完成查询图书、修改个人资料、查询个人借阅信息、归还借阅图书的功能,工作完成后可以退出系统。

    5、系统功能模块划分

    5.1 系统总体功能模块划分

    在这里插入图片描述

    5.2 用户登录模块

        当用普通用户输入用户名和密码后,进行验证,如果用户名和密码其中有一个不正确,则不能登录,并有相应的提示,如果用户没有账号,可以在登录页面进行注册,普通用户可以进行个人资料的查询、修改和修改密码,普通用户可以查询图书信息并借阅和退还,在首页面会展示图书借阅信息和借阅历史信息。

        当用管理员输入用户名和密码后,进行验证,如果用户名和密码其中有一个不正确,则不能登录,并有相应的提示,管理员可以进行个人资料的查询、修改和修改密码,管理员可以对图书信息,读者信息,借阅信息进行查看和管理,对图书进行分类

    在这里插入图片描述

    5.3 图书信息管理模块

        管理员对图书的数量,图书号,图书类型,图书名称等进行修改、删除管理,如果普通用户在线借书,图书总数会相应减少。
    在这里插入图片描述

    5.4 读者管理模块

         管理员对读者信息可以进行进行修改、删除,并且可以主动添加新用户,该模块显示用户借阅天数,天数会自动变化,管理员可以在线监控读者借阅天数,如果到期未还者,账号则不能登录。

    在这里插入图片描述

    5.5 图书分类管理模块

         管理员在线对图书进行管理,对图书分类进行增加,修改,删除操作。

    在这里插入图片描述

    5.6 图书借阅信息模块

         管理员可以在线管理借阅信息,可以主动帮读者还书。

    5.7 图书归还信息管理模块

         显示归还图书的详细信息。

    5.8 图书查询模块

         用户访问图书查询模块时显示当前可以借阅图书,有按图书名称查询图书信息的功能,可以进行借书操作。

    5.9 图书借阅信息模块

         显示当前登录用户借阅的所有图书,以及各个图书的编号,图书名称,借阅日期,还书日期,读者账号,读者名称信息。登录用户可以进行还书操作,还书是否成功有相应的提示。

    5.10 借阅历史模块

         显示当前登录用户的图书借阅记录。

    6、数据库设计

    6.1 数据库的 E-R 图

    Admin(用户)表 E-R 图

    Book(图书)表 E-R 图
    在这里插入图片描述
    BookType(图书类型)表 E-R 图
    在这里插入图片描述
    History(历史)表 E-R 图
    在这里插入图片描述

    6.2 数据库数据结构设计

        数据库采用的是的mysql数据库,系统主要需要维护4张数据表:

    用户表信息(admin):
    在这里插入图片描述
    图书表信息(book):
    在这里插入图片描述
    图书类型表信息(bookType):
    在这里插入图片描述
    图书历史表信息(history):
    在这里插入图片描述

    7、系统详细设计和实现

    7.1 用户登录

        用户登录主要是在登陆窗体中实现身份验证。用户通过输入用户名和密码,进入图 5-1,判别用户名是否存在和密码是否正确。通过系统验证证后才能进入主界面;验证失败,则跳转登陆界面返回错误信息,如登陆账号为空、登陆密码为空、用户名和密码不匹配等并请重新输入。此登陆页面图书管理员和普通用户进入时一样的,通过查询数据库status状态来判断用户属于哪一种,从而进行不同的跳转。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    主要代码:

    package com.rain.servlet;
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import javax.websocket.Session;
    import com.rain.bean.AdminBean;
    import com.rain.dao.AdminDao;
    @WebServlet("/LoginServlet")
    public class LoginServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        public LoginServlet() {
            super();    
    }
    Protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    }
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //登录的判断
            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("/books/index2.jsp");
                } else {
                    response.sendRedirect("/books/admin.jsp");
                }
            } else {
                //没有找到对应的账号和密码,返回重新登录
                session.setAttribute("state", "密码错误");
                response.sendRedirect("/books/login.jsp");
            }
        }
    }
    
    
    7.2 图书查询

        管理员可以通过根据图书号 、图书名称,作者名称,出版社等查询图书信息。
    在这里插入图片描述
    主要代码:

    package com.rain.servlet;
    import java.io.IOException;
    import java.util.ArrayList;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import com.rain.bean.BookBean;
    import com.rain.dao.BookDao;
    @WebServlet("/selectServlet")
    public class selectServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        public selectServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
        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");
            //因为在管理员界面和读者界面都有查找功能,为了将查找的结果返回正确的页面,设置了tip,tip=1表示管理员界面
            int tip = Integer.parseInt(request.getParameter("tip"));
            String name = request.getParameter("name");
            BookDao bookdao = new BookDao();
            ArrayList<BookBean> data = bookdao.getLikeList(name);
            //将获取的结果存入请求中
            request.setAttribute("data", data);
            String url = "";
            //转发不同的界面
            if (tip == 1) {
                url = response.encodeURL("admin_book.jsp");
            } else {
                url = response.encodeURL("select.jsp");
            }
            //将请求转发
            request.getRequestDispatcher(url).forward(request, response);
        }
    }
    
    
    7.3 添加图书

    在这里插入图片描述
    主要代码:

    package com.rain.servlet;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import com.rain.dao.BookDao;
    @WebServlet("/AddBookServlet")
    public class AddBookServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        public AddBookServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
        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("/books/admin_book.jsp");
        }
    }
    
    
    7.4 图书信息修改

    在这里插入图片描述
    主要代码:

    package com.rain.servlet;
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import com.rain.dao.BookDao;
    @WebServlet("/updateBookServlet")
    public class updateBookServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        public updateBookServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
        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"));
            Int bid = Integer.parseInt(request.getParameter("updatebid"));
            BookDao bookdao = new BookDao();
            bookdao.updateBook(bid, card, name, type, autho, press, num);
            response.sendRedirect("/books/admin_book.jsp");
        }
    }
    
    
    7.5 图书删除

    主要代码:

    package com.rain.servlet;
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import com.rain.dao.BookDao;
    @WebServlet("/deleteServlet")
    public class deleteServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        public deleteServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //删除图书信息
            request.setCharacterEncoding("UTF-8");
            response.setContentType("text/html;charset=UTF-8");
            int bid = Integer.parseInt(request.getParameter("bid"));
            BookDao bookdao = new BookDao();
            bookdao.deleteBook(bid);
            response.sendRedirect("/books/admin_book.jsp");
        }
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }
    }
    
    

    其它模块设计与实现请查看 公众号:C you again

    完整文档和系统源码下载:
    关注公众号:C you again 或扫描下方二维码,回复:“图书管理系统” 免费获取,
    更多干货等你来拿
    在这里插入图片描述

    好用记得点赞分享哦!!!!
    注:此系统不是本人原创,在原系统基础上进行修改,加以创新。
    侵权请联系删除

  • 相关阅读:
    最长公共上升子序列
    最长公共子序列
    3847: Mowing the Lawn (单调队列)
    A/B(扩展欧几里得)
    One Person Game(扩展欧几里得)
    Substring with Concatenation of All Words, 返回字符串中包含字符串数组所有字符串元素连接而成的字串的位置
    Divide two numbers,两数相除求商,不能用乘法,除法,取模运算
    Merge k Sorted Lists, k路归并
    二路归并排序,利用递归,时间复杂度o(nlgn)
    StrStr,判断一个字符串是不是另一个字符串的字串,并返回子串的位置
  • 原文地址:https://www.cnblogs.com/cafuc20160512056/p/13202213.html
Copyright © 2011-2022 走看看