司小龍
蘇州科技大學(xué),江蘇 蘇州 215009)
隨著我國(guó)社會(huì)經(jīng)濟(jì)的飛速發(fā)展,在龐大人口基數(shù)成為消費(fèi)者的背景下,各種商品需求量均日益增加。對(duì)于商家來(lái)說(shuō),在大量商品的交易過(guò)程中,會(huì)不可避免地產(chǎn)生倉(cāng)庫(kù)管理問(wèn)題。數(shù)據(jù)庫(kù)數(shù)據(jù)信息的增、刪、改、查功能可以很好地適用于倉(cāng)庫(kù)管理系統(tǒng),依靠數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)能夠確保其安全性、高效性、便捷性[1-3]。本文以藥品的倉(cāng)庫(kù)管理為例,開(kāi)發(fā)一套倉(cāng)庫(kù)管理系統(tǒng)。
本倉(cāng)庫(kù)管理系統(tǒng)是以基本信息和出入庫(kù)操作這兩大部分所構(gòu)成。在基本信息中,需要包含市面上藥物信息、雇員信息、客戶信息等;在出入庫(kù)操作中,需要包含入庫(kù)操作與入庫(kù)信息記錄、出庫(kù)操作與出庫(kù)信息記錄、庫(kù)存信息查詢操作。在倉(cāng)庫(kù)管理中,數(shù)據(jù)報(bào)表起著十分重要的作用,可以根據(jù)它掌握整個(gè)倉(cāng)庫(kù)的出入庫(kù)情況,從而在對(duì)倉(cāng)庫(kù)中的藥品進(jìn)行管理時(shí)可以確保過(guò)程的完整性與可監(jiān)控性,并且在使用中盡可能做到簡(jiǎn)潔、高效,避免過(guò)于復(fù)雜化的操作[4-5]。
本倉(cāng)庫(kù)管理系統(tǒng)主要需要實(shí)現(xiàn)的功能有:藥品信息記錄、員工信息記錄、客戶信息記錄、藥品入庫(kù)操作以及信息記錄、藥品出庫(kù)操作及信息記錄、藥品的庫(kù)存信息查詢等功能。
在藥品信息記錄中,需要記錄倉(cāng)庫(kù)所管理的藥品信息,主要包括:藥品編號(hào)、藥品名稱(chēng)、藥品的生產(chǎn)公司、生產(chǎn)日期以及有效日期、藥品的主要功效用途、價(jià)格等信息。
在員工信息記錄中,需要記錄倉(cāng)庫(kù)中的雇員信息,主要包括:雇員編號(hào)、雇員姓名、性別、年齡、學(xué)歷、職位等。
在客戶信息記錄中,需要記錄客戶信息,主要包括:客戶編號(hào)、客戶姓名、客戶聯(lián)系方式等。
在藥品入庫(kù)時(shí),需要實(shí)現(xiàn)對(duì)藥品的入庫(kù)操作,還需要記錄入庫(kù)信息,主要包括:入庫(kù)時(shí)間、藥品編號(hào)、藥品名稱(chēng)、入庫(kù)數(shù)量、進(jìn)行入庫(kù)操作的雇員編號(hào)、進(jìn)行入庫(kù)操作的雇員姓名等。
在藥品出庫(kù)時(shí),需要實(shí)現(xiàn)對(duì)藥品的出庫(kù)操作,還需要記錄出庫(kù)信息,主要包括:客戶編號(hào)、客戶姓名、出庫(kù)時(shí)間、藥品編號(hào)、藥品名稱(chēng)、出庫(kù)數(shù)量、進(jìn)行出庫(kù)操作的雇員編號(hào)、進(jìn)行出庫(kù)操作的雇員姓名等。
1)藥品信息記錄、雇員信息記錄、客戶信息記錄功能設(shè)計(jì)。創(chuàng)建填寫(xiě)對(duì)應(yīng)信息的文本框,還需要實(shí)現(xiàn)對(duì)文本框內(nèi)容信息填寫(xiě)正確性的簡(jiǎn)單判斷,例如,藥品價(jià)格、雇員年齡、客戶聯(lián)系方式只能輸入數(shù)字文本,若輸入其他類(lèi)型文本,則提示添加失敗。為了實(shí)現(xiàn)信息的統(tǒng)一性,可以創(chuàng)建組合框進(jìn)行信息的填寫(xiě),例如,在雇員性別的組合框中只能選擇“男”或“女”。此外,還需要實(shí)現(xiàn)數(shù)據(jù)信息的增、刪、改、查功能。
2)入庫(kù)功能設(shè)計(jì)。在藥品入庫(kù)時(shí),需要填寫(xiě)藥品編號(hào)、雇員編號(hào)、入庫(kù)數(shù)量、藥品存放位置。其中藥品編號(hào)和雇員編號(hào)均為確定值,則創(chuàng)建組合框進(jìn)行選擇,從而避免輸入錯(cuò)誤造成信息錯(cuò)誤。并將填好的信息形成相應(yīng)的數(shù)據(jù)庫(kù)語(yǔ)句,傳到數(shù)據(jù)庫(kù)中進(jìn)行記錄。藥品編號(hào)和雇員編號(hào)作為數(shù)據(jù)庫(kù)表格中的主鍵,可由此檢索出相關(guān)的信息進(jìn)行記錄,然后將數(shù)據(jù)庫(kù)表格返回給用戶界面。此外,還需要實(shí)現(xiàn)數(shù)據(jù)信息的增、刪、改、查功能。
3)出庫(kù)功能設(shè)計(jì)。在藥品出庫(kù)時(shí),需要填寫(xiě)客戶編號(hào)、藥品編號(hào)、藥品存放位置、雇員編號(hào)、出庫(kù)數(shù)量。其中除了出庫(kù)數(shù)量以外,其余均為確定值,同樣需要?jiǎng)?chuàng)建組合框以確保其信息的正確性。完成入庫(kù)操作后,數(shù)據(jù)庫(kù)需要將數(shù)據(jù)庫(kù)表格返回給用戶界面。此外,還需要實(shí)現(xiàn)數(shù)據(jù)信息的增、刪、改、查功能。
數(shù)據(jù)庫(kù)設(shè)計(jì)是指根據(jù)業(yè)務(wù)和功能等需求,建立數(shù)據(jù)庫(kù)及應(yīng)用系統(tǒng),從而確保其能安全、高效地存儲(chǔ)數(shù)據(jù)。倉(cāng)庫(kù)管理系統(tǒng)功能的實(shí)現(xiàn)主要依賴(lài)于數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)決定了整個(gè)倉(cāng)庫(kù)管理系統(tǒng)的安全性及穩(wěn)定性,因此合理地設(shè)計(jì)一個(gè)數(shù)據(jù)庫(kù)是至關(guān)重要的。
1)E-R圖設(shè)計(jì)。圖1為數(shù)據(jù)庫(kù)整體E-R圖設(shè)計(jì)。其中,有5個(gè)對(duì)象:藥品、雇員、客戶、入庫(kù)、出庫(kù),各個(gè)對(duì)象均有若干種屬性。對(duì)象之間的關(guān)系為:雇員更新藥品;客戶購(gòu)買(mǎi)藥品;雇員進(jìn)行入庫(kù)操作;雇員進(jìn)行出庫(kù)操作;入庫(kù)和出庫(kù)提供了庫(kù)存信息;藥品擁有庫(kù)存信息。
圖1 數(shù)據(jù)庫(kù)整體E-R圖設(shè)計(jì)
2)物理設(shè)計(jì)。物理設(shè)計(jì)是編程之前最關(guān)鍵的一步,取決于代碼是否可正確執(zhí)行,因此也決定了倉(cāng)庫(kù)管理系統(tǒng)是否能實(shí)現(xiàn)。各個(gè)表的具體信息見(jiàn)表1~第73頁(yè)表6。
表1 藥品信息(medicine Info)
表2 雇員信息(e mploye e)
表6 庫(kù)存信息(kucun Info)
表3 客戶信息(kehu)
表4 入庫(kù)信息(rukuInfo)
表5 出庫(kù)信息(chuku Info)
系統(tǒng)的可視化圖形用戶界面可使用SceneBuilder(場(chǎng)景構(gòu)建器)根據(jù)用戶自己的喜好進(jìn)行設(shè)計(jì)。可以將SceneBuilder與eclipse或者IDEA等進(jìn)行連接,創(chuàng)建可視化圖形用戶界面,隨后SceneBuilder會(huì)自動(dòng)生成代碼,避免了傳統(tǒng)swing控件的繁瑣操作。這樣的實(shí)現(xiàn)方式可以極大程度地提高開(kāi)發(fā)效率。
3.2.1 數(shù)據(jù)庫(kù)的連接
連接數(shù)據(jù)庫(kù)是功能實(shí)現(xiàn)的第一步,這是因?yàn)楣芾硐到y(tǒng)功能的實(shí)現(xiàn)都是建立在數(shù)據(jù)庫(kù)的操作中。主要實(shí)現(xiàn)代碼如下。
public static void lianjie(){
try{
String url = "jdbc:sqlserver://localhost:
1433;databasename=medicine";
DriverManager.registerDriver(new com.
microsoft.sqlserver.jdbc.SQLServerDriver());
con=DriverManager.getConnection(url,
"sa","123456");
}
catch(Exception ex){
JOptionPane.showMessageDialog (null,"con not connect datebase","error",JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
3.2.2 數(shù)據(jù)庫(kù)數(shù)據(jù)信息的增、刪、改、查功能
數(shù)據(jù)庫(kù)數(shù)據(jù)信息的增、刪、改、查功能是最基本的數(shù)據(jù)庫(kù)功能實(shí)現(xiàn)內(nèi)容,是管理數(shù)據(jù)最重要的操作手段。
1)增加數(shù)據(jù)。主要實(shí)現(xiàn)代碼如下。
public static void add(String sql){
System.out.println("SQL:"+sql);
CallableStatement cs;
try{
cs=con.prepareCall(sql);
cs.executeUpdate();
}catch(SQLException e){
JOptionPane.showMessageDialog (null,
"add error","error",JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
}
2)刪除數(shù)據(jù)。主要實(shí)現(xiàn)代碼如下。
public static void delete(String sql){
System.out.println("SQL:"+sql);
CallableStatement cs;
try{
cs=con.prepareCall(sql);
cs.executeUpdate();
}catch(SQLException e){
JOptionPane.showMessageDialog(null"delete error","error",JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
}
3)修改數(shù)據(jù)。主要實(shí)現(xiàn)代碼如下。
public static void update(int m,int n,String str1,String str2){
Integer.toString(m);
String sql="{call xiugai("+Integer.toString(m)+","+Integer.toString(n)+",'"+str1+"','"+str2+"')}";
System.out.print(sql);
CallableStatement cs;
try{
cs=con.prepareCall(sql);
cs.executeUpdate();
}catch(SQLException e){
JOptionPane.showMessageDialog (null,"modifyerror","error",JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
}
4)查找數(shù)據(jù)。主要實(shí)現(xiàn)代碼如下。
public static ResultSet check(String sql){
System.out.println("SQL:"+sql);
CallableStatement cs;
ResultSet rs=null;
try{
cs=con.prepareCall(sql);
rs=cs.executeQuery();
}catch(SQLException e){
JOptionPane.showMessageDialog (null,"duquerror","error",JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
return rs;
}
在入庫(kù)界面中,需要對(duì)藥品編號(hào)和雇員編號(hào)創(chuàng)建組合框,從而只能選定已存在的ID值。由于ID值是數(shù)據(jù)庫(kù)的主鍵,因此可以通過(guò)這一個(gè)值獲取整個(gè)數(shù)據(jù)庫(kù)表格中的信息,這樣可以確保信息的正確性和操作的便捷性。完成入庫(kù)操作之后,數(shù)據(jù)庫(kù)將會(huì)對(duì)庫(kù)存表進(jìn)行入庫(kù)數(shù)量的更新,然后即可以直觀地查看各個(gè)區(qū)域存放的各類(lèi)藥品的當(dāng)前數(shù)量。
在出庫(kù)界面中,需要對(duì)客戶編號(hào)、藥品編號(hào)、存放位置、雇員編號(hào)創(chuàng)建組合框,由于它們均是確定值,因此可以通過(guò)這些數(shù)據(jù)訪問(wèn)與它們相關(guān)的數(shù)據(jù)庫(kù)表格,從而進(jìn)行篩選并記錄。這里需要對(duì)出庫(kù)數(shù)量進(jìn)行判斷,出庫(kù)數(shù)量不能大于庫(kù)存的當(dāng)前數(shù)量,否則出庫(kù)失敗。完成出庫(kù)操作之后,數(shù)據(jù)庫(kù)將會(huì)對(duì)庫(kù)存表進(jìn)行藥品出庫(kù)數(shù)量的更新。
倉(cāng)庫(kù)管理系統(tǒng)已經(jīng)在當(dāng)今社會(huì)有了廣泛的運(yùn)用,相信倉(cāng)庫(kù)管理系統(tǒng)將會(huì)在未來(lái)有著更好的發(fā)展,并與其他新型技術(shù)進(jìn)行結(jié)合,發(fā)揮其不可估量的作用。本文以藥品為例設(shè)計(jì)并開(kāi)發(fā)了一套倉(cāng)庫(kù)管理系統(tǒng),主要是分析倉(cāng)庫(kù)的業(yè)務(wù)需求和功能需求,進(jìn)而針對(duì)分析出的需求設(shè)計(jì)相應(yīng)功能和數(shù)據(jù)庫(kù),并實(shí)現(xiàn)相應(yīng)功能。