




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、摘要書籍信息咨詢與借閱平臺是智能辦公系統(tǒng)(ioa)的重要組成部分,因此,書籍 信息咨詢與借閱平臺也以方便、快捷的優(yōu)點(diǎn)正慢慢地進(jìn)入人們的生活,將傳統(tǒng)的 書籍管理方式徹底的解脫出來,提高效率,減輕工作人員以往繁忙的工作,減小 出錯的概率,使讀者可以花更多的時間在選擇書和看書上。針對過去基于網(wǎng)絡(luò)的書籍信息咨詢與借閱平臺缺乏業(yè)務(wù)服務(wù)能力、不利于資 源共建共享,提出一種j2ee解決方案。在具體模式設(shè)計上,表示層用業(yè)務(wù)控制 器架構(gòu)。業(yè)務(wù)層釆用會話外觀和服務(wù)定位器,數(shù)據(jù)持久層使用值對彖。強(qiáng)調(diào)了模 型層應(yīng)用bean管理持久性的思想,并通過各層實(shí)現(xiàn)過程說明模式的開發(fā)。本文介紹了 j2ee相關(guān)概念、定義及分類,重
2、點(diǎn)介紹了 fi前幾種流行j2ee框 架:struts2 (業(yè)務(wù)層)、spring (控制層)、ibatis (表現(xiàn)層)。以及運(yùn)用這些框架技 術(shù)設(shè)計一個基于網(wǎng)絡(luò)的書籍信息咨詢與借閱平臺。關(guān)鍵詞:書籍信息咨詢,myeclipse, j2ee, struts2, springabstractbooks information consulting and lending platform is an important part of the intelligent office systems (ioa). therefore, books information consulting and l
3、ending platform with the advantage of convenient is being slowly into people's lives, freeing the traditional books management, improving efficiency, reducing the heavy workload of staff in the past, reducing the probability of errors, so that readers can spend more time on selecting books and r
4、eading.web-based books information consulting and business lending platform for the past is not only lack of service capacity, but also conducive to resource sharing, so we presents a solution which called j2ee. in the specific model design, presentation layer structure with the business controller,
5、 business layer use session facade and service locator, data persistence layer use the value object. it is emphasized that application model use bean to manage persistent, and note patterns through the layers to achieve the development process.this article describes the j2ee concepts, definitions an
6、d classification, the emphasis being placed several popular j2ee framework: struts (business level), spring (control layer), ibatis (presentation layer). and using the framework technical to design a web-based book information consulting and borrowing platform.keywords: books information consulting,
7、 myeclipse, j2ee, struts2, spring目錄摘要錯誤!未定義書簽。abstract錯誤!未定義書簽。第1章 緒論錯誤!未定義書簽。1.1背景錯誤!未定義書簽。1.2研究內(nèi)容錯誤!未定義書簽。第2章基于ssi框架的web應(yīng)用開發(fā)32.1框架技術(shù)分析32.1表現(xiàn)層框架一struts232.1.2持久層框架一ibatis42.1.3 控制層框架一spring42.1.2前端框架ajax52.2 ssi框架整合82.2.1 ssi框架的集成82.2.2 ssi框架的設(shè)計與實(shí)現(xiàn)9第3章 系統(tǒng)總體設(shè)計分析123.1系統(tǒng)需求分析123.2系統(tǒng)功能模塊設(shè)計123.2系統(tǒng)功能結(jié)構(gòu)圖12
8、第4章數(shù)據(jù)庫設(shè)計144.1數(shù)據(jù)庫概要說明144.2數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計144.3數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計174.4數(shù)據(jù)庫完整性設(shè)計20第5章系統(tǒng)詳細(xì)設(shè)計與實(shí)現(xiàn)215.1基礎(chǔ)功能模塊設(shè)計215.2系統(tǒng)登錄模塊設(shè)計與實(shí)現(xiàn)225.3系統(tǒng)主窗口設(shè)計與實(shí)現(xiàn)235.4書籍管理模塊設(shè)計與實(shí)現(xiàn)255.5書籍借還模塊設(shè)計與實(shí)現(xiàn)285.6用戶管理模塊設(shè)計與實(shí)現(xiàn)30第6章 系統(tǒng)測試分析報告32第7章結(jié)論33致謝35參考文獻(xiàn)36第1章引言1.1背景一直以來人們使用傳統(tǒng)的人工方式管理圖書館的日常工作,這種方式的 不足之處顯而易見,首先處理借書、還書業(yè)務(wù)流程的效率很低,其次處理能力比 較低,一段時間內(nèi),所能服務(wù)的讀者人數(shù)是有限的
9、。隨著圖書館規(guī)模的不斷擴(kuò)大,圖書數(shù)量也相應(yīng)的增加,有關(guān)圖書的各種信息 量也成倍增加,面對著龐大的信息量,傳統(tǒng)的人工方式管理會導(dǎo)致圖書館管理上 的混亂,人力與物力過多浪費(fèi),圖書館管理費(fèi)用的增加,從而使圖書從而使圖書 館的負(fù)擔(dān)過重,影響整個圖書館的運(yùn)作和控制管理,因此,必須制定一套合理、 有效、規(guī)范和實(shí)用的圖書管理系統(tǒng),對圖書資料進(jìn)行集中統(tǒng)一的管理。但以前一般采用jsp4- servlet的模式來開發(fā)系統(tǒng),就是我們常聽到的model 1 模式。在傳統(tǒng)的model 1的程序結(jié)構(gòu)中,只要有一點(diǎn)小的需求發(fā)生改變,將意味 著放棄整個頁面?;蛘吒膶?。雖然前期的開發(fā)速度快,除非可以保證以后永遠(yuǎn)不 會改變應(yīng)用的
10、結(jié)構(gòu),否則不要采用model 1的結(jié)構(gòu)。而現(xiàn)在我們將采用model2的模式來開發(fā),也就是我們所稱的mvc模式。在 典型的j2ee三層結(jié)構(gòu),分為表現(xiàn)層、中間層(業(yè)務(wù)邏輯層)和數(shù)據(jù)服務(wù)層。三 層體系將業(yè)務(wù)規(guī)則、數(shù)據(jù)訪問及合法性校驗(yàn)等工作放在中間層處理。客戶端不肓 接與數(shù)據(jù)庫交互,而是通過組件與中間層建立連接,再由中間層與數(shù)據(jù)庫交互。個良好的框架可以讓開發(fā)人員減輕重新建立解決復(fù)雜問題方案的負(fù)擔(dān)和精 力;它可以被擴(kuò)展以進(jìn)行內(nèi)部的定制化;并且有強(qiáng)大的用戶社區(qū)來支持它??蚣?通常能很好的解決一個問題。然而,你的應(yīng)用是分層的,可能每一個層都需要各 自的框架。僅僅解決ui問題并不意味著你能夠很好的將業(yè)務(wù)邏輯和
11、持久性邏輯 和ui組件很好的耦合。1.2研究內(nèi)容本次畢業(yè)設(shè)計題目:“基于網(wǎng)絡(luò)的書籍信息咨詢與借閱平臺系統(tǒng)"總的設(shè)計目 標(biāo)是在基于集中統(tǒng)一規(guī)劃的數(shù)據(jù)庫數(shù)據(jù)管理新模式下實(shí)現(xiàn)圖書管理的系統(tǒng)化、規(guī) 范化和自動化,并且在實(shí)現(xiàn)上采用j2ee三層分離的開發(fā)模式,為此,我們應(yīng)該:1)研究并分析一個基于網(wǎng)絡(luò)的書籍信息咨詢與借閱平臺系統(tǒng)的需求分析。書籍信息咨詢與借閱平臺系統(tǒng)可以為學(xué)?;蛟合档膱D書管理部門提供基 本的圖書管理,從而幫助圖書管理人員能夠?qū)D書管理的業(yè)務(wù)流程進(jìn)行 高效的管理,這些管理包括:1、圖書的借還管理,包括借閱、歸還管理,2、對圖書信息進(jìn)行管理,包括圖書的增加、修改、刪除、瀏覽管理,3、
12、根據(jù)不同的條件設(shè)置對圖書進(jìn)行查詢,4、讀者管理,包括添加新讀者,查詢讀者的借閱信息等功能,5、權(quán)限管理2)設(shè)計并開發(fā)一個基于struts2+ibatis+spring+ajax的開發(fā)框架其中struts用于view-control層的實(shí)現(xiàn),ibatis負(fù)責(zé)關(guān)系數(shù)據(jù)庫的操作, spring用于控制層的應(yīng)用,整合struts2和ibatis,以聲明式的方式管理 事務(wù)。第2章基于ssi框架的web應(yīng)用開發(fā)2.1框架技術(shù)分析所謂“框架”,是“應(yīng)用程序框架”的簡稱,它提供一個概括的體系結(jié)構(gòu)模板, 并且可以向不同的應(yīng)用系統(tǒng)提供一組可重用的服務(wù)組件,而“輕量級框架”的特點(diǎn) 是具有非侵入性和容器的獨(dú)立性。輕量
13、級框架主要簡化的是編程模型,旨在消除與 傳統(tǒng)j2ee api有關(guān)的不必要的復(fù)雜性和限制。在輕量級框架領(lǐng)域,控制反轉(zhuǎn) (inversion of control, ioc)機(jī)制被大量采用,這使得開發(fā)人員不需要再編寫復(fù)雜的 代碼來執(zhí)行查詢、處理基礎(chǔ)架構(gòu)異?;蚬芾磉B接就能夠解決對象的依賴性問題, 有助于簡化代碼并將業(yè)務(wù)邏輯與基礎(chǔ)架構(gòu)分離,從而使應(yīng)用程序更易于維護(hù)。2.1.1表現(xiàn)層框架一struts2struts2是應(yīng)用最為廣泛的java web開發(fā)框架。struts2提供了一組相互協(xié)作 的類servlet和jsp標(biāo)簽,由它們共同組成了一個可重用的mvc設(shè)計模式的框架。 struts2框架分離了表示層
14、、控制層和業(yè)務(wù)邏輯處理層代碼,提高了系統(tǒng)的可擴(kuò)展性 和健壯性,使開發(fā)者能夠更專注于系統(tǒng)業(yè)務(wù)邏輯的具體實(shí)現(xiàn)。struts2的工作流程:當(dāng)接收到一個httprequest, interceptor做一些攔截或者初始的工作。當(dāng)外部 的httpservletrequest到來時,初始到了 servlet容器,并傳遞給一個標(biāo)準(zhǔn)的過濾 器鏈。調(diào)用filterdispatecher會去查找相應(yīng)的actionmapper,如果找到了相應(yīng)的 actionmapper它將會將控制權(quán)限交給actionproxy , actionproxy將會通過 configurationmanager 來查找配置 struts.
15、xml,下一步將會通過 actioninvocation 來負(fù)責(zé)命令模式的實(shí)現(xiàn)(包括調(diào)用一些攔截interceptor 架在調(diào)用action之前)。 一旦action返回,會查找相應(yīng)的resulto圖2-1 struts2框架的體系結(jié)構(gòu)2.1.2持久層框架一ibatis在ssi整合框架中,持久層由ibatis框架實(shí)現(xiàn)。所謂持久層就是將應(yīng)用程序 與其所操縱的數(shù)據(jù)源相分離。在持久層中封裝了對數(shù)據(jù)庫訪問的細(xì)節(jié),向業(yè)務(wù)邏 輯公開接口,保證建立在數(shù)據(jù)持久層之上的應(yīng)用程序能夠方便地訪問需要的數(shù)據(jù) 庫。持久層設(shè)計的關(guān)鍵問題就是如何在對象和關(guān)系數(shù)據(jù)庫之間建立一種映射關(guān)系。 目前在對象跟關(guān)系數(shù)據(jù)庫之間的映射都采
16、用的是o/rmappingo而ibatis提供的持 久層框架包括 sql maps 和 data access objects (dao )o 相對 hibernate 和 apache ojb等“一站式” orm解決方案而言,ibatis是一種“半自動化”的orm實(shí)現(xiàn)。當(dāng)我們遇到這些問題時:1. 系統(tǒng)的部分或全部數(shù)據(jù)來自現(xiàn)有數(shù)據(jù)庫,處于安全考慮,只對開發(fā)團(tuán)隊 提供幾條select sql (或存儲過程)以獲取所需數(shù)據(jù),具體的表結(jié)構(gòu)不予公開。2. 開發(fā)規(guī)范中要求,所有牽涉到業(yè)務(wù)邏輯部分的數(shù)據(jù)庫操作,必須在數(shù)據(jù) 庫層由存儲過程實(shí)現(xiàn)。3. 系統(tǒng)數(shù)據(jù)處理量巨大,性能要求極為苛刻,這往往意味著我們必須
17、通過 經(jīng)過高度優(yōu)化的sql語句(或存儲過程)才能達(dá)到系統(tǒng)性能設(shè)計指標(biāo)。ibatis相 對于hibernate就會顯示出它的優(yōu)越性?!叭詣印?orm實(shí)現(xiàn)了 pojo和數(shù)據(jù)庫 表之間的映射,以及sql的自動生成和執(zhí)行。而ibatis的著力點(diǎn),則在于pojo 與sql之間的映射關(guān)系。也就是說,ibatis并不會為程序員在運(yùn)行期自動牛成 sql執(zhí)行。具體的sql需要程序員編寫,然后通過映射配置文件,將sql所 需的參數(shù),以及返回的結(jié)果字段映射到指定pojoo2.1.3控制層框架一springspring是一個開源框架,它lirod johnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開 發(fā)的復(fù)雜性而創(chuàng)建的o s
18、pring使用基本的javabean來完成以前只可能由ejb完成 的事情。然而,spring的用途不僅限于服務(wù)器端的開發(fā)。從簡單性、可測試性和 松耦合的角度而言,任何java應(yīng)用都可以從spring中受益。spring的核心是ioc原則,包含以下想法:(1) 功能代碼需要分開到更小的可管理片斷;(2) 這些片斷是簡單的,標(biāo)準(zhǔn)的javabean(簡單java類擁有但包含全部的 javabean 規(guī)范);(3) 不需要參與管理這些bean(如創(chuàng)建、銷毀、設(shè)置依賴);(4) spring容器通過上下文定義來完成以上功能(通常為xml文件格式)。spring框架是通過ioc機(jī)制把程序中所涉及到的業(yè)務(wù)邏
19、輯處理和數(shù)據(jù)庫訪問 對彖(dao)、事務(wù)管理控制器、服務(wù)組件等都通過xml文件配置關(guān)聯(lián)起來,使 得各個實(shí)體之間充分解耦,實(shí)體之間的關(guān)系更加清晰明了,而且方便了日后的維 護(hù)。這種依賴注入(dependency injection, di)技術(shù)的應(yīng)用大大提升了組件重用的 概率,并為系統(tǒng)搭建了一個更加靈活、可擴(kuò)展的平臺。2.1.4前端框架一ajaxajax(異步j(luò)avascript和xml)是指一種異步交互方式的網(wǎng)頁開發(fā)技術(shù)。1、ajax的兒大關(guān)鍵技術(shù)(1) 使用xmlhttprequest對象與web服務(wù)器進(jìn)行異步數(shù)據(jù)交換;(2) 使用xml和xslt進(jìn)行數(shù)據(jù)交換及相關(guān)操作;(3) 使用javas
20、cript操作dom(document object model)進(jìn)行動態(tài)顯示及交互;(4) 基于web標(biāo)準(zhǔn)xhtml+css的表示。使用javascript作為黏合劑將所 有技術(shù)結(jié)合起來。2、ajax的工作原理:圖2-2 ajax異步傳輸3、ajax在struts2中的實(shí)現(xiàn):json(javascript object notation)是一種數(shù)據(jù)交互格式,一個不能實(shí)現(xiàn)數(shù)據(jù)交 互功能的項(xiàng)目是沒有任何意義的,大多的ajax框架的數(shù)據(jù)交互都基于jsonojson 是一種輕量級的數(shù)據(jù)格式,它基于javascript語法的子集,即數(shù)組和對象表示。 由于使用的是javascript語法,因此json定
21、義可以包含在javascript文件中, 對其的訪問無需通過基于xml的語言來額外解析。struts2在支持ajax的同時提供了,對異步傳輸數(shù)據(jù)具有良好效率的json 提供了相關(guān)的jsonplugin插件,使用該插件后就可以為某個action指定一個無需 映射到任何視圖資源的json類型的result;使用該插件后自動將action里的信 息轉(zhuǎn)化為json格式數(shù)據(jù)。json傳輸?shù)闹饕椒ㄈ缦拢簆ublic void outjsonstring(string str) getresponse().setcontenttype(htext/javascript;charset=utf-8h); o
22、utstring(str);public void outstring(string str) try 向文本輸出流打卬對象的格式化表示形式printwriter out = getresponse().getwriter();out.write(str); catch (ioexception e) e.printstacktrace();/ajax取得都是字符的輸出。如果數(shù)據(jù)量大的話,還可以用xml來發(fā)送 和接受public void outxmlstring(string xmlstr) getresponse().setcontenttype(”application/xml;chai
23、*set 二 utf8");outstring(xmlstr);4、ajax中的extjs框架ext js (下簡稱ext)是以html作為控件的骨干、css作為樣式的表現(xiàn)、 以javascript作為粘合語言,可應(yīng)用于ie/firefox /opera等的瀏覽器上的ajax ui 組件庫。extjs可以用來開發(fā)ria也即富客戶端的ajax應(yīng)用,是一個用javascript寫 的,主要用于創(chuàng)建前端用戶界面,是一個與后臺技術(shù)無關(guān)的前端ajax框架。因此, 可以把extjs用在.net、java、php等各種開發(fā)語言開發(fā)的應(yīng)用中。extjs最開始 基丁 yui技術(shù),由開發(fā)人員jacksl
24、ocum開發(fā),通過參考javaswing等機(jī)制來組 織可視化組件,無論從ui界面上css樣式的應(yīng)用,到數(shù)據(jù)解析上的異常處理, 都可算是一款不可多得的javascript客戶端技術(shù)的精品。ext的ui組件模型和開發(fā)理念脫胎、成型于yahoo組件庫yui和java平臺 ± swing兩者,并為開發(fā)者屏蔽了大量跨瀏覽器方面的處理。相對來 說,ext 要比開發(fā)者直接針對dom、w3c對象模型開發(fā)ui組件輕松。exus 2.0組件繼承結(jié)構(gòu)圖ext.colorpaletteext.buttonext.componentext.edltorext.datepickerext.menu.baselt
25、emext.boxcomponentext.splltbuttonext.cyclebuttonext.toolbar.splltbuttonext.toolbar. buttonext.grid.editorgridpanelext.form.numberfleldext.form.textareaext.form.radloexttree.treeedltorext.menu.adapterext.menu.colorltemext.menu.dateitemext.menutemext.menu.checkitemext.menu.separatorext.menu.textltemex
26、tgrid.propertygridext.form.triggerfleldext.form.comboboxextform.timefleldext.form.datefleldeasyjf開源團(tuán)隊圖2-2 ext組件圖2.2 ssi框架的整合在j2ee平臺下開發(fā)web項(xiàng)目,對于開發(fā)者而言,框架的使用對于整個項(xiàng)目 的開發(fā)起著至關(guān)重要的作用,特別是整合框架的使用。當(dāng)前比較流行的整合框架 之一是ssi整合框架。2.2.1 ssi框架的集成在ssi整合框架中,struts2.0框架為表示層,在這個框架中的struts.xml文件 定義了所有的action和action所對應(yīng)的name屬性和cla
27、ss屬性。其中class屬性 的值作為業(yè)務(wù)層spring2.0框架1+1的核心文件applicationcontext.xml屮的注冊名, 即bean的id值。而bean所對應(yīng)的class屬性值就為進(jìn)行業(yè)務(wù)處理的action這 樣struts2.0框架就跟spring2.0框架整合在一起工作。而spring2.0框架中的dao模式通過調(diào)用ibatis框架中的配置文件config.xml,使得spring2.0框架與作為持 久層的ibatis框架整合在一起工作。這樣三個框架通過兩個xml文件的使用而整 合在一起工作。圖2-4 s2si技術(shù)架構(gòu)原理2.2.2 ssi框架的設(shè)計與實(shí)現(xiàn)下面將通過一個實(shí)
28、際的系統(tǒng)來展示如何進(jìn)行基于s2si框架的web應(yīng)用開發(fā)。 卜面就以一個科目管理模塊為例來說明系統(tǒng)的開發(fā)實(shí)現(xiàn)過程,并將按照數(shù)據(jù)持久 層、業(yè)務(wù)邏輯層、表示層的順序說明系統(tǒng)構(gòu)建過程。(1) 數(shù)據(jù)持久層數(shù)據(jù)持久層由java對象持久化類和數(shù)據(jù)訪問對象(dao)組成。每個數(shù)據(jù)庫表 都對應(yīng)著一個持久化對象。表21科目表部分結(jié)構(gòu)subject字段名數(shù)據(jù)類型大小subjectldint10subjectnamestring50 其中對應(yīng)的ibatis配置文件內(nèi)容為:<sqlmap namespace二”subject"<typealias alias=,'subject"
29、 type二”com.lhq.pij.bms.po.subject" /><parameter property="subjectname" javatype=hstring"jdbctype二”varchar” /><insert id二”save” parameterclass="subject"><!|cdata|insert into t_subject (subjectname,remark) values (#subjectname:varchar#,#remark:varchar#)l
30、l><selectkey resultclass=,inth><!cdataselect identity as idll></selectkey></insert> (2) 業(yè)務(wù)表現(xiàn)層在科目管理模塊中,通過業(yè)務(wù)建模創(chuàng)建了用戶模型subjectservice類,封裝對 科目進(jìn)行crud等操作功能。subjectservice這個類通過調(diào)用數(shù)據(jù)訪問類 subjectdao實(shí)現(xiàn)對科目的數(shù)據(jù)庫的操作。這些組件的關(guān)系將通過配置spring框架 的 applicationcontext-daos.xml 和 applicationcontext-se
31、rvices.xml 聯(lián)系起來,配置 文件的主要內(nèi)容如下所示:倉ij建業(yè)務(wù)模型組件subjectservice,并調(diào)用subjectdao組件作為協(xié)作對象<bean id=hsubjectservice" class="com.lhq.pij.bms.service.impl.subjectservice"> <property name="subjectdaoh ref="subjectdaoh /></bean>創(chuàng)建數(shù)據(jù)訪問組件subjectdao,調(diào)用hibernate的session工丿作為協(xié)作對象&
32、lt;bean id="subjectdao" class="com.lhq.pq.bms.dao.impl.subjectdao"><property name=nsqlmapclienth re仁"sqlmapclient" /></bean>(3) 界面顯示層表示層利用actionservlet將請求(*.action)映射到相應(yīng)的action,并由action 調(diào)用業(yè)務(wù)邏輯的服務(wù)組件,然后根據(jù)處理結(jié)果跳轉(zhuǎn)到result對象指定的響應(yīng)頁面。業(yè)務(wù)流程的部署由applicationcontext-act
33、ions.xml完成,例如:<bean name=hsubjectactionn class=ncomjhq.pij.bms.action.subjectactionh scope=hprototypeh><property name=nsubjectservicen ref=nsubjectservice11 /></bean>第3章系統(tǒng)總體設(shè)計分析3.1系統(tǒng)需求分析隨著互聯(lián)網(wǎng)的爆炸性發(fā)展,人們越來越習(xí)慣于利用網(wǎng)絡(luò)來實(shí)現(xiàn)所需的服務(wù), 網(wǎng)絡(luò)已深深影響到人們?;畹母鱾€方面。另外,傳統(tǒng)的圖書館不能滿足一部分現(xiàn) 代人的需要,而基于網(wǎng)絡(luò)的書籍信息咨詢和借閱平臺,由于
34、其不受時間與空間的 限制同時又具有傳統(tǒng)圖書館的大部分功能,能夠滿足各類用戶的常規(guī)與特殊需求, 而且其方便快捷,實(shí)現(xiàn)技術(shù)乂比較成熟,因此受到當(dāng)代人的喜愛。該系統(tǒng)主要分為兩部分:書籍部分和讀者部分。為了方便讀者查找自己感興 趣的主題進(jìn)行閱讀,要將圖書按照內(nèi)容進(jìn)行分類。讀者可以按照類別進(jìn)行查找。 木系統(tǒng)還可對用戶的賬號進(jìn)行管理。管理員需要給用戶分配用戶名和密碼,及設(shè) 定用戶的級別。3.2系統(tǒng)功能模塊設(shè)計(1) 系統(tǒng)設(shè)置模塊:設(shè)置用戶的權(quán)限。(2) 用戶管理模塊:添加刪除用戶類型、添加刪除用戶的檔案。(3) 圖書管理模塊:添加修改刪除圖書,添加修改刪除圖書所屬科冃,添加修 改刪除圖書所屬類別。(4)
35、圖書借還模塊:可查詢讀者借閱和歸還圖書的信息。(5) 系統(tǒng)查詢模塊:可根據(jù)不同的條件(書名、類別、作者、出版社、地址) 查詢讀者需要的圖書;可根據(jù)圖書查詢該圖書借還記錄。3.3系統(tǒng)功能結(jié)構(gòu)圖書籍信息管理與咨詢系統(tǒng)設(shè)置讀者管理第4章數(shù)據(jù)庫設(shè)計4.1數(shù)據(jù)庫概要說明考慮該系統(tǒng)的定位與現(xiàn)有技術(shù)力量,決定采用sqlserver 2000作為系統(tǒng)的后 臺數(shù)據(jù)庫開發(fā)環(huán)境。數(shù)據(jù)庫用來存儲圖書的基木信息、讀者信息讀者借書信息讀 者還書信息等。這里將數(shù)據(jù)庫命名為bmsh,其中包含了 8張數(shù)據(jù)表,用于存儲不 同的信息。通過上一章對客戶性能需求與系統(tǒng)功能模塊的分析與設(shè)計可以確定書 籍管理我們所需要的信息項(xiàng)和數(shù)據(jù)結(jié)構(gòu):
36、(1) 圖書數(shù)據(jù)項(xiàng):圖書編號、書名、作者、出版社、出版時間、定價、版次、 isbn、所屬分類、所屬分類名稱、字?jǐn)?shù)、開木、紙張、包裝、封面、藏書地址、 編輯推薦、內(nèi)容簡介、作者簡介、當(dāng)前狀態(tài)、當(dāng)前借閱人編號、當(dāng)前借閱人編號、 當(dāng)前關(guān)聯(lián)的借閱記錄編號。(2) 分類數(shù)據(jù)項(xiàng):分類編號、分類名稱、所屬科目編號、所屬科目名稱、備 注。(3) 科目數(shù)據(jù)項(xiàng):科目編號、科目名稱、備注。(4) 學(xué)院數(shù)據(jù)項(xiàng):學(xué)院編號、學(xué)院名稱、學(xué)院電話、學(xué)院負(fù)責(zé)人、學(xué)院負(fù)責(zé) 人電話、備注。(5) 系數(shù)據(jù)項(xiàng):系編號、系名稱、所屬學(xué)院編號、所屬學(xué)院名稱、系電話、 系負(fù)責(zé)人姓名、系負(fù)責(zé)人電話、備注。(6) 角色數(shù)據(jù)項(xiàng):角色編號、角色名稱
37、、備注。(7) 借出記錄數(shù)據(jù)項(xiàng):記錄編號、圖書編號、書名、借出時間、借出天數(shù)、 預(yù)計還書時間、實(shí)際還書時間、借閱人編號、借閱人、管理員編號、管理員名稱。(8) 用戶數(shù)據(jù)項(xiàng):用戶編號、用戶姓名、用戶編碼、移動電話、性別、年齡、 用戶名、密碼、所屬學(xué)院編號、所屬學(xué)院名稱、所屬系編號、所屬系名稱、角色 編號、角色名稱、是否管理員、備注。4.2數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計在概念設(shè)計階段屮,設(shè)計人員從用戶的角度看待數(shù)據(jù)及處理要求和約束,產(chǎn) 生一個反映用戶觀點(diǎn)的概念模式,然后再把概念模式轉(zhuǎn)換成邏輯模式。將概念設(shè) 計從設(shè)計過程屮獨(dú)立開來,使各階段的任務(wù)相對單一化,設(shè)計復(fù)雜程度大大降低, 不受特定dbms的限制。利用e
38、-r方法進(jìn)行數(shù)據(jù)庫的概念設(shè)計,可分成三步進(jìn)行:首先設(shè)計局部e-r模 式,然后把各局部e-r模式綜合成一個全局模式,最后對全局e-r模式進(jìn)行優(yōu)化, 得到最終的模式,即概念模式。將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)即概念模型的過程就是概念結(jié)構(gòu) 的設(shè)計。設(shè)計概念結(jié)構(gòu)通常有四種方法:(1) 自頂向下。即首先定義全局概念結(jié)構(gòu)的框架,然后逐步細(xì)化。(2) 自底向上。即首先定義各局部應(yīng)用的概念結(jié)構(gòu),然后將它們集成起來,得 到局部概念結(jié)構(gòu)。(3) 逐步擴(kuò)張。首先定義最重要的核心概念結(jié)構(gòu),然后向外擴(kuò)充,以滾雪球的 方式逐步生成其他概念結(jié)構(gòu),直至總體概念結(jié)構(gòu)。(4) 混合策略。即將自頂向下和自底向上相結(jié)合,用自
39、頂向下策略設(shè)計一個全 局概念結(jié)構(gòu)的框架,以它為骨架集成由自底向上策略中設(shè)計的各局部概念結(jié)構(gòu)。其中最經(jīng)常采用的策略是自底向上方法。即自頂向下地進(jìn)行需求分析,然后 再自底向上地設(shè)計概念結(jié)構(gòu)。它通常分為兩步:第一步是抽象數(shù)據(jù)并設(shè)計局部視圖; 第二步是集成局部視圖,得到局部概念結(jié)構(gòu)。本系統(tǒng)的數(shù)據(jù)庫也采用自底向上的設(shè)計方法。從需求分析的數(shù)據(jù)描述中可以 抽彖出院系信息實(shí)體、圖書信息實(shí)體、讀者信息實(shí)體、借閱信息實(shí)體、圖書類別 實(shí)體。本系統(tǒng)采用sqlserver2000是數(shù)據(jù)庫并且使用powerdesigner進(jìn)行數(shù)據(jù)建 模:書籍管理:包括書籍信息管理、書籍分類信息管理、書籍科冃信息管理 包括的實(shí)體:book
40、> category> subject, er 圖:圖41書籍管理er圖系統(tǒng)管理:包括用戶信息管理、學(xué)院信息管理、系信息管理 包括的實(shí)體:user、academy> dept圖4-2系統(tǒng)管理er圖借還管理:借還記錄管理包括的實(shí)體:loanlog> user> booklook區(qū)書純弓<ni書名作奢loanlocuser三k參w<pi>出鬼時閭記錄釜勺<pi>三三給名書名賓虧冃戶鏑皈次書名移笏毛話分類號iseno櫓出天鮫tz: 1 .-y 亠 1 fh.事茨記錄時應(yīng)一個巨戶q弓戶名頁殺借閱人弟兮港閱人粹*名稱紙張mme名參圻居系縊弓包裳
41、霸系名稱討面identifier.1 <pi厚書地址方客筲介缶注作老筒介 蘭m港圖人疋userid <pi>蘭彫我態(tài)蘭貳港圖人妊名蘭貳關(guān)我的信閨記錄汎bookid <pi>圖4-3借還管理er圖4.3數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計概念結(jié)構(gòu)設(shè)計的結(jié)果是er模型,但是它獨(dú)立于任何一種數(shù)據(jù)模型,也獨(dú)立 于任何一個具體的dbmso為建立用戶所需的數(shù)據(jù)庫,需要把概念模型轉(zhuǎn)換成為 某個具體的dbms所支持的數(shù)據(jù)模型。數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計的任務(wù)是將概念模型 轉(zhuǎn)換成dbms支持的數(shù)據(jù)模型。邏輯結(jié)構(gòu)設(shè)計的步驟:將概念模型轉(zhuǎn)換成為一般的關(guān)系、網(wǎng)狀、層次模型; 將轉(zhuǎn)換來的模型向特定的dbms支持的數(shù)
42、據(jù)模型轉(zhuǎn)換;對數(shù)據(jù)模型進(jìn)行優(yōu)化。對數(shù)據(jù)模型優(yōu)化后得到的邏輯結(jié)構(gòu)如下:列名1數(shù)據(jù)類型長度允許空?ctegoryldint4categorynamevar char50subjec tldint4vsubj ectnamevar char50vremarkvar char200v圖 44 categoiy列名敎據(jù)類型長度允許空bookidirit4booknamevar char100suit horvar char100vpressvar char100vpublicati ondtehtetime8pricevar char50editionnovar char50i sbnvar char1
43、00gt egoryldirit4c包tegorynamevar char50wordcountvar char50pagecountvar char50booksizevar char50papervar char50packvar char50imageurlvar char255addressvar char100edit orre commendvar char1000descriptionvar char1000包 uthordescvar char1000irit4cur r eritre aderl dirit4curren trzdervar char50logldirit4圖
44、 4-5 book列名數(shù)據(jù)類型長度允詐空9categoryldirit4c&t egoryllamevar char50subjectldint4subj ectnamevar char50remarkvar char200圖 4-6 category列名敎據(jù)類型長度允許空?dep tldirit4dep tnamevar char100academyldirit4vacademynamevar char50tellphonevar char50vleadervar char50vmobilephonevar char50vremarkvar char500v圖 4-7 dept圖 4
45、-9 subject列名數(shù)據(jù)類型長度 允詐空useridirit4emplnamevar char50emplnovar char50mobilephonevar char50sexvar char50ageirit4usernamevar char50passwordvar char50academyldirit4academynamevar char50deptldirit4dep tnamevar char50dutyldirit4dut ynamevar char50managerbit1remarkvar char200圖 4-10 user列名敎擄類型長度允許空dutyldint4
46、dut ynamev ar char50remarkvarchar200v/圖 411 duty4.4數(shù)據(jù)庫完整性設(shè)計在實(shí)施數(shù)據(jù)庫完整性設(shè)計的時候,有一些基本的原則需要把握:1. 根據(jù)數(shù)據(jù)庫完整性約束的類型確定其實(shí)現(xiàn)的系統(tǒng)層次和方式,并提前考慮 對系統(tǒng)性能的影響。一般情況下,靜態(tài)約束應(yīng)盡量包含在數(shù)據(jù)庫模式中,而動態(tài) 約束由應(yīng)用程序?qū)崿F(xiàn)。2. 實(shí)體完整性約束、參照完整性約束是關(guān)系數(shù)據(jù)庫最重要的完整性約束,在 不影響系統(tǒng)關(guān)鍵性能的前提下需盡量應(yīng)用。用一定的時間和空間來換取系統(tǒng)的易 用性是值得的。3. 要慎用目前主流dbms都支持的觸發(fā)器功能,一方面由于觸發(fā)器的性能 開銷較大,另一方面,觸發(fā)辭的多級
47、觸發(fā)不好控制,容易發(fā)牛錯誤,非用不可時, 最好使用before型語句級觸發(fā)器。4. 在需求分析階段就必須制定完整性約束的命名規(guī)范,盡量使用有意義的英 文單詞、縮寫詞、表名、列名及下劃線等組合,使其易于識別和記憶,如: ckc_emp_realncome_employee、pk_employee、ckt_employee。 如果使用case工具,一般有缺省的規(guī)則,可在此基礎(chǔ)上修改使用。5. 要根據(jù)業(yè)務(wù)規(guī)則對數(shù)據(jù)庫完整性進(jìn)行細(xì)致的測試,以盡早排除隱含的完整 性約束間的沖突和對性能的影響。第5章系統(tǒng)主要功能模塊設(shè)計與實(shí)現(xiàn)整個系統(tǒng)是在myeclipse環(huán)境下開發(fā)實(shí)現(xiàn)的,項(xiàng)目在該軟件下的結(jié)構(gòu)圖如下 所示
48、: bmsh勢 src田 comhq.prj.bmsactioncoredaopo service圍 ipertiesxj sqlmapconfig.xml 圍 perties 囿 struts.xmlt> m jre system library jdkl.6t> 呱 java ee 5 librariest> * referenced libraries鋅 webroott> 0 adapter> & css> 已 images> & js> d localet> 針 maint>
49、; & meta-infi> d resources> & web-inf 國 extalljs 國 ext-corejs sf indexjsp圖5-1項(xiàng)目架構(gòu)圖5.1基礎(chǔ)功能模塊設(shè)計通過使用該模塊可以減少程序的代碼量。在本系統(tǒng)屮,刪除文件、上傳文件、 根據(jù)路徑創(chuàng)建目錄、將字符串已多個分隔符拆分為數(shù)組、調(diào)用指定字段的setter 方判斷文件是否存在和創(chuàng)建縮略圖等基礎(chǔ)通用功能放在一個類中,這些功能在不 同的系統(tǒng)中都有可能用到,封裝這個類后,就可以直接在任一系統(tǒng)中調(diào)用。例如:上傳文件,在工具類中寫一個用于上傳文件的方法,string upload(string upl
50、oadfilename, string savepath, file uploadfile)string newfilename = getrandomname(uploadfilename, savepath);try fileoutputstream fos = new fileoutputstream(savepath + newfilename);filelnputstream fis = new filelnputstream(uploadfile);byte| buffer = new byte| 1024;int len = 0;while (len = fis.read(buf
51、fer) > 0) fos-write(buffer, 0, len); catch (filenotfoundexception e) e.printstacktrace(); catch (ioexception e) e.printstacktrace();return newfilename;這個方法作為工具方法,可以在任意系統(tǒng)之間移植被掉用。5.2系統(tǒng)登錄模塊設(shè)計與實(shí)現(xiàn)系統(tǒng)登錄窗體主要用于檢查進(jìn)入木系統(tǒng)的用戶是否安全及合法。只有輸入正 確的用戶名和密碼,才可以進(jìn)入木系統(tǒng)的主界面。輸入正確的用戶名和密碼后, 單擊“登錄”按鈕進(jìn)入主窗體,而h在登錄的時候會判斷是管理員登錄還是普通
52、用戶登錄。系統(tǒng)登錄窗體運(yùn)行效果如圖5.1所示。圖5-2系統(tǒng)登錄界面其中登錄判斷的關(guān)鍵代碼如下:if (_user != null) if (user.ismanager() = true && _user.ismanager() = true) this.settip("manager");/ 管理員 else this.settip("simple");/ 普通用戶 getsession().setattributec'user", _user); return success; else this.settip(”用
53、戶名或者密碼錯誤! ”); return input;5.3系統(tǒng)主窗口設(shè)計與實(shí)現(xiàn)程序的主窗體是一個程序的臉面,是一個程序給人的第一印象。在系統(tǒng)中, 系統(tǒng)的主窗體是執(zhí)行各種操作的窗口,起到一種“橋梁”的作用,通常這種作用 在主窗體中通過樹形菜單來實(shí)現(xiàn)用戶可以通過操作主窗體來控制和調(diào)用其他子窗 體的運(yùn)行,具體設(shè)計如圖5. 2所示。召與蘇單習(xí)川pttts 窮角色亡t?£_uii &分白2遐圖53主窗口界面其實(shí)本系統(tǒng)主界面只有這么一張jsp頁面,所有的功能都是在一張頁面上完 成,即我們所說的“one page all application”。系統(tǒng)界面的實(shí)現(xiàn)是通過js文件1+1的 e
54、xt代碼來實(shí)現(xiàn)的,并通過異步傳輸?shù)姆绞脚c數(shù)據(jù)庫通信,所以,在這張jsp頁面 屮需要導(dǎo)入所有的js文件:<script type=htext/javascripth src=n/bmsh/adapter/ext/ext-base.jsh></script><script type=ntext/javascriptn src=l7bmsh/ext-alljsh></script><script type=htext/javascripth src=,7bmsh/js/rowexpander.js,x/script><script t
55、ype=htext/javascriptn src=,7bmsh/locale/ext-lang-zh_cnjsnx/script><script type=ntext/javascriptn src=n/bmsh/js/academyjsn></script><script type=ntext/javascriptn src=n/bmsh/js/dept.jsn></script><script type=ntext/javascriptn src=n/bmsh/js/userjsh></script><script type=ntext/javascriptn src=,7bmsh/js/subject.jsn>&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中西醫(yī)結(jié)合內(nèi)科學(xué)之循環(huán)系統(tǒng)疾病知到課后答案智慧樹章節(jié)測試答案2025年春湖南中醫(yī)藥大學(xué)
- 廣東省揭陽市普通高中2017-2018學(xué)年高一數(shù)學(xué)1月月考試題06
- 核心素養(yǎng)導(dǎo)向下的小學(xué)語文作業(yè)設(shè)計策略
- DB13-T2292-2015小型商務(wù)酒店服務(wù)質(zhì)量規(guī)范
- MongoDB的存儲與查詢策略優(yōu)化與應(yīng)用
- 武育粳3號條紋葉枯病抗性和食味品質(zhì)的定向改良研究
- DB11T-建筑垃圾再生回填材料應(yīng)用技術(shù)規(guī)程編制說明
- 高中物理1.2質(zhì)點(diǎn)和位移練習(xí)1含解析魯科版必修第一冊
- 活動板房拆除施工方案
- 2025版高中政治課時作業(yè)4民主決策:作出最佳選擇含解析新人教版必修2
- 2025屆小米全球校園招聘啟動(即將筆試)筆試參考題庫附帶答案詳解
- 中小學(xué)生校服安全
- 2025年陜西延長石油集團(tuán)橫山魏墻煤業(yè)有限公司招聘筆試參考題庫附帶答案詳解
- 《形象塑造與職場妝容》課件
- 2025年湖南有色金屬職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫審定版
- 透射電子顯微分析在材料科學(xué)分析技術(shù)中的應(yīng)用課件
- GB/T 24498-2025建筑門窗、幕墻用密封膠條
- 2025年中國智能座艙行業(yè)市場規(guī)模及發(fā)展前景研究報告(智研咨詢)
- 清華大學(xué)第二彈:DeepSeek賦能職場-從提示語技巧到多場景應(yīng)用
- 黑龍江流域文明史知到智慧樹章節(jié)測試課后答案2024年秋黑龍江大學(xué)
- GB 45185-2024眼視光產(chǎn)品成品眼鏡安全技術(shù)規(guī)范
評論
0/150
提交評論