学校图书借阅管理系统(MySQL)
文章目錄
- 一.需求分析
- 1.1項目需求分析簡介
- 1.2數(shù)據(jù)字典
- 1.2.1數(shù)據(jù)項
- 1.2.2數(shù)據(jù)結(jié)構(gòu)
- 二.數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計
- 2.1數(shù)據(jù)流圖
- 2.2數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計
- 三.數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計
- 3.1創(chuàng)建數(shù)據(jù)庫
- 3.2創(chuàng)建表同時創(chuàng)建參照完整性約束
- 3.2.1 book表(圖書)
- 3.2.2 book_type表(圖書類別)
- 3.2.3 js_card表(借閱證)
- 3.2.4 reader表
- 3.2.5 corrow_back表(借,還,續(xù)借)
- 3.2.6 sf_rele規(guī)則表
- 3.2.7 recorf (操作記錄表)
- 四.數(shù)據(jù)庫的實現(xiàn)與維護
- 4.1數(shù)據(jù)的載入與功能的實現(xiàn)
- 4.1.1數(shù)據(jù)的載入
- 4.1.2數(shù)據(jù)庫的功能實現(xiàn)
- 五.數(shù)據(jù)庫的轉(zhuǎn)儲與恢復
- 六.總結(jié)
一.需求分析
1.1項目需求分析簡介
本數(shù)據(jù)庫的用戶主要是學校人員,通過對用戶需求的收集和分析,獲得用戶對數(shù)據(jù)庫的如下要求。
(1) 圖書信息:包括書籍編號,書籍名稱,出版社,作者,庫存量,出版日期,價格,庫存,剩余量,類別等;
(2) 借閱證信息:包括借閱證編號,辦證日期,可借數(shù)量等;
(3) 讀者信息:讀者編號,讀者姓名,讀者性別,讀者電話
(4) 圖書借還信息:包括圖書編號,借閱證編號,讀者編號,借閱日期,借閱數(shù)量,歸還日期,歸還數(shù)量,超期天數(shù),罰款金額等;
學校圖書借閱系統(tǒng)主要由:圖書信息管理,讀者信息管理,借閱證信息管理,借還信息管理,規(guī)則信息等模塊組成。進入改系統(tǒng)后,用戶可以對系統(tǒng)中的信息進行添加、修改、刪除、查詢等操作,包括以下功能:
(1) 圖書信息管理模塊:對圖書信息進行增、刪、改、查等操作;
(2) 讀者信息管理模塊:對讀者信息進行增、刪、改、查等操作;
(3) 借閱證信息管理模塊:增加辦卡,注銷借閱卡等操作;
(4) 借還信息管理模塊:進行借書、續(xù)借、還書等操作,查找出逾期的人及其逾期的天數(shù);
(5) 操作記錄管理模塊:對讀者的借,還,續(xù)借進行實時記錄,便于管理員查找出指定讀者的所有借閱記錄。
(6) 規(guī)則信息管理模塊:記錄借書逾期的人及其逾期的天數(shù),罰款。
1.2數(shù)據(jù)字典
1.2.1數(shù)據(jù)項
含義說明:書籍類別的編號
類型:varchar
長度:5
含義說明:書籍類別的名稱
類型:varchar
長度:100
含義說明:書籍的編號
類型:int
長度:30
含義說明:書籍的名稱
類型:varchar
長度:30
含義說明:書籍的作者
類型:varchar
長度:30
含義說明:書籍的出版日期
類型:date
含義說明:書籍的出版社
類型:varchar
長度:50
含義說明:書籍的價格
類型:int
長度:10
含義說明:相同書籍的庫存
類型:int
長度:100
取值范圍:自然數(shù)
含義說明:相同書籍的剩余量
類型:int
長度:100
取值范圍:自然數(shù)且小于庫存量
含義說明:讀者所辦理的借閱證編號
類型:char
長度:5
含義說明:讀者所辦理的借閱證日期
類型:date
含義說明:該借閱證的可借數(shù)量
類型:int
長度:4
含義說明:讀者的編號
類型:varchar
長度:10
含義說明:讀者的姓名
類型:varchar
長度:20
含義說明:讀者的性別
類型:char
長度:10
含義說明:讀者的電話
類型:int
長度:20
含義說明:圖書被借出的日期
類型:date
含義說明:借出的圖書歸還的日期
類型:date
含義說明:0為否,1為續(xù)借
類型:int
長度:2
含義說明: 借書的數(shù)量
類型:int
長度:100
含義說明: 還書的數(shù)量
類型:int
長度:100
含義說明:借書期限超出了10天
類型:int
長度:30
含義說明:超期的本書
類型:int
長度:100
含義說明:超期罰款(元/本/天)
類型:varchar
長度:100
含義說明:對操作進行備注
類型:varchar
長度:100
1.2.2數(shù)據(jù)結(jié)構(gòu)
含義說明:是學校圖書借閱管理系統(tǒng)的主要數(shù)據(jù)結(jié)構(gòu),定義了圖書的信息
組成:圖書編號,書名,作者,出版日期,出版社,庫存,剩余量,類別;
含義說明:是學校圖書借閱管理系統(tǒng)的主要數(shù)據(jù)結(jié)構(gòu),定義了借閱者的基本信息
組成:讀者編號,姓名,性別,電話號碼;
3.數(shù)據(jù)結(jié)構(gòu):借閱證
含義說明:是學校圖書借閱管理系統(tǒng)的主要數(shù)據(jù)結(jié)構(gòu),定義了借閱證的信息
組成:借閱證號,辦證日期,可借數(shù)量;
4.數(shù)據(jù)結(jié)構(gòu):借,還,續(xù)借
含義說明:是學校圖書借閱管理系統(tǒng)的主要數(shù)據(jù)結(jié)構(gòu),定義了圖書借還的詳細情況
組成:圖書編號,借閱證編號,讀者編號,借還日期,借還數(shù)量,是否續(xù)借
5.數(shù)據(jù)結(jié)構(gòu):規(guī)則
含義說明:是學校圖書借閱管理系統(tǒng)的主要數(shù)據(jù)結(jié)構(gòu),定義了規(guī)則的詳細情況
組成:讀者編號,圖書編號,借閱證編號,超期天數(shù),超期本書,超期處罰
二.數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計
2.1數(shù)據(jù)流圖
1.數(shù)據(jù)流程圖
學校圖書管理系統(tǒng)數(shù)據(jù)流程圖設(shè)計,如圖2-1所示:
2.系統(tǒng)E-R圖
(1)圖書實體E-R圖如圖2-2所示:
(2)圖書類別實體E-R圖如圖2-3所示:
(3)借閱證實體E-R圖如圖2-4所示:
圖2-4 借閱證實體E-R圖
(4)讀者實體E-R圖如圖2-5所示:
圖2-5 讀者實體E-R圖
(5)規(guī)則實體E-R圖如圖2-6所示:
2.2數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計
學校圖書管理系統(tǒng)關(guān)系模型
通過E-R圖轉(zhuǎn)換得到關(guān)系模型如下:
(1) book(book_id,book_name,author,pubdate,publish,price,inventory,residue,typeid)
(2) book_type(typeid,typename)
(3) js_crad(js_id,period,read_id,state,kj_number)
(4) reader(read_id,read_name,read_sex,read_tel,js_id
(5) borrow_back(js_id,read_id,book_id,borrowdate,due,shf_xvjie,js_count,hs_count,text_jh)
(6) sf_rule(read_id,book_id,js_id,days,num,mony)
(7) record(jishu, read_id, time, text)
說明:
(1) book關(guān)系模型中有9個屬性,其中book_id(書籍編號)為主鍵,typeid為外鍵;
(2) book_type表有2個屬性,其中typeid為主鍵,圖書分類;
(3) js_crad表有5個屬性,其中js_id為主鍵,read_id為外鍵;
(4) reader表中有5個屬性,其中read_id為主鍵,js_id為外鍵
(5) borrow_back有9個屬性,其中js_id,read_id,book_id為外鍵,沒有主鍵
(6) sf_rule表有6個屬性,其中js_id,read_id,book_id為外鍵,沒有主鍵
(7) record表有4個屬性,其中jishu,為主鍵。
關(guān)系模型對應(yīng)的二維表
(1) book表信息如下表所示:(書籍信息)
(3) js_card表信息如下表所示:(借閱證信息)
三.數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計
3.1創(chuàng)建數(shù)據(jù)庫
CREATE DATEBASE library;3.2創(chuàng)建表同時創(chuàng)建參照完整性約束
3.2.1 book表(圖書)
CREATE TABLE book (
book_id INT(10) NOT NULL,
book_name VARCHAR(30) NOT NULL,
author VARCHAR(30) NOT NULL,
pubdate DATE NOT NULL COMMENT ‘出版日期’,
publish VARCHAR(50) NOT NULL COMMENT ‘出版社’,
Price INT(20) NOT NULL,
inventory INT(100) NOT NULL COMMENT ‘總數(shù)量’,
residue INT(100) NOT NULL COMMENT ‘剩余量’,
typeid VARCHAR(20) NOT NULL COMMENT ‘書籍類別’,
PRIMARY KEY (book_id),
KEY bo1 (typeid),
CONSTRAINT book_ibfk_1 FOREIGN KEY (typeid) REFERENCES book_type (typeid)
)
3.2.2 book_type表(圖書類別)
CREATE TABLE book_type (
typeid VARCHAR(5) NOT NULL,
typename VARCHAR(100) DEFAULT NULL,
PRIMARY KEY (typeid)
)
3.2.3 js_card表(借閱證)
CREATE TABLE js_card (
js_id CHAR(5) NOT NULL,
period DATE DEFAULT NULL COMMENT ‘簽證日期’,
read_id VARCHAR(10) DEFAULT NULL,
state VARCHAR(50) DEFAULT NULL COMMENT ‘說明’,
kj_number INT(4) DEFAULT NULL COMMENT ‘可借數(shù)量’,
is-kejie VARCHAR(10) DEFAULT NULL COMMENT ‘是否可借’,
PRIMARY KEY (js_id),
KEY read_id (read_id),
CONSTRAINT js_card_ibfk_1 FOREIGN KEY (read_id) REFERENCES reader (read_id)
)
3.2.4 reader表
CREATE TABLE reader (
read_id VARCHAR(10) NOT NULL,
read_name VARCHAR(20) NOT NULL,
read_sex CHAR(2) NOT NULL,
read_tel INT(20) NOT NULL,
js_id CHAR(5) NOT NULL,
PRIMARY KEY (read_id),
KEY 1 (js_id),
CONSTRAINT reader_ibfk_1 FOREIGN KEY (js_id) REFERENCES js_card (js_id)
)
3.2.5 corrow_back表(借,還,續(xù)借)
CREATE TABLE borrow_back (
js_id VARCHAR(10) DEFAULT NULL COMMENT ‘借書證號’,
read_id VARCHAR(10) DEFAULT NULL COMMENT ‘讀者編號’,
book_id INT(10) DEFAULT NULL COMMENT ‘書籍編號’,
borrowdate DATE DEFAULT NULL COMMENT ‘出借日期’,
due DATE DEFAULT NULL COMMENT ‘歸還日期’,
shf_xvjie TINYINT(4) DEFAULT NULL COMMENT ‘是否續(xù)借’,
js_count INT(100) DEFAULT NULL COMMENT ‘借書個數(shù)(本)’,
hs_count INT(100) DEFAULT NULL COMMENT ‘還書個數(shù)(本)’,
text_jh VARCHAR(100) DEFAULT NULL COMMENT ‘借還說明’,
KEY bb1 (js_id),
KEY bb2 (read_id),
KEY bb3 (book_id),
CONSTRAINT bb1 FOREIGN KEY (js_id) REFERENCES js_card (js_id),
CONSTRAINT bb2 FOREIGN KEY (read_id) REFERENCES reader (read_id),
CONSTRAINT bb3 FOREIGN KEY (book_id) REFERENCES book (book_id)
)
3.2.6 sf_rele規(guī)則表
CREATE TABLE sf_rule ( read_id varchar(10) DEFAULT NULL,
book_id int(10) DEFAULT NULL COMMENT ‘書籍編號’,
js_id varchar(10) DEFAULT NULL COMMENT ‘借書證號’,
days int(30) DEFAULT NULL COMMENT ‘期限’,
num int(100) DEFAULT NULL COMMENT ‘本書’,
mony varchar(100) DEFAULT NULL COMMENT ‘超期處罰’,
KEY js-id (js_id),
KEY read_id (read_id),
KEY book_id (book_id),
CONSTRAINT sf_rule_ibfk_3 FOREIGN KEY (js_id) REFERENCES js_card (js_id),
CONSTRAINT sf_rule_ibfk_1 FOREIGN KEY (read_id) REFERENCES reader (read_id),
CONSTRAINT sf_rule_ibfk_2 FOREIGN KEY (book_id) REFERENCES book (book_id)
3.2.7 recorf (操作記錄表)
CREATE TABLE record (
jishu int(100) NOT NULL AUTO_INCREMENT,
read_id varchar(10) NOT NULL,
time datetime DEFAULT NULL,
text varchar(200) DEFAULT NULL,
PRIMARY KEY (jishu)
)
四.數(shù)據(jù)庫的實現(xiàn)與維護
4.1數(shù)據(jù)的載入與功能的實現(xiàn)
4.1.1數(shù)據(jù)的載入
1.book表信息
SQL語句:INSERT INTO library.book
VALUES(4, 《底層邏輯》,劉一,2021-12-20, 人民出版社, 34, 100, 100, B1);
結(jié)果如下圖4-1:
2.js_card表信息
SQL語句:INSERT INTO library.js_card
VALUES(a11,2021-12-2,re1,最多借5本,不得超期,5);
結(jié)果如圖4-2所示:
3.reader表信息
SQL語句:INSERT INTO library.reader
VALUES(re1,劉三,男,199999991,a11);
結(jié)果如圖4-3所示:
4.1.2數(shù)據(jù)庫的功能實現(xiàn)
1.實現(xiàn)信息的添加
結(jié)果如圖4-4所示:
2. 實現(xiàn)信息的刪除
刪除操作記錄表中讀者編號為re3的借還記錄
結(jié)果如圖4-5所示:
3.信息修改操作
UPDATE js_card SET state=‘不得超期10天’ WHERE js_id=‘b11’;
結(jié)果如圖4-6所示:
4.信息查詢操作
SELECT * FROM book_type;
結(jié)果如圖4-7所示:
5. 創(chuàng)建觸發(fā)器實現(xiàn)借閱圖書時,自動更新圖書剩余量
CREATE TRIGGER jie_1 – 借書減少剩余量
AFTER INSERT
ON borrow_back
FOR EACH ROW
UPDATE book SET residue=residue-NEW .js_count WHERE book_id=NEW .book_id ;
結(jié)果如圖4-8所示:
6. 創(chuàng)建觸發(fā)器實現(xiàn)借閱圖書時,自動更新借閱證的可借量
CREATE TRIGGER jie_2 – 借書減少借閱證的可借量
BEFORE INSERT
ON borrow_back
FOR EACH ROW
UPDATE js_card SET kj_number=kj_number-NEW .js_count WHERE js_id=NEW .js_id;
結(jié)果如圖4-9所示:
7. 創(chuàng)建觸發(fā)器實現(xiàn)還書圖書時,自動更新圖書的剩余量
DELIMITER @@
CREATE TRIGGER huan_1 – 還書增加剩余量
BEFORE UPDATE
ON borrow_back
FOR EACH ROW
BEGIN
IF OLD .due IS NULL AND NEW .due IS NOT NULL
THEN
UPDATE book SET residue=residue+NEW .hs_count WHERE book_id=NEW .book_id;
END IF;
END @@
8.創(chuàng)建觸發(fā)器實現(xiàn)歸還圖書時,自動更新借閱卡的可借量
CREATE TRIGGER huan_2 – 還書增加借閱卡的可借量
BEFORE UPDATE
ON borrow_back
FOR EACH ROW
UPDATE js_card SET kj_number=kj_number+NEW .hs_count WHERE js_id=NEW .js_id;
結(jié)果如圖4-11所示:
9. 創(chuàng)建觸發(fā)器實現(xiàn)借還圖書時,記錄的自動更新
DELIMITER@@-- 創(chuàng)建觸發(fā)器,實現(xiàn)借,還,續(xù)借時,記錄的自動更新
CREATE TRIGGER record222
AFTER UPDATE ON borrow_back
FOR EACH ROW
BEGIN
INSERT INTO record
VALUES(NULL,NEW .read_id,NOW(),NEW .text_jh);
END@@
結(jié)果如圖4-12所示:
11.創(chuàng)建存儲過程查詢指定讀者的借書情況
DELIMITER @@
CREATE PROCEDURE reader_xx(IN a VARCHAR(10))
BEGIN
SELECT * FROM record WHERE read_id=a ;
END@@
結(jié)果如圖4-14所示:
12.創(chuàng)建視圖查詢圖書的書籍編號,書籍名稱,庫存量,剩余量
CREATE VIEW v_book
AS
SELECT book_id AS 書籍編號 ,book_name 書籍名稱,
inventory庫存量,residue 剩余量
FROM book;
結(jié)果如圖4-15所示:
13.查找超期10天的人
SELECT *,TIMESTAMPDIFF(DAY,borrowdate,due)-10 超期天數(shù)
FROM borrow_back
WHERE TIMESTAMPDIFF(DAY,borrowdate,due)>=10;
結(jié)果如圖4-16所示:
14.創(chuàng)建存儲過程計算罰款金額
DELIMITER @@
CREATE PROCEDURE mony(IN c VARCHAR(10))
BEGIN
SELECT , 0.2days*num AS 罰款金額 FROM sf_rule WHERE js_id=c;
END@@
DELIMITER ;
CALL mony(‘a(chǎn)11’);
結(jié)果如圖4-17所示:
五.數(shù)據(jù)庫的轉(zhuǎn)儲與恢復
1.在數(shù)據(jù)庫中備份數(shù)據(jù),文件名為myemployees.sql
如圖5-1所示:
2.轉(zhuǎn)儲與備份的導入
如圖5-2所示:
六.總結(jié)
對于這次的學校圖書借閱管理系統(tǒng)的設(shè)計上,還存在一些細化的問題,該系統(tǒng)只能滿足一般的功能需求,存在一定的缺陷。比如,先在借還表中查找借書逾期人員,然后需要手動將信息導入規(guī)則表中。
在讀者進行借書時,缺少權(quán)限的設(shè)置。應(yīng)該創(chuàng)建一個存儲過程,傳入借閱證號和書籍編號,沒有圖書時,輸出“該書籍不存在”;借閱證的可借量為0時,輸出“該卡不能借閱”。但對于數(shù)據(jù)庫語法不夠熟練,出錯太多,該功能未能實現(xiàn)
最后,感謝老師和同學的指導和幫助,以后我會更加用心學習知識,并運用到實際中。
參考文獻:
[1]數(shù)據(jù)庫原理及應(yīng)用:MySQL版:微課視頻版/李月軍,付良延編著.—北京:清華大學出版社,2019(2021.2重印).
[2] 錢雪忠、陳國俊等,數(shù)據(jù)庫原理及應(yīng)用實驗指導[M].北京:北京郵電大學出版社,2015.
總結(jié)
以上是生活随笔為你收集整理的学校图书借阅管理系统(MySQL)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于Sound Blaster Cine
- 下一篇: Ubuntu18.04设置系统默认音频设