




已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
河南理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院課程設(shè)計(jì)報(bào)告(2015-2016-1)課程名稱(chēng) 軟件工程課程設(shè)計(jì) 設(shè)計(jì)題目 企業(yè)進(jìn)銷(xiāo)存管理系統(tǒng) 學(xué)生姓名 徐 松 學(xué) 號(hào) 311309060209 專(zhuān)業(yè)班級(jí) 軟件工程1302 指導(dǎo)教師 王 靜 2016 年 1 月 14 日一、系統(tǒng)背景.3二、系統(tǒng)分析3 1.理解需求.3 2.需求任務(wù)分析.3 3.數(shù)據(jù)庫(kù).4三、系統(tǒng)設(shè)計(jì).41.Item類(lèi)設(shè)計(jì)82.數(shù)據(jù)模型公共類(lèi)93.Dao公共類(lèi)143.4系統(tǒng)登錄模塊設(shè)計(jì)151.設(shè)計(jì)登錄窗體152.密碼文本框163.“登錄”按鈕173.5系統(tǒng)主窗體設(shè)計(jì)181.設(shè)計(jì)菜單欄182.設(shè)計(jì)工具欄183.設(shè)計(jì)狀態(tài)欄193.6銷(xiāo)售單模塊設(shè)計(jì)191.設(shè)計(jì)銷(xiāo)售窗體192.添加銷(xiāo)售商品193.銷(xiāo)售統(tǒng)計(jì)194.商品銷(xiāo)售19四、總結(jié).21 一、系統(tǒng)背景 中小企業(yè)在我國(guó)經(jīng)濟(jì)發(fā)展中具有重要地位,隨著我國(guó)市場(chǎng)經(jīng)濟(jì)的蓬勃發(fā)展和人們對(duì)計(jì)算機(jī)的普遍應(yīng)用,批發(fā)、零售行業(yè)正處在一個(gè)高速發(fā)展的時(shí)期。行業(yè)的快速發(fā)展必然導(dǎo)致競(jìng)爭(zhēng)的加劇,要想在激烈的市場(chǎng)競(jìng)爭(zhēng)中謀求發(fā)展,客觀上要求企業(yè)必須加強(qiáng)內(nèi)部管理,提高運(yùn)營(yíng)效率。而我國(guó)大部分小型批發(fā)、零售企業(yè)在信息機(jī)制上還沒(méi)有擺脫原有的手工模式,企業(yè)內(nèi)部沒(méi)有形成完善的、有效的信息化管理機(jī)制,企業(yè)發(fā)展的動(dòng)力不足,從而影響企業(yè)的持續(xù)、穩(wěn)定、快速的發(fā)展。當(dāng)今國(guó)內(nèi)外多數(shù)企業(yè)的競(jìng)爭(zhēng)特點(diǎn)是:產(chǎn)品的種類(lèi)、規(guī)格特別多,市場(chǎng)需求變化很快,與分銷(xiāo)商,零售商的關(guān)系日益密切等。而隨著業(yè)務(wù)量的擴(kuò)大,傳統(tǒng)的管理方法已經(jīng)無(wú)法處理日益膨脹的大量的業(yè)務(wù)數(shù)據(jù),企業(yè)采用電腦管理進(jìn)貨、庫(kù)存、銷(xiāo)售等諸多環(huán)節(jié)也已成為趨勢(shì)及必然。 實(shí)現(xiàn)企業(yè)信息化管理是現(xiàn)代社會(huì)中小企業(yè)穩(wěn)步發(fā)展的必要條件,它可以提高企業(yè)的管理水平和工作效率,最大限度地減少手工操作帶來(lái)的失誤。進(jìn)銷(xiāo)存管理系統(tǒng)正是一個(gè)信息化管理軟件,可以實(shí)現(xiàn)企業(yè)的進(jìn)貨、銷(xiāo)售、庫(kù)存管理等各項(xiàng)業(yè)務(wù)的信息化管理。出于以上原因,本課程設(shè)計(jì)將基于MySQL數(shù)據(jù)庫(kù)并以JAVA為開(kāi)發(fā)環(huán)境設(shè)計(jì)實(shí)現(xiàn)一個(gè)企業(yè)進(jìn)銷(xiāo)存管理系統(tǒng)。該系統(tǒng)包括基礎(chǔ)信息管理、進(jìn)貨管理、銷(xiāo)售管理、庫(kù)存管理、查詢(xún)統(tǒng)計(jì)、系統(tǒng)管理幾個(gè)模塊,主要是處理商業(yè)企業(yè)商品的采購(gòu)、庫(kù)存和銷(xiāo)售各個(gè)環(huán)節(jié)的活動(dòng),具有良好的人機(jī)界面??紤]到系統(tǒng)的使用對(duì)象可能較多,權(quán)限管理良好,數(shù)據(jù)查詢(xún)方便,支持多條件查詢(xún)。 二、系統(tǒng)分析1、理解需求本系統(tǒng)通過(guò)進(jìn)銷(xiāo)存系統(tǒng)的終端用戶(hù)和客戶(hù)的進(jìn)行調(diào)研后,得出系統(tǒng)需求的關(guān)鍵(1)進(jìn)貨管理商品進(jìn)貨信息管理:商品進(jìn)貨信息包括商品進(jìn)貨數(shù)量、單價(jià)、供貨商、進(jìn)貨日期、等。商品進(jìn)貨管理功能完成進(jìn)貨信息登記、修改和刪除等。更新庫(kù)存:進(jìn)貨信息的變動(dòng)直接關(guān)系到庫(kù)存的變化 (2)庫(kù)存管理庫(kù)存商品信息管理:商品庫(kù)存信息包括商品進(jìn)貨數(shù)量、單價(jià)、供貨商、進(jìn)貨日期、等。商品庫(kù)存管理功能完成庫(kù)存信息登記、修改和刪除、查詢(xún)等。 (3)銷(xiāo)售管理信息管理:商品銷(xiāo)售信息包括商品銷(xiāo)售數(shù)量、單價(jià)、統(tǒng)計(jì)日等商品銷(xiāo)售。管理功能完成銷(xiāo)售信息登記、修改和刪除,以及銷(xiāo)售總匯查詢(xún)。本系統(tǒng)應(yīng)該對(duì)基礎(chǔ)數(shù)據(jù)(用戶(hù)數(shù)據(jù)字典)進(jìn)行維護(hù)。系統(tǒng)應(yīng)該提供強(qiáng)大的數(shù)據(jù)統(tǒng)計(jì)、查詢(xún)、報(bào)表生成及打印等功能。系統(tǒng)客戶(hù)端運(yùn)行在Windows各版的平臺(tái)下,系統(tǒng)還應(yīng)該有一個(gè)較好飛圖形用戶(hù)界面。系統(tǒng)還應(yīng)該有很好的可擴(kuò)展性。系統(tǒng)應(yīng)該容易上手,方便使用。2、需求分析任務(wù)第一項(xiàng)任務(wù):畫(huà)出“進(jìn)銷(xiāo)存管理系統(tǒng)”的組合結(jié)構(gòu)圖,即組織結(jié)構(gòu)模型。第二項(xiàng)任務(wù):畫(huà)出“進(jìn)銷(xiāo)存管理系統(tǒng)”的業(yè)務(wù)操作圖,即業(yè)務(wù)操作模型。第三項(xiàng)任務(wù):畫(huà)出“進(jìn)銷(xiāo)存管理系統(tǒng)”的數(shù)據(jù)流程圖。第四項(xiàng)任務(wù):列出“進(jìn)銷(xiāo)存管理系統(tǒng)”的功能點(diǎn)列表,即功能模型。第五項(xiàng)任務(wù):列出“進(jìn)銷(xiāo)存管理系統(tǒng)”的性能點(diǎn)表,即性能模型。第六項(xiàng)任務(wù):確定“進(jìn)銷(xiāo)存管理系統(tǒng)”的環(huán)境模型,即運(yùn)行環(huán)境。3.數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)設(shè)計(jì)是進(jìn)銷(xiāo)存信息系統(tǒng)的核心,采用規(guī)范化設(shè)計(jì),使數(shù)據(jù)庫(kù)結(jié)構(gòu)盡可能簡(jiǎn)化,減少冗余,保持系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的一致性。根據(jù)不同的需求,一個(gè)商品流通企業(yè)進(jìn)銷(xiāo)存管理系統(tǒng)可包括幾個(gè)到上百個(gè)不等的數(shù)據(jù)表、數(shù)據(jù)視圖、存儲(chǔ)過(guò)程以及函數(shù)等,但最基本的數(shù)據(jù)表應(yīng)該包括:操作用戶(hù)數(shù)據(jù)表、公司信息數(shù)據(jù)表、采購(gòu)明細(xì)數(shù)據(jù)表、采購(gòu)客戶(hù)數(shù)據(jù)表、采購(gòu)信息數(shù)據(jù)表、供應(yīng)客戶(hù)數(shù)據(jù)表、商品信息數(shù)據(jù)表、銷(xiāo)售明細(xì)數(shù)據(jù)表和銷(xiāo)售信息數(shù)據(jù)表;數(shù)據(jù)視圖包括:采購(gòu)入庫(kù)明細(xì)視圖、累計(jì)采購(gòu)商品視圖、累計(jì)銷(xiāo)售商品視圖和銷(xiāo)售出庫(kù)明細(xì)視圖角色定義組織結(jié)構(gòu)圖中各單位職責(zé)說(shuō)明與相關(guān)業(yè)務(wù),如表:銷(xiāo)售人員信息單據(jù)進(jìn)貨信息單據(jù)商品銷(xiāo)售信息單據(jù)用戶(hù)信息單據(jù)經(jīng)手人信息表(jsr)客戶(hù)實(shí)體E-R圖企業(yè)進(jìn)銷(xiāo)存管理系統(tǒng)將記錄所有的客戶(hù)信息,在銷(xiāo)售、退貨等操作時(shí),將直接引用該客戶(hù)的實(shí)體屬性??蛻?hù)實(shí)體包括客戶(hù)編號(hào)、客戶(hù)名稱(chēng)、簡(jiǎn)稱(chēng)、地址、電話、郵政編碼、聯(lián)系人、聯(lián)系人電話、傳真、開(kāi)戶(hù)行和賬號(hào)等屬性,客戶(hù)實(shí)體E-R圖如圖所示。商品實(shí)體E-R圖供應(yīng)商實(shí)體E-R圖進(jìn)銷(xiāo)存管理系統(tǒng)數(shù)據(jù)流圖三、系統(tǒng)設(shè)計(jì)1.目的從該階段開(kāi)始正式進(jìn)入軟件的實(shí)際開(kāi)發(fā)階段,本階段完成系統(tǒng)的大致設(shè)計(jì)并明確司徒的數(shù)據(jù)結(jié)構(gòu)與軟件結(jié)構(gòu)。在軟件設(shè)計(jì)階段主要是把一個(gè)軟件需求轉(zhuǎn)化為軟件表示的過(guò)程,2.術(shù)語(yǔ)定義總體結(jié)構(gòu)軟件系統(tǒng)的總體邏輯結(jié)構(gòu)。本系統(tǒng)采用面向?qū)ο蟮脑O(shè)計(jì)方法,所以邏輯結(jié)構(gòu)為部件組裝圖概念模型CDM關(guān)系數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)模型,包括一張邏輯E-R圖及相應(yīng)的數(shù)據(jù)字典物理模型PDM關(guān)系數(shù)據(jù)庫(kù)物理設(shè)計(jì)模型,包括一張物理表關(guān)系圖及其相應(yīng)的數(shù)據(jù)字典角色數(shù)據(jù)庫(kù)中享有某些特權(quán)操作的用戶(hù)子系統(tǒng)具有相對(duì)獨(dú)立功能的小系統(tǒng),一個(gè)大的軟件系統(tǒng)可以劃分為多個(gè)子系統(tǒng),每個(gè)子系統(tǒng)可由多個(gè)模塊或多個(gè)部件組成模塊具有功能獨(dú)立、能被調(diào)用的信息單元3. 系統(tǒng)構(gòu)架1.Item類(lèi)設(shè)計(jì)Item類(lèi)是系統(tǒng)的公共類(lèi)之一,主要用于封裝和傳遞參數(shù)信息,這是典型命令模式的實(shí)現(xiàn)。在Dao類(lèi)中經(jīng)常使用該類(lèi)作為方法參數(shù);另外,在各個(gè)窗體界面中也經(jīng)常使用該類(lèi)作組件數(shù)據(jù),其toString()方法將返回name屬性值,所以顯示到各個(gè)組件上的內(nèi)容就是Item類(lèi)的對(duì)象所代表的商品、供應(yīng)商或者客戶(hù)等信息中的名稱(chēng)。關(guān)鍵代碼如下package com.lzw;public class Item private String id; /定義id屬性private String name; /定義name屬性public Item() public Item(String id,String name) this.id=id;=name;public String getId() /定義得到id屬性的方法return id;public void setId(String id) this.id = id;public String getName() /定義得到那么屬性的方法return name;public void setName(String name) = name;public String toString() /定義該類(lèi)字符串的表現(xiàn)形式return getName();2.數(shù)據(jù)模型公共類(lèi)在com.lzw.dao.model包中存放的是數(shù)據(jù)模型公共類(lèi),它們對(duì)應(yīng)著數(shù)據(jù)庫(kù)中不同的數(shù)據(jù)表,這些模型將被訪問(wèn)數(shù)據(jù)庫(kù)的Dao類(lèi)和程序中各個(gè)模塊甚至各個(gè)組件所使用。和Item公共類(lèi)的使用方法類(lèi)似,數(shù)據(jù)模型也是對(duì)數(shù)據(jù)表中所有字段(屬性)的封裝,但是數(shù)據(jù)模型是純粹的模型類(lèi),它不但需要重寫(xiě)父類(lèi)的toString()方法,還要重寫(xiě)hashCode()方法和equals()方法模型類(lèi)主要用于存儲(chǔ)數(shù)據(jù),并通過(guò)相應(yīng)的getXXX()方法和setXXX()方法實(shí)現(xiàn)不同屬性的訪問(wèn)原則。以商品數(shù)據(jù)表為例其代碼:public class TbSpinfo implements java.io.Serializable private String id;private String spname;private String jc;private String cd;private String dw;private String gg;private String bz;private String ph;private String pzwh;private String memo;private String gysname;public TbSpinfo() public TbSpinfo(String id) this.id = id;public String getId() return this.id;public void setId(String id) this.id = id;public String getSpname() return this.spname;public void setSpname(String spname) this.spname = spname;public String getJc() return this.jc;public void setJc(String jc) this.jc = jc;public String getCd() return this.cd;public void setCd(String cd) this.cd = cd;public String getDw() return this.dw;public void setDw(String dw) this.dw = dw;public String getGg() return this.gg;public void setGg(String gg) this.gg = gg;public String getBz() return this.bz;public void setBz(String bz) this.bz = bz;public String getPh() return this.ph;public void setPh(String ph) this.ph = ph;public String getPzwh() return this.pzwh;public void setPzwh(String pzwh) this.pzwh = pzwh;public String getMemo() return this.memo;public void setMemo(String memo) this.memo = memo;public String getGysname() return this.gysname;public void setGysname(String gysname) this.gysname = gysname;public String toString() return getSpname();Overridepublic int hashCode() final int PRIME = 31;int result = 1;result = PRIME * result + (bz = null) ? 0 : bz.hashCode();result = PRIME * result + (cd = null) ? 0 : cd.hashCode();result = PRIME * result + (dw = null) ? 0 : dw.hashCode();result = PRIME * result + (gg = null) ? 0 : gg.hashCode();result = PRIME * result + (gysname = null) ? 0 : gysname.hashCode();result = PRIME * result + (id = null) ? 0 : id.hashCode();result = PRIME * result + (jc = null) ? 0 : jc.hashCode();result = PRIME * result + (memo = null) ? 0 : memo.hashCode();result = PRIME * result + (ph = null) ? 0 : ph.hashCode();result = PRIME * result + (pzwh = null) ? 0 : pzwh.hashCode();result = PRIME * result + (spname = null) ? 0 : spname.hashCode();return result;Overridepublic boolean equals(Object obj) if (this = obj)return true;if (obj = null)return false;if (getClass() != obj.getClass()return false;final TbSpinfo other = (TbSpinfo) obj;if (bz = null) if (other.bz != null)return false; else if (!bz.equals(other.bz)return false;if (cd = null) if (other.cd != null)return false; else if (!cd.equals(other.cd)return false;if (dw = null) if (other.dw != null)return false; else if (!dw.equals(other.dw)return false;if (gg = null) if (other.gg != null)return false; else if (!gg.equals(other.gg)return false;if (gysname = null) if (other.gysname != null)return false; else if (!gysname.equals(other.gysname)return false;if (id = null) if (other.id != null)return false; else if (!id.equals(other.id)return false;if (jc = null) if (other.jc != null)return false; else if (!jc.equals(other.jc)return false;if (memo = null) if (other.memo != null)return false; else if (!memo.equals(other.memo)return false;if (ph = null) if (other.ph != null)return false; else if (!ph.equals(other.ph)return false;if (pzwh = null) if (other.pzwh != null)return false; else if (!pzwh.equals(other.pzwh)return false;if (spname = null) if (other.spname != null)return false; else if (!spname.equals(other.spname)return false;return true;3.Dao公共類(lèi)Dao的全稱(chēng)是Data Access Object,即數(shù)據(jù)訪問(wèn)對(duì)象。本項(xiàng)目中應(yīng)用該名稱(chēng)作為數(shù)據(jù)庫(kù)訪問(wèn)類(lèi)的名稱(chēng),在該類(lèi)中實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的驅(qū)動(dòng)、連接、關(guān)閉和多個(gè)操作數(shù)據(jù)庫(kù)的方法,這些方法包括不同數(shù)據(jù)表的操作方法。在介紹具體的數(shù)據(jù)庫(kù)訪問(wèn)方法之前,先來(lái)看一下Dao類(lèi)的定義,也就是數(shù)據(jù)庫(kù)驅(qū)動(dòng)和連接的代碼。代碼如下public class Dao static Statement sql;static ResultSet res;protected static String dbClassName=com.mysql.jdbc.Driver;protected static String dbUrl=jdbc:mysql:/localhost:3306/db_database28;protected static String dbUser=root;protected static String dbPwd=1003037761;protected static String second = null;public static Connection conn=null; static try if(conn=null) Class.forName(dbClassName).newInstance(); conn = (Connection) DriverManager.getConnection(dbUrl,dbUser,dbPwd); catch(Exception ee) ee.printStackTrace(); 3.4系統(tǒng)登錄模塊設(shè)計(jì)1.設(shè)計(jì)登錄窗體登錄模塊的窗體設(shè)計(jì)由兩部分組成,一部分是登錄窗體,另一部分是窗體中帶背景圖片的內(nèi)容面板。 1.創(chuàng)建內(nèi)容面板public class LoginPanel extends JPanel public int width, height;private Image img;public LoginPanel() super();URL url = getClass().getResource(/res/login.jpg);img = new ImageIcon(url).getImage();protected void paintComponent(Graphics g) super.paintComponent(g);g.drawImage(img, 0, 0, this); 2.創(chuàng)建登錄窗體private LoginPanel getLoginPanel() if (loginPanel = null) jLabel1 = new JLabel();jLabel1.setBounds(new Rectangle(86, 71, 55, 18);jLabel1.setText(密碼:);jLabel = new JLabel();jLabel.setText(用戶(hù)名:);jLabel.setBounds(new Rectangle(85, 41, 56, 18);loginPanel = new LoginPanel();loginPanel.setLayout(null);loginPanel.setBackground(new Color(0xD8DDC7);loginPanel.add(jLabel, null);loginPanel.add(getUserField(), null);loginPanel.add(jLabel1, null);loginPanel.add(getPasswordField(), null);loginPanel.add(getLoginButton(), null);loginPanel.add(getExitButton(), null);return loginPanel;2.密碼文本框在系統(tǒng)登錄窗體的“密碼”文本框中添加了按鍵事件監(jiān)聽(tīng)器,它在獲取到“密碼”文本框輸入的回車(chē)字符時(shí)將執(zhí)行登錄事件,也就是說(shuō)在“密碼”文本框輸入密碼后,按Enter鍵將執(zhí)行與單擊“登錄”按鈕相同的業(yè)務(wù)邏輯。代碼如下:private JPasswordField getPasswordField() if (passwordField = null) passwordField = new JPasswordField();passwordField.setBounds(new Rectangle(143, 69, 125, 22);passwordField.addKeyListener(new KeyAdapter() public void keyTyped(KeyEvent e) if (e.getKeyChar() = n)loginButton.doClick(););return passwordField;3.“登錄”按鈕“登錄”按鈕用于執(zhí)行用戶(hù)名和密碼的驗(yàn)證工作,如果驗(yàn)證用戶(hù)名和密碼有效,則啟動(dòng)系統(tǒng),否則禁止進(jìn)入系統(tǒng)。在“登錄”按鈕的動(dòng)作事件監(jiān)聽(tīng)器中,首先獲取用戶(hù)輸入的用戶(hù)名與密碼信息,然后調(diào)用Dao類(lèi)的checkLogin()方法,如果該方法返回true則登錄成功,否則禁止用戶(hù)登錄,并提示輸入的用戶(hù)名與密碼無(wú)法登錄系統(tǒng)。如圖所示代碼如下:private JButton getLoginButton() if (loginButton = null) loginButton = new JButton();loginButton.setBounds(new Rectangle(109, 114, 48, 20);loginButton.setIcon(new ImageIcon(getClass().getResource(/res/loginButton.jpg);loginButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) try userStr = userField.getText();String passStr = new String(passwordField.getPassword();if (!Dao.checkLogin(userStr, passStr) JOptionPane.showMessageDialog(LoginDialog.this,用戶(hù)名與密碼無(wú)法登錄, 登錄失敗,JOptionPane.ERROR_MESSAGE);return; catch (Exception e1) e1.printStackTrace();mainFrame.setDefaultCloseOperation(EXIT_ON_CLOSE);mainFrame.setVisible(true);MainFrame.getCzyStateLabel().setText(userStr);setVisible(false););return loginButton;3.5系統(tǒng)主窗體設(shè)計(jì)1.設(shè)計(jì)菜單欄本系統(tǒng)的菜單欄是由MenuBar類(lèi)實(shí)現(xiàn)的,該類(lèi)是一個(gè)自定義菜單欄類(lèi),它繼承JMenuBar類(lèi)成為Swing的菜單欄組件。下面以創(chuàng)建進(jìn)貨單菜單為例,。(1)創(chuàng)建MenuBar類(lèi),該類(lèi)繼承javax.swing.JMenuBar類(lèi),并且在該類(lèi)中定義一個(gè)私有的成員變量,類(lèi)型為JMenu,用于表示菜單對(duì)象。(2)編寫(xiě)一個(gè)名稱(chēng)為getJinhuo_Menu()的方法,該方法的返回值為一個(gè)JMenu對(duì)象,也就是一個(gè)菜單對(duì)象。在該方法中,當(dāng)進(jìn)貨菜單對(duì)象為null時(shí),創(chuàng)建一個(gè)菜單對(duì)象,并為其設(shè)置菜單名和快捷鍵。(3)編寫(xiě)一個(gè)初始化菜單欄界面的方法initialize(),在該方法中,首先設(shè)置組件的尺寸,然后調(diào)用JMenuBar對(duì)象的add()方法向菜單欄中添加一個(gè)菜單。(4)編寫(xiě)以下構(gòu)造方法,用于調(diào)用初始化菜單欄界面。(5)在MenuBar類(lèi),再創(chuàng)建一個(gè)JMenuItem類(lèi)型的成員變量jinhuoItem,表示進(jìn)貨菜單項(xiàng)。(6)編寫(xiě)一個(gè)名稱(chēng)為getJinhuoItem()的方法,該方法的返回值為一個(gè)JMenuItem對(duì)象,也就是一個(gè)菜單項(xiàng)對(duì)象。在該方法中,當(dāng)進(jìn)貨單菜單項(xiàng)對(duì)象為null時(shí),創(chuàng)建一個(gè)菜單項(xiàng)對(duì)象,并為其設(shè)置菜單項(xiàng)名、圖標(biāo)和動(dòng)作事件監(jiān)聽(tīng)器。(7)按照步驟(5)和步驟(6)的方法再創(chuàng)建一個(gè)進(jìn)貨退貨菜單項(xiàng)對(duì)象,名稱(chēng)為jinhuo_tuihuoItem。(8)在getJinhuo_Menu()方法中,應(yīng)用JMenu對(duì)象的add()方法向菜單中添加菜單項(xiàng)。2.設(shè)計(jì)工具欄工具欄用于放置常用命令按鈕,如進(jìn)貨單、銷(xiāo)售單、庫(kù)存盤(pán)點(diǎn)等。向本系統(tǒng)中添加工具欄的方法和添加菜單欄的方法類(lèi)似,也需要繼承Swing的JTool組件編寫(xiě)自己的工具欄。當(dāng)然,也可以直接使用Swing的JTool組件。組件的initialize()方法用于初始化工具欄的程序界面。3.設(shè)計(jì)狀態(tài)欄本系統(tǒng)的狀態(tài)欄顯示了當(dāng)前選擇的功能窗體、登錄用戶(hù)名、當(dāng)前日期和本系統(tǒng)所屬公司,即版權(quán)所有者等信息,如下圖所示。3.6銷(xiāo)售單模塊設(shè)計(jì)1.設(shè)計(jì)銷(xiāo)售窗體2.添加銷(xiāo)售商品在銷(xiāo)售單窗體中單擊“添加”按鈕,將向table表格中添加新的空行,操作員可以在空行的第一列字段的商品下拉列表框中選擇銷(xiāo)售的商品,這個(gè)下拉列表框和進(jìn)貨單窗體的不同,它不是根據(jù)供應(yīng)商字段確定選擇框內(nèi)容,而是包含了數(shù)據(jù)庫(kù)中所有可以銷(xiāo)售的商品。要實(shí)現(xiàn)添加銷(xiāo)售商品功能,需要為“添加”按鈕添加動(dòng)作監(jiān)聽(tīng)器,在監(jiān)聽(tīng)器中實(shí)現(xiàn)相應(yīng)的業(yè)務(wù)邏輯。3.銷(xiāo)售統(tǒng)計(jì)和進(jìn)貨單的統(tǒng)計(jì)功能類(lèi)似,銷(xiāo)售單也需要統(tǒng)計(jì)功能,統(tǒng)計(jì)的內(nèi)容包括貨品數(shù)量、品種數(shù)量、合計(jì)金額等信息,實(shí)現(xiàn)方式也是通過(guò)table表格的事件監(jiān)聽(tīng)器來(lái)處理相應(yīng)的統(tǒng)計(jì)業(yè)務(wù),但是銷(xiāo)售單窗體使用的不是PropertyChangeListener屬性改變事件監(jiān)聽(tīng)器,而是使用ContainerListener容器監(jiān)聽(tīng)器。4.商品銷(xiāo)售在銷(xiāo)售單窗體中添加完銷(xiāo)售商品之后,單擊“銷(xiāo)售”按鈕,將完成本次銷(xiāo)售單的銷(xiāo)售業(yè)務(wù)。系統(tǒng)會(huì)記錄本次銷(xiāo)售信息,并從庫(kù)存表中扣除銷(xiāo)售的商品數(shù)量。這些業(yè)務(wù)處理都是在“銷(xiāo)售”按鈕的動(dòng)作監(jiān)聽(tīng)器中完成的,該監(jiān)聽(tīng)器需要獲取銷(xiāo)售單窗體中的所有銷(xiāo)售信息和商品信息,將所有商品信息封裝為銷(xiāo)售明細(xì)表的模型對(duì)象,并將這些模型對(duì)象放到一個(gè)集合中,然后調(diào)用Dao公共類(lèi)的insertSellInfo()方法將該集合與銷(xiāo)售主表的模型對(duì)象保存到數(shù)據(jù)庫(kù)中。初始化表格代碼:private void initTable() String columnNames = 商品名稱(chēng), 商品編號(hào), 供應(yīng)商, 產(chǎn)地, 單位, 規(guī)格, 單價(jià),數(shù)量, 包裝, 批號(hào), 批準(zhǔn)文號(hào) ;(DefaultTableModel) table.getModel().setColumnIdentifiers(columnNames);TableColumn column = table.getColumnModel().getColumn(0);final DefaultCellEditor editor =
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高純銦及氧化銦項(xiàng)目建議書(shū)
- 解剖練習(xí)題庫(kù)(含答案)
- 環(huán)保英雄之路
- 2024-2025學(xué)年人教版高二化學(xué)選擇性必修3配套課件 基礎(chǔ)課時(shí)7 炔烴
- 中級(jí)保育師題庫(kù)及答案
- 電工練習(xí)題庫(kù)
- 管理會(huì)計(jì)(第三版)教案 模塊十 責(zé)任會(huì)計(jì)
- 上地承包轉(zhuǎn)讓合同范例
- 乙方勞動(dòng)合同范例
- 農(nóng)業(yè)建設(shè)合同范例
- 設(shè)計(jì)變更單表格
- 良性前列腺增生診療指南
- 中學(xué)生食品安全教育 主題班會(huì)課件(18張PPT) 上學(xué)期
- 《長(zhǎng)方形和正方形》 完整版課件
- 《乘法交換律和結(jié)合律》教學(xué)課件數(shù)學(xué)四年級(jí)下冊(cè)
- 趣味數(shù)學(xué)-高斯求和 完整版課件
- 花卉生產(chǎn)設(shè)施課件
- 高中體育與健康人教版高中必修全一冊(cè)(新課標(biāo))第十章體操類(lèi)運(yùn)動(dòng)-技巧模塊計(jì)劃
- 云南省主要礦產(chǎn)資源
- 臨床試驗(yàn)疑難問(wèn)題解答
- 光伏發(fā)電工程施工組織設(shè)計(jì)施工工程光伏發(fā)電工程光伏發(fā)電施工組織設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論