




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
word文檔可自由復(fù)制編輯摘要水泥企業(yè)出貨開票制度是保證水泥企業(yè)正常運(yùn)行的重要措施。本文針對水泥企業(yè)在出貨環(huán)節(jié)對票據(jù)不斷提升的正確性、開放性和規(guī)范性要求,開發(fā)了一個出貨開票系統(tǒng),它綜合采用了網(wǎng)絡(luò)拓?fù)浼夹g(shù)、數(shù)據(jù)安全控制等技術(shù)。系統(tǒng)可以使水泥企業(yè)的各地辦事處在線實(shí)時開票,較好地滿足了票據(jù)分散使用、集中管理的需求。系統(tǒng)基于三層技術(shù)構(gòu)建,具有較強(qiáng)的負(fù)載能力和安全性能,界面友好,使用簡單,運(yùn)行可靠。對水泥企業(yè)的產(chǎn)品種類、產(chǎn)品價格、客戶信息的操作,完全可由用戶完成,操作人員通過在系統(tǒng)上的簡單操作,即可開寫出完整的汽車或者火車發(fā)貨單和相關(guān)工作票。該系統(tǒng)已在衢州虎山集團(tuán)下屬三家企業(yè)投入使用,實(shí)現(xiàn)了全國20多個辦事處票據(jù)的集中、統(tǒng)一的規(guī)范管理,受到了用戶廣泛好評。關(guān)鍵詞:水泥企業(yè),出貨開票,工作票,分散使用,集中管理ABSTRACTTheCementshippingbillingruleistheimportantmeasurethatensuresthecementcirculatesnormally.Aimingatelectriccement\o"查找:enterprise"enterprise
continuouslypromotingsafety,openingandnormativerequestintheshippinglink,thepaperintroducesaCementshippingbillingsystem,whichsynthesizedthenetworktopology,thedatasafetycontrol&replicationandsoon.Systemsatisfiestheneedofthebilldispersionusageandcentralizedmanagement,whiletheofficesofcemententerprisebillingindifferentplaces.Thesystemsetsupby3-tieredarchitecture,havingthestrongerloadabilityandsafefunction,andithastheamityinterface,briefusageandcirculatesreliably.Thecustomercancompletelymakeinitializationworksuchasproductscategory,productsprice,clientinformationtermofmaintenanceetc.Bysimplyoperatinginthesystem,theoperationpersoncanwritethewholecarinvoiceortraininvoiceandRelatedworksheet.ThesystemhasalreadycarriedoutinthreesubsidiarycompaniesinQuzhouTigerMt.TigerGroup,actualizingmorethan20officesconcentratedcirculationandnormativemanagement,anditwassubjectedtocustomerextensivegoodopinion.Keywords:CementEnterprise,ShippingAndBilling,WorkSheet,DispersionUsage,CentralizedManagement
目錄TOC\o"1-3"\h\z摘要 IABSTRACT II第1章引言 11.1背景 11.2研究內(nèi)容 2第2章系統(tǒng)概述與相關(guān)技術(shù) 32.1出貨開票系統(tǒng)概述 32.1.1汽車發(fā)貨單 32.1.2火車發(fā)貨單 32.2系統(tǒng)采用的技術(shù) 32.2.1面向?qū)ο笤O(shè)計 32.2.2B/S三層結(jié)構(gòu) 4第3章需求分析 63.1系統(tǒng)可行性分析 63.2系統(tǒng)性能需求 63.3系統(tǒng)模塊化分析 63.3.1系統(tǒng)參數(shù)模塊 63.3.2商務(wù)模塊 73.3.3財務(wù)模塊 83.3.4開票模塊 93.3.5統(tǒng)計查詢模塊 9第4章數(shù)據(jù)庫設(shè)計 114.1概念結(jié)構(gòu)設(shè)計 114.1.1用戶相關(guān)概念設(shè)計 114.1.2客戶相關(guān)概念設(shè)計 124.1.3出貨開票相關(guān)概念設(shè)計 134.1.4查詢統(tǒng)計相關(guān)概念設(shè)計 134.2邏輯結(jié)構(gòu)設(shè)計 144.3物理結(jié)構(gòu)設(shè)計 22第5章系統(tǒng)設(shè)計與實(shí)現(xiàn) 255.1系統(tǒng)總體設(shè)計與實(shí)現(xiàn) 255.2系統(tǒng)安全性設(shè)計 275.3開票打印功能實(shí)現(xiàn) 285.4特殊格式報表導(dǎo)出的實(shí)現(xiàn) 315.5其他功能的實(shí)現(xiàn) 35第6章結(jié)束語 38致謝 39參考文獻(xiàn) 40第1章引言1.1背景長期以來,我國制造業(yè)與發(fā)達(dá)國家相比還存在著較大的差距,突出的現(xiàn)象就是生產(chǎn)制造損失大、能耗高,設(shè)備運(yùn)轉(zhuǎn)周期短、維修費(fèi)用高,環(huán)境污染嚴(yán)重,能源利用效率低,這些問題在水泥制造業(yè)表現(xiàn)得尤為突出[1]。面對經(jīng)濟(jì)全球化這一機(jī)遇和挑戰(zhàn),我國企業(yè)必須利用信息技術(shù)、管理技術(shù)和自動化技術(shù)加快改革步伐,徹底改變原有的管理模式,加強(qiáng)產(chǎn)品設(shè)計創(chuàng)新能力,提高產(chǎn)品質(zhì)量,降低成本和改善服務(wù),不斷提高自我適應(yīng)能力。因此,基于信息技術(shù)的先進(jìn)管理體系與制造技術(shù)成為企業(yè)競爭的關(guān)鍵所在,水泥制造業(yè)的信息技術(shù)應(yīng)用已經(jīng)成為企業(yè)具備國內(nèi)國際競爭力不可或缺的重要手段[2]。出貨開票系統(tǒng)[3]正是水泥企業(yè)的信息化建設(shè)的有效途徑,通過先進(jìn)的管理思想和計算機(jī)技術(shù)使企業(yè)的財務(wù)和出貨開票管理有機(jī)、高效的結(jié)合在一起[4]。因為水泥企業(yè)出貨開票環(huán)節(jié)是水泥企業(yè)運(yùn)作最后的一個環(huán)節(jié),是設(shè)計業(yè)務(wù)最多的環(huán)節(jié),因此也是最重要的環(huán)節(jié)之一。然而當(dāng)前大多數(shù)水泥企業(yè)仍然采用人員手工開票的方式,該開票方式效率不高,很難適應(yīng)現(xiàn)代化水泥企業(yè)快速、經(jīng)濟(jì)運(yùn)行的要求[5];而由出貨開票系統(tǒng)替手工擬寫汽車火車發(fā)貨單以及相關(guān)工作票,具有節(jié)省填票時間、實(shí)現(xiàn)雙重把關(guān)、填票合格率高、票面清晰整潔、提高運(yùn)行管理水平等優(yōu)勢[6]。更重要的是,出貨開票系統(tǒng)實(shí)現(xiàn)了自動扣款的功能,取消了人工扣款,人工核對財務(wù)的流程,使財務(wù)有序化、清晰化的管理[7]。因此,利用計算機(jī)人出貨開票系統(tǒng)代替手工開寫工作票對于減輕勞動強(qiáng)度,減少開票的出錯率,減少企業(yè)業(yè)務(wù)流程,提高企業(yè)運(yùn)行效率,具有非常重要的意義。1.2研究內(nèi)容本文針對水泥企業(yè)在出貨環(huán)節(jié)對票據(jù)不斷提升的正確性、開放性和規(guī)范性要求,開發(fā)了一套完整的出貨開票系統(tǒng),它綜合采用了網(wǎng)絡(luò)拓?fù)浼夹g(shù)、數(shù)據(jù)安全控制等技術(shù)。利用面向?qū)ο蟮某绦蛟O(shè)計語言具有的繼承、多態(tài)、封裝等多種優(yōu)良特性,把這一技術(shù)運(yùn)用于工作票的知識表示和推理機(jī)的實(shí)現(xiàn),合理抽象出問題域的類,將使得出貨開票系統(tǒng)具有代碼短、易維護(hù)、易修改和易擴(kuò)充的優(yōu)點(diǎn),增強(qiáng)了系統(tǒng)的通用性。因此本文的主要研究的內(nèi)容如下:(1)汽車、火車發(fā)貨單以及相關(guān)工作票一體化設(shè)計,二者統(tǒng)一編碼、統(tǒng)一網(wǎng)絡(luò)拓?fù)?、統(tǒng)一存儲數(shù)據(jù)。減少了票據(jù)數(shù)量與開票流程,提高開票效率。(2)出貨開票系統(tǒng)采用B/S架構(gòu),客戶端瀏覽器可直接通過訪問服務(wù)器的方式進(jìn)行開票操作,可較好解票據(jù)異地分散開出、集中管理的需求。(3)瀏覽器客戶端實(shí)現(xiàn)針式打印機(jī)定位打印,丟棄瀏覽器自帶打印功能,設(shè)計開票系統(tǒng)特定打印功能,提高票據(jù)打印的精確度。(4)出貨開票、自動扣款與報表統(tǒng)計一體化設(shè)計,在出貨開票環(huán)節(jié),自動完成財務(wù)扣款、自動生成報表統(tǒng)計信息。(5)特殊報表的通用化設(shè)計,鑒于對一個特殊報表進(jìn)行一次代碼開發(fā)代價較高,出貨開票系統(tǒng)設(shè)計了一種相對通用的特殊報表導(dǎo)出功能,以減少代碼開發(fā)工作了,提高開發(fā)效率。(6)數(shù)據(jù)安全性設(shè)計,對數(shù)據(jù)庫訪問與用戶登錄密碼進(jìn)行加密,對企業(yè)數(shù)據(jù)的訪問進(jìn)行雙重把關(guān),確保開票系統(tǒng)正常運(yùn)行,確保企業(yè)商業(yè)信息的安全。(7)系統(tǒng)通用性設(shè)計,開發(fā)一套通用性較高的出貨開票系統(tǒng),可適應(yīng)大部分水泥企業(yè)的業(yè)務(wù)流程,盡量降低后續(xù)開發(fā)工作量。(8)開放性設(shè)計,用戶可自行管理出貨開票系統(tǒng),包括企業(yè)結(jié)構(gòu)、產(chǎn)品信息、產(chǎn)品種類、客戶信息以及之間的關(guān)系,可充分保證系統(tǒng)能夠滿足企業(yè)業(yè)務(wù)變更的需求,具備長久生命力。
第2章系統(tǒng)概述與相關(guān)技術(shù)2.1出貨開票系統(tǒng)概述出貨開票操作是一項十分嚴(yán)謹(jǐn)?shù)墓ぷ?,能否正確進(jìn)行開票操作直接影響著水泥企業(yè)的穩(wěn)定銷售,關(guān)系到水泥企業(yè)的高效運(yùn)行[8]。因此要求做到分工明確,以確保開票操作正常運(yùn)作。而且由于汽車出貨開票與火車出貨開票業(yè)務(wù)流程并不一致,因此出貨開票系統(tǒng)將開票模塊劃分為汽車發(fā)貨單、火車發(fā)貨單兩個模塊。2.1.1汽車發(fā)貨單 汽車發(fā)貨單由汽車開票室開出,總共有5聯(lián)單據(jù),由針式打印機(jī)一齊打印,包括企業(yè)存根聯(lián)、提貨聯(lián)、發(fā)貨聯(lián)(客戶存根)、出門聯(lián)、回執(zhí)聯(lián)。其中存根聯(lián)由開票室保管;提貨聯(lián)由倉庫保管;發(fā)貨聯(lián)(客戶存根)由客戶保管;出門聯(lián)由司機(jī)出門時交于保安;回執(zhí)聯(lián)需在客戶收到貨物后簽字,返還到水泥企業(yè),以保管校對。這些單據(jù)主要包含了單據(jù)編號、客戶信息、產(chǎn)品名稱、提貨數(shù)量、出廠編號、車號、開票時間、介紹信等信息。2.1.2火車發(fā)貨單火車發(fā)貨單由火車開票室開出,主要分普通貨運(yùn)單與集裝箱貨運(yùn)單。填好貨運(yùn)單且水泥裝載完畢之后,交到鐵路部門。由鐵路部門確認(rèn)有,將水泥發(fā)往目的站。其中普通貨運(yùn)單主要包含單據(jù)編號、客戶信息、產(chǎn)品名稱、提貨數(shù)量、出廠編號、車號、開票時間、發(fā)貨站、收貨站、上局優(yōu)價號、運(yùn)價下浮百分比。集裝箱貨運(yùn)單除此之外還包括包裝件數(shù)與集裝箱編號。2.2系統(tǒng)采用的技術(shù)2.2.1面向?qū)ο笤O(shè)計面向?qū)ο笫且环N方法,一種思想,同時又是一種技術(shù)[9]。它力求更客觀自然地描述現(xiàn)實(shí)世界,使分析、設(shè)計和實(shí)現(xiàn)系統(tǒng)的方法同認(rèn)識客觀世界的過程盡可能一致。面向?qū)ο蠹夹g(shù)以基本對象模型為單位,將對象內(nèi)部處理細(xì)節(jié)封裝在模型內(nèi)部,重視對象模塊間的接口和對象與外部環(huán)境間的聯(lián)系,能層次清晰地表示企業(yè)全局對象模型??陀^世界中對象是形形色色的,??梢詣澐殖刹煌?,不同類的對象又是千差萬別的。例如自然界中的對象是看得見摸得著的各類實(shí)體,而各類生產(chǎn)活動中的對象則是處理或控制過程,程序設(shè)計中的對象卻是數(shù)據(jù)結(jié)構(gòu)等。把所有這些概括為對象,不難看出他們有以下幾個共同特點(diǎn):某類對象是對現(xiàn)實(shí)世界具有共同特性的某類事物的抽象;對象蘊(yùn)含著許多信息,可以用一組屬性來表征;對象內(nèi)部含有數(shù)據(jù)和對數(shù)據(jù)的操作;對象之間是相互關(guān)聯(lián)和相互作用的。面向?qū)ο蠹夹g(shù),正是利用對現(xiàn)實(shí)世界中對象的抽象和對象之間相互關(guān)聯(lián)合相互作用的描述對現(xiàn)實(shí)世界進(jìn)行模擬,并且使其映射到目標(biāo)系統(tǒng)中。所以,面向?qū)ο蟮奶攸c(diǎn)主要概括為抽象性、繼承性和可重用性[10]。抽象性。指對現(xiàn)實(shí)世界中某一類實(shí)體或事件進(jìn)行抽象,從中提取共同信息,找出共同規(guī)律,反過來又把他們集中在一個集合中,定義為所設(shè)計目標(biāo)系統(tǒng)中的對象。繼承性,或是遺傳性。新的對象類由繼承原有對象類的某些特性或全部特性而產(chǎn)生出來,原有對象類成為父類(或稱超類),新的對象類成為子類(或派生類),子類可以直接繼承父類的共性,又允許子類發(fā)展自己的個性。繼承性簡化了對新的對象類的設(shè)計??芍赜眯?。以前所設(shè)計系統(tǒng)中已使用的對象在新系統(tǒng)分析設(shè)計中重新采用,這樣減少新系統(tǒng)中分析、設(shè)計和編程的工作量。面向?qū)ο缶哂性S多優(yōu)點(diǎn),無論是對于程序設(shè)計者或者用戶來說都是如此。面向?qū)ο鬄檐浖a(chǎn)品擴(kuò)展和質(zhì)量保證中的許多問題提供了解決辦法。這項技術(shù)能夠大大提高程序員的生產(chǎn)力,并可提高軟件的質(zhì)量以及降低其維護(hù)費(fèi)用。本系統(tǒng)采用Java作為開發(fā)工具。其面向?qū)ο蟮脑O(shè)計與編程思想,可視化的開發(fā)環(huán)境,可使我們創(chuàng)建出簡潔、高效的應(yīng)用程序。2.2.2B/S三層結(jié)構(gòu)所謂的軟件體系結(jié)構(gòu)是指軟件的層次結(jié)構(gòu),即三層及兩層結(jié)構(gòu)。良好的體系結(jié)構(gòu)意味著普適、高效和穩(wěn)定。認(rèn)識這些結(jié)構(gòu)的特征并根據(jù)實(shí)際情況進(jìn)行系統(tǒng)的選型,對成功開發(fā)一個管理信息系統(tǒng)是非常關(guān)鍵的。B/S三層結(jié)構(gòu)將應(yīng)用劃分為三層(可以有更多層,但三層最常見):用戶界面層,應(yīng)用邏輯層,數(shù)據(jù)庫層。三層結(jié)構(gòu)計算將數(shù)據(jù)處理過程分為三部分:第一層是客戶端瀏覽器(用戶界面層),提供用戶與系統(tǒng)的友好訪問[11];第二層是應(yīng)用服務(wù)器,專門負(fù)責(zé)商業(yè)邏輯、業(yè)務(wù)邏輯的實(shí)現(xiàn);第三層是數(shù)據(jù)服務(wù)器,負(fù)責(zé)數(shù)據(jù)信息的存儲、訪問及其優(yōu)化。由于業(yè)務(wù)邏輯被提取到應(yīng)用服務(wù)器,大大降低了客戶端負(fù)擔(dān)。三層結(jié)構(gòu)的優(yōu)勢有:首先,通過將整個系統(tǒng)分為不同的邏輯塊,大大降低了應(yīng)用系統(tǒng)開發(fā)和維護(hù)的成本。其次,系統(tǒng)的擴(kuò)展性大大增強(qiáng)。模塊化使得系統(tǒng)很容易在縱向和水平兩個方向拓展:一方面可以將系統(tǒng)升級為更大、更有力的平臺,另一方面也可以適當(dāng)增加規(guī)模來增強(qiáng)系統(tǒng)的網(wǎng)絡(luò)應(yīng)用。第三,系統(tǒng)的可維護(hù)能力大大增強(qiáng)。三層結(jié)構(gòu)的應(yīng)用使邏輯層的變動可以簡單的在應(yīng)用服務(wù)器上的升級調(diào)整,即可完成應(yīng)用系統(tǒng)的更新。第四,系統(tǒng)具有可靠性。三層結(jié)構(gòu)的應(yīng)用,可平滑將系統(tǒng)結(jié)構(gòu)升級成為集群結(jié)構(gòu),使系統(tǒng)具有非常高的穩(wěn)定性,單節(jié)點(diǎn)的系統(tǒng)災(zāi)難不會對系統(tǒng)的數(shù)據(jù)完整性和持續(xù)運(yùn)行時間造成影響。第五,系統(tǒng)具有較高性價比系統(tǒng)。邏輯計算部份集中部署于高性能的應(yīng)用服務(wù)器上,使系統(tǒng)具有非常高的計算性能,減少對客戶機(jī)的機(jī)器成本[12]。結(jié)合出貨開票系統(tǒng)的需要易維護(hù)、可靠性高、集中/分布式運(yùn)行等特點(diǎn),我們采用三層B/S結(jié)構(gòu)??蛻舳诉\(yùn)行時,客戶端瀏覽器將請求發(fā)往服務(wù)器,服務(wù)器將處理結(jié)果送回客戶端瀏覽器,這樣就實(shí)現(xiàn)了分布處理機(jī)制,減少了網(wǎng)絡(luò)上傳輸?shù)拈_銷,提高了應(yīng)用系統(tǒng)的運(yùn)行效率,此外三層結(jié)構(gòu)便于系統(tǒng)的維護(hù)和升級。
第3章需求分析3.1系統(tǒng)可行性分析由于目前客戶公司的所有相關(guān)業(yè)務(wù)都是手工方式操作的,存在效率低,準(zhǔn)確性差,流程控制難等缺點(diǎn),所以積蓄一套適合的軟件來解決這些問題。出貨開票系統(tǒng)是便于解決當(dāng)前公司內(nèi)部客戶管理,集中式開票發(fā)貨管理,財務(wù)支付明細(xì)記錄等環(huán)節(jié)的業(yè)務(wù)需求。出貨開票系統(tǒng)對產(chǎn)品、部門、客戶、財務(wù)、開票出貨、統(tǒng)計進(jìn)行集中式一體化管理,能夠極大提高公司業(yè)務(wù)處理效率與準(zhǔn)確性。3.2系統(tǒng)性能需求出貨開票系統(tǒng)主要滿足以下幾個性能需求:(1)操作簡便:系統(tǒng)操作界面簡潔友善,功能一目了然,操作過程簡單方便,易于上手。(2)可擴(kuò)展性:有較強(qiáng)的可擴(kuò)展性,便于與其他系統(tǒng)集成,便于系統(tǒng)實(shí)時更新升級。(3)易于維護(hù):維護(hù)簡單方便,維護(hù)效率高,維護(hù)成本低。(4)安全性高:有較強(qiáng)的安全性,盡量避免受到攻擊,保證公司內(nèi)部商業(yè)信息的安全。3.3系統(tǒng)模塊化分析經(jīng)過整理分析,將出貨開票系統(tǒng)具體劃分為系統(tǒng)參數(shù)、財務(wù)、商務(wù)、開票、查詢統(tǒng)計等五大模塊,以下將按模塊進(jìn)行具體分析。3.3.1系統(tǒng)參數(shù)模塊系統(tǒng)參數(shù)模塊中,主要維護(hù)系統(tǒng)中一些相對固定不變的信息,主要涉及到組織結(jié)構(gòu)管理、用戶及權(quán)限管理、產(chǎn)品管理、中轉(zhuǎn)庫及庫存管理、車站與收貨單位管理等相關(guān)的功能模塊,具體需求如下:組織機(jī)構(gòu)管理:功能描述:維護(hù)本系統(tǒng)所需的的組織機(jī)構(gòu),包括總經(jīng)理、副總經(jīng)理、綜合部、三家分支企業(yè)、各辦事處以及各辦事處下的各片區(qū)。系統(tǒng)管理員可以根據(jù)實(shí)際需求進(jìn)行調(diào)整組織機(jī)構(gòu)。參與角色:系統(tǒng)管理員。用戶及權(quán)限管理:功能描述:維護(hù)系統(tǒng)用戶及用戶權(quán)限,不同角色在系統(tǒng)中擁有不同的權(quán)限,角色包含:系統(tǒng)管理員,火車開票員,汽車開票員,開票處主任,財務(wù)員,辦公室職員,辦事處人員,辦事處主任,公司領(lǐng)導(dǎo)等。權(quán)限有系統(tǒng)菜單樹自動生成。系統(tǒng)管理員可以根據(jù)實(shí)際需求給不同角色分配不同權(quán)限,給不同用戶分配一個或多個不同的角色。參與角色:系統(tǒng)管理員。產(chǎn)品管理:功能描述:維護(hù)集團(tuán)生產(chǎn)水泥種類,目前已知型號PC.32.5散、PC.32.5紙袋、PC.32.5涂膜袋、PC.32.5復(fù)合袋、PO.42.5散、PO.42.5紙袋、PO.42.5涂膜袋、PO.42.5復(fù)合袋。PO.52.5散、PO.52.5紙袋、PO52.5涂膜袋、PO.52.5復(fù)合袋等。其他特殊水泥品種可以由系統(tǒng)管理員添加。同時系統(tǒng)管理員可以對各級組織機(jī)構(gòu)可以與產(chǎn)品相關(guān)聯(lián),以便于開票操作。參與角色:系統(tǒng)管理員。中轉(zhuǎn)庫及庫存管理:功能描述:維護(hù)個地方辦事處下的中轉(zhuǎn)庫,目前已知中轉(zhuǎn)庫有青田散庫、艮山門散庫、溫州散庫、溫州散庫(糧油專用線)、寧波散庫、莊橋散庫、溫州包裝等。系統(tǒng)管理員可以根據(jù)實(shí)際情況維護(hù)中轉(zhuǎn)庫信息。由于水泥在貯藏過程中會產(chǎn)生損耗,系統(tǒng)管理員可以根據(jù)實(shí)際情況,調(diào)整庫存情況。參與角色:系統(tǒng)管理員。車站與收獲單位管理:功能描述:在火車發(fā)貨的情況中,火車站點(diǎn)與各個站點(diǎn)收貨單位相對固定,管理人員根據(jù)實(shí)際情況管理維護(hù)火車站點(diǎn)與各站點(diǎn)收貨單位,以便于快捷進(jìn)行火車發(fā)貨開票。參與角色:系統(tǒng)管理員、火車開票員。3.3.2商務(wù)模塊商務(wù)模塊中,主要包含客戶檔案的管理與客戶的產(chǎn)品價格的管理。由于不同的客戶在相同的產(chǎn)品上的價格是不相同的,因此必須維護(hù)客戶的產(chǎn)品價格。具體需求如下:客戶檔案管理:功能描述:維護(hù)、查詢、導(dǎo)出客戶相關(guān)信息,包括客戶名稱、扣款客戶、所屬企業(yè)、所屬辦事處、所屬片區(qū)、聯(lián)系方式等相關(guān)信息。參與角色:系統(tǒng)管理員、公司領(lǐng)導(dǎo)、辦公室職員(查詢與導(dǎo)出)、辦事處人員(查詢與導(dǎo)出)、辦事處主任(查詢與導(dǎo)出)??蛻魞r格:功能描述:維護(hù)、查詢、導(dǎo)出與客戶相關(guān)的產(chǎn)品的價格。其中維護(hù)價格包含新增客戶價格、修改與批量修改某客戶價格、刪除與批量刪除客戶價格。參與角色:系統(tǒng)管理員、公司領(lǐng)導(dǎo)、辦公室職員(查詢與導(dǎo)出)、辦事處人員(查詢與導(dǎo)出)、辦事處主任(查詢與導(dǎo)出)。3.3.3財務(wù)模塊財務(wù)模塊中,主要包含客戶收款管理、客戶賬戶管理、財務(wù)流水紀(jì)錄等功能模塊。具體功能需求如下:客戶收款管理:功能描述:維護(hù)、查詢、導(dǎo)出客戶的收款項。收款錄入成功后,將總額計算到客戶賬戶。參與角色:系統(tǒng)管理員、財務(wù)員、公司領(lǐng)導(dǎo)、辦事處人員(查詢與導(dǎo)出)、辦事處主任(查詢與導(dǎo)出)??蛻糍~戶管理:功能描述:維護(hù)、查詢、導(dǎo)出客戶賬戶相關(guān)信息。維護(hù)的信息包含客戶名稱、所屬企業(yè)、是否月結(jié)、信用額度,而不能修改客戶的余額。在余額由差異的情況下,只能通過調(diào)整客戶收款項進(jìn)行調(diào)整客戶余額。參與角色:系統(tǒng)管理員、財務(wù)員、公司領(lǐng)導(dǎo)、辦事處人員(查詢與導(dǎo)出)、辦事處主任(查詢與導(dǎo)出)。財務(wù)流水紀(jì)錄:功能描述:對每一個客戶的每一筆資金的出入進(jìn)行紀(jì)錄,比如:每一次打款、收款的修改、扣款都將新增一條財務(wù)流水紀(jì)錄,確保財務(wù)收支有據(jù)可依。參與角色:系統(tǒng)管理員、財務(wù)員、公司領(lǐng)導(dǎo)、辦事處人員(查詢與導(dǎo)出)、辦事處主任(查詢與導(dǎo)出)。3.3.4開票模塊開票模塊雖然只包含火車發(fā)貨和汽車發(fā)貨兩個功能模塊,但其涉及到的業(yè)務(wù)是最多的,比如:首先,是出貨、開票;其次,是財務(wù)扣款;第三,當(dāng)貨物發(fā)往辦事處時,有可能存在中轉(zhuǎn)庫的入庫等。其主要業(yè)務(wù)流程如圖3-1所示:圖3-1開票作業(yè)流程具體功能需求如下:汽車發(fā)貨:功能描述:汽車發(fā)貨單是汽車發(fā)貨開票處開票員將客戶的每次的提貨信息錄入到系統(tǒng)中,并打印出出貨發(fā)貨單作為發(fā)貨憑證,并扣除相應(yīng)的款項。開票數(shù)據(jù)用于最終的出貨統(tǒng)計。參與角色:開票處主任、汽車開票員?;疖嚢l(fā)貨:功能描述:火車發(fā)貨單較汽車發(fā)貨單有其特殊性,火車發(fā)貨單有兩種情況:1)發(fā)給最終客戶2)發(fā)給辦事處。第一種情況是一種銷售操作,而第二種只是一種移庫操作?;疖嚢l(fā)貨單格式與汽車發(fā)貨單也有差異,一份單據(jù)上可能會有多種貨物。確認(rèn)發(fā)貨后,扣除相應(yīng)的款項,并打印鐵路局貨運(yùn)單。開票數(shù)據(jù)用于最終的出貨統(tǒng)計。參與角色:開票處主任、汽車開票員。3.3.5統(tǒng)計查詢模塊功能描述:統(tǒng)計查詢模塊主要包含對發(fā)貨、入庫明細(xì)、庫存、日月銷售的統(tǒng)計、查詢、導(dǎo)出;并包含了一些具有特定格式報表的導(dǎo)出,如:銷售日報表、銷售月報表、按企業(yè)統(tǒng)計的出廠日報、按地區(qū)分的出廠日報等等。參與角色:所有角色(某些角色只能查看其中部分功能)。
第4章數(shù)據(jù)庫設(shè)計鑒于MySQL具有易用性、分布性、并發(fā)性、數(shù)據(jù)完整性、安全性、數(shù)據(jù)恢復(fù)性等優(yōu)點(diǎn),并得到普遍應(yīng)用,因此本系統(tǒng)采用MySQL作為本系統(tǒng)的數(shù)據(jù)庫。本系統(tǒng)數(shù)據(jù)庫設(shè)計的目標(biāo)是,基于MySQL設(shè)計一個合理的數(shù)據(jù)庫,能夠滿足水泥企業(yè)業(yè)務(wù)的存儲要求,降低系統(tǒng)編程和維護(hù)的難度,提高系統(tǒng)運(yùn)行的性能。因此設(shè)計數(shù)據(jù)庫必須遵循相應(yīng)的規(guī)范與設(shè)計步驟。在數(shù)據(jù)庫設(shè)計規(guī)范方面,首先,要注意命名規(guī)范,良好的命名習(xí)慣,有助于數(shù)據(jù)庫管理的清晰化,程序開發(fā)的簡單化;其次,盡量滿足數(shù)據(jù)庫設(shè)計的范式要求,比如:第一范式、第二范式、第三范式、第四范式等;第三,系統(tǒng)運(yùn)行效率優(yōu)先,必要的時候也可以有適當(dāng)數(shù)據(jù)冗余,以提高系統(tǒng)運(yùn)行效率。在設(shè)計步驟方面,數(shù)據(jù)庫設(shè)計應(yīng)分為以下4個步驟[13]:需求分析;概念結(jié)構(gòu)設(shè)計;邏輯結(jié)構(gòu)設(shè)計;物理結(jié)構(gòu)設(shè)計。需求分析已經(jīng)在上一章中進(jìn)行了詳細(xì)的探討,以下便按照概念結(jié)構(gòu)設(shè)計、邏輯結(jié)構(gòu)設(shè)計、物理結(jié)構(gòu)設(shè)計進(jìn)行分步分析設(shè)計。4.1概念結(jié)構(gòu)設(shè)計對需求分析所獲得的應(yīng)用需求應(yīng)該首先抽象為信息世界的概念結(jié)構(gòu),才能更好、更準(zhǔn)確地用MySQL實(shí)現(xiàn)這些需求。本文將用E-R模型來描述概念模型,并使用PowerDesigner工具來完成E-R圖設(shè)計。以下將按照系統(tǒng)的不同功能,分別設(shè)計E-R圖。4.1.1用戶相關(guān)概念設(shè)計由需求分析所知,與用戶相關(guān)的,主要涉及到用戶所屬部門,以及系統(tǒng)訪問的權(quán)限。因此,此功能與用戶實(shí)體、部門實(shí)體、角色實(shí)體、權(quán)限實(shí)體、通訊錄五個實(shí)體相關(guān)聯(lián),E-R圖設(shè)計如圖4-1所示:圖4-1與用戶相關(guān)功能E-R圖4.1.2客戶相關(guān)概念設(shè)計由需求分析所知,與客戶相關(guān)的功能有:客戶的產(chǎn)品價格、客戶收款、客戶賬戶、財務(wù)流水紀(jì)錄等功能。因此相關(guān)的實(shí)體有:客戶(賬戶)實(shí)體、部門(企業(yè))實(shí)體、用戶實(shí)體、收款項實(shí)體、產(chǎn)品實(shí)體,財務(wù)流水紀(jì)錄實(shí)體等六個實(shí)體。E-R圖設(shè)計如圖4-2所示:圖4-2與客戶相關(guān)功能E-R圖4.1.3出貨開票相關(guān)概念設(shè)計出貨開票是本系統(tǒng)中涉及業(yè)務(wù)做多的功能,相關(guān)的實(shí)體有開票紀(jì)錄、客戶實(shí)體、產(chǎn)品實(shí)體、用戶實(shí)體、部門(企業(yè))實(shí)體,此外在火車發(fā)貨環(huán)節(jié),還涉及到火車貨運(yùn)單實(shí)體、車站實(shí)體、收貨單位實(shí)體等共計八個實(shí)體。E-R圖設(shè)計如圖4-3所示:圖4-3與開票相關(guān)功能E-R圖4.1.4查詢統(tǒng)計相關(guān)概念設(shè)計查詢統(tǒng)計是在出貨開票之后,產(chǎn)生發(fā)貨數(shù)據(jù)、庫存變更、財務(wù)變更等等數(shù)據(jù)變更,對于日銷售報表統(tǒng)計、月銷售報表統(tǒng)計、出廠日報表(按企業(yè)統(tǒng)計)、出廠日報表(按區(qū)域統(tǒng)計)等統(tǒng)計項,涉及到的實(shí)體較多,級聯(lián)查詢會很大程度上影響系統(tǒng)運(yùn)行效率。針對這種情況,專門為統(tǒng)計相關(guān)設(shè)計相應(yīng)的實(shí)體,以方便查詢統(tǒng)計,提高系統(tǒng)運(yùn)行效率。E-R圖設(shè)計如圖4-4所示:圖4-4與查詢統(tǒng)計相關(guān)功能E-R圖4.2邏輯結(jié)構(gòu)設(shè)計根據(jù)4.1節(jié)中所設(shè)計的概念結(jié)構(gòu),邏輯結(jié)構(gòu)設(shè)計就是將E-R圖向關(guān)系模型轉(zhuǎn)換。因此,又上節(jié)分析內(nèi)容進(jìn)一步分析,邏輯結(jié)構(gòu)設(shè)計如下。(1)用戶表:主要用于記錄系統(tǒng)用戶(員工)的基本信息,包含員工姓名,登陸名稱,密碼,性別,員工編號(通訊錄編號)、角色編號等信息。具設(shè)計如表4-1所示:表4-1用戶(hr_staff)字段名稱類型大小非空是否主鍵默認(rèn)描述說明idint√主鍵/外鍵自增用戶編號,同時作為用戶通訊錄的外鍵codevarchar10登陸名稱namevarchar20員工名稱passvarchar30登錄密碼sexint1性別,1-男,2-女roleidint角色編號depidint所屬部門編號(2)通訊錄表:主要記錄用戶的聯(lián)系方式,主要包含電話、手機(jī)、QQ、郵箱、聯(lián)系地址等信息,具體設(shè)計如表4-2所示:表4-2用戶通訊錄(hr_staff_contact)字段名稱類型大小非空是否主鍵默認(rèn)描述說明clientidint√主鍵自增通訊錄編號phonevarchar20電話mobilevarchar20手機(jī)QQvarchar20QQemailvarchar50郵箱addrvarchar100地址(3)角色表:具體設(shè)計如表4-3所示:表4-3角色(sc_role)字段名稱類型大小非空是否主鍵默認(rèn)描述說明idint√主鍵自增角色編號namevarchar20角色名稱remvarchar500備注(4)用戶-角色表:主要記錄用戶與角色之間的關(guān)系。具體設(shè)計如表4-4所示:表4-4用戶-角色(hr_staff_role)字段名稱類型大小非空是否主鍵默認(rèn)描述說明staffidint√主鍵用戶表與角色表的外鍵組成用戶-角色關(guān)系表主鍵。roleidint√(5)權(quán)限(菜單項)表:主要記錄權(quán)限(菜單)相關(guān)信息,具體設(shè)計如表4-5所示:表4-5權(quán)限(菜單項)(sc_target)字段名稱類型大小非空是否主鍵默認(rèn)描述說明idint√主鍵自增權(quán)限(菜單)編號namevarchar50菜單名稱parentidint上級菜單編號sileafint是否為子菜單,0-否,1-是(6)角色-權(quán)限(菜單項)表:主要記錄角色-權(quán)限(菜單)的關(guān)系,具體設(shè)計如表4-6所示:表4-6角色-權(quán)限(菜單項)(sc_role_target)字段名稱類型大小非空是否主鍵默認(rèn)描述說明targetidint√主鍵權(quán)限的外鍵與角色表的外鍵組成角色-權(quán)限關(guān)系表的主鍵。roleidint√(7)部門表:主要記錄公司的組織機(jī)構(gòu),包含部門名稱、部門簡稱、上級部門編號、單位性質(zhì)等信息,具體設(shè)計如表4-7所示:表4-7部門(sc_dep)字段名稱類型大小非空是否主鍵默認(rèn)描述說明idint√主鍵自增部門編號namevarchar50部門名稱parentidint上級部門編號nameshortvarchar20部門簡稱dwxzcodeint1-其他,2-企業(yè),3-辦事處,4-片區(qū),5-中轉(zhuǎn)庫(8)客戶表:主要記錄公司的客戶的詳細(xì)信息,包含姓名、簡稱、是否有效、賬戶余額、扣款客戶、所屬部門、所屬片區(qū)、通訊錄外碼等信息,具體設(shè)計如表4-8所示:表4-8客戶(sc_dwxx)字段名稱類型大小非空是否主鍵默認(rèn)描述說明idint√主鍵/外鍵自增客戶編號,同時做為通訊錄外鍵namevarchar100客戶名稱nameshortvarchar20客戶簡稱flagint是否有效,0-否,1-是amountdecimal(11,2)賬戶余額amountclientidint扣款客戶編號areaidint所屬片區(qū)編號,為部門外碼depidint部門編號,部門外碼contactidint通訊錄編號(9)客戶通訊錄表:主要記錄公司的客戶的通訊信息,主要包含電話、手機(jī)、傳真、郵箱、聯(lián)系地址等信息,具體設(shè)計如表4-9所示:表4-9用戶通訊錄(sc_dwxx_contact)字段名稱類型大小非空是否主鍵默認(rèn)描述說明dwxxidint√主鍵自增通訊錄編號phonevarchar20電話faxvarchar20傳真emailvarchar50郵箱postcodevarchar20郵編addrvarchar100地址(10)產(chǎn)品表:主要記錄公司的產(chǎn)品的信息,包含產(chǎn)品名稱、產(chǎn)品品種、產(chǎn)品種類、包裝方式、同類產(chǎn)品等信息,具體設(shè)計如表4-10所示:表4-10產(chǎn)品(kp_product)字段名稱類型大小非空是否主鍵默認(rèn)描述說明idint√主鍵自增水泥產(chǎn)品編號namevarchar100水泥產(chǎn)品名稱typeint產(chǎn)品品種intensityint產(chǎn)品強(qiáng)度outtypeint包裝方式pricerefint同類產(chǎn)品編號(11)客戶-產(chǎn)品價格表:主要記錄客戶與產(chǎn)品之間的價格上的關(guān)系,對于同一產(chǎn)品不同客戶有不同價格,具體設(shè)計如表4-11所示:表4-11客戶-產(chǎn)品價格(kp_clientprice)字段名稱類型大小非空是否主鍵默認(rèn)描述說明clientidint√主鍵客戶表的外鍵與產(chǎn)品表的外鍵組成角色-權(quán)限關(guān)系表的主鍵。productidint√pricebasedecimal(11,2)產(chǎn)品出廠價pricedecimal(11,2)產(chǎn)品綜合價startdatedate生效日期(12)收款紀(jì)錄表:主要記錄每次客戶收款的信息,包含收款金額、收據(jù)編號、收款事件、客戶外鍵與收款操作員等信息,具體設(shè)計如表4-12所示:表4-12收款紀(jì)錄(kp_gathering)字段名稱類型大小非空是否主鍵默認(rèn)描述說明idint√主鍵自增收款紀(jì)錄編號moneydecimal(11,2)收款金額receiptidvarchar20收據(jù)編號optimedate收款時間clientidint外鍵客戶編號opidint外鍵用戶(操作員)編號(13)財務(wù)流水表:主要記錄每次客戶賬戶的收支的信息,包含產(chǎn)生財務(wù)流水的事件種類,變更金額,賬戶余額,備注,產(chǎn)生變更的時間與操作員編號等信息,具體設(shè)計如表4-13所示:表4-13財務(wù)流水紀(jì)錄(kp_accountlog)字段名稱類型大小非空是否主鍵默認(rèn)描述說明idint√主鍵自增財務(wù)流水編號workidint事件種類balancedecimal(11,2)變更金額amountdecimal(11,2)賬戶余額remvarchar500備注optimedate財務(wù)變更時間opidint外鍵用戶(操作員)編號(14)車站字典表:主要記錄火車發(fā)貨時的目的站信息,包含車站名稱,車站拼音縮寫,列車行駛方向(上行或者下行)等信息,具體設(shè)計如表4-14所示:表4-14車站字典(sc_dict_station)字段名稱類型大小非空是否主鍵默認(rèn)描述說明idint√主鍵自增車站編號namevarchar20車站名稱pyvarchar10車站的拼音縮寫sxxdecimal(11,2)1-上行,2-下行(15)收貨單位表:主要記錄各個火車站點(diǎn)的收貨單位信息,包含收貨單位名稱、單位簡稱、所屬客戶編號等信息,具體設(shè)計如表4-15所示:表4-15收貨單位(kp_client_receiver)字段名稱類型大小非空是否主鍵默認(rèn)描述說明idint√主鍵自增收貨單位編號namevarchar200收貨單位名稱nameshortvarchar100收貨單位簡稱clientidint外鍵所屬客戶編號(16)火車貨運(yùn)單表:主要在火車發(fā)貨的時候記錄火車發(fā)貨的詳細(xì)信息,包含票據(jù)編號、計劃號碼、車種車號、包裝件數(shù)、車載標(biāo)準(zhǔn)重量、上局優(yōu)價、運(yùn)費(fèi)下浮、集裝箱號碼等信息,具體設(shè)計如表4-16所示:表4-16火車貨運(yùn)單(kp_bill_traininfo)字段名稱類型大小非空是否主鍵默認(rèn)描述說明billidint√主鍵運(yùn)貨單編號plancodevarchar20計劃號碼tuckcodevarchar20車種車號packnumint包裝件數(shù)stdweightint車載標(biāo)準(zhǔn)重量sjyjvarchar20上局優(yōu)價問價號碼yfxfint運(yùn)費(fèi)下浮百分比containercodevarchar20集裝箱號碼stationidint外鍵目的站編號reciveridint外鍵收貨單位外鍵(17)中轉(zhuǎn)庫表:主要紀(jì)錄各個辦事處散庫的庫存情況,包含編號、庫存量、所屬散庫、庫存產(chǎn)品,具體設(shè)計如表4-17所示:表4-17出貨開票單(kp_bill_traininfo)字段名稱類型大小非空是否主鍵默認(rèn)描述說明idint√主鍵自增庫存信息編號stockdecimal(11,2)庫存數(shù)量clientidint外鍵所屬散庫編號productidint外鍵產(chǎn)品編號(17)出貨開票單表:主要在汽車、火車發(fā)貨的時候記錄發(fā)貨信息,包含票據(jù)編號、提貨數(shù)量、出廠編號、開票時間、車種車號、是否授權(quán)、標(biāo)記刪除、空車重量、重車重量、是否火車發(fā)運(yùn)、確認(rèn)發(fā)貨、介紹信等信息,具體設(shè)計如表4-18所示:表4-18出貨開票單(kp_bill_traininfo)字段名稱類型大小非空是否主鍵默認(rèn)描述說明idint√主鍵/外鍵自增開票單據(jù)編號,也作為火車發(fā)運(yùn)單外鍵totalnumdecimal(11,2)提貨數(shù)量tuckcodevarchar20車種車號procodevarchar20出廠編號optimedate開票發(fā)貨時間commisionint是否授權(quán)deletedint標(biāo)記刪除emptyweightdecimal(11,2)空車重量fullweightdecimal(11,2)重車重量trainflagint是否火車發(fā)運(yùn)confirmflagint確認(rèn)發(fā)貨introcodevarchar20介紹信相關(guān)信息depidint外鍵開票部門opidint外鍵開票操作員clientidint外鍵提貨客戶productidint外鍵提貨產(chǎn)品編號costdecimal(11,2)綜合扣款costbasedecimal(11,2)水泥扣款4.3物理結(jié)構(gòu)設(shè)計經(jīng)過概念結(jié)構(gòu)設(shè)計和邏輯結(jié)構(gòu)設(shè)計,對數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計如圖4-5,圖4-6,圖4-7,圖4-8所示:圖4-5與用戶相關(guān)功能物理結(jié)構(gòu)圖4-6與客戶相關(guān)功能物理結(jié)構(gòu)圖4-7與出貨開票相關(guān)功能物理結(jié)構(gòu)圖4-8與查詢統(tǒng)計相關(guān)功能物理結(jié)構(gòu)
第5章系統(tǒng)設(shè)計與實(shí)現(xiàn)5.1系統(tǒng)總體設(shè)計與實(shí)現(xiàn)本系統(tǒng)采用B/S架構(gòu)(即Browser/Server,瀏覽器/服務(wù)器架構(gòu)),簡化了系統(tǒng)的開發(fā)、維護(hù)和使用。在代碼開發(fā)上采用MVC模式(即Model模型-View視圖-Controller控制器),以最少的耦合協(xié)同工作,從而提高系統(tǒng)的可擴(kuò)展性及可維護(hù)性。目前以SSH框架(Struts+Spring+Hibernate)為MVC最流行的實(shí)現(xiàn)方式。但本系統(tǒng)以SpringMVC與DWR(Ajax框架)代替Struts作為Controller層,提高了代碼的重用,加快了開發(fā)的速度;并加入了iBATIS,與Hibernate各取所長,提高系統(tǒng)性能。其實(shí)現(xiàn)方式配置如下:(1)DWR配置:web.xml中配置如下: <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <init-param><param-name>crossDomainSessionSecurity</param-name><param-value>false</param-value></init-param> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>(2)SpringMVC配置: <!--VIEWDEFINITIONS--> <beanid="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <propertyname="viewClass"value="org.springframework.web.servlet.view.JstlView"/> <propertyname="prefix"value=""/> <propertyname="suffix"value=""/> </bean> <!--DEFINITIONSOFPUBLICCONTROLLERS--> <beanid="defaultHandlerMapping"class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>(3)Spring與Hibernate配置:web.xml中配置如下: <context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/app*.xml</param-value></context-param> <filter><filter-name>OpenSessionInViewFilter</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class><init-param> <param-name>singleSession</param-name> <param-value>true</param-value></init-param></filter><filter-mapping><filter-name>OpenSessionInViewFilter</filter-name><url-pattern>*.do</url-pattern></filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>app.xml中配置如下:<beanid="myDataSource"class="mons.dbcp.BasicDataSource"> <propertyname="driverClassName"><value>com.mysql.jdbc.Driver</value></property> <propertyname="url"><value>${db.url}</value></property> <propertyname="username"><value>${db.user}</value></property> <propertyname="password"><value>${db.password}</value></property> <propertyname="maxActive"><value>5</value></property> <propertyname="initialSize"><value>5</value></property> <propertyname="testOnBorrow"><value>true</value></property> <propertyname="validationQuery"><value>select1</value></property> </bean> <beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <propertyname="dataSource"> <refbean="myDataSource"/> </property> <propertyname="configLocation"> <value>classpath:hib.cfg.xml</value> </property></bean>經(jīng)過以上的配置,系統(tǒng)的總體框架基本成型,可以開始進(jìn)行具體功能開發(fā)。5.2系統(tǒng)安全性設(shè)計系統(tǒng)運(yùn)行的安全是一個企業(yè)信息管理的基本保障,本系統(tǒng)從以下兩方面進(jìn)行考慮:(1)對數(shù)據(jù)庫訪問進(jìn)行加密。在程序訪問數(shù)據(jù)庫時,數(shù)據(jù)庫的用戶名與密碼往往容易暴露,因此本系統(tǒng)在訪問數(shù)據(jù)庫前對數(shù)據(jù)庫的用戶名與密碼進(jìn)行加密,需要訪問時,先對用戶名密碼進(jìn)行解密,然后訪問數(shù)據(jù)庫。實(shí)現(xiàn)方式為,繼承org.springframework.orm.hibernate3.LocalSessionFactoryBean工廠類,然后重寫setDataSource方法,代碼如下:publicclassDLSessionFactoryBeanextendsLocalSessionFactoryBean{ publicvoidsetDataSource(DataSourceds){ BasicDataSourcebds=(BasicDataSource)ds; bds.setUsername(DLKeyHandler.decrypt(bds.getUsername())); bds.setPassword(DLKeyHandler.decrypt(bds.getPassword())); super.setDataSource(bds);}然后,修改app.xml配置如下:<beanid="sessionFactory"class="tloa.service.DLSessionFactoryBean"> <propertyname="dataSource"> <refbean="myDataSource"/> </property> <propertyname="configLocation"> <value>classpath:hib.cfg.xml</value> </property></bean>最后,修改在perties文件中將數(shù)據(jù)庫的用戶名與密碼改為加密后的字符串。將db.user=rootdb.password=CottonXu修改為db.user=--D/JcZ/wbufVdGn6uP1zu0g==db.password=--NjtIleOVSPVxrA+EqGOsIpfHyWea674E。如此便實(shí)現(xiàn)了對數(shù)據(jù)庫訪問的加密,不容易暴露數(shù)據(jù)庫的用戶名與密碼。(2)對用戶登錄進(jìn)行加密。將用戶的密碼進(jìn)行加密后存入數(shù)據(jù)庫,登錄時,對密碼進(jìn)行加密驗證。實(shí)現(xiàn)方式如下:publicstaticStringgetEncryptedPass(StringuserPass)throwsNoSuchAlgorithmException{ MessageDigestalg=MessageDigest.getInstance("SHA-1"); alg.update(userPass.getBytes()); byte[]b=alg.digest(); returnBase64.encode(b);}其中數(shù)據(jù)庫中密碼項如圖5-1中“pass”列所示:圖5-1加密后密碼樣式截圖5.3開票打印功能實(shí)現(xiàn)由于客戶需要在不同特定格式的票據(jù)上進(jìn)行打印,因此調(diào)用操作系統(tǒng)打印當(dāng)前網(wǎng)頁的API并不能完美的實(shí)現(xiàn)定位打?。〝?shù)據(jù)從服務(wù)端發(fā)送過來,并沒有顯示在網(wǎng)頁上)。因此要設(shè)計一個在客戶端運(yùn)行定位打印功能的控件。本系統(tǒng)設(shè)計了一個具有定位打印功能的Applet,能夠完美實(shí)現(xiàn)客戶端的定位打印功能。具體設(shè)計實(shí)現(xiàn)如下:publicclassBillPrintAppletextendsAppletimplementsPrintable{ publicstaticSimpleDateFormatsdf2=newSimpleDateFormat("yyyy-MM-dd"); publicvoidstart(){ }/**Themethodisdeclaredinsuperinterfacemustinitit.*Graphic指明打印的圖形環(huán)境;PageFormat指明打印頁格式(頁面大小以點(diǎn)為計量單位,1點(diǎn)為1英寸的1/72,1英寸為25.4毫米。A4紙大致為595*842點(diǎn));page指明頁號;*/publicintprint(Graphicsgp,PageFormatpf,intpage)throwsPrinterException{ Graphics2Dg2=(Graphics2D)gp; g2.setPaint(Color.black);//設(shè)置打印顏色為黑色 if(page>=PAGES)//當(dāng)打印頁號大于需要打印的總頁數(shù)時,打印工作結(jié)束 returnPrintable.NO_SUCH_PAGE; g2.translate(pf.getImageableX(),pf.getImageableY());//轉(zhuǎn)換坐標(biāo),確定打印邊界 Fontfont=newFont("宋體",Font.BOLD,10);//創(chuàng)建字體 g2.setFont(font); //打印,從出庫單號獲取內(nèi)容; intxstart=22,ystart=51; introwspan=28,colspan1=120,colspan2=95,colspan3=90;// 顯示第1列的內(nèi)容(5行); introwid=1; if(optime==null){ SimpleDateFormatsdf=newSimpleDateFormat("yyyy年MM月dd日"); optime=sdf.format(newDate()); } g2.drawString(optime,xstart,ystart); //客戶名稱 if(clientname==null)clientname=""; g2.drawString(clientname,xstart,ystart+rowspan*(rowid++)); if(oper==null)oper=""; g2.drawString(oper,xstart,ystart+rowspan*6); returnPrintable.PAGE_EXISTS;//存在打印頁時,繼續(xù)打印工作}//打印內(nèi)容到指定位置publicvoidprintContent(){ System.out.println("MyAppletprintcontent...");PAGES=1;//獲取打印總頁數(shù)//定位默認(rèn)的打印服務(wù)PrintServiceprintService=PrintServiceLookup.lookupDefaultPrintService();//創(chuàng)建打印作業(yè)DocPrintJobjob=printService.createPrintJob();//設(shè)置打印屬性PrintRequestAttributeSetpras=newHashPrintRequestAttributeSet();//設(shè)置紙張大小,也可以新建MediaSize類來自定義大小pras.add(MediaSizeName.ISO_A4);DocAttributeSetdas=newHashDocAttributeSet();//指定打印輸出格式DocFlavorflavor=DocFlavor.SERVICE_FORMATTED.PRINTABLE;javax.print.Docdoc=newSimpleDoc(this,flavor,das);System.out.println("MyApplet2...");//javax.print.Docdoc=newSimpleDoc(str,DocFlavor.STRING.TEXT_PLAIN,das);//不顯示打印對話框,直接進(jìn)行打印工作try{job.print(doc,pras);//進(jìn)行每一頁的具體打印操作}catch(PrintExceptionpe){ System.out.println("pe--"+pe.getMessage());pe.printStackTrace();}}}虛擬打印效果(沒有打印在票據(jù)上)如圖5-2,圖5-3,圖5-4所示:圖5-2汽車發(fā)貨單打印效果圖5-3火車發(fā)貨單1打印效果圖5-4火車發(fā)貨單2打印效果5.4特殊格式報表導(dǎo)出的實(shí)現(xiàn) 針對水泥企業(yè)特殊格式的報表較多,一個報表做一次代碼開發(fā)代價較高的情況,本系統(tǒng)設(shè)計了一個對特殊報表相對通用的導(dǎo)出功能。主要實(shí)現(xiàn)方式為:首先,為特殊報表設(shè)計一個Excel表格模板;其次,用XML對Excel中的行和列進(jìn)行定位和Sql語句的指定;最后用一段通用的代碼讀取Excel模板和XML文件,執(zhí)行導(dǎo)出功能。具體實(shí)現(xiàn)如下:/*** 按照excel模板導(dǎo)出*/publicvoidexportByExample(StringrealPath,Stringname,OutputStreamos,Mapmap){ try{ //從模板讀入格式 Workbookwb=Workbook.getWorkbook(newFile(realPath+"/export/"+name+".xls")); //將模板數(shù)據(jù)寫入數(shù)據(jù)流os WritableWorkbookworkbook=Workbook.createWorkbook(os,wb); WritableSheetsheet=workbook.getSheet(0); setFormat(); //從xml中讀取數(shù)據(jù),按照xml中指定的格式將數(shù)據(jù)寫入excel sheet=writeDataByXml(sheet,realPath+"/export/"+name+".xml",map); workbook.write(); workbook.close(); wb.close(); }catch(Exceptione){ e.printStackTrace(); }}/***按照xml將數(shù)據(jù)寫入到excel*/publicWritableSheetwriteDataByXml(WritableSheetsheet,StringxmlPath,Mapmap)throwsException{ //獲取一級子節(jié)點(diǎn) Iteratori_root=root.elementIterator(); while(i_root.hasNext()){ Elemente=(Element)i_root.next(); StringeName=e.getName(); //導(dǎo)出日期 if("date".equals(eName)){ introw=Integer.parseInt(e.attributeValue("row")); intcol=Integer.parseInt(e.attributeValue("col")); lab=newLabel(col,row,DateHandler.sdf7.format(DateHandler.sdf2.parse((String)map.get("date"))),format4); sheet.addCell(lab); } elseif("data".equals(eName)){ }else{ map.put(a.getName(),a.getValue()); } } result=(Double)AppUtil.sqlMap.queryForObject(col.attributeValue("sql"),map); num=newjxl.write.Number(colid,rowid,result,format6); //lab=newLabel(colid,rowid,result,format4); sheet.addCell(newjxl.write.Number(colid,rowid,result,format6)); } } } } returnsheet;}以下以銷售月報表舉例說明。報表格式如圖5-5所示:圖5-5銷售月報表模板局部XML配置如下:<root> <monthrow="1"col="0"/> <data> <colcolid="2"depCondition="sc_dwxx.areaid=60"sql="getDataByMonth"> <rowrowid="9"target="sum(kp_day_sum.totalnum12)"company="kp_day_sum.depid=53"/> <rowrowid="10"target="sum(kp_day_sum.totalnum13)"company="kp_day_sum.depid=53"/> <r
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45128-2025塑料含水量的測定
- 溝槽支撐施工方案
- 數(shù)字監(jiān)控施工方案
- 市政消防施工方案
- 橫向路基銜接施工方案
- 用房施工方案
- 2025年度車輛借出免責(zé)與環(huán)保責(zé)任協(xié)議
- 二零二五年度雙向轉(zhuǎn)診醫(yī)療綜合管理與服務(wù)合同
- 二零二五年度中式燒烤連鎖品牌加盟合同
- 二零二五年度校園體育賽事志愿者招募培訓(xùn)合同
- 中藥制劑檢驗的依據(jù)和程序
- 塔式起重機(jī)操作使用安全專項方案
- 統(tǒng)計用產(chǎn)品分類目錄
- 冀教版小學(xué)數(shù)學(xué)三年級下冊小數(shù)的初步認(rèn)識
- 野外生存優(yōu)秀課件
- 五四運(yùn)動課件完整版
- 用友財務(wù)共享實(shí)施案例:財務(wù)共享服務(wù)中心項目方案-碧桂園項目組V1.5
- 安全設(shè)計診斷報告樣本
- 口腔醫(yī)學(xué)美學(xué)基礎(chǔ)
- 【小學(xué)語文 】魯濱遜漂流記導(dǎo)讀課(課件)六年級下冊語文部編版
- 致遠(yuǎn)a6協(xié)同管理軟件v7.0sp3用戶操作手冊
評論
0/150
提交評論