1. 程式人生 > 實用技巧 >基於web的圖書管理系統設計與實現

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

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

系統演示連結:點選這裡檢視演示

01 系統簡述

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

02 開發工具及相關技術

2.1 Java技術

    Java 是由 Sun Microsystems 在 1995 年首先發布的程式語言和計算平臺。有許多應用程式和 Web 站點只有在安裝 Java 後才能正常工作,而且這樣的應用程式和 Web 站點日益增多。Java 快速、安全、可靠。從膝上型電腦到資料中心,從遊戲控制檯到科學超級計算機,從手機到網際網路,Java 無處不在。

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檔案“翻譯”成可以識別的資訊,即現在所見到的網頁。

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

    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。

2.3 Servlet技術

    Servlet(Server Applet)是Java Servlet的簡稱,稱為小服務程式或服務聯結器,用Java編寫的伺服器端程式,具有獨立於平臺和協議的特性,主要功能在於互動式地瀏覽和生成資料,生成動態Web內容。

    狹義的Servlet是指Java語言實現的一個介面,廣義的Servlet是指任何實現了這個Servlet介面的類,一般情況下,人們將Servlet理解為後者。Servlet執行於支援Java的應用伺服器中。從原理上講,Servlet可以響應任何型別的請求,但絕大多數情況下Servlet只用來擴充套件基於HTTP協議的Web伺服器。

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的圖書管理系統設計與實現

系統演示連結:點選這裡檢視演示