計算機(jī)信息管理??飘厴I(yè)論文_第1頁
計算機(jī)信息管理??飘厴I(yè)論文_第2頁
計算機(jī)信息管理專科畢業(yè)論文_第3頁
計算機(jī)信息管理??飘厴I(yè)論文_第4頁
計算機(jī)信息管理專科畢業(yè)論文_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、論文題目 中小型超市管理系統(tǒng)規(guī)劃 學(xué)生姓名 陳銳 學(xué) 號 指導(dǎo)教師 李志軍 專 業(yè) 計算機(jī)信息管理 年 級 2012級 學(xué) 校 浙江電大常山分校 目 錄一 需求分析1(一) 行業(yè)概念的理解1(二) 業(yè)務(wù)流程說明2(三)問題解決方案2(四) 數(shù)據(jù)流圖3二 系統(tǒng)設(shè)計3二 系統(tǒng)設(shè)計4(一)系統(tǒng)模塊的劃分4(二) 數(shù)據(jù)字典4三、程序的設(shè)計與編碼8(一) POS系統(tǒng)的開發(fā)81. 功能及實現(xiàn)方法82. 問題討論:交易流水號的確定9(二)管理信息系統(tǒng)的設(shè)計91.界面設(shè)計92. 各個功能模塊實現(xiàn)的要點和技術(shù)102.1 類繼承與重載102.2 windows消息機(jī)制112.3 關(guān)于權(quán)限設(shè)置122.4 應(yīng)用Del

2、phi顯式事務(wù)控制132.5 存儲過程的使用13參考書錄20中小型超市管理系統(tǒng)規(guī)劃內(nèi)容摘要:中小型超市管理信息系統(tǒng)是一個比較復(fù)雜和全面的管理系統(tǒng),可以完成中小型超市的大部分業(yè)務(wù)??偟膩碚f包括進(jìn)貨管理,物價管理,庫存管理,銷售管理,供貨廠商管理,POS收款機(jī)子系統(tǒng)等。該系統(tǒng)界面樸素一致,但不失美觀大方;操作方便,查詢功能強(qiáng)大;數(shù)據(jù)全面、準(zhǔn)確。系統(tǒng)采用了目前比較流行而技術(shù)非常成熟地客戶機(jī)服務(wù)器結(jié)構(gòu)(C/S),前臺應(yīng)用程序用Delphi開發(fā),后臺數(shù)據(jù)庫是Microsoft SQL Server 2000。關(guān)鍵字: 面向?qū)ο蟮某绦蛟O(shè)計,繼承,WINDOWS消息,存儲過程,事務(wù)一 需求分析(一) 行業(yè)概

3、念的理解POS: Point Of Sells , 電子收款機(jī)系統(tǒng),也就是直接與顧客打交道的收銀機(jī)系統(tǒng)。定單狀態(tài):用來描述商品進(jìn)貨方式,一般分為定單、日配、自采等。定單:表示該商品進(jìn)貨必須先向供貨商發(fā)出定單,供貨商按定單上的商品明細(xì)發(fā)貨,超市則按定單上的商品明細(xì)收貨。日配:指那些每天都要進(jìn)貨的商品或者補(bǔ)貨期較短的商品,例如水果,生鮮蔬菜等。如果按定單,時間不允許而且工作重復(fù)煩瑣。自采:顧名思義,超市自己負(fù)責(zé)商品的進(jìn)貨。銷售狀態(tài):用來描述某種商品當(dāng)前的銷售狀態(tài),一般定義為正常、促銷、折扣等,正常表示商品處于正常的售價狀態(tài),即按正常的售價銷售。促銷:表示超市把某種商品讓利銷售,以此來吸引跟多的消費

4、者。一般低于正常售價甚至成本價。折扣:表示某種商品銷售情況不好,或者商品有瑕疵,或者保質(zhì)期快到等情況發(fā)生時,使盡快商品銷售出去的一種手段。庫存調(diào)整:當(dāng)非因正常銷售發(fā)生而實物數(shù)量變動時,通過調(diào)整庫存使其帳面數(shù)量與實物數(shù)量相符。日處理:當(dāng)一天的銷售結(jié)束后,開始做日處理。把當(dāng)天的銷售數(shù)據(jù)匯總,調(diào)整商品庫存。損益:商品出現(xiàn)損壞,變質(zhì),被盜等情況發(fā)生時,商品發(fā)生損益。損益通過調(diào)整庫存得到體現(xiàn)。商品變價:商品變價與促銷/折扣調(diào)整價格是兩個不同的概念。商品變價是指修改商品的正常售價,調(diào)整后在一定的時間內(nèi)不會在發(fā)生改變。價格可能是升高也可能是降低,一般都是由于進(jìn)價變動引起的。促銷/折扣期: 每一種商品促銷/折

5、扣都有一定的期限,即有一定的時間限制。一種商品不可能無期限的促銷/折扣。當(dāng)期限超過,商品自動恢復(fù)正常售價。毛利、毛利百分比: 毛利商品售價商品進(jìn)價 毛利百分比(商品售價商品進(jìn)價)÷商品售價商品進(jìn)價及成本核算: 在成本核算中,商品成本價的確定一般有最后進(jìn)價,移動加權(quán)平均,按商品批次定價等幾種方式,由于后兩種核算方式較復(fù)雜,本系統(tǒng)采用簡單的最后進(jìn)價方式。(二) 業(yè)務(wù)流程說明在實際管理中,有三種信息流動,即資金流,單據(jù)流和商品實物流。系統(tǒng)圍繞實物流展開,對商品從供應(yīng)商那里進(jìn)貨到商品銷售到顧客手中整個流程進(jìn)行管理。簡單來說,就是商品的進(jìn)銷存管理。每個環(huán)節(jié)通過相應(yīng)的單據(jù)來連接,同時資金發(fā)生流動

6、。在商品管理方面,我們提出部門和商品分類的概念,這種分級管理方式簡潔高效。所謂部門,就是按照商品的基本屬性進(jìn)行分類管理。例如,超市一般可分為食品部,生鮮部,日用品部等。部門下面再分類,所謂商品分類,指按商品的具體屬性劃分,例如,食品部下面可以有糖果餅干類,飲料類等,每個部門和每個商品類別都有相應(yīng)的負(fù)責(zé)人負(fù)責(zé)。中小型超市管理信息系統(tǒng)完全體現(xiàn)了這種管理思想,商品的銷售和商品庫存都可以按部門級和分類級完成查詢等其他操作。作為一個超市的管理人員,及時了解銷售情況是非常必要的,以便及時調(diào)整進(jìn)貨或者安排營銷策略,把握商機(jī)。而中小型超市管理信息系統(tǒng)正好滿足了這一要求,可以實時查詢前臺的銷售情況,并且數(shù)據(jù)準(zhǔn)確

7、可信。(三)問題解決方案超市系統(tǒng)在運行過程中數(shù)據(jù)流量是非常巨大的。有時候會因數(shù)據(jù)流量過大而使網(wǎng)絡(luò)發(fā)生阻塞,使POS系統(tǒng)發(fā)生斷網(wǎng),直接影響銷售活動的進(jìn)行。這種情況是應(yīng)該堅決避免的,應(yīng)該盡量減少網(wǎng)絡(luò)的數(shù)據(jù)流量。這一思想在本系統(tǒng)中的直接體現(xiàn)就是采用日處理和運用本地緩存技術(shù)。日處理的主要目的就是把當(dāng)天的銷售數(shù)據(jù)整理匯總,更新商品庫存表,為第二天的銷售做準(zhǔn)備。與日處理不同的另一種處理方式就是每次商品銷售完成以后就立即更新庫存。但這樣會使得服務(wù)器的負(fù)荷非常的重,經(jīng)常會使POS系統(tǒng)發(fā)生斷網(wǎng)。POS系統(tǒng)銷售商品時所取的商品信息是服務(wù)器上的數(shù)據(jù),有效的保證了數(shù)據(jù)的一致性和集中控制。雖然商品信息來自服務(wù)器,但我們

8、使用了本地緩存。POS系統(tǒng)會把取得的數(shù)據(jù)暫時的存放在本地的內(nèi)存,當(dāng)要讀取商品信息時,會先在本地緩存里查找,如果成功的話,就不必訪問服務(wù)器。這樣一來就有效的減少了網(wǎng)絡(luò)的數(shù)據(jù)流量和服務(wù)器的負(fù)荷。此外,系統(tǒng)充分利用了客戶機(jī)服務(wù)器結(jié)構(gòu)的特點,比較復(fù)雜的查詢更新等操作都用存儲過程來實現(xiàn)。存儲過程在服務(wù)器端執(zhí)行完畢僅返回執(zhí)行結(jié)果,能有效的減少網(wǎng)絡(luò)的通訊流量。(四) 數(shù)據(jù)流圖對整個業(yè)務(wù)活動進(jìn)行分析歸納后,我得出如下的數(shù)據(jù)流圖:數(shù) 據(jù) 流 程 圖審核、打印采購定單商品入庫供應(yīng)商定單信息定單商品入庫單驗收審核結(jié)算應(yīng)付帳款入庫商品庫存變動商品庫存商品信息銷售分析銷售數(shù)據(jù)成本毛利財務(wù)核算商品銷售銷售明細(xì)銷售數(shù)量PO

9、S銷售采購信息采購定單庫存盤點報損、報益采購信息二 系統(tǒng)設(shè)計(一)系統(tǒng)模塊的劃分根據(jù)前面所作的需求分析,我把整個系統(tǒng)分為如下幾個模塊:管理信息系統(tǒng)系 統(tǒng) 管 理收 銀 臺 管 理銷 售 管 理進(jìn) 貨 管 理商 品 管 理供 應(yīng) 商 管 理其 他 管 理庫 存 管 理收 銀 臺 銷 售 (二) 數(shù)據(jù)字典商品入庫單明細(xì)ENTER_GOODS_DETAIL字段名稱數(shù)據(jù)類型描述ENTER_DAN_IDint入庫單IDGOODS_IDint商品IDQUANTITYnumeric(18, 2)入庫數(shù)量AMOUNTnumeric(18, 2)入庫金額STATUSchar(4)審核狀態(tài)WORK_PERSONs

10、mallint操作人員IDWORK_DATEdatetime記帳日期商品信息GOODS_INFO字段名稱數(shù)據(jù)類型描述GOODS_IDint商品IDBAR_IDint商品條形碼GUIGEchar(4)規(guī)格COST_PRICEmoney進(jìn)價BUY_PRICE1money正常售價BUY_PRICE2money促銷/折扣銷售價格LARGE_TYPEsmallint所屬部門號SMALL_TYPEsmallint所屬類別MAX_STOREnumeric(18, 2)最大庫存MIN_STOREnumeric(18, 2)最小庫存GYS_CODEint供應(yīng)商代碼STATUSchar(4)商品進(jìn)貨狀態(tài)FLAGc

11、har(4)促銷/折扣標(biāo)記BUYERint采購員IDVAR_DATEdatetime登記日期供應(yīng)商信息GYS_INFO字段名稱數(shù)據(jù)類型描述GYS_CODEint廠商代碼NAMEvarchar(20)企業(yè)全稱ADDRESSvarchar(20)地址TEL char(20)電話號碼RELATIONchar(10)聯(lián)系人TYPEchar(4)類型BANKchar(4)開戶行ACCOUNTvarchar(20)帳號MENOvarchar(20)備注部門信息LARGE_TYPE字段名稱數(shù)據(jù)類型描述LARGE_TYPE_IDint部門代碼NAMEvarchar(10)部門名稱商品分類信息SMALL_TYP

12、E字段名稱數(shù)據(jù)類型描述SMALL_TYPE_IDint商品分類代碼NAMEvarChar(10)分類名稱人員信息PERSON_INFO字段名稱數(shù)據(jù)類型描述PERSON_IDint人員代碼NAMEvarchar(10)姓名SEXchar(2)性別AGEsmallint年齡DUTYchar(8)職務(wù)DEGREEchar(8)學(xué)歷LOGINvarbinary(20)口令MENOvarchar(20)備注前臺銷售表POS_SALE字段名稱數(shù)據(jù)類型描述GOODS_IDint商品IDBAR_IDvarchar(10)條形碼QUANTITYnumeric(18, 2)銷售數(shù)量AMOUNTmoney銷售金額C

13、ASHERsmallint收銀員IDP_NOint交易流水號收銀臺設(shè)置POS_SET字段名稱數(shù)據(jù)類型描述POS_IDsmallint收銀臺號WORK_PERSONsmallint收銀員ID商品變價記錄表PRICE_ADJUST字段名稱數(shù)據(jù)類型描述GOODS_IDsmallint商品IDCOST_PRICEsmallint商品進(jìn)價LAST_PRICE1money當(dāng)前售價一LAST_PRICE2money當(dāng)前售價二NOW_PRICE1money所調(diào)售價一NOW_PRICE2money所調(diào)售價二ADJUST_REASONvarchar(20)變價原因WORK_PERSONint操作員IDWORK_D

14、ATEdatatime變價日期庫存調(diào)整記錄表STORE_ADJUST字段名稱數(shù)據(jù)類型描述WORK_DATEdatatime記帳日期GOODS_IDint商品IDQUANTITYnumeric(18,2)調(diào)整前數(shù)量AMOUNTmoney調(diào)整前金額ADJUST_QUANTITYnumeric(18,2)調(diào)整數(shù)量DJUST_AMOUNTMoney調(diào)整金額ADJUST_REASONint調(diào)整原因IDWORK_PERSONint操作員ID日處理歷史狀態(tài)DIALY_DAN庫存調(diào)整原因表STORE_ADJUST_REASON字段名稱數(shù)據(jù)類型描述ADJUST_IDint代號NAMEsmallint摘要商品庫存

15、表STORE_DETAIL字段名稱數(shù)據(jù)類型描述GOODS_IDint商品IDQUANTITYnumeric(18,2)數(shù)量AMOUNTmoney金額MENOvarchar(10)備注商品促銷/折扣記錄GOODS_PROMOTE_LOG字段名稱數(shù)據(jù)類型描述WORK_DATEdatatime記帳日期GOODS_IDint商品IDCURRENT_PRICEMoney當(dāng)前售價PROMOTE_PRICEmoney促銷價BEGIN_DATEdatetime開始日期END_DATEdatetime結(jié)束日期WORK_PERSONint操作員權(quán)限表MENU_FLAG字段名稱數(shù)據(jù)類型描述IDsmallint代號N

16、142smallint標(biāo)志字段名稱數(shù)據(jù)類型描述WORK_DATEsmalldatetime日處理時間STATUSchar (4)狀態(tài)WORK_PERSONint操作員ID三、程序的設(shè)計與編碼有了前面的工作,我們選擇就進(jìn)入編碼階段了。(一) POS系統(tǒng)的開發(fā)1. 功能及實現(xiàn)方法POS系統(tǒng)是作為一個單獨的程序開發(fā)的,主要在POS機(jī)上運行,完成商品的交易任務(wù)。銷售的商品信息存儲在POS_SALE表中。我們把一次交易放在一個事務(wù)提交,保證了數(shù)據(jù)的完整性和數(shù)據(jù)的正確性。界面以灰色調(diào)為主,使得收銀員長時間工作眼睛不感到疲勞。收銀的操作也很簡單方便。交易流水號自動增加。當(dāng)某種商品處于促銷或折扣銷售狀態(tài)時,P

17、OS系統(tǒng)自動取商品的促銷或折扣售價,無需人工干預(yù),并且促銷或折扣期結(jié)束時,系統(tǒng)能自動識別恢復(fù)正常售價。這一個功能的實現(xiàn)是通過商品視圖來完成的。請看商品視圖源碼。前臺POS銷售時取商品信息時用到的視圖:CREATE VIEW V_SPXXASSELECT NAME , A.GOODS_ID,A.BAR_ID,A.GUIGE, BUY_PRICE= CASE WHEN (GETDATE()>B.END_DATE AND GETDATE()<B.BEGIN_DATE) OR A.FLAG='正常' THEN A.BUY_PRICE1 WHEN (GETDATE()<

18、B.END_DATE AND GETDATE()>B.BEGIN_DATE) AND A.FLAG='促銷' THEN A.BUY_PRICE2 WHEN (GETDATE()<B.END_DATE AND GETDATE()>B.BEGIN_DATE) AND A.FLAG='折扣' THEN A.BUY_PRICE2 ELSE A.BUY_PRICE1 END FROM GOODS_INFO A ,GOODS_PROMOTE_LOG B WHERE A.GOODS_ID*=B.GOODS_ID交易是在一個事務(wù)里完成的,請看交易完成數(shù)據(jù)提交的

19、代碼:if form_pos.Database1.InTransaction then try form_pos.query1.ApplyUpdates;把本地緩存修改的操作提交服務(wù)器 form_pos.Database1.Commit; 事務(wù)提交 form_pos.query1.CommitUpdates;清空本地緩存 if form_pos.Database1.InTransaction=false thenform_pos.Database1.StartTransaction; except form_pos.Database1.Rollback; 事務(wù)回滾end;2. 問題討論:交易流

20、水號的確定在實際運用中,可能十幾臺甚至幾十臺POS機(jī)同時工作,也就是存在大量的數(shù)據(jù)庫并發(fā)操作。怎樣使交易流水號唯一呢?我是這樣實現(xiàn)的,在每次事務(wù)提交之前,比較本機(jī)的流水號是否在后臺數(shù)據(jù)庫交易流水號中已經(jīng)存在,如果存在,也就是說已經(jīng)被別人占用,則重新取出最大交易流水號,然后提交整個事務(wù)。事務(wù)提交成功以后還要更新本地交易流水號。這是取最大流水號select max(P_NO) as p_no from pos_sale的SQL語句。(二)管理信息系統(tǒng)的設(shè)計1.界面設(shè)計本系統(tǒng)采用了帶導(dǎo)航欄的多文檔窗體設(shè)計風(fēng)格,使操作變的簡單直觀。當(dāng)使用某一個功能模塊時,只顯示相應(yīng)的菜單,使人不會覺得眼花繚亂。系統(tǒng)完

21、全擯棄那種界面花哨,色彩絢麗等華而不實做法,但和傳統(tǒng)的風(fēng)格有有所區(qū)別,傳統(tǒng)的風(fēng)格顯得過于呆板。本系統(tǒng)的界面色調(diào)一致,簡單樸素,但不失美觀大方。窗體界面一致,操作也大同小異,絲毫沒有雜亂無章的感覺。我首先定義了幾個重要的窗體基類,其他的窗體基本上這幾個基類的派生類。在使用時在對窗體進(jìn)行重載。所有的窗體都是在運行時動態(tài)加載的。需要運行那個窗體時,程序才加載該窗體,用完后立即釋放,這樣使用戶計算機(jī)系統(tǒng)資源得以最少得占用。請看一個窗體得創(chuàng)建例子:enter_dan:= Tenter_dan.Create(Self); 入庫單錄入窗體得創(chuàng)建 form_show(enter_dan,555 ,360,10

22、,2); form_show為自定義函數(shù)對所有子窗體顯示我自定義了一個函數(shù)form_show,減少了工作量和代碼量。procedure form_show(form:TForm;fwidth ,fheight,fleft,ftop :integer);begin with form do begin height:=fheight; width:=fwidth; Left:=fleft; top:=ftop; Show; end;end;窗體的釋放實現(xiàn),例如釋放入庫單錄入界面窗體:procedure Tenter_dan.FormClose(Sender: TObject; var Actio

23、n: TCloseAction);begin action:=cafree; 在內(nèi)存中釋放掉窗體end;2. 各個功能模塊實現(xiàn)的要點和技術(shù)這里我只把我在編碼過程中比較重要或者比較有代表性的技術(shù)和部分源碼闡述一下。詳情查看系統(tǒng)的源代碼。2.1 類繼承與重載在編碼過程中,我充分利用了面向?qū)ο缶幊痰奶囟ùa的重用,具體實現(xiàn)起來依靠的是重載和繼承。把具有相同或相似屬性的類抽象出來作為一個基類。我定義了幾個重要的窗體基類,基類窗體包含了需要的公有控件和共有事件方法。其他的窗體基本上這幾個基類的派生類。在使用時在對窗體的控件的屬性和方法進(jìn)行繼承或者重載。關(guān)于在DELPHI方法的重載,例如:procedur

24、e Action7Execute(Sender: TObject); OVERRIDE;procedure Tenter_goods_info.Action7Execute(Sender: TObject);begin try if (dbedit1.Text<>'') and (dbedit2.Text<>'') and (dbedit3.Text<>'')and (dbedit4.Text<>'')then begin query1.Post; addbutton.Enabled

25、:=true; delbutton.Enabled:=true; savebutton.Enabled:=false; end else showmessage('你的輸入不完整!'); except showmessage('代碼重復(fù)!'); end;end;2.2 windows消息機(jī)制當(dāng)查詢窗體要返回結(jié)果時,我們用到了windows消息機(jī)制。首先定義一個全局的自定義消息常量。Const My_WM_USER=WM_USER+100; /自定義消息 向指定的窗體發(fā)送自定義消息,傳遞查詢結(jié)果。例如:procedure Tgoods_info_search.se

26、archbuttonClick(Sender: TObject);begin try price_adjust.Query1.Close; price_adjust.Query1.SQL.Clear; price_adjust.Query1.SQL:=query1.SQL; sendmessage(price_adjust.Handle,My_WM_USER,0,0); except beep; end; close; end;接收消息,并且處理它,例如:定義消息響應(yīng)的方法procedure my_wm_user100(var msg:Tmessage); message My_WM_USER

27、;處理消息:procedure Tgoods_promote.my_wm_user100(var msg:Tmessage) ;begin with query1 doclose;sql.clear;sql.add(sql語句);open;end;2.3 關(guān)于權(quán)限設(shè)置權(quán)限設(shè)置是一個管理系統(tǒng)非常重要的一部分,直接關(guān)系到公司業(yè)務(wù)和財務(wù)安全性。因此,本系統(tǒng)在這方面的功能是較完善的。操作人員的權(quán)限可以定義到每級子菜單。對沒有賦權(quán)限的菜單項不予顯示。也就是說,系統(tǒng)能根據(jù)登陸人員的權(quán)限自動顯示具有權(quán)限的功能菜單。我們把人員的權(quán)限信息存放在MENU_FLAG表中,在系統(tǒng)啟動時加載相關(guān)的權(quán)限設(shè)置信息。權(quán)限設(shè)置

28、這一功能只有高級管理人員和系統(tǒng)管理員才能使用。根據(jù)權(quán)限顯示菜單算法 with damo.query1 do /query1關(guān)聯(lián)MENU_FLAG表 begin close; sql.Clear; sql.Add('select * from menu_flag where id=:id '); ParamByName('id').AsInteger:=person_id; open; end; for i:=1 to 42 do begin flag:=damo.query1.fieldsi.AsInteger;/flag為每項菜單的權(quán)限標(biāo)志 for j:=0

29、to main_form.ComponentCount-1 do begin if (main_form.Componentsj is TMenuItem) and (main_form.Componentsj as TMenuItem).Tag=i-1 ) then if flag = 0 then (main_form.Componentsj as TMenuItem).Visible:=false else (main_form.Componentsj as TMenuItem).Visible:=true; end; end;2.4 應(yīng)用Delphi顯式事務(wù)控制事務(wù)控制是一種能夠把數(shù)據(jù)

30、庫的一組修改作為整體提交給數(shù)據(jù)庫以保證數(shù)據(jù)的一致性和完整性的機(jī)制。如果其中有一個操作失敗,則所有操作失敗。2.5 存儲過程的使用在程序設(shè)計中,系統(tǒng)主要的復(fù)雜的操作我都都是通過存儲過程來實現(xiàn)的。例如:使用庫存調(diào)整操作時,我們用P_ADJUST_STORE來完成。procedure Tadjust_store.okbuttonClick(Sender: TObject);beginif not damo.Database1.InTransaction then damo.Database1.StartTransaction; 開始一個事務(wù) with P_ADJUST_STORE do /P_ADJ

31、UST_STORE為存儲過程 begin Params1.AsInteger:=strtoint(edit_id.Text); Params2.AsFloat:=strtofloat(edit_adjust.Text); Params3.AsInteger:= table1.Fields0.AsInteger ;Params4.AsInteger:= person_id ;/ person_id為全局變量人員ID Prepare; execproc; end; try damo.Database1.Commit; 事務(wù)提交 except begin damo.Database1.Rollbac

32、k; 事務(wù)回滾 showmessage('數(shù)據(jù)提交失敗! '); end; end; 以下是幾種典型存儲過程。日處理存儲過程:CREATE PROCEDURE P_DIALY_DO dialy_date char(12), person_id smallint AS DECLARE goods_id int DECLARE quantity float DECLARE amount money DECLARE temp_cursor CURSOR FORSELECT A.GOODS_ID,SUM(A.QUANTITY),SUM(A.QUANTITY*B.COST_PRICE)

33、FROM POS_SALE A, GOODS_INFO BWHERE convert(char(12),WORK_DATE,102)=dialy_date AND A.GOODS_ID=B.GOODS_ID GROUP BY A.GOODS_ID OPEN temp_cursor FETCH NEXT FROM temp_cursor INTO goods_id, quantity, amount WHILE (FETCH_STATUS=0) BEGIN if EXISTS(SELECT * FROM STORE_DETAIL WHERE GOODS_ID = goods_id) BEGIN

34、UPDATE STORE_DETAILSET QUANTITY=QUANTITY-quantity , AMOUNT=AMOUNT-amountWHERE GOODS_ID = goods_id END FETCH NEXT FROM temp_cursor INTO goods_id,quantity,amount END INSERT DIALY_DAN VALUES( dialy_date,'已做',person_id) CLOSE temp_cursor DEALLOCATE temp_cursor查詢每日商品銷售匯總的存儲過程:CREATE PROCEDURE P_D

35、IALY_SALE ASCREATE TABLE #temp_table(amount float,work_date char(12),sale_cost float,gain float)INSERT INTO #temp_tableSELECT a.amount,convert(char(12),a.work_date,102) AS work_date, (c.cost_price*a.quantity) AS sale_cost, (a.amount-c.cost_price*a.quantity) AS gain FROM pos_sale a,small_type b,goods

36、_info c WHERE a.goods_id=c.goods_id AND c.small_type=b.small_type_idSELECT work_date, sum(amount) AS sum_amount , sum(sale_cost) AS sum_sale_cost , sum( gain ) AS sum_gainFROM #temp_table GROUP BY work_date, ORDER BY work_date商品審核入庫存儲過程CREATE PROCEDURE P_GOODS_ENTER enter_dan_id int AS DECLARE goods

37、_id int DECLARE quantity float DECLARE amount money DECLARE temp_cursor CURSOR FOR SELECT GOODS_ID,QUANTITY,AMOUNT FROM ENTER_GOODS_DETAIL WHERE ENTER_DAN_ID=enter_dan_id OPEN temp_cursor FETCH NEXT FROM temp_cursor INTO goods_id,quantity,amount WHILE (FETCH_STATUS=0) BEGIN if EXISTS(SELECT * FROM S

38、TORE_DETAIL WHERE GOODS_ID = goods_id) BEGIN UPDATE STORE_DETAILSET QUANTITY=QUANTITY+quantity , AMOUNT=AMOUNT+amount WHERE GOODS_ID = goods_id END ELSE BEGIN INSERT STORE_DETAIL VALUES(goods_id,quantity,amount,getdate() END FETCH NEXT FROM temp_cursor INTO goods_id,quantity,amount END CLOSE temp_cu

39、rsor DEALLOCATE temp_cursor查詢部門銷售匯總的存儲過程CREATE PROCEDURE P_SEARCH_DEP_SALE ASCREATE TABLE #temp_table(large_type_id int,dep_name char(10),quantity float,amount float,work_date char(12),sale_cost float,gain float)INSERT INTO #temp_tableSELECT b.large_type_id, AS dep_name, a.quantity,a.amount,co

40、nvert(char(12),a.work_date,102) AS work_date, (c.cost_price*a.quantity) AS sale_cost, (a.amount-c.cost_price*a.quantity) AS gain FORM pos_sale a,large_type b,goods_info c WHERE a.goods_id=c.goods_id AND c.large_type=b.large_type_idSELECT work_date, large_type_id ,dep_name, sum( quantity) AS sum_quan

41、tity , sum(amount) AS sum_amount , sum(sale_cost) AS sum_sale_cost , sum( gain ) AS sum_gainFROM #temp_table GROUP BY work_date, large_type_id ,dep_name ORDER BY work_date查詢商品分類匯總的存儲過程CREATE PROCEDURE P_SEARCH_KIND_SALE ASCREATE TABLE #temp_table(small_type_id int,kind_name char(10),quantity float,a

42、mount float,work_date char(12),sale_cost float,gain float)INSERT INTO #temp_tableSELECT b.small_type_id, AS kind_name, a.quantity,a.amount,convert(char(12),a.word_date,102) AS work_date, (c.cost_price*a.quantity) AS sale_cost, (a.amount-c.cost_price*a.quantity) AS gain FROM pos_sale a,small_ty

43、pe b,goods_info c WHERE a.goods_id=c.goods_id AND c.small_type=b.small_type_idSELECT work_date, small_type_id ,kind_name, sum( quantity) AS sum_quantity , sum(amount) AS sum_amount , sum(sale_cost) AS sum_sale_cost , sum( gain ) AS sum_gainFROM #temp_table GROUP BY work_date, small_type_id ,kind_name ORDER BY work_date查詢商品銷售的存儲過程:CREATE PROCEDURE P_SEARCH_GOODS_SALE ASCREATE TABLE #temp_table(goods_id int,bar_id int,goods_name char(20),guige char(4),quantity float,amount float,work_date char(12),sale_cost float,gain float,gain_rate float)INSERT INTO #temp_tableS

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論