图书管理系(附源码PPT)
圖書管理系統
- 1 緒 論
- 1.1 研究背景
- 1.2 研究意義
- 1.3 相關研究現狀
- 1.3.1 高校圖書管理面臨的問題
- 1.3.2 信息化為圖書管理帶來新變化
- 2 相關技術
- 2.1 JSP 概述
- 2.2 MySQL 數據庫技術
- 2.3 Spring
- 2.4 SpringMVC
- 2.5 Dbcp
- 2.6 Maven
- 3 系統分析
- 3.1 需求分析
- 3.1.1 系統的功能需求分析
- 3.1.2 系統的非功能需求分析
- 3.2 可行性分析
- 3.2.1 經濟可行性
- 3.2.2 技術可行性
- 3.2.3 操作可行性
- 4 系統設計
- 4.1概要設計
- 4.1.1 系統功能描述
- 4.1.2 系統功能模塊
- 4.2模塊設計
- 4.2.1 讀者模塊
- 4.2.2 圖書管理員模塊
- 4.3 數據庫設計
- 4.3.1 概念結構設計
- 4.3.2 邏輯結構設計
- 4.3.3 物理結構設計
- 5 系統實現
- 5.1 詳細設計
- 5.1.1 讀者登錄模塊
- 5.1.2 讀者搜索圖書模塊
- 5.1.3 讀者個人信息編輯模塊
- 5.1.4 我的借還日志模塊
- 5.1.5 讀者修改密碼模塊
- 5.1.6 管理員對圖書的增刪改查模塊
- 5.1.7 管理員對讀者信息的增刪改查模塊
- 5.1.8 管理員對借還日志的操作模塊
- 5.2 實現結果
- 5.2.1 登錄模塊
- 5.2.2 讀者模塊
- 5.2.3 管理員模塊
- 6 測試
- 6.1 系統測試
- 6.1.1 測試目的
- 6.1.2 測試方法
- 6.1.3 測試的意義
- 6.2 系統功能測試
- 6.3 系統性能測試
- 設計總結和心得體會
- 參考文獻
1 緒 論
1.1 研究背景
??作為專用于特定領域的信息管理系統,圖書管理系統也被稱為圖書館的自動化、信息化集成系統,圖書管理系統是現代化信息發展的必然產物,也是圖書館發揮信息服務功能的基礎設施[1]。高校是圖書資源的重要聚集地,伴隨著改革開放為高等教育帶來的大發展,高校圖書館建設也迎來了快速發展階段和難得的發展契機。國內眾多高校圖書館搶抓機遇,進一步擴充豐富的文獻資源,同時,積極應用最前沿的信息技術,提高高校圖書館的服務職能。
1.2 研究意義
??自上世紀八十年代以來,計算機技術、微電子技術以及網絡通信技術的迅猛發展,對圖書館建設的自動化和數字化起到了不可估量的推動作用。而傳媒技術的發展,使得高校圖書館藏資源漸進豐富,除了傳統意義上的書籍之外,光盤、電子出版物等數字化產品的出現,館藏資源呈現出了印刷型與電子型資源并存的局面,這也推進了數字化圖書館建設的步伐[2]。以計算機技術為依托設計開發數字化管理系統,是數字化建設的基本發展方向,對于促進圖書管理信息化、網絡化、共享化具有重要的研究價值和實際意義。
??健全完善服務體系,充分開展資源共享,使館藏資源作用最大化,這是高校圖書館面臨的共同課題和難題,而信息化技術的飛速發展,無疑為這一難題提供了有效的解決途徑[3]。依托網絡環境建設網絡基礎設施,開發高校圖書管理系統,開展包括網上圖書預約、催還和續借服務、網上館際互借和文獻傳遞服務、網上信息資源導引服務等,成為國內眾多高校紛紛采取的措施??梢哉f,在高等學校圖書館信息化建設的進程中,圖書管理系統發揮了重要的作用,成為引導讀者便捷、準確獲取和共享資源的保證。
??目前,圖書管理系統并不是新鮮事物,但是早期的單機版系統早已經不能夠適應網絡時代化的新要求,基于C/S模式的系統也隨著Java、Jsp等技術的興起日漸被摒棄。Jsp、JavaBean、Servlet是電子商務開發的主流,本文使用Jsp開發高校圖書管理系統,從系統結構,功能需求,技術可行性等考慮,開發具有實際使用價值的圖書管理系統。
1.3 相關研究現狀
1.3.1 高校圖書管理面臨的問題
1、館藏圖書面臨嚴重的"老化"危機
??目前,國內高校的發展都對圖書館藏資源進行了明確要求和規定,在這種數量壓力下,圖書資源的質量難以得到有效的保證。削減了圖書資源的利用效率,也為圖書管理增加了難度。
2、信息化發展程度不足
??全球信息化、網絡一體化的到來,電子資源呈現噴薄之勢,圖書的概念大為擴展,種類也日益豐富,不僅包含過去傳統的紙質圖書,更多的是増加了電子媒介。電子化的資源為圖書管理帶來了新的難題,信息化的管理方式勢在必行。
3.共享程度和開放程度不高
??信息化不足導致難以提高館藏資源的開放度,也就影響了資源的共享利用。圖書資源作為一種社會服務,在為高校師生提供服務的同時,適度對外提供共享,不僅是高等學校開放發展的一種方式,也將有利于開闊校內師生的思維模式。
1.3.2 信息化為圖書管理帶來新變化
1.資源內涵發生根本性變化
??從某種程度上來講,電子資源對用戶的重要性更大,因為其存儲、使用、共享上的便捷性,使其在目前讀者中更為受寵。因此,縱然紙質資源目前仍為圖書主體,但電子資源的發展速度卻不容小視。
2.圖書管理有了更為簡便的方式
??文獻借閱是圖書館為用戶提供服務的集中體現,在傳統的方式中,用戶需要到圖書館中進行文獻的查閱,得到感興趣的書目之后,填寫借閱信息單,辦理相關的借閱手續,效率極為低下。而信息化的圖書管理,這一系列操作在客戶端由讀者自行即可完成,節約過程方便、快捷,圖書館也可以通過互聯網提供不間斷的服務,大大提高服務效率。
3.檢索方式發生巨大變化
??各種檢索工具的出現,為用戶提供了不同形式、不同類型的檢索功能,極大地方便了館藏資源信息的獲取和檢索。交互界面、菜單選項、鼠標操作等應用,使得信息檢索更為簡潔和容易,用戶只需要根據提示進行簡單的操作,便可以實現較為復雜的檢索功能,并且這種檢索速度是手工方式無法比擬的,消除了手工檢索在效率上和應用中的不便。
2 相關技術
2.1 JSP 概述
JSP全名為Java Server
??Pages,中文名叫java服務器頁面,其根本是一個簡化的Servlet設計,它 是由Sun
Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標準[4]。JSP技術有點類似ASP技術,它是在傳統的網頁HTML(標準通用標記語言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件,后綴名為(*.jsp)。
用JSP開發的Web應用是跨平臺的,既能在Linux下運行,也能在其他操作系統上運行。
??JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態網頁的處理邏輯[5]。網頁還能通過tags和scriptlets訪
問存在于服務端的資源的應用邏輯。
??JSP將網頁邏輯與網頁設計的顯示分離,支持可重用的基于組件的設計,使基于Web的應用程序的開發變得迅速和容易。JSP(JavaServerPages)是一種動態頁面技術,它的主要目的是將表示邏輯從Servlet中分離出來[6]。
2.2 MySQL 數據庫技術
??MySQL是一個關系型數據庫管理系統,由瑞典MySQLAB 公司開發,屬于 Oracle旗下產品。MySQL是最流行的關系型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS(Relational Database Management System,關系數據庫管理系統)應用軟件之一。
??MySQL是一種關系型數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。
??MySQL所使用的 SQL 語言是用于訪問數據庫的最常用標準化語言。MySQL軟件采用了雙授權政策,分為社區版和商業版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型和大型網站的開發都選擇MySQL 作為網站數據庫。
2.3 Spring
??Spring是一個開放源代碼的設計層面框架,他解決的是業務邏輯層和其他各層的松耦合問題,因此它將面向接口的編程思想貫穿整個系統應用[7]。Spring是于2003年興起的一個輕量級的Java 開發框架,由RodJohnson創建。簡單來說,Spring是一個分層的JavaSE/EE full-stack(一站式) 輕量級開源框架。
2.4 SpringMVC
??Spring MVC屬于SpringFrameWork的后續產品,已經融合在Spring Web Flow里面。Spring 框架提供了構建 Web 應用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構,可以選擇是使用內置的 Spring Web 框架還可以是 Struts 這樣的 Web 框架。
??Spring 框架提供了構建 Web 應用程序的全功能 MVC 模塊。 使用 Spring可插入的 MVC 架構,可以選擇是使用內置的 Spring Web 框架還是 Struts這樣的 Web 框架[8]。通過策略接口,Spring框架是高度可配置的,而且包含多種視圖技術,例如 JavaServer
Pages(JSP)技術、Velocity、Tiles、iText 和 POI。Spring MVC框架并不知道使用的視圖,所以不會強迫您只使用 JSP 技術。Spring MVC分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定制。
2.5 Dbcp
??DBCP(DataBase ConnectionPool)數據庫連接池,是Java數據庫連接池的一種,由Apache開發,通過數據庫連接池,可以讓程序自動管理數據庫連接的釋放和斷開。
??DBCP(DataBase connection pool)數據庫連接池。是 Apache 上的一個 Java連接池項目,也是 tomcat使用的連接池組件。單獨使用DBCP需要2個包:commons-dbcp.jar和commons-pool.jar。由于建立數據庫連接是一種非常耗時、耗資源的行為,所以通過連接池預先同數據庫建立一些連接,放在內存中,應用程序需要建立數據庫連接時直接到連接池中申請一個就行,使用完畢后再歸還到連接池中。
2.6 Maven
Maven項目對象模型(POM),可以通過一小段描述信息來管理項目的構建,報告和文檔的項目管理軟件。
??Maven 除了以程序構建能力為特色之外,還提供高級項目管理工具。由于 Maven的缺省構建規則有較高的可重用性,所以常常用兩三行 Maven構建腳本就可以構建簡單的項目[9]。由于 Maven 的面向項目的方法,許多Apache Jakarta 項目發文時使用 Maven,而且公司目前采用 Maven的比例在持續增長。
??Maven這個單詞來自于意第緒語(猶太語),意為知識的積累,最初在JakataTurbine項目中用來簡化構建過程。當時有一些項目(有各自Antbuild文件),僅有細微的差別,而JAR文件都由CVS來維護。于是希望有一種標準化的方式構建項目,一個清晰的方式定義項目的組成,一個容易的方式發布項目的信息,以及一種簡單的方式在多個項目中共享JARs。
3 系統分析
3.1 需求分析
3.1.1 系統的功能需求分析
(1) 圖書借閱者的功能需求分析
??圖書借閱者的需求是查詢圖書室所存的圖書、個人借閱情況及個人信息的修改。
??圖書借閱者可直接查看圖書館圖書情況,如果圖書借閱者根據本人借書證號和密碼登錄系統,還可以進行本人借書情況的查詢和維護部分個人信息。
??查詢圖書館的所有藏書信息(書名、作者、出版社、ISBN、價格、剩余數量以及詳情) ;查看個人信息(包括個人信息情況、查詢館藏圖書信息、借閱圖書信息、借閱圖書歸還信息、圖書借還日志) ; 借閱者修改個人信息。
(2) 圖書管理員的功能需求分析
??圖書館管理人員的功能,包括對圖書借閱者、圖書信息進行管理和維護,及系統狀態的查看、維護等。
??對現有藏書的信息操作(包括查詢圖書信息、添加圖書信息修改圖書信息、刪除圖書信息) ;對新進藏書信息的操作(圖書的編號、圖書名稱、著作者出版信息) ;藏書借出與歸還操作;查看借閱者信息操作(借閱者的編號、借閱者姓名、圖書名稱) ;借閱者身份管理操作(增加借閱者、修改借閱者信息、刪除借閱者信息)。
3.1.2 系統的非功能需求分析
(1)安全性。在當今網絡普及的社會,網絡安全問題一直是人們關注的問題。一個系統更要考慮安全問題。在網絡安全方面除了物理設備一些的安全防范外,還可以通過軟件防止一些非授權的損害。在程序方面的網絡安全我們可以從用戶權限、動態口令、數據庫字段加密等入手[10]。出于安全角度的考慮,在本系統內中使用了用戶權限的方法,為用戶的敏感資料保密。
(2)可靠性??煽烤褪窃谝幎ǖ臅r間和條件下,保持軟件的性能水平的穩定性??煽啃猿巳蒎e性好、恢復性強外,還與系統的運行環境、平臺的選擇、代碼的質量息息相關。越可靠的系統其運行的速度就會越慢,運行效率和運行時的可靠性是相互制約的一組屬性,所以在選擇的時候要綜合考慮。
(3)維護性。可維護性是指對特定內容修改所要做的努力程度。為了便于系統維護時候的分析,可以在系統的某些部分加入日志記錄。為了方便以后系統的升級維護,在設計的時候本系統是以模塊設計的,并盡量減少模塊之間的聯系,這樣在改動其中的一個模塊的時候不至于所有的模塊都要改動,從而減少后期維護的工作量。
(4)美觀性。要求界面美觀,操作簡便。
3.2 可行性分析
3.2.1 經濟可行性
??從經濟來說,本系統是學生們在學校利用課設時間做出來的,不需要任何的消費和支出,是學生們用自己所學的課程和自己的知識相結合起來的成果,唯一需要的就是時間,因此,該系統在經濟上來說是可行的。
3.2.2 技術可行性
??基于本學期我們所學的JSP課程及相關技術,開發出圖書管理系統。在進行技術可行性分析之前,必須要明確系統的目標,從系統的性能開始,考察它的性能,是否具備必要的環境,是否具備有工作經驗的系統操作人員,人員的數量問題等等。在技術的選擇上,該系統運用了JSP、Dbcp、SpringMVC,在數據的存儲上應用的是MYSQL數據庫。該系統的硬件相當過關,具有較大的選擇余地,保障了系統的開發和運行,所以在硬件配置方面具有一定的可行性。諸多的研究發現,該系統在技術上是可行的。
3.2.3 操作可行性
??圖書管理系統具備友好的用戶界面,使用方便,易于維護,操作簡單易于被用戶接受,用戶不需要學習復雜的計算機專業知識,用戶只需熟練操作計算機,另外此系統也附帶有顯示視頻,和對此系統使用做簡單的了解即可方便使用,且操作工具只需要一臺計算機即可,在人員的配備上也能夠滿足系統運行的需要。因此從使用操作方面看,此系統的開發是可行的。
4 系統設計
4.1概要設計
4.1.1 系統功能描述
??圖書管理系統主要分為讀者模塊和圖書館管理員模塊。讀者僅可以修改個人信息、借閱或者查還書籍和查看自己的借還記錄。圖書管理員可以修改讀者信息、修改圖書信息,查看所有的借還日志等。
4.1.2 系統功能模塊
圖書館管理系統功能模塊圖4.1所示。
圖4.1 圖書館管理系統功能模塊圖
讀者登錄模塊如圖4.2所示。
圖4.2 讀者登錄模塊
管理員登錄模塊如圖4.3所示。
圖4.3管理員登錄模塊
4.2模塊設計
4.2.1 讀者模塊
??讀者需要登錄賬號,登錄成功后,讀者可以進行圖書查詢,個人信息查詢,修改密碼,查看自己的借閱書籍記錄等相關操作。
讀者模塊的控制流程圖如圖4.4所示。
圖4.4 讀者模塊控制流程圖
4.2.2 圖書管理員模塊
圖書管理員可以修改讀者信息、修改圖書信息,查看所有的借還日志等。
圖書管理員模塊的控制流程圖如圖4.5所示。
圖4.5 管理員模塊流程圖
4.3 數據庫設計
4.3.1 概念結構設計
圖書管理系統的E-R圖如圖4.6所示。
圖4.6 圖書管理系統的E-R圖
4.3.2 邏輯結構設計
圖書關系模式(標準書號,書名,簡介,出版時間,數量,作者,出版社,語言,價格,分類)
讀者關系模式(讀者號,姓名,性別,生日,地址,電話)
管理員關系模式(id,密碼,用戶名)
借閱關系模式(標準書號,讀者號,借閱日期,歸還日期)
管理關系模式(標準書號,讀者號id,分類號,類別名)
4.3.3 物理結構設計
書籍信息表如表4.1所示。
表4.1 書籍信息表
列名 類型 長度 小數點 NULL 用途 鍵
book_id bigint 20 0 否 圖書號 主鍵
name varchar 20 0 否 書名
author varchar 15 0 否 作者
publish varchar 20 0 否 出版社
ISBN varchar 15 0 否 標準書號
introduction text 0 0 是 簡介
ianguage varchar 4 0 否 語言
price dedcimal 10 2 否 價格
pub_date date 0 0 否 出版時間
class_id int 11 0 是 分類號 外鍵
class_name varchar 15 0 否 類別名
Number int 11 0 是 剩余數量
數據庫管理員表admin如表4.2所示。
表4.2 數據庫管理員表admin
列名 類型 長度 小數點 NULL 用途 鍵
admin_id bignit 20 0 否 賬號 主鍵
password varchar 15 0 否 密碼
username varchar 15 0 是 用戶名
借閱信息表lend_list如表4.3所示。
表4.3借閱信息表lend_list
列名 類型 長度 小數點 NULL 用途 鍵
ser_num bigint 20 0 否 流水號 主鍵
book_id bigint 20 0 否 圖書號 外鍵
reader_id bigint 20 0 否 讀者證號 外鍵
lend_date date 0 0 是 借出日期
back_date date 0 0 是 歸還日期
讀者信息表reader_info如表4.4所示。
列名 類型 長度 小數點 NULL 用途 鍵
reader_id bigint 20 0 否 讀者證號 主鍵
name varchar 10 0 否 姓名
sex varchar 2 0 否 性別
birth date 0 0 否 生日
address varchar 50 0 否 地址
phone varchar 15 0 否 電話
password varchar 15 0 否 密碼
username varchar 15 0 是 用戶名
表4.4讀者信息表reader_info
5 系統實現
5.1 詳細設計
系統分為讀者模塊和管理模塊。
讀者模塊,查詢所有圖書的信息,如圖書的名稱、剩余數量、詳情等;個人信息的編輯完善,修改初始化密碼等。
管理員模塊,圖書管理、用戶管理、借還日志管理,如圖書的增刪改查、用戶信息的增刪改查等。
5.1.1 讀者登錄模塊
在沒有登錄系統的情況下,不可以進入該系統查詢和借閱圖書,對于用戶的賬號管理,統一由管理員完成注冊,并通過負責人發放賬號。對于讀者在登錄時,后臺會驗證該賬戶是否存在,密碼是否正確。下面是實現讀者登錄功能的核心代碼塊。
當點擊登錄按鈕前端頁面會通過Ajax向后端發送POST請求,數據并以JSON的形式傳遞,請求后端接口"api/loginCheck"。
\$.ajax({type: \"POST\",url: \"api/loginCheck\",data: {id:id ,passwd: passwd},后端接收到請求后,驗證賬號密碼是否正確,通過身份碼來確定登錄人員的權限,并響應跳轉到相對應的頁面。\@RequestMapping(value = \"/api/loginCheck\", method = RequestMethod.POST) //接口,請求方式是POSTpublic \@ResponseBody Object loginCheck(HttpServletRequest request) {// \@ResponseBody,數據是JSON形式if (isAdmin) {request.getSession().setAttribute(\"admin\", admin);res.put(\"stateCode\", \"1\");//1代表管理員,2代表讀者,0代表失敗res.put(\"msg\", \"管理員登陸成功!\");} else if (isReader) {request.getSession().setAttribute(\"readercard\", readerCard);res.put(\"stateCode\", \"2\");res.put(\"msg\", \"讀者登陸成功!\");} else {res.put(\"stateCode\", \"0\");res.put(\"msg\", \"賬號或密碼錯誤!\");}return res;}5.1.2 讀者搜索圖書模塊
圖書查詢頁面默認展示所有圖書的信息,當有想借閱的圖書時,可以通過圖書的名稱進行模查詢。下面是實現讀者查詢搜索圖書功能的核心代碼塊。
全部圖書的展示。
\<td\>\<c:out value=\"\${book.name}\"\>\</c:out\>\</td\>\<td\>\<c:out value=\"\${book.author}\"\>\</c:out\>\</td\>\<td\>\<c:out value=\"\${book.publish}\"\>\</c:out\>\</td\>\<td\>\<c:out value=\"\${book.isbn}\"\>\</c:out\>\</td\>\<td\>\<c:out value=\"\${book.price}\"\>\</c:out\>\</td\>\<td\>\<c:out value=\"\${book.number}\"\>\</c:out\>\</td\>后端調用bookService的getAllBooks()方法查詢所有圖書。
\@RequestMapping(\"/admin_books.html\")public ModelAndView adminBooks() {ArrayList\<Book\> books = bookService.getAllBooks();ModelAndView modelAndView=new ModelAndView(\"admin_books\");modelAndView.addObject(\"books\", books);return modelAndView;}當讀者輸入自己想要借閱的圖書名字,點擊搜索按鈕時,此時會通過表單的形式把關鍵字以post形式提交到reader_querybook_do.html,后端會調用bookService的queryBook(searchWord)方法來查詢符合查詢條件的所有圖書,沒有符合的圖書信息則返回"沒有匹配的圖書"。相對應的接口核心代碼如下。
@RequestMapping(\"/reader_querybook_do.html\")public ModelAndView readerQueryBookDo(String searchWord) {if (bookService.matchBook(searchWord)) {ArrayList\<Book\> books = bookService.queryBook(searchWord);ModelAndView modelAndView=newModelAndView(\"reader_books\");modelAndView.addObject(\"books\", books);return modelAndView;} else {return new ModelAndView(\"reader_books\", \"error\", \"沒有匹配的圖書\");}}5.1.3 讀者個人信息編輯模塊
讀者個人頁面展示自己的所有信息,當點擊編輯時跳轉到reader_info_edit頁面。下面是實現讀者個人信息編輯功能的核心代碼塊。
個人信息接口核心代碼如下。
@RequestMapping(\"/reader_info.html\")public ModelAndView toReaderInfo(HttpServletRequest request) {ReaderCardreaderCard=(ReaderCard)request.getSession().getAttribute(\"readercard\");ReaderInforeaderInfo=readerInfoService.getReaderInfo(readerCard.getReaderId());ModelAndView modelAndView = new ModelAndView(\"reader_info\");modelAndView.addObject(\"readerinfo\", readerInfo);return modelAndView;}對應的數據庫查詢代碼如下。
public ReaderInfo findReaderInfoByReaderId(final long reader_id) {returnsqlSessionTemplate.selectOne(NAMESPACE+\"findReaderInfoByReaderId\", reader_id);}當填好修改過后的個人信息,點擊確定按鈕時,會把信息提交到reader_edit_do_r.html頁面,來請求后端接口。編輯個人信息接口核心代碼如下。
@RequestMapping(\"reader_edit_do_r.html\")public String readerInfoEditDoReader(HttpServletRequest request,String name, String sex, String birth, String address,String phone, RedirectAttributes redirectAttributes) {ReaderCardreaderCard=(ReaderCard)request.getSession().getAttribute(\"readercard\");ReaderInfo readerInfo = getReaderInfo(readerCard.getReaderId(), name, sex, birth, address, phone);}5.1.4 我的借還日志模塊
讀者借閱圖書后,記錄會在我的借還日志頁面來顯示,可以看到借還狀態,借還時間等信息。我的借還日志模塊核心代碼如下。
我的借還日志接口核心代碼如下。
@RequestMapping(\"/mylend.html\")public ModelAndView myLend(HttpServletRequest request) {ReaderCardreaderCard=(ReaderCard)request.getSession().getAttribute(\"readercard\");ModelAndView modelAndView = new ModelAndView(\"reader_lend_list\");modelAndView.addObject(\"list\",lendService.myLendList(readerCard.getReaderId()));return modelAndView;}5.1.5 讀者修改密碼模塊
讀者拿到自己的賬號后,會有一個初始的密碼,為了讀者賬戶的安全,讀者可以自行修改自己的密碼,用戶修改密碼模塊核心代碼如下。
讀者在修改密碼時,填寫兩次密碼是否一致,完整,通過前端驗證即可來提示讀者。檢驗密碼核心代碼如下。
$(\"\#repasswd\").submit(function () {if(\$(\"\#oldPasswd\").val()==\'\'\|\|\$(\"\#newPasswd\").val()==\'\'\|\| \$(\"\#reNewPasswd\").val() == \'\') {\$(\"\#tishi\").text(\"提示:請填寫完整!\");return false;} else if (\$(\"\#newPasswd\").val() != \$(\"\#reNewPasswd\").val()) {\$(\"\#tishi\").text(\"提示:兩次輸入的新密碼不同,請檢查!\");return false;}})
后端接口核心代碼如下。
@RequestMapping(\"/reader_repasswd_do\")public String reReaderPasswdDo(HttpServletRequestrequest, String oldPasswd, String newPasswd, String reNewPasswd,RedirectAttributes redirectAttributes) {ReaderCardreader=request.getSession().getAttribute(\"readercard\");if (password.equals(oldPasswd)) {if (loginService.readerRePassword(id, newPasswd)) {redirectAttributes.addFlashAttribute(\"succ\", \"密碼修改成功!\");return \"redirect:/reader_repasswd.html\";} else {redirectAttributes.addFlashAttribute(\"error\", \"密碼修改失敗!\");return \"redirect:/reader_repasswd.html\";}} else {redirectAttributes.addFlashAttribute(\"error\", \"舊密碼錯誤!\");return \"redirect:/reader_repasswd.html\";}}5.1.6 管理員對圖書的增刪改查模塊
管理員登錄系統后可以對已經上架的圖書進行編輯、刪除等操作;還可以上架新的圖書。管理員對圖書的增刪改查模塊詳細代碼如下。
后端添加圖書接口核心代碼如下。
@RequestMapping(\"/book_add.html\")public ModelAndView addBook() {return new ModelAndView(\"admin_book_add\");}相應的數據庫操作核心代碼如下。
<insert id=\"addBook\" parameterType=\"com.library.bean.Book\"\>insert into book_info values(null, \#{name}, \#{author}, \#{publish}, \#{ISBN},\#{introduction}, \#{language}, \#{price}, \#{pub_date},\#{class_id}, \#{number})\</insert\>編輯、刪除都是通過圖書的ID來進行操作。
其后端接口核心代碼如下。
@RequestMapping(\"/book_edit_do.html\")public String bookEditDo(\@RequestParam(value = \"pubstr\")String pubstr, Book book, RedirectAttributes redirectAttributes) {book.setPubdate(getDate(pubstr));if (bookService.editBook(book)) {redirectAttributes.addFlashAttribute(\"succ\", \"圖書修改成功!\");} else {redirectAttributes.addFlashAttribute(\"error\", \"圖書修改失敗!\");}return \"redirect:/admin_books.html\";}\@RequestMapping(\"/admin_book_detail.html\")public ModelAndView adminBookDetail(HttpServletRequest request) {long bookId = Long.parseLong(request.getParameter(\"bookId\"));Book book = bookService.getBook(bookId);ModelAndView modelAndView=newModelAndView(\"admin_book_detail\");modelAndView.addObject(\"detail\", book);return modelAndView;}其數據庫操作核心代碼如下。
<update id=\"editBook\" parameterType=\"com.library.bean.Book\"\>update book_info set name=\#{name}, author=\#{author},publish=\#{publish}, ISBN=\#{ISBN}, introduction=\#{introduction},language=\#{language}, price=\#{price}, pub_date=\#{pub_date},class_id=\#{class_id}, number=\#{number} where book_id=\#{book_id}\</update\>\<delete id=\"deleteBook\" parameterType=\"long\"\>delete from book_info where book_id = \#{book_id}\</delete\>5.1.7 管理員對讀者信息的增刪改查模塊
管理員登錄系統后可以新增讀者賬號,發放給讀者;對已經存在的讀者賬號進行管理操作。管理員對讀者信息的增刪改查模塊詳細代碼如下。
當有新讀者需要賬號時,管理員可以新增讀者賬號,其核心代碼如下。
前端校驗信息是否合法完整。
$(\"\#readeredit\").submit(function () {if(\$(\"\#password\").val()==\'\'\|\|\$(\"\#name\").val()==\'\'\|\|\$(\"\#sex\").val()==\'\'\|\|\$(\"\#birth\").val()==\'\'\|\|\$(\"\#address\").val()==\'\'\|\|\$(\"\#phone\").val()==\'\'){alert(\"請填入完整讀者信息!\");return mySubmit(false);}})后端接口核心代碼如下。
@RequestMapping(\"reader_add.html\")public ModelAndView readerInfoAdd() {return new ModelAndView(\"admin_reader_add\");}數據庫操作代碼如下。
<insert id=\"addReaderInfo\" parameterType=\"com.library.bean.ReaderInfo\"\>insert into reader_info values(null, \#{name},\#{sex},\#{birth},\#{address},\#{phone})\</insert\>5.1.8 管理員對借還日志的操作模塊
管理員登錄系統后可以查看讀者借還信息,是否超時,對已經還的讀者借閱記錄可以刪除,沒有歸還的圖書借閱日志則無法刪除。管理員對借還日志的操作模塊詳細代碼如下。
后端接口核心代碼如下。
java@RequestMapping(\"/lendbook.html\")public String bookLend(HttpServletRequest request,RedirectAttributes redirectAttributes) {if (lendService.lendBook(bookId, readerId)) {redirectAttributes.addFlashAttribute(\"succ\", \"圖書借閱成功!\");} else {redirectAttributes.addFlashAttribute(\"succ\", \"圖書借閱成功!\");}return \"redirect:/reader_books.html\";}5.2 實現結果
5.2.1 登錄模塊
啟動項目,會自動跳轉到訪問"http://localhost:8080/login.html"登錄頁面,如圖5.1所示。
圖5.1為登錄界面
5.2.2 讀者模塊
讀者通過讀者賬號登錄系統后,可以看到圖書列表、個人信息、我的借還等導航信息。如圖5.2所示。
圖5.2為讀者主頁
輸入Java關鍵字點擊搜索,會查詢到所以與Java相關的圖書,如圖5.3所示。
圖5.3為搜索頁面
當讀者點擊詳情時,會查看到圖書的詳細信息,如圖5.4所示。
圖5.4為圖書的詳細信息
讀者個人信息管理頁面,可以對自己的信息進行編輯,如圖5.5所示。
圖5.5為個人信息頁面
我的借還頁面,可以讓讀者清晰的看到自己的借還記錄,如圖5.6所示
圖5.6為我的借還頁面
修改密碼頁面,用戶可以對自己的密碼進行修改,如圖5.7所示。
圖5.7為修改密碼頁面
5.2.3 管理員模塊
管理員通過管理員賬號登錄進入到管理員系統主頁,可以對圖書進行增刪改查操作,如圖5.8所示。
圖5.8為管理員系統主頁
讀者管理模塊。管理員可以對讀者賬號進行管理,還可以新增讀者賬號,如圖5.9所示。
圖5.9為讀者管理模塊
管理員登錄系統后可以查看讀者借還信息,是否超時,對已經還的讀者借閱記錄可以刪除,沒有歸還的圖書借閱日志則無法刪除,如圖5.10所示。
圖5.10為借還日志模塊
6 測試
6.1 系統測試
??測試是程序的一種執行過程,是軟件生命周期中一項非常重要且非常復雜的工作,對軟件可靠性保證具有極其重要的意義。在目前形式化方法和程序正確性證明技術還無望成為實用性方法的情況下,軟件測試在將來相當一段時間內仍然是軟件可靠性保證的有效方法。
6.1.1 測試目的
??測試的目的是盡可能發現并改正被測試軟件中的錯誤,提高軟件的可靠性,盡可能發現更多缺陷,提高開發效率,降低開發成本,提高用戶體驗。
6.1.2 測試方法
??在用例設計環節中,測試人員為了盡可能實現高覆蓋率的測試,測試用例設計涉及多種方法和技術,以保證更多的覆蓋系統的每一行代碼、每一個邏輯判斷的運行,每一個可操作的功能分支都得以覆蓋,相當于"窮舉測試"。測試的最終目的,是盡可能在有限的時間內發現更多有效的,容易被用戶認知的,復現幾率較大的缺陷。
6.1.3 測試的意義
??測試是很重要的一個環節,如果沒有做好,或許會對公司造成損失,影響客戶體驗,所以軟件測試時必須進行的一個環節。軟件測試主要是要心細,一個軟件往往大錯誤就不多,最多的就是小錯誤、小毛病。本系統經過以上部分測試系統功能基本齊全,實現了增加、刪除、修改、查詢等功能,各個功能未發現重大錯誤,只是有一些小瑕疵,使用的時候若不能正常運行,將網址刷新一下,等待系統運行,即可成功運行,可投入使用。
6.2 系統功能測試
??功能測試就是對系統中表現層的各項功能進行驗證,首先需要設計各功能測試用例,然后根據功能測試用例進行各層功能,實現逐項測試,檢查圖書管理系統是否達到用戶要求的功能,檢查系統中的各項功能模塊的是否有效和是否符合規格說明。通常在進行系統測試時,則按照功能需求的規定對系統的功能、數據、流程、業務規則等進行逐一的測試。包括相關性檢查、檢查按鈕的功能是否正常、字符串長度檢查、字符類型檢查、檢查系統管理員能否正常登錄、能否正常瀏覽圖書、能否查看讀者的借還日志、能否正常編輯圖書信息;用戶能否正常查閱圖書、借還圖書、能否修改自己的密碼。整個圖書管理系統的使用流程是否順暢。
圖書管理系統的測試用例如表6.1所示。
表6.1 圖書管理系統的測試用例
6.3 系統性能測試
??性能的測試主要是通過模擬系統正常運行的環境,測試系統的性能狀況是否完全符合用戶的需求。系統性能測試的重要內容和技術指標之一就是:系統正常運行的速度、網絡響應的時間和是否支持網絡并發的節點等參數。
?(1)保證系統的運行速度:技術人員通過在不同平臺計算機上的測試運行本產品系統,沒有被人發現有任何遲滯、停頓等異?,F象。
?(2)用戶網絡最大響應時間:網絡最大響應的時間主要可以包括用戶網絡最小響應時間、平均最大響應時間、最大響應時間三個基本參數。經過響應時間測試,在用戶網絡正常運營良好的狀態下,局域網內平均最大響應時間三參數為:1/2/5s,外網響應時間三參數為3/7/12s,符合了用戶的需求,屬于滿足用戶的心理需求和可承受的范圍。
?(3)系統可以支持多個并發管理節點的服務個數:經過多次針對模擬用戶網絡運營環境的運行測試,本平臺系統在模擬網絡環境中的支持并發服務節點個數達45個時,網絡用戶運營的數據速度波動可能也就會自動隨網絡時間推移發生較大的速度波動,延遲時間10秒左右,符合大部分網絡用戶的實際需求。
??總之,圖書管理系統性能測試能夠正常實現,該系統能夠投入市場使用。
設計總結和心得體會
??通過此次課程設計,使我們更加扎實的掌握了所學的知識,實踐出真知,通過親自動手制作,使我們掌握的知識不再是紙上談兵。此次課程設計使我們的編程水平提高了一大步,使我們充分的認識到合作的可貴。由于這次設計涉及到數據庫,我的學到了不少編程工具與數據庫連接的知識,對數據庫的操作有了進一步的了解。這次設計對我們的綜合能力是一次很好的鍛煉,但是我必須承認自己的能力和知識還很膚淺。所以今后我們的學習道路還是很漫長的。最后,在這里我要衷心的感謝我們的指導老師白文杰,謝謝她的悉心指導和熱心幫助。由于我們的水平有限,加之時間短暫,故圖書管理系統中還有許多不足之處,請老師批評指正,我會在以后的制作中不斷改進,不斷完善。
在這次課程設計中,我們學到了很多的知識,同時學會了怎么將學到的理論知識用到實踐中去,改變了過去的學習方法和學習態度,找到了一門自己很喜歡的學科。本次課程設計是由我們團隊一起完成的,團隊的力量往往比個人力量之和大上很多,并且在今后的開發中,我們都將是以團隊的形式展開工作的,所以我們應該在現在學習的時候養成一種良好的團隊精神,以為將來的開發打下基礎。
參考文獻
[1]陳召久.基于互聯網的圖書情報一體化管理系統設計[J].電子技術,2022,51(02):186-187.
[2]林輝.基于Java
Web的渭南市大荔縣圖書管理系統的設計與實現[J].電子設計工程,2021,29(24):155-158+163.
[3]陳新,張楠.圖書管理系統設計與實現[J].硅谷,2011(14):102+100.
[4]鄧鮮艷.基于JSP語言的圖書管理系統設計[J].科技信息,2011(07):488+515.
[5]莊禮金,黃曉云.基于JSP的圖書在線借閱系統的分析與設計[J].信息技術與信息化,2019(11):36-38.
[6]林卓.基于JSP的圖書超市管理系統設計與實現[J].山西大同大學學報(自然科學版),2009,25(05):16-17+20.
[7]林輝.基于Java
Web的渭南市大荔縣圖書管理系統的設計與實現[J].電子設計工程,2021,29(24):155-158+163.
[8]趙澤忠,劉歡.基于MVC模式下的圖書管理系統設計與實現[J].數碼世界,2019(10):106.
[9]周永宏,肖國政.基于Servlet的在線圖書管理系統設計[J].科技風,2019(21):15
[10]徐連霞,傅偉.圖書管理系統設計與實現[J].今日財富,2019(19):203.
總結
以上是生活随笔為你收集整理的图书管理系(附源码PPT)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 圆形体体积计算器(20 分)
- 下一篇: 最好用的Wemall开源微商城