版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)說明書</b></p><p> 題目: 圖書館管理系統(tǒng)</p><p> 院 系: 計(jì)算機(jī)科學(xué)系</p><p> 專業(yè)班級(jí): 網(wǎng)絡(luò)工程4班</p><p> 學(xué)生姓名: </p><p> 指導(dǎo)教師:
2、 </p><p> 2008年 12 月 29日</p><p><b> 目錄</b></p><p><b> 1 緒論1</b></p><p> 1.1 開發(fā)背景1</p><p> 1.2 開發(fā)工具的選用及介紹1</p>&
3、lt;p> 1.2.1 ASP簡(jiǎn)介1</p><p> 1.2.2 Dreamweaver簡(jiǎn)介2</p><p> 1.2.3 Microsoft SQL Server 2000簡(jiǎn)介2</p><p><b> 2 需求分析3</b></p><p> 2.1 系統(tǒng)分析3</p>
4、<p> 2.2 系統(tǒng)目標(biāo)3</p><p><b> 2.3總體需求4</b></p><p> 2.4系統(tǒng)模塊流程圖5</p><p> 2.4.1 系統(tǒng)登陸流程圖5</p><p> 2.4.2 用戶流程圖5</p><p> 2.4.3 管理員流程圖5&l
5、t;/p><p><b> 3 數(shù)據(jù)庫設(shè)計(jì)6</b></p><p> 3.1概念結(jié)構(gòu)設(shè)計(jì)6</p><p> 3.2 邏輯結(jié)構(gòu)設(shè)計(jì)7</p><p> 3.3創(chuàng)建表的腳本文件8</p><p><b> 4 詳細(xì)設(shè)計(jì)10</b></p><
6、;p> 4.1 用戶登陸頁面10</p><p> 4.2圖書查詢頁面11</p><p> 4.3統(tǒng)計(jì)超期14</p><p> 4.4數(shù)據(jù)庫備份和還原15</p><p> 4.5圖書添加16</p><p> 4.6用戶管理17</p><p> 4.7最新
7、添加的圖書19</p><p> 4.8圖書分類瀏覽20</p><p> 4.9給超期用戶發(fā)消息提醒20</p><p> 5課程設(shè)計(jì)小結(jié)22</p><p><b> 6參考文獻(xiàn)22</b></p><p><b> 1 緒論</b></p>
8、;<p> 當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代。在各行各業(yè)中離不開信息處理,計(jì)算機(jī)被廣泛應(yīng)用于B/S系統(tǒng)環(huán)境。計(jì)算機(jī)的好處在于它能夠進(jìn)行信息管理。使用計(jì)算機(jī)進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高了安全性。</p><p> 對(duì)于復(fù)雜的信息管理,計(jì)算機(jī)能夠充分發(fā)揮它的優(yōu)越性。計(jì)算機(jī)與信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好圖書信息而設(shè)計(jì)的。 </p&g
9、t;<p><b> 1.1 開發(fā)背景</b></p><p> 圖書管理包括的圖書和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的圖書管理系統(tǒng)都是初步開始使用,甚至尚未使用計(jì)算機(jī)進(jìn)行信息管理。以前對(duì)信息管理的主要方式是基于文本、表格等紙介質(zhì)的手工處理,對(duì)于圖書借閱情況(如借書天數(shù)、超過限定借書時(shí)間的天數(shù))的統(tǒng)計(jì)和核實(shí)等往往采用對(duì)借書卡的人工檢查進(jìn)行,對(duì)借閱者的
10、借閱權(quán)限、以及借閱天數(shù)等用人工計(jì)算、手抄進(jìn)行。數(shù)據(jù)信息處理工作量大,容易出錯(cuò);由于數(shù)據(jù)繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng),規(guī)范的信息管理手段。盡管有的圖書館有計(jì)算機(jī),但是尚未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突出,這就是圖書管理系統(tǒng)開發(fā)所要解決的問題。</p><p> 基于這此問題,有必要建立一個(gè)圖書管理系統(tǒng),使圖書管理工作規(guī)范化,系統(tǒng)化,程序化,避免圖書管理的隨意性,提高信息處理的速度
11、和準(zhǔn)確性,能夠及時(shí)、準(zhǔn)確、有效的進(jìn)行查詢和修改圖書情況等圖書管理操作。</p><p> 1.2 開發(fā)工具的選用及介紹</p><p> 1.2.1 ASP簡(jiǎn)介</p><p> Active Server Pages:是一套微軟開發(fā)的服務(wù)器端腳本環(huán)境,ASP內(nèi)含于IIS之中 , 通過ASP我們可以結(jié)合 HTML 網(wǎng)頁、ASP 指令和 ActiveX元件建立動(dòng)
12、態(tài)、交互且高效的WEB服務(wù)器應(yīng)用程序。有了ASP你就不必?fù)?dān)心客戶的瀏覽器是否能運(yùn)行你所編寫的代碼,因?yàn)樗械某绦蚨紝⒃诜?wù)器端執(zhí)行,包括所有嵌在普通 HTML中的腳本程序。當(dāng)程序執(zhí)行完畢后,服務(wù)器僅將執(zhí)行的結(jié)果返回給客戶瀏覽器,這樣也就減輕了客戶端瀏覽器的負(fù)擔(dān),大大提高了交互的速度。</p><p> 1.2.2 Dreamweaver簡(jiǎn)介</p><p> Dreamweaver是M
13、acromedia公司最新推出的主頁編輯工具。這是一個(gè)所見即所得主頁編輯器,并帶有站點(diǎn)管理功能,讓你方便地設(shè)計(jì)和管理多個(gè)站點(diǎn)。而它最棒的地方就是支持最新的DHTML和CSS標(biāo)準(zhǔn), 你可以用它設(shè)計(jì)出生動(dòng)的DHTML動(dòng)畫、多層次的頁面(layer)以及CSS樣式表。 </p><p> 1.2.3 Microsoft SQL Server 2000簡(jiǎn)介</p><p> SQL是英文(St
14、ructured Query Language)的縮寫,意思為結(jié)構(gòu)化查詢語言。SQL語言的主要功能就是同各種數(shù)據(jù)庫建立聯(lián)系,進(jìn)行溝通。SQL被作為關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言。SQL語句可以用來執(zhí)行各種各樣的操作,例如更新數(shù)據(jù)庫中的數(shù)據(jù),從數(shù)據(jù)庫中提取數(shù)據(jù)等。目前,絕大多數(shù)流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL語言標(biāo)準(zhǔn)。<
15、/p><p> SQL語言有以下幾個(gè)優(yōu)點(diǎn):</p><p> 1 非過程化語言 SQL是一個(gè)非過程化的語言,因?yàn)樗淮翁幚硪粋€(gè)記錄,對(duì)數(shù)據(jù)提供自動(dòng)導(dǎo)航。SQL允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對(duì)單個(gè)記錄進(jìn)行操作,可操作記錄集,所有SQL 語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結(jié)果作為另一條SQL語句的輸入。</p><p&g
16、t; SQL不要求用戶指定對(duì)數(shù)據(jù)的存放方法, 這種特性使用戶更易集中精力于要得到的結(jié)果;所有SQL語句使用查詢優(yōu)化器,它是RDBMS的一部分,由它決定對(duì)指定數(shù)據(jù)存取的最快速度的手段,查詢優(yōu)化器知道存在什么索引,在哪兒使用索引合適,而用戶則從不需要知道表是否有索引、有什么類型的索引。</p><p><b> 2. 統(tǒng)一的語言</b></p><p> SQL可用
17、于所有用戶的DB活動(dòng)模型,包括系統(tǒng)管理員、數(shù)據(jù)庫管理員、 應(yīng)用程序員、決策支持系統(tǒng)人員及許多其它類型的終端用戶?;镜腟QL 命令只需很少時(shí)間就能學(xué)會(huì),最高級(jí)的命令在幾天內(nèi)便可掌握。</p><p> 3. 所有關(guān)系數(shù)據(jù)庫的公共語言</p><p> 由于所有主要的關(guān)系數(shù)據(jù)庫管理系統(tǒng)都支持SQL語言,用戶可將使用SQL的技能從一個(gè)RDBMS(關(guān)系數(shù)據(jù)庫管理系統(tǒng))轉(zhuǎn)到另一個(gè),所有用SQL
18、編寫的程序都是可以移植的。</p><p><b> 2 需求分析</b></p><p><b> 2.1 系統(tǒng)分析</b></p><p> 圖書管理系統(tǒng)是典型的信息管理系統(tǒng),其開發(fā)主要包括后臺(tái)數(shù)據(jù)庫的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個(gè)方面。對(duì)于前者要求建立起數(shù)據(jù)一致性和完整性強(qiáng)、數(shù)據(jù)安全性好的數(shù)據(jù)庫。而對(duì)于后
19、者則要求應(yīng)用程序功能完備,易使用等特點(diǎn)。 </p><p> 在數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)之前,對(duì)開發(fā)數(shù)據(jù)庫的基本概念,數(shù)據(jù)庫的結(jié)構(gòu)、開發(fā)數(shù)據(jù)庫應(yīng)用程序的步驟、開發(fā)體系及方法都應(yīng)當(dāng)有相當(dāng)清晰的了解和認(rèn)識(shí)。數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)的目標(biāo)是建立一個(gè)滿足用戶長(zhǎng)期需求的產(chǎn)品。開發(fā)的主要過程為:理解用戶的需求,然后,把它們轉(zhuǎn)變?yōu)橛行У臄?shù)據(jù)庫設(shè)計(jì)。把設(shè)計(jì)轉(zhuǎn)變?yōu)閷?shí)際的數(shù)據(jù)庫,并且這些數(shù)據(jù)庫帶有功能完備、高效能的應(yīng)用??紤]到使用的方便性,程
20、序用ADO技術(shù)來操作數(shù)據(jù)庫,免去了注冊(cè)DSN步驟。</p><p> 因此本人結(jié)合上述要求對(duì)MS SQL Server 2000數(shù)據(jù)庫管理系統(tǒng)、SQL語言原理、ASP程序設(shè)計(jì),ADO數(shù)據(jù)庫技術(shù)進(jìn)行了較深入的學(xué)習(xí)和應(yīng)用。</p><p><b> 2.2 系統(tǒng)目標(biāo)</b></p><p> (1)用戶方便進(jìn)行圖書查詢,圖書瀏覽和圖書分類瀏覽
21、,進(jìn)行圖書借閱并了解自己的借書情況和個(gè)人情況。</p><p> (2)用戶在借書超期的情況下得到來自管理員的提醒。</p><p> ?。?)管理員可以方便進(jìn)行圖書管理,用戶管理,管理員管理。圖書管理包括圖書信息以及圖書分類的添加,修改,刪除。用戶管理包括用戶信息的添加,刪除,修改和鎖定(限制用戶的正常使用功能,使其無法登陸)。管理員管理包括管理員信息的添加,刪除,修改等。</p
22、><p> ?。?)用戶和管理員可以修改自己的密碼,修改前需先核實(shí)自己的原始密碼。</p><p> ?。?)未注冊(cè)用戶(游客)也可以瀏覽所有的圖書信息和分類信息,但是無法借閱。 (6)實(shí)現(xiàn)模糊查詢,使用戶得到更多的相關(guān)記錄。并且考慮使用的方便性,一些經(jīng)常使用的輸入無須用戶輸入,比如進(jìn)行圖書查詢時(shí)圖書分類只須用戶做選擇就可以。</p><p> ?。?)考慮程序
23、執(zhí)行操作時(shí)可能出現(xiàn)的情況,比如刪除圖書分類時(shí)該分類下存在圖書,程序自動(dòng)跳轉(zhuǎn)該分類圖書查看。刪除某個(gè)用戶,如果存在借書記錄則不允許刪除,跳轉(zhuǎn)到該用戶的借書記錄。等待管理員確認(rèn)該用戶所借圖書已經(jīng)全部歸還之后才允許刪除該用戶信息。</p><p><b> 2.3總體需求</b></p><p> 圖書管理系統(tǒng)是一項(xiàng)復(fù)雜系統(tǒng)工程,要從實(shí)際出發(fā),對(duì)實(shí)際情況進(jìn)行客觀的分析,
24、深入了解需求。系統(tǒng)利用Asp與數(shù)據(jù)庫結(jié)合的技術(shù)建立數(shù)據(jù)庫管理系統(tǒng),采用交互式的動(dòng)態(tài)的Asp頁面來實(shí)現(xiàn)。需求調(diào)查是為了研究系統(tǒng)設(shè)計(jì)的開發(fā)途徑和方法。同時(shí)它也是進(jìn)行概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)的基礎(chǔ),是進(jìn)行內(nèi)部維護(hù)和測(cè)試的依據(jù)。具體分析如下:</p><p> 添加操作:在執(zhí)行操作時(shí)首先都要先檢查是否已經(jīng)輸入以及數(shù)據(jù)庫中是否已經(jīng)存在輸入的數(shù)據(jù),如果存在會(huì)報(bào)錯(cuò),程序返回上個(gè)頁面,不執(zhí)行添加操作。</p><
25、p> 刪除操作:考慮到了字段在不同表中可能會(huì)同時(shí)存在的情況,比如:刪除圖書分類時(shí)候該分類下有書或者刪除用戶時(shí)該用戶有借書記錄,這樣的情況下程序會(huì)給出提醒并跳轉(zhuǎn)到該分類下的所有圖書查看或者是該用戶的全部借書查看。直到這種關(guān)聯(lián)取消掉之后才允許進(jìn)行刪除這樣的危險(xiǎn)操作。</p><p> 查詢操作:考慮到了模糊查詢的實(shí)現(xiàn), SQL語句中用“l(fā)ike”,還有組合查詢,通過對(duì)用戶輸入情況的判斷來確定SQL語句的最終
26、形式,比如用戶查詢時(shí)并未輸入圖書名字,就是名字匹配任意字符,那么程序給數(shù)據(jù)庫的SQL語句就會(huì)是name like ‘%’。組合查詢的實(shí)現(xiàn)也是程序判斷用戶所做的選擇或者輸入,在SQL語句中實(shí)現(xiàn)的。</p><p> 超期統(tǒng)計(jì):假定借書超期的限制是三十天,借書記錄中的所有數(shù)據(jù)的借書時(shí)間如果不在當(dāng)前服務(wù)器時(shí)間減去三十天和當(dāng)前服務(wù)器時(shí)間之間,那么這條借書記錄就屬于超期記錄了。由用戶借書記錄中的用戶編號(hào)到用戶表中查找該用
27、戶。</p><p> 發(fā)送消息:往消息表中添加數(shù)據(jù),該數(shù)據(jù)包含用戶名,用戶超期的圖書,超期時(shí)間,罰金等相關(guān)警告信息。當(dāng)用戶正常登陸主頁后,程序自動(dòng)檢查消息表中是否存在該用戶的記錄,如果有要給出提示,但是沒有強(qiáng)制用戶必須查看。</p><p> 數(shù)據(jù)庫備份和還原操作:程序只要告訴SQL 服務(wù)器執(zhí)行備份和還原SQL語句就可以實(shí)現(xiàn),在還原時(shí)程序還在使用系統(tǒng)數(shù)據(jù)庫,此時(shí)執(zhí)行還原操作會(huì)因?yàn)闆]有
28、排它使用權(quán)出現(xiàn)錯(cuò)誤,所以應(yīng)告訴SQL 服務(wù)器使用另外的一個(gè)數(shù)據(jù)庫,程序中用的是:use master。還原操作時(shí)用FSO組件首先檢查備份數(shù)據(jù)庫文件是否存在,如果不存在則給出提示回到上個(gè)頁面。所有條件都允許后則執(zhí)行還原操作,如果數(shù)據(jù)庫數(shù)據(jù)比較多,備份和還原的時(shí)間都可能會(huì)比較長(zhǎng)。</p><p> 2.4系統(tǒng)模塊流程圖</p><p> 2.4.1 系統(tǒng)登陸流程圖</p>
29、<p> 2.4.2 用戶流程圖</p><p> 2.4.3 管理員流程圖</p><p><b> 3 數(shù)據(jù)庫設(shè)計(jì)</b></p><p><b> 3.1概念結(jié)構(gòu)設(shè)計(jì)</b></p><p> 圖書館管理系統(tǒng),總共含有三個(gè)實(shí)體:管理員,圖書,讀者,之間的關(guān)系如下圖的E-R圖
30、如下:</p><p> 3.2 邏輯結(jié)構(gòu)設(shè)計(jì)</p><p> 表3.2.1 管理員</p><p> 表 3.2.2 圖書信息</p><p> 表 3.2.3 圖書類別</p><p> 表 3.2.4 借出信息</p><p> 表3.2.5 消息表</p>&
31、lt;p> 表3.2.6 用戶表</p><p> 3.3創(chuàng)建表的腳本文件</p><p> 關(guān)于創(chuàng)建數(shù)據(jù)庫部分,可以通過SQL Server企業(yè)管理器來創(chuàng)建,也可以通過查詢分析器來創(chuàng)建,對(duì)應(yīng)的SQL語句如下</p><p> create DATABASE zhengchengting</p><p><b> o
32、n</b></p><p> primary (name=zhengchengting_data,</p><p> filename='E:\SQL server\數(shù)據(jù)文件\MSSQL\zhengchengting_data.mdf',</p><p> size=200MB,</p><p> maxs
33、ize=200,</p><p> filegrowth=20)</p><p><b> log on</b></p><p> (name=zhengchengting_log,</p><p> filename='E:\SQL server\數(shù)據(jù)文件\MSSQL\zhengchengting_lo
34、g.ldf',</p><p> size=200MB,</p><p> maxsize=200,</p><p> filegrowth=20)</p><p><b> GO</b></p><p> create table admin</p><p&
35、gt; (ID int primary key,</p><p> name nvarchar(50),</p><p> pwd nvarchar(50));</p><p> create table book</p><p> (id int primary key,</p><p> booktyp
36、e nvarchar(50),</p><p> publishing nvarchar(50),</p><p> bookmoney nvarchar(50),</p><p> pdate datetime,</p><p> bookname nvarchar(50),</p><p><b>
37、; num int);</b></p><p> create table booktype</p><p> (id int primary key,</p><p> booktype nvarchar(50));</p><p> create table loans</p><p><
38、;b> (uid int,</b></p><p><b> bid int,</b></p><p> time datetime,</p><p> loan_ bit not null);</p><p> create table msg</p><p>
39、(content char(50),</p><p><b> uid int,</b></p><p> id int primary key);</p><p> create table u</p><p> (id int primary key,</p><p> name c
40、har(50),</p><p> pwd char(50),</p><p><b> lock bit,</b></p><p> loan_num int);</p><p><b> 4 詳細(xì)設(shè)計(jì)</b></p><p> 4.1 用戶登陸頁面</p&
41、gt;<p> 該頁面用于用戶登陸,包括游客,用戶和管理員。成功登陸則取得用戶的session用于以后的操作權(quán)限認(rèn)定。程序執(zhí)行時(shí)首先判斷用戶類型,如果是游客則對(duì)session賦值為游客類型,然后直接進(jìn)入主頁;如果不是游客則執(zhí)行查詢語句,看數(shù)據(jù)庫中是否存在這樣的用戶名和密碼,根據(jù)選擇用戶類型的不同在不同的表中進(jìn)行操作,成功則進(jìn)入主頁,否則提示輸入錯(cuò)誤。</p><p><b> 截圖如下
42、:</b></p><p> 圖4.1.1 用戶登陸</p><p><b> 代碼:</b></p><p> <link href="style.css" type="text/css" rel="stylesheet"></p><
43、;p> <!--#include file="conn.asp"--></p><p> <% if request("login")<>"" then</p><p> if request("usertype")<>"" then &
44、#39;用戶類型不空,核實(shí)數(shù)據(jù)真實(shí)</p><p> If Request("usertype")="user" Then</p><p> sql = "select * from u where name='"&request("name")&"' and pw
45、d='"&request("pwd")&"'"</p><p><b> Else </b></p><p> sql = "SELECT * FROM admin WHERE name='"&Request("name")&a
46、mp;"' and pwd='"&Request("pwd")&"'"</p><p><b> End If</b></p><p> Set rs=db.execute(sql)</p><p> If not rs.EOF Or N
47、ot rs.BOF Then '輸入數(shù)據(jù)存在</p><p> If Request("usertype")="user" Then</p><p> If rs("lock") Then</p><p> response.Write"<script>alert(
48、9;您已被鎖定了!');window.location.href='login.asp'</script>"</p><p><b> else</b></p><p> Session("usertype")="user"</p><p> Sessi
49、on("userid")=rs("id")</p><p> Session("name")=rs("name")</p><p> Response.Redirect("index.asp")</p><p><b> end if</b>
50、;</p><p><b> Else</b></p><p> Session("usertype")="admin"</p><p> Session("adminid")=rs("id")</p><p> Session(&q
51、uot;name")=rs("name")</p><p> Response.Redirect("index.asp")</p><p><b> End If</b></p><p><b> Else </b></p><p> r
52、esponse.Write"<script>alert('輸入錯(cuò)誤!');window.location.href='login.asp'</script>"</p><p><b> rs.close</b></p><p><b> End if</b></
53、p><p> else'用戶類型空</p><p> response.Write"<script>alert('沒有選擇用戶類型!');window.location.href='login.asp'</script>"</p><p><b> end if</
54、b></p><p><b> end if</b></p><p><b> %></b></p><p><b> 4.2圖書查詢頁面</b></p><p> 該頁面用于用戶的圖書查詢,利用查詢語句的like %替代任意長(zhǎng)度字符實(shí)現(xiàn)了模糊查詢。所有查詢
55、的字段用戶都可以不輸入,如果輸入了某個(gè)數(shù)據(jù),程序執(zhí)行時(shí)自己會(huì)判斷,輸入了就會(huì)加上相應(yīng)的SQL語句??紤]到使用方便性,圖書類型,價(jià)格范圍,出版日期都無須用戶輸入,已經(jīng)設(shè)定了合理的初始值。圖書類型如果不做選擇就默認(rèn)在所有圖書類型中查找??紤]到找到的記錄可能會(huì)很多,引入了分頁顯示,在記錄集循環(huán)顯示的時(shí)候引入?yún)?shù)i來實(shí)現(xiàn),設(shè)定i<10,初始值為0,這樣每頁顯示的記錄數(shù)為10條。 </p><p> 圖4.2.1圖
56、書查詢</p><p><b> 代碼:</b></p><p> <link href="style.css" type="text/css" rel="stylesheet"></p><p> <!--#include file="conn.as
57、p"--></p><p> <%'定義記錄集和變量</p><p> set rs=server.createobject("adodb.recordset")</p><p> bookname=trim(request("bookname"))</p><p>
58、 booktype=request("booktype")</p><p> publishing=trim(request("publishing"))</p><p> money1=trim(request("money1"))</p><p> money2=trim(request(&qu
59、ot;money2"))</p><p> date1=trim(request("date1"))</p><p> date11=trim(request("date11"))</p><p> date2=trim(request("date2"))</p><p&
60、gt; date22=trim(request("date22"))</p><p> date3=trim(request("date3"))</p><p> date33=trim(request("date33"))</p><p> date111=date1&"-&qu
61、ot;&date2&"-"&date3</p><p> date222=date11&"-"&date22&"-"&date33</p><p><b> '查詢的實(shí)現(xiàn)</b></p><p> sql="
62、;select * from book where 1 "</p><p> if booktype<>"" then</p><p> sql=sql+"and booktype like '%"&booktype&"%'"</p><p> e
63、lse if bookname<>"" then</p><p> sql=sql+"and bookname like '%"&bookname&"%'"</p><p> else if publishing<>"" then</p>
64、<p> sql=sql+"and publishing like '%"&publishing&"%' "</p><p><b> end if</b></p><p><b> end if</b></p><p><b
65、> end if</b></p><p> sql=sql+"and bookmoney>='"&money1&"' and bookmoney<='"&money2&"' and pdate between '"&date111&&
66、quot;' and '"&date222&"' order by id desc"rs.open sql,db,1,3</p><p> if rs.eof or rs.bof then</p><p> response.write "對(duì)不起沒有搜索到記錄"</p><p&
67、gt; response.end</p><p><b> else</b></p><p><b> '頁面顯示</b></p><p> dim pagenum,i</p><p> rs.pagesize=10</p><p> pagecount1
68、=rs.pagecount</p><p> if request.querystring("pagenum")=0 or request.querystring("pagenum")="" then</p><p><b> pagenum=1</b></p><p><b
69、> else</b></p><p> pagenum=trim(request("pagenum"))</p><p> rs.absolutepage=trim(request("pagenum"))</p><p><b> end if</b></p>&l
70、t;p><b> %></b></p><p><b> <%’分頁實(shí)現(xiàn)</b></p><p> response.write "總共"&pagecount1&"頁,當(dāng)前"&pagenum&"/"&pagecount1&a
71、mp;", <a href=search.asp?pagenum=1&bookname="&bookname&"&booktype="&booktype&"&publishing="&publishing&"&money1="&money1&"&a
72、mp;money2="&money2&"&date1="&date1&"&date2="&date2&"&date3="&date3&"&date11="&date11&"&date22="&date2
73、2&"&date33="&date33&">首頁</a>"</p><p><b> %> </b></p><p><b> <%</b></p><p> if pagenum>1 the
74、n</p><p> response.write "<a href=search.asp?pagenum="&(pagenum-1)&"&bookname="&bookname&"&booktype="&booktype&"&publishing="&a
75、mp;publishing&"&money1="&money1&"&money2="&money2&"&date1="&date1&"&date2="&date2&"&date3="&date3&"&a
76、mp;date11="&date11&"&date22="&date22&"&date33="&date33&">上一頁</a> "</p><p><b> else</b></p><p>
77、response.write "上一頁 "</p><p><b> end if</b></p><p> if pagenum < trim(pagecount1) then</p><p> response.write "<a href=search.asp?pagenu
78、m="&(pagenum+1)&"&bookname="&bookname&"&booktype="&booktype&"&publishing="&publishing&"&money1="&money1&"&mone
79、y2="&money2&"&date1="&date1&"&date2="&date2&"&date3="&date3&"&date11="&date11&"&date22="&date22&&
80、quot;&date33="&date33&">下一頁</a> "</p><p><b> else</b></p><p> response.write "下一頁"</p><p><b> end if</
81、b></p><p><b> %> </b></p><p><b> <%</b></p><p> response.write "<a href=search.asp?pagenum="&pagecount1&"&
82、bookname="&bookname&"&booktype="&booktype&"&publishing="&publishing&"&money1="&money1&"&money2="&money2&"&date
83、1="&date1&"&date2="&date2&"&date3="&date3&"&date11="&date11&"&date22="&date22&"&date33="&date33&&
84、quot;>尾頁</a>"</p><p><b> %></b></p><p><b> </p></b></p><p><b> 4.3統(tǒng)計(jì)超期</b></p><p> 方便管理員清楚圖書借出后的歸還情況,并可以給
85、超期的用戶發(fā)送消息提醒,或者鎖定該用戶,使其無法登陸系統(tǒng)。超期判定用dateserial()函數(shù)來實(shí)現(xiàn)將當(dāng)前系統(tǒng)時(shí)間的格式轉(zhuǎn)化為YY-MM-DD,這樣方便后面的日期比較操作。設(shè)置一個(gè)變量來代表當(dāng)前系統(tǒng)時(shí)間減去三十天,如果用戶借書的時(shí)間不在這兩個(gè)時(shí)間之間那么就是超期。頁面開始首先進(jìn)行管理員身份核實(shí),用到了前面登陸頁面說的session。點(diǎn)擊左邊菜單的統(tǒng)計(jì)超期后系統(tǒng)自動(dòng)完成統(tǒng)計(jì),并將結(jié)果顯示在右邊,管理員可以進(jìn)行的操作有:鎖定,給單個(gè)用戶發(fā)
86、消息,群發(fā)消息。截圖如下:</p><p> 圖4.3.1 統(tǒng)計(jì)超期</p><p><b> 代碼:</b></p><p> <%':從loans表導(dǎo)出時(shí)間超期的數(shù)據(jù) 更改系統(tǒng)時(shí)間來實(shí)現(xiàn)超期~ 管理員驗(yàn)證 分頁顯示 管理員發(fā)消息提醒還書</p><p> if session("use
87、rtype")<>"admin" then </p><p> response.write "<script>alert('不是管理員,請(qǐng)先登陸! ');window.location.href='go.asp'</script>"</p><p><b>
88、 end if</b></p><p> dim loan_time '現(xiàn)在時(shí)間和借書時(shí)間相差三十天則超期</p><p> loan_time = dateserial(year(date),month(date),day(date)-30)'轉(zhuǎn)換日期格式2007-3-31,函數(shù)參考topic.csdn.net </p><p>
89、 sql1="select * from loans"</p><p> set rs1=db.execute(sql1)</p><p> sql2="select book.bookname as b_name,book.booktype as booktype,* from loans,u ,book where loans.time not bet
90、ween #"&loan_time&"# and #"&date&"# and u.id=loans.uid and book.id=loans.bid "</p><p> set rs2=db.execute(sql2)</p><p> 'sql3="select * from
91、u where id='"&(rs2("uid"))&"'"</p><p> 'set rs3=db.execute(sql3)</p><p><b> %></b></p><p> 4.4數(shù)據(jù)庫備份和還原</p><
92、p> 為了防止因意外對(duì)系統(tǒng)數(shù)據(jù)庫造成的破壞,設(shè)置了數(shù)據(jù)庫的備份和還原操作,其實(shí)現(xiàn)是用SQL本身的備份和還原功能,程序只要告訴SQL服務(wù)器執(zhí)行就可以了,還原還首先檢查是否存在備份文件,如果沒有則報(bào)錯(cuò)并終止還原操作,執(zhí)行還原操作時(shí)因?yàn)楫?dāng)前系統(tǒng)的數(shù)據(jù)庫正在使用,無法被還原,所以要先選擇SQL服務(wù)器上的其他數(shù)據(jù)庫為當(dāng)前活動(dòng)數(shù)據(jù)庫,系統(tǒng)用use master來實(shí)現(xiàn)將當(dāng)前正在使用的數(shù)據(jù)庫更改為master數(shù)據(jù)庫。系統(tǒng)設(shè)定備份文件存放在IIS
93、主目錄下,后綴是.BAK,方便管理員查看。</p><p><b> 截圖:</b></p><p> 圖4.4.1數(shù)據(jù)庫備份和還原</p><p><b> 代碼:</b></p><p> <!--#include file="conn.asp"-->&l
94、t;/p><p><b> <%</b></p><p> if request("do")="bak" then</p><p><b> dim path</b></p><p> path=server.MapPath("./&quo
95、t;)</p><p> 'response.Write""&path&""</p><p> sql="backup database zhengchengting to disk='"&path&"\\zhengchengting.bak' with in
96、it"</p><p> db.execute(sql)</p><p> response.Write"<script>alert('備份成功. 備份文件在目錄下');history.go(-1)</script>"</p><p><b> end if</b>&l
97、t;/p><p><b> %></b></p><p> <%if request("do")="restore" then</p><p> '判斷備份文件是否存在</p><p> set iFso=server.CreateObject("
98、Scripting.FileSystemObject")'FSO組件</p><p> dim bak_path</p><p> bak_path=server.MapPath("./zhengchengting.bak")</p><p> if not iFso.FileExists(bak_path) then&l
99、t;/p><p> response.Write"<script>alert('備份文件不存在');history.go(-1)</script>"</p><p><b> else</b></p><p> sql1="use master"'獲得排它
100、訪問權(quán) 斷開與當(dāng)前系統(tǒng)數(shù)據(jù)的連接</p><p> sql="restore database zhengchengting from disk='"&server.MapPath("./")&"\\zhengchengting.bak' "</p><p> db.execute(sql1)&
101、lt;/p><p> db.execute(sql)</p><p> response.Write"<script>alert('還原成功.');history.go(-1)</script>"</p><p><b> end if</b></p><p>
102、; end if'頁面history.go(-1)時(shí)自己會(huì)重新連接數(shù)據(jù)庫 </p><p><b> %></b></p><p><b> 4.5圖書添加</b></p><p> 實(shí)現(xiàn)圖書添加功能。當(dāng)管理員需要添加圖書時(shí),通過管理菜單點(diǎn)擊“添加圖書”就進(jìn)入這個(gè)頁面,考慮到輸入的方便性圖書分類和出版
103、時(shí)間都可以進(jìn)行選擇,無須手工輸入。圖書添加操作要求全部數(shù)據(jù)都必須輸入,否則報(bào)錯(cuò)。添加操作實(shí)際上是將數(shù)據(jù)寫入數(shù)據(jù)庫,寫入新圖書信息之前首先檢查圖書名是否重復(fù),重復(fù)則報(bào)錯(cuò)返回上個(gè)頁面,輸入正確而且數(shù)據(jù)庫中原本沒有這樣的數(shù)據(jù)則執(zhí)行寫入操作。截圖如下:</p><p> 圖4.5.1 圖書添加</p><p><b> 代碼:</b></p><p&g
104、t;<b> <%'圖書增加</b></p><p> if request("query")="book_add" then</p><p> sql="select * from booktype"</p><p> set rs=db.execute(sql
105、)</p><p><b> %></b></p><p><b> <%</b></p><p> if request("active")="" then</p><p><b> else</b></p&g
106、t;<p> if request("name")="" or request("money")="" or request("num")="" or request("publishing")="" or request("select")=
107、"" then</p><p> response.write "<script>alert('輸入錯(cuò)誤');history.go(-1)</script>"</p><p><b> else</b></p><p> set rs2=server.crea
108、teobject("adodb.recordset")</p><p> date1=request("date1")</p><p> date2=request("date2")</p><p> date3=request("date3")</p><p&
109、gt; qdate=date1&"-"&date2&"-"&date3</p><p> sql="select * from book"</p><p> rs2.open sql,db,1,3</p><p> rs2.addnew</p><
110、p> rs2("bookname")=trim(request("name"))</p><p> rs2("bookmoney")=trim(request("money"))</p><p> rs2("num")=trim(request("num"))
111、</p><p> rs2("publishing")=trim(request("publishing"))</p><p> rs2("pdate")=date1&"-"&date2&"-"&date3</p><p> rs
112、2("booktype")=trim(request("select"))</p><p> rs2.update</p><p> response.write "<script>alert('添加圖書成功');window.location.href('book.asp?query=all_boo
113、k')</script>"</p><p><b> end if</b></p><p><b> end if</b></p><p><b> %></b></p><p><b> 4.6用戶管理</b>
114、</p><p> 實(shí)現(xiàn)用戶管理全部功能,包括查看全部用戶,添加,修改,刪除,鎖定,查看其借書記錄。其中鎖定針對(duì)于借書超期用戶,管理員可以在超期統(tǒng)計(jì)頁面知道哪些用戶借書超期。添加用戶時(shí)程序首先判斷是否已經(jīng)存在這個(gè)用戶名,存在則終止操作,返回上個(gè)頁面;刪除用戶時(shí)如果該用戶存在借書記錄則不允許刪除,程序跳轉(zhuǎn)到該用戶的借書記錄頁面。更改操作同樣考慮到了用戶名重復(fù)的問題,避免混淆。截圖如下:</p>&l
115、t;p> 圖4.6.1 用戶管理</p><p><b> 代碼如下:</b></p><p> <%’從數(shù)據(jù)庫導(dǎo)出所有用戶數(shù)據(jù)</p><p> if request("action")="" then</p><p> sql="select *
116、 from u"</p><p> set rs=server.CreateObject("adodb.recordset")</p><p> rs.open sql,db,1,3</p><p> '實(shí)現(xiàn)用戶查看,添加,刪除,修改等...</p><p><b> %><
117、/b></p><p><b> <%'添加新的用戶</b></p><p> if request("action")="add" then</p><p> if request("add")<>"" then'檢查
118、是否重名</p><p> set chk=db.execute("select * from u where name='"&trim(request("name"))&"'")</p><p> if chk.eof or chk.bof then '插入u表</p>
119、<p><b> rs.addnew</b></p><p> rs("name")=request("name")</p><p> rs("pwd")=request("pwd")</p><p><b> rs.update<
120、;/b></p><p> response.write "<script>alert('添加成功咯');window.location.href='user.asp'</script>"</p><p> else response.write "<script>alert(
121、9;用戶名重復(fù)');history.go(-1)</script>"</p><p><b> end if</b></p><p><b> else</b></p><p><b> %></b></p><p><b>
122、 <%'刪除用戶</b></p><p> if request("action")="del" then</p><p> if request("id")<>"" then</p><p> qq="select count(*
123、) as xx from loans where uid="&request("id")</p><p> set q=db.execute(qq)</p><p> if q("xx")>0 then</p><p> response.write "<script>ale
124、rt('存在借書記錄,不能刪除。');window.location.href='my_borrow.asp?id="&request("id")&"'</script>"</p><p><b> else</b></p><p> sql="
125、delete * from u where id="&request("id")</p><p> db.execute(sql)</p><p> response.write "<script>alert('刪除成功');window.location.href='user.asp'<
126、/script>"</p><p><b> end if</b></p><p><b> else</b></p><p><b> %></b></p><p> <%'更改用戶 過程:如果有更改請(qǐng)求,如果有ID,導(dǎo)出數(shù)據(jù),如果
127、確認(rèn)更改,執(zhí)行檢查過程;檢查成功則更新 否則返回錯(cuò)誤。該功能已經(jīng)包含用戶鎖定功能的實(shí)現(xiàn)。</p><p> if request("query")="type_mod" then</p><p> if request("id")<>"" then</p><p> s
128、ql="select * from u where id="&request("id")</p><p> set rs1=server.CreateObject("adodb.recordset")</p><p> rs1.open sql,db,1,3</p><p> if reque
129、st("mod")="yes" then'確認(rèn)請(qǐng)求</p><p> set chk=db.execute("select * from u where name='"&request("name")&"'and id<>"&request("
130、id"))</p><p> if not chk.eof then</p><p> response.write "<script>alert('已經(jīng)存在的名咯');history.go(-1)</script>"</p><p> response.End()</p>&
131、lt;p><b> else</b></p><p> if request("islock")="True" then </p><p> qq="update u set name='"&request("name")&"',pwd
132、='"&request("pwd")&"',lock='1' where id="&request("id")</p><p><b> else</b></p><p> qq="update u set name='&
133、quot;&request("name")&"',pwd='"&request("pwd")&"',lock='0' where id="&request("id")</p><p><b> end if</b>
134、;</p><p> db.execute(qq)</p><p> response.write "<script>alert('更改成功');window.location.href='user.asp'</script>"</p><p><b> end if<
135、/b></p><p><b> else</b></p><p><b> %></b></p><p> 4.7最新添加的圖書</p><p> 放在index.asp框架的右邊,主要是向所有人展現(xiàn)最新增加的圖書信息,方便所有人的使用。其實(shí)現(xiàn)是從數(shù)據(jù)庫book表中導(dǎo)出top
136、10個(gè)數(shù)據(jù)。截圖如下:</p><p> 圖4.7.1 最新添加的圖書</p><p><b> 代碼:</b></p><p> <%'最新圖書數(shù)據(jù)導(dǎo)出</p><p> sql="select top 10 * from book order by id desc "<
137、;/p><p> set rs=server.CreateObject("adodb.recordset")</p><p> rs.open sql,db,1,3</p><p><b> %></b></p><p><b> 4.8圖書分類瀏覽</b></p
138、><p> 放在首頁的右邊,起著導(dǎo)航作用,實(shí)現(xiàn)所有圖書分類的查看,使得所有人都可以方便的瀏覽自己感興趣的圖書分類下的書,點(diǎn)擊圖書分類名就進(jìn)入了該分類下的所有圖書瀏覽。截圖如下:</p><p> 圖4.8.1 圖書分類瀏覽</p><p><b> 代碼:</b></p><p><b> <%
139、9;圖書類型到處</b></p><p> sql1="select * from booktype order by id desc "</p><p> set rs1=server.CreateObject("adodb.recordset")</p><p> rs1.open sql1,db,1,3
140、</p><p><b> %></b></p><p> 4.9給超期用戶發(fā)消息提醒</p><p> 主要功能是實(shí)現(xiàn)管理員可以對(duì)借書超期的用戶進(jìn)行提醒,其操作是往msg表里添加數(shù)據(jù),當(dāng)用戶正常登陸后系統(tǒng)會(huì)檢查msg表內(nèi)是否有該用戶的消息數(shù)據(jù),如果有則會(huì)自動(dòng)給出提醒,提醒用戶查看消息。截圖如下:</p><p&
141、gt; 圖4.9.1 給超期用戶發(fā)消息</p><p><b> 代碼:</b></p><p> <!--#include file="conn.asp"--></p><p> <%if request("act")="all_send_msg" then
142、</p><p> dim loan_time '現(xiàn)在時(shí)間和借書時(shí)間相差三十天則超期</p><p> loan_time = dateserial(year(date),month(date),day(date)-30)'轉(zhuǎn)換日期格式2007-3-31 </p><p> sql2="select book.bookname as
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖書館管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 圖書館管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告---圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)_pb課程設(shè)計(jì)報(bào)告
- c課程設(shè)計(jì)報(bào)告--圖書館管理系統(tǒng)
- java課程設(shè)計(jì)報(bào)告---圖書館管理系統(tǒng)
- java課程設(shè)計(jì)報(bào)告---圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)--圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設(shè)計(jì)
- c語言圖書館管理系統(tǒng)課程設(shè)計(jì)---高校圖書館管理系統(tǒng)
- 圖書館信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- vc++課程設(shè)計(jì)報(bào)告--圖書館管理系統(tǒng)
- c語言課程設(shè)計(jì)報(bào)告---圖書館管理系統(tǒng)
- c++圖書館管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 圖書館信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 圖書館管理信息------系統(tǒng)課程設(shè)計(jì)
- jsp課程設(shè)計(jì)《圖書館管理系統(tǒng)》
- sqlserver課程設(shè)計(jì)——圖書館管理系統(tǒng)
- 軟件課程設(shè)計(jì)--圖書館管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論