時(shí)間:2023-03-22 17:30:51
序論:好文章的創(chuàng)作是一個(gè)不斷探索和完善的過程,我們?yōu)槟扑]十篇圖書館管理系統(tǒng)論文范例,希望它們能助您一臂之力,提升您的閱讀品質(zhì),帶來更深刻的閱讀感受。
本系統(tǒng)利用處理數(shù)據(jù)庫的功能,實(shí)現(xiàn)對圖書館信息的管理。主要功能為管理有關(guān)讀者、出版社、書籍、借閱和管理者的信息等。
本系統(tǒng)的結(jié)構(gòu)分為讀者信息管理模塊、出版社信息管理模塊、書籍信息管理模塊、借閱信息管理模塊、管理者管理信息模塊、報(bào)表顯示模塊和查詢處理模塊。
1.2數(shù)據(jù)需求
根據(jù)系統(tǒng)的需求,首先將要記錄的信息分類,要記錄的信息如下。
=1\*GB2⑴讀者信息:包括證號、姓名、聯(lián)系方式、已借書數(shù)目、讀者類別和能否借書等。
=2\*GB2⑵出版社信息:包括名稱、地址、網(wǎng)址、E-mail等。
=3\*GB2⑶書籍信息:包括書號、叢書系列、作者、責(zé)任編輯、字?jǐn)?shù)、定價(jià)、出版時(shí)間、主題分類、二級分類、館內(nèi)借閱分類、總冊數(shù)、庫存量、出版社和書名等。
=4\*GB2⑷借閱信息:包括借閱日期、應(yīng)歸還日期、實(shí)際歸還日期、能否續(xù)借、書號和證號等。
=5\*GB2⑸管理者信息:包括管理者名稱、對應(yīng)密碼和對應(yīng)權(quán)限等。
根據(jù)這些需要,本系統(tǒng)需要“讀者信息”表,“出版社信息”表,“書籍信息”表,“借閱信息”表和“管理者信息”表。
1.3事務(wù)需求
經(jīng)過實(shí)際考察、咨詢和分析,高等院校圖書管理系統(tǒng)主要應(yīng)該具有以下功能模塊,如1.1圖。
=1\*GB2⑴在讀者信息管理部分,要求如下。
可以瀏覽讀者信息。
可以對讀者信息進(jìn)行維護(hù),包括添加及刪除等操作。
=2\*GB2⑵在出版社信息管理部分,要求如下。
可以瀏覽出版社信息。
可以對出版社信息進(jìn)行維護(hù),包括添加及刪除等操作。
=3\*GB2⑶在書籍信息管理部分,要求如下。
可以瀏覽書籍信息。
可以對書籍信息進(jìn)行維護(hù),包括添加及刪除等操作。
=4\*GB2⑷在借閱信息管理部分,要求如下。
可以瀏覽借閱信息。
可以對借閱信息進(jìn)行維護(hù)操作。
=5\*GB2⑸在管理者信息管理部分,要求如下。
顯示當(dāng)前數(shù)據(jù)庫中管理者情況。
對管理者信息維護(hù)操作。
SHAPE\*MERGEFORMAT
圖1-1系統(tǒng)業(yè)務(wù)邏輯關(guān)系
1.4系統(tǒng)開發(fā)平臺(tái)
前臺(tái):
1、硬件要求:
CPU:Pentium42.0GHz以上IBM兼容機(jī)
內(nèi)存:512MB以上容量
顯卡:32MB或以上顯存之AGP接口顯卡
2、軟件要求:
操作系統(tǒng):MicrosoftWindows2000/XP
開發(fā)工具:2003
數(shù)據(jù)庫服務(wù)器:
1、硬件要求:
CPU:Pentium42.8GHz以上IBM兼容機(jī)
內(nèi)存:1024MB以上容量
顯卡:32MB或以上顯存之AGP接口顯卡
2、軟件要求:
操作系統(tǒng):MicrosoftWindows2000Server
數(shù)據(jù)庫服務(wù)器:MicrosoftSQL2000Server
網(wǎng)絡(luò)設(shè)備:
2塊網(wǎng)卡:客戶機(jī)D-LinkDFE-650TX,服務(wù)器IntelPCLA8460B。
路由器:一臺(tái)SOHO路由器TL-R402M
1.5網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
本設(shè)計(jì)采用客戶機(jī)/服務(wù)器(C/S)體系,數(shù)據(jù)的儲(chǔ)存管理功能較為透明性,可以合理均衡事務(wù)的處理,充分保證數(shù)據(jù)的完整性和一致性。
SHAPE\*MERGEFORMAT
圖1.2C/S模式結(jié)構(gòu)
第2章設(shè)計(jì)與實(shí)現(xiàn)
數(shù)據(jù)庫主要著重于數(shù)據(jù)對象的屬性和數(shù)據(jù)對象之間的關(guān)系的分析。一般采用E-R圖,即實(shí)體-關(guān)系模型來分析數(shù)據(jù)對象的屬性和數(shù)據(jù)對象之間的關(guān)系。
2.0系統(tǒng)流程圖
在本系統(tǒng)中準(zhǔn)備通過如下窗體來實(shí)現(xiàn)數(shù)據(jù)維護(hù)的功能。
(1)主窗體:管理著各個(gè)子窗體。
(2)“讀者信息”子窗體:管理讀者信息。
(3)“管理者信息”子窗體:管理用戶信息。
(4)“出版社信息”子窗體:管理出版社信息。
(5)“書籍信息”子窗體:管理書籍信息。
(6)“借閱信息”子窗體:管理借閱信息。
(7)“報(bào)表窗體”子窗體:顯示數(shù)據(jù)報(bào)表。
(8)“綜合查詢”子窗體:執(zhí)行用戶自定義的查詢。
系統(tǒng)流程圖如圖3.1所示:
圖2.1系統(tǒng)流程圖
2.1E-R模型設(shè)計(jì)
2.1.1實(shí)體列表
實(shí)體
描述
讀者
所有借閱者,查閱者,由證件號標(biāo)識(shí)
出版社
圖書館所有圖書所屬出版社,由出版社編號標(biāo)識(shí)
書籍
圖書館所有圖書,由刊號標(biāo)識(shí)
借閱
書號、證號、借閱日期、應(yīng)歸還日期等屬性,由方式標(biāo)識(shí)
系統(tǒng)管理員
系統(tǒng)維護(hù)人員
2.1.2系統(tǒng)的E-R模型
該圖書管理系統(tǒng)的E-R模型,如下圖所示
圖2.2圖書管理系統(tǒng)E-R圖
2.2設(shè)計(jì)數(shù)據(jù)庫
2.2.1創(chuàng)建數(shù)據(jù)庫
(1)在服務(wù)器資源管理器中的任一節(jié)點(diǎn)右擊。
(2)執(zhí)行快捷菜單中的“新建數(shù)據(jù)庫”命令,并在打開的“創(chuàng)建數(shù)據(jù)庫”對話框中輸入數(shù)據(jù)庫名Library,選中“使用WindowsNT集成安全性”單選按鈕。
(3)單擊“確定”按鈕,則新建的數(shù)據(jù)庫就會(huì)出現(xiàn)在服務(wù)器上。
2.2.2創(chuàng)建數(shù)據(jù)表
創(chuàng)建數(shù)據(jù)庫后,為Library數(shù)據(jù)庫添加數(shù)據(jù)表,步驟如下。
(1)在服務(wù)器資源管理器中右擊數(shù)據(jù)庫Library下的“表”文件夾。在彈出的快捷菜單中執(zhí)行“新建表”命令,出現(xiàn)表設(shè)計(jì)器。
(2)添加表的字段和其他詳細(xì)資料。各表數(shù)據(jù)結(jié)構(gòu)如下表所示。
表2-1出版社信息
列名
數(shù)據(jù)類型
長度
主鍵
出版社名稱
varchar
50
Yes
出版社地址
varchar
50
網(wǎng)址
char
50
char
50
表2-2讀者信息
列名
數(shù)據(jù)類型
長度
主鍵
證號
int
4
Yes
姓名
varchar
20
聯(lián)系方式
varchar
50
已借書數(shù)目
int
4
讀者類別
int
4
能否借書
bit
1
密碼
varchar
6
表2-3借閱信息
列名
數(shù)據(jù)類型
長度
主鍵
書號
char
10
Yes
證號
int
4
Yes
借閱日期
datetime
8
應(yīng)歸還日期
datetime
8
實(shí)際歸還日期
datetime
8
續(xù)借
bit
1
表2-4書籍信息
列名
數(shù)據(jù)類型
長度
主鍵
書號
char
10
Yes
叢書系列
nchar
50
作者
nchar
50
字?jǐn)?shù)
int
4
定價(jià)
money
8
出版時(shí)間
datetime
8
主題分類
nchar
50
二級分類
char
50
館內(nèi)借閱分類
int
4
總冊數(shù)
int
4
庫存量
int
4
出版社
varchar
50
書名
varchar
50
表2-5管理者信息
列名
數(shù)據(jù)類型
長度
主鍵
用戶名稱
char
20
Yes
密碼
char
20
權(quán)限
int
4
2.2.3連接數(shù)據(jù)庫
為數(shù)據(jù)庫Library和本系統(tǒng)之間建立一個(gè)數(shù)據(jù)連接。
(1)在服務(wù)器資源管理器中右擊“數(shù)據(jù)連接”節(jié)點(diǎn)。在彈出的快捷菜單中執(zhí)行“添加連接”命令,打開DataLinkProperties對話框。切換到Provider選項(xiàng)卡,選中列表框中的MicrosoftOLEDBProviderforSQLServer項(xiàng)。單擊“下一步”切換到Connection選項(xiàng)卡。
(2)在其中的第一個(gè)下拉列表框中選擇數(shù)據(jù)庫所在服務(wù)器名稱。輸入登錄服務(wù)器信息后選擇數(shù)據(jù)庫Library,然后單擊TestConnection按鈕。如果測試成功,單擊“確定”按鈕。
2.3主窗體設(shè)計(jì)
創(chuàng)建一個(gè)新的“Windows應(yīng)用程序”類型的項(xiàng)目,名為“圖書館管理”。將默認(rèn)創(chuàng)建的窗體命名為“主窗體”,把“主窗體”作為本系統(tǒng)中的主界面。
在窗體中添加兩個(gè)Pannel控件,7個(gè)Button控件和7個(gè)Linklabel控件。
2.3.1設(shè)計(jì)登錄界面
設(shè)計(jì)登錄界面,創(chuàng)建一個(gè)新的”Windows窗體”,名為登錄,作為本系統(tǒng)的登錄界面.在登錄窗體上添加兩個(gè)Label控件,兩個(gè)Button控件和兩個(gè)TextBox控件,添加控件后的窗體如圖所示。
2.3.2添加數(shù)據(jù)組件
在工具箱中單擊“數(shù)據(jù)”選項(xiàng)卡,添加OleDbDataAdapter組件。
(1)在工具箱中單擊OleDbDataAdapter組件,在窗體任意位置拖動(dòng)出一個(gè)虛框矩形后釋放左鍵彈出“數(shù)據(jù)適配器配置向?qū)А睂υ捒颉?/p>
(2)單擊“下一步”,在打開的對話框中選擇前面建好的數(shù)據(jù)連接,然后單擊“下一步”。
(3)選中“使用SQL語句”,然后單擊“下一步”進(jìn)入“生成SQL語句”對話框。
(4)在其中的多行文本框直接輸入SQL語句“SELECT管理者信息.*FROM管理者信息”。
(5)單擊“下一步”按鈕,進(jìn)入“查看向?qū)ЫY(jié)果”,單擊“完成”按鈕完成數(shù)據(jù)適配器配置。
配置數(shù)據(jù)適配器后,在主窗體上就會(huì)自動(dòng)添加一個(gè)OleDbConnection控件。
2.3.3生成數(shù)據(jù)集
生成數(shù)據(jù)集的步驟如下:
(1)單擊OleDbDataAdapter控件“屬性”對話框中的“生成數(shù)據(jù)集”鏈接,打開“生成數(shù)據(jù)集”對話框。
(2)在其中選中“新建”單選按鈕,并在其后面的文本框中輸入“Lib管理者信息”。
(3)在“選擇要添加到數(shù)據(jù)集中的表”列表框中列出了前面添加的OleDbDataAdapter組件所連接的表,選中該表名前面的復(fù)選框。
(4)選中“將此數(shù)據(jù)集添加到設(shè)計(jì)器”復(fù)選框,單擊“確定”按鈕
這樣,將生成一個(gè)名稱為“Lib管理者信息”的數(shù)據(jù)集,該數(shù)據(jù)集以文件形式存儲(chǔ),文件名為“Lib管理者信息.xsd”。而在項(xiàng)目中,添加了一個(gè)DataSet組件,名為“objLib管理者信息”。
在解決方案資源管理器中右擊該項(xiàng)目,在彈出快捷菜單中單擊“屬性”菜單項(xiàng)。在打開的“屬性頁”對話框中的“啟動(dòng)對象”下拉列表框中選擇“主窗體”選項(xiàng)。單擊“確定”按鈕,這樣該項(xiàng)目啟動(dòng)時(shí),就會(huì)從主窗體開始啟動(dòng)。
2.3.4設(shè)計(jì)代碼
在程序運(yùn)行過程中,如果想通過單擊LinkLabel控件或Button控件進(jìn)入系統(tǒng)中的各個(gè)功能模塊(如顯示讀者信息等),就會(huì)彈出一個(gè)對話框要求輸入用戶名和密碼.單擊"確認(rèn)"按鈕,程序就會(huì)到數(shù)據(jù)庫的"管理者信息"表中查找該用戶名和密碼是否存在.如果存在,允許進(jìn)入功能模塊.
完成登錄功能的主要代碼集中在UserCheck函數(shù)中.在程序運(yùn)行過程中,在登錄窗體的"用戶姓名"和"用戶密碼"文本框中輸入用戶名和密碼后,單擊"確認(rèn)"按鈕就會(huì)觸發(fā)UserCheck函數(shù)并執(zhí)行其中的代碼.如果UserCheck函數(shù)返回True,那么允許用戶的操作;否則拒絕用戶的操作請求.
在UserCheck函數(shù)中首先定義Login類型的變量dlg_Login,然后通過ShowDialog方法來顯示登錄窗體.如果用戶在登錄窗體中輸入用戶姓名和密碼,并且單擊了"確認(rèn)"按鈕,那么自動(dòng)調(diào)用一個(gè)自定義函數(shù)LoadDataSet(),由此函數(shù)進(jìn)行數(shù)據(jù)加載.如果出錯(cuò),顯示錯(cuò)誤信息,回滾整個(gè)事務(wù).
2.4讀者信息
在當(dāng)前項(xiàng)目中添加一個(gè)“Windows窗體”,將窗體命名為“讀者信息”。
2.4.1設(shè)計(jì)顯示界面
在窗體上添加1個(gè)GroupBox控件,9個(gè)Button控件,5個(gè)TextBox控件,1個(gè)CheckBox控件和7個(gè)Label控件。
各按鈕控件是為了執(zhí)行相應(yīng)的操作。各TextBox控件和CheckBox控件用來顯示數(shù)據(jù)集中的數(shù)據(jù),這個(gè)功能通過設(shè)置DataBindings屬性來實(shí)現(xiàn)。
2.4.2添加數(shù)據(jù)組件
向窗體添加OleDbConnection組件,命名為OleDbConnection1后將其選中,在“屬性”對話框的ConnectionString欄單擊,選擇所建數(shù)據(jù)庫Library。
添加OleDbDataAdapter組件和生成數(shù)據(jù)集的方法步驟如2.3.2及2.3.3。
設(shè)置各TextBox控件的DataBinding屬性來實(shí)現(xiàn)對數(shù)據(jù)集中數(shù)據(jù)的顯示(以Edit證號為例)。
(1)選中“Edit證號”控件單擊“屬性”對話框。
(2)單擊DataBinding屬性前面的+號打開該屬性的詳細(xì)列表。
(3)設(shè)置Text屬性:在該屬性后面欄中單擊并選擇所對應(yīng)字段。
(4)設(shè)置其他TextBox控件的DataBinding屬性。
2.4.3功能實(shí)現(xiàn)
顯示數(shù)據(jù),添加讀者,保存更改,記錄定位的實(shí)現(xiàn)。
“管理者信息”,“出版社信息”,“書籍信息”,“借閱信息”和該模塊的設(shè)計(jì)思路及方法步驟完全一致,在此從略。
2.5顯示報(bào)表
在當(dāng)前項(xiàng)目中添加一個(gè)“Windows窗體”,命名為“報(bào)表窗體”,該模塊顯示當(dāng)前數(shù)據(jù)庫中讀者信息和借閱信息的報(bào)表。
在窗體上添加一個(gè)CrystalReportViewer1,它充當(dāng)報(bào)表顯示的窗體,然后在窗體中添加一個(gè)菜單,菜單中包括兩個(gè)子菜單項(xiàng)—“讀者信息”和“借閱信息”。
在程序運(yùn)行中,如果單擊“讀者信息”菜單項(xiàng),就會(huì)自動(dòng)在窗體上顯示“讀者信息報(bào)表.rpt”:如果單擊“借閱信息”命令就會(huì)自動(dòng)在窗體上顯示“借閱信息報(bào)表.rpt”報(bào)表。
2.5.1添加讀者信息報(bào)表
(1)在開發(fā)環(huán)境中選擇菜單“項(xiàng)目”中的“添加新項(xiàng)”對話框中選擇CrystalReport選項(xiàng)。
(2)在“名稱”文本框中輸入報(bào)表名“讀者信息報(bào)表.rpt”,單擊“打開”按鈕,就會(huì)彈出入圖所示的“CrystalReport庫”對話框。
(3)在其對話框中選擇“使用報(bào)表專家”單選按鈕,在“選擇專家”列表框中選擇“標(biāo)準(zhǔn)”選項(xiàng),單擊“確定”按鈕,進(jìn)入下一步。
(4)在彈出的“標(biāo)準(zhǔn)報(bào)表專家”對話框中,選擇“可用的數(shù)據(jù)源”列表框中的OLBDB(ADO)選項(xiàng),就會(huì)彈“OLEDB(ADO)”對話框。選擇OLBDB提供程序?yàn)镸icrosoftOLEDBProviderforSQLServer,單擊“下一步”按鈕,顯示“連接信息”對話框。
(5)在其中設(shè)置連接信息,單擊“完成”按鈕,返回“標(biāo)準(zhǔn)報(bào)表專家”對話框。
(6)選擇數(shù)據(jù)源為OLEDB(ADO)中的Library數(shù)據(jù)庫,并且選中其中的“讀者信息”表。單擊“插入表”按鈕,把“讀者信息”表插入到報(bào)表中,單擊“下一步”按鈕。
(7)在“字段”選項(xiàng)卡中單擊“全部添加”按鈕,把“讀者信息”表中的所有字段添加到報(bào)表中,單擊“完成”按鈕就完成報(bào)表的設(shè)計(jì)。
設(shè)計(jì)完成的“讀者信息報(bào)表”如圖所示。
2.5.2添加借閱情況報(bào)表
添加借閱情況報(bào)表的過程與添加讀者信息報(bào)表過程大致相同,不同之處在于插入到報(bào)表中的數(shù)據(jù)表為“讀者信息”。
2.6綜合查詢的實(shí)現(xiàn)
在程序運(yùn)行過程中,單擊主窗體的“綜合查詢”按鈕,就會(huì)彈出一個(gè)對話框。在其中設(shè)置查詢條件,根據(jù)查詢條件從記錄集中篩選出所需記錄。
為此需要在項(xiàng)目中添加一個(gè)窗體“綜合查詢”。
還需要設(shè)置“CmbBox運(yùn)算符”控件的Items屬性。單擊窗體上“CmbBox運(yùn)算符”控件,然后在“屬性”對話框中單擊Items欄,就會(huì)出現(xiàn)一個(gè)按鈕,單擊按鈕,在打開的窗口中如圖2.2所示設(shè)置字符串集合編輯器字符串。
SHAPE\*MERGEFORMAT
圖2.2所示設(shè)置字符串集合編輯器
設(shè)置完畢,單擊確定按鈕。
2.6.1添加數(shù)據(jù)組件
在窗體上添加一個(gè)OleDbDataAdapter組件,使用數(shù)據(jù)適配器配置向?qū)ζ溥M(jìn)行配置。選擇數(shù)據(jù)連接后輸入SQL語句“SELECT出版社信息.*FROM出版社信息”。
同樣再為窗體添加四個(gè)OleDbDataAdapter組件,
在"生成SQL語句"對話框的多行文本框中分別輸入SQL語句“SELECT讀者信息.*FROM讀者信息”,“SELECT管理者信息.*FROM管理者信息”,“SELECT借閱信息.*FROM借閱信息”,“SELECT書籍信息.*FROM書籍信息”,然后單擊“完成”按鈕,Name屬性分別設(shè)置為OleDbDataAdapter2,OleDbDataAdapter3,OleDbDataAdapter4,OleDbDataAdapter5完成數(shù)據(jù)適配器的配置。
生成數(shù)據(jù)集的步驟如下。
(1)在OleDbDataAdapter1組件的“屬性”對話框中單擊“生成數(shù)據(jù)集”超鏈接,打開“生成數(shù)據(jù)集”對話框,選中“新建”按鈕并在后面文本框中輸入“Lib綜合查詢”。
(2)在“選擇要添加到數(shù)據(jù)集中的表”列表框中,選中5個(gè)表前面的復(fù)選框。
(3)選中“將此數(shù)據(jù)集添加到設(shè)計(jì)器”復(fù)選框,單擊“確定”按鈕。
這樣,將生成一個(gè)名稱為“Lib綜合查詢”的數(shù)據(jù)集,該數(shù)據(jù)集以文件的形式存儲(chǔ),文件名為“Lib綜合查詢.xsd”。而在項(xiàng)目中,添加一個(gè)DataSet組件,名稱為“objLib綜合查詢”。
設(shè)計(jì)完成的數(shù)據(jù)集如圖2.4所示。
圖2.3綜合查詢數(shù)據(jù)集
第3章系統(tǒng)測試
3.1開發(fā)與測試環(huán)境
本系統(tǒng)使用語言進(jìn)行開發(fā)。需要FrameworkSDKv1.1的支持。適用內(nèi)存不低于256M配備有Windows2000,Windows2003,WindowsXP系統(tǒng)的計(jì)算機(jī)。
3.3程序調(diào)試情況
在數(shù)據(jù)連接時(shí)一定要注意窗體和相應(yīng)顯示控件的綁定關(guān)系。在把系統(tǒng)從一臺(tái)計(jì)算機(jī)移植到另一臺(tái)計(jì)算機(jī)時(shí)一定要把數(shù)據(jù)文件library.mdf和library_log.LDF同時(shí)移植,并對相應(yīng)的提供服務(wù)的SQLServer服務(wù)器進(jìn)行相應(yīng)的修改,否則數(shù)據(jù)正確連接并顯示。
3.4功能顯示
運(yùn)行程序后首先顯示主窗體,如圖3.2所示。
圖3.2主界面
單擊“輸入/查看讀者信息”,就會(huì)彈出如圖3.3所示登錄框。
SHAPE\*MERGEFORMAT
圖3.3登錄界面
在登錄對話框中輸入用戶姓名和密碼,單擊“確認(rèn)”按鈕,就會(huì)對用戶身份進(jìn)行認(rèn)證,如果認(rèn)證通過,那么就會(huì)彈出如圖3.4所示的讀者信息管理窗體。
圖3.4讀者信息管理窗體
在“讀者信息”窗體中可以對讀者信息進(jìn)行維護(hù)操作,例如瀏覽讀者信息,添加記錄和刪除記錄等。
單擊“輸入/查看書籍信息”,就會(huì)顯示“書籍信息”窗體,在該窗體中可以對書籍信息進(jìn)行維護(hù)操作。書籍信息維護(hù)窗體如圖3.5所示。
圖3.5書籍信息窗體
單擊“輸入/查看借閱信息”,就會(huì)顯示“借閱信息”窗體,在該窗體中可以對出版社信息進(jìn)行維護(hù)操作。出版社信息維護(hù)窗體如圖所示。
圖3.6借閱信息窗體
單擊“輸入/查看出版社信息”,就會(huì)顯示“出版社信息”窗體,在該窗體中可以對借閱信息進(jìn)行維護(hù)操作。借閱信息維護(hù)窗體如圖3.7所示。
圖3.7出版社信息窗體
單擊“輸入/查看管理者信息”,結(jié)果如圖3.8所示。
圖3.8管理者信息窗體
在主窗體上單擊“顯示報(bào)表”,那么就可以查看反映讀者信息和借閱信息的報(bào)表,借閱信息的報(bào)表如圖所示。
SHAPE\*MERGEFORMAT
圖3.9報(bào)表窗體
如果用戶在運(yùn)行的主窗體上單擊“綜合查詢”,那么就可以查看針對不同的數(shù)據(jù)表進(jìn)行查詢操作。選擇查詢依據(jù)為“出版社信息”表查看其中的所有信息,結(jié)果如圖3.10所示。
SHAPE\*MERGEFORMAT
圖3.10綜合查詢窗體
3.5結(jié)論
在這個(gè)系統(tǒng)的開發(fā)過程中,值得注意的幾點(diǎn)有:
(1)數(shù)據(jù)報(bào)表的實(shí)現(xiàn).報(bào)表是數(shù)據(jù)庫應(yīng)用程序的重要組成部分,通過報(bào)表,可以把數(shù)據(jù)庫中內(nèi)容經(jīng)過組織以后生動(dòng)地展示給用戶,提供的CrystalReport可以大大提高報(bào)表的設(shè)計(jì)效率。
(2)復(fù)雜查詢的實(shí)現(xiàn)。在程序運(yùn)行過程中,單擊窗體中的“綜合查詢”按鈕,就會(huì)彈出一個(gè)對話框,在該對話框中設(shè)置查詢條件,根據(jù)查詢條件從記錄集中篩選出所需記錄,所指定的查詢條件包括查詢的依據(jù),排序的依據(jù),運(yùn)算符等等。
第4章結(jié)束語
通過做課程設(shè)計(jì),有幾點(diǎn)感想,歸納如下。
1.扎實(shí)的理論基礎(chǔ)。如果不掌握它們,很難寫出高水平的程序。而這一點(diǎn)又是我們所缺乏的。
2.不鉆牛角尖。當(dāng)遇到障礙的時(shí)候,暫時(shí)遠(yuǎn)離電腦,當(dāng)重新開始工作的時(shí)候,也許會(huì)發(fā)現(xiàn)那些難題現(xiàn)在竟然可以迎刃而解。
3.多與別人交流。三人行必有我?guī)煛?/p>
4.良好的編程風(fēng)格。注意養(yǎng)成良好的習(xí)慣,代碼的縮進(jìn)編排,變量的命名規(guī)則要始終保持一致。如果注釋和代碼不一致,那就更加糟糕。
最后,特別要感謝老師在軟件工程和數(shù)據(jù)庫課程中認(rèn)真負(fù)責(zé)的教學(xué),才使得我能結(jié)合所學(xué)的知識(shí)完成這一課程設(shè)計(jì)。
論文關(guān)鍵詞C/SSQL2000數(shù)據(jù)庫VB
論文摘要:本文完成了一個(gè)基于Client/Server模式的高校圖書管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。運(yùn)用結(jié)合MicrosoftSQLServer2000開發(fā)的登錄模塊主要用于驗(yàn)證用戶身份,進(jìn)行有效的操作。從主界面模塊在驗(yàn)證后進(jìn)入每個(gè)子模塊進(jìn)行各個(gè)子系統(tǒng)的具體功能操作。在整個(gè)系統(tǒng)設(shè)計(jì)中充分利用了模塊化的設(shè)計(jì)思想和開發(fā)方法。
參考文獻(xiàn)
二十一世紀(jì)是信息高度交流與發(fā)展的時(shí)代,面計(jì)算機(jī)系統(tǒng)則在信息時(shí)代扮演著極為重要的腳色,隨著計(jì)算機(jī)的不斷發(fā)展,計(jì)算機(jī)以滲透到各個(gè)領(lǐng)域,圖書館也不例外,圖書館的計(jì)算機(jī)化以不容遲緩。
圖書館在正常運(yùn)營中總是面對大量的讀者信息、書籍信息以及兩者相互作用產(chǎn)生的借書信息、還書信息。需要對讀者資源、書籍資源、借書信息、還書信息進(jìn)行管理,及時(shí)了解各個(gè)環(huán)節(jié)中信息的變更,有利于提高管理效率。作者針對圖書館手工管理的現(xiàn)狀,經(jīng)過詳細(xì)系統(tǒng)的調(diào)查,闡明了圖書管理系統(tǒng)的需求和功能,為圖書館管理信息系統(tǒng)的開發(fā)打下堅(jiān)實(shí)基礎(chǔ)。
一、圖書管理系統(tǒng)的需求分析
當(dāng)決定要開發(fā)一個(gè)信息系統(tǒng)時(shí),首先要對信息系統(tǒng)的需求進(jìn)行分析,需求分析要做的工作是深入描述軟件的功能和性能,確定軟件設(shè)計(jì)的限制和軟件同其他系統(tǒng)元素的接口細(xì)節(jié),定義軟件的其他有效性需求。
獲得當(dāng)前系統(tǒng)的處理流程,在此首先假設(shè)當(dāng)前系統(tǒng)是手工處理系統(tǒng)。手工處理流程大致是這樣的。讀者將要借的書和借閱證交給工作人員,工作人員將每本書附帶的描述書信息的卡和讀者借閱證一起放在一個(gè)小格欄,并在借閱證和每本書上貼的借閱信息。這樣借書過程就完成了。還書時(shí)讀者將要還的圖書交給工作人員,工作人員圖書信息找到相應(yīng)的書卡和借閱證,并填寫相應(yīng)的還書信息。
抽象出當(dāng)前系統(tǒng)的邏輯模型。在理解當(dāng)前系統(tǒng)“怎么做”的基礎(chǔ)上,抽取其“做什么”的本質(zhì),從而從當(dāng)前系統(tǒng)的物理模型抽象出當(dāng)前系統(tǒng)的邏輯模型。在物理模型中有許多物理因素,隨著分析工作的深入,有些非本質(zhì)的物理因素就成為不必要的負(fù)擔(dān),因而需要對物理模型進(jìn)行分析,區(qū)分出本質(zhì)的物理因素就成為不必要的負(fù)擔(dān),因而需要對物理模型進(jìn)行分析,區(qū)分出本質(zhì)的和非本質(zhì)的困素,去掉那些非本質(zhì)的困素即可獲得反映系統(tǒng)本質(zhì)的邏輯模型。
建立目標(biāo)系統(tǒng)的邏輯模型。分析目標(biāo)系統(tǒng)與當(dāng)前系統(tǒng)邏輯上的差別,明確目標(biāo)系統(tǒng)到底要“做什么”,從而從當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)的邏輯模型。在對上述流程進(jìn)行分析后,我們對新的圖書處理流程進(jìn)行整理,圖書館借還書過程如下:
借書過程:讀者從架上選到所需圖書后,將圖書和借書卡交管理人員,管理人員用碼閱讀器將圖書和借書卡上的讀者條碼2碼讀入處理系統(tǒng)。系統(tǒng)根據(jù)讀者條碼從讀者文件和借閱文件中找到相應(yīng)記錄;根據(jù)圖書上的條碼從圖書文件中找到相應(yīng)記錄,讀者如果有如下列情況之一將不予辦理借書手續(xù)。
①讀者所借閱圖書已超過該讀者容許的最多借書數(shù)目。
②該讀者記錄中有止借標(biāo)志。
③該讀者還有已超過歸還日期而仍未歸還的圖書。
④該圖書暫停外借。
若讀者符合所有借書條件時(shí),予以借出。系統(tǒng)在借閱文件中增加一條記錄,記入讀者碼、圖書條碼、借閱日期等內(nèi)容。
還書過程:還書時(shí)讀者只要將書交給管理人員,管理員將書上的圖書條碼讀入系統(tǒng),系統(tǒng)從借閱文件上找到相應(yīng)記錄,填上還書日期后寫入借閱歷史文件,并從借閱文件上刪去相應(yīng)記錄,同時(shí)系統(tǒng)對借還書日期進(jìn)行計(jì)算并判斷是否超期,若不超期則結(jié)束過程,若超期則計(jì)算出超期天數(shù)、罰款數(shù)、并打印罰款通知書,記入罰款文件。同時(shí)在讀者記錄上作止借標(biāo)記。當(dāng)讀者交來罰款收據(jù)后,系統(tǒng)根據(jù)讀者條碼查罰款文件,將相應(yīng)記錄寫入罰款歷史文件,并從罰款文件只刪除該記錄,同時(shí)去掉讀者文件中的止借標(biāo)記。
為了對圖書管理系統(tǒng)做完整的描述,還需要對上面得到的邏輯模型做一些補(bǔ)充.首先采用圖形的方式描述圖書管理系統(tǒng)的用戶界面,這樣做的目的是保證整個(gè)系統(tǒng)的用戶界面的一致性,同時(shí)也有國助于后續(xù)的開發(fā)人員更好地理解系統(tǒng)需要實(shí)現(xiàn)的功能.其次,說明圖書管理系統(tǒng)的一些特珠性能要求。如借書、還書服務(wù)花費(fèi)的時(shí)間一次不得大于5分鐘等。
前面著重對借還書流程進(jìn)行了說細(xì)的闡述,下面介紹圖書管理系統(tǒng)的總體功能要求。簡單的圖書管理系統(tǒng)主要包括下面的功能:
>借書處理:完成讀者借書這一業(yè)務(wù)流程。
>還書處理:完成讀者還書這一業(yè)務(wù)流程。
>罰款處理:解決讀者借書超期的罰款處理。
>新書上架:輸入新書資料。
>舊書淘汰:刪除圖書資料。
>讀者查詢:根據(jù)讀者號,查詢讀者借閱情況。
二、圖書管理系統(tǒng)的功能分析
系統(tǒng)功能分析是在系統(tǒng)開發(fā)的總體任務(wù)的基礎(chǔ)上完成。圖書館管理信息系統(tǒng)需要完成功能主要有:
有關(guān)讀者種類標(biāo)準(zhǔn)的制定、種類住處的輸入,包括種類編號、種類名稱、借書數(shù)量、借書期限、有效期限、備注等。
讀者種類信息的修改、查詢等。
讀者基本信息的輸入,包括讀者編號、讀者姓名、讀者種類、讀者性別、工作單位、家庭住址、電話號碼、電子郵件地址、辦證日期、備注等。
讀者基本信息的查詢、修改,包括讀者編號、讀者姓名、讀者種類、讀者性別、工作單位、家庭住址、電話號碼、電子郵件地址、辦證日期、備注等等。
書籍類別標(biāo)準(zhǔn)的制定、類別信息的輸入,包括類別編號、類別名稱、關(guān)鍵詞、備注信息等。
書籍信息的輸入,包括書籍編號、書籍名稱、書籍名稱、書籍類別、作者姓名、出版社名稱、出版日期、書籍頁書、關(guān)鍵詞、登記日期、備注信息等。
借書信息的輸入,包括借書信息編號、讀者編號、讀者姓名、書籍編號、書籍名稱、借書日期、備注信息等。
借書信息的查詢、修改,包括借書信息編號、讀者編號、讀者姓名、書籍編號、書籍名稱、借書日期、備注信息等。
還書信息的輸入,包括還書信息編號、讀者編號、讀者姓名、書籍編號、書籍名稱、借書日期、還書日期、備注信息等。
還書信息的查詢和修改,包括還書信息編號、讀者編號、讀者姓名、書籍編號、書籍姓名、借書日期、還書日期、備注信息等。
參考文獻(xiàn)
[1]EWinemiller,J.Roff,著.VisualBasic6.0數(shù)據(jù)庫開發(fā).清華大學(xué)出版社,1999.
因此本人結(jié)合開入式圖書館的要求,對MSSQLServer2000數(shù)據(jù)庫管理系統(tǒng)、SQL語言原理、Delphi應(yīng)用程序設(shè)計(jì),Delphi數(shù)據(jù)庫技術(shù)進(jìn)行了較深入的學(xué)習(xí)和應(yīng)用,主要完成對圖書管理系統(tǒng)的需求分析、功能模塊劃分、數(shù)據(jù)庫模式分析,并由此設(shè)計(jì)了數(shù)據(jù)庫結(jié)構(gòu)和應(yīng)用程序。系統(tǒng)運(yùn)行結(jié)果證明,本文所設(shè)計(jì)的圖書管理系統(tǒng)可以滿足借閱者、圖書館工作人員和高級管理員三方面的需要。
第一章對數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)和圖書管理系統(tǒng)進(jìn)行了簡明的介紹,并分析了開發(fā)圖書管理系統(tǒng)所應(yīng)進(jìn)行的工作。
第二章對數(shù)據(jù)庫的設(shè)計(jì)和SQL語言的使用進(jìn)行了系統(tǒng)分析,為深入理解數(shù)據(jù)庫應(yīng)用打下了基礎(chǔ)。
第三章學(xué)習(xí)了具體的開發(fā)工具Delphi6.0,對其數(shù)據(jù)庫組件,SQL語言在Delphi中的應(yīng)用等數(shù)據(jù)庫編程關(guān)鍵技術(shù)進(jìn)行了系統(tǒng)的介紹。
第四章分析了圖書管理信息系統(tǒng)的應(yīng)用需求,按照數(shù)據(jù)庫設(shè)計(jì)理論一步一步地給出了系統(tǒng)需求說明書、局部ER圖、全局ER圖、系統(tǒng)關(guān)系模式,子模式,利用MSSQLServer2000建立了數(shù)據(jù)庫
第五章進(jìn)行了具體的程序設(shè)計(jì),具體劃分了三類用戶的操作權(quán)限,設(shè)計(jì)了了三個(gè)操作界面。實(shí)現(xiàn)了數(shù)據(jù)庫表的瀏覽,記錄的添加、刪除和修改,報(bào)表的生成,實(shí)現(xiàn)了多數(shù)據(jù)庫表的連接操作,實(shí)現(xiàn)了多條件查詢和模糊查詢,并靈活實(shí)現(xiàn)了對不可更新查詢結(jié)果集的更新操作,實(shí)現(xiàn)了主從表操作,實(shí)現(xiàn)了密碼維護(hù)功能,最后,系統(tǒng)還可以導(dǎo)入數(shù)據(jù)庫以對任意同結(jié)構(gòu)的數(shù)據(jù)庫進(jìn)行操作。
設(shè)計(jì)充分利用Delphi6、MSSQLServer2000數(shù)據(jù)庫技術(shù)的強(qiáng)大力量,提高了編程效率和可靠性。
關(guān)鍵詞:數(shù)據(jù)庫,SQL語言,MSSQLServer,Delphi6,
數(shù)據(jù)庫組件,圖書管理,窗體,listview組件
目錄
摘要………………………………………………………………………………I
第一章緒論……………………………………………………………………1
§1.1數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)簡介………………………………………………1
§1.2圖書管理系統(tǒng)………………………………………………………4
§1.3本文所做的主要工作……………………………………………………6
第二章數(shù)據(jù)庫理論基礎(chǔ)…………………………………………………………7
§2.1數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)及范式分析……………………………………………7
§2.2SQL語言介紹…………………………………………………………………11
2.2.1SQL基礎(chǔ)…………………………………………………………………11
2.2.2SQL語句…………………………………………………………………12
第三章應(yīng)用系統(tǒng)開發(fā)工具…………………………………………………16
§3.1Delphi6.0VCL組件的體系結(jié)構(gòu)………………………………………16
§3.2數(shù)據(jù)庫組件介紹……………………………………………………………17
§3.3SQL語言在Delphi中的應(yīng)用……………………………………………18
§3.4MSSQLServer簡述……………………………………………………22
第四章圖書管理系統(tǒng)設(shè)計(jì)分析…………………………………………24
§4.1應(yīng)用需求分析……………………………………………………………24
§4.2系統(tǒng)功能模塊劃分………………………………………………………29
§4.3系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)…………………………………………………………29
第五章圖書管理系統(tǒng)應(yīng)用程序設(shè)計(jì)……………………………………37
§5.1系統(tǒng)窗體模塊組成…………………………………………………………37
§5.2數(shù)據(jù)模塊窗體的設(shè)置………………………………………………………37
§5.3啟動(dòng)畫面的實(shí)現(xiàn)……………………………………………………………38
§5.4用戶登錄窗體的的實(shí)現(xiàn)………………………………………………………39
§5.5用戶密碼認(rèn)證窗體的的實(shí)現(xiàn)…………………………………………………39
§5.6借閱者服務(wù)模塊的實(shí)現(xiàn)……………………………………………………40
5.6.1圖書查詢功能的實(shí)現(xiàn)…………………………………………………41
5.6.2借閱者登錄功能的實(shí)現(xiàn)…………………………………………………42
5.6.3借閱者借閱情況功能的實(shí)現(xiàn)……………………………………………43
5.6.4借閱者個(gè)人資料維護(hù)功能的實(shí)現(xiàn)………………………………………47
§5.7工作人員-圖書借閱/歸還模塊的實(shí)現(xiàn)………………………………………49
5.7.1工作人員進(jìn)行圖書借閱功能實(shí)現(xiàn)………………………………………50
5.7.2工作人員進(jìn)行圖書歸還功能實(shí)現(xiàn)………………………………………53
§5.8圖書館管理員模塊的實(shí)現(xiàn)……………………………………………54
5.8.1圖書館管理員圖書管理功能的實(shí)現(xiàn)……………………………………55
5.8.2圖書館管理員工作人員和管理員管理功能的實(shí)現(xiàn)……………………58
5.8.3圖書館管理員修改圖書類別及統(tǒng)記功能的實(shí)現(xiàn)………………………60
5.8.4圖書館管理員借閱者管理功能的實(shí)現(xiàn)…………………………………62
5.8.5圖書館維護(hù)借閱者管理功能的實(shí)現(xiàn)…………………………………62
5.8.6圖書館身份維護(hù)功能的實(shí)現(xiàn)………………………………………64
5.8.7圖書館借閱者統(tǒng)計(jì)功能的實(shí)現(xiàn)…………………………………65
5.8.8圖書館統(tǒng)計(jì)借閱過期記錄功能的實(shí)現(xiàn)…………………………67
§5.9系統(tǒng)信息顯示的實(shí)現(xiàn)…………………………………………………68
第六章結(jié)束語………………………………………………………………69
致謝………………………………………………………………………………70
參考書目……………………………………………………………………………70
第一章緒論
§1.1數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)簡介
在數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)之前,對開發(fā)數(shù)據(jù)庫的基本概念應(yīng)當(dāng)了解,對數(shù)據(jù)庫的結(jié)構(gòu)、開發(fā)數(shù)據(jù)庫應(yīng)用程序的步驟、開發(fā)體系及方法都應(yīng)當(dāng)有相當(dāng)清晰的了解和認(rèn)識(shí)。
數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)的目標(biāo)是建立一個(gè)滿足用戶長期需求的產(chǎn)品。開發(fā)的主要過程為:理解用戶的需求,然后,把它們轉(zhuǎn)變?yōu)橛行У臄?shù)據(jù)庫設(shè)計(jì)。把設(shè)計(jì)轉(zhuǎn)變?yōu)閷?shí)際的數(shù)據(jù)庫,并且這些數(shù)據(jù)庫帶有功能完備、高效能的應(yīng)用。
數(shù)據(jù)庫技術(shù)在計(jì)算機(jī)軟件鄰域研究中一直是非常重要的主題,產(chǎn)生于60年代,30多年來數(shù)據(jù)庫技術(shù)得到了迅速發(fā)展,并已形成較為完整的理論體系和一大批實(shí)用系統(tǒng)。并且,近年來,隨著WorldWideWeb(WWW)的猛增及Internet技術(shù)的迅速發(fā)展,使得數(shù)據(jù)庫技術(shù)之時(shí)成為最熱門技術(shù)之一。
1.1.1數(shù)據(jù)庫
如圖1.1顯示了數(shù)據(jù)庫系統(tǒng)的主要組件。數(shù)據(jù)庫由DBMS(數(shù)據(jù)庫管理系統(tǒng))處理,DBMS則由開發(fā)人員和用戶通過應(yīng)用程序直接或間接地使用。它主要包括四個(gè)要素:用戶數(shù)據(jù)、元數(shù)據(jù)、索引和應(yīng)用元數(shù)據(jù)。
1.1.1.1用戶數(shù)據(jù)
目前,大多數(shù)主流數(shù)據(jù)庫管理系統(tǒng)把用戶數(shù)據(jù)表示為關(guān)系?,F(xiàn)在把關(guān)系看作數(shù)據(jù)表。表的列包含域或?qū)傩?,表的行包含對?yīng)業(yè)務(wù)環(huán)境中的實(shí)體的記錄。并非所有的關(guān)系都同樣符合要求,有些關(guān)系比其它關(guān)系更結(jié)構(gòu)化一些。第二章描述了一個(gè)用以產(chǎn)生良好結(jié)構(gòu)關(guān)系的過程,稱作規(guī)范化。
為了對比結(jié)構(gòu)差的關(guān)系和結(jié)構(gòu)好的關(guān)系之間的差別,以本文所設(shè)計(jì)的圖書管理系統(tǒng)中的圖書和圖書借閱者關(guān)系為例來說明,假若設(shè)計(jì)關(guān)系R1(借書證號,姓名,性別,身份編號,身份證,聯(lián)系電話,圖書編號,圖書名稱,圖書類別,作者,出版社,出版日期,備注,價(jià)格,數(shù)量);這個(gè)關(guān)系的問題出在它有關(guān)于兩個(gè)不同主題的數(shù)據(jù),就是圖書借閱者和圖書。用這種方式構(gòu)成的關(guān)系在進(jìn)行修改時(shí),會(huì)出現(xiàn)問題。因?yàn)橐粋€(gè)圖書借閱者可能借閱多本書,如果某個(gè)圖書借閱者的某個(gè)字段(如聯(lián)系電話)出現(xiàn)變更,它所借閱的圖書記錄(可能多個(gè))也就必須變化,這是不好的。因此數(shù)據(jù)用兩個(gè)關(guān)系表示更好?,F(xiàn)在如果某圖書借閱者改變了它的聯(lián)系電話,只有關(guān)系(表)user的對應(yīng)行需要改變。當(dāng)然,要想產(chǎn)生一個(gè),顯示圖書名稱及其借閱者聯(lián)系電話的報(bào)表,就需要將這兩個(gè)表的行結(jié)合起來。結(jié)果表明,將關(guān)系分別存儲(chǔ),在生成報(bào)表的時(shí)候?qū)⑺鼈兘Y(jié)合起來,比把它們存儲(chǔ)在一個(gè)合成的表中更好。
user(借書證號,姓名,性別,身份編號,身份證,聯(lián)系電話,)
book(圖書編號,圖書名稱,圖書類別,作者,出版社,出版日期,備注,價(jià)格,數(shù)量)
1.1.1.2元數(shù)據(jù)
數(shù)據(jù)庫是自描述的,這就意味著它自身包含了它的結(jié)構(gòu)的描述,這種結(jié)構(gòu)的描述稱作元數(shù)據(jù)。因?yàn)镈BMS產(chǎn)品是用來存儲(chǔ)和操縱表的,所以大多數(shù)產(chǎn)品把元數(shù)據(jù)以表的形式存儲(chǔ),有時(shí)稱作系統(tǒng)表。這些系統(tǒng)表存儲(chǔ)了數(shù)據(jù)庫中表的情況,指出每一個(gè)表中有多少列,那一列是主關(guān)鍵字,每一列的數(shù)據(jù)類型的描述,它也存儲(chǔ)索引、關(guān)鍵字、規(guī)則和數(shù)據(jù)庫結(jié)構(gòu)的其他部分。
在表中存儲(chǔ)元數(shù)據(jù)不僅對DBMS是有效的,對用戶也是方便的,因?yàn)樗麄兛梢允褂门c查詢用戶數(shù)據(jù)同樣的查詢工具來查詢元數(shù)據(jù)。本文第二章所介紹的SQL語言可以同時(shí)用于元數(shù)據(jù)和用戶數(shù)據(jù)。
1.1.1.3索引
第三種類型的數(shù)據(jù)改進(jìn)了數(shù)據(jù)庫的性能和可訪問性,這種數(shù)據(jù)經(jīng)常稱作開銷數(shù)據(jù),盡管有時(shí)也采用其他類型的數(shù)據(jù)結(jié)構(gòu),如鏈表,但它主要還是索引。索引可以用來排序和快速訪問數(shù)據(jù)。下面以本人的圖書管理信息系統(tǒng)中的book表為例來說明。
假定數(shù)據(jù)在磁盤上是按’圖書編號’的遞增順序排列的,用戶想打印一個(gè)按’圖書名稱’排序的圖書數(shù)據(jù)報(bào)表。為此,所有的數(shù)據(jù)都需要從源表中提取出來并排序,除非表很小,否則這是一個(gè)很費(fèi)時(shí)的過程?;蛘撸梢栽凇畧D書名稱’字段上創(chuàng)建一個(gè)索引,該索引的條目按照‘圖書名稱’排序,這樣,該索引的條目可以讀出來,并用來按順序訪問book數(shù)據(jù)。
索引用于快速訪問數(shù)據(jù)。例如,一個(gè)用戶只想訪問book表中‘圖書類別’值為‘01’的那些學(xué)生。如果沒有索引,則必須搜索整個(gè)源表;但有了索引之后,可以找到索引條目,并使用它來挑選所有合適的行。
索引對排序和查找是有幫助的,但要付出代價(jià)。book表中的行每次改變時(shí),索引也必須改變,這意味著索引并非隨意的,應(yīng)該在真正需要時(shí)保存。
1.1.1.4應(yīng)用元數(shù)據(jù)
存儲(chǔ)在數(shù)據(jù)庫中的第四種數(shù)據(jù)是應(yīng)用元數(shù)據(jù),它用來存儲(chǔ)用戶窗體、報(bào)表、查詢和其他形式的查詢組件。并非所有的DBMS都支持應(yīng)用組件,支持組件的DBMS也不一定把全部組件的結(jié)構(gòu)作為應(yīng)用元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中。然而,大多數(shù)現(xiàn)代的DBMS產(chǎn)品存儲(chǔ)這種數(shù)據(jù)作為數(shù)據(jù)庫的一部分。一般來說,數(shù)據(jù)庫開發(fā)人員和用戶都不直接訪問應(yīng)用元數(shù)據(jù),想反,他們通過DBMS中的工具來處理這些數(shù)據(jù)。
MSSQLServer2000中就支持窗體、存儲(chǔ)過程等應(yīng)用元數(shù)據(jù)。
1.1.2數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)庫管理系統(tǒng)(DBMS)是指數(shù)據(jù)庫系統(tǒng)中管理數(shù)據(jù)的軟件系統(tǒng)。DBMS是數(shù)據(jù)庫系統(tǒng)的核心組成部分。對數(shù)據(jù)庫的一切操作,包括定義、更新及各種控制,都是通過DBMS進(jìn)行的。DBMS總是基于某種數(shù)據(jù)模型,可以把DBMS看成是某種數(shù)據(jù)模型在計(jì)算機(jī)系統(tǒng)上的具體實(shí)現(xiàn)。根據(jù)數(shù)據(jù)模型的不同,DBMS可以分成層次型、網(wǎng)狀型、關(guān)系型、面向?qū)ο笮偷取SSQLServer2000就是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。
關(guān)系模型。關(guān)系模型主要是用二維表格結(jié)構(gòu)表達(dá)實(shí)體集,用外鍵表示實(shí)體間聯(lián)系。關(guān)系模型是由若干個(gè)關(guān)系模式組成的集合。關(guān)系模式相當(dāng)于前面提到的記錄類型,它的實(shí)例稱為關(guān)系,每個(gè)關(guān)系實(shí)際上是一張二維表格。
關(guān)系模型和層次、網(wǎng)狀模型的最大判別是用關(guān)鍵碼而不是用指針導(dǎo)航數(shù)據(jù),表格簡單用戶易懂,編程時(shí)并不涉及存儲(chǔ)結(jié)構(gòu),訪問技術(shù)等細(xì)節(jié)。關(guān)系模型是數(shù)學(xué)化模型。SQL語言是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)化語言,已得到了廣泛的應(yīng)用。
如圖1.1所示,DBMS的特點(diǎn)和功能可以分為三個(gè)子系統(tǒng):設(shè)計(jì)工具子系統(tǒng)、運(yùn)行子系統(tǒng)和DBMS引擎。
設(shè)計(jì)子系統(tǒng)有一個(gè)方便數(shù)據(jù)庫及其應(yīng)用創(chuàng)建的工具集。它典型地包含產(chǎn)生表、窗體、查詢和報(bào)表的工具。DBMS產(chǎn)品還提供編程語言和對編程語言的接口。
運(yùn)行子系統(tǒng)處理用設(shè)計(jì)子系統(tǒng)開發(fā)的應(yīng)用組件。它所包含的運(yùn)行處理器用來處理窗體和數(shù)據(jù)庫的數(shù)據(jù)交互,以及回答查詢和打印報(bào)表等。
DBMS引擎從其他兩個(gè)組件接受請求,并把它們翻譯成對操作系統(tǒng)的命令,以便讀寫物理介質(zhì)上的數(shù)據(jù)。DBMS引擎還涉及事務(wù)管理、鎖、備份和恢復(fù)。
1.1.3創(chuàng)建數(shù)據(jù)庫
1.1.3.1數(shù)據(jù)庫模式
數(shù)據(jù)庫模式定義了數(shù)據(jù)庫的結(jié)構(gòu)、表、關(guān)系、域和業(yè)務(wù)規(guī)則。數(shù)據(jù)庫模式是一種設(shè)計(jì),數(shù)據(jù)庫和應(yīng)用正是建立在此基礎(chǔ)上的。
域是一列可能擁有的值的集合。必須為每一個(gè)表的每一定域。除了數(shù)據(jù)的物理格式外,還需要確定是否有些域?qū)Ρ韥碚f是唯一的。
數(shù)據(jù)庫模式的最后一個(gè)要素是業(yè)務(wù)規(guī)則,它是對需要反映在數(shù)據(jù)庫和數(shù)據(jù)庫應(yīng)用程序中的業(yè)務(wù)活動(dòng)的約束。業(yè)務(wù)規(guī)則是模式的一個(gè)重要部分,因?yàn)樗麄冎付藷o論什么數(shù)據(jù)變化到達(dá)DBMS引擎,允許的數(shù)據(jù)值必須滿足的約束。不管無效的數(shù)據(jù)變化請求是來自窗體的用戶、查詢/修改請求還是應(yīng)用程序,DBMS都應(yīng)該拒絕。
遺憾的是,不同的DBMS產(chǎn)品用不同的方法實(shí)施業(yè)務(wù)規(guī)則。在某些情況下,DBMS產(chǎn)品不具備實(shí)施必要業(yè)務(wù)規(guī)則的能力,必須以代碼形式把它們編入應(yīng)用程序。
1.1.3.2創(chuàng)建表
1.1.3.3定義聯(lián)系
1.1.4應(yīng)用組件
數(shù)據(jù)庫應(yīng)用包括窗體、查詢、報(bào)表、菜單和應(yīng)用程序。
§1.2圖書管理系統(tǒng)
當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代。在各行各業(yè)中離不開信息處理,這正是計(jì)算機(jī)被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計(jì)算機(jī)的最大好處在于利用它能夠進(jìn)行信息管理。使用計(jì)算機(jī)進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。
尤其對于復(fù)雜的信息管理,計(jì)算機(jī)能夠充分發(fā)揮它的優(yōu)越性。計(jì)算機(jī)進(jìn)行信息管理與信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好圖書館信息而設(shè)計(jì)的。
圖書館作為一種信息資源的集散地,圖書和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的圖書館都是初步開始使用,甚至尚未使用計(jì)算機(jī)進(jìn)行信息管理。根據(jù)調(diào)查得知,他們以前對信息管理的主要方式是基于文本、表格等紙介質(zhì)的手工處理,對于圖書借閱情況(如借書天數(shù)、超過限定借書時(shí)間的天數(shù))的統(tǒng)計(jì)和核實(shí)等往往采用對借書卡的人工檢查進(jìn)行,對借閱者的借閱權(quán)限、以及借閱天數(shù)等用人工計(jì)算、手抄進(jìn)行。數(shù)據(jù)信息處理工作量大,容易出錯(cuò);由于數(shù)據(jù)繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng),規(guī)范的信息管理手段。盡管有的圖書館有計(jì)算機(jī),但是尚未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突出,這就是管理信息系統(tǒng)的開發(fā)的基本環(huán)境。
數(shù)據(jù)處理手工操作,工作量大,出錯(cuò)率高,出錯(cuò)后不易更改。圖書館采取手工方式對圖書借閱情況進(jìn)行人工管理,由于信息比較多,圖書借閱信息的管理工作混亂而又復(fù)雜;一般借閱情況是記錄在借書證上,圖書的數(shù)目和內(nèi)容記錄在文件中,圖書館的工作人員和管理員也只是當(dāng)時(shí)對它比較清楚,時(shí)間一長,如再要進(jìn)行查詢,就得在眾多的資料中翻閱、查找了,造成查詢費(fèi)時(shí)、費(fèi)力。如要對很長時(shí)間以前的圖書進(jìn)行更改就更加困難了。
基于這此問題,我認(rèn)為有必要建立一個(gè)圖書管理系統(tǒng),使圖書管理工作規(guī)范化,系統(tǒng)化,程序化,避免圖書管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時(shí)、準(zhǔn)確、有效的查詢和修改圖書情況。
§1.1系統(tǒng)所做工作
1)了解應(yīng)用開發(fā)工具的現(xiàn)狀
2)DelPHi6.0編程基礎(chǔ)
3)MSSQLServer基礎(chǔ)
4)設(shè)計(jì)數(shù)據(jù)庫;設(shè)計(jì)界面
5)開發(fā)數(shù)據(jù)庫。數(shù)據(jù)庫實(shí)現(xiàn)的一些功能有
l數(shù)據(jù)和數(shù)據(jù)說明的醒目顯示;
l多條件的查詢、多條記錄的檢索、模糊查詢;
l數(shù)據(jù)文件某種存儲(chǔ)格式導(dǎo)入數(shù)據(jù)窗體,經(jīng)過數(shù)據(jù)完整性校驗(yàn)存入數(shù)據(jù)庫;
l數(shù)據(jù)庫安全性的設(shè)計(jì);
l數(shù)據(jù)庫的設(shè)計(jì)、數(shù)據(jù)接口、界面的設(shè)計(jì)。
§1.3本文所作工作
緒論部分對數(shù)據(jù)庫應(yīng)用系統(tǒng)的結(jié)構(gòu)、開發(fā)進(jìn)行了簡要介紹,分析了圖書管理信息系統(tǒng)設(shè)計(jì)的特點(diǎn)和任務(wù)。
第二章介紹了數(shù)據(jù)庫的設(shè)計(jì)和范式分析,并系統(tǒng)介紹了SQL語言,為設(shè)計(jì)和理解應(yīng)用程序做了鋪墊。
第三章對系統(tǒng)介紹了Delphi6.0的數(shù)據(jù)庫編程技術(shù)、SQL語言在Delphi6.0中的應(yīng)用、MSSQLServer基礎(chǔ)。
第四章分析了圖書管理系統(tǒng)的應(yīng)用需求,設(shè)計(jì)了系統(tǒng)的數(shù)據(jù)庫結(jié)構(gòu),并根據(jù)需求對系統(tǒng)功能進(jìn)行了劃分和細(xì)化。
第五章根據(jù)第四章的設(shè)計(jì)結(jié)果利用MSSQLServer2000和Delphi6.0進(jìn)行了具體的應(yīng)用程序設(shè)計(jì)。
總結(jié)部分介紹了設(shè)計(jì)體會(huì)和編程體會(huì),并指出了系統(tǒng)設(shè)計(jì)中的不足和改進(jìn)的方向。
第二章數(shù)據(jù)庫理論基礎(chǔ)
一個(gè)成功的信息管理系統(tǒng),是建立在許多條件之上的,而數(shù)據(jù)庫是其中一個(gè)非常重要的條件和關(guān)鍵技術(shù)。
信息管理系統(tǒng)所涉及的數(shù)據(jù)庫設(shè)計(jì)分五個(gè)步驟:數(shù)據(jù)庫需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì)與加載測試。
(1)數(shù)據(jù)庫需求分析的任務(wù)是將業(yè)務(wù)管理單證流化為數(shù)據(jù)流,劃分主題之間的邊界,繪制出DFD圖,并完成相應(yīng)的數(shù)據(jù)字典。
(2)概念設(shè)計(jì)的任務(wù)是從DFD出發(fā),繪制出本主題的實(shí)體-關(guān)系圖,并列出各個(gè)實(shí)體與關(guān)系的綱要表。
(3)邏輯設(shè)計(jì)的任務(wù)是從E-R圖與對應(yīng)的綱要表出發(fā),確定各個(gè)實(shí)體及關(guān)系的表名屬性。
(4)物理設(shè)計(jì)的任務(wù)是確定所有屬性的類型、寬度與取值范圍,設(shè)計(jì)出基本表的主鍵,將所有的表名與字段名英文化(現(xiàn)在很多軟件能支持中文字段,如MSSQLServer,我就是用的中文字段名),實(shí)現(xiàn)物理建庫,完成數(shù)據(jù)庫物理設(shè)計(jì)字典。
(5)加載測試工作貫穿于程序測試工作的全過程,整個(gè)錄入、修改、查詢、處理工作均可視為對數(shù)據(jù)庫的加載測試工作。
要設(shè)計(jì)出一個(gè)好的信息管理系統(tǒng)數(shù)據(jù)庫,除滿足系統(tǒng)所要求的功能外,還必須遵守下列原則:
²基本表的個(gè)數(shù)越少越好。
²主鍵的個(gè)數(shù)越少越好。鍵是表間連接的工具,主鍵越少,表間的連接就越簡單。
²字段的個(gè)數(shù)越少越好。
²所有基本表的設(shè)計(jì)均應(yīng)盡量符合第三范式。
數(shù)據(jù)庫的設(shè)計(jì)中,如何處理多對多的關(guān)系和如何設(shè)計(jì)主鍵,是兩個(gè)有著較大難度、需要重點(diǎn)考慮的問題。下面我們著重從SQL應(yīng)用、數(shù)據(jù)庫設(shè)計(jì)范式和查詢優(yōu)化等方面來分析本課題的系統(tǒng)關(guān)鍵技術(shù)和實(shí)現(xiàn)難點(diǎn)并加以解決。
§2.1數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)及范式分析
信息系統(tǒng)的主要任務(wù)是通過大量的數(shù)據(jù)獲得管理所需要的信息,這就必須存儲(chǔ)和管理大量的數(shù)據(jù)。因此建立一個(gè)良好的數(shù)據(jù)組織結(jié)構(gòu)和數(shù)據(jù)庫,使整個(gè)系統(tǒng)都可以迅速、方便、準(zhǔn)確地調(diào)用和管理所需的數(shù)據(jù),是衡量信息系統(tǒng)開發(fā)工作好壞的主要指標(biāo)之一。
2.1.1數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)
數(shù)據(jù)庫設(shè)計(jì)主要是進(jìn)行數(shù)據(jù)庫的邏輯設(shè)計(jì),即將數(shù)據(jù)按一定的分類、分組系統(tǒng)和邏輯層次組織起來,是面向用戶的。數(shù)據(jù)庫設(shè)計(jì)時(shí)需要綜合企業(yè)各個(gè)部門的存檔數(shù)據(jù)和數(shù)據(jù)需求,分析各個(gè)數(shù)據(jù)之間的關(guān)系,按照DBMS提供的功能和描述工具,設(shè)計(jì)出規(guī)模適當(dāng)、正確反映數(shù)據(jù)關(guān)系、數(shù)據(jù)冗余少、存取效率高、能滿足多種查詢要求的數(shù)據(jù)模型。
數(shù)據(jù)庫設(shè)計(jì)的步驟是:
(1)數(shù)據(jù)庫結(jié)構(gòu)定義:目前的數(shù)據(jù)庫管理系統(tǒng)(DBMS)有的是支持聯(lián)機(jī)事務(wù)處理CLTP(負(fù)責(zé)對事務(wù)數(shù)據(jù)進(jìn)行采集、處理、存儲(chǔ))的操作型DBMS,有的可支持?jǐn)?shù)據(jù)倉庫、有聯(lián)機(jī)分析處理CLAP(指為支持決策的制定對數(shù)據(jù)的一種加工操作)功能的大型DBMS,有的數(shù)據(jù)庫是關(guān)系型的、有的可支持面向?qū)ο髷?shù)據(jù)庫。針對選擇的DBMS,進(jìn)行數(shù)據(jù)庫結(jié)構(gòu)定義。
(2)數(shù)據(jù)表定義:數(shù)據(jù)表定義指定義數(shù)據(jù)庫中數(shù)據(jù)表的結(jié)構(gòu),數(shù)據(jù)表的邏輯結(jié)構(gòu)包括:屬性名稱、類型、表示形式、缺省值、校驗(yàn)規(guī)則、是否關(guān)鍵字、可否為空等。關(guān)系型數(shù)據(jù)庫要盡量按關(guān)系規(guī)范化要求進(jìn)行數(shù)據(jù)庫設(shè)計(jì),但為使效率高,規(guī)范化程度應(yīng)根據(jù)應(yīng)用環(huán)境和條件來決定。數(shù)據(jù)表設(shè)計(jì)不僅要滿足數(shù)據(jù)存儲(chǔ)的要求,還要增加一些如反映有關(guān)信息、操作責(zé)任、中間數(shù)據(jù)的字段或臨時(shí)數(shù)據(jù)表。
(3)存儲(chǔ)設(shè)備和存儲(chǔ)空間組織:確定數(shù)據(jù)的存放地點(diǎn)、存儲(chǔ)路徑、存儲(chǔ)設(shè)備等,備份方案,對多版本如何保證一致性和數(shù)據(jù)的完整性。
(4)數(shù)據(jù)使用權(quán)限設(shè)置:針對用戶的不同使用要求,確定數(shù)據(jù)的用戶使用權(quán)限,確保數(shù)據(jù)安全。
(5)數(shù)據(jù)字典設(shè)計(jì):用數(shù)據(jù)字典描述數(shù)據(jù)庫的設(shè)計(jì),便于維護(hù)和修改。
為了更好地組織數(shù)據(jù)和設(shè)計(jì)出實(shí)際應(yīng)用數(shù)據(jù)庫,應(yīng)該注意如下問題:
規(guī)范化地重組數(shù)據(jù)結(jié)構(gòu):對數(shù)據(jù)進(jìn)行規(guī)范化表達(dá),這在后面將會(huì)具體討論。
關(guān)系數(shù)據(jù)結(jié)構(gòu)的建立:在進(jìn)行了數(shù)據(jù)基本結(jié)構(gòu)的規(guī)范化重組后,還必須建立整體數(shù)據(jù)的關(guān)系結(jié)構(gòu)。這一步設(shè)計(jì)完成后數(shù)據(jù)庫和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)工作基本完成,只待系統(tǒng)實(shí)現(xiàn)時(shí)將數(shù)據(jù)分析和數(shù)據(jù)字典的內(nèi)容代入到所設(shè)計(jì)的數(shù)據(jù)整體關(guān)系結(jié)構(gòu)中,一個(gè)規(guī)范化數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)就建立起來了。
建立關(guān)系數(shù)據(jù)結(jié)構(gòu)涉及三方面內(nèi)容:確定關(guān)聯(lián)的關(guān)鍵指標(biāo)項(xiàng)并建立關(guān)聯(lián)表;確定單一的父系記錄結(jié)構(gòu);建立整個(gè)數(shù)據(jù)庫的關(guān)系結(jié)構(gòu)。
(1)鏈接關(guān)系的確定
在進(jìn)行了上述數(shù)據(jù)規(guī)范化重組后,已經(jīng)可以確保每一個(gè)基本數(shù)據(jù)表(我們簡稱為表)是規(guī)范的,但是這些單獨(dú)的表并不能完整地反映事物,通常需要通過指標(biāo)體系整體指標(biāo)數(shù)據(jù)才能完整全面地反映問題。也就是說在這些基本表的各宇段中,所存儲(chǔ)的是同一事物不同側(cè)面的屬性。那么計(jì)算機(jī)系統(tǒng)如何能知道哪些表中的哪些記錄應(yīng)與其它表中的哪些記錄相對應(yīng),它們表示的是同一個(gè)事物呢?這就需要在設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)時(shí)將這種各表之間的數(shù)據(jù)記錄關(guān)系確定下來。這種表與表之間的數(shù)據(jù)關(guān)系一般都是通過主或輔關(guān)鍵詞之間的連接來實(shí)現(xiàn)的。因?yàn)樵诿總€(gè)表中只有主關(guān)鍵詞才能唯一地標(biāo)識(shí)表中的這一個(gè)記錄值(因?yàn)楦鶕?jù)第三范式的要求,表中其它數(shù)據(jù)字段函數(shù)都依賴于主關(guān)鍵詞),所以將表通過關(guān)鍵詞連接就能夠唯一地標(biāo)識(shí)出某一事物不同屬性在不同表中的存放位置。
(2)確定單一的父子關(guān)系結(jié)構(gòu)
所謂確定單一的父系關(guān)系結(jié)構(gòu)就是要在所建立的各種表中消除多對多(以下用M:N來表示)的現(xiàn)象,即設(shè)法使得所有表中記錄之間的關(guān)系呈樹狀結(jié)構(gòu)(只能由一個(gè)主干發(fā)出若干條分支,而不能有若干條主干交錯(cuò)發(fā)出若干條分支狀況)。所謂的“父系”就是指表的上一級關(guān)系表。消除多對多關(guān)系可以借助于E-R圖的方法來解決,也可以在系統(tǒng)分析時(shí)予以注意,避免這種情況的發(fā)生。
消除這種M:N情況的辦法也很簡單,只需在二表之間增加一個(gè)表,則原來M:N的關(guān)系就改成了M:1,1:N的關(guān)系了。
確定數(shù)據(jù)資源的安全保密屬性:
一般DBMS都提供給我們自己定義數(shù)據(jù)安全保密性的功能。系統(tǒng)所提供的安全保密功能一般有8個(gè)等級(0-7級),4種不同方式(只讀、只寫、刪除、修改),而且允許用戶利用這8個(gè)等級的4種方式對每一個(gè)表自由地進(jìn)行定義。
定義安全保密性的方法一般有如下幾種:
a.原則上所有文件都定義為4級,個(gè)別優(yōu)先級特別高的辦公室(終端或微機(jī)的入網(wǎng)賬號)可定義高于4級的級別,反之則定義為低于4的級別。
b.統(tǒng)計(jì)文件(表)和數(shù)據(jù)錄入文件一般只對本工作站定義為只寫方式,對其它工作站則定義為只讀方式。
c.財(cái)務(wù)等保密文件一般只對中工作站(如財(cái)務(wù)科等)定義為可寫、可改、可刪除方式,對其它工作站則定義為只讀方式,而且不是每個(gè)人都能讀,只有級別相同和高級別者才能讀。
2.1.2數(shù)據(jù)庫設(shè)計(jì)范式分析
建立起一個(gè)良好的數(shù)據(jù)指標(biāo)體系,是建立數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫的最重要的一環(huán)。一個(gè)良好的數(shù)據(jù)指標(biāo)體系是建立DB的必要條件,但不是充分條件。我們完全可以認(rèn)為所建指標(biāo)體系中的一個(gè)指標(biāo)類就是關(guān)系數(shù)據(jù)庫中的一個(gè)基本表,而這個(gè)指標(biāo)類下面的一個(gè)個(gè)具體指標(biāo)就是這個(gè)基本表中的一個(gè)字段。但如果直接按照這種方式建庫顯然還不能算最佳。對于指標(biāo)體系中數(shù)據(jù)的結(jié)構(gòu)在建庫前還必須進(jìn)行規(guī)范化的重新組織。
a.數(shù)據(jù)組織的規(guī)范化形式
在數(shù)據(jù)的規(guī)范化表達(dá)中,一般將一組相互關(guān)聯(lián)的數(shù)據(jù)稱為一個(gè)關(guān)系(relation),而在這個(gè)關(guān)系下的每個(gè)數(shù)據(jù)指標(biāo)項(xiàng)則被稱為數(shù)據(jù)元素(dataelement),這種關(guān)系落實(shí)到具體數(shù)據(jù)庫上就是基本表,而數(shù)據(jù)元素就是基本表中的一個(gè)字段(field)。規(guī)范化表達(dá)還規(guī)定在每一個(gè)基本表中必須定義一個(gè)數(shù)據(jù)元素為關(guān)鍵字(key),它可以唯一地標(biāo)識(shí)出該表中其它相關(guān)的數(shù)據(jù)元素。在規(guī)范化理論中表是二維的,它有如下四個(gè)性質(zhì):
l在表中的任意一列上,數(shù)據(jù)項(xiàng)應(yīng)屬于同一個(gè)屬性(如圖中每一列都存放著不同合同記錄的同一屬性數(shù)據(jù))。
l表中所有行都是不相同的,不允許有重復(fù)組項(xiàng)出現(xiàn)(如圖中每一行都是一個(gè)不同的合同記錄)。
l在表中,行的順序無關(guān)緊要(如圖中每行存的都是合同記錄,至于先放哪一個(gè)合同都沒關(guān)系)。
l在表中,列的順序無關(guān)緊要,但不能重復(fù)(如圖中合同號和合同名誰先誰后都沒關(guān)系,但二者不可重復(fù)或同名)。
在對表的形式進(jìn)行了規(guī)范化定義后,數(shù)據(jù)結(jié)構(gòu)還有五種規(guī)范化定義,定名為規(guī)范化模式,稱為范式。在這五種范式中,一般只用前三種,對于常用系統(tǒng)就足夠了。而且這五種范式是“向上兼容”的,即滿足第五范式的數(shù)據(jù)結(jié)構(gòu)自動(dòng)滿足一、二、三、四范式,滿足第四范式的數(shù)據(jù)結(jié)構(gòu)自動(dòng)滿足第一、二、三范式,……,依此類推。
第一范式(firstnormalform,簡稱1stNF)就是指在同一表中沒有重復(fù)項(xiàng)出現(xiàn),如果有則應(yīng)將重復(fù)項(xiàng)去掉。這個(gè)去掉重復(fù)項(xiàng)的過程就稱之為規(guī)范化處理。在本文所討論的開發(fā)方法里,1stNF實(shí)際上是沒有什么意義的。因?yàn)槲覀儼匆?guī)范化建立的指標(biāo)體系和表的過程都自動(dòng)保證了所有表都滿足1stNF。
第二范式(secondnormalform,簡稱2ndNF)是指每個(gè)表必須有一個(gè)(而且僅一個(gè))數(shù)據(jù)元素為主關(guān)鍵字(primarykey),其它數(shù)據(jù)元素與主關(guān)鍵字一一對應(yīng)。例如,在圖l9.7中如果我們將合同號定義為主關(guān)鍵字(其它數(shù)據(jù)元素中的記錄數(shù)據(jù)都有可能重名,故不能作為主關(guān)鍵字),故只要知道了一個(gè)合同記錄的合同號,就可以唯一地在同一行中找到該合同的任何一項(xiàng)具體信息。通常我們稱這種關(guān)系為函數(shù)依賴(functionaldepEndence)關(guān)系。即表中其它數(shù)據(jù)元素都依賴于主關(guān)鍵字,或稱該數(shù)據(jù)元素唯一地被主關(guān)鍵字所標(biāo)識(shí)。
第三范式(thirdnormalform,簡稱3rdNF)就是指表中的所有數(shù)據(jù)元素不但要能夠唯一地被主關(guān)鍵字所標(biāo)識(shí),而且它們之間還必須相互獨(dú)立,不存在其它的函數(shù)關(guān)系。也就是說對于一個(gè)滿足了2ndNF的數(shù)據(jù)結(jié)構(gòu)來說,表中有可能存在某些數(shù)據(jù)元素依賴于其它非關(guān)鍵宇數(shù)據(jù)元素的現(xiàn)象,必須加以消除。
為防止數(shù)據(jù)庫出現(xiàn)更新異常、插入異常、刪除異常、數(shù)據(jù)冗余太大等現(xiàn)象,關(guān)系型數(shù)據(jù)庫要盡量按關(guān)系規(guī)范化要求進(jìn)行數(shù)據(jù)庫設(shè)計(jì)。
§2.2SQL語言介紹
2.2.1SQL基礎(chǔ)
SQL(StructuredQueryLanguage,結(jié)構(gòu)查詢語言)是一個(gè)功能強(qiáng)大的數(shù)據(jù)庫語言。SQL通常使用于數(shù)據(jù)庫的通訊。ANSI(美國國家標(biāo)準(zhǔn)學(xué)會(huì))聲稱,SQL是關(guān)系數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言。SQL語句通常用于完成一些數(shù)據(jù)庫的操作任務(wù),比如在數(shù)據(jù)庫中更新數(shù)據(jù),或者從數(shù)據(jù)庫中檢索數(shù)據(jù)。使用SQL的常見關(guān)系數(shù)據(jù)庫管理系統(tǒng)有:Oracle、Sybase、MicrosoftSQLServer、Access、Ingres等等。雖然絕大多數(shù)的數(shù)據(jù)庫系統(tǒng)使用SQL,但是它們同樣有它們自立另外的專有擴(kuò)展功能用于它們的系統(tǒng)。但是,標(biāo)準(zhǔn)的SQL命令,比如"Select"、"Insert"、"Update"、"Delete"、"Create"和"Drop"常常被用于完成絕大多數(shù)數(shù)據(jù)庫的操作。MSSQLServer就是用的Transact-SQL。
SQL語言有著非常突出的優(yōu)點(diǎn),主要是:
n非過程化語言
n統(tǒng)一的語言
n是所有關(guān)系數(shù)據(jù)庫的公共語言
非過程化語言:SQL是一個(gè)非過程化的語言,因?yàn)樗淮翁幚硪粋€(gè)記錄,對數(shù)據(jù)提供自動(dòng)導(dǎo)航。SQL允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對單個(gè)記錄進(jìn)行操作,可操作記錄集,所有SQL語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結(jié)果作為另一條SQL語句的輸入。
SQL不要求用戶指定對數(shù)據(jù)的存放方法,這種特性使用戶更易集中精力于要得到的結(jié)果;所有SQL語句使用查詢優(yōu)化器,它是RDBMS的一部分,由它決定對指定數(shù)據(jù)存取的最快速度的手段,查詢優(yōu)化器知道存在什么索引,在哪兒使用索引合適,而用戶則從不需要知道表是否有索引、有什么類型的索引。
統(tǒng)一的語言:SQL可用于所有用戶的DB活動(dòng)模型,包括系統(tǒng)管理員、數(shù)據(jù)庫管理員、應(yīng)用程序員、決策支持系統(tǒng)人員及許多其它類型的終端用戶。
SQL為許多任務(wù)提供了命令,其中包括:
n查詢數(shù)據(jù)
n在表中插入、修改和刪除記錄
n建立、修改和刪除數(shù)據(jù)對象
n控制對數(shù)據(jù)和數(shù)據(jù)對象的存取
n保證數(shù)據(jù)庫一致性和完整性
以前的數(shù)據(jù)庫管理系統(tǒng)為上述各類操作提供單獨(dú)的語言,而SQL將全部任務(wù)統(tǒng)一在一種語言中。
所有關(guān)系數(shù)據(jù)庫的公共語言:由于所有主要的關(guān)系數(shù)據(jù)庫管理系統(tǒng)都支持SQL語言,用戶可將使用SQL的技能從一個(gè)RDBMS(關(guān)系數(shù)據(jù)庫管理系統(tǒng))轉(zhuǎn)到另一個(gè),所有用SQL編寫的程序都是可以移植的。
2.2.2SQL語句
SQL功能強(qiáng)大,是一種完備的數(shù)據(jù)處理語言,不僅用于數(shù)據(jù)庫查詢,而且用于數(shù)據(jù)庫中的數(shù)據(jù)修改和更新,概括起來,它可以分成以下幾組:
DML(DataManipulationLanguage,數(shù)據(jù)操作語言):用于檢索或者修改數(shù)據(jù);
DDL(DataDefinitionLanguage,數(shù)據(jù)定義語言):用于定義數(shù)據(jù)的結(jié)構(gòu),比如創(chuàng)建、修改或者刪除數(shù)據(jù)庫對象;
DCL(DataControlLanguage,數(shù)據(jù)控制語言):用于定義數(shù)據(jù)庫用戶的權(quán)限。
DML組可以細(xì)分為以下的幾個(gè)語句:
SELECT:用于檢索數(shù)據(jù);
INSERT:用于增加數(shù)據(jù)到數(shù)據(jù)庫;
UPDATE:用于從數(shù)據(jù)庫中修改現(xiàn)存的數(shù)據(jù);
DELETE:用于從數(shù)據(jù)庫中刪除數(shù)據(jù)。
DDL語句可以用于創(chuàng)建用戶和重建數(shù)據(jù)庫對象。下面是DDL命令:
CREATETABLE,ALTERTABLE,DROPTABLE,CREATEINDEX,DROPINDEX
下面是一個(gè)簡單SQL語句的例子:
我們使用SQL語句來從Book中檢索‘借書證號’為‘000001’的借閱者姓名:
SELECT姓名FROMBookWHERE借書證號=‘000001’
2.2.2.1DDL與DML
數(shù)據(jù)定義語言DDL:它是用來創(chuàng)建和修改數(shù)據(jù)庫結(jié)構(gòu)的一種語句,包括Create、Alter和Drop語句。
數(shù)據(jù)操作語言DML:包括數(shù)據(jù)查詢與數(shù)據(jù)更新。數(shù)據(jù)查詢主要是由Select語句完成,這一點(diǎn)不再贅述。而數(shù)據(jù)更新所造成的風(fēng)險(xiǎn)大大超過數(shù)據(jù)查詢。數(shù)據(jù)庫管理系統(tǒng)必須在更改期內(nèi)保護(hù)所存儲(chǔ)的數(shù)據(jù)的一致性,確保有效的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫,數(shù)據(jù)庫必須保持一致性,DBMS還必須協(xié)調(diào)多用戶的并行更新,以確保用戶和它們的更改不至于影響其它用戶的作業(yè)。
用于修改數(shù)據(jù)庫內(nèi)容的SQL語句主要有以下三個(gè):
(1)Insert,向一個(gè)表中加入新的數(shù)據(jù)行
(2)Delete,從一個(gè)表中刪除數(shù)據(jù)行
(3)Update,更改數(shù)據(jù)庫中已經(jīng)存在的數(shù)據(jù)
Insert標(biāo)準(zhǔn)語法:
INSERTINTOtable_name(col1,col2...)VALUES(value1,value2...)
下例要將借書證號為‘000001’作為一個(gè)新的借書情況加入借書情況表OWNER中
InsertInto
owner(借書證號,圖書編號,借書日期)
values(‘000001’,‘00000001’,‘2002-9-12’)
Insert語句還可以將多行數(shù)據(jù)添加到目標(biāo)表中去,在這種形式的Insert語句中,新行的數(shù)據(jù)值不是在語句正文中明確地指定的,而是語句中指定的一個(gè)數(shù)據(jù)庫查詢。添加的值來自數(shù)據(jù)庫自身的行,在某些特定的狀態(tài)下,這是非常有用的。多行Insert語句為拷貝數(shù)據(jù)提供了一種緊湊而高效的方法,但我在自已做的圖書管理系統(tǒng)中沒有使用這種方法,我在系統(tǒng)中是使用循環(huán)依照上面的用法來完成多個(gè)記錄的插入。
Update語句用于更新單表中選定行的一列或多列的值。要更新的目標(biāo)表在語句中定義,Set子句則指定要更新哪些列并計(jì)算它們的值。Update語句總是包含Where語句,而且Update語句比較危險(xiǎn),所以您必須明確地認(rèn)識(shí)到Where語句的重要性,Where語句被用來指定需要更新的行。
標(biāo)準(zhǔn)語法:
UPDATEtable_name
SETcolumnname1=value1
[,columname2=value2]...
WHEREsearch_condition
Delete語句標(biāo)準(zhǔn)語法:
DELETEFROMtablenameWHEREcondition
2.2.2.2復(fù)雜操作實(shí)現(xiàn)
在信息管理系統(tǒng)中,我們往往會(huì)遇到歸類、匯總、映射、索引、子查詢等復(fù)雜操作,相應(yīng)的支持與實(shí)現(xiàn)如下:
uGROUPBY方法
GROUPBY子句語法為:
SELECTcolumn1,SUM(column2)
FROM"list-of-tables"
GROUPBY"column-list";
這個(gè)GROUPBY子句將集中所有的行在一起,它包含了指定列的數(shù)據(jù)以及允許合計(jì)函數(shù)來計(jì)算一個(gè)或者多個(gè)列。
在本人的系統(tǒng)中在顯示數(shù)據(jù)時(shí)用到了此語句來對查詢所得的內(nèi)容排序然后再顯示。
u組合條件和布爾運(yùn)算符
以下的SQL語句中就含有組合條件:
SELECTcolumn1,SUM(column2)
FROM"list-of-tables"
WHERE"condition1"AND"condition2";
下面是一個(gè)示例:
SELECT身份描述
FROMID,user
WHEREID.身份編號=USER.身份編號anduser.借書證號=’000001’;
這條SQL語句是從user、id表中查找借閱證號為000001的借閱者的身份描述,第三條語句中如果其中有一個(gè)條件為假,那么就什么都沒有顯示。
uUNION子句
有些時(shí)候,需要一起瀏覽多個(gè)查詢的結(jié)果、組合它們的輸出,我們可以使用UNION關(guān)鍵字。
第三章應(yīng)用系統(tǒng)開發(fā)工具
§3.1Delphi6.0VCL組件的體系結(jié)構(gòu)
Delphi類可以粗略地分成兩部分:一部分是組件類,這些組件類通常以某種方式出現(xiàn)在組件面板上,當(dāng)用戶從組件面板上點(diǎn)取一個(gè)類的圖標(biāo)后,在程序中就自動(dòng)生成了該類的對象(非可視組件除外);另一部分是功能類,這此功能類的對象通常出現(xiàn)在程序代碼中,起著不可代替的作用,但是這些功能類在組件面板上是找不到的。在Delphi中,每一個(gè)類的祖先都是Tobject類,整個(gè)類的層次結(jié)構(gòu)就像一棵倒掛的樹,在最頂層的樹根即為Tobject類。這樣,按照面向?qū)ο缶幊痰幕舅枷?,就使得用戶可用Tobject類這個(gè)類型代替任何其它類的數(shù)據(jù)類型。實(shí)際上在Delphi的類庫中,Tobject類派生出了為數(shù)相當(dāng)眾多的子類,它們形成了一個(gè)龐大的體系,通常情況下,如果不自行開發(fā)組件,就不必了解整個(gè)類的體系結(jié)構(gòu),只用到類層次樹的葉結(jié)點(diǎn)就足夠了。
這一小節(jié)簡略介紹一下Delphi6.0中VCL(可視化組件庫)組件的體系結(jié)構(gòu)。凡是做過程序開發(fā)的人都知道從來沒有單純的數(shù)據(jù)應(yīng)用程序,也就是說,數(shù)據(jù)庫應(yīng)用程序必須和用戶界面(可以是圖形界面,也可以是命令接口)元素相結(jié)合,只講界面或只講數(shù)據(jù)庫本身都構(gòu)不成數(shù)據(jù)庫應(yīng)用程序,因而用Delphi6.0開發(fā)數(shù)據(jù)庫應(yīng)用程序就隱含著界面開發(fā)。Delphi6中的VCL組件可用圖3-1來說明。
組件在Delphi程序的開發(fā)中是最顯眼的角色。大家知道,在編寫程序時(shí)一般都開始于在組件面板上選擇組件并定義組件間的相互作用。但也有一些組件不在組件面板上,例如Tform和Tapplication(典型的非可視組件)。組件是Tcomponents派生出來的子類,可以流的形式存放在DFM文件中,具有事件和Publish屬性。
窗口組件類是窗口化的可視化組件類,在Delphi的類庫中占有最大的份額。在實(shí)際編程中,窗口組件類的對象都有句柄,可以接受輸入焦點(diǎn)和包含其它組件。
圖形組件與窗口組件并列,是另一大類組件。圖形組件不是基于窗口的,因而不能有窗口句柄,不能接受輸入焦點(diǎn)和包含其它組件。從圖8-43中可以看出,圖形組件的基類是TgraphicControl,在實(shí)際編程中,它們必須寄生于它們的宿主——窗口組件類的對象,由它們的擁有者負(fù)責(zé)其顯示,而且它們還能觸發(fā)一些和鼠標(biāo)活動(dòng)相關(guān)的事件。圖形控件最典型的例子是Tlabel和TspeedButton。由此可以看出圖形組件的功能很弱,圖形組件的用處何在呢?其實(shí)使用圖形組件的最大好處在于節(jié)省資源,正是因?yàn)樗鼈兊墓δ茌^弱,所以使用的系統(tǒng)資源就要少。在一個(gè)應(yīng)用程序中,如果能在不影響其功能的前提下合理大量地使用圖形組件,將會(huì)大減少程序?qū)ο到y(tǒng)資源的消耗。
非可視組件是與可視組件相并列的另一類組件,非可視組件在程序運(yùn)行中是不可見的(除各種對話框組件之外,事實(shí)上有人認(rèn)為對話框組件不能歸入非可視組件,應(yīng)該是另一種介于可視與非可視之間的組件)。
最后要說明一下,常說的控件實(shí)際上是一種組件。也就是說組件這個(gè)概念要大于控件,控件在內(nèi)涵上包含于組件中??丶蒞indows系列操作系統(tǒng)提出并使用,而組件是Borland和其它廠商在對Windows控件做了必要的擴(kuò)展之后提出來的概念,它們是在不同時(shí)期由不同的廠商提出的概念。
§3.2數(shù)據(jù)庫組件介紹
用Delphi6開發(fā)數(shù)據(jù)庫應(yīng)用,重點(diǎn)是和各種數(shù)據(jù)庫組件打交道,能和數(shù)據(jù)庫掛鉤的組件對象有5種,它們是:Session(數(shù)據(jù)庫會(huì)話)、Database(數(shù)據(jù)庫)、Dataset(數(shù)據(jù)集)、DataSource(數(shù)據(jù)源)、Datacontrol(數(shù)據(jù)控制組件,也叫data-controls即數(shù)據(jù)感知組件)。其中前面4種統(tǒng)稱為數(shù)據(jù)訪問(DataAccess)組件。這些組件的相互關(guān)系如圖3-2所示。
ADO組件Delphi6.0包含了可以用來訪問Microsoft公司的ActiveXDataObjects(ADO)格式數(shù)據(jù)庫的組件。ADO是Micrsoft公司關(guān)于各種類型數(shù)據(jù)的高等界面,后來逐漸演變成滿足所有數(shù)據(jù)訪問需要的完整解決辦法。ADO的對象模型是所有數(shù)據(jù)訪問接口對象模型中最簡單的一種。Microsoft公司用來訪問ADO數(shù)據(jù)的應(yīng)用程序界面技術(shù)是OLEDB。OLEDB是一種底層編程接口,用來訪問許多不同類型的數(shù)據(jù)源,其中包括消息、文件系統(tǒng)以及其他一些非傳統(tǒng)的數(shù)據(jù)源。OLEDB是一個(gè)由ComponentObjectModel(COM)接口組成的集合,用來隱藏創(chuàng)建數(shù)據(jù)訪問服務(wù)過程中的細(xì)節(jié)。OLEDB提供了訪問任何數(shù)據(jù)資源的方法,包括相互關(guān)聯(lián)的數(shù)據(jù)庫和相互不關(guān)聯(lián)的數(shù)據(jù)庫、Email和文件系統(tǒng)、文本和圖形以及用戶定義的數(shù)據(jù)對象。
Delphi的ADO組件無需依靠BDE而是使用ADO技術(shù),提供了可以通過數(shù)據(jù)控制組件訪問數(shù)據(jù)的新方法。唯一的要求是在使用ADO組件時(shí)必須運(yùn)行ADO/OLE-DB。ADO組件的使用使得DELPHI在訪問數(shù)據(jù)的類型和采用的技術(shù)方面都有了很大的突破。
數(shù)據(jù)模塊設(shè)計(jì)窗口數(shù)據(jù)模塊設(shè)計(jì)窗口是用來設(shè)計(jì)和維護(hù)數(shù)據(jù)模塊的。數(shù)據(jù)模塊設(shè)計(jì)窗口中包含了所有以.DTI作為文件擴(kuò)展名的DataDiagram文件的信息。DTI文件在編譯時(shí)不起任何作用。
§3.3SQL語言在Delphi中的應(yīng)用
在Delphi中使用SQL語言非常方便,一般來說,都是通過Tquery或TADOquery組件來使用SQL語言的??梢栽赥query或TADOquery組件的SQL屬性中設(shè)置SQL語句。設(shè)計(jì)程序時(shí),在該組件的屬性對話框中選擇SQL屬性,單擊帶省略號的按鈕,就可以打開StringListEditor對話框,然后我們就可以在對話框中添加SQL語句。還可以使用Delphi的SQLBuilder來自動(dòng)生成SQL語句,這樣可以避免手工編寫SQL而可能造成的語法錯(cuò)誤。
靜態(tài)SQL語句在程序設(shè)計(jì)時(shí)便已固定下來,它不包含任何參數(shù)和變量。
動(dòng)態(tài)SQL語句,也被稱作參數(shù)化的語句,在其中間包含著表示字段名或表名的參數(shù),例如下面的語句是一條動(dòng)態(tài)SQL語句:
Select*FromBookWhere圖書編號=:bookCode;
其中的變量bookCode便是一個(gè)參數(shù)變量,它由一個(gè)冒號引導(dǎo),在程序運(yùn)行過程中,必須要為該參數(shù)賦值,該條SQL語句才能正確執(zhí)行,每次運(yùn)行應(yīng)用程序時(shí)可以為該參數(shù)變量賦予不同的值。為參數(shù)賦值有三種方法:
①根據(jù)參數(shù)在SQL語句中出現(xiàn)的順序,設(shè)置TADOQuery組件的parameters屬性值為參數(shù)賦值。
②直接根據(jù)SQL語句中各參數(shù)的名字,調(diào)用ParamByName方法來為各參數(shù)賦值。
③將TADOQuery組件的DataSource屬性設(shè)置為另一個(gè)數(shù)據(jù)源,這樣將另一個(gè)數(shù)據(jù)源中與當(dāng)前TADOQuery組件的SQL語句中的參數(shù)名相匹配的字段值賦給其對應(yīng)的參數(shù)。利用這種方法也能實(shí)現(xiàn)所謂的連接查詢,創(chuàng)建主要—明細(xì)型數(shù)據(jù)庫應(yīng)用。
在使用動(dòng)態(tài)SQL語句編程時(shí),常常用到一個(gè)很重要的方法Prepare,調(diào)用Prepare方法之后,Delphi會(huì)將帶參數(shù)的SQL語句傳送給與其對應(yīng)的數(shù)據(jù)庫引擎,對動(dòng)態(tài)SQL語句進(jìn)行語法分析和優(yōu)化。雖然在用動(dòng)態(tài)SQL語句編程時(shí),調(diào)用Prepare方法并不是必須的,但是調(diào)用Prepare方法后,會(huì)極大地提高動(dòng)態(tài)SQL語句的執(zhí)行性能,特別是當(dāng)要反復(fù)多次執(zhí)行同一條動(dòng)態(tài)SQL語句時(shí),其優(yōu)越性會(huì)更加明顯。如果在應(yīng)用程序中執(zhí)行一條SQL語句之前并沒有顯式地調(diào)用Prepare方法,每次在執(zhí)行SQL語句時(shí),Delphi會(huì)隱含地調(diào)用Prepare方法以準(zhǔn)備這個(gè)查詢。
TadoQuery部件還有一個(gè)Prepare屬性,這是一個(gè)布爾型屬性,當(dāng)其屬性值為True時(shí),表明該查詢已被準(zhǔn)備好了(SQL語句已被傳送到數(shù)據(jù)庫引擎中),當(dāng)我們使用參數(shù)編輯器ParametersEditor來為動(dòng)態(tài)SQL語句中的參數(shù)賦值時(shí),當(dāng)設(shè)置完相應(yīng)的參數(shù)值并退出參數(shù)編輯器時(shí),Delphi會(huì)隱含地調(diào)用Prepare方法以準(zhǔn)備好查詢。
當(dāng)SQL語句執(zhí)行完之后,要想準(zhǔn)備下一個(gè)查詢,首先必須調(diào)用Close方法,然后才能調(diào)用Prepare方法準(zhǔn)備下一個(gè)查詢。一般來說,在一個(gè)應(yīng)用程序中應(yīng)該調(diào)用一次Prepare方法,常常在窗體的OnCreate事件處理過程中調(diào)用Prepare方法,然后用上述介紹的方法為參數(shù)賦值,最后調(diào)用Open方法或ExecSQL方法執(zhí)行SQL語句,以完成查詢。
當(dāng)然在調(diào)用Prepare方法準(zhǔn)備好一個(gè)查詢時(shí),會(huì)消耗一些數(shù)據(jù)庫資源,因而每當(dāng)一個(gè)查詢執(zhí)行完畢之后,要養(yǎng)成調(diào)用UnPrepare方法以撤消查詢的好習(xí)慣。在運(yùn)行程序過程中,通過程序改變TQuery或TADOquery部件的SQL屬性值時(shí),Delphi會(huì)自動(dòng)地調(diào)用Close方法和UnPrepare方法,以撤消查詢。
在程序運(yùn)行過程中,要想設(shè)置Tquery或TADOquery部件的SQL屬性,必須首先調(diào)用Close方法,關(guān)閉TQuery或TADOquery部件,然后再調(diào)用Clear方法清除SQL屬性中現(xiàn)存的SQL命令語句,最后再調(diào)用Add方法為SQL屬性設(shè)置新的SQL命令語句。例如:
datamodule4.adoquery2.close;
datamodule4.adoquery2.sql.clear;
datamodule4.adoquery2.sql.add(''''SELECT借書證號,密碼FROM[user]WHERE(借書證號=:tt)'''');
datamodule4.adoquery2.parameters[0].value:=username;
datamodule4.adoquery2.open;
在為TQuery或TADOquery部件設(shè)置SQL屬性時(shí)調(diào)用Close方法總是很安全的,如果TQuery或TADOquery部件已經(jīng)被關(guān)閉了,調(diào)用Close方法時(shí)不會(huì)產(chǎn)生任何影響。在應(yīng)用程序中為SQL屬性設(shè)置新的SQL命令語句時(shí),必須要調(diào)用Clear方法以清除SQL屬性中現(xiàn)存的SQL命令語句,如果不調(diào)用Clear方法,便調(diào)用Add方法向SQL屬性中設(shè)置SQL命令語句,那么新設(shè)置的SQL命令語句會(huì)追加在現(xiàn)存SQL命令語句后面,在程序運(yùn)行時(shí)常常會(huì)出現(xiàn)出乎意料的查詢結(jié)果甚至程序無法運(yùn)行下去。
在這里要特別注意的,一般情況下TQuery或TADOquery部件的SQL屬性只能包含一條完整的SQL語句,它不允許被設(shè)置成多條SQL語句。當(dāng)然有些數(shù)據(jù)庫服務(wù)器也支持在TQuery或TADOquery部件的SQL屬性中設(shè)置多條SQL語句,只要數(shù)據(jù)庫服務(wù)器允許這樣,我們在編程時(shí)可以為SQL屬性設(shè)置多條SQL語句。
在為TQuery或TADOquery部件設(shè)置完SQL屬性的屬性值之后,也即編寫好適當(dāng)?shù)腟QL程序之后,可以有多種方式來執(zhí)行SQL程序。
在設(shè)計(jì)過程中,設(shè)置完TQuery或TADOquery部件的SQL屬性之后將其Active屬性的值置為True,這樣便可以執(zhí)行SQL屬性中的SQL程序,如果應(yīng)用中有與TQuery或TADOquery部件相連的數(shù)據(jù)瀏覽部件(如TDDGridTDBEdit等)那么在這些數(shù)據(jù)瀏覽部件中會(huì)顯示SQL程序的執(zhí)行結(jié)果。
在應(yīng)用程序運(yùn)行過程中,通過程序調(diào)用TQuery或TADOquery組件的Open方法或ExecSQL方法可以執(zhí)行其SQL屬性中的SQL程序。Open方法和ExecSQL方法是不一樣的。Open方法只能用來執(zhí)行SQL語言的查詢語句(Select命令),并返回一個(gè)查詢結(jié)果集,而ExecSQL方法還可以用來執(zhí)行其它常用的SQL語句(如INSERT,UPDATE,DELETE等命令),例如:
Query1.Open(這樣會(huì)返回一個(gè)查詢結(jié)果集)
如果調(diào)用Open方法,而沒有查詢結(jié)果時(shí),會(huì)出錯(cuò)。此時(shí)應(yīng)該調(diào)用ExecSQL方法來代替Open方法。如:
Query1.ExecSQL(沒有返回結(jié)果)
當(dāng)然在設(shè)計(jì)應(yīng)用程序時(shí),程序設(shè)計(jì)人員是無法確定TQuery或TADOquery組件中的SQL語句是否會(huì)返回一個(gè)查詢結(jié)果的。對于這種情況應(yīng)當(dāng)用Try…Except模塊來設(shè)計(jì)程序。在Try部分調(diào)用Open方法,而在Except部分調(diào)用ExceSQL方法,這樣才能保證程序的正確運(yùn)行。
例如:
Try
Query1.Open
Except
Query1.ExecSQL
End
通過Tquery或TADOquery組件可以獲得兩種類型的數(shù)據(jù):
u“活動(dòng)”的數(shù)據(jù)
這種數(shù)據(jù)就跟通過TTable部件獲得的數(shù)據(jù)一樣,用戶可以通過數(shù)據(jù)瀏覽部件來編輯修改這些數(shù)據(jù),并且當(dāng)調(diào)用Post方法或當(dāng)焦點(diǎn)離開當(dāng)前的數(shù)據(jù)瀏覽部件時(shí),用戶對數(shù)據(jù)的修改自動(dòng)地被寫回到數(shù)據(jù)庫中。
u非活動(dòng)的數(shù)據(jù)(只讀數(shù)據(jù))
用戶通過數(shù)據(jù)瀏覽部件是不能修改其中的數(shù)據(jù)。在缺省情況下,通過TQuery部件獲得的查詢結(jié)果數(shù)據(jù)是只讀數(shù)據(jù),要想獲得“活動(dòng)”的數(shù)據(jù),在應(yīng)用程序中必須要設(shè)置Tquery或TADOquery組件的RequestLive屬性值為True,然而并不是在任何情況下(通過設(shè)置RequestLive的屬值True)都可以獲得“活動(dòng)”的數(shù)據(jù)的,要想獲得“活動(dòng)”的數(shù)據(jù),除了將TQuery部件的RequestLive屬性設(shè)置為True外,相應(yīng)的SQL命令還要滿足以下條件。
本地SQL語句查詢情況下,要得到可更新的數(shù)據(jù)集,SQL語句的限制為:
n查詢只能涉及到一個(gè)單獨(dú)的表
nSQL語句中不能包含ORDERBY命令
nSQL語句中不能含聚集運(yùn)算符SUM或AVG
n在Select后的字段列表中不能有計(jì)算字段
n在Select語句WHERE部分只能包含字段值與常量的比較運(yùn)算,這些比較運(yùn)算符是:Like,>,<,>=,<=。各比較運(yùn)算之間可以有并和交運(yùn)算:AND和OR
當(dāng)通過SQL語句查詢數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫表:
n查詢只能涉及到一個(gè)單獨(dú)的表
nSQL語句中不能包含ORDERBY命令
nSQL語句中不能含聚集運(yùn)算符SUM或AVG運(yùn)算
另外,如果是查詢Sybase數(shù)據(jù)庫中的表,那么被查詢的表中只能有一個(gè)索引。
如果在應(yīng)用程序中要求TQuery或TADOquery組件返回一個(gè)“活動(dòng)”的查詢結(jié)果數(shù)據(jù)集,但是SQL命令語句不滿足上述約束條件時(shí),對于本地?cái)?shù)據(jù)庫的SQL查詢,BDE只能返回只讀的數(shù)據(jù)集。對于數(shù)據(jù)庫服務(wù)器中的SQL查詢,只能返回錯(cuò)誤的代碼。當(dāng)Tquery或TADOquery組件返回一個(gè)“活動(dòng)”的查詢結(jié)果數(shù)據(jù)集時(shí),它的CanModIfy屬性的值會(huì)被設(shè)置成True。
§3.4MSSQLServer簡述
SQLServer是一個(gè)后臺(tái)數(shù)據(jù)庫管理系統(tǒng),它功能強(qiáng)大操作簡便,日益為廣大數(shù)據(jù)庫用戶所喜愛。越來越多的開發(fā)工具提供了與SQLServer的接口。SQLServer是一個(gè)關(guān)系數(shù)據(jù)庫管理系統(tǒng),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開發(fā)的。于1988年推出了第一個(gè)OS/2版本,在WindowsNT推出后,Microsoft與Sybase在SQLServer的開發(fā)上就分道揚(yáng)鑣了,Microsoft將SQLServer移植到WindowsNT系統(tǒng)上,專注于開發(fā)推廣SQLServer的WindowsNT版本。
SQLServer2000是Microsoft公司推出的SQLServer數(shù)據(jù)庫管理系統(tǒng)的最新版本,該版本繼承了SQLServer7.0版本的優(yōu)點(diǎn),同時(shí)又比它增加了許多更先進(jìn)的功能、具有使用方便、可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點(diǎn)??煽缭綇倪\(yùn)行MicrosoftWindows98的膝上型電腦到運(yùn)行MicrosoftWindows2000的大型多處理器的服務(wù)器等多種平臺(tái)使用。MSSQLServer不但可以應(yīng)用于大中型數(shù)據(jù)庫管理中,建立分布式關(guān)系數(shù)據(jù)庫,并且也可以開發(fā)桌面數(shù)據(jù)庫。事實(shí)上,SQLServer數(shù)據(jù)庫處理的基本結(jié)構(gòu),采取關(guān)系型數(shù)據(jù)庫模式,盡管如此,相信大家都可以輕易的發(fā)現(xiàn),在SQLServer的數(shù)據(jù)庫處理方式,則是使用面向?qū)ο蟮牟僮鞣绞脚c精神,也就是說,SQLServer的所有功能,都可以基于系統(tǒng)已經(jīng)建立好的一些對象來達(dá)成,是相當(dāng)OO(面向?qū)ο螅┑囊粋€(gè)系統(tǒng)結(jié)構(gòu)。
SQLServer企業(yè)管理器是SQLServer的主要管理工具,它提供了一個(gè)遵從MMC標(biāo)準(zhǔn)的用戶界面,使用戶得以:
·定義SQLServer實(shí)例組。
·將個(gè)別服務(wù)器注冊到組中。
·為每個(gè)已注冊的服務(wù)器配置所有SQLServer選項(xiàng)。
·在每個(gè)已注冊的服務(wù)器中創(chuàng)建并管理所有SQLServer數(shù)據(jù)庫、對象、登錄、用戶和權(quán)限。
·在每個(gè)已注冊的服務(wù)器上定義并執(zhí)行所有SQLServer管理任務(wù)。
·通過喚醒調(diào)用SQL查詢分析器,交互地設(shè)計(jì)并測試SQL語句、批處理和腳本。
·喚醒調(diào)用為SQLServer定義的各種向?qū)А?/p>
·
第三章圖書管理系統(tǒng)設(shè)計(jì)分析
§4.1應(yīng)用需求分析
圖書管理系統(tǒng)需要滿足來自三方面的需求,這三個(gè)方面分別是圖書借閱者、圖書館工作人員和圖書館管理人員。圖書借閱者的需求是查詢圖書館所存的圖書、個(gè)人借閱情況及個(gè)人信息的修改;圖書館工作人員對圖書借閱者的借閱及還書要求進(jìn)行操作,同時(shí)形成借書或還書報(bào)表給借閱者查看確認(rèn);圖書館管理人員的功能最為復(fù)雜,包括對工作人員、圖書借閱者、圖書進(jìn)行管理和維護(hù),及系統(tǒng)狀態(tài)的查看、維護(hù)并生成催還圖書報(bào)表。
圖書借閱者可直接查看圖書館圖書情況,如果圖書借閱者根據(jù)本人借書證號和密碼登錄系統(tǒng),還可以進(jìn)行本人借書情況的查詢和維護(hù)部分個(gè)人信息。一般情況下,圖書借閱者只應(yīng)該查詢和維護(hù)本人的借書情況和個(gè)人信息,若查詢和維護(hù)其他借閱者的借書情況和個(gè)人信息,就要知道其他圖書借閱者的借書證號和密碼。這些是很難得到的,特別是密碼,所以不但滿足了圖書借閱者的要求,還保護(hù)了圖書借閱者的個(gè)人隱私。
圖書館工作人員有修改圖書借閱者借書和還書記錄的權(quán)限,所以需對工作人員登陸本模塊進(jìn)行更多的考慮。在此模塊中,圖書館工作人員可以為圖書借閱者加入借書記錄或是還書記錄,并打印生成相應(yīng)的報(bào)表給用戶查看和確認(rèn)。
圖書館管理人員功能的信息量大,數(shù)據(jù)安全性和保密性要求最高。本功能實(shí)現(xiàn)對圖書信息、借閱者信息、總體借閱情況信息的管理和統(tǒng)計(jì)、工作人員和管理人員信息查看及維護(hù)。圖書館管理員可以瀏覽、查詢、添加、刪除、修改、統(tǒng)計(jì)圖書的基本信息;瀏覽、查詢、統(tǒng)計(jì)、添加、刪除和修改圖書借閱者的基本信息,瀏覽、查詢、統(tǒng)計(jì)圖書館的借閱信息,但不能添加、刪除和修改借閱信息,這部分功能應(yīng)該由圖書館工作人員執(zhí)行,但是,刪除某條圖書借閱者基本信息記錄時(shí),應(yīng)實(shí)現(xiàn)對該圖書借閱者借閱記錄的級聯(lián)刪除。并且還應(yīng)具有生成催還圖書報(bào)表,并打印輸出的功能。
在本系統(tǒng)中由于沒有打印機(jī)設(shè)備供試驗(yàn),所以預(yù)先把報(bào)表打印改成報(bào)表預(yù)覽。
設(shè)計(jì)不同用戶的操作權(quán)限和登陸方法
對所有用戶開放的圖書查詢
借閱者維護(hù)借閱者個(gè)人部分信息
借閱者查看個(gè)人借閱情況信息
維護(hù)借閱者個(gè)人密碼
根據(jù)借閱情況對數(shù)據(jù)庫進(jìn)行操作并生成報(bào)表
根據(jù)還書情況對數(shù)據(jù)庫進(jìn)行操作并生成報(bào)表
查詢及統(tǒng)計(jì)各種信息
維護(hù)圖書信息
維護(hù)工作人員和管理員信息
維護(hù)借閱者信息
處理信息的完整性
對借閱過期的圖書生成報(bào)表
圖4-2圖書管理系統(tǒng)數(shù)據(jù)庫應(yīng)用需求的總結(jié)
根據(jù)以上所做的需求分析,并略掉一些細(xì)節(jié)(如不考慮用戶的登錄;對記錄的維護(hù)),得出以下的三層數(shù)據(jù)流圖。
§4.2系統(tǒng)功能模塊劃分
系統(tǒng)功能框圖如圖4-10所示。
§4.3系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
4.3.1概念設(shè)計(jì)
在概念設(shè)計(jì)階段中,設(shè)計(jì)人員從用戶的角度看待數(shù)據(jù)及處理要求和約束,產(chǎn)生一個(gè)反映用戶觀點(diǎn)的概念模式。然后再把概念模式轉(zhuǎn)換成邏輯模式。將概念設(shè)計(jì)從設(shè)計(jì)過程中獨(dú)立開來,使各階段的任務(wù)相對單一化,設(shè)計(jì)復(fù)雜程度大大降低,不受特定DBMS的限制。
利用ER方法進(jìn)行數(shù)據(jù)庫的概念設(shè)計(jì),可分成三步進(jìn)行:首先設(shè)計(jì)局部ER模式,然后把各局部ER模式綜合成一個(gè)全局模式,最后對全局ER模式進(jìn)行優(yōu)化,得到最終的模式,即概念模式。
(1)設(shè)計(jì)局部ER模式
實(shí)體和屬性的定義:
圖書(圖書編號,圖書名稱,作者,出版社,出版日期,備注,價(jià)格,數(shù)量,)
借閱者(借書證號,姓名,性別,身份證,聯(lián)系電話,密碼)
身份(身份編號,身份描述,最大借閱數(shù))
圖書類別(圖書類別編號,類別描述)
ER模型的“聯(lián)系”用于刻畫實(shí)體之間的關(guān)聯(lián)。一種完整的方式是對局部結(jié)構(gòu)中任意兩個(gè)實(shí)體類型,依據(jù)需求分析的結(jié)果,考察局部結(jié)構(gòu)中任意兩個(gè)實(shí)體類型之間是否存在聯(lián)系。若有聯(lián)系,進(jìn)一步確定是1:N,M:N,還是1:1等。還要考察一個(gè)實(shí)體類型內(nèi)部是否存在聯(lián)系,兩個(gè)實(shí)體類型之間是否存在聯(lián)系,多個(gè)實(shí)體類型之間是否存在聯(lián)系,等等。聯(lián)系定義如圖4-5所示。解釋如下:
u一個(gè)借閱者(用戶)只能具有一種身份,而一種身份可被多個(gè)借閱者所具有;
u一本圖書只能屬于一種圖書類別(類別),而一種圖書類別可以包含多本圖書;
u一個(gè)用戶可以借閱多本不同的書,而一本書也可以被多個(gè)不同的用戶所借閱。
(2)設(shè)計(jì)全局ER模式
所有局部ER模式都設(shè)計(jì)好了后,接下來就是把它們綜合成單一的全局概念結(jié)構(gòu)。全局概念結(jié)構(gòu)不僅要支持所有局部ER模式,而且必須合理地表示一個(gè)完整、一致的數(shù)據(jù)庫概念結(jié)構(gòu)。
1)確定公共實(shí)體類型
為了給多個(gè)局部ER模式的合并提供開始合并的基礎(chǔ),首先要確定各局部結(jié)構(gòu)中的公共實(shí)體類型。在這一步中我們僅根據(jù)實(shí)體類型名和鍵來認(rèn)定公共實(shí)體類型。一般把同名實(shí)體類型作為公共實(shí)體類型的一類候選,把具有相同鍵的實(shí)體類型作為公共實(shí)體類型的另一類候選。
2)局部ER模式的合并
合并的原則是:首先進(jìn)行兩兩合并;先和合并那些現(xiàn)實(shí)世界中有聯(lián)系的局部結(jié)構(gòu);合并從公共實(shí)體類型開始,最后再加入獨(dú)立的局部結(jié)構(gòu)。
3)消除沖突
沖突分為三類:屬性沖突、結(jié)構(gòu)沖突、命名沖突。
設(shè)計(jì)全局ER模式的目的不在于把若干局部ER模式形式上合并為一個(gè)ER模式,而在于消除沖突,使之成為能夠被所有用戶共同理解和接受的同一的概念模型。
3)全局ER模式的優(yōu)化
在得到全局ER模式后,為了提高數(shù)據(jù)庫系統(tǒng)的效率,還應(yīng)進(jìn)一步依據(jù)處理需求對ER模式進(jìn)行優(yōu)化。一個(gè)好的全局ER模式,除能準(zhǔn)確、全面地反映用戶功能需求外,還應(yīng)滿足下列條件:實(shí)體類型的個(gè)數(shù)要盡可能的少;實(shí)體類型所含屬性個(gè)數(shù)盡可能少;實(shí)體類型間聯(lián)系無冗余。
綜上所述,“圖書管理系統(tǒng)”的全局ER模式如圖4-13所示。
4.3.2關(guān)系數(shù)據(jù)庫的邏輯設(shè)計(jì)
由于概念設(shè)計(jì)的結(jié)果是ER圖,DBMS一般采用關(guān)系型(本人所使用的MSSQLServer就是關(guān)系型的DBMS),因此數(shù)據(jù)庫的邏輯設(shè)計(jì)過程就是把ER圖轉(zhuǎn)化為關(guān)系模式的過程。由于關(guān)系模型所具有的優(yōu)點(diǎn),邏輯設(shè)計(jì)可以充分運(yùn)用關(guān)系數(shù)據(jù)庫規(guī)范化理論,使設(shè)計(jì)過程形式化地進(jìn)行。設(shè)計(jì)結(jié)果是一組關(guān)系模式的定義。
(1)導(dǎo)出初始關(guān)系模式
book(圖書編號#,圖書名稱,圖書類別#,作者,出版社,出版日期,備注,價(jià)格,數(shù)量)class(圖書類別#,類別名)user(借書證號#,姓名,性別,身份編號#,身份證,聯(lián)系電話,密碼)ID(身份編號#,身份描述,最大借閱數(shù))Owner(借書證號#,圖書編號#,借書日期)
圖4-14關(guān)系模式集
(2)產(chǎn)生子模式
子模式是用戶所用到的那部分?jǐn)?shù)據(jù)的描述。除了指出用戶用到的數(shù)據(jù)外,還應(yīng)指出數(shù)據(jù)與概念模式中相應(yīng)數(shù)據(jù)的聯(lián)系,即指出概念模式與子模式之間的對應(yīng)性。
借書子模式(借書證號#,姓名,圖書編號#,圖書名稱,借書日期)
圖4-15部分子模式
(3)根據(jù)設(shè)計(jì)中出現(xiàn)的問題本人在寫系統(tǒng)時(shí)還加入了兩個(gè)關(guān)系模式:
1、ownertemp:用于工作人員在處理借書、還書工作時(shí)臨時(shí)存儲(chǔ)借書、還書信息,以便打印報(bào)表時(shí)使用。
2、keyer:用于存儲(chǔ)工作人員和圖書館管理員的用戶名和密碼及權(quán)限,以便工作人員或圖書館管理員進(jìn)入相應(yīng)的功能模塊時(shí)進(jìn)行驗(yàn)證用戶的身份。
4.3.3數(shù)據(jù)庫的實(shí)現(xiàn)
我選用MicrosoftSQLServer2000(企業(yè)版)數(shù)據(jù)庫來進(jìn)行數(shù)據(jù)庫的邏輯設(shè)計(jì)。首先創(chuàng)建七個(gè)基本數(shù)據(jù)庫表如表4-1-4-7所示,然后根據(jù)全局ER圖,建立各個(gè)表之間的聯(lián)系,如圖4-8所示。
表4-1借閱者基本信息表的結(jié)構(gòu)(User)
表4-2圖書信息表的結(jié)構(gòu)(Book)
表4-3圖書類別信息表的結(jié)構(gòu)(Class)
表4-4借閱者身份信息表的結(jié)構(gòu)(ID)
表4-5借閱情況信息表的結(jié)構(gòu)(Owner)
表4-6借閱情況臨時(shí)存儲(chǔ)信息表的結(jié)構(gòu)(Ownertemp)
注:在owner表和ownertemp表中加入了索引字段,用來唯一標(biāo)識(shí)一條借書記錄,并且設(shè)置為標(biāo)識(shí),標(biāo)識(shí)種子為1。
表4-7工作人員和管理員信息表的結(jié)構(gòu)(Keyer)
圖4-8數(shù)據(jù)庫表間聯(lián)系圖
第五章圖書管理系統(tǒng)應(yīng)用程序設(shè)計(jì)
§5.1系統(tǒng)窗體模塊組成
§5.2數(shù)據(jù)模塊窗體的設(shè)置
在編寫數(shù)據(jù)庫應(yīng)用程序時(shí),經(jīng)常要遇到這樣的情況,即好多組件、窗體同時(shí)訪問相同的數(shù)據(jù)源,如果為每一個(gè)組件或者窗體都設(shè)置一個(gè)數(shù)據(jù)源將是十分耗時(shí)的工件,而且要保證這些數(shù)據(jù)源的確是相同的也需花一番功夫。那么,能不能將這些數(shù)據(jù)源集中管理,最好是做成一個(gè)統(tǒng)一的模塊,需要時(shí)就將該模塊引入而不必直接操作數(shù)據(jù)源本身呢?數(shù)據(jù)模塊(DataModule)是解決這個(gè)問題最好的答案。簡單說來,數(shù)據(jù)模塊是用來集中管理數(shù)據(jù)源的一個(gè)窗體,該窗體可被需要的地方隨時(shí)引入。
但本人在開發(fā)這個(gè)系統(tǒng)時(shí),開始使用了一下數(shù)據(jù)模塊,但在使用過程中卻碰到了一些問題。并且考慮這個(gè)系統(tǒng)使用到的TADOQuery控件比較多,如果使用數(shù)據(jù)控件可能會(huì)帶來管理上的麻煩,如弄混各個(gè)數(shù)據(jù)控件的作用。還考慮到使用動(dòng)態(tài)生成ADOQuery可能會(huì)更節(jié)省資源。所以在本人的系統(tǒng)中,開始做的第一個(gè)模塊“借閱者個(gè)人模塊”中還稍微使用了一下數(shù)據(jù)模塊。但在后面做的兩個(gè)模塊中大多都是用動(dòng)態(tài)生成ADOQuery來實(shí)現(xiàn)的。并且由于SQL語句是動(dòng)態(tài)加入的所以datamodule中的控件也不會(huì)多。
§5.3啟動(dòng)畫面的實(shí)現(xiàn)
啟動(dòng)畫面是為了給用戶一個(gè)良好的印像,加深軟件的親和力,沒有實(shí)際的功能,在Form1窗體中加入了Image和Time組件。啟動(dòng)畫面的窗體略,主要的源代碼如下:
§5.4用戶登錄窗體的的實(shí)現(xiàn)
本窗體是為三種不同的用戶(一般用戶,工作人員,管理員)提供選擇以進(jìn)入不同的模塊,滿足不同用戶的需求。源代碼比較簡單,略。
§5.5用戶密碼認(rèn)證窗體的的實(shí)現(xiàn)
本窗體是為了讓工作人員或圖書館管理員按照用戶名和密碼進(jìn)行登錄,并且跟據(jù)用戶名檢查Keyer表中的“權(quán)限”字段,以分辯進(jìn)入圖書館管理人員模塊還是進(jìn)入工作人員模塊。窗體界面、源代碼如下
§5.6借閱者服務(wù)模塊的實(shí)現(xiàn)
借閱者服務(wù)窗體的功能主要是圖書的查詢,個(gè)人借閱情況查看及個(gè)人部分信息的修改。界面圖如下:
5.6.1圖書查詢功能的實(shí)現(xiàn)
在本系統(tǒng)中,任何人都有權(quán)限使用查詢功能,不做任何限制。界面如下,
由于實(shí)現(xiàn)的查詢功能有多種,如按圖書編號、圖書名稱等字段進(jìn)行完全體配查找和部分體配的模糊查找,還有按多個(gè)條件進(jìn)行邏輯與或是邏輯或的多條件查找。其中實(shí)現(xiàn)的方法者差不多,所以只給出多條件查找的代碼,如下:
5.6.2借閱者登錄功能的實(shí)現(xiàn)
這個(gè)功能的實(shí)現(xiàn)與工作人員和管理人員登錄功能實(shí)現(xiàn)的方法大致一樣,并且還要簡單。是從User表中查到到借閱證號與密碼,看與用戶輸入的是否一致。如果一致,那么用戶就可查看自已的借閱情況并維護(hù)自己的部分信息。源代碼與借閱者登錄界面都略。
5.6.3借閱者借閱情況功能的實(shí)現(xiàn)
當(dāng)借閱者正確登錄到系統(tǒng)后,此功能將被激活,使用戶能查看到自身的借閱情況。在此系統(tǒng)中,信息的顯示一般用ListView來實(shí)現(xiàn),只在較少的情況下用到了DBgrid,因?yàn)槲矣X得ListView更好實(shí)現(xiàn),并能使信息數(shù)據(jù)對用戶的完全分離。
在這里跟據(jù)借閱者的不同要求實(shí)現(xiàn)借閱情況的查詢,有檢查所有的借閱情部、某本書的借閱情況、和根據(jù)已借閱天數(shù)的來查詢。其中根椐借閱天數(shù)來查詢更有代表性,有方式一和方式二。以下給出此功能的源代碼
按借閱天數(shù)查詢方式一
按借閱天數(shù)查詢方式二
5.6.4借閱者個(gè)人資料維護(hù)功能的實(shí)現(xiàn)
此功能實(shí)現(xiàn)當(dāng)前借閱者部份資料的修改,但借書證號和身份類別這樣的信息不允許修改,這是圖書館管理員模塊的功能。在此界面中點(diǎn)擊修改按鈕將出現(xiàn)“修改”窗體(Form8),點(diǎn)擊修改密碼按鈕將出現(xiàn)groupbox8,在這里進(jìn)行密碼修改。關(guān)鍵源代碼如下。
這里給出個(gè)人部分信息修改的源代碼:
這里給出密碼修改的源代碼:
5.7工作人員-圖書借閱/歸還模塊的實(shí)現(xiàn)
5.7.1工作人員進(jìn)行圖書借閱功能實(shí)現(xiàn)
在這個(gè)功能中,工作人員輸入借閱者的借閱證號和所要借閱的圖書的圖書編號,然后點(diǎn)擊借閱按鈕就可進(jìn)行圖書借閱??紤]到實(shí)際中可能會(huì)出現(xiàn)只知圖書名而不知圖書編號的情況,在此界面下方加入了一個(gè)轉(zhuǎn)換功能,可以把圖書名稱轉(zhuǎn)換成圖書編號,再進(jìn)行圖書借閱。
在借閱完成后會(huì)生借閱報(bào)表以便借閱者檢查和確認(rèn),借閱報(bào)表的打印效果如下圖,實(shí)現(xiàn)比較簡單,略去實(shí)現(xiàn)過程。
5.7.2工作人員進(jìn)行圖書歸還功能實(shí)現(xiàn)
在此功能中,工作人員根據(jù)借閱者的借書證號和歸還的圖書編號進(jìn)行圖書的歸還工作。并且根據(jù)現(xiàn)實(shí)中可能會(huì)出現(xiàn)的只知圖書名不知圖書編號的歸還情況,所以加入了按書籍名稱進(jìn)行歸還的功能。這個(gè)功能是圖書借閱功能中把圖書名稱轉(zhuǎn)換成圖書編號的一種改進(jìn)方法,這樣就不用如借閱功能中一樣要先轉(zhuǎn)換再借閱了。歸還完成后,同樣會(huì)打印出歸還報(bào)表以便用戶檢查和確認(rèn)。
5.8圖書館管理員模塊的實(shí)現(xiàn)
5.8.1圖書館管理員圖書管理功能的實(shí)現(xiàn)
在這個(gè)功能中可以在(*圖書編號)中輸入圖書編號,點(diǎn)查找按鈕后就會(huì)在各個(gè)相應(yīng)的組件中顯示出信息,或按圖書名稱模糊查找到所要的記錄,在各個(gè)相應(yīng)的組件中顯示第一條記錄的信息,也可在下端的ListView組件中點(diǎn)擊某一條記錄,在各個(gè)相應(yīng)的組件中也會(huì)顯示所選記錄的信息。在入庫功能中只要不是相同的圖書編號并且?guī)В柼崾镜淖侄尾粸榭站涂刹迦胄碌膱D書記錄。刪除則刪除那些Book表中的圖書記錄,如果借出還可依用戶要求連帶刪除owner表中的記錄。因?yàn)閳D書修改與圖書入庫的功能與工作人員記錄修改和工作人員記錄添加的實(shí)現(xiàn)過程一樣,所以下面僅給出刪除功能的源代碼,如下
5.8.2圖書館管理員工作人員和管理員管理功能的實(shí)現(xiàn)
在此功能中可以加入工作人員或是管理員,或是修改他們的密碼、權(quán)限。
在此功能中如果選中ListView中的記錄,則在右邊相應(yīng)的組件中顯示出信息,并且管理員還可對這些記錄進(jìn)行修改或加入新的記錄。并且也可以點(diǎn)刪除按鈕刪除選中的一條或多條記錄。刪除功能與圖書記錄的刪除一般,所以下面只給出添加與修改的實(shí)現(xiàn)過程。
5.8.3圖書館管理員修改圖書類別及統(tǒng)記功能的實(shí)現(xiàn)
在此窗體中能對圖書的類別進(jìn)行刪除,添加和修改,這模塊的功能的實(shí)現(xiàn)過程與圖書記錄的刪除,添加和修改一樣的,但是這個(gè)窗體還能跟據(jù)圖書類別進(jìn)行統(tǒng)計(jì),還可根據(jù)Book表和owner表統(tǒng)計(jì)出圖書總數(shù)目,庫存圖書數(shù)目,借出圖書數(shù)目及借閱過期的圖書數(shù)目。在這里給出統(tǒng)計(jì)圖書總數(shù)目,庫存圖書數(shù)目,借出圖書數(shù)目及借閱過期的圖書數(shù)目的實(shí)現(xiàn)過程中的幾個(gè)函數(shù)和過程
5.8.4圖書館管理員借閱者管理功能的實(shí)現(xiàn)
查詢借閱者可根據(jù)借閱者的借書證號或姓名或身份編號查找到借閱者的信息,也可以實(shí)行模糊查找,這個(gè)功能的實(shí)現(xiàn)與前面圖書查找的實(shí)現(xiàn)過程一般,就不再詳細(xì)說明。
5.8.5圖書館維護(hù)借閱者管理功能的實(shí)現(xiàn)
此功能能對借閱者信息進(jìn)行查看添加、刪除、修改。在這里給出刷新按鈕的實(shí)現(xiàn)過程
5.8.6圖書館身份維護(hù)功能的實(shí)現(xiàn)
近年來,隨著科學(xué)技術(shù)的飛速發(fā)展,個(gè)人數(shù)字圖書館作為傳統(tǒng)圖書館的新形式,在計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的推動(dòng)下應(yīng)運(yùn)而生。那么,什么是個(gè)人數(shù)字圖書館呢?
總體來說就是在自己的計(jì)算機(jī)上,為實(shí)現(xiàn)讀書治學(xué)的目的,使雜亂無章的信息資源變成有組織的信息集合,通過免費(fèi)的或基本免費(fèi)的軟件,將網(wǎng)上的有關(guān)信息資源,通過該管理軟件進(jìn)行存取,在軟件內(nèi)完成編輯管理,根據(jù)個(gè)人需求,供其有效利用。個(gè)人數(shù)字圖書館的意義在于,通過這一軟件系統(tǒng),對于個(gè)人知識(shí)儲(chǔ)備的數(shù)字化整合可以順利完成,用戶能夠自己創(chuàng)建、維護(hù)、使用該軟件系統(tǒng)。
這一新形式的個(gè)人數(shù)字圖書館與傳統(tǒng)圖書館比較,突出的特點(diǎn)是:
(1)數(shù)字化。使紙質(zhì)資料的文獻(xiàn)形態(tài)改變,使其數(shù)字化。曾經(jīng)的紙質(zhì)圖書存放時(shí)間較長后,其一、積少成多,體積增大,內(nèi)容增多,越來越不利于文獻(xiàn)資料的整理和保存,其二、隨著時(shí)間的推移,部分資料由于保管不善肯定會(huì)發(fā)生丟失損毀,舊資料查找時(shí)也是一個(gè)大工程,那么如何處理這些破舊書刊紙質(zhì)資料?去粗存精選擇性保管顯然不是最理想的方法,那么使其數(shù)字化可以妥善保存,不遺失資料的同時(shí)更加能夠便于查找。
(2)數(shù)據(jù)庫化。當(dāng)今,互聯(lián)網(wǎng)上供人免費(fèi)下載的數(shù)字資源日益增多,大家將自己感興趣的文件和資料下載到本地電腦的文件夾中,供日后查閱或使用。但是文件夾不具有數(shù)據(jù)庫結(jié)構(gòu),并不能有效的進(jìn)行檢索文件,當(dāng)我們下載的文件日益增多的時(shí)候,無法有效的管理這些下載的文件,那么,就可以通過個(gè)人數(shù)字圖書館對其進(jìn)行統(tǒng)一管理,在需要時(shí)通過搜索引擎,快速準(zhǔn)確的查找到目標(biāo)文件,無論文檔文件還是圖片文件或是視頻文件,均可自動(dòng)識(shí)別并打開后臺(tái)運(yùn)行,操作簡單,使用方便。
(3)檢索功能增強(qiáng)化。因?yàn)閭€(gè)人數(shù)字圖書館的使用者們并不是專業(yè)的情報(bào)學(xué)工作人員,無法精確的對于所需檢索的內(nèi)容進(jìn)行輸入,所以,要快速準(zhǔn)確的查找到文獻(xiàn)資料,在檢索功能的設(shè)置上要加強(qiáng),即使是模糊的搜索關(guān)鍵詞也一樣能迅速的找到需要的文獻(xiàn)資料。基本的檢索功能中至少具有字段檢索、單項(xiàng)檢索、截詞檢索、全庫掃描檢索等,并且,各種類型的文件要在統(tǒng)一的檢索界面,使用方便查找快捷,檢索歷史隨時(shí)保存便于隨時(shí)調(diào)用。
2 個(gè)人數(shù)字圖書館論文管理系統(tǒng)在高校應(yīng)用的可行性研究與分析
在高校設(shè)立個(gè)人數(shù)字圖書館論文管理系統(tǒng),不僅為學(xué)生讀者帶來很大方便,同時(shí)在系統(tǒng)設(shè)計(jì)初期的可行性研究與分析中得出其具有很多的優(yōu)勢,下面將通過3個(gè)方面詳述分析。
(1)高校圖書館豐富的信息資源,配合校園內(nèi)完善的網(wǎng)絡(luò)環(huán)境。豐富的館藏資源,電子文獻(xiàn)資料較全,是高校圖書館館藏的重要特點(diǎn),面向高校大學(xué)生,購買了種類豐富的各類論文數(shù)據(jù)庫供學(xué)生學(xué)習(xí)查閱,同時(shí)自建論文數(shù)據(jù)資料庫,為學(xué)生查閱下載論文資料提供了很大的方便。另外,高校的現(xiàn)代化設(shè)施建設(shè)完善,如學(xué)生宿舍的高速網(wǎng)絡(luò)、圖書館的電子閱覽室、校園全網(wǎng)無線覆蓋等,這些設(shè)施為個(gè)人數(shù)字圖書館的建設(shè)提供了堅(jiān)實(shí)的基礎(chǔ)和現(xiàn)實(shí)保障。
(2)借鑒國內(nèi)外成功的案例,為我們提供了寶貴經(jīng)驗(yàn)。美國康奈爾大學(xué)圖書館曾成功開發(fā)個(gè)人數(shù)字圖書館平臺(tái)――My liberty。用戶可以自行通過該平臺(tái)搜集電子資源,既可以來自公共網(wǎng)絡(luò)的任何地方,也可以來自校園網(wǎng)絡(luò)的內(nèi)部門戶,在這個(gè)平臺(tái)上管理、編輯、下載,打造屬于自己的個(gè)人圖書館。在國內(nèi),浙江大學(xué)也曾成功開發(fā)“我的圖書館”,系統(tǒng)功能如:新書通告、數(shù)字資源定制、搜索引擎、書簽功能、個(gè)人信息保護(hù)等。雖然開發(fā)項(xiàng)目不是完全相同,但這些成功的案例都具有一定的可借鑒性。
(3)數(shù)量穩(wěn)定的受眾用戶群。高校龐大的用戶群體都具有高學(xué)識(shí)、高素質(zhì),比較熟練掌握計(jì)算機(jī)應(yīng)用、網(wǎng)絡(luò)通訊知識(shí)、文獻(xiàn)檢索知識(shí)等,他們無論是論文創(chuàng)作還是課題研發(fā),都需要強(qiáng)大的學(xué)術(shù)資料支持,這一軟件系統(tǒng)可以為他們提供高水平、多層次的個(gè)性化信息服務(wù),相信廣大師生都能夠廣泛的參與其中,構(gòu)成穩(wěn)定的軟件系統(tǒng)的受眾群體。
3 個(gè)人數(shù)字圖書館論文管理系統(tǒng)的開發(fā)構(gòu)想
根據(jù)個(gè)人數(shù)字圖書館的基本研究發(fā)現(xiàn),個(gè)人數(shù)字圖書館的數(shù)字化、數(shù)據(jù)庫化特點(diǎn),以及高等學(xué)校的軟硬件設(shè)施和環(huán)境,以及推廣使用面向的目標(biāo)群體,非常便于個(gè)人數(shù)字圖書館論文管理系統(tǒng)的開發(fā)與利用。
一、圖書館管理系統(tǒng)應(yīng)用的必要性
過去,大多數(shù)學(xué)校圖書館都是封閉式管理,通過卡片登記借閱信息,只能實(shí)現(xiàn)有限的流通,有的甚至不能正常對學(xué)生開放,使得圖書館不能發(fā)揮應(yīng)有的作用;即使是實(shí)現(xiàn)了正常流通的,也不能提供領(lǐng)導(dǎo)管理上需要的各種信息如本館各種資料分布及借閱(流通)情況。
目前,我國學(xué)校圖書館辦館的要求及領(lǐng)先標(biāo)志就是藏書全部開放,師生共享開架借閱。這種借閱方式是當(dāng)前適合我國國情的發(fā)揮圖書館應(yīng)有作用的最佳方式,也是素質(zhì)教育的最好體現(xiàn)。它充分發(fā)揮了圖書館的功效,最大限度地為讀者服務(wù),這也是圖書館自動(dòng)化管理的最終目標(biāo)。實(shí)現(xiàn)這一目標(biāo),必須有現(xiàn)代化的管理手段和管理體制。為此,各地教育主管部門都逐步提出學(xué)校要采用圖書館管理系統(tǒng),從而實(shí)現(xiàn)人工管理達(dá)不到的一些功能并發(fā)揮圖書館的最大效益。而隨著越來越多的學(xué)校采用了現(xiàn)代化的管理軟件進(jìn)行管理,進(jìn)一步提升了學(xué)校管理的現(xiàn)代化水平,從而在競爭中處于有利位置,也對其他兄弟學(xué)校起到了示范和促進(jìn)作用。自身發(fā)展的需要和上級部門的要求以及競爭的需要決定了學(xué)校采用圖書館管理系統(tǒng)的必要性。
以計(jì)算機(jī)技術(shù)、存儲(chǔ)技術(shù)、通訊技術(shù)為主要內(nèi)容的現(xiàn)代信息技術(shù)的發(fā)展,使人類進(jìn)入了一個(gè)嶄新的信息時(shí)代。作為信息資源存儲(chǔ)、傳遞的專業(yè)機(jī)構(gòu),圖書館如何在新的技術(shù)條件下,適應(yīng)形勢發(fā)展,發(fā)揮自身優(yōu)勢,開拓信息渠道,更好地為用戶服務(wù),是一個(gè)新課題。也必將對現(xiàn)有的圖書館產(chǎn)生全面而深遠(yuǎn)的影響。因此,正確認(rèn)識(shí)信息時(shí)代對圖書管理工作的要求,使圖書館工作變得更加便利和高效,使資源共享更容易實(shí)現(xiàn),為讀者提供更加優(yōu)質(zhì)的服務(wù)十分重要。
在信息時(shí)代,各種冠以“數(shù)字圖書館”之類說法的圖書館現(xiàn)代化論斷到處可見。那么什么是圖書館的現(xiàn)代化呢?判斷一個(gè)圖書館的現(xiàn)代化程度,應(yīng)該從圖書館最本質(zhì)的特性判斷。圖書館具有信息資源的收集保存、加工整理并使之有序化及傳遞信息資源的功能。這一點(diǎn)是書店和網(wǎng)站都無法做到的,也是圖書館最本質(zhì)的特性,是圖書館賴以生存的基礎(chǔ)。判斷圖書館的現(xiàn)代化程度,也應(yīng)該從這個(gè)最本質(zhì)的特性來判斷。
二、成熟的圖書管理系統(tǒng)決定因素
任何一套圖書館管理系統(tǒng)至少必須具備這樣一些功能:對圖書進(jìn)行編目也就是采集信息并上架、圖書檢索(查找)、圖書流通(借還)。然而僅僅有這些功能是不能稱為真正的現(xiàn)代化的管理型圖書館管理系統(tǒng)的。筆者認(rèn)為,一套系統(tǒng)是否成熟還決定于以下幾個(gè)方面:
1、符合相關(guān)的標(biāo)準(zhǔn)
例如教育部最新頒布的《教育管理信息化標(biāo)準(zhǔn)》規(guī)范、我國圖書館界通用的CNMARC格式標(biāo)準(zhǔn)、目前通用的《中圖法四》等。
《教育管理信息化標(biāo)準(zhǔn)》的頒布將為教育部門對教育數(shù)據(jù)進(jìn)行總體的規(guī)劃和組織,建立起統(tǒng)一的數(shù)據(jù)平臺(tái)提供有力的技術(shù)保證;它將帶動(dòng)教育管理信息存儲(chǔ)、訪問、更新、傳遞方式的變革,進(jìn)一步減輕學(xué)校人力資源和財(cái)政管理的負(fù)擔(dān)。
CNMARC是在UNI-MARC(國際通用MARC)的基礎(chǔ)上發(fā)展起來的,它有479個(gè)字段,這些字段是針對能著錄多種文獻(xiàn)類型及多文種文獻(xiàn)而制定的,數(shù)據(jù)格式結(jié)構(gòu)復(fù)雜繁多,使用時(shí),用其所有字段,只需結(jié)合著錄的文獻(xiàn)類型與文種等實(shí)際情況選擇適用的機(jī)讀目錄格式字段形成數(shù)據(jù)。
中圖法全稱是《中國圖書館分類法》,是我國建國后編制出版的一部具有代表性的大型綜合性分類法。其編制始于1971年,先后出版了四版。自1999年第四版起更名為《中國圖書館分類法》,簡稱不變,英文譯名為ChineseLibraryClassification,英文縮寫為CLC。由于國家圖書館1975年以后的文獻(xiàn)(善本除外)都采用中圖分類法,館藏目錄檢索系統(tǒng)也提供“中圖分類號”檢索字段,了解中圖分類法有助于讀者準(zhǔn)確地查詢到需要的文獻(xiàn)資源
2、開發(fā)工具及所采用的數(shù)據(jù)存放格式要求先進(jìn)
有些人認(rèn)為只要看看功能和界面是否令人滿意就行了,其他的與我們沒有多少關(guān)系,實(shí)際上開發(fā)工具及方式和數(shù)據(jù)格式的存放方式?jīng)Q定了系統(tǒng)的穩(wěn)定性和性能以及未來的可升級維護(hù)性。目前國內(nèi)絕大多數(shù)系統(tǒng)在Windows下運(yùn)行,最先進(jìn)流行的開發(fā)工具是美國Borland公司的Delphi及Microsoft公司的VC++,后臺(tái)數(shù)據(jù)庫一般采用微軟的SQLServer或Sybase大型數(shù)據(jù)庫產(chǎn)品。
3、功能是否強(qiáng)大
目前,一般主流的系統(tǒng)包括系統(tǒng)管理、讀者管理、編目、流通、統(tǒng)計(jì)、查詢等功能。比較先進(jìn)的能夠在一個(gè)界面下實(shí)現(xiàn)圖書、音像、期刊的管理,設(shè)置假期、設(shè)置暫離鎖(提高安全性)、暫停某些讀者的借閱權(quán)、導(dǎo)入導(dǎo)出讀者、交換MARC數(shù)據(jù)、升級輔助編目庫等。此外,由于學(xué)校校園網(wǎng)絡(luò)的逐步建立,一個(gè)完善的系統(tǒng)還應(yīng)提供無縫接入校園網(wǎng)的WEB功能,通過IE瀏覽器讓讀者使用借閱資料查詢、更換密碼、預(yù)約、資料檢索等功能。有些系統(tǒng)還能提供讀者自助服務(wù),可以開放一些客戶機(jī)讓讀者自行管理密碼、查詢自己的借閱史、預(yù)約資料、檢索資料等。
4、要有足夠的安全性
安全性一般涉及到操作權(quán)限控制和數(shù)據(jù)自動(dòng)備份兩方面。主流系統(tǒng)都實(shí)現(xiàn)了由管理員分配各操作員可使用的功能并設(shè)置其密碼,各操作員均需先登錄系統(tǒng)然后再操作各種允許使用的功能。一個(gè)完善的系統(tǒng)還應(yīng)對各操作員的登錄、退出及重要操作記錄在操作日志中。同時(shí)還應(yīng)提供完善的自動(dòng)備份服務(wù),以實(shí)現(xiàn)數(shù)據(jù)的全自動(dòng)按計(jì)劃備份,從而最大限度地保障您的數(shù)據(jù)安全。
5、要有足夠大的輔助編目庫
在對圖書進(jìn)行編目也就是信息采集時(shí),如果我們通過掃描圖書的ISBN號條碼就能得到大多數(shù)書的書名、作者、出版社等各種標(biāo)準(zhǔn)信息,則我們的編目準(zhǔn)確性和效率將會(huì)得到極大的提高。這就要求有一個(gè)比較完善的準(zhǔn)確的輔助編目庫。這也是一個(gè)容易被學(xué)校忽視而軟件開發(fā)商有意回避的問題。
6、要具有完善的規(guī)則
除了能夠設(shè)置讀者的借閱規(guī)則外,還應(yīng)自動(dòng)實(shí)現(xiàn)一些圖書館界通用的管理規(guī)則,例如有在借資料的讀者是不能被刪除的,有以下情況的讀者是不能借閱的:某類書的借閱數(shù)已達(dá)到最大值、有超期資料、有未繳罰款、被暫停借閱等。
7、簡單易用
一個(gè)好的系統(tǒng)應(yīng)具有清楚的操作界面,最簡化的操作過程。日常工作中操作員通過手持式條碼閱讀器應(yīng)該可以完成絕大部分工作。需要注意的是有些系統(tǒng)將精力花在華麗的界面上,而忽視了用戶真正需要的是實(shí)用的完善的功能。
8、有先進(jìn)的體系結(jié)構(gòu)
當(dāng)前主流系統(tǒng)采用客戶機(jī)服務(wù)器(Client/Server)+瀏覽器/服務(wù)器(Browser/Server)模式,所有信息均存放在數(shù)據(jù)庫服務(wù)器上,各客戶機(jī)通過網(wǎng)絡(luò)與數(shù)據(jù)庫服務(wù)器通訊,WEB服務(wù)通過ADO模型訪問數(shù)據(jù)庫服務(wù)器,數(shù)據(jù)與應(yīng)用安全地隔離,可確保數(shù)據(jù)存放的安全性。當(dāng)然在具體選擇中還需考慮是否得到主管部門例如省電教館等推薦及性價(jià)比等。
隨著數(shù)字化技術(shù)的飛速發(fā)展,人類正邁向一個(gè)以數(shù)字化技術(shù)革命為中心的新時(shí)代。這一新時(shí)代最明顯的特征便是全球范圍內(nèi)的網(wǎng)絡(luò)革命。這場革命催生出的數(shù)字化信息網(wǎng)絡(luò),大大改善了我們所處的信息環(huán)境,信息的類型和形式變得更加復(fù)雜,人類信息傳播的途徑及獲取信息的方法,都發(fā)生了前所未有的變化,它不僅改變了圖書館信息服務(wù)的方式,同時(shí)也對圖書館的情報(bào)用戶提出了嚴(yán)峻的挑戰(zhàn)。
三、圖書管理系統(tǒng)現(xiàn)代化程度的標(biāo)準(zhǔn)
1、信息資源收集的現(xiàn)代化
現(xiàn)代社會(huì)信息資源豐富,信息污染也很嚴(yán)重,給圖書館信息資源的收集帶來了極大麻煩。傳統(tǒng)圖書館時(shí)期,由于各種信息資源極大部分由正規(guī)渠道獲得,經(jīng)過圖書期刊編輯人員的認(rèn)真校對,信息質(zhì)量相對可靠。而現(xiàn)代化信息的載體以及出版發(fā)行方式發(fā)生了很大變化,各種光盤、印刷品、網(wǎng)上信息、聲像讀物等良莠不齊。這就要求圖書館采編人員掌握多方面的信息源,運(yùn)用現(xiàn)代化的各種手段,對各種信息做出盡可能正確的判斷
2、信息加工整理的現(xiàn)代化
在傳統(tǒng)圖書館時(shí)期,文獻(xiàn)資源的分類加工整理比較簡單,所揭示的文獻(xiàn)信息深度有限,對文獻(xiàn)的內(nèi)在性質(zhì)、內(nèi)容的揭示基本沒有。圖書館應(yīng)用計(jì)算機(jī)進(jìn)行分類編目,給文獻(xiàn)內(nèi)容的揭示帶來了一定的改進(jìn),但無實(shí)際性的改革。計(jì)算機(jī)所具有的快速處理數(shù)據(jù)的能力遠(yuǎn)遠(yuǎn)沒有發(fā)揮出來。信息加工的目的是為了使信息資源有序化,以便于更好地查找和使用文獻(xiàn)信息,如果在文獻(xiàn)信息加工整理上不能實(shí)現(xiàn)統(tǒng)一標(biāo)準(zhǔn)的規(guī)范,圖書館現(xiàn)代化的物質(zhì)基礎(chǔ)就不存在
3、圖書館服務(wù)的現(xiàn)代化
服務(wù)是圖書館的生命。圖書館所做的一切工作,只有一個(gè)目的,就是做好圖書館的讀者服務(wù)工作。服務(wù)的現(xiàn)代化包括兩個(gè)方面,一是圖書館工作人員服務(wù)的現(xiàn)代化,二是服務(wù)手段的現(xiàn)代化。
觀念的現(xiàn)代化要求我們改變原來重管理輕服務(wù)的思想,把以讀者為中心真正落到實(shí)處,發(fā)揮圖書館工作人員的主觀能動(dòng)性,積極收集各種文獻(xiàn)信息資源。在現(xiàn)代化圖書館時(shí)期,判斷一個(gè)圖書館的大小是以圖書館獲取信息的能力,提供服務(wù)的能力來決定的由于現(xiàn)代化的圖書館是一個(gè)有機(jī)的網(wǎng)絡(luò),各種信息資源許多都是公開的、共享的.只要有一定的專業(yè)技能和一切以讀者為中心的服務(wù)觀念,圖書館的服務(wù)工作可以比傳統(tǒng)時(shí)期有一個(gè)質(zhì)的飛躍。
判斷服務(wù)手段的現(xiàn)代化也應(yīng)該用“一切以讀者為中心”這一圖書館的服務(wù)宗旨來判斷。如果圖書館提供的文獻(xiàn)資源必須使用電腦才能得到,這對讀者來說就是服務(wù)不好,因?yàn)樗囊鬀]有得到滿足?,F(xiàn)代化服務(wù)手段真正的含義應(yīng)該是圖書館根據(jù)讀者不同需要,提供適合各種不同類型的服務(wù)方式。
總之,我們通過對圖書管理系統(tǒng)的分析,對管理系統(tǒng)在其他情況下的應(yīng)用,有了一個(gè)基礎(chǔ)性的了解與掌握。同時(shí),對熱門圖書的科學(xué)管理,進(jìn)一步提高其利用率,不斷滿足讀者日益旺盛的閱讀需要,有著十分積極的現(xiàn)實(shí)意義。
【參考文獻(xiàn)】
[1]顧俐.圖書館圖書管理系統(tǒng)的設(shè)計(jì).《中國科技信息》.2007.11.
[2]孫麗莉.圖書管理系統(tǒng)論.《中國科技信息》.2007.1.
[3]馬慧生、王樹芬.對我校圖書館數(shù)字化的建議.《桂林航天工業(yè)高等??茖W(xué)校學(xué)報(bào)》.2005.10.3.
[4]張霞.數(shù)字圖書管理系統(tǒng)及其相關(guān)技術(shù)探究.《安陽大學(xué)學(xué)報(bào):綜合版》.2003.3.
1知識(shí)管理與信息管理
1.1信息
信息管理的概念是20世紀(jì)70年代在國外首先提出來的。美國東北大學(xué)的E.M.Trauth認(rèn)為:信息管理分為3個(gè)不同的技術(shù)領(lǐng)域,即數(shù)據(jù)庫管理、記錄管理、數(shù)據(jù)處理管理。通常將這3個(gè)領(lǐng)域稱為信息管理。信息管理的概念又分為“廣義”和“狹義”兩個(gè)方面。從狹義上講,信息管理就是對信息的管理,即對信息進(jìn)行組織、控制、加工、規(guī)劃等,并將其引向預(yù)定的目標(biāo);從廣義上講,信息管理的對象不只是信息,還包括與信息有關(guān)的人、機(jī)構(gòu)、設(shè)備、環(huán)境等。對這些要素進(jìn)行合理的組織和控制,以實(shí)現(xiàn)信息及有關(guān)資源的合理配置,從而有效地滿足社會(huì)的信息需求。
信息管理是利用信息資源的基礎(chǔ),是信息經(jīng)濟(jì)的起點(diǎn)。圖書館通過對信息的搜集、檢索、組織和傳播,將各種各樣的信息從分散到集中,從無序到有序,從存儲(chǔ)到傳播和利用,從宏觀上實(shí)現(xiàn)館際之間的信息資源協(xié)調(diào)與共享管理,方便人們能夠在特定時(shí)間獲取所需要的特定信息。
1.2知識(shí)管理
知識(shí)管理強(qiáng)調(diào)以人為中心,以信息和信息技術(shù)為基礎(chǔ),以知識(shí)創(chuàng)新為目的,將知識(shí)看作是一種可開發(fā)資源的管理思想,從結(jié)構(gòu)上看,它可分人力資源的管理和信息管理兩個(gè)方面。
(1)人力資源管理是知識(shí)管理的核心內(nèi)容。知識(shí)管理思想第一次將信息和具有創(chuàng)新能力的人,共同作為關(guān)注的對象,并且特別關(guān)注具有創(chuàng)新能力的人。這與僅僅關(guān)注于物、技術(shù)、事物的傳統(tǒng)管理方式完全不同。知識(shí)管理的本質(zhì)特征就是把人作為第一要素加以重視。著名的知識(shí)學(xué)教授IrujjroNonaka曾說:“只有人類才能在知識(shí)創(chuàng)新的過程中扮演核心角色,無論計(jì)算機(jī)的信息處理能力有多大,它們終究不過是人類的一種工具”??梢?,人既是知識(shí)創(chuàng)新的主體,又是知識(shí)的載體,因此說對人的管理是知識(shí)管理的核心內(nèi)容。
具體而言,人力資源管理是一種以“人”為中心,將人看作是最重要的資源的現(xiàn)代管理思想,其管理模式就是“以事就人”,以人為主,旨在使人適其所,人盡其才,使組織的成長配合個(gè)人能力的發(fā)展,使組織的目標(biāo)與個(gè)人的目標(biāo)有機(jī)地統(tǒng)一,它反映的是“人才決定企業(yè)前途”的經(jīng)營理念。
(2)信息和信息技術(shù)是知識(shí)管理的基礎(chǔ)。第一,信息是知識(shí)創(chuàng)新的前提,知識(shí)只有通過信息載體的流動(dòng)才能產(chǎn)生價(jià)值。知識(shí)是人腦的產(chǎn)物,是在信息基礎(chǔ)上通過人腦的
思維和重新整合才得以形成,正如國外學(xué)者Churchman所定義的;如果把知識(shí)看成是信息的集合,則無異于剝奪了其最核心的部分,知識(shí)存在于人而不是信息集合中,知識(shí)是人對一系列相關(guān)信息所產(chǎn)生的反應(yīng)。第二,信息技術(shù)是知識(shí)管理的工具。隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展,信息的傳播速度、傳播廣度都有極大的提高。同時(shí),現(xiàn)代技術(shù)的應(yīng)用也為信息的廣泛傳播和有序化管理提供了最大的便利。這使知識(shí)管理中所必須具備的信息交流和共享成為可能。
(3)知識(shí)管理的最終目的是要以現(xiàn)有知識(shí)為基礎(chǔ),結(jié)合實(shí)際進(jìn)行創(chuàng)新,尋求信息處理能力與人的知識(shí)創(chuàng)新能力的最佳結(jié)合,在整個(gè)管理過程中最大限度地實(shí)現(xiàn)知識(shí)共享,以期將最恰當(dāng)?shù)闹R(shí)在最恰當(dāng)?shù)臅r(shí)間傳遞最恰當(dāng)?shù)娜耍顾麄兡茏龀鲎钋‘?dāng)?shù)臎Q策。
2圖書館從信息管理轉(zhuǎn)向知識(shí)管理的必要性
(1)在信息時(shí)代,圖書館的信息服務(wù)是以提供一次、二次文獻(xiàn)為主,是基于用戶簡單提問和基于文獻(xiàn)物理獲取的服務(wù),為用戶克服因信息分散而造成的檢索困難提供索引指南,提供文獻(xiàn)的線索或單個(gè)的文獻(xiàn)實(shí)物。信息管理主要圍繞信息的組織、檢索和傳遞展開,管理的內(nèi)容僅局限于對信息的管理,而忽視對“人”的管理。信息技術(shù)成為整個(gè)管理的核心,它在信息的搜集、檢索、組織與傳播和管理中起著非常重要的作用。
在知識(shí)經(jīng)濟(jì)時(shí)代,不同用戶群體的知識(shí)需求各不相同,圖書館的知識(shí)信息資源體系的內(nèi)容也各具特色。用戶特定的知識(shí)需求還決定了圖書館的類型和性質(zhì),即圖書館為誰服務(wù)和如何服務(wù)的問題。在圖書館的知識(shí)管理活動(dòng)中,始終是以用戶群體的知識(shí)需求為對象的,類型的劃分也是以用戶和其目標(biāo)或功能等為重要基礎(chǔ)的。不同類型的圖書館
體現(xiàn)不同用戶群體的知識(shí)需求,圖書館本身具有激發(fā)用戶知識(shí)需求的功能,圖書館的管理活動(dòng)對用戶知識(shí)需求具有促進(jìn)或制約作用。
(2)圖書館的發(fā)展受制于社會(huì)政治經(jīng)濟(jì)的進(jìn)步,它通過開展相應(yīng)的管理活動(dòng)服務(wù)于社會(huì)的用戶群體,滿足用戶各方面的知識(shí)需求,而作為圖書館系統(tǒng)重要組成部分的用戶及其知識(shí)需求對圖書館管理活動(dòng)的開展也有著重要的影響。人們在生產(chǎn)、生活、學(xué)習(xí)中對與物質(zhì)能源同等重要的知識(shí)需求越來越強(qiáng)烈,需求量愈來愈大。這種知識(shí)需求對此階段的圖書館管理影響巨大,表現(xiàn)在:系統(tǒng)論、控制論、信息系統(tǒng)理論、信息資源管理等理論應(yīng)用于圖書館管理中;以計(jì)算機(jī)技術(shù)、通訊技術(shù)、網(wǎng)絡(luò)技術(shù)為核心的現(xiàn)代信息技術(shù)綜合運(yùn)用于圖書館館藏信息的收集、處理、檢索和傳遞;突出館藏信息資源的綜合開發(fā)和應(yīng)用。所有這一切對圖書館管理工作的開展產(chǎn)生極大影響,充分發(fā)揮了圖書館的教育和情報(bào)等職能,突出了圖書館在知識(shí)經(jīng)濟(jì)社會(huì)中的作用。正是因?yàn)閳D書館在信息管理階段的發(fā)展,為圖書館進(jìn)入知識(shí)管理階段創(chuàng)造了重要條件。顯然,人們的需求變化對搜集、處理、傳播和提供信息服務(wù)為己任的圖書館向知識(shí)管理過渡起著決定性的促進(jìn)作用。圖書館必須實(shí)施先進(jìn)的知識(shí)管理方式來滿足用戶群體的這種需求。
(3)在知識(shí)經(jīng)濟(jì)社會(huì),用戶對信息的需求呈現(xiàn)出廣泛化、綜合性、深度化、時(shí)效化和專門化的特點(diǎn),部分用戶的需求趨向?qū)I?,對信息的需求更具個(gè)性化。而知識(shí)管理更側(cè)重于對新知識(shí)的生產(chǎn)、創(chuàng)造,通過對知識(shí)的管理,拋棄了信息管理中被動(dòng)處理信息資源的工作模式,它與用戶的知識(shí)交流、共享、創(chuàng)新和應(yīng)用的全過程相融合,從而成為用戶知識(shí)創(chuàng)新的核心推動(dòng)力,給科研、生產(chǎn)工作帶來新的活力。知識(shí)管理過程中的知識(shí)服務(wù)不只局限于利用片面的信息來滿足用戶的需求,而是從用戶的目標(biāo)和環(huán)境出發(fā),以面向解決方案為重點(diǎn),對用戶的需求進(jìn)行系統(tǒng)分析,根據(jù)個(gè)人、群體或機(jī)構(gòu)千差萬別的特殊需求提供從知識(shí)捕獲、析取、重組、創(chuàng)新、集成到應(yīng)用的全程一體化服務(wù)。將分散在本領(lǐng)域及相關(guān)領(lǐng)域的專業(yè)知識(shí)加以集成,從中提煉出對用戶的研究、開發(fā)與創(chuàng)新有用的知識(shí)精品”供其使用,提高知識(shí)的獲取和實(shí)施效率,使得知識(shí)管理與服務(wù)朝著智能化的方向發(fā)展,將知識(shí)管理從理論變成了實(shí)踐。
3圖書館以用戶為中心實(shí)施知識(shí)管理的內(nèi)容及策略
目前政府的知識(shí)管理問題已提到議事日程。1997年在多倫多召開的主題為“知識(shí)與發(fā)展”的國際會(huì)議上,成立了包括60個(gè)國際組織在內(nèi)的“世界知識(shí)合作聯(lián)盟”,國際圖書館協(xié)會(huì)聯(lián)合會(huì)(IFLA)也申請加入。這說明,圖書館的知識(shí)管理活動(dòng)已融入整個(gè)社會(huì)知識(shí)管理系統(tǒng),并得到了社會(huì)認(rèn)可。在知識(shí)經(jīng)濟(jì)時(shí)代,圖書館又將承擔(dān)起知識(shí)創(chuàng)新,知識(shí)傳播和知識(shí)應(yīng)用的重任,致力于提高整個(gè)國家和民族的文化素質(zhì),科技素質(zhì),以推動(dòng)社會(huì)不斷發(fā)展進(jìn)步。
3.1圖書館應(yīng)該形成一種上下級一致,平等交流、知識(shí)共享的氣氛,才能便于圖書館事業(yè)的蓬勃發(fā)展
3.1.1設(shè)立知識(shí)主管CKO和信息主管CIO
知識(shí)主管由館長擔(dān)任,負(fù)責(zé)圖書館知識(shí)管理目標(biāo),計(jì)劃和措施的制定,監(jiān)督知識(shí)管理的實(shí)施。信息主管可由精通業(yè)務(wù)的信息專家擔(dān)任,負(fù)責(zé)信息技術(shù)的開發(fā)和應(yīng)用。
3.1.2調(diào)整圖書館結(jié)構(gòu)
從傳統(tǒng)的縱向等級結(jié)構(gòu)轉(zhuǎn)向扁平型網(wǎng)狀結(jié)構(gòu)。根據(jù)工作性質(zhì)設(shè)立各種類型的業(yè)務(wù)主管,取消行政級別。館內(nèi)各部門、各成員對知識(shí)資源的占有和交流是平等的。
3.1.3建立一個(gè)有利于激發(fā)館員創(chuàng)造力和知識(shí)發(fā)揮的獎(jiǎng)勵(lì)競爭機(jī)制。
3.2信息資源管理,建立知識(shí)倉庫,創(chuàng)建知識(shí)共享體系
在21世紀(jì),圖書館將充分利用現(xiàn)代化信息、技術(shù),整合館內(nèi)各種信息資源,有效發(fā)揮知識(shí)導(dǎo)航的功能,成為館內(nèi)服務(wù)與網(wǎng)上服務(wù)相結(jié)合的高度現(xiàn)代化的知識(shí)網(wǎng)絡(luò),圖書館將成為社會(huì)的知識(shí)中心。
3.2.1資源數(shù)字化
在資源建設(shè)方面,圖書館將更加重視知識(shí)管理在資源配置中的應(yīng)用。圖書館發(fā)展的重心移向網(wǎng)絡(luò),開發(fā)網(wǎng)上信息的描述、管理和服務(wù)技術(shù)。利用現(xiàn)代網(wǎng)絡(luò)技術(shù)將更多的特色資源和常用資源數(shù)字化,通過數(shù)據(jù)的應(yīng)用和普及,對網(wǎng)絡(luò)信息資源進(jìn)行組織研究,使之更加有序化,最終形成知識(shí)倉庫,供用戶決策使用。
“館藏資源數(shù)字化”和“社會(huì)資源館藏化”的有機(jī)揉合并優(yōu)化,構(gòu)成了知識(shí)經(jīng)濟(jì)環(huán)境下圖書館知識(shí)管理的兩個(gè)重要內(nèi)容?!梆^藏資源數(shù)字化”就是將本館已入藏的非電子化文獻(xiàn)數(shù)字化,包括書目數(shù)據(jù)庫建設(shè),特色數(shù)據(jù)庫建設(shè),信息系統(tǒng)建設(shè)和各種載體文獻(xiàn)全文數(shù)字化。因此,圖書館資源既有一次文獻(xiàn),又有二、三次文獻(xiàn)?!吧鐣?huì)資源館藏化”是指對網(wǎng)絡(luò)信息資源進(jìn)行組織,使之有序化,最終形成知識(shí)庫,根據(jù)用戶的實(shí)際需求,為用戶提供最直接,最高效率的知識(shí)信息服務(wù)。在網(wǎng)絡(luò)環(huán)境中,可存取的信息資源是未來圖書館信息服務(wù)的資源基礎(chǔ)。
3.2.2館藏虛擬化
圖書館資源的概念突破了時(shí)空的限制——不拘泥于自身的館藏,可將其他圖書館的資源作為自身可以取用的資源既虛擬館藏。在全球范圍內(nèi)利用圖書館的信息搜索技術(shù)的優(yōu)勢,以海量信息中獲取讀者所需的有效信息,向讀者提供時(shí)效性報(bào)務(wù),極大地拓展了圖書館為讀者服務(wù)的潛力。