原文鏈接:基于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資料庫有以下特點:
- Mysql是開源的,所以你不需要支付額外的費用,
- Mysql支持大型的資料庫,可以處理擁有上千萬條記錄的大型資料庫,
- MySQL使用標準的SQL資料語言形式,
- Mysql可以允許于多個系統上,并且支持多種語言,這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等,
- Mysql對PHP有很好的支持,PHP是目前最流行的Web開發語言,
- MySQL支持大型資料庫,支持5000萬條記錄的資料倉庫,32位系統表檔案最大可支持4GB,64位系統支持最大的表檔案為8TB,
- 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 = https://www.cnblogs.com/cafuc20160512056/p/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的圖書管理系統設計與實作
系統演示鏈接:點擊這里查看演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/979.html
標籤:其他
上一篇:軟體專案管理
