校園圖書(shū)管理系統(tǒng)詳細(xì)設(shè)計(jì)書(shū)_第1頁(yè)
已閱讀1頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論