圖書管理系統(tǒng)項(xiàng)目文檔.doc_第1頁
圖書管理系統(tǒng)項(xiàng)目文檔.doc_第2頁
圖書管理系統(tǒng)項(xiàng)目文檔.doc_第3頁
圖書管理系統(tǒng)項(xiàng)目文檔.doc_第4頁
圖書管理系統(tǒng)項(xiàng)目文檔.doc_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

圖書管理系統(tǒng)項(xiàng)目文檔實(shí)驗(yàn)人員:08382047 網(wǎng)絡(luò)工程 黃忠08382044 網(wǎng)絡(luò)工程 劉光林?jǐn)?shù)據(jù)庫(kù)設(shè)計(jì)部分是應(yīng)用系統(tǒng)中非常重要的一個(gè)環(huán)節(jié),數(shù)據(jù)庫(kù)設(shè)計(jì)的優(yōu)劣將直接影響應(yīng)用系統(tǒng)的運(yùn)行的效率。所以圖書管理系統(tǒng)數(shù)據(jù)庫(kù)的設(shè)計(jì)師圖書管理系統(tǒng)中首要完成的工作。本系統(tǒng)開發(fā)平臺(tái)Visual Studio 2010,Microsoft SQL Server 2008,Windows 7,編程語言為C#。一、 圖書管理系統(tǒng)功能分析圖書管理系統(tǒng)可以供學(xué)校,書店等的管理員使用,用于日常的讀者管理,圖書管理,借書,還書等操作,另外還可以供讀者查詢圖書信息及其借閱情況等。本系統(tǒng)主要功能包括登錄,圖書查詢、借閱查詢、讀者管理、圖書管理、借閱管理等功能模塊。1、 登錄功能圖書管理系統(tǒng)可供讀者和管理員使用,所以需要設(shè)置登錄者的身份,并賦予不同身分的登錄者以不同的權(quán)限,讀者只能查看借閱情況和圖書館藏情況,管理員分三類:讀者管理員、圖書管理員、超級(jí)管理員。讀者管理員只能進(jìn)行讀者管理操作,圖書管理員只能進(jìn)行圖書管理操作,超級(jí)管理員可以進(jìn)行圖書查詢、借書查詢、讀者管理、圖書管理、借書管理、還書管理、數(shù)據(jù)備份等操作。2、 讀者管理讀者主要有借書證號(hào)、密碼、姓名、性別、出生日期、專業(yè)、借書量、照片、聯(lián)系方式和備注屬性。借書證號(hào)是唯一的,借書量不能超過10。只有讀者管理員和超級(jí)管理員才能進(jìn)行讀者管理,包括添加,修改,刪除。在修改讀者信息時(shí),不能修改借書證號(hào)和借書量,刪除讀者信息時(shí),如果該讀者借過書尚未歸還則不能刪除讀者。3、 圖書管理圖書主要有ISBN、書名、作者、出版社、出版年月、價(jià)格、復(fù)本量、庫(kù)存量、分類號(hào)、內(nèi)容提要和封面等屬性。每一種圖書的ISBN都是唯一的,庫(kù)存量不能大于復(fù)本量。只有圖書管理員和超級(jí)管理員才能進(jìn)行圖書管理,其操作包括添加圖書、修改圖書、刪除圖書。添加新書時(shí),系統(tǒng)自動(dòng)生成每本圖書的ID及在借情況,再借情況默認(rèn)為否。刪除圖書時(shí)如果該圖書已經(jīng)借出則不允許刪除圖書記錄。4、 圖書查詢用戶可以根據(jù)圖書ISBN、書名、作者、出版社進(jìn)行模糊查詢,查詢結(jié)果將分頁顯示。5、 借書管理借書管理只有超級(jí)管理員才能進(jìn)行。用戶可以輸入讀者的借書證號(hào)查看其借書記錄,確認(rèn)讀者沒有在借相同的ISBN的書,然后輸入要借的圖書的ISBN、圖書ID,判斷圖書是否存在、是否再借等情況、如果可借則完成結(jié)束操作,借書時(shí)間登記為系統(tǒng)當(dāng)前時(shí)間,規(guī)定還書期限為60天,同時(shí)系統(tǒng)自動(dòng)將讀者的借書量加1,圖書庫(kù)存量減1,圖書的再借情況為再借。6、 借書查詢一讀者身份登錄系統(tǒng)時(shí),用戶點(diǎn)擊借書查詢模塊可以查看自己的借書情況。以管理員身份登錄時(shí),用戶輸入讀者的借書證號(hào)也可以查看該讀者的結(jié)束情況。7、 還書管理還書操作只能由超級(jí)管理員來進(jìn)行。輸入讀者的借書證號(hào)即可查看讀者的現(xiàn)有的借書記錄。用戶輸入圖書ID后單擊還書按鈕即可進(jìn)行還書操作,與此同時(shí),系統(tǒng)自動(dòng)將讀者的借書量減1,圖書庫(kù)存量加1,圖書在借情況為否,并根據(jù)刪除的圖書記錄自動(dòng)生成一條還書記錄。8、 數(shù)據(jù)備份超級(jí)管理員可以指定一個(gè)后綴名為.bak的備份文件,然后將圖書管理數(shù)據(jù)庫(kù)的所有數(shù)據(jù)備份為該文件。二、 圖書管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)通過以上的功能分析,現(xiàn)階段可以進(jìn)行圖書管理數(shù)據(jù)庫(kù)的設(shè)計(jì)。1、 圖書管理數(shù)據(jù)庫(kù)的E-R模型通過理解圖書管理系統(tǒng)所要實(shí)現(xiàn)的功能,可以得出圖書管理數(shù)據(jù)庫(kù)包括以下實(shí)體:管理員、讀者、圖書、在借情況。 管理員的屬性:角色名、密碼、備注; 讀者的屬性:借書證號(hào)、密碼、姓名、性別、出生日期、專業(yè)、借書量、照片、備注、聯(lián)系方式; 圖書的屬性:ISBN、書名、作者、出版社、出版年月、價(jià)格、復(fù)本量、庫(kù)存量、分類號(hào)、內(nèi)容提要、封面照片; 在借情況的屬性:圖書ID、是否在借。其E-R模型如下圖:2、 圖書管理數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)設(shè)計(jì)在圖書管理的各個(gè)實(shí)體中,管理員命名為Administrator,主碼為“角色名”,讀者命名為TReader,主碼為“借書證號(hào)”,圖書命名為TBook,主碼為“ISBN”,在借情況命名為TBLend,主碼為“圖書ID”。實(shí)體集“讀者”和“圖書”之間通過聯(lián)系“借閱(命名為TLend)”表示借閱關(guān)系,通過聯(lián)系“歸還(命名為HLend)”表示歸還關(guān)系。所以由以上E-R模型可得到如下關(guān)系模式:Administrator(角色名,密碼,備注)TReader(借書證號(hào)、密碼、姓名、性別、出生日期、專業(yè)、借書量、照片、備注、聯(lián)系方式)TBook(ISBN、書名、作者、出版社、出版年月、價(jià)格、復(fù)本量、庫(kù)存量、分類號(hào)、內(nèi)容提要、封面照片)TBLend(圖書ID,ISBN,是否借出)TLend(借書證號(hào),ISBN,圖書ID,借出時(shí)間,應(yīng)還時(shí)間)HLend(編號(hào),借書證號(hào),ISBN,圖書ID,借書時(shí)間,還書時(shí)間)3、 圖書管理數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)設(shè)計(jì)從以上關(guān)于圖書管理數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)設(shè)計(jì)的討論可知,可以在圖書管理數(shù)據(jù)庫(kù)中創(chuàng)建讀者信息表TReader,其包含的字段有:借書證號(hào)、密碼、姓名、性別、出生日期、專業(yè)、借書量、照片、備注、聯(lián)系方式。其中,“借書證號(hào)”可以用學(xué)號(hào)表示,是8位定長(zhǎng)字符型數(shù)據(jù),使用char(8);“密碼”記錄讀者的登錄密碼,可以是20位不定長(zhǎng)字符型數(shù)據(jù),吃用varchar(20);“姓名”一般不超過4個(gè)中文字符,所以可以是8位定長(zhǎng)字符型數(shù)據(jù),使用char(8);“性別”只有“男”、“女”兩個(gè)值,所以可以使用bit類型,1表示“男”,0表示“女”;“出生日期”是日期時(shí)間類型數(shù)據(jù),使用date;“專業(yè)”使用12位定長(zhǎng)字符型數(shù)據(jù),使用char(12);“借書量”是整形數(shù)據(jù),使用int;“照片”存儲(chǔ)讀者的照片信息,使用varbinary(MAX);“備注”記錄讀者的額外信息,使用varchar(500);“聯(lián)系方式”記錄讀者的E-mail、電話、住址等信息,使用XML片段的方式存儲(chǔ)。 綜上分析可得TReader表結(jié)構(gòu): 讀者信息表(TReader)結(jié)構(gòu)字段名類型與寬度是否主鍵是否允許為空借書證號(hào)Char(8)是否密碼Varchar(20)否否姓名Char(8)否否性別Bit否否出生日期Datetime否否專業(yè)Char(12)否否借書量Int否否照片Varbinary(MAX)否是備注varchar(500)否是聯(lián)系方式XML否是 同理可得出其他表的表結(jié)構(gòu): 圖書信息表(TBook)結(jié)構(gòu)字段名類型與寬度是否主鍵是否允許為空ISBNChar(18)是否書名Char(40)否否作者Char(16)否否出版社Char(30)否否出版年月Char(10)否是價(jià)格Float否否復(fù)本量Int否否庫(kù)存量Int 否否分類號(hào)Char(18)否是內(nèi)容提要Varchar(200)否是封面照片Varbinary(MAX)否是 借閱表(TLend)結(jié)構(gòu)字段名類型與寬度是否主鍵是否允許為空借書證號(hào)Char(8)否否ISBNChar(18)否否圖書IDChar(10)是否借書時(shí)間Datetime否否應(yīng)還時(shí)間Datetime否否 還書記錄表(HLend)結(jié)構(gòu)字段名類型與寬度是否主鍵是否允許為空編號(hào)Int是否借書證號(hào)Char(8)否否ISBNChar(18)否否圖書IDChar(10)否否借書時(shí)間Datetime否否還書時(shí)間Datetime否否 圖書在借表(TBLend)結(jié)構(gòu)字段名類型與寬度是否主鍵是否允許為空?qǐng)D書IDChar(10)是否ISBNChar(18)否否是否在借Bit否否三、 圖書管理系統(tǒng)的數(shù)據(jù)庫(kù)及表的創(chuàng)鍵通過以上討論,現(xiàn)在可以創(chuàng)建圖書管理系統(tǒng)所需的數(shù)據(jù)庫(kù)及其表,T-SQL語句如下: 創(chuàng)建數(shù)據(jù)庫(kù)create database MBOOKonprimary(NAME=MBOOK,FILENAME=D:dataMBOOK.mdf,SIZE=5MB,MAXSIZE=100MB,FILEGROWTH=2MB)LOG ON(NAME=MBOOK_log,FILENAME=D:dataMBOOK_log.ldf,SIZE=1MB,FILEGROWTH=10%); 創(chuàng)建表 創(chuàng)建TReader表use MBOOKgocreate table TReader(借書證號(hào) char(6) not null primary key,密碼 varchar(20)not null,姓名 char(8) not null,性別 bit not null,出生時(shí)間 datetime not null,專業(yè) char(12) not null,借書量 int not null default 0,照片 varbinary(MAX) null,備注 varchar(200) null,聯(lián)系方式 xml null) 創(chuàng)建TBook表create table TBook(ISBN char(18) not null primary key,書名 char(40) not null,作譯者 char(16) not null,出版社 char(30) not null,出版年月 char(10) null,價(jià)格 float not null,復(fù)本量 int not null,庫(kù)存量 int not null,分類號(hào) char(18) null,內(nèi)容提要 varchar(200) null,封面照片 varbinary(MAX) null) 創(chuàng)建TLend表create table TLend(借書證號(hào) char(8) not null,ISBN char(18) not null,圖書ID char(10) not null primary key,借書時(shí)間 datetime not null,應(yīng)還時(shí)間 AS 借書時(shí)間+5) 創(chuàng)建HLend表create table HLend(編號(hào) int not null identity(1,1) primary key,借書證號(hào) char(6) not null,ISBN char(18) not null,圖書ID char(10) not null,借書時(shí)間 datetime not null,還書時(shí)間 datetime not null) 創(chuàng)建TBLend表create table TBlend(圖書ID char(10) not null primary key,ISBN char(18) not null,是否借出 bit not null) 創(chuàng)建Administrator表create table Administrator(角色名 char(20) not null primary key,密碼 varchar(20) not null,備注 varchar(100) null)四、 圖書管理數(shù)據(jù)庫(kù)表數(shù)據(jù)的完整性約束1、 圖書管理數(shù)據(jù)庫(kù)列的完整性圖書管理數(shù)據(jù)庫(kù)列的完整性包括:列的數(shù)據(jù)類型需要與定義的一致,列的為空性,默認(rèn)值,列的內(nèi)容是否符合要求等。解決列的內(nèi)容是否符合要求使用CHECK約束。在TReader表中,“借書量”的值必須大于等于0小于等于10;TBook表中庫(kù)存量必須小于等于復(fù)本量。如下:use MBOOKgoalter table TReaderadd check(借書量=0 AND 借書量=5)goalter table TBookadd constraint CK_TBook check(庫(kù)存量0begin insert into TBlend values(firstID,in_ISBN,0)set firstID=firstID+1set count=count-1endend2、 圖書借閱功能根據(jù)讀者的借書證號(hào)、圖書的ISBN、圖書ID,以及實(shí)際的圖書管理情況向圖書管理數(shù)據(jù)庫(kù)的TLend添加借書記錄,讀者的借書量和圖書的庫(kù)存量要相應(yīng)的變化。思路如下圖:命令如下:set out_str=圖書庫(kù)存量為0return 0end/* 判斷是否借過該書 */if in_ISBN in(select ISBN from TLend where 借書證號(hào)=in_ReaderID)beginset out_str=該讀者已經(jīng)借過該書return 0end/* 判斷是否已經(jīng)被借 */if exists(select* from TLend where 圖書ID=in_BookID)beginset out_str=該圖書ID存在return 0endbegin tran /*開始一個(gè)事務(wù)*/*插入借書記錄*/INSERT INTO TLend (借書證號(hào),ISBN,圖書ID,借書時(shí)間)values(in_ReaderID,in_ISBN,in_BookID,GETDATE()if ERROR0beginrollback transet out_str=執(zhí)行過程中遇到錯(cuò)誤return 0end/*修改借書量*/update TReader set 借書量=借書量+1 where 借書證號(hào)=in_ReaderIDif ERROR0beginrollback transet out_str=執(zhí)行過程中遇到錯(cuò)誤return 0end/*修改庫(kù)存量*/update TBook set 庫(kù)存量=庫(kù)存量-1 where ISBN=in_ISBNif ERROR0beginrollback transet out_str=執(zhí)行過程中遇到錯(cuò)誤return 0end/*修改圖書借出情況*/update TBlend set 是否借出=1 where 圖書ID=in_BookIDif ERROR=0begincommit transet out_str=借書成功return 0endelseif ERROR0beginrollback transet out_str=執(zhí)行過程中遇到錯(cuò)誤return 0endend3、 同步刪除圖書借出情況功能在TBook表中刪除一條圖書記錄時(shí),同時(shí)刪除TBLend表中與該書相關(guān)的記錄。該功能使用在TBook表中定義刪除觸發(fā)器的方法實(shí)現(xiàn)。觸發(fā)器名稱為Book_delete,觸發(fā)器類型為DML,在對(duì)TBook表進(jìn)行了DELETE操作后激活。如下:use MBOOKgocreate trigger TBook_delete on TBookafter deleteasdelete from TBlend where ISBN=(select ISBN FROM deleted)4、 圖書歸還功能當(dāng)讀者歸還圖書時(shí),即刪除借閱表TLend中的一條記錄時(shí),讀者信息表中該讀者的借書量減1,圖書信息表中該書的庫(kù)存量加1,圖書在借情況的是否借出為否,還書記錄表添加一條該讀者的還書記錄。該功能用在TLend表定義觸發(fā)器的方法實(shí)現(xiàn),觸發(fā)器名稱為TLend_delete,觸發(fā)器類型為DML,在對(duì)TLend進(jìn)行操作后激活。如下:create trigger TLend_delete on TLendafter deleteasbegindeclare ReaderID char(6),ISBN char(18),BookID char(10),LTime datetimedeclare cur_return cursorforselect 借書證號(hào),ISBN,圖書ID,借書時(shí)間 from deletedopen cur_returnfetch next from cur_return into ReaderId,ISBN,BookID,LTimewhile fetch_status=0beginupdate TReader set 借書量=借書量-1 where 借書證號(hào)=ReaderIDupdat

溫馨提示

  • 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. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論