當前位置:首頁 » 存儲配置 » 圖書管理系統的存儲過程

圖書管理系統的存儲過程

發布時間: 2022-10-07 21:19:43

Ⅰ 關於存儲過程

這個怎麼寫哦。存儲過程的概念貌似你沒有弄清楚哦,好好看看書吧,努力,你行滴~~~

Ⅱ 基於oracle的圖書管理系統存儲過程怎麼設計

CREATEORREPLACEProcere P_借書
(P_借閱流水號 in VARCHAR2 ,
P_借書證號 in VARCHAR2 ,
P_圖書編號 in VARCHAR2 ,
V_借書日期 out date,
V_是否借出 out varchar2

Ⅲ 求圖書管理系統

目錄

目錄 2
1 前言 4
1.1 目的 4
1.2 范圍 4
1.3 有關本系統中的定義 4
2 資料引用 4
3 設計思路 4
3.1 數據層設計 5
user_book表的觸發器 5
用戶續借圖書的存儲過程 6
到期催還表的視圖 7
3.2 數據鏈接層設計 8
UserBook Entity Bean設計 9
UserConsumer Entity Bean設計 10
UserLogBook Entity Bean設計 11
3.3 數據邏輯層設計 12
TheBook Session Bean設計 13
TheUser Session Bean設計 14
TheLog Session Bean設計 15
3.4 網路應用層設計 15
CheckValue bean 16
EnCode bean 16
JDBCBean bean 16
Rank bean 16
SetUp bean 16
SplitPage bean 17
UserLogin bean 17
SearchBook bean 17
SearchDeadline bean 17
ValidateIMG servlet 17
GetDelete servlet servlet 17
GetBookSubmit servlet 18
GetUserSubmit servlet 18
GetRenewBook servlet 18
GetBorrowBook servlet 18
GetReturnBook servlet 18
4 程序架構 18
4.1 程序組織結構 18
4.2 功能許可權劃分 20
4.3 WEB程序/頁面設計 21
4.4 本系統實現的功能 22
5 任務分工 22
1 前言
1.1 目的
本文檔詳細描述了圖書管理系統的設計,主要是為開發人員提供,使其對本項目的構建和維護有深入的了解。
1.2 范圍
本文檔的描述只針對圖書管理系統的1.0版本。
1.3 有關本系統中的定義
以下是本說明書中用到的專門術語的定義和外文首字母組詞的原片語:
術語或縮寫 定義與描述
booksManager 本系統的名稱
Reader 系統許可權:普通讀者
BookAdmin 系統許可權:圖書管理員
UserAdmin 系統許可權:用戶管理員
SuperAdmin 系統許可權:超級管理員(系統管理員)
Undergraate 系統用戶角色:本科生
Graate 系統用戶角色:研究生
Teacher 系統用戶角色:教師
2 資料引用
清華大學《應用軟體平台與核心技術》講義 顧明
清華大學《應用軟體平台與核心技術》助教文檔 張偉業、魏嵐、陳勇、林彩榮
《精通EJB(第二版)》
《J2EE應用與BEA Web Logic Server》,刑國慶等譯,電子工業出版社 2002.4
《設計模式——可復用面向對象軟體的基礎》,Erich Gamma等,機械工業出版社
3 設計思路
本系統嚴格按照4層結構設計,分為數據層(sql server),數據鏈接層(entity bean),數據邏輯層(session bean),網路應用層(java bean, java servlet, java serverpage)。
四層之間完全獨立,可以部署在四台伺服器上運行,體現了分布式應用的思想。
數據層的功能嚴格來說是實現基本的數據存儲(邏輯處理功能應該全部交給CMP管理),但因為學習原因,在資料庫中也用到了一些邏輯處理,如使用了存儲過程+系統級臨時表處理讀者續借圖書的功能、使用觸發器防止未還書的用戶和未歸還的圖書被注銷以及使用視圖檢測借書記錄實現到期催還功能。
數據鏈接層實現了和資料庫的連接,作用在於屏蔽資料庫和平台之間的差異,做到底層無關性。本層利用了模糊查找、多表映射、Relationship等技術,通過find,select方法數據的查找功能,拋出聚集對象或遠程介面對象給下一層。
數據邏輯層實現了對數據的邏輯處理,例如將遠程介面對象轉化為值對象、將聚集對象轉化為值對象向量、利用日期類完成查找兩個特定日期之間的記錄等相對復雜的計算。
網路應用層完成頁面跳轉和頁面顯示等應用功能,還有一些附加功能如:圖片驗證,登錄驗證,等級控制,代碼過濾,分頁控制,輸入值檢測、借書日誌列印、系統運行日誌記錄以及系統設置等。(使用了JDBC實現存儲過程和模糊查找圖書的功能)
3.1 數據層設計

資料庫表

表名 功能描述
user_consumer 記錄了用戶的所有信息
user_book 記錄了圖書的所有信息
user_logBook 記錄了用戶使用本系統的信息,保留了所有的借書記錄,可作為系統日誌和報表資料
user_book表的觸發器
用到的觸發器之一,作用:如果要注銷的圖書被外借沒有歸還,則回滾此刪除操作。

CREATE TRIGGER bookhavelog ON dbo.user_book
FOR DELETE
AS
declare @bookISBN varchar(50)
select @bookISBN=book_ISBN from deleted
if exists(select * from user_logBook where logb_book_ISBN=@bookISBN and
logb_backdate is null)
begin
rollback
return
end
用戶續借圖書的存儲過程
利用存儲過程實現用戶續借圖書的邏輯操作,根據用戶的當前信息判斷其是否有續借的許可權,並把處理結果輸出到臨時表中去。

CREATE PROCEDURE user_renew_book @xxxparm int AS

CREATE TABLE ##temp(statement varchar(50))
DECLARE @username varchar(50)
SET @username=(select logb_cons_username from user_logBook where ID=@xxxparm)
IF @username is null
BEGIN
INSERT INTO ##temp VALUES ('The ID is not EXIST')
RETURN
END
DECLARE @timelimit int
SET @timelimit=(select logb_timelimit from user_logBook where ID=@xxxparm)
DECLARE @renewday int
SET @renewday=(select cons_maxday from user_consumer where cons_username=@username)
DECLARE @maxrenew int
SET @maxrenew=(select cons_maxrenew from user_consumer where cons_username=@username)
IF (@renewday*@maxrenew)>=@timelimit
BEGIN
update user_logBook set logb_timelimit=logb_timelimit+@renewday where ID=@xxxparm
--update user_consumer set cons_maxrenews=cons_maxrenews-1 where cons_username=@username
INSERT INTO ##temp VALUES ('renew successful')
RETURN
END
ELSE
BEGIN
INSERT INTO ##temp VALUES ('You are not allowed to renew the book')
RETURN
END
GO
到期催還表的視圖
利用DATEDIFF,DATEADD,CAST,GETDATE等函數從借書記錄表中計算出到期的記錄,然後根據此記錄找出相應的讀者信息,在網頁上以email形式催還。

CREATE VIEW dbo.deadline
AS
SELECT TOP 100 PERCENT dbo.user_logBook.logb_cons_username,
dbo.user_logBook.logb_outdate, DATEADD([day], dbo.user_logBook.logb_timelimit,
CAST(dbo.user_logBook.logb_outdate AS datetime)) AS deadline_date, GETDATE()
AS now_date, dbo.user_consumer.cons_name, dbo.user_consumer.cons_kind,
dbo.user_consumer.cons_rank, dbo.user_consumer.cons_email,
dbo.user_consumer.cons_maxrenew, dbo.user_consumer.cons_maxbook,
dbo.user_logBook.logb_book_ISBN, dbo.user_book.book_name,
dbo.user_book.book_kind, dbo.user_book.book_storage, dbo.user_book.book_rank,
dbo.user_logBook.logb_timelimit
FROM dbo.user_logBook INNER JOIN
dbo.user_consumer ON
dbo.user_logBook.logb_cons_username = dbo.user_consumer.cons_username INNER
JOIN
dbo.user_book ON
dbo.user_logBook.logb_book_ISBN = dbo.user_book.book_ISBN
WHERE (DATEDIFF([day], DATEADD([day], dbo.user_logBook.logb_timelimit,
CAST(dbo.user_logBook.logb_outdate AS datetime)), GETDATE()) >= 0) AND
(dbo.user_logBook.logb_backdate IS NULL)
ORDER BY dbo.user_logBook.logb_cons_username DESC
3.2 數據鏈接層設計

entity bean
UserBook Entity Bean設計

userbook remotehome介面

方法 描述
findAllBook 得到所有的圖書信息
findByISBN 通過圖書的書號得到圖書的信息
findSearcher 利用關鍵字模糊查找圖書信息
selectUserByBookISBN
(userbook remote) 利用select方法實現多表相關的查找

findSearcher實現模糊查找的代碼:
select object(p) from UserBook as p where p.bookName like concat(concat('%',?1),'%') or p.bookAuthor like ?1 or p.bookKind like ?1 or p.bookPublish like ?1 or p.bookAbstract like ?1 or p.bookISBN like concat(concat('%',?1),'%') or p.bookRemark like ?1
UserConsumer Entity Bean設計

UserConsumer remotehome介面

方法 描述
findAllUser 查找所有的用戶信息
findByUsername 通過用戶名查找用戶信息
findSearcher 利用關鍵字模糊查找用戶信息
selectBookByUsername
(userconsumer remote) 利用select方法實現多表相關的查找

findSearcher實現模糊查找的代碼:
select object(p) from UserConsumer as p where p.consUsername like concat(concat('%',?1),'%') or p.consSerial like ?1 or p.consName like concat(concat('%',?1),'%') or p.consRemark like ?1 or p.consEmail like ?1
UserLogBook Entity Bean設計

UserLogBook remotehome介面

方法 描述
findallbybookISBN 查找此書所有的借閱記錄
findbybookISBN 查找此書當前的借出記錄
findallbyusername 查找此用戶所有的借閱記錄
findbyusername 查找此用戶當前的借出書記錄
findbacklog 得到所有已經歸還圖書的借書記錄
findoutlog 得到所有尚未歸還圖書的借書記錄
findbyID 通過記錄流水號查找借書記錄
findlogbyday 查找某一日期的借書記錄
(模糊匹配,例如提交「2004-5」可得到最終記錄時間——借閱或歸還在2004年5月份的所有借書記錄)
findallog 得到所有的借書記錄

FindLogByDay通過模糊匹配得到一組最終記錄時間的代碼:
select object(p) from UserLogBook as p where ( p.logbBackdate is null and p.logbOutdate like concat(concat('%',?1),'%') ) or ( p.logbBackdate is not null and p.logbBackdate like concat(concat('%',?1),'%') )
3.3 數據邏輯層設計

session bean
TheBook Session Bean設計

TheBook bean
實現圖書的增刪改查以及模糊搜索、通過書查讀者等功能
方法內部實現所有的邏輯處理和轉化,返回到遠程介面值對象或值對象向量
TheUser Session Bean設計

TheUser bean
實現用戶(讀者)的增刪改查以及模糊搜索、通過讀者查書等功能
方法內部實現所有的邏輯處理和轉化,返回到遠程介面值對象或值對象向量
TheLog Session Bean設計

TheLog bean
主要實現對日誌(借書記錄)的各項操作,提供多種獲得日誌的方法(按讀者、按圖書、按日期、按借還狀態等),方法內部實現所有的邏輯處理和轉化,返回到遠程介面值對象或值對象向量,另外還有如下方法:
方法 功能
public boolean userBorrowBook(String username, String bookISBN) 以一個事務封裝讀者借書的所有邏輯操作,借書成功返回真值,無法借書返回假值,調用enCode bean對中文進行轉碼
public boolean userReturnBook(String logbid) 以一個事務封裝讀者還書的所有邏輯操作,即實現使一筆借書記錄銷賬的功能,調用enCode bean對中文進行轉碼
public Vector showLogBetweenDays(String dayBegin, String dayEnd) 返回兩個日期之間的所有日誌,主要利用Calendar類實現
3.4 網路應用層設計
本層本著面向對象思想的封裝性、數據模糊性、可重用性等原則設計。
本著系統運行錯誤在系統中列印(System.out.println)、用戶輸入和誤操作錯誤導向友好的錯誤處理頁並給出友好的提示的錯誤處理原則。
每次對會話bean的調用寫入系統運行日誌文件,默認路徑是C:\\booksManagerLog.dat。
CheckValue bean
封裝多個靜態方法。
可以用於檢測某表中某個欄位是否已經存在某個值(可用於檢測重名用戶、重號圖書)、檢測用戶名合法性、檢測密碼合法性、檢測年齡合法性、檢測電子郵件合法性、檢測數字合法性、檢測日期合法性等。
EnCode bean
封裝編碼轉碼工作:
html顯示轉碼,例如:將<轉為<,將>轉為&rt;,將資料庫中的換行轉為html中的換行等等,這樣可以屏蔽用戶提交文本中的可執行代碼。
可重載的中文轉碼。
密碼的加密和解密編碼。
JDBCBean bean
封裝所有的資料庫操作。包括一個帶結果集返回的SQL執行方法和一個不帶結果集返回的SQL執行方法。
Rank bean
封裝4種許可權(普通讀者、用戶管理員、圖書管理員、系統管理員)的頁面訪問,相當於頁面加鎖功能。
SetUp bean
public static String title="SuperLibrary";//系統名稱
public static String dbS="booksManagerDS";//資料庫的JNDI名
public static String errorPage="dealError.jsp?theError=";//友好的錯誤處理頁,用get方法傳遞出錯原因
public static String homePage="default.jsp";//默認首頁
//許可權-------------------------------------------------------------------------
public static String Reader="Reader";//讀者
public static String UserAdmin="UserAdmin";//用戶管理員
public static String BookAdmin="BookAdmin";//圖書管理員
public static String SuperAdmin="SuperAdmin";//系統管理員
//等級-------------------------------------------------------------------------
public static String Undergraate="Undergraate";//本科生
public static int UndergraateRenew=1;//本科生可續借的次數
public static int UndergraateMaxday=30;//本科生一次可借的天數

public static String Graate="Graate";//研究生
public static int GraateRenew=2;//研究生可續借的次數
public static int GraateMaxday=45;//研究生一次可借的天數

public static String Teacher="Teacher";//教師
public static int TeacherRenew=3;//教師可續借的次數
public static int TeacherMaxday=60;//教師一次可借的天數
//----------------------------------------------------------------------------
public static int rsPerPage=5;//每頁顯示記錄的數量
public static int minBooks=4;//系統默認的最小借書數
SplitPage bean
將數據記錄分頁的邏輯實現和頁面顯示(最簡,可在外部由樣式表美化)封裝在一個bean中,重用時實際只需要傳遞一個記錄集數量的為參數即可,可重用。一般作為session級java bean在頁面中被調用,在會話中保存用戶對此頁面的訪問狀態,在會話結束之前始終記憶用戶訪問此頁對應的頁碼。
UserLogin bean
將用戶登錄的邏輯實現和頁面顯示(最簡,可在外部由樣式表美化)封裝在一個bean中,包括對用戶各種登錄情況的處理,可重用。
SearchBook bean
利用JDBC實現模糊查找和按指定類別精確查找圖書的功能。
SearchDeadline bean
利用JDBC調用視圖實現到期圖書的催還功能。
ValidateIMG servlet
動態生成含有隨機驗證碼的圖片,在生成圖片的同時將驗證碼寫入session中,與用戶的登錄輸入比較。可有效的防止機器人登錄。
GetDelete servlet servlet
處理圖書、用戶、日誌的注銷操作,根據返回值進行相應頁面的跳轉。
GetBookSubmit servlet
處理圖書的入庫和圖書信息的修改,根據返回值進行相應頁面的跳轉。
GetUserSubmit servlet
處理用戶的注冊和用戶信息的修改,根據返回值進行相應頁面的跳轉。
GetRenewBook servlet
處理用戶續借圖書的請求(JDBC調用存儲過程實現),從系統臨時表中讀取狀態值,根據狀態值進行相應頁面的跳轉。
GetBorrowBook servlet
處理用戶的借書請求,將用戶借書限額已滿、庫存為零等錯誤導向友好的錯誤頁,如果借書成功則跳轉到圖書信息頁面,並給與相應的提示。
GetReturnBook servlet
處理用戶的還書請求,如果還書成功則跳轉到用戶的借書記錄頁面,並給與相應的提示。
4 程序架構
4.1 程序組織結構
說明:圖書搜索和用戶登錄看作系統外部功能,通過JDBC直接調用資料庫,其中用戶登錄模塊封裝在一個java bean中,可重用。另外,用戶續借圖書是通過存儲過程實現,從而繞過了使用CMP技術管理事務的實體bean。
本系統其餘程序的組織結構嚴格按照下圖實現:

程序組織結構圖
4.2 功能許可權劃分

站點頁面地圖

許可權名稱 系統定義字元 許可權 可訪問頁面
普通讀者 Reader 查看自己的信息(還書、續借);
修改自己的信息;
查看圖書(借書); userModify
userView
booklist
圖書管理員 BookAdmin 擁有普通讀者的許可權;
圖書的增刪改查;
到期催還; userModify
userView
booklist
bookAdder
bookModify
deadline
用戶管理員 UserAdmin 擁有普通讀者的許可權;
用戶的增刪改查; userModify
userView
booklist
userRegister
userModify
userList
系統管理員 SuperAdmin 擁有圖書管理員和用戶管理員的許可權;
查看系統日誌;
刪除系統日誌;
系統設置; 包括setupSYS.jsp(系統設置,利用application級java bean控制整個應用程序)在內的所有頁面
4.3 WEB程序/頁面設計
利用<input style="ime-mode:disabled">代碼關閉客戶端的輸入法,實現用戶名、密碼不能出現中文的問題。
利用onfocus=this.select() onmouseover=this.focus()代碼使文本框自動吸附獲得焦點,方便用戶輸入。
利用WMODE="transparent"參數使flash的背景透明,更好的融入網頁。
在每頁中,利用代碼:
<IFRAME frameBorder=0 height=88 marginHeight=0 marginWidth=0 scrolling=no src="../iframe/top.htm" width=755 BORDERCOLOR="#000000"></IFRAME>
<IFRAME frameBorder=0 height=68 marginHeight=0 marginWidth=0 scrolling=no src="../iframe/below.htm" width=755 BORDERCOLOR="#000000"></IFRAME>
嵌入上下導航條,使網站導航明確,方便用戶瀏覽。
在網頁頭部加入代碼:
<meta HTTP-EQUIV="pragma" CONTENT="no-cache">
<meta HTTP-EQUIV="expires" CONTENT="0">
使客戶端不緩存網頁,保證了客戶每次瀏覽該頁都從伺服器獲得最新的版本,以求正確顯示。
提供智能搜索(獲得盡可能多的匹配)和精確搜索(獲得盡可能精確的匹配)圖書,伺服器端編程都採用模糊查找的方式。
在客戶端用javascript對表單提交進行第一次驗碼,通過後提交到伺服器端,再進行第二次驗碼,驗碼包括:用戶名是否重復、年齡是不是合適的數字,兩次密碼輸入的是否一致、電子郵件是否合法、密碼是否太短、用戶名是否太短、用戶名密碼是否為空等等。
利用隨機生成JPG圖片驗證碼的方法,防止機器人登錄。
在頁面中使用session級java bean實現分頁,在會話中保存用戶對此頁面的訪問狀態,在會話結束之前始終記憶用戶訪問此頁對應的頁碼。
在頁面中使用application級java bean實現安全的系統設置,當伺服器啟動後,即可對系統運行參數進行應用程序級的設置,只要伺服器不關閉,此設置始終有效且作用於所有用戶,如果設置不慎造成系統錯誤或想恢復系統默認設置,則只需重新啟動伺服器即可。
在對會話bean的調用包ejbClient中,創建系統運行日誌,通過包中的writeF類寫入web伺服器的C:\\booksManagerLog.dat中,可做查詢用。
4.4 本系統實現的功能
確定圖書的基本信息,有書名、作者、出版日期、當前借閱狀態等屬性
系統的使用者包括讀者、圖書管理員、用戶管理員、系統管理員四種
讀者可以查詢圖書;圖書管理員可以完成圖書管理、借閱管理;讀者管理員可以完成讀者管理的功能;系統管理員可以使用系統的所有功能
圖書管理:新書登記,圖書查詢,圖書注銷;
借閱管理:借書,還書,查詢到期讀者
讀者管理:增加讀者、刪除讀者、查詢讀者、讀者類別管理(設置研究生,本科生,教師的可借冊數,可借天數,可續借次數等)
系統管理:系統管理員使用,包括用戶許可權管理(增加用戶,刪除用戶,密碼修改等),系統借書日誌,系統運行日誌,系統設置等功能
頁面輸入有驗碼,密碼存取有加密
圖書到期催還
體現分層設計思想,使用MVC架構
實現了多個Beans,Bean之間實現了對應的關系
使用了EJB QL,事務控制等
使用了jsp->sessionBean->entityBean->資料庫模式
資料庫使用了觸發器和存儲過程等一些高級技術

Ⅳ 圖書管理系統寫存儲過程時提示列名無效,請大神幫幫忙!急啊!

至少
select ldDateOut from dbo.tb_Book BK,dbo.tb_Borrow BW where BK.bkId=BW.bkID;
應該改為
select ldDateOut from dbo.tb_Book BK,dbo.tb_Borrow BW where BK.bkId=BW.bkID and BW.rdID=@rdID ;

Ⅳ 有關oracle圖書管理系統新書入庫的存儲過程

按第二種情況寫
然後在里頭做 if else 判斷
如果存在圖書就只update庫存量
如果沒有就insert

Ⅵ orcale plsql建立存儲過程 .建立存儲過程完成圖書管理系統中的借書功能。

這種圖書功能為什麼還要自己做呢,直接在網上一套圖書管理系統就行啦,建意可以去看看建碩自定義管理系統里圖書管理不錯的,系統可以很方便借書、還書、查找、列印、導出、統計、報表等操作。可以自定義圖書類別,讀者類別,方便添加圖書、管理圖書、添加讀者、管理讀者。提供完善的借書和還書操作,擁有完全獨立的資料庫系統,是您的數據安全得到了保障,數據管理為您提供:圖書管理,讀者管理。數據查詢為您提供:借閱情況,書庫查詢,讀者查詢

Ⅶ 軟體工程 圖書管理系統

借閱時間

館藏號

書名

分類號

作者

價格

借書證號

姓名

性別

圖4 圖書流通的E-R圖

屬於

單 位

1

n

單位名稱

單位編號

先設計圖書流通的實體-關系圖(E-R圖)。E-R圖由3個相關聯的部分構成,即實體、實體與實體之間的關系以及實體和關系的屬性。圖書流通過程中實體「圖書」與「讀者」之間的關系是借閱和被借閱的關系,實體「讀者」與「單位」之間的關系是屬於和被屬於的關系,「圖書」的屬性有「館藏號」、「書名」、「分類號」、「作者」、「價格」,「讀者」的屬性有「借書證號」、「姓名」、「性別」,「單位」的屬性有「單位編號」和「單位名稱」,「借閱」屬性「借書日期」,由此得出E-R圖如圖4。

從圖中可以知道:

①「借書證號」是唯一的,所以「借書證號」決定「姓名」,每位讀者應只屬於一個性別,所以「借書證號」也決定「性別」;

②「館藏號」是唯一的,所以「館藏號」決定「書名」、「分類號」、「作者」、「價格」;

③ 「單位編號」是唯一的,所以「單位編號」決定「單位名稱」;

④ 每位讀者在一個時間只能借一本書,所以「借書證號」 +「館藏號」決定「借閱時間」。

如果將這些數據項置於一個關系模式中,根據範式理論,該關系模式屬於1NF(第一範式),它存在刪除異常和冗餘等問題,不是理想的模式,因此要把它分解成滿足3NF或BCNF的關系模式。根據範式理論和E-R圖轉換成關系模型的規則,上面的E-R圖可轉換為4個關系模式:①圖書(館藏號、書名、分類號、作者、價格);②讀者(借書證號、姓名、性別、單位編號);③借閱(借書證號、館藏號、借閱時間),④單位(單位編碼、單位名稱),其中打下劃線的為碼,這樣就解決了插入、刪除和數據冗餘等問題。

我們對數據的結構進行詳細的分析,按照上述的設計思想,共設計了讀者表,書目表,館藏表,流通表等百餘張數據表,然後創建視圖和存儲過程。下面舉例說明:

讀者表:借書證號、姓名、單位、讀者類別、職稱等欄位;

書目表:館藏號、ISBN、題名、作者、出版社、復本數、語種、文獻類型、版次等欄位;

館藏表:館藏號、索書號、分類號、種次號、館藏位置、單價、出版日期等欄位;

流通表:借書證號、館藏號、借期、還期、續借、應還期、操作員等欄位;

借閱規則表:讀者類別編碼、圖書類別編碼、限借冊數、每期天數、續借天數、過期日期、罰金等欄位。

讀者類別表:讀者類別編碼、讀者類別等欄位。

圖書類別表:圖書類別編碼、圖書類別等欄位。

3.4 資料庫索引
建立索引是加快查詢速度的有效手段,資料庫的每一個表建立了主鍵,主鍵由一個或幾個欄位組成,每一個表都按主鍵建立了索引,部分表為了滿足查詢和排序的需要,除建立主索引外,還建立了次索引。例如在查詢時要用到「館藏號」、「作者」、「題名」等條件來查找圖書,因此,在書目表上除了對主鍵「館藏號」建立了主索引外,也對「作者」、「書名」等建立了次索引。

3.5 視圖
視圖是從一個或幾個基本表導出的表,它是定義在基本表之上的,它是一個虛表,資料庫中只存放視圖的定義,而不存放視圖對應的數據,數據仍然存放在原來的基本表中。通過定義視圖,可以使用戶眼中的資料庫結構簡單、清晰,並可以簡化用戶的數據查詢操作。由於本系統數據表較多,表中的欄位多,為了簡化對表的操作,我們創建了圖書_按書名查詢、期刊_按刊名查詢、期刊_按編輯部查詢、借閱規則查詢、待還書查詢、超期記錄查詢等30餘個視圖。

3.6 存儲過程
存儲過程是一段經過編譯的程序代碼,存放在資料庫伺服器端。通過調用適當的存儲過程,可在伺服器端處理大量數據,再將處理結果送到客戶端。這樣可減少數據在網路上的傳送,消除網路阻塞現象;例如:要查詢某條記錄,若該記錄在表中的順序號是10000,不採用存儲過程,伺服器將從1至於10000條記錄數據逐條送至客戶端,採用存儲過程後,由於過程是經過編譯的並且是在本地,不需要通過網路,因此能很快查出所需記錄並將結果送到客戶端,大大減少了網上數據傳輸量。存儲過程另一好處是可供不同的開發工具調用,如PB、VB、ASP、Delphi等開發工具均可調用。在流通模塊和WEB查詢模塊上均有圖書檢索功能,實際上調用同一存儲過程完成的。本系統建立了60多個存儲過程,實現諸如借還書處理、新書入庫統計、編目入館藏、讀者統計、生成索書號等功能。

3.7 資料庫調用
採用ODBC介面實現資料庫的調用,採用ADO介面調用。

4 條形碼的使用
條形碼具有唯一性和一次輸入後就可反復使用的優點,利用條形碼技術作為信息快速輸入的手段可迅速且不易發生錯誤地處理圖書管理業務。本系統使用條形碼作為圖書和讀者的標識,實現標識的唯一性。

使用條碼後,能夠使圖書管理工作更加簡單、快捷、不易出錯。例如,當一本書具有唯一條形碼標識,每位讀者也具有唯一條形碼標識時,圖書的借閱、查詢就十分便捷了。應用條形碼取代了以往填寫書袋卡、借書證,核對借閱時間等繁瑣的手工勞動。讀者在借書時只要將借書證給工作人員,工作人員只需登錄借書系統,用條形碼閱讀器掃描讀者借書證上的條形碼,屏幕就會顯示出該讀者的信息,包括讀者姓名、單位、可借幾本書、已借幾本書、是否過期、有無罰款等。如可以借書,工作人員只需用條形碼閱讀器掃描該讀者所需借的書上的條形碼符號後,該書的書名和條形碼等信息都從資料庫中調出顯示在屏幕上,自動記錄在該讀者的借閱檔案中,借書工作即告完成。一般借一本書僅需 1至 2秒鍾。操作完後,計算機自動地將該借閱者和借閱的圖書號碼輸入對應資料庫中,並自動提示借閱期限

Ⅷ 用SQL做圖書管理系統,怎樣視圖 存儲過程 觸發器

存儲過程就好象一個批處理文件一樣,你可以在裡面執行很多的SQL,來得到你最好需要的結果 ,或者說類似於一個函數,調用存儲過程後,T-SQL一次執行很多命令,最終給你個結果

視圖是虛擬表,比如要查詢的東西在兩個表裡,那麼可以把兩個表連接成一個視圖,這樣就可以查詢並顯示兩個表裡的內容了,具體還分左右外連接

觸發器是個特殊的存儲過程,它的執行不是人工操作的,而是由某事件的發生而引發的

你明白了吧
插紅旗 吼吼

Ⅸ 求助!!圖書管理系統借閱圖書 sql存儲過程編寫 執行時出現下列問題:

你沒有定義Massage這個變數! 如果我猜的沒錯,你是想寫Message吧。你前面定義了Message這個變數作為輸出變數的,估計是你寫錯了,求採納!

熱點內容
龍之谷交易所腳本 發布:2024-05-21 12:55:03 瀏覽:743
心理游戲編程 發布:2024-05-21 12:55:02 瀏覽:317
安卓哪個平板有高刷新率 發布:2024-05-21 12:47:06 瀏覽:126
sQliteAndroid事務 發布:2024-05-21 12:41:52 瀏覽:852
孕期計演算法 發布:2024-05-21 12:29:58 瀏覽:418
android虛擬事件 發布:2024-05-21 12:29:11 瀏覽:115
javaeffective 發布:2024-05-21 11:39:58 瀏覽:765
演算法高效 發布:2024-05-21 11:16:06 瀏覽:139
十年前電腦做伺服器 發布:2024-05-21 11:14:35 瀏覽:971
解壓之音 發布:2024-05-21 11:07:37 瀏覽:866