基於web的圖書管理系統設計與實現

原文連接:基於web的圖書管理系統設計與實現

系統演示連接:點擊這裏查看演示

01 系統簡述

    圖書管理系統就是利用計算機,結合互聯網對圖書進行結構化、自動化管理的一種軟件,來提升對圖書的管理效率。本系統採用Java+Servlet+Jsp 的方式實現基於web的圖書管理系統。javascript

02 開發工具及相關技術

2.1 Java技術

    Java 是由 Sun Microsystems 在 1995 年首先發布的編程語言和計算平臺。有許多應用程序和 Web 站點只有在安裝 Java 後才能正常工做,並且這樣的應用程序和 Web 站點日益增多。Java 快速、安全、可靠。從筆記本電腦到數據中心,從遊戲控制檯到科學超級計算機,從手機到互聯網,Java 無處不在。css

2.2 HTML、css、javascript技術

    HTML的英文全稱是 Hypertext Marked Language,即超文本標記語言。HTML是由Web的發明者 Tim Berners-Lee和同事 Daniel W. Connolly於1990年創立的一種標記語言,它是標準通用化標記語言SGML的應用。用HTML編寫的超文本文檔稱爲HTML文檔,它能獨立於各類操做系統平臺(如UNIX, Windows等)。使用HTML語言,將所須要表達的信息按某種規則寫成HTML文件,經過專用的瀏覽器來識別,並將這些HTML文件「翻譯」成能夠識別的信息,即如今所見到的網頁。html

    層疊樣式表(英文全稱:Cascading Style Sheets)是一種用來表現HTML(標準通用標記語言的一個應用)或XML(標準通用標記語言的一個子集)等文件樣式的計算機語言。CSS不只能夠靜態地修飾網頁,還能夠配合各類腳本語言動態地對網頁各元素進行格式化。CSS 可以對網頁中元素位置的排版進行像素級精確控制,支持幾乎全部的字體字號樣式,擁有對網頁對象和模型樣式編輯的能力。java

    JavaScript(簡稱「JS」) 是一種具備函數優先的輕量級,解釋型或即時編譯型的編程語言。雖然它是做爲開發Web頁面的腳本語言而出名的,可是它也被用到了不少非瀏覽器環境中,JavaScript 基於原型編程、多範式的動態腳本語言,而且支持面向對象、命令式和聲明式(如函數式編程)風格。JavaScript在1995年由Netscape公司的Brendan Eich,在網景導航者瀏覽器上首次設計實現而成。由於Netscape與Sun合做,Netscape管理層但願它外觀看起來像Java,所以取名爲JavaScript。但實際上它的語法風格與Self及Scheme較爲接近。JavaScript的標準是ECMAScript 。截至 2012 年,全部瀏覽器都完整的支持ECMAScript 5.1,舊版本的瀏覽器至少支持ECMAScript 3 標準。2015年6月17日,ECMA國際組織發佈了ECMAScript 的第六版,該版本正式名稱爲 ECMAScript 2015,但一般被稱爲ECMAScript 6 或者ES6。mysql

2.3 Servlet技術

    Servlet(Server Applet)是Java Servlet的簡稱,稱爲小服務程序或服務鏈接器,用Java編寫的服務器端程序,具備獨立於平臺和協議的特性,主要功能在於交互式地瀏覽和生成數據,生成動態Web內容。web

    狹義的Servlet是指Java語言實現的一個接口,廣義的Servlet是指任何實現了這個Servlet接口的類,通常狀況下,人們將Servlet理解爲後者。Servlet運行於支持Java的應用服務器中。從原理上講,Servlet能夠響應任何類型的請求,但絕大多數狀況下Servlet只用來擴展基於HTTP協議的Web服務器。sql

2.4 Eclipse開發工具

    Eclipse 是一個開放源代碼的、基於Java的可擴展開發平臺。就其自己而言,它只是一個框架和一組服務,用於經過插件組件構建開發環境。幸運的是,Eclipse 附帶了一個標準的插件集,包括Java開發工具(Java Development Kit,JDK)。數據庫

2.5 MySql數據庫

    MySql是最流行的關係型數據庫管理系統,在WEB應用方面MySQL是最好的RDBMS(Relational Database Management System:關係數據庫管理系統)應用軟件之一。MySql數據庫有如下特色:編程

  1. Mysql是開源的,因此你不須要支付額外的費用。
  2. Mysql支持大型的數據庫。能夠處理擁有上千萬條記錄的大型數據庫。
  3. MySQL使用標準的SQL數據語言形式。
  4. Mysql能夠容許於多個系統上,而且支持多種語言。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
  5. Mysql對PHP有很好的支持,PHP是目前最流行的Web開發語言。
  6. MySQL支持大型數據庫,支持5000萬條記錄的數據倉庫,32位系統表文件最大可支持4GB,64位系統支持最大的表文件爲8TB。
  7. Mysql是能夠定製的,採用了GPL協議,你能夠修改源碼來開發本身的Mysql系統。

03 系統功能描述

    系統的用戶主要有兩大類:一是圖書管理系統的管理員,二是普通用戶。根據用戶類型的不一樣,將系統劃分爲普通用戶端和管理員端,它們具備的主要功能以下:瀏覽器

用戶端
在這裏插入圖片描述

圖書查詢:根據圖書編號、圖書名稱查詢圖書信息,可查詢圖書的編號、名稱、分類、做者、價格、在館數量等。

借閱信息:可查詢圖書的基本信息、借閱日期、截止還書日期、超期天數等。

借閱歷史:查詢本身以往的借閱歷史,包括哪些圖書等具體信息。

個人:查看我的資料,修改帳戶密碼,退出系統。

管理員端
在這裏插入圖片描述
圖書管理:根據圖書編號、圖書名稱查詢圖書基本信息,添加、修改、刪除圖書。

圖書分類管理:根據分類名稱查詢圖書分類信息,添加、修改、刪除圖書分類。

圖書借閱:展現全部正在借閱圖書的信息。

圖書歸還:展現全部已歸還圖書的信息。

公告管理:向用戶發佈公告。

讀者管理:根據帳號、姓名查詢讀者基本信息,添加、修改、刪除讀者信息。

個人:查看我的資料,修改帳戶密碼,退出系統。

04 工程結構及其說明

在這裏插入圖片描述
項目名稱:manage_books
Package包說明:
在這裏插入圖片描述

05 主要功能詳細設計與實現

5.1 用戶端--圖書查詢模塊

    用戶訪問圖書查詢模塊時顯示當前能夠借閱圖書,有按圖書名稱查詢圖書信息的功能,能夠進行借書操做。
在這裏插入圖片描述
其中查詢功能的Servlet代碼以下:

package com.cya.controller;
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.cya.dao.BookDao;
import com.cya.pojo.Book;
/**
 * Servlet implementation class selectServlet
 */
@WebServlet("/selectServlet")
public class selectServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public selectServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
       //response.getWriter().append("Served at: ").append(request.getContextPath());

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
       //doGet(request, response);
        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<Book> data = bookdao.getLikeList(name);
        //將獲取的結果存入請求中
        request.setAttribute("data", data);
        String url = "";
        //轉發不一樣的界面
        if (tip == 1) {
            url = response.encodeURL("/books/admin/admin_books.jsp");
        } else {
            url = response.encodeURL("/books/user/select.jsp");
        }
        //將請求轉發
        request.getRequestDispatcher(url).forward(request, response);
    }

}

5.2 用戶端--借閱信息模塊

    當普通用戶借閱完圖書,會在該模塊自動生成借閱信息,如借閱日期,歸還日期,也可在該模塊進行還書,以下圖所示。
在這裏插入圖片描述
其中,還書功能的Servlet代碼以下:

package com.cya.controller;
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 javax.servlet.http.HttpSession;
import com.cya.pojo.Admin;
import com.cya.dao.AdminDao;
import com.cya.dao.BookDao;
/**
 * Servlet implementation class borrowServlet
 */
@WebServlet("/borrowServlet")
public class borrowServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public borrowServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
       //response.getWriter().append("Served at: ").append(request.getContextPath());
        //設置編碼類型
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        BookDao bookdao = new BookDao();
        //爲了區分借書和還書的功能,設置tip,tip爲1,表示借書
        int tip = Integer.parseInt(request.getParameter("tip"));
        if (tip == 1) {
            //獲取圖書id
            int bid = Integer.parseInt(request.getParameter("bid"));
            HttpSession session = request.getSession();
            Admin admin = new Admin();
            String status=request.getParameter("status");
            String id="";
            if(status.equals("user")) {
                //獲取到存入session的讀者id
                id = (String) session.getAttribute("uid");
            }
            else {
                //獲取到存入session的aid讀者id
                 id = (String) session.getAttribute("aid");
            }

            AdminDao admindao = new AdminDao();
            //經過aid獲取到讀者的信息
            admin = admindao.get_AidInfo2(id);
            //將借閱記錄存入數據表
            bookdao.borrowBook(bid, admin);
            response.sendRedirect("/manage_books/books/user/select.jsp");
        } else {
            //還書功能,獲取借閱記錄的hid
            int hid = Integer.parseInt(request.getParameter("hid"));
            /**
             * 還書在管理員和讀者界面都有,爲了區分,設置了show字段,show爲1表示讀者界面
             */
            int show = Integer.parseInt(request.getParameter("show"));
            //調用還書函數,改變status字段
            bookdao.borrowBook2(hid);
            if (show == 1) {
                response.sendRedirect("/manage_books/books/user/borrow.jsp");
            } else {
                response.sendRedirect("/manage_books/books/admin/admin_borrows.jsp");
            }

        }

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

5.3 管理員端--圖書管理模塊

    管理員能夠經過根據圖書號 、圖書名稱,做者名稱,出版社等查詢圖書信息。
在這裏插入圖片描述
    管理員登陸系統之後,能夠進行圖書添加操做,這是管理員主要的輸入信息部分,填寫好各項信息後,單擊保存按鈕,系統將對這些信息進行處理。界面見下圖所示:
在這裏插入圖片描述
    除此之外,管理員對已經添加好的圖書信息有修改權限。
在這裏插入圖片描述
其中,添加圖書功能的代碼以下:

package com.cya.controller;
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.cya.dao.BookDao;
/**
 * Servlet implementation class AddBookServlet
 */
@WebServlet("/AddBookServlet")
public class AddBookServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public AddBookServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
//        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
//        doGet(request, response);
        //設置編碼類型
        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("/manage_books/books/admin/admin_books.jsp");
    }

}

5.4 管理員端--圖書分類模塊

    管理員在該界面能夠增長、刪除、修改圖書分類信息,操做效果如圖。
在這裏插入圖片描述
在這裏插入圖片描述
修改圖書分類功能的代碼以下:

package com.cya.controller;
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.cya.dao.BookDao;
import com.cya.dao.TypeDao;
/**
 * Servlet implementation class updateBookTypeServlet
 */
@WebServlet("/updateBookTypeServlet")
public class updateBookTypeServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public updateBookTypeServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
//        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
//        doGet(request, response);
        //修改圖書類型信息
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        String name = request.getParameter("name");
        int tid = Integer.parseInt(request.getParameter("tid"));
        TypeDao typedao = new TypeDao();
        typedao.updateTypeBook(tid, name);
        response.sendRedirect("/manage_books/books/admin/admin_booksType.jsp");
    }

}

06 最後的話(下載源碼)

    你若須要下載源碼,請關注微信公衆號:C you again,回覆 「基於web的圖書管理系統」 獲取

你也能夠掃碼關注
在這裏插入圖片描述

原文連接:基於web的圖書管理系統設計與實現

系統演示連接:點擊這裏查看演示

相關文章
相關標籤/搜索