




已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
圖書(shū)管理系統(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)行的效率。所以圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)的設(shè)計(jì)師圖書(shū)管理系統(tǒng)中首要完成的工作。本系統(tǒng)開(kāi)發(fā)平臺(tái)Visual Studio 2010,Microsoft SQL Server 2008,Windows 7,編程語(yǔ)言為C#。一、 圖書(shū)管理系統(tǒng)功能分析圖書(shū)管理系統(tǒng)可以供學(xué)校,書(shū)店等的管理員使用,用于日常的讀者管理,圖書(shū)管理,借書(shū),還書(shū)等操作,另外還可以供讀者查詢圖書(shū)信息及其借閱情況等。本系統(tǒng)主要功能包括登錄,圖書(shū)查詢、借閱查詢、讀者管理、圖書(shū)管理、借閱管理等功能模塊。1、 登錄功能圖書(shū)管理系統(tǒng)可供讀者和管理員使用,所以需要設(shè)置登錄者的身份,并賦予不同身分的登錄者以不同的權(quán)限,讀者只能查看借閱情況和圖書(shū)館藏情況,管理員分三類:讀者管理員、圖書(shū)管理員、超級(jí)管理員。讀者管理員只能進(jìn)行讀者管理操作,圖書(shū)管理員只能進(jìn)行圖書(shū)管理操作,超級(jí)管理員可以進(jìn)行圖書(shū)查詢、借書(shū)查詢、讀者管理、圖書(shū)管理、借書(shū)管理、還書(shū)管理、數(shù)據(jù)備份等操作。2、 讀者管理讀者主要有借書(shū)證號(hào)、密碼、姓名、性別、出生日期、專業(yè)、借書(shū)量、照片、聯(lián)系方式和備注屬性。借書(shū)證號(hào)是唯一的,借書(shū)量不能超過(guò)10。只有讀者管理員和超級(jí)管理員才能進(jìn)行讀者管理,包括添加,修改,刪除。在修改讀者信息時(shí),不能修改借書(shū)證號(hào)和借書(shū)量,刪除讀者信息時(shí),如果該讀者借過(guò)書(shū)尚未歸還則不能刪除讀者。3、 圖書(shū)管理圖書(shū)主要有ISBN、書(shū)名、作者、出版社、出版年月、價(jià)格、復(fù)本量、庫(kù)存量、分類號(hào)、內(nèi)容提要和封面等屬性。每一種圖書(shū)的ISBN都是唯一的,庫(kù)存量不能大于復(fù)本量。只有圖書(shū)管理員和超級(jí)管理員才能進(jìn)行圖書(shū)管理,其操作包括添加圖書(shū)、修改圖書(shū)、刪除圖書(shū)。添加新書(shū)時(shí),系統(tǒng)自動(dòng)生成每本圖書(shū)的ID及在借情況,再借情況默認(rèn)為否。刪除圖書(shū)時(shí)如果該圖書(shū)已經(jīng)借出則不允許刪除圖書(shū)記錄。4、 圖書(shū)查詢用戶可以根據(jù)圖書(shū)ISBN、書(shū)名、作者、出版社進(jìn)行模糊查詢,查詢結(jié)果將分頁(yè)顯示。5、 借書(shū)管理借書(shū)管理只有超級(jí)管理員才能進(jìn)行。用戶可以輸入讀者的借書(shū)證號(hào)查看其借書(shū)記錄,確認(rèn)讀者沒(méi)有在借相同的ISBN的書(shū),然后輸入要借的圖書(shū)的ISBN、圖書(shū)ID,判斷圖書(shū)是否存在、是否再借等情況、如果可借則完成結(jié)束操作,借書(shū)時(shí)間登記為系統(tǒng)當(dāng)前時(shí)間,規(guī)定還書(shū)期限為60天,同時(shí)系統(tǒng)自動(dòng)將讀者的借書(shū)量加1,圖書(shū)庫(kù)存量減1,圖書(shū)的再借情況為再借。6、 借書(shū)查詢一讀者身份登錄系統(tǒng)時(shí),用戶點(diǎn)擊借書(shū)查詢模塊可以查看自己的借書(shū)情況。以管理員身份登錄時(shí),用戶輸入讀者的借書(shū)證號(hào)也可以查看該讀者的結(jié)束情況。7、 還書(shū)管理還書(shū)操作只能由超級(jí)管理員來(lái)進(jìn)行。輸入讀者的借書(shū)證號(hào)即可查看讀者的現(xiàn)有的借書(shū)記錄。用戶輸入圖書(shū)ID后單擊還書(shū)按鈕即可進(jìn)行還書(shū)操作,與此同時(shí),系統(tǒng)自動(dòng)將讀者的借書(shū)量減1,圖書(shū)庫(kù)存量加1,圖書(shū)在借情況為否,并根據(jù)刪除的圖書(shū)記錄自動(dòng)生成一條還書(shū)記錄。8、 數(shù)據(jù)備份超級(jí)管理員可以指定一個(gè)后綴名為.bak的備份文件,然后將圖書(shū)管理數(shù)據(jù)庫(kù)的所有數(shù)據(jù)備份為該文件。二、 圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)通過(guò)以上的功能分析,現(xiàn)階段可以進(jìn)行圖書(shū)管理數(shù)據(jù)庫(kù)的設(shè)計(jì)。1、 圖書(shū)管理數(shù)據(jù)庫(kù)的E-R模型通過(guò)理解圖書(shū)管理系統(tǒng)所要實(shí)現(xiàn)的功能,可以得出圖書(shū)管理數(shù)據(jù)庫(kù)包括以下實(shí)體:管理員、讀者、圖書(shū)、在借情況。 管理員的屬性:角色名、密碼、備注; 讀者的屬性:借書(shū)證號(hào)、密碼、姓名、性別、出生日期、專業(yè)、借書(shū)量、照片、備注、聯(lián)系方式; 圖書(shū)的屬性:ISBN、書(shū)名、作者、出版社、出版年月、價(jià)格、復(fù)本量、庫(kù)存量、分類號(hào)、內(nèi)容提要、封面照片; 在借情況的屬性:圖書(shū)ID、是否在借。其E-R模型如下圖:2、 圖書(shū)管理數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)設(shè)計(jì)在圖書(shū)管理的各個(gè)實(shí)體中,管理員命名為Administrator,主碼為“角色名”,讀者命名為T(mén)Reader,主碼為“借書(shū)證號(hào)”,圖書(shū)命名為T(mén)Book,主碼為“ISBN”,在借情況命名為T(mén)BLend,主碼為“圖書(shū)ID”。實(shí)體集“讀者”和“圖書(shū)”之間通過(guò)聯(lián)系“借閱(命名為T(mén)Lend)”表示借閱關(guān)系,通過(guò)聯(lián)系“歸還(命名為HLend)”表示歸還關(guān)系。所以由以上E-R模型可得到如下關(guān)系模式:Administrator(角色名,密碼,備注)TReader(借書(shū)證號(hào)、密碼、姓名、性別、出生日期、專業(yè)、借書(shū)量、照片、備注、聯(lián)系方式)TBook(ISBN、書(shū)名、作者、出版社、出版年月、價(jià)格、復(fù)本量、庫(kù)存量、分類號(hào)、內(nèi)容提要、封面照片)TBLend(圖書(shū)ID,ISBN,是否借出)TLend(借書(shū)證號(hào),ISBN,圖書(shū)ID,借出時(shí)間,應(yīng)還時(shí)間)HLend(編號(hào),借書(shū)證號(hào),ISBN,圖書(shū)ID,借書(shū)時(shí)間,還書(shū)時(shí)間)3、 圖書(shū)管理數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)設(shè)計(jì)從以上關(guān)于圖書(shū)管理數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)設(shè)計(jì)的討論可知,可以在圖書(shū)管理數(shù)據(jù)庫(kù)中創(chuàng)建讀者信息表TReader,其包含的字段有:借書(shū)證號(hào)、密碼、姓名、性別、出生日期、專業(yè)、借書(shū)量、照片、備注、聯(lián)系方式。其中,“借書(shū)證號(hào)”可以用學(xué)號(hào)表示,是8位定長(zhǎng)字符型數(shù)據(jù),使用char(8);“密碼”記錄讀者的登錄密碼,可以是20位不定長(zhǎng)字符型數(shù)據(jù),吃用varchar(20);“姓名”一般不超過(guò)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ū)量”是整形數(shù)據(jù),使用int;“照片”存儲(chǔ)讀者的照片信息,使用varbinary(MAX);“備注”記錄讀者的額外信息,使用varchar(500);“聯(lián)系方式”記錄讀者的E-mail、電話、住址等信息,使用XML片段的方式存儲(chǔ)。 綜上分析可得TReader表結(jié)構(gòu): 讀者信息表(TReader)結(jié)構(gòu)字段名類型與寬度是否主鍵是否允許為空借書(shū)證號(hào)Char(8)是否密碼Varchar(20)否否姓名Char(8)否否性別Bit否否出生日期Datetime否否專業(yè)Char(12)否否借書(shū)量Int否否照片Varbinary(MAX)否是備注varchar(500)否是聯(lián)系方式XML否是 同理可得出其他表的表結(jié)構(gòu): 圖書(shū)信息表(TBook)結(jié)構(gòu)字段名類型與寬度是否主鍵是否允許為空ISBNChar(18)是否書(shū)名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)字段名類型與寬度是否主鍵是否允許為空借書(shū)證號(hào)Char(8)否否ISBNChar(18)否否圖書(shū)IDChar(10)是否借書(shū)時(shí)間Datetime否否應(yīng)還時(shí)間Datetime否否 還書(shū)記錄表(HLend)結(jié)構(gòu)字段名類型與寬度是否主鍵是否允許為空編號(hào)Int是否借書(shū)證號(hào)Char(8)否否ISBNChar(18)否否圖書(shū)IDChar(10)否否借書(shū)時(shí)間Datetime否否還書(shū)時(shí)間Datetime否否 圖書(shū)在借表(TBLend)結(jié)構(gòu)字段名類型與寬度是否主鍵是否允許為空?qǐng)D書(shū)IDChar(10)是否ISBNChar(18)否否是否在借Bit否否三、 圖書(shū)管理系統(tǒng)的數(shù)據(jù)庫(kù)及表的創(chuàng)鍵通過(guò)以上討論,現(xiàn)在可以創(chuàng)建圖書(shū)管理系統(tǒng)所需的數(shù)據(jù)庫(kù)及其表,T-SQL語(yǔ)句如下: 創(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(借書(shū)證號(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,借書(shū)量 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,書(shū)名 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(借書(shū)證號(hào) char(8) not null,ISBN char(18) not null,圖書(shū)ID char(10) not null primary key,借書(shū)時(shí)間 datetime not null,應(yīng)還時(shí)間 AS 借書(shū)時(shí)間+5) 創(chuàng)建HLend表create table HLend(編號(hào) int not null identity(1,1) primary key,借書(shū)證號(hào) char(6) not null,ISBN char(18) not null,圖書(shū)ID char(10) not null,借書(shū)時(shí)間 datetime not null,還書(shū)時(shí)間 datetime not null) 創(chuàng)建TBLend表create table TBlend(圖書(shū)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ū)管理數(shù)據(jù)庫(kù)表數(shù)據(jù)的完整性約束1、 圖書(shū)管理數(shù)據(jù)庫(kù)列的完整性圖書(shū)管理數(shù)據(jù)庫(kù)列的完整性包括:列的數(shù)據(jù)類型需要與定義的一致,列的為空性,默認(rèn)值,列的內(nèi)容是否符合要求等。解決列的內(nèi)容是否符合要求使用CHECK約束。在TReader表中,“借書(shū)量”的值必須大于等于0小于等于10;TBook表中庫(kù)存量必須小于等于復(fù)本量。如下:use MBOOKgoalter table TReaderadd check(借書(shū)量=0 AND 借書(shū)量=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、 圖書(shū)借閱功能根據(jù)讀者的借書(shū)證號(hào)、圖書(shū)的ISBN、圖書(shū)ID,以及實(shí)際的圖書(shū)管理情況向圖書(shū)管理數(shù)據(jù)庫(kù)的TLend添加借書(shū)記錄,讀者的借書(shū)量和圖書(shū)的庫(kù)存量要相應(yīng)的變化。思路如下圖:命令如下:set out_str=圖書(shū)庫(kù)存量為0return 0end/* 判斷是否借過(guò)該書(shū) */if in_ISBN in(select ISBN from TLend where 借書(shū)證號(hào)=in_ReaderID)beginset out_str=該讀者已經(jīng)借過(guò)該書(shū)return 0end/* 判斷是否已經(jīng)被借 */if exists(select* from TLend where 圖書(shū)ID=in_BookID)beginset out_str=該圖書(shū)ID存在return 0endbegin tran /*開(kāi)始一個(gè)事務(wù)*/*插入借書(shū)記錄*/INSERT INTO TLend (借書(shū)證號(hào),ISBN,圖書(shū)ID,借書(shū)時(shí)間)values(in_ReaderID,in_ISBN,in_BookID,GETDATE()if ERROR0beginrollback transet out_str=執(zhí)行過(guò)程中遇到錯(cuò)誤return 0end/*修改借書(shū)量*/update TReader set 借書(shū)量=借書(shū)量+1 where 借書(shū)證號(hào)=in_ReaderIDif ERROR0beginrollback transet out_str=執(zhí)行過(guò)程中遇到錯(cuò)誤return 0end/*修改庫(kù)存量*/update TBook set 庫(kù)存量=庫(kù)存量-1 where ISBN=in_ISBNif ERROR0beginrollback transet out_str=執(zhí)行過(guò)程中遇到錯(cuò)誤return 0end/*修改圖書(shū)借出情況*/update TBlend set 是否借出=1 where 圖書(shū)ID=in_BookIDif ERROR=0begincommit transet out_str=借書(shū)成功return 0endelseif ERROR0beginrollback transet out_str=執(zhí)行過(guò)程中遇到錯(cuò)誤return 0endend3、 同步刪除圖書(shū)借出情況功能在TBook表中刪除一條圖書(shū)記錄時(shí),同時(shí)刪除TBLend表中與該書(shū)相關(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、 圖書(shū)歸還功能當(dāng)讀者歸還圖書(shū)時(shí),即刪除借閱表TLend中的一條記錄時(shí),讀者信息表中該讀者的借書(shū)量減1,圖書(shū)信息表中該書(shū)的庫(kù)存量加1,圖書(shū)在借情況的是否借出為否,還書(shū)記錄表添加一條該讀者的還書(shū)記錄。該功能用在TLend表定義觸發(fā)器的方法實(shí)現(xiàn),觸發(fā)器名稱為T(mén)Lend_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 借書(shū)證號(hào),ISBN,圖書(shū)ID,借書(shū)時(shí)間 from deletedopen cur_returnfetch next from cur_return into ReaderId,ISBN,BookID,LTimewhile fetch_status=0beginupdate TReader set 借書(shū)量=借書(shū)量-1 where 借書(shū)證號(hào)=ReaderIDupdat
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 從0到1建立績(jī)效管理體系全流程
- 車間布局詳解
- 2024年高考語(yǔ)文試題分類匯編:文學(xué)類文本閱讀(含答案)
- 醫(yī)院用語(yǔ)禮儀培訓(xùn)
- 《具體土地開(kāi)墾項(xiàng)目名稱土地開(kāi)墾項(xiàng)目可行性研究報(bào)告》
- 設(shè)備維修人員工作總結(jié)
- 消防巡查培訓(xùn)
- 商務(wù)藍(lán)紫色培訓(xùn)
- 滅火器使用培訓(xùn)
- 中班健康車輪滾滾主題活動(dòng)
- 2025屆新高三英語(yǔ)組高效備考方法分享心得體會(huì)
- 中南財(cái)經(jīng)政法大學(xué)《編譯原理》2023-2024學(xué)年第二學(xué)期期末試卷
- 高考報(bào)考志愿協(xié)議書(shū)
- 湖南中醫(yī)藥大學(xué)招聘考試真題2024
- 玉環(huán)金鑫塑膠有限公司年產(chǎn)350萬(wàn)口不粘鍋生產(chǎn)線技改項(xiàng)目環(huán)境影響報(bào)告書(shū)
- 2025AI時(shí)代健康睡眠白皮書(shū)
- MicroLED顯示技術(shù)產(chǎn)業(yè)化項(xiàng)目可行性研究報(bào)告(范文模板)
- 2025浙江中考:生物必背知識(shí)點(diǎn)
- 2025年國(guó)家開(kāi)放大學(xué)《會(huì)計(jì)案例分析》形成性考核123答案+終結(jié)性考核答案
- 股權(quán)質(zhì)押融資與境外投資合作協(xié)議
- 汽油清凈性評(píng)價(jià) 汽油機(jī)進(jìn)氣閥沉積物模擬試驗(yàn)法 編制說(shuō)明
評(píng)論
0/150
提交評(píng)論