數(shù)據(jù)庫課程設(shè)計(jì)之圖書管理系統(tǒng)_第1頁
已閱讀1頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  《數(shù)據(jù)庫類課程設(shè)計(jì)》</p><p><b>  系統(tǒng)開發(fā)報(bào)告</b></p><p>  學(xué) 號(hào):   </p><p>  姓 名: </p><p>  題 目:  圖書借閱管理

2、    </p><p>  指導(dǎo)教師:     </p><p>  提交時(shí)間:  2013年6月1日     </p><p><b>  計(jì)算機(jī)科學(xué)與應(yīng)用系</b></p><p><b>  目 錄</b></p><p&g

3、t;  第一章 需求分析1</p><p>  第二章 系統(tǒng)功能設(shè)計(jì)2</p><p>  2.1系統(tǒng)功能模塊圖</p><p>  第三章 數(shù)據(jù)庫設(shè)計(jì)3</p><p>  3.1 數(shù)據(jù)庫設(shè)計(jì)3</p><p>  3.2數(shù)據(jù)表設(shè)計(jì)5</p><p>  3.3 數(shù)據(jù)庫編程7&l

4、t;/p><p>  第四章 功能模塊的創(chuàng)建8</p><p>  4.1創(chuàng)建向讀者表插入數(shù)據(jù)的存儲(chǔ)過程8</p><p>  4.2創(chuàng)建向圖書表中插入數(shù)據(jù)的存儲(chǔ)過程9</p><p>  4.3創(chuàng)建實(shí)現(xiàn)還書的存儲(chǔ)過程10</p><p>  4.4創(chuàng)建實(shí)現(xiàn)借書的存儲(chǔ)過程11</p><p&

5、gt;  4.5建立是否超期表值函數(shù)13</p><p>  4.6查詢模塊14</p><p><b>  結(jié)束語18</b></p><p><b>  參考文獻(xiàn)19</b></p><p><b>  第一章 需求分析</b></p><p&g

6、t;  系統(tǒng)功能分析階段的任務(wù)就是確定該系統(tǒng)要解決的問題及其具體要求。需要通過與用戶的交流和溝通明確對(duì)系統(tǒng)的功能要求,最終列出系統(tǒng)可以實(shí)現(xiàn)的功能由用戶確認(rèn)。</p><p><b>  1.總體方案</b></p><p>  (1) 圖書資料的管理</p><p>  圖書管理員將采購的圖書入庫分類處理,同時(shí)建立相關(guān)的圖書資料信息,如果該書已

7、有,則修改現(xiàn)有書本等于原有書本數(shù)加上新增書本數(shù)。如果圖書損壞也修改圖書資料信息。如果圖書出館,則刪除相關(guān)的圖書資料信息。</p><p>  (2) 讀者資料管理</p><p>  系統(tǒng)管理員要為讀者辦理相應(yīng)的圖書證,讀者填寫登記表包括學(xué)號(hào)、姓名、性別基本信息。讀者申請退證時(shí),可以刪除改讀者的基本信息。</p><p><b>  (3) 借書操作<

8、;/b></p><p>  讀者把借閱證和想借閱的圖書交給圖書管理員,管理員進(jìn)行審核。如該讀者是否有過期未還的圖書,是否借閱圖書已經(jīng)超過五本,有上述情況之一則借閱不成功。否則借閱成功。讀者只可在該本書尚未超期的情況下才可以進(jìn)行續(xù)借,否則借閱不成功。</p><p><b>  (4) 還書操作</b></p><p>  讀者把借閱證及

9、要還的圖書交給圖書管理員,由他進(jìn)行審核,如該圖書有逾期則通知該讀者交罰款。否則,圖書交由圖書管理員放回書庫,并修改圖書,讀者借書信息表。</p><p>  第二章 系統(tǒng)功能設(shè)計(jì)</p><p>  通過通過對(duì)上述各項(xiàng)功能的分析、分類、綜合,按照模塊化程序設(shè)計(jì)的要求,得到如下圖所示的功能模塊圖。</p><p>  圖 2-1系統(tǒng)功能模塊圖</p>&

10、lt;p><b>  第三章 數(shù)據(jù)庫設(shè)計(jì)</b></p><p>  數(shù)據(jù)庫在一個(gè)管理信息系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)的好壞將直接影響到應(yīng)用系統(tǒng)操作效率已經(jīng)能否保證數(shù)據(jù)的一致性、完成性和安全性。</p><p><b>  3.1 數(shù)據(jù)庫設(shè)計(jì)</b></p><p>  根據(jù)圖書管理系統(tǒng)的功能要求,通過分析系

11、統(tǒng)要設(shè)計(jì)的相關(guān)實(shí)體一集要收集、存儲(chǔ)和操縱數(shù)據(jù)信息,得到如下圖1234所示的系統(tǒng)E-R圖。</p><p>  根據(jù)系統(tǒng)E-R圖得到以下關(guān)系模式。</p><p>  ·讀者基本信息(讀者號(hào),姓名,性別,借書數(shù)量)</p><p>  ·圖書基本信息(圖書號(hào),書名,類型,作者,譯者,出版社,內(nèi)容,館藏?cái)?shù),已借數(shù))</p><p&

12、gt;  ·還書基本信息(讀者號(hào),書號(hào),還書數(shù)量,還書日期)</p><p>  ·借書基本信息(讀者號(hào),書號(hào),書名,借書數(shù)量,借書時(shí)間,應(yīng)還時(shí)間)</p><p>  圖1 3-1 讀者E-R圖</p><p>  圖2 3-1圖書 E-R圖</p><p>  圖3 3-1 還書E-R圖</p><

13、p>  圖4 3-1 借書E-R圖</p><p><b>  3.2數(shù)據(jù)表設(shè)計(jì)</b></p><p>  根據(jù)關(guān)系模式,確定要建立的數(shù)據(jù)庫和表。給表中添加說明,并建立主鍵和外鍵如下圖5678所示:</p><p><b>  “讀者”表</b></p><p><b>  圖5

14、“讀者”表</b></p><p><b>  “圖書”表:</b></p><p><b>  圖 6“圖書”表</b></p><p><b>  “還書”表</b></p><p><b>  圖 7“還書”表</b></p>

15、<p><b>  “借書”表:</b></p><p><b>  圖 8“借書”表</b></p><p>  然后給圖書表中添加數(shù)據(jù):</p><p>  /*向圖書表中插入數(shù)據(jù)*/</p><p>  USE bookmg</p><p><b&g

16、t;  GO</b></p><p><b>  INSERT 圖書</b></p><p>  VALUES ('540541903','子不語壹','漫畫','夏達(dá)','NULL','新世紀(jì)出版社','NULL','18.00'

17、;,'6',’0’)</p><p><b>  GO</b></p><p><b>  INSERT 圖書</b></p><p>  VALUES ('540541904','子不語貳','漫畫','夏達(dá)','NULL',

18、'新世紀(jì)出版社','NULL','18.00','6',’0’)</p><p><b>  GO</b></p><p><b>  INSERT 圖書</b></p><p>  VALUES ('540541905','子不語叁&

19、#39;,'漫畫','夏達(dá)','NULL','新世紀(jì)出版社','NULL','18.00','6',’0’)</p><p><b>  GO</b></p><p><b>  INSERT 圖書</b></p><

20、;p>  VALUES ('540541906','子不語肆','漫畫','夏達(dá)','NULL','新世紀(jì)出版社','NULL','18.00','6',’0’)</p><p><b>  GO</b></p><p>

21、;<b>  INSERT 圖書</b></p><p>  VALUES ('540541907','子不語伍','漫畫','夏達(dá)','NULL','新世紀(jì)出版社','NULL','18.00','6',’0’)</p><p&

22、gt;<b>  GO</b></p><p><b>  INSERT 圖書</b></p><p>  VALUES ('540541908','子不語陸','漫畫','夏達(dá)','NULL','新世紀(jì)出版社','NULL','

23、;18.00','6',’0’)</p><p>  3.3 數(shù)據(jù)庫編程 </p><p>  以下是各個(gè)表的創(chuàng)建代碼:</p><p>  /************創(chuàng)建各個(gè)表*************************/</p><p>  CREATE TABLE 讀者</p><p&g

24、t;<b>  (</b></p><p>  readerid varchar(9) NOT NULL PRIMARY KEY,</p><p>  readername varchar(20) NOT NULL,</p><p>  readersex varchar(10) NOT NULL,</p><p>  

25、booknum SMALLINT CHECK(borrownum>=0 AND borrownum<=5)</p><p><b>  )</b></p><p>  CREATE TABLE 圖書</p><p><b>  (</b></p><p>  bookid varchar

26、(9) NOT NULL PRIMARY KEY,</p><p>  bookname varchar(40)NOT NULL,</p><p>  booktype varchar(20)NOT NULL,</p><p>  bookauther varchar(20) NOT NULL,</p><p>  booktrslator

27、varchar(20) NULL,</p><p>  bookpress varchar(20)NOT NULL,</p><p>  bookcontent varchar(50)NULL,</p><p>  bookprice varchar(10)NOT NULL,</p><p>  noborrow SMALLINT CHECK

28、(noborrow>=0),</p><p>  haveborrow SMALLINT CHECK(haveborrow>=0)</p><p><b>  )</b></p><p>  CREATE TABLE 還書</p><p><b>  (</b></p>&

29、lt;p>  readerid varchar(9) NOT NULL,</p><p>  bookid varchar(9) NOT NULL,</p><p>  booknum SMALLINT CHECK(booknum>=0 AND booknum<=5),</p><p>  inputdate datetime ,</p>

30、;<p>  FOREIGN KEY (readerid) REFERENCES 讀者(readerid),</p><p>  FOREIGN KEY (bookid) REFERENCES 圖書(bookid)</p><p><b>  )</b></p><p>  CREATE TABLE 借書</p>&

31、lt;p><b>  (</b></p><p>  readerid varchar(9) NOT NULL,</p><p>  bookid varchar(9) NOT NULL,</p><p>  bookname varchar(40) NOT NULL,</p><p>  booknum SMAL

32、LINT CHECK(booknum>=0 AND booknum<=5),</p><p>  outputdate datetime NULL,</p><p>  shoulddate datetime NULL,</p><p>  FOREIGN KEY(readerid) REFERENCES 讀者(readerid),</p>

33、<p>  FOREIGN KEY(bookid) REFERENCES 圖書(bookid)</p><p><b>  )</b></p><p>  第四章 功能模塊的創(chuàng)建</p><p>  4.1 創(chuàng)建向讀者表插入數(shù)據(jù)的存儲(chǔ)過程</p><p>  /*******創(chuàng)建存儲(chǔ)過程向讀者表中插入數(shù)據(jù)

34、************/</p><p>  USE bookmg</p><p><b>  GO </b></p><p>  CREATE PROCEDURE reader_insert</p><p>  @elem1 varchar(9),</p><p>  @elem2 varch

35、ar(20),</p><p>  @elem3 varchar(10),</p><p>  @elem4 smallint</p><p><b>  AS</b></p><p><b>  BEGIN </b></p><p>  insert into 讀者(rea

36、derid,readername,readersex,borrownum)</p><p><b>  values </b></p><p><b>  (</b></p><p>  @elem1,@elem2,@elem3,@elem4</p><p><b>  )</b&g

37、t;</p><p><b>  END</b></p><p>  /********讀者表中插入實(shí)例**********/</p><p>  USE bookmg</p><p><b>  GO</b></p><p>  EXEC reader_insert 

38、9;111007131','吳書敏','男','0'</p><p>  圖9讀者表中插入實(shí)例</p><p>  4.2 創(chuàng)建向圖書表中插入數(shù)據(jù)的存儲(chǔ)過程</p><p>  /***************通過存儲(chǔ)過程向圖書表中插入數(shù)據(jù)******************/</p><p

39、>  USE bookmg</p><p><b>  GO </b></p><p>  CREATE PROCEDURE book_insert</p><p>  @elem1 varchar(9),</p><p>  @elem2 varchar(40),</p><p>  @e

40、lem3 varchar(20),</p><p>  @elem4 varchar(20),</p><p>  @elem5 varchar(20),</p><p>  @elem6 varchar(20),</p><p>  @elem7 varchar(50),</p><p>  @elem8 varch

41、ar(10),</p><p>  @elem9 smallint,</p><p>  @elem10 smallint</p><p><b>  AS</b></p><p><b>  BEGIN </b></p><p>  insert into 圖書(booki

42、d,bookname,booktype,bookauther,booktrslator,bookpress,</p><p>  bookcontent,bookprice,noborrow,haveborrow)</p><p><b>  values </b></p><p><b>  (</b></p>

43、;<p>  @elem1,@elem2,@elem3,@elem4,@elem5,@elem6,@elem7,@elem8,@elem9,@elem10</p><p><b>  )</b></p><p><b>  END</b></p><p>  4.3 創(chuàng)建實(shí)現(xiàn)還書的存儲(chǔ)過程</p>

44、<p>  /********************************創(chuàng)建還書存儲(chǔ)*******************************/</p><p>  USE bookmg</p><p><b>  GO</b></p><p>  CREATE PROCEDURE return_insert</p

45、><p>  @elem1 varchar(9),</p><p>  @elem2 varchar(9),</p><p>  @elem3 smallint</p><p><b>  AS</b></p><p>  INSERT INTO 還書(readerid,bookid,booknum)

46、</p><p><b>  values </b></p><p><b>  (</b></p><p><b>  @elem1,</b></p><p><b>  @elem2,</b></p><p><b>

47、  @elem3</b></p><p><b>  )</b></p><p><b>  BEGIN</b></p><p><b>  UPDATE 還書</b></p><p>  SET inputdate=GETDATE()</p><

48、;p>  WHERE readerid=@elem1;</p><p><b>  UPDATE 圖書</b></p><p>  SET noborrow=noborrow+@elem3</p><p>  WHERE bookid=@elem2;</p><p><b>  UPDATE 圖書<

49、/b></p><p>  SET haveborrow=haveborrow-@elem3</p><p>  WHERE bookid=@elem2;</p><p><b>  UPDATE 讀者</b></p><p>  SET borrownum=borrownum-@elem3</p>

50、<p>  SELECT '還書成功'</p><p><b>  END</b></p><p><b>  GO</b></p><p>  /***********還書實(shí)例*************/</p><p>  USE bookmg</p>&

51、lt;p><b>  GO</b></p><p>  EXEC return_insert '111007131','540541903',1</p><p><b>  GO</b></p><p><b>  圖 10還書實(shí)例</b></p>

52、<p>  4.4 創(chuàng)建實(shí)現(xiàn)借書的存儲(chǔ)過程</p><p>  /**************************創(chuàng)建借書存儲(chǔ)*****************/</p><p>  USE bookmg</p><p><b>  GO</b></p><p>  CREATE PROCEDURE bo

53、rrow_insert</p><p>  @elem1 varchar(9),</p><p>  @elem2 varchar(9),</p><p>  @elem3 smallint</p><p><b>  AS</b></p><p>  insert into 借書</p&g

54、t;<p><b>  (</b></p><p>  readerid,bookid,booknum</p><p><b>  )</b></p><p><b>  values</b></p><p><b>  (</b></

55、p><p><b>  @elem1,</b></p><p><b>  @elem2,</b></p><p><b>  @elem3</b></p><p><b>  )</b></p><p><b>  BEGI

56、N</b></p><p>  /*這里用了判定是否超期函數(shù)judgedate,將返回值賦予判斷變量judgement*/</p><p>  DECLARE @judgement int</p><p>  SET @judgement=</p><p>  (SELECT max(overdays)</p>&l

57、t;p>  FROM judgedate(@elem1)) </p><p>  /*判定該讀者是否有圖書超期*/</p><p>  IF (@judgement<=0)</p><p><b>  BEGIN</b></p><p>  SELECT '借書成功'</p>&

58、lt;p><b>  UPDATE 借書</b></p><p>  SET outputdate=GETDATE()</p><p>  WHERE readerid=@elem1 AND bookid=@elem2;</p><p><b>  UPDATE 借書</b></p><p>

59、  SET shoulddate=DATEADD(day,30,getdate())</p><p>  WHERE readerid=@elem1 AND bookid=@elem2;</p><p>  /*聲明一個(gè)變量bookname從圖書表里讀取圖書名到借書表里*/</p><p>  DECLARE @bookname varchar(40)</p&

60、gt;<p>  SET @bookname=(SELECT bookname FROM 圖書</p><p>  WHERE bookid=@elem2</p><p><b>  )</b></p><p><b>  UPDATE 借書</b></p><p>  SET boo

61、kname=@bookname</p><p>  WHERE readerid=@elem1 AND bookid=@elem2;</p><p><b>  UPDATE 圖書</b></p><p>  SET noborrow=noborrow-@elem3</p><p>  WHERE bookid=@ele

62、m2;</p><p><b>  UPDATE 圖書</b></p><p>  SET haveborrow=haveborrow+@elem3</p><p>  WHERE bookid=@elem2;</p><p><b>  UPDATE 讀者</b></p><p

63、>  SET borrownum=borrownum+@elem3</p><p>  WHERE readerid=@elem1;</p><p><b>  END</b></p><p><b>  ELSE</b></p><p><b>  BEGIN</b>&

64、lt;/p><p>  SELECT '借書失敗,有超期未還圖書'</p><p><b>  END</b></p><p><b>  END</b></p><p><b>  /*借書實(shí)例*/</b></p><p>  USE bo

65、okmg</p><p><b>  GO</b></p><p>  EXEC borrow_insert '111007131','540541903',2</p><p><b>  GO</b></p><p><b>  圖11借書實(shí)例</

66、b></p><p>  4.5 建立是否超期表值函數(shù)</p><p>  USE bookmg</p><p><b>  GO</b></p><p>  CREATE FUNCTION judgedate(@elem1 as varchar(9))</p><p>  RETURNS

67、@overdate TABLE</p><p><b>  (</b></p><p>  overdays int</p><p><b>  )</b></p><p><b>  AS</b></p><p><b>  BEGIN<

68、;/b></p><p>  INSERT @overdate</p><p>  SELECT day(GETDATE()-ISNULL(shoulddate,0))</p><p><b>  FROM 借書</b></p><p>  WHERE readerid=@elem1</p><

69、p><b>  RETURN</b></p><p><b>  END</b></p><p><b>  4.6查詢模塊</b></p><p>  /*****************圖書分類查詢和分類統(tǒng)計(jì)**************/</p><p>  USE

70、bookmg</p><p><b>  GO</b></p><p>  CREATE PROCEDURE type_select</p><p>  @booktype varchar(20)</p><p><b>  AS</b></p><p><b> 

71、 BEGIN</b></p><p>  SELECT booktype</p><p><b>  FROM 圖書</b></p><p>  WHERE booktype=@booktype;</p><p>  DECLARE @booknum int</p><p>  SET

72、 @booknum=(</p><p>  select sum(noborrow+haveborrow)</p><p><b>  FROM 圖書</b></p><p>  WHERE booktype=@booktype</p><p><b>  )</b></p><

73、p>  SELECT @booktype AS '類型' ,@booknum AS '本' </p><p><b>  END</b></p><p>  /****圖書分類查詢實(shí)例*********/</p><p>  USE bookmg</p><p><b> 

74、 GO</b></p><p>  EXEC type_select '漫畫' </p><p><b>  GO</b></p><p>  圖12圖書分類查詢實(shí)例</p><p>  /*******************圖書按書名查詢和統(tǒng)計(jì)******************/<

75、;/p><p>  USE bookmg</p><p><b>  GO</b></p><p>  CREATE PROCEDURE bookname_select</p><p>  @bookname varchar(40)</p><p><b>  AS</b><

76、;/p><p><b>  BEGIN</b></p><p><b>  SELECT *</b></p><p><b>  FROM 圖書</b></p><p>  WHERE bookname=@bookname;</p><p>  DECLAR

77、E @booknum int</p><p>  SET @booknum=(</p><p>  select sum(noborrow+haveborrow)</p><p><b>  FROM 圖書</b></p><p>  WHERE bookname=@bookname</p><p&g

78、t;<b>  )</b></p><p>  SELECT @bookname AS '書名' ,@booknum AS '本' </p><p><b>  END</b></p><p>  /****圖書書名查詢實(shí)例*********/</p><p>  U

79、SE bookmg</p><p><b>  GO</b></p><p>  EXEC bookname_select '子不語壹' </p><p><b>  GO</b></p><p>  圖13圖書書名查詢實(shí)例</p><p>  /*****

80、*****************按作者查詢和統(tǒng)計(jì)**************************/</p><p>  USE bookmg</p><p><b>  GO</b></p><p>  CREATE PROCEDURE bookauthor_select</p><p>  @bookauthor

81、 varchar(20)</p><p><b>  AS</b></p><p><b>  BEGIN</b></p><p><b>  SELECT *</b></p><p><b>  FROM 圖書</b></p><p&

82、gt;  WHERE bookauthor=@bookauthor;</p><p>  DECLARE @booknum int</p><p>  SET @booknum=(</p><p>  select sum(noborrow+haveborrow)</p><p><b>  FROM 圖書</b><

83、;/p><p>  WHERE bookauthor=@bookauthor</p><p><b>  )</b></p><p>  SELECT @bookauthor AS '作者' ,@booknum AS '本' </p><p><b>  END</b>&

84、lt;/p><p>  /***圖書作者查詢實(shí)例******/</p><p>  USE bookmg</p><p><b>  GO</b></p><p>  EXEC bookauthor_select '夏達(dá)'</p><p><b>  GO</b&g

85、t;</p><p>  圖 14圖書作者查詢實(shí)例</p><p><b>  結(jié)束語 </b></p><p>  當(dāng)初選課的時(shí)候選圖書管理,目的就是更好的理解、學(xué)習(xí)和使用好SQL 語言,所以我決定只做后臺(tái),這樣能更好得理解和應(yīng)用。通過一個(gè)月的努力,我自主完成了課題要求的所有功能。覺得收獲很大。很多知識(shí),老師并沒有講過,甚至使用的教材里也沒有

86、提到。但是在實(shí)踐操作中,必須要用到的時(shí)候,自己就會(huì)去查去學(xué),這就是所謂的實(shí)戰(zhàn)吧。通過,本次課程設(shè)計(jì)我收獲很大,認(rèn)識(shí)到當(dāng)遇到困難的時(shí)候要多和人溝通,并且要冷靜得去思考去分析問題出在哪了,怎樣才能解決??傊視?huì)吸取此次的經(jīng)驗(yàn)并且在以后不滿足所學(xué)的局限知識(shí)還要推陳創(chuàng)新,一步一步獲得更大的收獲。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 數(shù)據(jù)

87、庫原理和技術(shù)(SQL Server 2005)申事凱 戴祖誠 余玉梅 主編</p><p>  [2] 王珊,薩師煊 數(shù)據(jù)庫系統(tǒng)概論[第四版] 高等教育出版社</p><p><b>  附錄:</b></p><p> ?。ǜ缴详P(guān)鍵的源程序,5-10頁)</p><p>  /************創(chuàng)建各個(gè)表****

88、*********************/</p><p>  CREATE TABLE 讀者</p><p><b>  (</b></p><p>  readerid varchar(9) NOT NULL PRIMARY KEY,</p><p>  readername varchar(20) NOT NUL

89、L,</p><p>  readersex varchar(10) NOT NULL,</p><p>  booknum SMALLINT CHECK(borrownum>=0 AND borrownum<=5)</p><p><b>  )</b></p><p>  CREATE TABLE 圖書&

90、lt;/p><p><b>  (</b></p><p>  bookid varchar(9) NOT NULL PRIMARY KEY,</p><p>  bookname varchar(40)NOT NULL,</p><p>  booktype varchar(20)NOT NULL,</p>

91、<p>  bookauther varchar(20) NOT NULL,</p><p>  booktrslator varchar(20) NULL,</p><p>  bookpress varchar(20)NOT NULL,</p><p>  bookcontent varchar(50)NULL,</p><p>

92、;  bookprice varchar(10)NOT NULL,</p><p>  noborrow SMALLINT CHECK(noborrow>=0),</p><p>  haveborrow SMALLINT CHECK(haveborrow>=0)</p><p><b>  )</b></p><

93、;p>  CREATE TABLE 還書</p><p><b>  (</b></p><p>  readerid varchar(9) NOT NULL,</p><p>  bookid varchar(9) NOT NULL,</p><p>  booknum SMALLINT CHECK(booknu

94、m>=0 AND booknum<=5),</p><p>  inputdate datetime ,</p><p>  FOREIGN KEY (readerid) REFERENCES 讀者(readerid),</p><p>  FOREIGN KEY (bookid) REFERENCES 圖書(bookid)</p><

95、;p><b>  )</b></p><p>  CREATE TABLE 借書</p><p><b>  (</b></p><p>  readerid varchar(9) NOT NULL,</p><p>  bookid varchar(9) NOT NULL,</p>

96、;<p>  bookname varchar(40) NOT NULL,</p><p>  booknum SMALLINT CHECK(booknum>=0 AND booknum<=5),</p><p>  outputdate datetime NULL,</p><p>  shoulddate datetime NULL,

97、</p><p>  FOREIGN KEY(readerid) REFERENCES 讀者(readerid),</p><p>  FOREIGN KEY(bookid) REFERENCES 圖書(bookid)</p><p><b>  )</b></p><p>  /*******通過存儲(chǔ)過程向讀者表中插入

98、數(shù)據(jù)************/</p><p>  USE bookmg</p><p><b>  GO </b></p><p>  CREATE PROCEDURE reader_insert</p><p>  @elem1 varchar(9),</p><p>  @elem2 var

99、char(20),</p><p>  @elem3 varchar(10),</p><p>  @elem4 smallint</p><p><b>  AS</b></p><p><b>  BEGIN </b></p><p>  insert into 讀者(r

100、eaderid,readername,readersex,borrownum)</p><p><b>  values </b></p><p><b>  (</b></p><p>  @elem1,@elem2,@elem3,@elem4</p><p><b>  )</b

101、></p><p><b>  END</b></p><p>  /********讀者表中插入實(shí)例**********/</p><p>  USE bookmg</p><p><b>  GO</b></p><p>  EXEC reader_insert &

102、#39;111007131','吳書敏','男','0'</p><p>  /*向圖書表中插入數(shù)據(jù)*/</p><p>  USE bookmg</p><p><b>  GO</b></p><p><b>  INSERT 圖書</b>

103、</p><p>  VALUES ('540541903','子不語壹','漫畫','夏達(dá)','NULL','新世紀(jì)出版社','NULL','18.00','6',’0’)</p><p><b>  GO</b></

104、p><p><b>  INSERT 圖書</b></p><p>  VALUES ('540541904','子不語貳','漫畫','夏達(dá)','NULL','新世紀(jì)出版社','NULL','18.00','6',’0’)<

105、;/p><p><b>  GO</b></p><p><b>  INSERT 圖書</b></p><p>  VALUES ('540541905','子不語叁','漫畫','夏達(dá)','NULL','新世紀(jì)出版社','

106、;NULL','18.00','6',’0’)</p><p><b>  GO</b></p><p><b>  INSERT 圖書</b></p><p>  VALUES ('540541906','子不語肆','漫畫',

107、9;夏達(dá)','NULL','新世紀(jì)出版社','NULL','18.00','6',’0’)</p><p><b>  GO</b></p><p><b>  INSERT 圖書</b></p><p>  VALUES ('

108、540541907','子不語伍','漫畫','夏達(dá)','NULL','新世紀(jì)出版社','NULL','18.00','6',’0’)</p><p><b>  GO</b></p><p><b>  INSERT 圖書

109、</b></p><p>  VALUES ('540541908','子不語陸','漫畫','夏達(dá)','NULL','新世紀(jì)出版社','NULL','18.00','6',’0’)</p><p>  /*通過存儲(chǔ)過程向圖書表中插入數(shù)

110、據(jù)*/</p><p>  USE bookmg</p><p><b>  GO </b></p><p>  CREATE PROCEDURE book_insert</p><p>  @elem1 varchar(9),</p><p>  @elem2 varchar(40),</

111、p><p>  @elem3 varchar(20),</p><p>  @elem4 varchar(20),</p><p>  @elem5 varchar(20),</p><p>  @elem6 varchar(20),</p><p>  @elem7 varchar(50),</p><

112、;p>  @elem8 varchar(10),</p><p>  @elem9 smallint,</p><p>  @elem10 smallint</p><p><b>  AS</b></p><p><b>  BEGIN </b></p><p>  

113、insert into 圖書(bookid,bookname,booktype,bookauther,booktrslator,bookpress,</p><p>  bookcontent,bookprice,noborrow,haveborrow)</p><p><b>  values </b></p><p><b>  

114、(</b></p><p>  @elem1,@elem2,@elem3,@elem4,@elem5,@elem6,@elem7,@elem8,@elem9,@elem10</p><p><b>  )</b></p><p><b>  END</b></p><p>  /****

115、****************************創(chuàng)建還書存儲(chǔ)*******************************/</p><p>  USE bookmg</p><p><b>  GO</b></p><p>  CREATE PROCEDURE return_insert</p><p>  @

116、elem1 varchar(9),</p><p>  @elem2 varchar(9),</p><p>  @elem3 smallint</p><p><b>  AS</b></p><p>  INSERT INTO 還書(readerid,bookid,booknum)</p><p&

117、gt;<b>  values </b></p><p><b>  (</b></p><p><b>  @elem1,</b></p><p><b>  @elem2,</b></p><p><b>  @elem3</b>

118、</p><p><b>  )</b></p><p><b>  BEGIN</b></p><p><b>  UPDATE 還書</b></p><p>  SET inputdate=GETDATE()</p><p>  WHERE read

119、erid=@elem1;</p><p><b>  UPDATE 圖書</b></p><p>  SET noborrow=noborrow+@elem3</p><p>  WHERE bookid=@elem2;</p><p><b>  UPDATE 圖書</b></p>

120、<p>  SET haveborrow=haveborrow-@elem3</p><p>  WHERE bookid=@elem2;</p><p><b>  UPDATE 讀者</b></p><p>  SET borrownum=borrownum-@elem3</p><p>  SELECT

121、'還書成功'</p><p><b>  END</b></p><p><b>  GO</b></p><p>  /***********還書實(shí)例*************/</p><p>  USE bookmg</p><p><b> 

122、 GO</b></p><p>  EXEC return_insert '111007131','540541903',1</p><p><b>  GO</b></p><p>  /**************************創(chuàng)建借書存儲(chǔ)*****************/</

123、p><p>  USE bookmg</p><p><b>  GO</b></p><p>  CREATE PROCEDURE borrow_insert</p><p>  @elem1 varchar(9),</p><p>  @elem2 varchar(9),</p>&

124、lt;p>  @elem3 smallint</p><p><b>  AS</b></p><p>  insert into 借書</p><p><b>  (</b></p><p>  readerid,bookid,booknum</p><p><

125、b>  )</b></p><p><b>  values</b></p><p><b>  (</b></p><p><b>  @elem1,</b></p><p><b>  @elem2,</b></p>&

126、lt;p><b>  @elem3</b></p><p><b>  )</b></p><p><b>  BEGIN</b></p><p>  /*這里用了判定是否超期函數(shù)judgedate,將返回值賦予判斷變量judgement*/</p><p>  DECL

127、ARE @judgement int</p><p>  SET @judgement=</p><p>  (SELECT max(overdays)</p><p>  FROM judgedate(@elem1)) </p><p>  /*判定該讀者是否有圖書超期*/</p><p>  IF (@judgem

128、ent<=0)</p><p><b>  BEGIN</b></p><p>  SELECT '借書成功'</p><p><b>  UPDATE 借書</b></p><p>  SET outputdate=GETDATE()</p><p>

129、  WHERE readerid=@elem1 AND bookid=@elem2;</p><p><b>  UPDATE 借書</b></p><p>  SET shoulddate=DATEADD(day,30,getdate())</p><p>  WHERE readerid=@elem1 AND bookid=@elem2;&

130、lt;/p><p>  /*聲明一個(gè)變量bookname從圖書表里讀取圖書名到借書表里*/</p><p>  DECLARE @bookname varchar(40)</p><p>  SET @bookname=(SELECT bookname FROM 圖書</p><p>  WHERE bookid=@elem2</p>

131、<p><b>  )</b></p><p><b>  UPDATE 借書</b></p><p>  SET bookname=@bookname</p><p>  WHERE readerid=@elem1 AND bookid=@elem2;</p><p><b&g

132、t;  UPDATE 圖書</b></p><p>  SET noborrow=noborrow-@elem3</p><p>  WHERE bookid=@elem2;</p><p><b>  UPDATE 圖書</b></p><p>  SET haveborrow=haveborrow+@el

133、em3</p><p>  WHERE bookid=@elem2;</p><p><b>  UPDATE 讀者</b></p><p>  SET borrownum=borrownum+@elem3</p><p>  WHERE readerid=@elem1;</p><p><

134、b>  END</b></p><p><b>  ELSE</b></p><p><b>  BEGIN</b></p><p>  SELECT '借書失敗,有超期未還圖書'</p><p><b>  END</b></p>

135、<p><b>  END</b></p><p>  /************判斷是否超期表值函數(shù)********************/</p><p>  USE bookmg</p><p><b>  GO</b></p><p>  CREATE FUNCTION ju

136、dgedate(@elem1 as varchar(9))</p><p>  RETURNS @overdate TABLE</p><p><b>  (</b></p><p>  overdays int</p><p><b>  )</b></p><p><

137、;b>  AS</b></p><p><b>  BEGIN</b></p><p>  INSERT @overdate</p><p>  SELECT day(GETDATE()-ISNULL(shoulddate,0))</p><p><b>  FROM 借書</b>

138、</p><p>  WHERE readerid=@elem1</p><p><b>  RETURN</b></p><p><b>  END</b></p><p><b>  /*借書實(shí)例*/</b></p><p>  USE bookmg

139、</p><p><b>  GO</b></p><p>  EXEC borrow_insert '111007131','540541903',2</p><p><b>  GO</b></p><p>  /*****************圖書分類查詢和

140、分類統(tǒng)計(jì)**************/</p><p>  USE bookmg</p><p><b>  GO</b></p><p>  CREATE PROCEDURE type_select</p><p>  @booktype varchar(20)</p><p><b>

141、;  AS</b></p><p><b>  BEGIN</b></p><p>  SELECT booktype</p><p><b>  FROM 圖書</b></p><p>  WHERE booktype=@booktype;</p><p>  

142、DECLARE @booknum int</p><p>  SET @booknum=(</p><p>  select sum(noborrow+haveborrow)</p><p><b>  FROM 圖書</b></p><p>  WHERE booktype=@booktype</p>&

143、lt;p><b>  )</b></p><p>  SELECT @booktype AS '類型' ,@booknum AS '本' </p><p><b>  END</b></p><p>  /****圖書分類查詢實(shí)例*********/</p><p&

144、gt;  USE bookmg</p><p><b>  GO</b></p><p>  EXEC type_select '漫畫' </p><p><b>  GO</b></p><p>  /*******************圖書按書名查詢和統(tǒng)計(jì)**********

145、********/</p><p>  USE bookmg</p><p><b>  GO</b></p><p>  CREATE PROCEDURE bookname_select</p><p>  @bookname varchar(40)</p><p><b>  AS&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論