張慧霞 唐媛莉 沈瑞卿
摘要:由于數(shù)據(jù)庫(kù)應(yīng)用的不斷擴(kuò)大,數(shù)據(jù)庫(kù)管理變成了一個(gè)日益復(fù)雜的工作。該文按著需求分析、概念設(shè)計(jì)、物理設(shè)計(jì)的標(biāo)準(zhǔn)化思路,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于數(shù)據(jù)庫(kù)的器材管理信息系統(tǒng)。針對(duì)應(yīng)用中存在的問(wèn)題,對(duì)系統(tǒng)的體系結(jié)構(gòu)、功能結(jié)構(gòu)、數(shù)據(jù)庫(kù)設(shè)計(jì)、控件使用及關(guān)鍵代碼進(jìn)行了詳細(xì)的闡述。該系統(tǒng)可以作為開(kāi)發(fā)其他信息管理系統(tǒng)的參考模型。
關(guān)鍵詞:信息系統(tǒng);器材管理;標(biāo)準(zhǔn)化設(shè)計(jì)
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)16-3789-03
目前在器材管理的應(yīng)用中,由于倉(cāng)庫(kù)與管理部門往往各處一地,管理部門所掌握的信息與實(shí)際庫(kù)存信息會(huì)存在滯后、冗余、乃至差錯(cuò),很難達(dá)成數(shù)據(jù)的實(shí)時(shí)同步。雖然各個(gè)倉(cāng)庫(kù)及管理部門都已配備了信息管理系統(tǒng),但大多是單機(jī)版,不能實(shí)現(xiàn)資源與信息共享,更不能支持遠(yuǎn)程實(shí)時(shí)訪問(wèn),已無(wú)法適應(yīng)信息化建設(shè)快速發(fā)展的需要。隨著網(wǎng)絡(luò)硬件建設(shè)環(huán)境的進(jìn)一步改善,基于成熟的數(shù)據(jù)庫(kù)產(chǎn)品(如sqlsever200、oracle、mysql、sybase等),采用C/S或B/S架構(gòu)設(shè)計(jì)器材管理系統(tǒng),實(shí)現(xiàn)器材業(yè)務(wù)管理的網(wǎng)絡(luò)化、實(shí)時(shí)性已經(jīng)勢(shì)在必行。
1器材管理系統(tǒng)的設(shè)計(jì)目標(biāo)
利用該系統(tǒng),倉(cāng)庫(kù)根據(jù)管理部門的出入庫(kù)指令,進(jìn)行出入庫(kù)管理、時(shí)實(shí)更新數(shù)據(jù)庫(kù)并將處置結(jié)果反饋給管理部門。管理部門可以及時(shí)查閱庫(kù)存量,發(fā)出出入庫(kù)指令并查詢指令執(zhí)行情況。倉(cāng)庫(kù)與管理部門的數(shù)據(jù)信息必須嚴(yán)格同步。倉(cāng)庫(kù)與管理部門都應(yīng)設(shè)置訪問(wèn)權(quán)限,對(duì)數(shù)據(jù)庫(kù)的操作應(yīng)遵照預(yù)定的流程,社絕非受權(quán)用戶對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的訪問(wèn)。
2器材管理系統(tǒng)的體系結(jié)構(gòu)
為了近一步規(guī)避網(wǎng)絡(luò)連接中的風(fēng)險(xiǎn),數(shù)據(jù)庫(kù)一般設(shè)專門的服務(wù)器,管理方與倉(cāng)庫(kù)方只作為客戶端對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)。管理方發(fā)出指令后,倉(cāng)庫(kù)方應(yīng)及時(shí)進(jìn)行響應(yīng)。倉(cāng)庫(kù)方會(huì)采用輪詢數(shù)據(jù)庫(kù)的方式,當(dāng)發(fā)現(xiàn)有末執(zhí)行料單則立即向倉(cāng)庫(kù)管理員報(bào)告。
通常需要管理的倉(cāng)庫(kù)不止一個(gè),一個(gè)倉(cāng)庫(kù)應(yīng)建一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)。管理端根據(jù)不同的需要與相應(yīng)的數(shù)據(jù)庫(kù)進(jìn)行連接,對(duì)倉(cāng)庫(kù)實(shí)施管理。其結(jié)構(gòu)如圖1所示。
3器材管理系統(tǒng)的主要功能
器材管理系統(tǒng)功能設(shè)置應(yīng)緊密圍繞數(shù)據(jù),并確保數(shù)據(jù)的安全及操作流程的合理。主要分五個(gè)功能模塊:
1)用戶管理不同的用戶擁有不同的權(quán)限,系統(tǒng)根據(jù)用戶輸入的賬號(hào)進(jìn)入相應(yīng)的數(shù)據(jù)庫(kù)系統(tǒng)。為防應(yīng)急情況,超級(jí)用戶擁有最高權(quán)限,可以不按預(yù)置流程直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。
2)料單管理實(shí)現(xiàn)收發(fā)料單管理。
3)器材管理常規(guī)器材具有名稱、序號(hào)、代(型)號(hào)規(guī)格、報(bào)價(jià)、生產(chǎn)廠商、計(jì)量單位等基本信息,器材入庫(kù)還要有編碼信息。器材管理應(yīng)提供對(duì)這些基本信息的增、刪、改及查詢功能。
4)生產(chǎn)廠商管理記錄生產(chǎn)廠商基本信息并提供增、刪、改及查詢功能。
5)收料單位管理記錄收料單位基本信息并提供增、刪、改及查詢功能。系統(tǒng)功能結(jié)構(gòu)如圖2所示。
4主要技術(shù)及實(shí)現(xiàn)方法
系統(tǒng)的實(shí)現(xiàn)在Windows2000server環(huán)境下完成。Windows2000server系統(tǒng)平臺(tái)一般可以支持面積在1000~5000m2的大型倉(cāng)庫(kù)的數(shù)據(jù)量,每秒數(shù)據(jù)庫(kù)并發(fā)數(shù)據(jù)訪問(wèn)記錄數(shù)也可支持到500~2000,穩(wěn)定性及維護(hù)水平較好。數(shù)據(jù)庫(kù)采用了Sqlsever2000,若倉(cāng)庫(kù)數(shù)據(jù)量超過(guò)200000則可考慮采用Oracle。數(shù)據(jù)庫(kù)服務(wù)器應(yīng)連接到交換機(jī)的千兆端口上,以加快訪問(wèn)速度??紤]到開(kāi)發(fā)的成熟度、系統(tǒng)穩(wěn)定性及控件支持,代碼部分采用了Delphi,利用了1stClass4000, fastreport,grid++report等控件。
4.1數(shù)據(jù)庫(kù)設(shè)計(jì)
圍繞應(yīng)用需求進(jìn)行數(shù)據(jù)庫(kù)的實(shí)體-聯(lián)系模型(E-R)設(shè)計(jì),按著3NF的標(biāo)準(zhǔn)對(duì)生成的關(guān)系模式進(jìn)行規(guī)范化處理,消除數(shù)據(jù)冗余和數(shù)據(jù)異常,最終確定在數(shù)據(jù)庫(kù)中一共建立13個(gè)數(shù)據(jù)表,包括12個(gè)業(yè)務(wù)處理數(shù)據(jù)表及一個(gè)用戶數(shù)據(jù)表,其中業(yè)務(wù)處理數(shù)據(jù)表結(jié)構(gòu)及其相互關(guān)系如圖3所示。由于器材一般分類歸檔,大類中包含若干小類,小類中又包括子類,所以器材數(shù)據(jù)表采用了三級(jí)表結(jié)構(gòu),各級(jí)數(shù)據(jù)表由分類號(hào)進(jìn)行關(guān)聯(lián)。料單收發(fā)要建立專門的收發(fā)料數(shù)據(jù)表,還要有相應(yīng)收發(fā)料明細(xì)表,記錄每筆明細(xì)賬目。入庫(kù)表記錄入庫(kù)器材的名稱、時(shí)間、數(shù)量等以方便針對(duì)入庫(kù)信息的查詢。庫(kù)存表記錄庫(kù)存余量等,生產(chǎn)廠家表、收料單位表、用戶表記錄基本數(shù)據(jù)信息。
4.2料單制作功能的設(shè)計(jì)及實(shí)現(xiàn)
由于器材是分級(jí)管理的,為了方便收發(fā)器材的查詢、選取、修改等操作,器材選取界面采用了類資源管理器模式,父類下包含若干子類,可以按需要展開(kāi)或關(guān)閉下級(jí)條目。這里利用了1stClass4000控件,將一級(jí)器材庫(kù)定義為根,二級(jí)、三級(jí)庫(kù)定義為枝葉并進(jìn)行了關(guān)聯(lián)。1stClass4000控件可以靈活地控制窗體樣式,實(shí)現(xiàn)界面的不同風(fēng)格。料單制作主代碼如下:
for i:=1to cn-1 do begin
sql.clear;
sql.add( insert into flmxb(xh,zbmc,dhgg,tzs,dj,zje,sccj,jldw,bz,mxh) values(); sql.add(+Cells[0,i]++,++Cells[1,i]++,++Cells[2,i]+);
sql.add(,++Cells[3,i]++,++Cells[4,i]++,++Cells[5,i]+);
sql.add(,++Cells[6,i]++,++Cells[7,i]+);
sql.add(,++Cells[8,i]+);
sql.add(,++IntToStr(mxid)++));
execsql;
Update;
end;
messagebox(addequipmetFrm.Handle,料單已經(jīng)成功發(fā)出,恭喜,mb_ok);
4.3料單管理界面的設(shè)計(jì)及實(shí)現(xiàn)
收發(fā)料單管理界面窗體分三部分,第一部分是收發(fā)料單的記錄,包括時(shí)間、狀態(tài)、案由等等,第二部分包含對(duì)應(yīng)第一部分每一料單記錄的明細(xì)信息,包括器材名稱、規(guī)格、計(jì)量單位等。第三部分是打印及管理區(qū)。
收發(fā)料單被執(zhí)行后,若在規(guī)定時(shí)間內(nèi)倉(cāng)庫(kù)端可以自主撤銷。管理端對(duì)料單的撤銷則需查看倉(cāng)庫(kù)端對(duì)該料單是否已執(zhí)行。若末執(zhí)行則可撤銷,若執(zhí)行則需采用其它方式撤銷,主要代碼如下:
if MessageDlg(確認(rèn)要撤銷嗎?,mtConfirmation,[mbYes,mbNo],0)=mrYes then
begin
Delete;
mxhtemp:= qry1MXBH.Value ;
query:=select * from flmxb where mxh=convert(varchar,++mxhtemp++);
sql.add(query);
open;
first;
if recordcount=0 then showmessage(該編號(hào)明細(xì)料單沒(méi)有找到,可能已刪除?。?!)
else
edit;
for i:=1 to recordcount do
Delete;
end;
料單數(shù)據(jù)表的格式化打印采用了grip++report報(bào)表控件。利用該控件不僅可以實(shí)現(xiàn)報(bào)表的打印、打印預(yù)覽、數(shù)據(jù)導(dǎo)出等常規(guī)功能,還可實(shí)現(xiàn)報(bào)表查詢顯示功能。一些復(fù)雜特殊的報(bào)表,如動(dòng)態(tài)報(bào)表、多層表頭、票據(jù)打印,發(fā)票套打、交叉表等也可利用該控件實(shí)現(xiàn)打印。
5結(jié)束語(yǔ)
在信息技術(shù)高速發(fā)展的今天,信息如何更高效、迅捷、安全地互連互通,如何實(shí)現(xiàn)數(shù)據(jù)、資源共享,如何優(yōu)化業(yè)務(wù)流程,簡(jiǎn)化操作步驟、確保人、財(cái)、物的安全,信息化、網(wǎng)絡(luò)化建設(shè)無(wú)疑是一條可行之路。該文針對(duì)器材管理業(yè)務(wù),按著標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā)流程,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)器材管理信息系統(tǒng)原型,為開(kāi)發(fā)面向信息管理系統(tǒng)的各種應(yīng)用提供了一個(gè)標(biāo)準(zhǔn)參考模型。
參考文獻(xiàn):
[1]周興華,李曾民,臧洪光. Delphi7數(shù)據(jù)庫(kù)項(xiàng)目案例導(dǎo)航[M].北京:清華大學(xué)出版社,2005.
[2]耿靜,王遵立.用Delphi開(kāi)發(fā)數(shù)據(jù)庫(kù)的編程方法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2000,12.
[3]張文修,梁怡,吳偉志.信息系統(tǒng)與知識(shí)發(fā)現(xiàn)[M].北京:科學(xué)出版社,2003 .
[4]左美云,鄺孔武.信息系統(tǒng)的開(kāi)發(fā)與管理教程[M].北京:清華大學(xué)出版社,2001 .