【正文】
當(dāng)然,這些打印都可以根據(jù)需要選擇打印條件(如只打印 ASP 類的圖書或者只打印資詢部的讀者等)。這樣,在執(zhí)行 ASP 文件時(shí),先執(zhí)行打印條件的選擇,選擇完后,按”打印預(yù)覽”調(diào)用水晶報(bào)表進(jìn)行預(yù)覽,如果需要重新查詢,則按預(yù)覽上方的”重新查詢”按扭返回到條件選擇頁面,如此可以反復(fù)執(zhí)行. 要注意的是,在運(yùn)行水晶報(bào)表的時(shí)候,必須將它自帶的一個(gè)啟動(dòng)文件 放在 ASP 程序運(yùn)行的目錄下,或指定調(diào)用它的路徑,否則,預(yù)覽將不能正常進(jìn)行。所以,如果要打印一個(gè)報(bào)表,必須先建立一個(gè) ASP 文件來提取水晶報(bào)表,來設(shè)置打印條件,然后再在水晶報(bào)表工具中建立一個(gè)水晶報(bào)表(.rpt) ,在 ASP 文件中,可以隨機(jī)設(shè)置報(bào)表的數(shù)據(jù)來源,定義報(bào)表的標(biāo)題等。在這里,我用到了水晶報(bào)表(Crystal Report)這個(gè)報(bào)表設(shè)計(jì)工具。 以上便是管理員口令維護(hù)中的所有內(nèi)容。當(dāng)然在更改權(quán)限之前,還要從庫中查找當(dāng)前輸入的管理員是否存在,如果不存在,則要求重新輸入。在這個(gè)過程中,為了避免隨意更改,要求先輸入要更改權(quán)限的管理員的用戶名稱(而沒有采用下拉框的形式來選擇管理員) ,然后再選擇要更改的權(quán)限類別, “確定”之后就可以更改了。 在注冊(cè)中,我們有權(quán)限的確認(rèn),那么,在整個(gè)系統(tǒng)運(yùn)行過程中,也就應(yīng)該湖南師范大學(xué)本科畢業(yè)論文43有權(quán)限更改的功能。選取完后,則調(diào)用“”顯示成功注冊(cè)的畫面,并顯示剛注冊(cè)的用戶名和密碼,提醒用戶記住自己的相關(guān)信息。if len(session(user_name)=0 then //如果是非管理員 導(dǎo)向管理員登陸界面 end if 在進(jìn)入口令維護(hù)的主界面后,進(jìn)一步判斷是哪種權(quán)限的管理員,如果是普通管理員,則在顯示修改的用戶名稱中只顯示當(dāng)前登錄的管理員的用戶名,且只讀狀態(tài),以此提醒用戶,只能本人的密碼;如果管理員權(quán)限為最高,則顯示修改的用戶名稱是可以選擇所有的管理員名稱的:if session(“userclass”)=2 then //如果是最權(quán)限的管理員以下拉框的形式顯示所有管理員名稱 else僅顯示當(dāng)前登錄的管理員名稱 end if在界面中的“刪除管理員”和“注冊(cè)管理員”的按扭也只能是session(“userclass”)=2 時(shí)才可用,否則設(shè)置它們的屬性為“disabled”button name=”b1” if session(“userclass”)2 then%disabled %end if% onclick=”vbscript:”刪除管理員/button湖南師范大學(xué)本科畢業(yè)論文41button name=”b2” if session(“useclass”)2 then%disabled %end if% onclick=”vbscript:”注冊(cè)管理員/button輸入舊密碼,新密碼和確認(rèn)新密碼后,% 查詢管理員表中的當(dāng)前顯示的用戶名的密碼if spwd當(dāng)前修改的管理員的密碼 then顯示“密碼不正確”返回到主界面,重新輸入密碼else //如果密碼正確 if respwdrenewspwd then 顯示不相符的錯(cuò)誤提示end if//如果以上條件均滿足userpassword=respwd //如果是刪除管理員 (在可以使用該功能的前提下)調(diào)用 程序//先選擇管理員名稱因?yàn)檫@是最高權(quán)限的操作//輸入該管理員的密碼 (spwd)if spwd當(dāng)前修改的管理員的密碼 then顯示“密碼不正確” 返回上一頁面else執(zhí)行刪除操作, 更改管理員表中的數(shù)據(jù)end if //如果選擇了“注冊(cè)管理員”則調(diào)用“”輸入用戶名、密碼、確認(rèn)密碼 if username=”” or spwd=”” or respwd=”” then第 3 章 圖書借閱管理系統(tǒng)的具體實(shí)現(xiàn)42提示用戶資料輸入不完整!ElseIf len(spwd)8 顯示錯(cuò)誤信息,要求重新輸入密碼elseif len(username)6 要求重新輸入用戶名elseif spwdrespwd then 要求重新輸入密碼end if//如果以上條件均滿足//將當(dāng)前輸入的三項(xiàng)信息提交給下一個(gè)程序“” 在“”程序中,在進(jìn)入該程序時(shí),判斷用戶名是否在庫中已存在,如果存在,則返回上頁,重新輸入;另外,主要是要用戶確認(rèn)一下自己輸入的信息,如果想修改,則點(diǎn)擊“重填”返回上一面,如果不需要修改,則點(diǎn)擊“確定“,這個(gè)程序的算法不再詳述,主要是要在程序的開始部分,要把從上頁傳過來的用戶名和密碼信息接收過來。程序流程圖如下:湖南師范大學(xué)本科畢業(yè)論文39圖 管理員口令維護(hù)程序流程圖(a)圖 管理員口令維護(hù)程序流程圖(b)算法描述如下:第 3 章 圖書借閱管理系統(tǒng)的具體實(shí)現(xiàn)40變量說明:spwd //舊密碼respwd //新密碼renewspwd //確認(rèn)新密碼username //用戶名userpassword //數(shù)據(jù)表中的用戶密碼這個(gè)模塊的所有操作本身只針對(duì)管理員開放,而且不同身份的管理員限制不同程度的操作。$//在當(dāng)前路徑中加入系統(tǒng)自定義的備份文名,即路徑+數(shù)據(jù)庫名(此時(shí)為“$1” )+“.bak” end ifend ifbak_file = replace(bak_file,$1,databasename) //將“$1”替換成當(dāng)前備份的數(shù)據(jù)庫act = 當(dāng)前的操作類型(備份或恢復(fù))if databasename = then //提示用戶“首先,請(qǐng)輸入要備份或恢復(fù)的數(shù)據(jù)庫名稱”else if act = backup then //如果當(dāng)前操作是備份 定義一個(gè) SQLDMO 對(duì)象 定義這個(gè)對(duì)象的鏈接和超時(shí)設(shè)定 定義 SQLDMO 中 Backup 屬性的對(duì)象 bak 利用 bak 這個(gè)對(duì)象,進(jìn)一步定義其數(shù)據(jù)庫 Database, Devices, Files 執(zhí)行 bak 的 SQLBackup 事件 if 0 then //如果在執(zhí)行中發(fā)生錯(cuò)誤湖南師范大學(xué)本科畢業(yè)論文37 顯示系統(tǒng)錯(cuò)誤信息 end if 如果未發(fā)生錯(cuò)誤,則顯示“備份成功!” elseif act = restore then //如果當(dāng)前操作是恢復(fù) //恢復(fù)時(shí)要在沒有使用數(shù)據(jù)庫時(shí)進(jìn)行! 定義一個(gè) SQLDMO 對(duì)象 定義這個(gè)對(duì)象的鏈接和超時(shí)設(shè)定 定義 SQLDMO 中 restore 屬性的對(duì)象 rest 針對(duì) rest 對(duì)象,設(shè)置它的恢復(fù)屬性(database,device,files) ,另外設(shè)置它的 action 為 0,即全數(shù)據(jù)庫恢復(fù) =True //強(qiáng)調(diào)覆蓋已存在的數(shù)據(jù)庫 srv //執(zhí)行 rest 的恢復(fù)事件 if 0 then //如果發(fā)生錯(cuò)誤 顯示系統(tǒng)錯(cuò)誤信息 end if如果沒有發(fā)生錯(cuò)誤,則顯示恢復(fù)成功! else //如果既不是備份,也不恢復(fù) 提示用戶“沒有選擇操作” end ifend if 管理員口令維護(hù)的具體實(shí)現(xiàn)由于圖書管理系統(tǒng)中的借書、還書還有備份、恢復(fù)等功能,都是只能由管理員來操作的,一般的用戶,只能瀏覽網(wǎng)頁的前臺(tái)部分和進(jìn)行一些查詢,所以系統(tǒng)中必須要有管理員權(quán)限方面的維護(hù),所以在這個(gè)管理員口令維護(hù)模塊中,如果是普通管理員,可以修改自己的密碼,如果是最高權(quán)限的管理員,則可以修改所有的管理員密碼,當(dāng)然也可以為注冊(cè)新的管理員和刪除管理員。如果沒有備份文件是不能進(jìn)行恢復(fù)的,恢復(fù)時(shí)一定要在數(shù)據(jù)庫沒有被使用時(shí)才能運(yùn)行。在本系統(tǒng)中,數(shù)據(jù)的備份與恢復(fù)只能是最高權(quán)限的管理員才能進(jìn)行的操作,備份的路徑由管理員指定,但是文件名由系統(tǒng)定義,備份是全數(shù)據(jù)庫的備份,文件名是數(shù)據(jù)庫名加“.bak”的后綴,而且備份的文件是存儲(chǔ)在數(shù)據(jù)庫所在的機(jī)子上,而不是用戶隨機(jī)操作的機(jī)子上。 系統(tǒng)維護(hù)模塊的具體實(shí)現(xiàn) 數(shù)據(jù)備份與恢復(fù)的具體實(shí)現(xiàn) 在圖書管理這樣的系統(tǒng)中,基本上是對(duì)圖書資料的管理,因此圖書資料和讀者資料的正確性也就尤為重要,更不能丟失,所以我們?cè)谙到y(tǒng)中加入了數(shù)據(jù)據(jù)備份與恢復(fù)的功能。當(dāng)執(zhí)行查詢以后,判斷value 值是否為空,如果不為空,則把它的值放入 sqlstr,在翻頁的過程中傳遞的 sqlstr 值便能始終會(huì)是最近查詢的值,這一點(diǎn)在 中也用到了。在查詢過程中,為了方便在轉(zhuǎn)頁時(shí)仍顯示的是當(dāng)前查詢的結(jié)果,而不是開始顯示的記錄頁面,在程序員中用到了 value 這個(gè)變量來存儲(chǔ)當(dāng)前查詢的 SQL 語句。如果要取消掛失,則只要在首頁面查找要進(jìn)行取消的讀者信息,此時(shí)也會(huì)調(diào)用,進(jìn)入查找界面,查找完畢后,在主界面顯示出查找結(jié)果,然后點(diǎn)選要辦理取消的讀者,取消掛失。讀者可以通過像遺失書籍處理中一樣,點(diǎn)選需要掛失或需要取消掛失的讀者信息,來完成操作。)end if 提交表單end sub表單提交后:%readerno=獲得當(dāng)前的讀者證號(hào)if flag=set then //如果現(xiàn)在是掛失操作 varb=request(varb) 修改庫記錄end if湖南師范大學(xué)本科畢業(yè)論文31 讀者證掛失處理的具體實(shí)現(xiàn)因?yàn)橛凶x者證的辦理,所以讀者遺失讀者證也就必須有掛失處理,在本系統(tǒng)中讀者證的掛失也是異常處理的一個(gè)項(xiàng)目。 where book_no in (amp。amp。39。)else //如果現(xiàn)在就交費(fèi) //還掉該書,并將書籍加上遺失標(biāo)志,借書者的借書信息中不再有此書:varb=update book_input set book_state=2,loaner=39。 where book_no in(amp。sub //此段程序可以放在讀者證號(hào)查詢的單擊事件(sub)湖南師范大學(xué)本科畢業(yè)論文29if readerno = thenmsgbox 請(qǐng)輸入讀者證號(hào)!exit subend ifend sub表單提交后,查詢當(dāng)前的讀者證號(hào)if 0 then顯示讀者個(gè)人信息查詢?cè)撟x者的借書信息if 0 then顯示所有借書記錄size=當(dāng)前借書記錄數(shù) else 顯示沒有借書記錄end ifelse顯示 沒有相應(yīng)的讀者 顯示 沒有相應(yīng)的借書記錄end ifsub setlost(n) //此段程序是掛失的單擊事件flag =set //當(dāng)前處于掛失狀態(tài)if n=0 thenmsgbox 沒有要掛失的書籍!exit subend if第 3 章 圖書借閱管理系統(tǒng)的具體實(shí)現(xiàn)30 for i=1 to nloststr1=所有要掛失的記錄的書籍編號(hào) end if next if loststr1= then msgbox 請(qǐng)選擇要掛失的記錄 exit sub end if if 您確實(shí)要掛失這些記錄 then //提示遺失書籍要罰款,如果現(xiàn)在不交費(fèi) if msgbox(遺失書籍要以兩倍單價(jià)罰款,交費(fèi)否?,1)1 then //僅更改當(dāng)前遺失書籍的狀態(tài)為“遺失” ,并不為借書者還掉此書, 以便能下次還書提醒交費(fèi)varb=update book_input set book_state=2,book_memo=39。239。 amp。具體程序流程如下:第 3 章 圖書借閱管理系統(tǒng)的具體實(shí)現(xiàn)26圖 遺失書籍處理程序流程圖湖南師范大學(xué)本科畢業(yè)論文27算法描述如下:首先當(dāng)然還是打開數(shù)據(jù)庫連接:! include file= 在驗(yàn)證了管理員身份后,可以進(jìn)行遺失處理了//變量說明//flag 判斷當(dāng)前操作(取消遺失,辦理遺失,查詢)//n 當(dāng)前選擇的取消遺失書籍的記錄數(shù)//loststr 所有要取消遺失的書籍的圖書編號(hào)if flag =select_book //如果當(dāng)前操作為查詢轉(zhuǎn)入查詢頁面 //查詢算法在前面已描述,不再重復(fù) if 查詢的條件不為空 then select * from book_input where book_state=39。這塊功能的實(shí)現(xiàn)總共由三個(gè)程序共同來完成,分別為。如果經(jīng)過查詢,有借閱記錄,則在選擇要辦理遺失的書籍后(在每條借書記錄后有 checkbox 多選框) ,點(diǎn)擊“掛失“即可。 if 查詢記錄數(shù)0 thenfor i=1 to 查詢記錄數(shù)//查找在還了當(dāng)前所要還的書以后是否還有過期未還的書if 當(dāng)前借閱日期60 then count=count+1 end if