版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 課程設計說明書</b></p><p> 題目: 圖書館管理系統(tǒng)</p><p> 院 系: 計算機科學系</p><p> 專業(yè)班級: 網(wǎng)絡工程4班</p><p> 學生姓名: </p><p> 指導教師:
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簡介1</p><p> 1.2.2 Dreamweaver簡介2</p><p> 1.2.3 Microsoft SQL Server 2000簡介2</p><p><b> 2 需求分析3</b></p><p> 2.1 系統(tǒng)分析3</p>
4、<p> 2.2 系統(tǒng)目標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ù)庫設計6</b></p><p> 3.1概念結構設計6</p><p> 3.2 邏輯結構設計7</p><p> 3.3創(chuàng)建表的腳本文件8</p><p><b> 4 詳細設計10</b></p><
6、;p> 4.1 用戶登陸頁面10</p><p> 4.2圖書查詢頁面11</p><p> 4.3統(tǒng)計超期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課程設計小結22</p><p><b> 6參考文獻22</b></p><p><b> 1 緒論</b></p>
8、;<p> 當今時代是飛速發(fā)展的信息時代。在各行各業(yè)中離不開信息處理,計算機被廣泛應用于B/S系統(tǒng)環(huán)境。計算機的好處在于它能夠進行信息管理。使用計算機進行信息控制,不僅提高了工作效率,而且大大的提高了安全性。</p><p> 對于復雜的信息管理,計算機能夠充分發(fā)揮它的優(yōu)越性。計算機與信息管理系統(tǒng)的開發(fā)密切相關,系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好圖書信息而設計的。 </p&g
9、t;<p><b> 1.1 開發(fā)背景</b></p><p> 圖書管理包括的圖書和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的圖書管理系統(tǒng)都是初步開始使用,甚至尚未使用計算機進行信息管理。以前對信息管理的主要方式是基于文本、表格等紙介質的手工處理,對于圖書借閱情況(如借書天數(shù)、超過限定借書時間的天數(shù))的統(tǒng)計和核實等往往采用對借書卡的人工檢查進行,對借閱者的
10、借閱權限、以及借閱天數(shù)等用人工計算、手抄進行。數(shù)據(jù)信息處理工作量大,容易出錯;由于數(shù)據(jù)繁多,容易丟失,且不易查找。總的來說,缺乏系統(tǒng),規(guī)范的信息管理手段。盡管有的圖書館有計算機,但是尚未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突出,這就是圖書管理系統(tǒng)開發(fā)所要解決的問題。</p><p> 基于這此問題,有必要建立一個圖書管理系統(tǒng),使圖書管理工作規(guī)范化,系統(tǒng)化,程序化,避免圖書管理的隨意性,提高信息處理的速度
11、和準確性,能夠及時、準確、有效的進行查詢和修改圖書情況等圖書管理操作。</p><p> 1.2 開發(fā)工具的選用及介紹</p><p> 1.2.1 ASP簡介</p><p> Active Server Pages:是一套微軟開發(fā)的服務器端腳本環(huán)境,ASP內(nèi)含于IIS之中 , 通過ASP我們可以結合 HTML 網(wǎng)頁、ASP 指令和 ActiveX元件建立動
12、態(tài)、交互且高效的WEB服務器應用程序。有了ASP你就不必擔心客戶的瀏覽器是否能運行你所編寫的代碼,因為所有的程序都將在服務器端執(zhí)行,包括所有嵌在普通 HTML中的腳本程序。當程序執(zhí)行完畢后,服務器僅將執(zhí)行的結果返回給客戶瀏覽器,這樣也就減輕了客戶端瀏覽器的負擔,大大提高了交互的速度。</p><p> 1.2.2 Dreamweaver簡介</p><p> Dreamweaver是M
13、acromedia公司最新推出的主頁編輯工具。這是一個所見即所得主頁編輯器,并帶有站點管理功能,讓你方便地設計和管理多個站點。而它最棒的地方就是支持最新的DHTML和CSS標準, 你可以用它設計出生動的DHTML動畫、多層次的頁面(layer)以及CSS樣式表。 </p><p> 1.2.3 Microsoft SQL Server 2000簡介</p><p> SQL是英文(St
14、ructured Query Language)的縮寫,意思為結構化查詢語言。SQL語言的主要功能就是同各種數(shù)據(jù)庫建立聯(lián)系,進行溝通。SQL被作為關系型數(shù)據(jù)庫管理系統(tǒng)的標準語言。SQL語句可以用來執(zhí)行各種各樣的操作,例如更新數(shù)據(jù)庫中的數(shù)據(jù),從數(shù)據(jù)庫中提取數(shù)據(jù)等。目前,絕大多數(shù)流行的關系型數(shù)據(jù)庫管理系統(tǒng),如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL語言標準。<
15、/p><p> SQL語言有以下幾個優(yōu)點:</p><p> 1 非過程化語言 SQL是一個非過程化的語言,因為它一次處理一個記錄,對數(shù)據(jù)提供自動導航。SQL允許用戶在高層的數(shù)據(jù)結構上工作,而不對單個記錄進行操作,可操作記錄集,所有SQL 語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結果作為另一條SQL語句的輸入。</p><p&g
16、t; SQL不要求用戶指定對數(shù)據(jù)的存放方法, 這種特性使用戶更易集中精力于要得到的結果;所有SQL語句使用查詢優(yōu)化器,它是RDBMS的一部分,由它決定對指定數(shù)據(jù)存取的最快速度的手段,查詢優(yōu)化器知道存在什么索引,在哪兒使用索引合適,而用戶則從不需要知道表是否有索引、有什么類型的索引。</p><p><b> 2. 統(tǒng)一的語言</b></p><p> SQL可用
17、于所有用戶的DB活動模型,包括系統(tǒng)管理員、數(shù)據(jù)庫管理員、 應用程序員、決策支持系統(tǒng)人員及許多其它類型的終端用戶?;镜腟QL 命令只需很少時間就能學會,最高級的命令在幾天內(nèi)便可掌握。</p><p> 3. 所有關系數(shù)據(jù)庫的公共語言</p><p> 由于所有主要的關系數(shù)據(jù)庫管理系統(tǒng)都支持SQL語言,用戶可將使用SQL的技能從一個RDBMS(關系數(shù)據(jù)庫管理系統(tǒng))轉到另一個,所有用SQL
18、編寫的程序都是可以移植的。</p><p><b> 2 需求分析</b></p><p><b> 2.1 系統(tǒng)分析</b></p><p> 圖書管理系統(tǒng)是典型的信息管理系統(tǒng),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護以及前端應用程序的開發(fā)兩個方面。對于前者要求建立起數(shù)據(jù)一致性和完整性強、數(shù)據(jù)安全性好的數(shù)據(jù)庫。而對于后
19、者則要求應用程序功能完備,易使用等特點。 </p><p> 在數(shù)據(jù)庫應用系統(tǒng)開發(fā)之前,對開發(fā)數(shù)據(jù)庫的基本概念,數(shù)據(jù)庫的結構、開發(fā)數(shù)據(jù)庫應用程序的步驟、開發(fā)體系及方法都應當有相當清晰的了解和認識。數(shù)據(jù)庫應用系統(tǒng)開發(fā)的目標是建立一個滿足用戶長期需求的產(chǎn)品。開發(fā)的主要過程為:理解用戶的需求,然后,把它們轉變?yōu)橛行У臄?shù)據(jù)庫設計。把設計轉變?yōu)閷嶋H的數(shù)據(jù)庫,并且這些數(shù)據(jù)庫帶有功能完備、高效能的應用??紤]到使用的方便性,程
20、序用ADO技術來操作數(shù)據(jù)庫,免去了注冊DSN步驟。</p><p> 因此本人結合上述要求對MS SQL Server 2000數(shù)據(jù)庫管理系統(tǒng)、SQL語言原理、ASP程序設計,ADO數(shù)據(jù)庫技術進行了較深入的學習和應用。</p><p><b> 2.2 系統(tǒng)目標</b></p><p> ?。?)用戶方便進行圖書查詢,圖書瀏覽和圖書分類瀏覽
21、,進行圖書借閱并了解自己的借書情況和個人情況。</p><p> ?。?)用戶在借書超期的情況下得到來自管理員的提醒。</p><p> (3)管理員可以方便進行圖書管理,用戶管理,管理員管理。圖書管理包括圖書信息以及圖書分類的添加,修改,刪除。用戶管理包括用戶信息的添加,刪除,修改和鎖定(限制用戶的正常使用功能,使其無法登陸)。管理員管理包括管理員信息的添加,刪除,修改等。</p
22、><p> ?。?)用戶和管理員可以修改自己的密碼,修改前需先核實自己的原始密碼。</p><p> ?。?)未注冊用戶(游客)也可以瀏覽所有的圖書信息和分類信息,但是無法借閱。 (6)實現(xiàn)模糊查詢,使用戶得到更多的相關記錄。并且考慮使用的方便性,一些經(jīng)常使用的輸入無須用戶輸入,比如進行圖書查詢時圖書分類只須用戶做選擇就可以。</p><p> ?。?)考慮程序
23、執(zhí)行操作時可能出現(xiàn)的情況,比如刪除圖書分類時該分類下存在圖書,程序自動跳轉該分類圖書查看。刪除某個用戶,如果存在借書記錄則不允許刪除,跳轉到該用戶的借書記錄。等待管理員確認該用戶所借圖書已經(jīng)全部歸還之后才允許刪除該用戶信息。</p><p><b> 2.3總體需求</b></p><p> 圖書管理系統(tǒng)是一項復雜系統(tǒng)工程,要從實際出發(fā),對實際情況進行客觀的分析,
24、深入了解需求。系統(tǒng)利用Asp與數(shù)據(jù)庫結合的技術建立數(shù)據(jù)庫管理系統(tǒng),采用交互式的動態(tài)的Asp頁面來實現(xiàn)。需求調查是為了研究系統(tǒng)設計的開發(fā)途徑和方法。同時它也是進行概要設計和詳細設計的基礎,是進行內(nèi)部維護和測試的依據(jù)。具體分析如下:</p><p> 添加操作:在執(zhí)行操作時首先都要先檢查是否已經(jīng)輸入以及數(shù)據(jù)庫中是否已經(jīng)存在輸入的數(shù)據(jù),如果存在會報錯,程序返回上個頁面,不執(zhí)行添加操作。</p><
25、p> 刪除操作:考慮到了字段在不同表中可能會同時存在的情況,比如:刪除圖書分類時候該分類下有書或者刪除用戶時該用戶有借書記錄,這樣的情況下程序會給出提醒并跳轉到該分類下的所有圖書查看或者是該用戶的全部借書查看。直到這種關聯(lián)取消掉之后才允許進行刪除這樣的危險操作。</p><p> 查詢操作:考慮到了模糊查詢的實現(xiàn), SQL語句中用“l(fā)ike”,還有組合查詢,通過對用戶輸入情況的判斷來確定SQL語句的最終
26、形式,比如用戶查詢時并未輸入圖書名字,就是名字匹配任意字符,那么程序給數(shù)據(jù)庫的SQL語句就會是name like ‘%’。組合查詢的實現(xiàn)也是程序判斷用戶所做的選擇或者輸入,在SQL語句中實現(xiàn)的。</p><p> 超期統(tǒng)計:假定借書超期的限制是三十天,借書記錄中的所有數(shù)據(jù)的借書時間如果不在當前服務器時間減去三十天和當前服務器時間之間,那么這條借書記錄就屬于超期記錄了。由用戶借書記錄中的用戶編號到用戶表中查找該用
27、戶。</p><p> 發(fā)送消息:往消息表中添加數(shù)據(jù),該數(shù)據(jù)包含用戶名,用戶超期的圖書,超期時間,罰金等相關警告信息。當用戶正常登陸主頁后,程序自動檢查消息表中是否存在該用戶的記錄,如果有要給出提示,但是沒有強制用戶必須查看。</p><p> 數(shù)據(jù)庫備份和還原操作:程序只要告訴SQL 服務器執(zhí)行備份和還原SQL語句就可以實現(xiàn),在還原時程序還在使用系統(tǒng)數(shù)據(jù)庫,此時執(zhí)行還原操作會因為沒有
28、排它使用權出現(xiàn)錯誤,所以應告訴SQL 服務器使用另外的一個數(shù)據(jù)庫,程序中用的是:use master。還原操作時用FSO組件首先檢查備份數(shù)據(jù)庫文件是否存在,如果不存在則給出提示回到上個頁面。所有條件都允許后則執(zhí)行還原操作,如果數(shù)據(jù)庫數(shù)據(jù)比較多,備份和還原的時間都可能會比較長。</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ù)庫設計</b></p><p><b> 3.1概念結構設計</b></p><p> 圖書館管理系統(tǒng),總共含有三個實體:管理員,圖書,讀者,之間的關系如下圖的E-R圖
30、如下:</p><p> 3.2 邏輯結構設計</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> 關于創(chuàng)建數(shù)據(jù)庫部分,可以通過SQL Server企業(yè)管理器來創(chuàng)建,也可以通過查詢分析器來創(chuà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 詳細設計</b></p><p> 4.1 用戶登陸頁面</p&
41、gt;<p> 該頁面用于用戶登陸,包括游客,用戶和管理員。成功登陸則取得用戶的session用于以后的操作權限認定。程序執(zhí)行時首先判斷用戶類型,如果是游客則對session賦值為游客類型,然后直接進入主頁;如果不是游客則執(zhí)行查詢語句,看數(shù)據(jù)庫中是否存在這樣的用戶名和密碼,根據(jù)選擇用戶類型的不同在不同的表中進行操作,成功則進入主頁,否則提示輸入錯誤。</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ù)據(jù)真實</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('輸入錯誤!');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 %替代任意長度字符實現(xiàn)了模糊查詢。所有查詢
55、的字段用戶都可以不輸入,如果輸入了某個數(shù)據(jù),程序執(zhí)行時自己會判斷,輸入了就會加上相應的SQL語句??紤]到使用方便性,圖書類型,價格范圍,出版日期都無須用戶輸入,已經(jīng)設定了合理的初始值。圖書類型如果不做選擇就默認在所有圖書類型中查找。考慮到找到的記錄可能會很多,引入了分頁顯示,在記錄集循環(huán)顯示的時候引入?yún)?shù)i來實現(xiàn),設定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> '查詢的實現(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 "對不起沒有搜索到記錄"</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> <%’分頁實現(xiàn)</b></p><p> response.write "總共"&pagecount1&"頁,當前"&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)計超期</b></p><p> 方便管理員清楚圖書借出后的歸還情況,并可以給
85、超期的用戶發(fā)送消息提醒,或者鎖定該用戶,使其無法登陸系統(tǒng)。超期判定用dateserial()函數(shù)來實現(xiàn)將當前系統(tǒng)時間的格式轉化為YY-MM-DD,這樣方便后面的日期比較操作。設置一個變量來代表當前系統(tǒng)時間減去三十天,如果用戶借書的時間不在這兩個時間之間那么就是超期。頁面開始首先進行管理員身份核實,用到了前面登陸頁面說的session。點擊左邊菜單的統(tǒng)計超期后系統(tǒng)自動完成統(tǒng)計,并將結果顯示在右邊,管理員可以進行的操作有:鎖定,給單個用戶發(fā)
86、消息,群發(fā)消息。截圖如下:</p><p> 圖4.3.1 統(tǒng)計超期</p><p><b> 代碼:</b></p><p> <%':從loans表導出時間超期的數(shù)據(jù) 更改系統(tǒng)時間來實現(xiàn)超期~ 管理員驗證 分頁顯示 管理員發(fā)消息提醒還書</p><p> if session("use
87、rtype")<>"admin" then </p><p> response.write "<script>alert('不是管理員,請先登陸! ');window.location.href='go.asp'</script>"</p><p><b>
88、 end if</b></p><p> dim loan_time '現(xiàn)在時間和借書時間相差三十天則超期</p><p> loan_time = dateserial(year(date),month(date),day(date)-30)'轉換日期格式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> 為了防止因意外對系統(tǒng)數(shù)據(jù)庫造成的破壞,設置了數(shù)據(jù)庫的備份和還原操作,其實現(xiàn)是用SQL本身的備份和還原功能,程序只要告訴SQL服務器執(zhí)行就可以了,還原還首先檢查是否存在備份文件,如果沒有則報錯并終止還原操作,執(zhí)行還原操作時因為當前系統(tǒng)的數(shù)據(jù)庫正在使用,無法被還原,所以要先選擇SQL服務器上的其他數(shù)據(jù)庫為當前活動數(shù)據(jù)庫,系統(tǒng)用use master來實現(xiàn)將當前正在使用的數(shù)據(jù)庫更改為master數(shù)據(jù)庫。系統(tǒng)設定備份文件存放在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、訪問權 斷開與當前系統(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ù)據(jù)庫 </p><p><b> %></b></p><p><b> 4.5圖書添加</b></p><p> 實現(xiàn)圖書添加功能。當管理員需要添加圖書時,通過管理菜單點擊“添加圖書”就進入這個頁面,考慮到輸入的方便性圖書分類和出版
103、時間都可以進行選擇,無須手工輸入。圖書添加操作要求全部數(shù)據(jù)都必須輸入,否則報錯。添加操作實際上是將數(shù)據(jù)寫入數(shù)據(jù)庫,寫入新圖書信息之前首先檢查圖書名是否重復,重復則報錯返回上個頁面,輸入正確而且數(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('輸入錯誤');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> 實現(xiàn)用戶管理全部功能,包括查看全部用戶,添加,修改,刪除,鎖定,查看其借書記錄。其中鎖定針對于借書超期用戶,管理員可以在超期統(tǒng)計頁面知道哪些用戶借書超期。添加用戶時程序首先判斷是否已經(jīng)存在這個用戶名,存在則終止操作,返回上個頁面;刪除用戶時如果該用戶存在借書記錄則不允許刪除,程序跳轉到該用戶的借書記錄頁面。更改操作同樣考慮到了用戶名重復的問題,避免混淆。截圖如下:</p>&l
115、t;p> 圖4.6.1 用戶管理</p><p><b> 代碼如下:</b></p><p> <%’從數(shù)據(jù)庫導出所有用戶數(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> '實現(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;用戶名重復');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> <%'更改用戶 過程:如果有更改請求,如果有ID,導出數(shù)據(jù),如果
127、確認更改,執(zhí)行檢查過程;檢查成功則更新 否則返回錯誤。該功能已經(jīng)包含用戶鎖定功能的實現(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'確認請求</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)最新增加的圖書信息,方便所有人的使用。其實現(xiàn)是從數(shù)據(jù)庫book表中導出top
136、10個數(shù)據(jù)。截圖如下:</p><p> 圖4.7.1 最新添加的圖書</p><p><b> 代碼:</b></p><p> <%'最新圖書數(shù)據(jù)導出</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> 放在首頁的右邊,起著導航作用,實現(xià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> 主要功能是實現(xiàn)管理員可以對借書超期的用戶進行提醒,其操作是往msg表里添加數(shù)據(jù),當用戶正常登陸后系統(tǒng)會檢查msg表內(nèi)是否有該用戶的消息數(shù)據(jù),如果有則會自動給出提醒,提醒用戶查看消息。截圖如下:</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)在時間和借書時間相差三十天則超期</p><p> loan_time = dateserial(year(date),month(date),day(date)-30)'轉換日期格式2007-3-31 </p><p> sql2="select book.bookname as
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖書館管理系統(tǒng)課程設計報告
- 圖書館管理系統(tǒng)課程設計報告
- 課程設計報告---圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)_pb課程設計報告
- c課程設計報告--圖書館管理系統(tǒng)
- java課程設計報告---圖書館管理系統(tǒng)
- java課程設計報告---圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設計
- 課程設計--圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設計
- c語言圖書館管理系統(tǒng)課程設計---高校圖書館管理系統(tǒng)
- 圖書館信息管理系統(tǒng)課程設計報告
- vc++課程設計報告--圖書館管理系統(tǒng)
- c語言課程設計報告---圖書館管理系統(tǒng)
- c++圖書館管理系統(tǒng)課程設計報告
- 圖書館信息管理系統(tǒng)課程設計報告
- 圖書館管理信息------系統(tǒng)課程設計
- jsp課程設計《圖書館管理系統(tǒng)》
- sqlserver課程設計——圖書館管理系統(tǒng)
- 軟件課程設計--圖書館管理系統(tǒng)
評論
0/150
提交評論