【正文】
end if 若未屏蔽借書功能,則可以借書 先輸入借書編號(hào),按下借書按扭,如果編號(hào)為空,要求輸入,如果未查詢讀者證號(hào)就點(diǎn)擊借書按扭,則提示用戶先查詢讀者 證號(hào)后,此段程序可放入借書按扭單擊事件中: sub borrowbook if readerno = then 顯示 請(qǐng)先查詢借書者的讀者證號(hào) ! elseif borrowno= then 顯示 請(qǐng)輸入借書編號(hào) end if 提交當(dāng)前表單信息 end sub 提交信息后,除運(yùn)行上面的程序外,還要執(zhí)行提交狀態(tài)后的程序: if borrowno then 查詢 book_input 中的 book_no 為 borrowno 記錄 if 查詢記錄數(shù) 0 if 是否已借字段內(nèi)容 =1 then 顯示 該書已借出 ! else 是否已借字段內(nèi)容 =1 借閱日期字段 =今天的日期 借閱者字段 =當(dāng)前輸入的讀者證號(hào) end if else 顯示 沒(méi)有這本書 ! end if end if 在借書這個(gè)程序中,我們利用讀者證號(hào)這個(gè)關(guān)鍵字,把讀者信息表和圖書基本信息表聯(lián)系起來(lái),多方面考慮問(wèn)題,把借書過(guò)程中可能出現(xiàn)的狀況,都要一一考慮進(jìn)來(lái),方便能工作人員和讀者。 還書功能的具體實(shí)現(xiàn) 還書是在借書的基礎(chǔ)上來(lái)操作的過(guò)程,總的原則是,沒(méi)有借書,就沒(méi)有還書,還書所要實(shí)現(xiàn)的功能,在某種程度上和借書是相似的,同樣要提示讀者是否有過(guò)期未還的書,此時(shí)也需要對(duì)庫(kù)中的信息進(jìn)行更改。還書以后,也要即時(shí)的反潰當(dāng)前的借書狀況,以便讀者和工作人員知道“還書”是否操作成功。與借書相比,借書是通過(guò)讀者 證號(hào)和圖書編號(hào)來(lái)登記,而還書只需要且必須要圖書編號(hào)來(lái)登記還書。當(dāng)查到該編號(hào)的圖書 ,而且確實(shí)是未還圖書 ,則將顯示還書者的讀者信息和所有他 (她 )的已借書目信息 .我們要實(shí)現(xiàn)的目標(biāo)是盡可能方便能的操作和盡可能直觀的反潰 !所以我們采用輸入圖書編號(hào)來(lái)還書的同時(shí) ,查閱出借該書的讀者的所有借書記錄 ,只要點(diǎn)擊所列出的該讀者借書記錄中的某一條 ,就可以還這本書 .還有一點(diǎn)是還書需要處理的,那就是續(xù)借,如果讀者想要續(xù)借,應(yīng)該很方便的進(jìn)行,與還書一樣,只要點(diǎn)擊要續(xù)借的書按“續(xù)借”即可,但是要考慮如果該書已過(guò)期,則不能續(xù)借。 算法描述如 下 : 首先導(dǎo)入數(shù)據(jù)庫(kù)連接,以便對(duì)讀者信息表和圖書基本信息表進(jìn)行查詢和修改: !include file= 因?yàn)檫€書只能是擁有圖書館工作人員以上的權(quán)限的人才能進(jìn)行的操作,所以在程序開(kāi)始部份還應(yīng)先判斷一下用戶的權(quán)限,如果沒(méi)有工作人員的權(quán)限,則要先進(jìn)行管理員登陸,即轉(zhuǎn)向登陸界面 ,這部分的操作和借書是一樣的 : if session(user_name)= then 導(dǎo)向管理員登陸界面 end if 接下來(lái)是還書的操作 : //變量說(shuō)明部分 // returnno 為還書編號(hào) // state 表示當(dāng)前有無(wú)可還書的記錄 //reloan 表示是否要續(xù)借 //step 表示是否提交過(guò)表單 ,1初始狀態(tài) ,2已經(jīng)提交 //reader_no 表示還書者讀者編號(hào) //book_no 表示當(dāng)前要還的或要續(xù)借的圖書編號(hào) //count 表示當(dāng)前有沒(méi)有過(guò)期未還的書 sub return //還書按扭單擊事件 if returnno = then 顯示 請(qǐng)輸入還書編號(hào) ! 光標(biāo)定位到輸入還書編號(hào)欄 else step=1 帶上還書編號(hào)提交表單 end if 接下是查詢?cè)撨€書編號(hào)的書 If request(returnno) then 在數(shù)據(jù)庫(kù)中查詢?cè)摼幪?hào)的圖書 if 查詢的記錄數(shù) =0 and reader_no= then 提示“可能輸入了無(wú)效的圖書編號(hào)或該書 沒(méi)有借出 ,請(qǐng)重輸 !” 結(jié)束程序的繼續(xù)執(zhí)行 else 對(duì)將要顯示的當(dāng)前所要還的書籍的表格中的借閱者,書籍編號(hào),書名,作者,借閱日期單元格的內(nèi)容填值 if 當(dāng)前日期 借閱日期 60 then 更改讀者信息表中的 reader_state 為 1 提示用戶“你的書已過(guò)期 !” end if //根據(jù)借閱者的讀者證號(hào)查詢?cè)撟x者的相關(guān)信息 sqlstr2=select * from book_readerinfo where reader_no=39。amp。loaneramp。39。 對(duì)要顯示讀者信息的欄位賦值 end if 如果找到了要還的書,便可以還書或續(xù)借了 if returnno = then 顯示 請(qǐng)先輸入還書編號(hào) 光標(biāo)定位于還書編號(hào) exit sub end if if state =no then 光標(biāo)定位于還書編號(hào) exit sub end if if book_no = then 顯示 請(qǐng)選擇 要還的書 ! exit sub end if //提交當(dāng)前表單 *****以上這段程序可以放在借書按的單擊事件中 *****以下是續(xù)借按扭的單擊事件的算法 sub contiborrow //續(xù)借按扭單擊事件 if book_no = then 顯示 請(qǐng)選擇要續(xù)借的書 ! exit sub end if reloan =yes 提交表單 end sub 提交表單后,要對(duì)庫(kù)中的數(shù)據(jù)表進(jìn)行還書和續(xù)借的操作了 從提交的表單中提取所有的讀者信息和當(dāng)前所要還的圖書編號(hào) count=0 //設(shè)當(dāng)前無(wú)過(guò)期書籍 if book_no and reader_no then if 當(dāng)前日期 借閱日期 60 then if reloan=yes then 提示 書已過(guò)期 ,不能續(xù)借 ! 不再做任何更改庫(kù)中記錄的操作,所回續(xù)借前的狀態(tài) 結(jié)束 ASP 程序的運(yùn)行 end if end if if reloan=yes then 將當(dāng)前書籍的借閱日期減一個(gè)月,因?yàn)槔m(xù)借只能是一個(gè)月 else 還原當(dāng)前所還書籍的借閱者,借閱日期,是否借閱為初始狀態(tài)。 //再一次查找當(dāng)前還書者的所有借書情況 sqlstr3=select * from book_input where isloan=1 and loaner=39。amp。reader_noamp。39。 if 查詢記錄數(shù) 0 then for i=1 to 查詢記錄數(shù) //查找在還了當(dāng)前所要還的書以后是否還有過(guò)期未還的書 if 當(dāng)前 借閱日期 60 then count=count+1 end if next if count=0 then 將當(dāng)前的還書者的狀態(tài) reader_state 還原為 0 end if else //如果已經(jīng)沒(méi)有要還的書籍 將當(dāng)前的還書者的狀態(tài) reader_state 還原為 0 end if end if 六、 編碼實(shí)現(xiàn)程序 管理員及用戶登陸界面 (adminlogin. asp) 圖 管理員用戶登陸界面 管理員登陸界面主要功能是實(shí)現(xiàn)管理員的登陸,其主要代碼如下: : if Session(username)=admin Then () End if % html head meta equiv=ContentType content=text/html。charset=gb2312 title登陸界面 /title style type=text/css /head body div align=centerimg src=Images/ alt=dl width=1024 height=100 hspace=100 align=middle //div p /p p /p p /p table width=43% border=0 align=center tr align=center bgcolor=00FFFF td colspan=3span class=STYLE2圖書管理系統(tǒng)登錄/span/td /tr tr align=center bgcolor=99FF00 td width=27% height=40span class=STYLE3用戶名:/span/td td width=47% valign=middletable width=90% border=1 align=center tr bgcolor=FFFFFF td height=24 /td /tr /table/td td width=26% /td /tr tr align=center bgcolor=99FF00 td height=45span class=STYLE3密 碼: /span/td tdtable width=90% height=30 border=1 tr align=left valign=middle bgcolor=FFFFFF td /td /tr /table/td td /td /tr tr align=center bgcolor=00FFFF td height=40 colspan=2a href=Operater/img src=Images/ alt=dlbt width=65 height=29 border=0 //a/td td height=40 /td /tr p /tableinput type=submit value=登錄 input type=reset value=全部重填 /p /form /body /html % Option Explicit % % Dim userName,password userName=Trim((txtUserName)) password=Trim((pwdPassword)) Dim strDSN Dim connGuestbook strDSN=Proviser=NSDASQL。DRIVER={SQL Native Client}。 SERVER=localhost。DATABASE=Guestbook。 UID=manager。PWD=123456 Set connGuestbook=() strDSN Dim rsAdmins Dim strSqlSelectAdmins Set rsAdmins=(“”) strSqlSelectAdmins=”SELECT*FROM Admins WHERE username=’”+username+”’ And password=’”+password+”’” strSqlSelectAdmins,connGuestbook if Not then Session(“username”)=username (“”) End If % html head meta equiv=”ContentType” content=”text/