『壹』 設計圖書管理系統sql查詢語句
1
SELECT *
FROM C
WHERE C# IN(SELECT C# FROM SC GROUP BY C# HAVING COUNT(*) BETWEEN 2 AND 4)
2
SELECT S#
FROM SC JOIN C ON SC.C#=C.C#
WHERE CN='計算機基礎'
GROUP BY S#
HAVING COUNT(*)>=2
『貳』 有關圖書館借閱系統的SQL語句
修改列名sp_rename 'mytable.name','新的列名'
但是次功能會破壞資料庫結構請慎用.
exec sp_rename 『table.oldfield』,』newfield』,』column』
Select的基本查詢
1. 選擇所有列
Select *from student
2. 選擇指定的若干列
Select s_avgrade , s_name
From student
3. 構造計算列
Select s_name 姓名,year(getdate())-year(s_birthday) 年齡
From student;
帶DISTINCT的查詢
SELECT DISTINCT s_dept 所在的系
FROM student;
比較上下的區別
select s_dept 所在的系
from student;
帶WHERE子句的條件查詢
select s_no 學號,s_name姓名,s_sex性別,s_avgrade平均成績
from student
where s_avgrade>=90;
帶BETWEEN的范圍查詢
select s_name 姓名,s_sex 性別,s_dept 系別,s_avgrade 平均成績,s_brithday 出生年月
from student
where s_brithday ("not between") BETWEEN '1986-00-00' and '1987-00-00';(這里的日期從 char 數據類型到 smalldatetime 數據類型的轉換導致 smalldatetime 值越界,全部寫0好像不對,具體一點到是可以運行)
-----------------------------帶IN的范圍查詢
select s_no 學號,s_name 姓名,s_sex 性別,s_speciality 專業,s_dept 系別,s_avgrade 平均成績,s_brithday 出生年月
from student
where s_speciality in('電子信息工程','生物工程');(查詢所選定s_speciality的student的信息)
select s_no 學號,s_name 姓名,s_sex 性別,s_speciality 專業,s_dept 系別,s_avgrade 平均成績,s_brithday 出生年月
from student
where s_speciality='電子信息工程'or s_speciality='生物工程');
-------------------帶GROUP的分組查詢
1.select s_dept 系別,count(*) 人數
from student
group by s_dept;(統計各個s_dept的人數)
2.select s_dept 系別,count(*) 人數
from student
group by s_dept
having count(*)>=3; (統計各個s_dept的人數,但是只輸出人數大於3的)
帶like的匹配查詢和帶is的空值查詢
--------------------------帶like的匹配查詢
select s_no 學號,s_name 姓名,s_sex 性別,s_speciality 專業,s_dept 系別,s_avgrade 平均成績,s_brithday 出生年月
from student
where s_name like 'y%';(只能查開頭為y的名字且為第一個字,如果要具體查出"yd",就應寫"y%d%") )
空值null的查詢
Select *
from student
where s_avgrade=null;——錯誤
Select *
from student
where s_avgrade is null;——正確
------------使用Order排序查詢結果
如果ASC和DESC都沒有選擇,則按依據列進行升序排列,即ASC為默認值
1.select s_no 學號,s_name 姓名,s_sex 性別,s_speciality 專業,s_dept 系別,s_avgrade 平均成績,s_brithday 出生年月
from student
where s_sex='男'
order by s_avgrade DESC;
2.select s_no 學號,s_name 姓名,s_sex 性別,s_speciality 專業,s_dept 系別,s_avgrade 平均成績,s_brithday 出生年月
from student
where s_sex='男'
order by s_avgrade DESC,s_no;(先按s_avgrade的要求(DESC)排序,之後按s_no(默認的是升序排列),如果後面仍然有要求,依前面類推)
-------------連接查詢
同時涉及兩個或兩個以上數據表的查詢稱為連接查詢
1.等值連接和自然連接查詢
select student.s_no 學號,s_name 姓名,s_sex 性別,s_speciality 專業,s_dept 系別,c_name 課程名稱,c_grade 課程成績
from student,sc
where student.s_no =sc.s_no;
---------------------------------
2.自連接查詢(創建同義詞student2)
Sql server 2000貌似還沒有創建同義詞的功能,Sql server 2005才有,不知道這說法對不對!!!
select student2.s_no 學號,student2.s_name 姓名,student2.s_sex 性別,student2.s_speciality 專業,student2.s_avgrade 平均成績
from student,student2
where student,s_name='yx'
and student.s_speciality=student2.s_speciality
-----------------------------------
3.外連接查詢
select s_name 姓名,s_sex 性別,s_speciality 專業,s_dept 系別,
sc.c_name 課程姓名, sc.c_grade 課程成績
from student left join sc on (student.s_no=sc.s_no);
以上是左外連接
把最後一句改為
from sc right join student on (student.s_no=sc.s_no);
-------------嵌套查詢
使用謂詞IN的嵌套查詢
查出an和yo所在專業的所有學生
方法一.
第1步select student.s_speciality
from student
where student.s_name='an'or student.s_name='yo'
第2步 將第一步得到的結果放到下面
select *
from student
where student.s_speciality in ('電子信息工程','生物工程');
方法二.
select *
from student
where student.s_speciality in (
select student.s_speciality
from student
where student.s_name='an' or student.s_name='yo');
-----使用比較運算符的嵌套查詢
查詢所有成績比yo低的學生
select s_no 學號,s_name 姓名,s_speciality 專業,s_avgrade平均成績
from student
where s_avgrade<(
select s_avgrade
from student
where s_name='yo');
-----------------使用謂詞EXISTS的嵌套查詢
select s_no 學號,s_name 姓名,s_speciality 專業
from student
where exists(
select *
from sc
where student.s_no=s_no and c_name='演算法設計與分析');
-----------------查詢的集合運算
對任意兩個SELECT語句進行集合運算
Union--並
Intersect--交
Except--差
select s_no 學號,s_name 姓名,s_speciality 專業,s_avgrade 平均成績
from student
where s_speciality='計算機軟體與理論'
Union------換成intersect和except都會出問題,網上查了一下說是Sql Server 2000 不支持。
select s_no 學號,s_name 姓名,s_speciality 專業,s_avgrade 平均成績
from student
where s_avgrade>=85;
------------------SQL的數據操縱功能
將學號為『50』,姓名『lo』,性別『男』,出生日期『1987-1-1』,專業為『計算機應用技術』,
平均成績『92.5』,系別『計算機系』的學生記錄插入student
insert into student(s_no,s_name,s_sex,s_brithday,s_speciality,s_avgrade,s_dept)
values('50','lo','男','1987-1-1','計算機應用技術',92.5,'計算機系')
將查詢到的數據輸入到另一個數據表中
1.當然首先要自己creat一個表,例如student1
2.insert into student1(s_no,s_name,s_speciality,s_avgrade,s_dept)
(select s_no,s_name,s_speciality,s_avgrade,s_dept
from student);
---SQLserver 2000 可以在企業管理器上視圖建表
也可以在SQL查詢分析器上寫create建表
-------------------使用Update語句更新數據
將所有學生的平均成績減5分
update student
set s_avgrade=s_avgrade-5;
將所有女生的成績加上原來分數的1%
update student
set s_avgrade=s_avgrade+s_avgrade*1%
where s_sex='女';
如果表student中平均成績s_avgrade是表sc中的課程成績c_grade的平均值。
1.---創建一個用於存放中間結果的數據表tmp_table
create table tmp_table(
s_no char (8)
s_avgrade numberic(3,1)
);
2.---通過按學號分組的方法求各個學生的平均成績,並將其學號和平均成績存放到表tmp_table
insert into tmp_table(s_no,s_avgrade)
(select s_no,AVG(c_grade)
from sc
group by s_no);
3.---用表tmp_table中各個學生的平均成績(tmp_table.s_avgrade)
更新student中的平均成績(student.s_avgrade).對於沒有選修的學生,其成績為空值NULL.
Update student
Set s_avgrade=(select s_avgrade from tmp_table where s_no=student.s_no);
DROP table tmp_table;
-----使用DELETE語句刪除數據
刪除表student中的所有數據
DELETE
from student;
刪除表中沒有選修任何課程的學生
delete
from student
where s_no not in (
select s_no
from sc);
------------SQL的數據控制功能
1.授予許可權
SQL語句中操作全限是由GRANT語句來完成的。
把對表student的修改,查詢許可權給user1,user2
grant update,select
on student
to user1,user2;
把表sc中c_no和c_name的插入許可權授權給user1,並同時給他授予許可權的轉授權。
grant insert(c_no,c_name)
on sc
to user1
with grant option;
把對表sc和表student的全部操作權授給user1和user2
grant all privileges[給予所有的許可權]
on student,sc
to user1,user2;
把對表student的查詢許可權授權給所有資料庫用戶
grant select
on student
to public;
對象 對象類型 操作許可權
------------------------
基本表,列 TABLE select,insert,update,delete,alter,index,all privileges
視圖 TABLE select,insert,update,delete,all privileges
資料庫 Database create table
-----------------------
2.收回許可權
revoke update,select
on student
to user1,user2;
收回user1,user2對student查看和修改許可權
------
revoke insert(c_no,c_name)
on sc
from user1;
收回user1對sc表c_no,c_name的插入許可權和許可權的授予權
------
revoke select
on student
from public;
收回所有用戶對student查詢許可權
『叄』 sql題目,關於圖書信息管理系統
在此圖書館管理系統中,使用到了一個重要的連接,即與資料庫Accesss相連。資料庫中存有圖書館中所信息,包括讀者信息、管理員資料、借閱與退還記錄。所有與管理有關的數據皆在其中,是保證系統能夠正常實現各種功能的一架橋。
1、 資料庫需求分析
⒈Admi表,即管理員表,記錄了用戶名和密碼。
⒉Admirz表,即管理日誌表,記錄了書號、書名、圖書證號、借/還、操作日期、已付款額。
⒊book表,即圖書表,記錄了書號、書名、作者、出版社、入庫時間、是否借出、價格。
⒋borrowbook表,即借閱表,記錄了圖書證號、書號、借閱日期、應還日期。
⒌person表,即讀者表,記錄了圖書證號、姓名、性別、系別、班級。
2 、資料庫表的設計
⒈Admi表
表中記錄了可以使管理員進入該系統的用戶名及密碼,如表1所示。
表5借閱表
『肆』 SQL資料庫圖書館管理系統求代碼!急用!
USE master go CREATE DATABASE tangzhangsentsg ON ( NAME = librarysystem, FILENAME = 'c:\tangzhangsenlibrary.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = 'library', FILENAME = 'c:\tangzhangsenlibrary.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) go
『伍』 SQL設計圖書管理系統
目 錄
圖書管理信息系統的設計和實現
端應用程序的開發兩個方面。對於前者要求建立起數據一致性和完整性強、數據安全性好的資料庫。而對於後者則要求應用程序功能完備,易使用等特點。
本圖書管理信息系統是利用計算機管理信息處理的迅速、准確、可靠且具有強大存儲能力的突出特點,全面提高圖書館的管理水平和工作效率,並以及時、完整的業務經營資料,為圖書館的及時轉換提供一定的支持。本圖書管理系統涵蓋了六個主要的子系統:圖書資料管理、讀者資料管理、借書操作、還書操作、修改密碼和查詢處理,並通過信息的收集、整理、存儲、傳遞將它們有機地結合起來,提高了工作的准確率和效率。
本論文從系統分析、需求分析、概要分析、詳細分析到系統實施、系統運行、系統維護等幾個方面詳細闡述了圖書管理系統的開發過程,記錄了開發過程中的分析依據和設計思路及相關圖表,闡明了主要的設計內容和實施、運行情況,為本系統的使用、升級提供了完備的資料。
本系統開發時間將近四個月,初步完成了圖書管理信息系統的初級版本,系統基本上實現了原定的基本功能,並將在以後進行陸續的改進和完善。
關鍵詞:Delphi;SQL Server 2000;資料庫;圖書管理信息系統
Design And Implementation of The Books Management Information System
Abstract:The books management information system is the typical information management system (MIS), It mainly develops including two respects ,one is setting-up and maintenance of backstage supporter's database . Another is developing the front application program. As to the former demand set up data consistency , integrality strong and data security kind database.require to the latter the function of the application program is complete , Easy to use and so on the characteristic.
This books management information system is using the computer management information processing rapid, accurate, is reliable also has the formidable memory property the prominent characteristic, comprehensively enhances the library the management level and the working efficiency, and take the prompt integrity account executive material, provides the certain support for newer books and reference materials in time of the library. The books management information system has covered six subsystems: The books and reference materials management, the reader material management, taking advantage of the book operation, modify password and also the book operation, inquiry processing, and through the information collection, the reorganization, the memory, the transmission organically unifies them, enhanced the work rate of accuracy and the efficiency.
This thesis from the system analysis, the demand analysis, the outline analysis, the multianalysis to the system implementation, the system movement, the system maintenance and so on several aspects in detail elaborated the books management information system performance history, recorded in the performance history analysis to rest on and to design the mentality and the correlation graph, had expounded the main design content and the implementation, the movement situation, for this system use, the promotion have provided the complete material.
This system is nearly four months construction period, finished the elementary edition of the books administrative system tentatively, the system has basically realized the original basic function, and will carry on improvement and completion successively afterwards.
Keyword: Delphi ; SQL; database; books management information system
前 言
隨著我國經濟的高速發展,人們的物質需求已趨向飽和,而精神上的需求卻日益提高。學習的繁重、工作的壓力、競爭的刺激使人們感到知識的睏乏,渴望進一步的充電。同時當今時代是飛速發展的信息時代。在各行各業中離不開信息處理,正是因此計算機被廣泛應用於信息管理系統的環境。計算機的最大好處在於利用它能夠進行信息管理。管理信息系統是先進的科學技術和現代管理相結合的產物,建立以計算機為主要手段的管理信息系統,已成為現代企業、政府部門等各類組織提高自身素質、實現組織的戰略目標。使用計算機進行信息控制,不僅提高了工作效率,而且大大的提高了其安全性尤其對於復雜的信息管理,計算機能夠充分發揮它的優越性。計算機進行信息管理與信息管理系統的開發密切相關,系統的開發是系統管理的前提。
為滿足圖書館業務發展的需要,提高競爭能力,我決定利用計算機來提高圖書館管理水平和工作效率。根據圖書館的日常需要,確定系統要實現六個基本功能:圖書資料管理、讀者資料管理、借書操作、還書操作、修改密碼和查詢處理。同時該系統具有強大的查詢功能和可靠性。
目標是努力達到:讀者滿意。圖書館內藏書豐富,品種齊全,但隨著信息處理量的快速增大,工作越來越繁多、要求全面、先進、高效。純辦公軟體無論從准確度還是及時性上都已無法滿足業務的需要。因此,開發一個界面友好,易於操作的圖書館軟體進行自動化處理變得十分重要,本系統開發目的和意義就是為了管理好圖書館信息,使圖書管理工作規范化、系統化、程序化,避免圖書管理的隨意性,提高信息處理的速度和准確性,能夠及時、准確、有效的查詢和修改圖書情況。此圖書管理信息系統以「以人為本」為服務宗旨,提高對讀者的服務質量。
1 Delphi和SQL簡介
1.1 資料庫的介紹
資料庫技術是計算機科學技術中的重要領域,也是應用最廣的技術之一,而且已經成為電子信息系統的重要核心技術。眾所周知,計算機應用從科學計算進入數據處理是一個劃時代的轉折。數據處理是指對各種形式的數據進行收集、存儲、加工和傳播的一系列活動的總和。其目的是從大量的,原始的數據中抽取,推導出對人們有價值的信息經作為行動和決策的依據,是為了藉助計算機科學地保存和管理復雜的,大量的數據以便人們能方便而充分地利用這些寶貴的信息資源。資料庫技術所研究的問題就是如何科學地組織和存儲數據,如何高效地獲取和處理數據。資料庫系統就是當代計算機系統的重要組成部分。
數據處理的中心問題是數據管理,數據管理隨著計算機硬體和軟體的發展而不斷發展,經歷了三個階段:人工管理階段,文件系統階段和資料庫系統階段。資料庫系統具有以下特點:(1)數據結構化。(2)數據的共享性高、冗餘度低、易擴展。(3)數據獨立性高。(4)數據由DBMS統一管理和控制。包括數據的安全性保護,數據的完整性檢查,並發控制以及資料庫備份和恢復[2]。我做的圖書管理系統中主要是用了Delphi和SQL 。
1.2 Delphi的簡介
計算機軟體的開發分為兩個不同的分支,其中一個分支是使用傳統的程序設計語言開發數值控制、數值運算等軟體,圍繞它們的重點是演算法,數據結構以及面向對象技術,這里基本採用Pascal,Basic和C等到高級程序設計語言。另一個分支則是通用的資料庫管理軟體領域即資料庫應用程序的開發。這兩個分支的發展都有極為迅速,但是二者並沒出現混合滲透的跡象。如果使用資料庫語言進行傳統的編程,雖然也能完成相應的功能,但是其編程過程可能極為復雜。反之,如果使用傳統的編程語言進行資料庫編程,通過調用專用的資料庫應用程序介面函數據和過程,可能也會做出比較完善的資料庫管理程序,但做起來大多是極其困難的。而Delphi結合了兩個分支的優點,它結合了傳統的編程語言Object Pascal和資料庫語言的強大功能,既可以用於傳統的演算法編程,又可以用於資料庫編程。特別是Delphi具有強大的資料庫開發功能,利用Delphi的資料庫開發工具,根本不需要編寫任何Object Pascal代碼便可以創建一個一般的資料庫應用。
Delphi是面向對象的開發工具,它是目前開發客戶/伺服器資料庫應用程序的強有力的工具。Delphi目前有兩個版本:標准版本和客戶/伺服器版本。標准版本包含一個Borland Database Engine的局部拷貝,它允許用戶創建能訪問Dbase,Paradox 和 Local Inter Base伺服器的資料庫應用,它還支持具有ODBC(Open Database Connecticity)介面的資料庫。客戶/伺服器版本包括Borland SQL Link,它能直接訪問Oracle,SyBase 和Microsoft SQL Server,Informix等多種資料庫伺服器。
Delphi可以訪問多種資料庫管理系統的資料庫,憑借窗體和報表,BDE(Borland Database Engine)可以訪問Paradox,dbase,本地Inter Base伺服器的資料庫,也可以訪問遠程資料庫伺服器的
2 系統分析
2.1 系統調查
系統調查的主要內容有:系統的基本情況、系統中信息處理的狀況、系統的資源情況及系統的各類人員對信息系統的態度。同時我了解到圖書館的使用人員有(1)系統管理員:維護整個系統的正常運行、及時更新系統,給每個新用戶建立讀者信息,給每個注銷用戶刪除相應的讀者信息。(2)圖書管理員:負責給同學辦理借書、還書、修改圖書基本信息和圖書流通狀態。(3)讀者:包括學生用戶、老師用戶和外界人士。
圖書館的組織機構設置如圖1所示。
圖1圖書館的組織結構
系統中信息處理狀況:
通過對原有系統數據流程的分析,可以發現這種模式存在著一些不合理之處,完全可以改進,使工作效率提高,減少信息迂迴。
圖書館現行系統存在的問題:第一,日常管理工作缺乏規范性,隨意性很大,對人的經驗水平有很大的依賴性,因此具體操作往往因人而異;第二,資料多次手工處理,如逾期通知等,出錯率高,完全可以用資料庫檢索自動生成。第三,數據重復率高,有些地方人員多次使用相同數據,有些信息完全可以歸類,第四,缺乏統計工作。
所以完全可以通過建立一套完整的圖書管理信息系統,來對信息進行查詢、修改、統計、檢索等日常管理工作,盡量減少的人員介入和數據冗餘,以簡練實用為基礎,實現信息管理計算機化提高工作效率和信息化水平。
2.2 可行性分析
可行性分析對系統的開發至關重要,可以大幅減少不必要的損失,保證系統開發的順利進行。因此要對系統進行技術可行性、經濟可行性、操作可行性三方面的系統可行性分析:
2.2.1 技術可行性
近幾年來計算機技術發展異常迅猛,高速度大容量的電腦已成為許多學校里日常工作必不可少的設備,隨著辦公自動化的軟體不斷涌現,微機的普及為該系統的開發奠定了堅實的基礎。
2.2.2 經濟可行性
一方面,系統的開發不需要額外增加設備購置費、軟體開發費、管理和維護費用。另一方面,系統的開發可以較好地解決圖書館因日常事務繁雜而造成的處理效率低,出錯率偏高的局面,並可以及時了解各項日常事務的進展情況,為及時調整庫存資料提供可靠的數據支持,從而明確工作目標,同時還可以減少人工勞動、提高工作效率、增加書本流通量。
2.2.3 操作可行性
計算機以強大的信息處理能力作為人類腦力勞動的有利助手登上歷史舞台後,已滲透到社會生活的各個領域,使現代社會組織、特別是企業,學校的信息處理能力適應現代化管理的要求,且系統逐步從單項事務信息處理系統迅速向綜合服務(決策支持系統)的管理信息系統發展。本系統使用界面良好,易於操作。圖書館擁有一批較高素質的員工,只需了解相關知識,就可熟練操作本系統了。
通過以上分析,圖書館管理信息系統的開發在經濟上、技術上、操作上都是可行的。
2.3 系統的總目標
圖書館管理信息系統的總目標是按照管理信息系統的管理和開發方法,採用先進的信息技術和手段,支持並規范圖書和讀者資料的管理、借書、還書、修改密碼、查詢書本或學生等操作的全過程,並加強上述過程中各種信息資源的管理和應用,提高各部門管理工作的現代化水平,實現各部門信息的准確、及時處理和溝通及共享,為圖書館對庫存資料的決策提供有利的支持和反饋信息,以實現圖書館的總體目標。
2.4 具體目標
(1)每年開學,新生報到的時候,圖書館系統管理員要給每一位新生的信息建立個人檔案,辦理圖書借閱證。學生的個人檔案包括學生的學號、姓名、性別、班級、年級、所屬專業、電話號碼。
(2)學生畢業的時候,圖書館系統管理員要及時對每位學生的信息進行刪除。
(3)每次新進圖書的時候,圖書管理員要對每本圖書的信息進行管理和錄入,以方便讀者的借閱。圖書的基本信息有:圖書索引號、圖書名、作者、出版社、出版日期和圖書的使用狀態。
(4)當圖書被讀者借閱的時候,圖書管理員要改變圖書的使用狀態,不再允許借閱,但是允許預約,而且每本書只允許被一個讀者借閱,也只能被一個讀者預約。
(5)當學生借閱的圖書延期的時候,圖書管理員要及時通知學生歸還圖書,並對其進行相應的處罰。學生可以在圖書未超期的情況下辦理續借。
(6)學生可以在圖書管理系統中查詢自己的借閱情況。
(7)當圖書被損壞或圖書出館時,圖書管理員要及時修改相應的圖書信息。
(8)系統還應該提供強大的數據統計,查詢等功能。
(9)系統應充許外界人士通過規定的步驟注冊成為新用戶,並享有一定的權利。
(10)系統應該有很好的可擴展性。
3 需求分析
需求分析階段的根本任務是要明確圖書館在決策和日常事務處理上的信息需求,以便提出整個系統的總體方案。在需求分析中,主要採用流程圖和數據字典來描述。
3.1 事務流程圖
通過對圖書館的多次調查,大致了解了圖書館的日常的管理事務流程。每日處理的工作如圖2所示。
圖2圖書館的事務圖
(1) 圖書資料的管理
圖書管理員將采購的圖書入庫分類處理,同時建立相關的圖書資料信息,如果該書已有,則修改現有書本數等於原有書本數加新增書本數。如有圖書損壞及罰款處理,也修改圖書資料信息。如果圖書出館,則刪除相關的圖書資料信息。
(2) 讀者資料管理
每年新生入校的時候,系統管理員要為每一個學生辦理相應的圖書借閱許可證,學生填寫登記表包括學生學號、姓名、性別、年級、班級、專業名稱、電話號碼等基本信息。核對無誤後交由系統管理員辦理學生借閱證,如果讀者更改任何個人信息,則應由學生寫出書面申請,由系統管理員在相應的讀者基本信息中進行修改。如果學生要離開學校,則審核該讀者是否有逾期書籍和損壞,如無,則辦理撤消業務,同時在讀者資料庫中刪除該讀者。最後給讀者合格注銷通知。對於教師用戶也是一樣的處理過程。
(3) 借書操作
讀者把借閱證及想要借的圖書交給圖書管理員,圖書管理員進行審核,如該讀者是否有過期未還的圖書,是否借閱圖書已超過五本或未交清罰款,有上述情況之一則通知該讀者借閱不成功。否則借閱成功,圖書交給讀者。同時圖書管理員修改圖書、讀者及圖書流通信息表。如讀者逾期則可電話聯系。如讀者發現該圖書已借出,則只可在圖書資料庫中進行預約。一本書同一時間只能被一個讀者預約。如讀者續借,則延長讀者應還書日期。讀者只可在該書本尚未超期的情況下才可以進行續借,否則續借不成功。
(4) 還書操作
讀者把借閱證及要還圖書交給圖書管理員,由他進行審核,如該圖書有逾期或破損,則通知該讀者按比例罰款。否則圖書交圖書管理員放回書庫。並修改圖書、讀者借書信息表。讀者遺失書本則給予原價五倍賠償。
(5) 查詢處理
讀者可以到圖書館內的電腦上查詢自己的借書信息表,查詢圖書是否逾期,是否可以進行續借,也可以查找自己要借的圖書是否在館,以及近期圖書館的動態和公告。圖書管理員可在圖書到期前一天列印逾期清單,電話聯系讀者,以方便讀者及時還書,加快書本流通。
(6) 修改密碼
為了方便管理,圖書館系統管理員會給每一個新注冊的用戶一個初始密碼,讀者用初始密碼首次登錄系統後,應及時修改自己的密碼,以保護自己的權利。或在使用的過程中通過修改密碼來防
D1 庫存清單
圖7 歸還圖書的DFD
3.3 數據字典
int 4 f 所在專業代碼
varchar 20 專業名稱
表3圖書基本信息表
欄位名 欄位類型 長度 NULL 欄位意義
bookid varchar 10 f 圖書索引號
bookname varchar 30 f 圖書名稱
Autor char 10 f 作者名字
department Int 4 所在書庫代碼
description char 20 描述
Lend char 1 f 是否借出
appoint char 1 f 是否預約
表4學生基本信息
userid varchar 10 f 用戶編號
username varchar 10 f 用戶名
sdepartment char 30 部門或專業
password varchar 20 f 密碼
Right_1 bit 1 f 查詢權
Ringht_2 bit 1 f 管理權
表6庫存信息表
欄位名 欄位類型 長度 NULL 欄位意義
department int 4 f 書庫代碼
description varchar 20 書庫名稱
3.4 數據項的頁碼設計
(1)對讀者編號,為了便於查找採用層次碼。
如:02(年級,即入學年份) 09(學院代碼) 1(專業代碼) 279
[注]: 學院代碼如:商學院---01 信息學院---02 土木學院---03
外語學院---04 藝術學院---05 計算機科學與工程學院---09
計算機科學與工程學院的專業代碼如:計算機科學與技術專業---1
網路專業---2
(2)圖書編號,為了便於得到有關信息採用層次碼。
如:TP(類別) 3111(編號) 01(內部編號)
[注]: 內部編號:同時采購了五本相同的圖書,在類別和編號相同的時候,用01,02,03,04,05分別代表這五本相同的圖書。
編號: 計算機應用基礎---3111 計算機網路---3112
計算機組成原理---3113 資料庫---3114
類別: 計算機類--- TP 文學類--- I 藝術類---V
數理化---O 英語類---H
4 概要設計
4.1 總體設計
系統功能結構如圖8所示。
圖8系統功能結構示意圖
4.2 局部 E_R圖
學生基本信息,圖書基本信息,用戶信息和讀者借書情況表的局部E-R圖如圖9至圖12所示。
圖10書本基本信息表
圖12 讀者借書信息表
4.3 總體E-R圖
本圖書管理信息系統的總體E-R圖如圖13所示。
圖13 總體E-R圖
部分聯系的屬性如下:
1.借閱{借閱編號、圖書索引號、借閱證號、借書日期、還書日期}
2.預訂{預訂編號、圖書索引號、借閱證號、預訂日期}
3.采購{采購編號、圖書索引號、采購價格、采購數量}
4.報廢{圖書索引號,報廢時間,報廢原因}
4.4 E_R圖向關系模型的轉化
E_R圖向關系模型的轉化要解決的問題是如何將實體和實體之間的聯系轉化為關系模式,如何
圖15 修改圖書記錄
圖16 修改學生記錄
圖17 查詢/借閱/預約圖書
圖18 查詢/歸還已借閱圖書
5.2 建立索引和嵌套查詢
索引是資料庫中一常用而重要的資料庫對象集。索引改進了資料庫的性能和可訪問性,可以用來排序和快速訪問數據。大大改善了資料庫的性能。下面以本人的圖書管理信息系統中的book表為被借出時不能被預約。
(8) 修改圖書的基本信息
這是圖書管理員的權力,包括添加,刪除和修改圖書信息。當有新添加進來的圖書時,圖書管理員要查看圖書館里是不是已存有這樣的圖書,發現已有庫存時,要修改圖書的數目,否則就加入新的圖書信息。當有舊書或損壞了的圖書要退出的時候,要及時減少相應圖書的數目或是刪除相應的圖書信息。學生借出書或歸還圖書時,要及時地修改圖書流通信息表。
(9) 修改學生用戶的基本信息
系統管理員在這里添加,刪除和修改學生和教師的基本信息。當有新生入校時,根據學生填寫的基本信息表為每個新生注冊一個用戶名,在校期間如果學生基本信息有變化可以交系統管理員審核後修改相應的信息,畢業或注銷用戶時,管理員要及時刪除相應的記錄。教師的處理情況相同。
(10)初始化系統
當遇到不可恢復的重大意外損傷時系統管理員可以用它來重新恢復圖書館的基本信息,保證圖書管理系統正常工作。除了用戶信息表恢復初始值外,其它的數據信息都會被清零。
(11) 公告欄
系統管理員向所有登錄用戶和外界人士及時發布圖書館最新消息的地方,包括注意事項等。
(12) 意見箱
所有登錄用戶可以在這里向系統管理員和圖書管理員提出對圖書管理的寶貴意見,方便管理員及時採取相應措施修改管理方案,方便用戶以後的使用,提高整個系統的性能。
本系統主要提供圖書管理,學生用戶管理和系統管理。以下列出了圖書管理信息系統主模塊,系統總體結構、圖書/讀者功能模塊和圖書流通功能模塊的示意圖如圖19至圖21所示。
圖19系統總體結構
圖20圖書/讀者功能模塊
圖21圖書流通功能模塊
5.5 界面設計及功能實現
5.5.1 登錄界面設計及功能的實現
圖22 登錄界面
『陸』 [SQL]求查詢語句T-SQL代碼!關於圖書管理系統的!
1.
while @c<@t
begin
if @rnttime>@borrtime
@count=@count+1
@c=@c+1
end
if @count>5
print'不能借書!'
2.
select p.pubname, avg(b.price) average_price
from publisher p, book b
where p.pubid = b.pubid
3.
你的表裡面沒有定義過期日期,只有借出日期和返還日期,怎麼判斷過期未還?
『柒』 用SQL做圖書管理系統
只用SQL資料庫不能實現你所說的系統。
你要做的系統:
操作員 --------人
交互頁面 --------程序界面
資料庫 --------底層數據存儲
SQL資料庫只是存儲數據信息,是構成系統的的一部分,你要做系統還要依靠其他開發工具編程實現人與資料庫的交互。
『捌』 SQL 圖書管理系統的查詢語句
1. 求總藏書量、藏書總金額,總庫存冊數、最高價、最低價。
select count(圖書編號) as 總藏書量,
sum(定價) as 藏書總金額,
sum(實際數量) as 總庫存冊數,
max(定價) as 最高價,
min(定價) as 最低價
from 圖書卡片
go
2. 列出藏書在10本以上的書(書名、作者、出版社、年份)。
select 圖書名稱,作者姓名,出版社,出版日期
from 圖書卡片
group by 圖書編號 having(coung(1)>10)
order by 圖書名稱
go
3. 哪些出版社的藏書種類數超過100種。
select 出版社 as '藏書種類數超過100種的出版社'
from 圖書卡片
group by 出版社 having(count(類別)>100)
order by 出版社
go
4. 目前實際已借出多少冊書?
select sum(借出數量) as '借出數量'
from 圖書卡片
go
5. 年份最久遠的書。
select top 1 with ties 圖書名稱 from 圖書卡片
order by 出版日期
go
6. 「資料庫系統原理教程,王珊編,清華大學出版社,1998年出版」還有幾本?
select count(1) from 圖書卡片
where concaints(摘要,'"資料庫系統原理教程,王珊編,清華大學出版社,1998年出版"')
go
7. 哪一年的圖書最多?
select top 1 with ties convert(substring(出版日期,1,4)) as 年份,count(1) as '圖書數量'
from 圖書卡片
group by 出版日期
order by 圖書數量 desc
go
8. 哪本借書證未歸還的圖書最多?
select top 1 with ties A.讀者編號,count(1) as '借書數量'
from 圖書卡片 A,借閱 B
where A.圖書編號=B.圖書編號
group by A.讀者編號
order by 借書數量 desc
go
9、平均每本借書證的借書冊數。
select avg(借閱數量) as '平均每本借書證的借書冊數'
from 借閱
go
10.哪個系的同學平均借書冊數最多?
select top 1 with ties A.工作單位,avg(借閱數量) as '平均借閱數量'
from 讀者 A,借閱 B
where A.讀者編號=B.讀者編號
group by A.工作單位
order by 平均借閱數量' desc
go
11. 最近兩年都未被借過的書。
select 圖書名稱
from 圖書卡片
where 圖書編號 in(select 圖書編號 from 借閱 where datediff(year,借閱日期,getdate())>2)
go
12. 列出那些借了圖書逾期未歸還的借書證號和圖書名。
select A.讀者編號 as '借書證號',B.圖書名稱
from 讀者 as A inner join 圖書卡片 as B on A.圖書編號=B.圖書編號
where A.應歸還日期<getdate() and A.實際歸還日期 is null
go
13.今年未借過書的借書證。
select 讀者編號
from 讀者
where 讀者編號 not in(select 讀者編號
from 讀者
where datediff(year,借閱日期,getdate())=0)
go
14. 今年那種書出借最多?
select top 1 with ties A.類別,count(1) as '借出數量'
from 圖書卡片 A,借閱 B
where datediff(year,B.借閱日期,getdate())=0
group by A.類別
order by 借出數量' desc
go