【正文】
為外鍵參照其他表中主鍵之外,均設(shè)為int,且作為標(biāo)識(shí)和索引,日期均為datetime 類型,金額及價(jià)格均為money類型,其他均為字符串型,大小根據(jù)實(shí)際設(shè)定,有些屬性具有默認(rèn)值。第5章 詳細(xì)設(shè)計(jì)輸入讀者編號(hào)輸入書籍編號(hào)不存在、注銷、掛失不在庫、注銷、不外借是超過總借書上限是否超過每類書借書上限是借過同一本書否是是否當(dāng)天已借過否否借書失敗第6章 編碼借書成功 8圖61 借書存儲(chǔ)過程實(shí)現(xiàn):CREATE PROCEDURE @bookID int , @readerID int , @duringHoliday char(4), @continueborrow int , @operatorID int , @memo char(50), @result char(80)OUTPUT AS declare @number int declare @current_borrow_num int declare @current_bookTyoe_borrow_num int declare @MAXNUM int declare @BookTypeMAXNUM int declare @readerType int declare @readerMAXDays int declare @bookType int declare @bookIndex int SET @number=(SELECT COUNT(*)FROM PersonWHERE =@readerID AND =39。否39。 AND =39。否39。)if(@number!=1)begin SET @result=39。讀者編號(hào)不存在或者已注銷和掛失!39。return。end SET @number=(SELECT COUNT(*)FROM Book WHERE =@bookID AND =39。否39。 AND =39。否39。 AND =39。是39。)if(@number!=1)begin SET @result= 39。該書不存在或已注銷或不對(duì)外借或已借出!39。return。end SET @current_borrow_num=(SELECT COUNT(*)FROM BorrowInfo WHERE =@readerID)SET @readerType=(SELECT Persontype FROM Person WHERE =@readerID)SET @MAXNUM=(SELECT BookNumber FROM PersonType WHERE =@readerType)SET @readerMAXDays=獲取應(yīng)歸還的天數(shù)(SELECT BookDays FROM PersonType WHERE =@readerType)IF(@duringHoliday=39。是39。)SET @readerMAXDays=@readerMAXDays+60。經(jīng)過一個(gè)假期,天數(shù)應(yīng)加60 if(@current_borrow_num=@MAXNUM)借書已達(dá)最大值 begin SET @result= 39。借書已達(dá)最大值,不能再借!39。return。end SET @bookType =(SELECT BookType FROM Book WHERE =@bookID)SET @BookTypeMAXNUM=(SELECT BorrowNumber FROM BookType WHERE =@bookType)SET @current_bookTyoe_borrow_num=(SELECT COUNT(*)FROM BorrowInfo ,Book WHERE = AND =@bookType)IF(@current_bookTyoe_borrow_num=@BookTypeMAXNUM)本類數(shù)已超借閱本數(shù)限制 begin SET @result= 39。 本類數(shù)已超借閱本數(shù)限制!39。return。end SET @bookIndex=(SELECT BookIndex FROM Book WHERE =@bookID)SET @number=(SELECT COUNT(*)FROM BorrowInfo,Book WHERE = AND =@bookIndex)IF(@number=1)已經(jīng)借過同一本書!begin SET @result= 39。已經(jīng)借過同一本書!39。return。end BEGIN TRAN INSERT INTO BorrowInfo VALUES(@readerID,@bookID,GETDATE(), @duringHoliday,@continueborrow ,DATEADD(day,@readerMAXDays,GETDATE()), @operatorID,@memo)。UPDATE Book SET IsBorrowed=39。是39。 , BookBorrowTimes=BookBorrowTimes+1 WHERE BookID=@bookID。COMMIT TRAN SET @result= 39。借書成功!39。結(jié)論本系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)方面由于調(diào)研充分,經(jīng)歷時(shí)間較長(zhǎng),設(shè)計(jì)結(jié)果較為滿意,在理論上能夠向上支持較為完整的事務(wù)約束,但由于編碼時(shí)間較短加之編碼時(shí)編碼人員經(jīng)驗(yàn)畢竟十分有限,很多功能也只是望洋興嘆,尚未有能力實(shí)現(xiàn),本系統(tǒng)只能提供圖書和讀者信息的多功能查詢和帶有很少事務(wù)約束的借書、還書功能以及基本信息的維護(hù)模塊。像對(duì)圖書流通率、分類流通率、流通變化趨勢(shì)的統(tǒng)計(jì)分析和圖表顯示有待實(shí)現(xiàn),還有下一步應(yīng)該實(shí)現(xiàn)更具現(xiàn)實(shí)意義的借書、還書處理以及罰款功能。學(xué)習(xí)體會(huì)本次課程設(shè)計(jì)強(qiáng)度之大(每天從早到晚)、任務(wù)之重(從設(shè)計(jì)到實(shí)現(xiàn)),都是以前沒有過的,所幸,課程設(shè)計(jì)本身并不難,每一步都是有章可循且每一個(gè)人都有能力實(shí)現(xiàn)相應(yīng)的部分。一個(gè)數(shù)據(jù)庫系統(tǒng)的實(shí)現(xiàn),絕對(duì)是全體人員共同團(tuán)結(jié)、努力協(xié)作的結(jié)果。本次課程設(shè)計(jì)訓(xùn)練,讓我大略“體會(huì)”(或者用想象更貼切)了軟件開發(fā)人員所經(jīng)歷的苦與樂,使我對(duì)今后自己從事的工作有了一個(gè)基本的體會(huì)和感受,也算是提前“打了一個(gè)預(yù)防針”吧。同時(shí)作為本組組長(zhǎng),我負(fù)責(zé)各個(gè)成員的具體分工。分工合作實(shí)際上已是現(xiàn)代社會(huì)最基本的特征,各個(gè)組織在各種現(xiàn)代社會(huì)活動(dòng)中,都有自己的明確分工。一個(gè)好的組長(zhǎng),應(yīng)該能夠充分調(diào)動(dòng)各個(gè)本組成員的積極性和參與性,使他們都能夠充分發(fā)揮自己在系統(tǒng)開發(fā)中的作用,清楚知道每一個(gè)人的強(qiáng)項(xiàng)和不足,“因地制宜”,確定不同的分工。待基本的分工確定之后,組長(zhǎng)應(yīng)該隨時(shí)掌握各部分的進(jìn)展?fàn)顩r,適時(shí)給予相應(yīng)的調(diào)整。同時(shí),組長(zhǎng)應(yīng)把握大局,不斷優(yōu)化和調(diào)整系統(tǒng)的結(jié)構(gòu)和布局。而我顯然還做得有待提高。致謝趙海霞老師、魏汪洋老師、王志強(qiáng)老師不辭辛苦給予我們上機(jī)指導(dǎo),特此感謝!Special thank to。那些在課程設(shè)計(jì)中給予過我們組幫助的同學(xué)們!參考文獻(xiàn)【1】Thomas ,Carolyn , 北京:機(jī)械出版社,2005,1 【2】王珊,北京:高等教育出版社 2006,5