摘要:該系統主要對產品的入庫,出庫和庫存進行管理,減少人工操作的麻煩和誤差。能更好的提高企事業的管理模式,實現辦公自動化。對系統分析、總體設計及詳細設計進行了闡述,主要實現了以下功能:用戶管理、入庫操作、出庫操作、數據導出和查詢統計等。用戶管理主要用于添加、修改和刪除用戶信息并進行權限管理;入庫操作可以實現產品入庫;出庫操作用于實現產品出庫;數據導出和查詢統計用來實現數據查詢并導出數據。
關鍵詞:庫存;銷售;進銷存管理系統
中圖分類號:TP315文獻標識碼:A文章編號:1009-3044(2008)32-1140-04
Design and Realization of the Purchase-Sale-Storage Management System
LIU Hua-min, LI Yu
(Ganzhou Technician Institute, Ganzhou 341000, China)
Abstract: The system mainly manages the warehousing, delivering from godown and storage of product with its character identified by reducing the trouble and error of manual operation, as well as better improving the management mode of enterprise in order to realize the office automation. This paper elaborates the system analysis, total design and detailed design, mainly carrying out the following functions: user management, warehousing operation, delivering from godown operation, data exporting, querying statistic and so on. User management is mainly used for adding, modifying and deleting user information and privilege management; warehousing operation may realize storage products; delivering from godown operation can realize the process that products are delivered from godown; data exporting and inquiring statistic can achieve the function as querying and exporting data.
Key words: storage;distribution;purchase-sale-storage management system
1 引言
隨著社會經濟的迅速發展和科學技術的全面進步,計算機事業的飛速發展,以計算機與通信技術為基礎的信息系統正處于蓬勃發展的時期。隨著經濟文化水平的顯著提高,人們對生活質量及工作環境的要求也越來越高。如何通過計算機完成更多的事情,進而達到辦公自動化和優化日常工作的目的,也就成了一個大眾化的課題。
伴隨著企業規模的不斷擴大,原始的、手工的管理已經不能適應工業企業的發展現狀,更無法滿足企業對管理工作快速、準確的要求。計算機信息管理技術的迅速發展恰恰解決了這個問題,它使計算機技術與現代的管理技術相互配合,更加準確、高速地完成工業企業日常的倉庫管理工作。使企業能夠以最少的人員來完成更多的工作。
進銷存管理是與日常生活息息相關的問題。大到公司、超市的倉庫管理,小到圖書館的藏書管理,都可以認為是各種各樣的進銷存管理需求。隨著中國改革開放的不斷深入,經濟飛速的發展,企業要想生存、發展,要想在激烈的市場競爭中立于不敗之地,沒有現代化的管理是萬萬不行的,進銷存管理的全面自動化、信息化則是其中極其重要的部分。為了加快進銷存管理自動化的步伐,提高倉庫的管理業務處理效率,建立進銷存管理系統,盡可能地減少進銷存管理的重復性和低效性,已變得十分必要。
在21世紀,隨著中國加入WTO,企業之間的競爭并無國界,管理技術和信息技術都在日新月異地更新發展,如何運用信息技術與傳統產業完美結合,提高企業競爭力,信息管理已成為重要的生產要素,決不可等閑視之。
通過進銷存管理系統,利用信息化手段把先進的企業管理方法引入企業的實踐,為企業的管理改革提供切實易行的途徑。更重要的是,進銷存管理系統可以及時通過信息技術把企業數據快速的轉化為企業信息,進而為相關管理者提供決策依據。
2 系統開發模式及特點
管理信息系統的結構經歷了主機結構,文件服務器結構,C/S結構,B/S結構。隨著計算機技術,網絡技術,數據庫技術的發展,基于Internet的信息系統已成為發展趨勢。在B/S體系結構系統中,用戶通過瀏覽器向分布在網絡上的許多服務器發出請求,服務器對瀏覽器的請求進行處理,將用戶所需信息返回到瀏覽器。而其余如數據請求、加工、結果返回以及動態網頁生成、對數據庫的訪問和應用程序的執行等工作全部由Web Server完成。隨著Windows將瀏覽器技術植入操作系統內部,這種結構已成為當今應用軟件的首選體系結構。顯然B/S結構應用程序相對于傳統的C/S結構應用程序是一個非常大的進步。本系統采用基于B/S的結構。發揮了該結構事務處理能力強,安全性,有效性的特點,又能充分利用該結構分布廣,易擴充,開放式、通用性的特點,充分利用了B/S結構的優勢。
3 系統設計目標和功能
3.1 設計目標
本系統針對進銷存管理現狀,通過網絡對進銷存操作進行有效管理。本系統主要實現如下目標:
1) 系統采用人機對話方式,界面美觀友好,信息查詢靈活、方便、快捷、準確,數據存儲安全可靠。
2) 實現公司內一些基礎信息的設置及查詢。
3) 產品的入庫、出庫流程清晰。
4) 數據計算自動完成,提高工作效率。
5) 以表格形式對銷售情況進行分析。
6) 可方便快捷地查詢庫存信息,并可對產品價格進行調整。
7) 超級管理員可以隨時修改自己的口令,并增加刪除其他用戶。
8) 系統最大限度地實現了易維護性和易操作性。
9) 系統運行穩定、安全可靠。
3.2 功能模塊
本系統共有三類用戶:入庫操作員、出庫操作員和超級管理員。入庫操作員進入入庫操作界面后可以添加新的產品入庫單,查詢入庫單并打印產品入庫單;出庫操作員進入出庫操作界面后可以按需方單位、出庫編號、(空發票號碼)出庫編號查詢數據庫信息,進行產品出庫操作,修改出庫數據并打印出庫表;超級管理員進入管理界面后可以添加新用戶,修改自己和其他用戶的信息,并刪除除自己以外的其他所有用戶;所有用戶都可以進入導出數據頁面,該頁面可以查詢月度、季度和年度報表,并將報表保存為Excel文檔。系統功能結構圖如圖1所示。
4 處理流程和數據庫連接
4.1 處理流程
本程序分為三類用戶權限,即分三類用戶流程。第一類是入庫操作員流程;第二類是出庫操作員流程;第三類是超級管理員流程。
4.1.1 入庫操作員流程
1) 建立與數據庫的連接;
2) 獲取系統設置;
3) 顯示主對話框;
4) 等待用戶選擇。
4.1.2 出庫操作員流程
1) 建立與數據庫的連接;
2) 獲取系統設置;
3) 顯示主對話框;
4) 等待出庫操作員選擇。
4.1.3 超級管理員流程
1) 建立與數據庫的連接;
2) 獲取系統設置;
3) 顯示主對話框;
4) 等待超級管理員選擇。
4.2 數據庫的連接
本系統使用JDBC-ODBC橋來連接數據庫,JDBC-ODBC橋是一個JDBC驅動程序,它通過將JDBC操作轉換為ODBC操作來實現JDBC操作。對ODBC,它像是通常的應用程序,橋為所有對ODBC可用的數據庫實現JDBC。它作為sun.jdbc.odbc包實現,其中包含一個用來訪問ODBC的本地庫。橋是由Intersolv和Java Soft聯合開發的。由于ODBC被廣泛地使用,該橋的優點是讓JDBC能夠訪問幾乎所有的數據庫。橋支持ODBC 2.x,這是當前大多數ODBC驅動程序支持的版本。橋作為包sun.jdbc.odbc與JDK一起自動安裝,無需特殊配置。通過ODBC子協議,使用URL打開JDBC連接即可使用橋。建立連接前,必須將橋驅動程序類sun.jdbc.odbc.JdbcOdbcDriver添加到名為jdbc.drivers的java.lang.System屬性中,或用Java類加載器將其顯式地加載。可以用以下一行進行橋的顯式加載:
Class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\");
加載時,ODBC驅動程序(與所有JDBC驅動程序一樣)將創建它自己的實例,同時在JDBC驅動程序管理器進行注冊。主要代碼如下:
package com.util;
import java.sql.*;
//連接數據庫工具類
public class DataBaseConnection
{/**
*一個靜態方法,返回一個數據庫連接
*這樣達到了對數據庫統一控制的目的
*/
public static Connection getConnection()
{Connection con=1;
String url=\"jdbc:odbc:iodns\";
String user=\"sa\";
String pwd=\"\";
try{
Class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\"); //加載數據庫驅動
con=DriverManager.getConnection(url,user,pwd); //從驅動得到一個連接,賦給con變量
}catch(Exception e)
{e.printStackTrace();}
return con;}};
//以后在其他文件里面就可以直接調用Connection con=DataBaseConnection.getConnection();來獲得數據庫的連接。
5 關鍵代碼
完成添加新的產品入庫單操作。入庫操作員輸入產品的發票號碼、生產企業、產品名稱、規格型號、單位、數量、單價、收貨單位、送貨日期和備注,并補充入庫編號的后兩位數字,單擊保存即可添加,添加后該入庫單將進入未打印列表中。主要代碼如下:
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
{
int n=0;//n為前端輸入的總行數
int m=0;//m為數據庫中該入庫編號對應的行數
request.setCharacterEncoding(\"ISO-8859-1\");
response.setContentType(\"text/html; charset=GBK\");
PrintWriter out=response.getWriter();
//接受請求的參數
String maintype=request.getParameter(\"maintype\");//main\"A,B,C,D或E\"
String cjfpId[]=request.getParameterValues(\"cjfpId\");//廠家發票號
for(int i=0;i {if(cjfpId[i]!=\"\") {n++;//n為前端輸入的總行數}} String scqyName[]=request.getParameterValues(\"scqyName\");//生產企業名稱 String cpName[]=request.getParameterValues(\"cpName\");//產品名稱 String guige[]=request.getParameterValues(\"guige\");//規格型號 String dw[]=request.getParameterValues(\"dw\");//單位 String inNumber[]=request.getParameterValues(\"inNumber\");//數量 String inCome[]=request.getParameterValues(\"inCome\");//單價 String shdwName[]=request.getParameterValues(\"shdwName\");//收貨單位名稱 String inDate=request.getParameter(\"inDate\");//入庫日期 String thDate[]=request.getParameterValues(\"thDate\");//提貨日期 String remark[]=request.getParameterValues(\"remark\");//備注 String inId=request.getParameter(\"inId\");//獲取入庫編號 request.setAttribute(\"inId\",inId); String hinId=request.getParameter(\"hinId\"); int endId=0; Connection con; try {con=DataBaseConnection.getConnection(); Statement stmt=con.createStatement(); ResultSet rs=stmt.executeQuery(\"select count(*) from inout where inId='\"+inId+\"'\"); rs.next(); m=rs.getInt(1);} catch(Exception e) {e.getMessage();} if(m+n<=11)//m==0表示上頁傳遞過來的入庫編號在數據庫中不存在,可以插入 {for(int i=0;i {BigDecimal inAmount=new BigDecimal(String.valueOf(inNumber[i])).multiply(new BigDecimal(String.valueOf(inCome[i]))); //連接數據庫插入數據 try {con=DataBaseConnection.getConnection(); PreparedStatement pstmt=con.prepareStatement(\"insert inout (cjfpId,scqyName,cpName,guige,dw,inNumber,inCome,inAmount,inId,inDate,shdwName,thDate,remark,inCheckPrint,outCheckUpdate,fpId)values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)\"); pstmt.setString(1,cjfpId[i]); pstmt.setString(2,trans(scqyName[i])); pstmt.setString(3,trans(cpName[i])); pstmt.setString(4,trans(guige[i])); pstmt.setString(5,trans(dw[i])); pstmt.setBigDecimal(6,new BigDecimal(String.valueOf(inNumber[i]))); pstmt.setBigDecimal(7,new BigDecimal(String.valueOf(inCome[i]))); pstmt.setBigDecimal(8,new BigDecimal(String.valueOf(inAmount))); pstmt.setString(9,inId); pstmt.setString(10,inDate); pstmt.setString(11,trans(shdwName[i])); pstmt.setString(12,thDate[i]); pstmt.setString(13,trans(remark[i])); pstmt.setInt(14,0); pstmt.setInt(15,0); pstmt.setString(16,\"\"); pstmt.executeUpdate();} catch(Exception e) {//如果插入不成功,派發視圖到上一操作頁面 request.setAttribute(\"insertfail\",\"true\"); RequestDispatcher requestDispatcher=request.getRequestDispatcher(\"/code/main\"+maintype+\".jsp\"); requestDispatcher.forward(request,response); e.printStackTrace();}} //如果插入成功,轉到上一頁面 RequestDispatcher requestDispatcher=request.getRequestDispatcher(\"/code/main\"+maintype+\".jsp\"); requestDispatcher.forward(request,response);} else//如果插入不成功或插入重復數據,就把錯誤信息顯示給用戶 {request.setAttribute(\"insertfail\",\"true\"); RequestDispatcher requestDispatcher=request.getRequestDispatcher(\"/code/main\"+maintype+\".jsp\"); requestDispatcher.forward(request,response);}} 6 結束語 在這個系統中,完成用戶的添加、修改和刪除操作,完成產品的入庫和出庫操作,完成數據導出和查詢統計操作,完成基于三類用戶權限的設定。 參考文獻: [1] 唐有明,吳華.JSP動態網站開發基礎練習+典型案例[M].北京:清華大學出版社,2006. [2] 李長林.JSP組建動態網站基礎與實例操作[M].北京:電子工業出版社,2005. [3] 王誠梅,袁然,王艷.JSP案例開發集錦[M].北京:電子工業出版社,2006. [4] 王迪花,劉臣勇,劉立鵬,等.JSP/Servelet—基于JAVA的最新網站建設工具[M].北京:清華大學出版社,2004. [5] 羅志高,蘇恒陽,李智波.數據庫原理與應用教程[M].北京:人民郵電出版社,2003. [6] 米昶,幸莉珊.軟件工程[M].大連:大連理工大學出版社,2003. [7] 汪孝宜.JSP數據庫開發實例精粹[M].電子工業出版社,2005. [8] 鄭人杰,殷人昆,陶永雷.實用軟件工程[M].北京:清華大學出版社,1997. [9] 阮文江.JavaScript程序設計基礎教程[M].北京:人民郵電出版社,2004. [10] 周立柱,馮建華.SQL Server數據庫原理——設計與實現[M].北京:清華大學出版社,2004.