版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 校園圖書(shū)管理系統(tǒng)詳細(xì)設(shè)計(jì)書(shū)</p><p><b> 引言</b></p><p><b> 編寫(xiě)目的</b></p><p> 圖書(shū)管理系統(tǒng)詳細(xì)設(shè)計(jì)是設(shè)計(jì)的第二個(gè)階段,這個(gè)階段的主要任務(wù)是在圖書(shū)管理系統(tǒng)概要設(shè)計(jì)書(shū)基礎(chǔ)上,對(duì)概要設(shè)計(jì)中產(chǎn)生的功能模塊進(jìn)行過(guò)程描述,設(shè)計(jì)功能模塊的內(nèi)部細(xì)節(jié),包括算法和
2、詳細(xì)數(shù)據(jù)結(jié)構(gòu),為編寫(xiě)源代碼提供必要的說(shuō)明。</p><p> 概要設(shè)計(jì)解決了軟件系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)的問(wèn)題,包括整個(gè)軟件系統(tǒng)的結(jié)構(gòu)、模塊劃分、模塊功能和模塊間的聯(lián)系等。詳細(xì)設(shè)計(jì)則要解決如何實(shí)現(xiàn)各個(gè)模塊的內(nèi)部功能,即模塊設(shè)計(jì)。具體的說(shuō),模塊設(shè)計(jì)就是要為已經(jīng)產(chǎn)生的圖書(shū)管理各子系統(tǒng)設(shè)計(jì)詳細(xì)的算法。但這并不等同于系統(tǒng)實(shí)現(xiàn)階段用具體的語(yǔ)言編碼,它只是對(duì)實(shí)現(xiàn)細(xì)節(jié)作精確的描述,這樣編碼階段就可以將詳細(xì)設(shè)計(jì)中對(duì)功能實(shí)現(xiàn)的描述,直接
3、翻譯、轉(zhuǎn)化為用某種程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)的程序。</p><p><b> 項(xiàng)目背景</b></p><p> 根據(jù)XX學(xué)校希望能夠充分利用現(xiàn)代科技來(lái)提高圖書(shū)管理的效率,在原有的辦公系統(tǒng)基礎(chǔ)上進(jìn)行擴(kuò)展,將一些可以用計(jì)算機(jī)來(lái)管理的都進(jìn)行計(jì)算機(jī)化,使得圖書(shū)館管理人員工作更加方便,工作效率也更加的高。</p><p><b> 定義<
4、/b></p><p> ?Mysql:數(shù)據(jù)庫(kù)管理軟件</p><p> ?DBMS:數(shù)據(jù)庫(kù)管理系統(tǒng)</p><p> ?Windows 2000/2003/XP:運(yùn)行環(huán)境</p><p> ?JSP :軟件開(kāi)發(fā)語(yǔ)言</p><p> ?Myeclipse :開(kāi)發(fā)工具</p><p&
5、gt;<b> 總體設(shè)計(jì)</b></p><p><b> 需求概述</b></p><p> 按照需求分析文檔中的規(guī)格要求,使用條形碼掃描器進(jìn)書(shū)、借書(shū)、還書(shū),使得信息傳遞準(zhǔn)確、流暢。同時(shí),系統(tǒng)最大限度地實(shí)現(xiàn)易安裝,易維護(hù)性,易操作性,運(yùn)行穩(wěn)定,安全可靠。</p><p><b> 軟件結(jié)構(gòu)</b&
6、gt;</p><p> 系統(tǒng)由3大模塊,6小模塊組成:</p><p><b> 序號(hào)編號(hào)名稱(chēng)</b></p><p> 01 登陸模塊</p><p> 02 管理模塊</p><p> 031圖書(shū)信息查詢(xún)模塊</p><p> 03
7、2學(xué)生信息查詢(xún)模塊</p><p> 021入庫(kù)管理模塊</p><p> 022學(xué)生借書(shū)模塊</p><p> 023學(xué)生還書(shū)模塊</p><p> 024圖書(shū)注銷(xiāo)模塊</p><p> 040基礎(chǔ)信息設(shè)置</p><p><b> 程序描述<
8、;/b></p><p><b> 01登陸模塊</b></p><p><b> 具體格式見(jiàn)下表:</b></p><p><b> 功能流程圖</b></p><p> 功能流程圖如下圖所示。</p><p><b> 需要
9、說(shuō)明的問(wèn)題:</b></p><p> 錄入項(xiàng)檢測(cè)使用javascript實(shí)現(xiàn)(各項(xiàng)必須非空)</p><p> 登陸.jsp頁(yè)面也包含查詢(xún)按鈕,在此的登陸.jsp提交的數(shù)據(jù)只是用戶(hù)名和密碼。</p><p><b> 功能描述</b></p><p><b> 功能類(lèi)型:查詢(xún)數(shù)據(jù)</
10、b></p><p> 功能描述:提高系統(tǒng)的安全性</p><p><b> 前提業(yè)務(wù):無(wú)</b></p><p> 后繼業(yè)務(wù):02 (管理模塊)</p><p><b> 功能約束:權(quán)限約束</b></p><p><b> 約束描述:</b
11、></p><p> 操作權(quán)限:圖書(shū)館管理員</p><p><b> 界面設(shè)計(jì)</b></p><p><b> 基礎(chǔ)信息處理 </b></p><p><b> 動(dòng)作說(shuō)明:</b></p><p><b> 數(shù)據(jù)要求<
12、/b></p><p><b> 功能類(lèi)型:數(shù)據(jù)查詢(xún)</b></p><p><b> 數(shù)據(jù)描述:</b></p><p> 頁(yè)面顯示錄入字段如下:</p><p> 登陸數(shù)據(jù)處理.jsp的內(nèi)部邏輯</p><p><b> 登陸數(shù)據(jù)處理:</
13、b></p><p> 關(guān)鍵點(diǎn)兩點(diǎn):1,數(shù)據(jù)庫(kù)連接;2,記錄登陸信息及信息處理;</p><p><b> 數(shù)據(jù)庫(kù)連接: </b></p><p><b> 如下:</b></p><p> public class lib_system_Conn extends Object{<
14、;/p><p> public lib_system_Conn(){</p><p><b> } </b></p><p> private Connection conn = null;</p><p> private ResultSet rs;</p><p> String re
15、 = "";</p><p> //設(shè)置你的數(shù)據(jù)庫(kù)ip</p><p> String dbip = "127.0.0.1";</p><p> //設(shè)置你的數(shù)據(jù)庫(kù)用戶(hù)名和密碼:</p><p> String use = "root";</p><p&g
16、t; String pass = "860409";</p><p> //設(shè)置您的數(shù)據(jù)庫(kù)名</p><p> String dbName = "lib_system";</p><p> public java.sql.Connection getConn(){</p><p><b&g
17、t; try{</b></p><p> Class.forName("org.gjt.mm.mysql.Driver").newInstance();</p><p> String url ="jdbc:mysql://"+dbip+":3306/"+dbName+"?user="+use
18、+"&password="+pass+"&useUnicode=true&characterEncoding=GBK" ;</p><p> conn= DriverManager.getConnection(url);</p><p><b> }</b></p><p>
19、 catch(Exception e){</p><p> e.printStackTrace();</p><p><b> }</b></p><p> return this.conn ;</p><p><b> }</b></p><p><b>
20、 }</b></p><p> //在Mysql建立lib_system數(shù)據(jù)庫(kù),之后將與數(shù)據(jù)操作相關(guān)數(shù)據(jù)與該數(shù)據(jù)庫(kù)相連;</p><p> 記錄登陸信息及信息處理:</p><p> 當(dāng)用戶(hù)點(diǎn)擊“登陸”按鈕之后,數(shù)據(jù)將提交到登陸數(shù)據(jù)處理.jsp頁(yè)面。 取得帳號(hào)密碼這兩個(gè)從頁(yè)面?zhèn)魅氲闹担缓蟾鷶?shù)據(jù)庫(kù)當(dāng)中管理員表中的賬號(hào)和密碼比較。如果正確的話,在J
21、SP的SESSION中存入一個(gè)標(biāo)記屬性,表示當(dāng)前已經(jīng)有管理員登陸了。處理完畢后,跳轉(zhuǎn)到管理頁(yè)面,如果失敗,則提示登陸失敗,并重新進(jìn)入到登陸頁(yè)面。</p><p><b> 具體的邏輯如下:</b></p><p><b> <%</b></p><p> String username=ParamUtil.ge
22、tString(request,"admin_ID");</p><p><b> //取得用戶(hù)名</b></p><p> String password=ParamUtil.getString(request,"admin_password");</p><p><b> //取得密碼
23、</b></p><p> String erroMsg="";</p><p><b> //錯(cuò)誤碼</b></p><p> if(username!=null&&password!=null)</p><p><b> try</b>&l
24、t;/p><p><b> {</b></p><p> SkinUtil.login(request,response,admin_ID,admin_password);</p><p> //在JSP的session中存如一個(gè)標(biāo)記屬性,表示當(dāng)前已經(jīng)有管理員登陸了</p><p> Session.setAttri
25、bute(“admin_ID”,admin_ID);</p><p> response.sendRedirect("login_process.jsp");</p><p><b> }</b></p><p> catch(UserNotFoundException e)</p><p>&
26、lt;b> {</b></p><p> erroMsg="錯(cuò)誤的用戶(hù)名和密碼";</p><p> response.sendRedirect("login_process.jsp?"+response.encodeURL(erroMsg));</p><p><b> }</b&g
27、t;</p><p><b> else{</b></p><p> out.println("請(qǐng)?zhí)顚?xiě)好你的個(gè)人信息!");</p><p><b> }</b></p><p><b> %></b></p><p>
28、<b> 存儲(chǔ)分配</b></p><p> 管理員表:(admin)</p><p><b> 02管理模塊</b></p><p><b> 具體格式見(jiàn)下表</b></p><p><b> 功能流程圖</b></p><
29、p> 功能流程圖如下所示:</p><p><b> 需要說(shuō)明的問(wèn)題:</b></p><p> 在選擇相應(yīng)的業(yè)務(wù)時(shí),需要在當(dāng)前的頁(yè)面顯示;并且在管理頁(yè)面內(nèi),默認(rèn)顯示圖書(shū)查詢(xún)頁(yè)面。</p><p><b> 功能描述</b></p><p><b> 功能類(lèi)型:其他<
30、/b></p><p> 功能概述:總體歸納圖書(shū)館管理功能</p><p> 前提業(yè)務(wù):登陸模塊(01)</p><p> 后續(xù)業(yè)務(wù):021,022,023,024,03</p><p><b> 功能約束:權(quán)限約束</b></p><p><b> 約束描述:</
31、b></p><p> 操作權(quán)限:圖書(shū)館管理人員</p><p><b> 界面設(shè)計(jì)</b></p><p><b> 基本信息處理</b></p><p><b> 動(dòng)作說(shuō)明如下:</b></p><p><b> 數(shù)據(jù)要求&
32、lt;/b></p><p><b> 功能類(lèi)型:其他</b></p><p> 031圖書(shū)信息查詢(xún)模塊</p><p><b> 具體格式如下:</b></p><p><b> 功能流程圖</b></p><p><b>
33、功能流程圖如下圖:</b></p><p><b> 需要說(shuō)明的問(wèn)題:</b></p><p> 錄入項(xiàng)檢測(cè)使用javascript來(lái)實(shí)現(xiàn)(各項(xiàng)非空);</p><p> 操作權(quán)限:面向所有用戶(hù)</p><p><b> 功能描述</b></p><p>
34、<b> 功能類(lèi)型:查詢(xún)數(shù)據(jù)</b></p><p> 功能概述:顯示查詢(xún)結(jié)果</p><p><b> 前提業(yè)務(wù):無(wú)</b></p><p><b> 后繼業(yè)務(wù):</b></p><p> 功能約束:沒(méi)有約束;</p><p><b&g
35、t; 約束描述:</b></p><p> 操作權(quán)限:面向所有用戶(hù)</p><p><b> 界面設(shè)計(jì)</b></p><p><b> 基礎(chǔ)信息處理</b></p><p><b> 下表是動(dòng)作說(shuō)明:</b></p><p>&l
36、t;b> 數(shù)據(jù)要求</b></p><p><b> 功能類(lèi)型:數(shù)據(jù)查詢(xún)</b></p><p><b> 數(shù)據(jù)描述:</b></p><p> 頁(yè)面顯示字段見(jiàn)下表:</p><p> 圖書(shū)信息查詢(xún)的輸出項(xiàng)</p><p><b> 模
37、塊內(nèi)部邏輯</b></p><p> Search.jsp用于顯示界面的內(nèi)容,給用戶(hù)顯示一個(gè)查詢(xún)接口</p><p> Lib_query.jsp用來(lái)調(diào)度所有的頁(yè)面,它根據(jù)傳入的參數(shù)來(lái)決定包含哪一個(gè)jsp頁(yè)面來(lái)顯示內(nèi)容;</p><p> 在lib_query.jsp頁(yè)面中,</p><p> 它根據(jù)傳入的參數(shù)來(lái)決定包含哪
38、一個(gè)jsp頁(yè)面來(lái)顯示內(nèi)容;則可以通過(guò)<jsp:include page=”<%= ……%>”/>,利用jsp:include標(biāo)簽來(lái)被動(dòng)態(tài)加載發(fā)送到相應(yīng)頁(yè)面;</p><p> chuli.jsp 用來(lái)處理數(shù)據(jù)查詢(xún)和顯示查詢(xún)到的結(jié)果列表。</p><p> 在這個(gè)頁(yè)面中,數(shù)據(jù)要求是以列表的形式顯示到輸出頁(yè)面。</p><p> 由于查詢(xún)到
39、的結(jié)果可能過(guò)多,所以采用分頁(yè)形式顯示;</p><p> 對(duì)于分頁(yè)功能的內(nèi)部邏輯:</p><p> View.jsp用來(lái)顯示查詢(xún)到的圖書(shū)的各項(xiàng)屬性。</p><p><b> 存儲(chǔ)分配</b></p><p> 圖書(shū)目錄文件(Book):</p><p> 借書(shū)文件表(JSWJB):&
40、lt;/p><p> 032學(xué)生信息查詢(xún)模塊</p><p><b> 具體格式如下:</b></p><p><b> 功能流程圖</b></p><p><b> 功能流程圖如下圖:</b></p><p><b> 需要說(shuō)明的問(wèn)題:
41、</b></p><p> 錄入項(xiàng)檢測(cè)使用javascript來(lái)實(shí)現(xiàn)(各項(xiàng)非空);</p><p> 操作權(quán)限:面向所有用戶(hù)</p><p><b> 功能描述</b></p><p><b> 功能類(lèi)型:查詢(xún)數(shù)據(jù)</b></p><p> 功能概述:顯
42、示查詢(xún)結(jié)果</p><p><b> 前提業(yè)務(wù):無(wú)</b></p><p><b> 后繼業(yè)務(wù):</b></p><p> 功能約束:沒(méi)有約束;</p><p><b> 約束描述:</b></p><p> 操作權(quán)限:面向所有用戶(hù)</p
43、><p><b> 界面設(shè)計(jì)</b></p><p><b> 基礎(chǔ)信息處理</b></p><p><b> 下表是動(dòng)作說(shuō)明:</b></p><p><b> 數(shù)據(jù)要求</b></p><p><b> 功能類(lèi)型
44、:數(shù)據(jù)查詢(xún)</b></p><p><b> 數(shù)據(jù)描述:</b></p><p> 頁(yè)面顯示字段見(jiàn)下表:</p><p> 學(xué)生信息查詢(xún)的輸出項(xiàng)</p><p><b> 模塊內(nèi)部邏輯</b></p><p> Search.jsp用于顯示界面的內(nèi)容,給
45、用戶(hù)顯示一個(gè)查詢(xún)接口</p><p> Index.jsp用來(lái)調(diào)度所有的頁(yè)面,它根據(jù)傳入的參數(shù)來(lái)決定包含哪一個(gè)jsp頁(yè)面來(lái)顯示內(nèi)容;</p><p> 在index.jsp頁(yè)面中,</p><p> 它根據(jù)傳入的參數(shù)來(lái)決定包含哪一個(gè)jsp頁(yè)面來(lái)顯示內(nèi)容;則可以通過(guò)<jsp:include page=”<%= ……%>”/>,利用jsp:
46、include標(biāo)簽來(lái)被動(dòng)態(tài)加載發(fā)送到相應(yīng)頁(yè)面;</p><p> List.jsp 用來(lái)顯示查詢(xún)到的結(jié)果列表。</p><p> View.jsp用來(lái)顯示查詢(xún)到的學(xué)生的各項(xiàng)屬性。</p><p> ★★注釋?zhuān)簩W(xué)生信息查詢(xún)模塊與圖書(shū)查詢(xún)模塊屬于同一類(lèi)功能。實(shí)現(xiàn)可以完全類(lèi)似。</p><p><b> 存儲(chǔ)分配</b>
47、;</p><p><b> 學(xué)生文件:</b></p><p><b> 借書(shū)文件:</b></p><p><b> 021入庫(kù)管理</b></p><p><b> 具體格式如下:</b></p><p><b&
48、gt; 功能流程圖</b></p><p> 執(zhí)行數(shù)據(jù)庫(kù)操作的時(shí)候要驗(yàn)證權(quán)限</p><p> 錄入項(xiàng)檢驗(yàn)用javascript來(lái)實(shí)現(xiàn)(選項(xiàng)非空)</p><p><b> 功能描述</b></p><p><b> 功能類(lèi)型:添加數(shù)據(jù)</b></p><p
49、> 功能描述:增加圖書(shū)目錄文件中的圖書(shū)信息。</p><p><b> 前提業(yè)務(wù):管理模塊</b></p><p><b> 后繼業(yè)務(wù):無(wú)</b></p><p><b> 功能約束:權(quán)限約束</b></p><p><b> 約束描述:無(wú)</b
50、></p><p> 操作權(quán)限:圖書(shū)館管理人員</p><p><b> 界面設(shè)計(jì)</b></p><p><b> 基礎(chǔ)信息處理</b></p><p><b> 動(dòng)作說(shuō)明如下表:</b></p><p><b> 數(shù)據(jù)描述&
51、lt;/b></p><p> 功能類(lèi)型:數(shù)據(jù)增加。</p><p><b> 數(shù)據(jù)描述:</b></p><p> 頁(yè)面錄入字段見(jiàn)下表:</p><p> 入庫(kù)數(shù)據(jù)處理內(nèi)部邏輯:</p><p> 圖書(shū)入庫(kù)采用表格進(jìn)行多行添加:</p><p> 利用j
52、avaBean來(lái)編寫(xiě)一個(gè)BookBean來(lái)管理圖書(shū)。</p><p> 在BookBean類(lèi)中增加記錄的公共接口來(lái)實(shí)現(xiàn)入庫(kù)數(shù)據(jù)的添加。</p><p><b> 具體的類(lèi)設(shè)計(jì)如下:</b></p><p> Public int insert (Hashtable hash){</p><p> int intI
53、D = makeID("Book","BookID","","",true);</p><p> Vector vect = new Vector();</p><p> vect.add("Book");</p><p> vect.add(addVector
54、("BookID",String.valueOf(intID),"NUM"));vect.add(addVector("Title",ds.toString((String)hash.get("TITLE")),"CHAR")); vect.add(addVector("Author",ds.toString(
55、(String)hash.get("AUTHOR")),"CHAR"));vect.add(addVector("ISBN",ds.toString((String)hash.get("ISBN")),"CHAR"));</p><p> 。。。。。。。。。。。。。。。。。。。。//還有其他選項(xiàng),同上格式
56、。</p><p> return insertRecord(vect);</p><p><b> }</b></p><p> 該方法有一個(gè)參數(shù),是java.util.Hashtable類(lèi),在調(diào)用該方法前,先用和hashtable的put方法將字段名和該條記錄的值存入hashtable中,然后將這個(gè)hashtable作為參數(shù)傳入ins
57、ert方法中。</p><p> 在insert方法的最后,調(diào)用ParentBean中的insertRecord方法,insertRecord可以根據(jù)傳入的參數(shù)自動(dòng)的生成增加記錄的SQL語(yǔ)句并通過(guò)JDBC發(fā)送到數(shù)據(jù)庫(kù)。</p><p> 正對(duì)ParentBean類(lèi):主要是實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的各種操作:如與數(shù)據(jù)庫(kù)的連接,對(duì)數(shù)據(jù)庫(kù)的操作。</p><p><b>
58、; 存儲(chǔ)分配</b></p><p><b> 圖書(shū)目錄文件:</b></p><p><b> 入庫(kù)表:</b></p><p><b> 注:</b></p><p><b> 022學(xué)生借書(shū)模塊</b></p>&
59、lt;p><b> 具體格式如下:</b></p><p><b> 功能流程圖</b></p><p><b> 需要說(shuō)明的問(wèn)題:</b></p><p> 在進(jìn)行借書(shū),修改數(shù)據(jù)信息時(shí),應(yīng)先查詢(xún)學(xué)生的欠款信息,如欠款超額,則利用javascript實(shí)現(xiàn)信息提示,拒絕借書(shū),如無(wú)超額,則接
60、受借書(shū)。</p><p> 為便于以后的恢復(fù)操作,此修改操作只在表中做一個(gè)標(biāo)志,并不是真正的對(duì)其修改;</p><p><b> 功能描述</b></p><p> 功能類(lèi)型:修改數(shù)據(jù)和查詢(xún)數(shù)據(jù)</p><p> 功能描述:更新學(xué)生借書(shū)文件,圖書(shū)目錄文件等中的信息;</p><p><
61、;b> 前提業(yè)務(wù):管理模塊</b></p><p><b> 后繼業(yè)務(wù):無(wú)</b></p><p><b> 功能約束:權(quán)限約束</b></p><p><b> 約束描述:</b></p><p> 操作權(quán)限:圖書(shū)館管理人員</p>
62、<p><b> 界面設(shè)計(jì)</b></p><p><b> 基礎(chǔ)信息處理</b></p><p><b> 動(dòng)作說(shuō)明如下:</b></p><p><b> 數(shù)據(jù)描述</b></p><p> 功能類(lèi)型:修改數(shù)據(jù)和查詢(xún)數(shù)據(jù)</p
63、><p><b> 界面設(shè)計(jì):</b></p><p><b> 數(shù)據(jù)字段描述:</b></p><p> 圖書(shū)借閱數(shù)據(jù)處理內(nèi)部邏輯</p><p> If(strEdit.equals(“1”)){</p><p> If(學(xué)生超額|學(xué)生不存在){</p>
64、<p> ifSuccess=false;</p><p><b> }else{</b></p><p> If(!bb.IsValid(hash)){</p><p><b> //新增操作</b></p><p> Int intdel[]=bb.addBorrow(h
65、ash);</p><p> If(intdel==null){</p><p> ifSuccess=false;</p><p><b> }else{</b></p><p> For(int i=0;i<intdel.length;i++){</p><p> %>&
66、lt;script>alert(“<%=intdel[i]%>”);</script><%</p><p> If(intdel[i]!=1)</p><p> ifSuccess=false;</p><p><b> }</b></p><p><b> }<
67、;/b></p><p><b> }</b></p><p><b> }</b></p><p> If(!ifSuccess){</p><p> %><script>alert(“借閱失敗!”);</script><%</p>
68、<p><b> }else{</b></p><p> %><script>alert(“借閱成功!”);</script><%</p><p><b> }</b></p><p><b> }</b></p><p>
69、<b> 執(zhí)行的過(guò)程如下:</b></p><p> 首先要驗(yàn)證學(xué)生信息是否存在和學(xué)生的欠款是否超額,也就是說(shuō)學(xué)生是否可以借書(shū),圖書(shū)是否在館等,在 確定合法之后調(diào)用bb.addBorrow(hash)來(lái)完成借閱流程。流程其實(shí)就是對(duì)幾個(gè)表進(jìn)行增改的操作。</p><p> 關(guān)于addBorrow(hash)的算法:</p><p> pu
70、blic int[] addBorrow(Hashtable hash)</p><p><b> {</b></p><p> System.out.println("批量處理新增借閱。。。。。。");</p><p> String sql="";</p><p> i
71、nt intID = makeID("JYWJB","JYID","","",true);</p><p> String strID=String.valueOf(intID);</p><p> String strZJH = ds.toString((String)hash.get("ZJH
72、"));//證件號(hào)</p><p> String strTXM = ds.toString((String)hash.get("TXM"));//條形碼</p><p> String strJYSJ = ds.toString((String)hash.get("JYSJ"));//借閱時(shí)間</p><p>
73、 String strXSID = "";//學(xué)生ID</p><p> String strBOOKID = "";//圖書(shū)ID</p><p> String strDQSJ = "";//到期時(shí)間</p><p> String strXJCS = "";//續(xù)借次數(shù)<
74、;/p><p> //根據(jù)學(xué)生證件號(hào)取的學(xué)生ID</p><p> //根據(jù)學(xué)生ID取得規(guī)則ID,然后取得可以借閱天數(shù),</p><p> sql="select Student.RuleID,Student.XSID,Rule.KJYSJ "</p><p> +" from Studengt,RULE &
75、quot;</p><p> +" where Student.ZJH='"+strZJH+"' and Student.RuleID=Rule.RuleID ";</p><p> Hashtable hashReId=(Hashtable)searchOneData(sql);</p><p> st
76、rXSID=ds.toString((String)hashReId.get("XSID"));</p><p> String strKJYSJ=ds.toString((String)hashReId.get("KJYSJ"));</p><p> //根據(jù)條形碼取得圖書(shū)ID</p><p> sql="s
77、elect BOOKID from Book where TXM='"+strTXM+"'";</p><p> Hashtable hashBKID=(Hashtable)searchOneData(sql);</p><p> strBOOKID = ds.toString((String)hashBKID.get("BOOK
78、ID"));</p><p><b> //新增操作</b></p><p> createStatement();</p><p> clearBatch();</p><p> sql=" insert into JSWJB(JYID,XSID,BOOKID,JYSJ,DQSJ,ZT,XJ
79、CS) "</p><p> +" values("+strID+","+strXSID+","+strBOOKID+",'"+strJYSJ</p><p> +"',to_char((to_date('"+strJYSJ+"',
80、39;yyyy-MM-dd')+"+strKJYSJ+"),'yyyy-MM-dd')"</p><p> +",'"+strZero+"','"+strZero+"')";</p><p> addBatch(sql);</p>
81、<p> sql="update Book set ZT='借出' where BOOKID="+strBOOKID;</p><p> addBatch(sql);</p><p> sql="update Student set YJSS=YJSS+1 where XSID="+strXSID;</p&g
82、t;<p> addBatch(sql);</p><p> int result[]=executeBatch();</p><p> closeStm();</p><p> return result;</p><p><b> }</b></p><p> 而對(duì)
83、于取消按鈕事件,由于要實(shí)現(xiàn)取消借閱,所以需要調(diào)用delBorrow(String id)來(lái)取消借閱操作;算法如下:</p><p> public int[] delBorrow(String id)</p><p><b> {</b></p><p> System.out.println("批量處理取消借閱。。。。。&qu
84、ot;);</p><p> String sql="";</p><p> sql="select BOOKID from JSWJB where JYID="+id;</p><p> Hashtable hash=(Hashtable)searchOneData(sql);</p><p>
85、 String strBOOKID=(String)hash.get("BOOKID");</p><p> createStatement();</p><p> clearBatch();</p><p> sql="update JSWJB set ZT='"+strOne+"' whe
86、re JYID="+id;</p><p> addBatch(sql);</p><p> sql="update BOOK set ZT='可借' where BOOKID="+strBOOKID;</p><p> addBatch(sql);</p><p> int resu
87、lt[]=executeBatch();</p><p> closeStm();</p><p> return result;</p><p><b> }</b></p><p><b> 存儲(chǔ)分配</b></p><p><b> 借書(shū)文件:&l
88、t;/b></p><p><b> 罰款單:</b></p><p><b> 學(xué)生文件:</b></p><p><b> 023學(xué)生還書(shū)</b></p><p><b> 具體格式如下:</b></p><p>
89、<b> 功能流程圖</b></p><p><b> 需要說(shuō)明的問(wèn)題:</b></p><p> 顯示結(jié)果可直接在處理結(jié)果.jsp中利用javascript來(lái)實(shí)現(xiàn)顯示功能!</p><p> 處理要包含:對(duì)圖書(shū)狀態(tài)和借書(shū)文件表中信息的修改以及學(xué)生的欠款金額的計(jì)算,并更新Publish表。</p>&
90、lt;p><b> 功能描述</b></p><p><b> 功能類(lèi)型:修改數(shù)據(jù)</b></p><p> 功能概述:完成學(xué)生的還書(shū)業(yè)務(wù)并計(jì)算學(xué)生的欠款信息</p><p><b> 前提業(yè)務(wù):管理模塊</b></p><p><b> 后繼業(yè)務(wù):無(wú)
91、</b></p><p><b> 功能約束:權(quán)限約束</b></p><p><b> 約束描述:</b></p><p> 操作權(quán)限:圖書(shū)館管理人員</p><p><b> 界面設(shè)計(jì)</b></p><p><b>
92、 基礎(chǔ)信息處理</b></p><p><b> 界面描述:</b></p><p><b> 數(shù)據(jù)描述</b></p><p> 對(duì)于還書(shū)業(yè)務(wù)的處理,實(shí)質(zhì)上與借書(shū)業(yè)務(wù)的實(shí)現(xiàn)基本上相同,只是調(diào)用了backBorrow(hash)來(lái)實(shí)現(xiàn)還書(shū)功能;</p><p> If(strEd
93、it.equals(“1”)){</p><p> Int intdel[]=bb.BackBorrow(hash);</p><p> If(intdel==null){</p><p> ifSuccess=false;</p><p><b> }else{</b></p><p>
94、 For(int i=0;i<intdel.length;i++){</p><p> If(intdel[i]!=1)</p><p> ifSuccess=false;</p><p><b> }</b></p><p><b> }</b></p><p&
95、gt;<b> }</b></p><p> If(!ifSuccess){</p><p> %><script>alert(“歸還操作失?。 ?;</script><%</p><p><b> }else{</b></p><p> %>&l
96、t;script>alert(“歸還操作成功!”);</script><%</p><p><b> }</b></p><p><b> }</b></p><p> 針對(duì)backBorrow(hash)算法如下:</p><p> public int[] bac
97、kBorrow(String TXM)</p><p><b> {</b></p><p> System.out.println("批量處理還書(shū)。。。。。");</p><p> String sql="";</p><p> String strBOOKID=ds.t
98、oString((String)toName("BOOK","TXM","BOOKID",TXM));</p><p> String strNow = ds.getDateTime();</p><p> strNow = strNow.substring(0,10);</p><p> creat
99、eStatement();</p><p> clearBatch();</p><p> sql="update JSWJB set ZT='"+strOne+"',DQSJ='"+strNow+"' where BOOKID="+strBOOKID+" and ZT='&q
100、uot;+strZero+"'";</p><p> System.out.println("sql1:"+sql);</p><p> addBatch(sql);</p><p> sql="update BOOK set ZT='可借' where BOOKID="+s
101、trBOOKID;</p><p> System.out.println("sql2:"+sql);</p><p> addBatch(sql);</p><p> int result[]=executeBatch();</p><p> closeStm();</p><p>
102、 return result;</p><p><b> }</b></p><p><b> 存儲(chǔ)分配</b></p><p><b> 借書(shū)文件:</b></p><p><b> 學(xué)生文件:</b></p><p>&
103、lt;b> 圖書(shū)目錄文件:</b></p><p><b> 罰款單;</b></p><p><b> 024圖書(shū)注銷(xiāo)</b></p><p><b> 具體格式如下:</b></p><p><b> 功能流程圖</b>&l
104、t;/p><p><b> 需要說(shuō)明的問(wèn)題:</b></p><p> 顯示結(jié)果可直接在處理結(jié)果.jsp中利用javascript來(lái)實(shí)現(xiàn)顯示功能!</p><p> 在處理圖書(shū)注銷(xiāo)的時(shí)候,為了便于以后的恢復(fù)操作,此刪除操作只在表中做一標(biāo)志,并不是真正的刪除。</p><p><b> 功能描述</b&
105、gt;</p><p><b> 功能描述:刪除數(shù)據(jù)</b></p><p><b> 功能概述:注銷(xiāo)圖書(shū)</b></p><p><b> 前提業(yè)務(wù):管理模塊</b></p><p><b> 后繼業(yè)務(wù):無(wú)</b></p><
106、p><b> 約束描述:</b></p><p> 操作權(quán)限:圖書(shū)館管理人員</p><p><b> 界面設(shè)計(jì)</b></p><p><b> 基礎(chǔ)信息處理</b></p><p><b> 動(dòng)作說(shuō)明如下:</b></p>
107、<p><b> 界面描述:</b></p><p><b> 數(shù)據(jù)描述:</b></p><p> 對(duì)于圖書(shū)注銷(xiāo)業(yè)務(wù)的處理</p><p><b> 存儲(chǔ)分配</b></p><p><b> 圖書(shū)目錄文件:</b></p&g
108、t;<p> 025 基礎(chǔ)信息設(shè)置</p><p><b> 接口設(shè)計(jì)</b></p><p> 用來(lái)查詢(xún)一條數(shù)據(jù)的私有接口</p><p> 該方法有一個(gè)參數(shù),參數(shù)是一個(gè)字符串,表示要向數(shù)據(jù)庫(kù)發(fā)送一條SQL語(yǔ)句,這個(gè)SQL只是一個(gè)查詢(xún)語(yǔ)句,方法的返回植是一個(gè)Hashtable,在Hashtable中以鍵值對(duì)的方式表示了從
109、數(shù)據(jù)庫(kù)中選出了第一行記錄。用Hashtable中的get(“FieldName”)方法可以得到改行記錄的某一個(gè)記錄的值。</p><p> private Hashtable searchOneData(String sql) </p><p><b> {</b></p><p> Hashtable hash = new Hashta
110、ble();</p><p> ResultSet rs = selectRecord(sql);</p><p> Statement stmt = null;</p><p><b> try{</b></p><p><b> //取得列數(shù)和列名</b></p><
111、p> ResultSetMetaData rsmd = rs.getMetaData();</p><p> int cols = rsmd.getColumnCount();</p><p> if(rs.next())</p><p><b> {</b></p><p> for(int i=1;
112、i<=cols;i++)</p><p><b> {</b></p><p> String field= ds.toString(rsmd.getColumnName(i));String value = ds.toString(rs.getString(i));</p><p> hash.put(field,value)
113、;</p><p><b> }</b></p><p><b> }</b></p><p> }catch(Exception e){</p><p> System.out.println("運(yùn)行時(shí)出錯(cuò):"+e);</p><p><b
114、> }</b></p><p><b> finally{</b></p><p> if(rs!=null)try{ </p><p> stmt=rs.getStatement(); rs.close();</p><p><b> }</b></p>
115、<p> catch(Exception e){</p><p> System.out.println("關(guān)閉記錄集rs時(shí)出錯(cuò)"+e);</p><p><b> }</b></p><p> if(stmt!=null)</p><p><b> try{</b
116、></p><p> stmt.close();</p><p> }catch(Exception e){</p><p> System.out.println("關(guān)閉聲明時(shí)statement出錯(cuò)"+e);</p><p><b> }</b></p><p&
117、gt; return hash;</p><p><b> }</b></p><p><b> 增加記錄的公共接口</b></p><p> 該方法有一個(gè)參數(shù),是java.util.Hashtable類(lèi),在調(diào)用該方法前,先用和hashtable的put方法將字段名和該條記錄的值存入hashtable中,然后將這
118、個(gè)hashtable作為參數(shù)傳入insert方法中。在insert方法的最后,調(diào)用ParentBean中的insertRecord方法,insertRecord可以根據(jù)傳入的參數(shù)自動(dòng)的生成增加記錄的SQL語(yǔ)句并通過(guò)JDBC發(fā)送到數(shù)據(jù)庫(kù)</p><p> Public int insert(Hashtable hash){</p><p> IntintID=makeID(“Book
119、”,”BookID”,””,true);</p><p> Vector vect=new Vector();</p><p> Vect.add(“………….”);</p><p><b> ……………………</b></p><p> Return insertRecord(vect);</p>
120、<p><b> }</b></p><p><b> 刪除記錄的公共接口</b></p><p> 該方法有一個(gè)參數(shù)id,該參數(shù)表示的是book表中的ID字段,ID字段是這個(gè)表的主鍵,用這個(gè)主鍵可以檢索到表中的一條唯一的記錄,通過(guò)這個(gè)主鍵,delete方法可以生成一條SQL語(yǔ)句,刪除這一條記錄。</p><p
121、> public int delete(String id)</p><p><b> {</b></p><p> String sql="";</p><p> sql="delete from Book where BookID="+id;</p><p>
122、return deleteRecord(sql);</p><p><b> }</b></p><p><b> 查詢(xún)記錄的公共接口</b></p><p> Public Vector getData(String sqlwhere, int page){</p><p> String
123、 sql=””;</p><p> Sql=”select * from Book”;</p><p> If (!sqlwhere.equals(“”))</p><p> Sql+=sqlwhere;</p><p> Return getOnePage(sql,page,20);</p><p><
124、b> }</b></p><p><b> 修改記錄的接口</b></p><p> public int update(Hashtable hash)</p><p><b> {</b></p><p> Vector vect = new Vector();<
125、/p><p> vect.add("Book");</p><p> vect.add(addVector("Title",ds.toString((String)hash.get("TITLE")),"CHAR"));</p><p> vect.add(addVector(&quo
126、t;Author",ds.toString((String)hash.get("AUTHOR")),"CHAR"));</p><p> vect.add(addVector("ISBN",ds.toString((String)hash.get("ISBN")),"CHAR"));</p>
127、<p><b> ……………………</b></p><p> return updateRecord(vect);</p><p><b> }</b></p><p><b> 測(cè)試要點(diǎn)</b></p><p><b> 測(cè)試范圍</b
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖書(shū)管理系統(tǒng)詳細(xì)設(shè)計(jì)
- 圖書(shū)管理系統(tǒng)詳細(xì)設(shè)計(jì)方案
- 圖書(shū)管理系統(tǒng)詳細(xì)設(shè)計(jì)方案
- 圖書(shū)管理系統(tǒng)詳細(xì)設(shè)計(jì)說(shuō)明
- 圖書(shū)管理系統(tǒng)詳細(xì)設(shè)計(jì)說(shuō)明
- 課程設(shè)計(jì)---圖書(shū)管理系統(tǒng)詳細(xì)設(shè)計(jì)
- 軟件工程圖書(shū)管理系統(tǒng)-詳細(xì)設(shè)計(jì)
- 圖書(shū)管理系統(tǒng)圖書(shū)管理系統(tǒng)
- 校園圖書(shū)管理系統(tǒng)畢業(yè)論文
- 課程設(shè)計(jì)---圖書(shū)管理系統(tǒng)功能模塊的詳細(xì)設(shè)計(jì)
- 圖書(shū)管理系統(tǒng)指導(dǎo)書(shū)
- 圖書(shū)管理系統(tǒng)指導(dǎo)書(shū)
- 圖書(shū)管理系統(tǒng)指導(dǎo)書(shū)
- 圖書(shū)管理系統(tǒng)設(shè)計(jì).doc
- 圖書(shū)管理系統(tǒng)設(shè)計(jì).doc
- 圖書(shū)管理系統(tǒng)指導(dǎo)書(shū)
- 圖書(shū)管理系統(tǒng)指導(dǎo)書(shū)
- 圖書(shū)管理系統(tǒng)的設(shè)計(jì)
- 圖書(shū)管理系統(tǒng)設(shè)計(jì).doc
- 圖書(shū)管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論