精品資料(2021-2022年收藏的)計(jì)算機(jī)信息管理??飘厴I(yè)論文要點(diǎn)_第1頁(yè)
精品資料(2021-2022年收藏的)計(jì)算機(jī)信息管理??飘厴I(yè)論文要點(diǎn)_第2頁(yè)
精品資料(2021-2022年收藏的)計(jì)算機(jī)信息管理專科畢業(yè)論文要點(diǎn)_第3頁(yè)
精品資料(2021-2022年收藏的)計(jì)算機(jī)信息管理??飘厴I(yè)論文要點(diǎn)_第4頁(yè)
精品資料(2021-2022年收藏的)計(jì)算機(jī)信息管理??飘厴I(yè)論文要點(diǎn)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

12、MALL_TYPE字段名稱數(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)備注前臺(tái)銷售表POS_SALE字段名稱數(shù)據(jù)類型描述GOODS_IDint商品IDBAR_IDvarchar(10)條形碼QUANTITYnumeric(18, 2)銷售數(shù)量AMOUNTmo

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

14、IDWORK_DATEdatatime變價(jià)日期庫(kù)存調(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庫(kù)存調(diào)整原因表STORE_ADJUST_REASON字段名稱數(shù)據(jù)類型描述ADJUST_IDint代號(hào)NAMEsmalli

15、nt摘要商品庫(kù)存表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)前售價(jià)PROMOTE_PRICEmoney促銷價(jià)BEGIN_DATEdatetime開始日期END_DATEdatetime結(jié)束日期WORK_PERSONint操作員權(quán)限表MENU_FLAG字段名稱數(shù)據(jù)類型描述IDsma

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

17、扣銷售狀態(tài)時(shí),POS系統(tǒng)自動(dòng)取商品的促銷或折扣售價(jià),無(wú)需人工干預(yù),并且促銷或折扣期結(jié)束時(shí),系統(tǒng)能自動(dòng)識(shí)別恢復(fù)正常售價(jià)。這一個(gè)功能的實(shí)現(xiàn)是通過(guò)商品視圖來(lái)完成的。請(qǐng)看商品視圖源碼。前臺(tái)POS銷售時(shí)取商品信息時(shí)用到的視圖: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()B.BEGIN_DATE)

18、AND A.FLAG=促銷 THEN A.BUY_PRICE2 WHEN (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交易是在一個(gè)事務(wù)里完成的,請(qǐng)看交易完成數(shù)據(jù)提交的代碼:if form_pos.Database1.InTransaction then try form_pos.query1.ApplyUpdates;把本地緩存修改的操作提交服務(wù)器 f

19、orm_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. 問題討論:交易流水號(hào)的確定在實(shí)際運(yùn)用中,可能十幾臺(tái)甚至幾十臺(tái)POS機(jī)同時(shí)工作,也就是存在大量的數(shù)據(jù)庫(kù)并發(fā)操作。怎樣使交易流水號(hào)唯一呢?我是這樣實(shí)現(xiàn)的,在每次事務(wù)提交之前,比較本機(jī)的流水號(hào)是否在后臺(tái)數(shù)據(jù)庫(kù)交

20、易流水號(hào)中已經(jīng)存在,如果存在,也就是說(shuō)已經(jīng)被別人占用,則重新取出最大交易流水號(hào),然后提交整個(gè)事務(wù)。事務(wù)提交成功以后還要更新本地交易流水號(hào)。這是取最大流水號(hào)select max(P_NO) as p_no from pos_sale的SQL語(yǔ)句。(二)管理信息系統(tǒng)的設(shè)計(jì)1.界面設(shè)計(jì)本系統(tǒng)采用了帶導(dǎo)航欄的多文檔窗體設(shè)計(jì)風(fēng)格,使操作變的簡(jiǎn)單直觀。當(dāng)使用某一個(gè)功能模塊時(shí),只顯示相應(yīng)的菜單,使人不會(huì)覺得眼花繚亂。系統(tǒng)完全擯棄那種界面花哨,色彩絢麗等華而不實(shí)做法,但和傳統(tǒng)的風(fēng)格有有所區(qū)別,傳統(tǒng)的風(fēng)格顯得過(guò)于呆板。本系統(tǒng)的界面色調(diào)一致,簡(jiǎn)單樸素,但不失美觀大方。窗體界面一致,操作也大同小異,絲毫沒有雜亂無(wú)章

21、的感覺。我首先定義了幾個(gè)重要的窗體基類,其他的窗體基本上這幾個(gè)基類的派生類。在使用時(shí)在對(duì)窗體進(jìn)行重載。所有的窗體都是在運(yùn)行時(shí)動(dòng)態(tài)加載的。需要運(yùn)行那個(gè)窗體時(shí),程序才加載該窗體,用完后立即釋放,這樣使用戶計(jì)算機(jī)系統(tǒng)資源得以最少得占用。請(qǐng)看一個(gè)窗體得創(chuàng)建例子:enter_dan:= Tenter_dan.Create(Self); 入庫(kù)單錄入窗體得創(chuàng)建 form_show(enter_dan,555 ,360,10,2); form_show為自定義函數(shù)對(duì)所有子窗體顯示我自定義了一個(gè)函數(shù)form_show,減少了工作量和代碼量。procedure form_show(form:TForm;fwidt

22、h ,fheight,fleft,ftop :integer);begin with form do begin height:=fheight; width:=fwidth; Left:=fleft; top:=ftop; Show; end;end;窗體的釋放實(shí)現(xiàn),例如釋放入庫(kù)單錄入界面窗體:procedure Tenter_dan.FormClose(Sender: TObject; var Action: TCloseAction);begin action:=cafree; 在內(nèi)存中釋放掉窗體end;2. 各個(gè)功能模塊實(shí)現(xiàn)的要點(diǎn)和技術(shù)這里我只把我在編碼過(guò)程中比較重要或者比較有代表性的

23、技術(shù)和部分源碼闡述一下。詳情查看系統(tǒng)的源代碼。2.1 類繼承與重載在編碼過(guò)程中,我充分利用了面向?qū)ο缶幊痰奶囟ùa的重用,具體實(shí)現(xiàn)起來(lái)依靠的是重載和繼承。把具有相同或相似屬性的類抽象出來(lái)作為一個(gè)基類。我定義了幾個(gè)重要的窗體基類,基類窗體包含了需要的公有控件和共有事件方法。其他的窗體基本上這幾個(gè)基類的派生類。在使用時(shí)在對(duì)窗體的控件的屬性和方法進(jìn)行繼承或者重載。關(guān)于在DELPHI方法的重載,例如:procedure Action7Execute(Sender: TObject); OVERRIDE;procedure Tenter_goods_info.Action7Execute(Sender:

24、 TObject);begin try if (dbedit1.Text) and (dbedit2.Text) and (dbedit3.Text)and (dbedit4.Text)then begin query1.Post; addbutton.Enabled:=true; delbutton.Enabled:=true; savebutton.Enabled:=false; end else showmessage(你的輸入不完整!); except showmessage(代碼重復(fù)!); end;end;2.2 windows消息機(jī)制當(dāng)查詢窗體要返回結(jié)果時(shí),我們用到了windows

25、消息機(jī)制。首先定義一個(gè)全局的自定義消息常量。Const My_WM_USER=WM_USER+100; /自定義消息 向指定的窗體發(fā)送自定義消息,傳遞查詢結(jié)果。例如:procedure Tgoods_info_search.searchbuttonClick(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);

26、 except beep; end; close; end;接收消息,并且處理它,例如:定義消息響應(yīng)的方法procedure my_wm_user100(var msg:Tmessage); message My_WM_USER;處理消息:procedure Tgoods_promote.my_wm_user100(var msg:Tmessage) ;begin with query1 doclose;sql.clear;sql.add(sql語(yǔ)句);open;end;2.3 關(guān)于權(quán)限設(shè)置權(quán)限設(shè)置是一個(gè)管理系統(tǒng)非常重要的一部分,直接關(guān)系到公司業(yè)務(wù)和財(cái)務(wù)安全性。因此,本系統(tǒng)在這方面的功能是較完

27、善的。操作人員的權(quán)限可以定義到每級(jí)子菜單。對(duì)沒有賦權(quán)限的菜單項(xiàng)不予顯示。也就是說(shuō),系統(tǒng)能根據(jù)登陸人員的權(quán)限自動(dòng)顯示具有權(quán)限的功能菜單。我們把人員的權(quán)限信息存放在MENU_FLAG表中,在系統(tǒng)啟動(dòng)時(shí)加載相關(guān)的權(quán)限設(shè)置信息。權(quán)限設(shè)置這一功能只有高級(jí)管理人員和系統(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; op

28、en; end; for i:=1 to 42 do begin flag:=damo.query1.fieldsi.AsInteger;/flag為每項(xiàng)菜單的權(quán)限標(biāo)志 for j:=0 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 el

29、se (main_form.Componentsj as TMenuItem).Visible:=true; end; end;2.4 應(yīng)用Delphi顯式事務(wù)控制事務(wù)控制是一種能夠把數(shù)據(jù)庫(kù)的一組修改作為整體提交給數(shù)據(jù)庫(kù)以保證數(shù)據(jù)的一致性和完整性的機(jī)制。如果其中有一個(gè)操作失敗,則所有操作失敗。2.5 存儲(chǔ)過(guò)程的使用在程序設(shè)計(jì)中,系統(tǒng)主要的復(fù)雜的操作我都都是通過(guò)存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)的。例如:使用庫(kù)存調(diào)整操作時(shí),我們用P_ADJUST_STORE來(lái)完成。procedure Tadjust_store.okbuttonClick(Sender: TObject);beginif not damo.Data

30、base1.InTransaction then damo.Database1.StartTransaction; 開始一個(gè)事務(wù) with P_ADJUST_STORE do /P_ADJUST_STORE為存儲(chǔ)過(guò)程 begin Params1.AsInteger:=strtoint(edit_id.Text); Params2.AsFloat:=strtofloat(edit_adjust.Text); Params3.AsInteger:= table1.Fields0.AsInteger ;Params4.AsInteger:= person_id ;/ person_id為全局變量人員

31、ID Prepare; execproc; end; try damo.Database1.Commit; 事務(wù)提交 except begin damo.Database1.Rollback; 事務(wù)回滾 showmessage(數(shù)據(jù)提交失??! ); end; end; 以下是幾種典型存儲(chǔ)過(guò)程。日處理存儲(chǔ)過(guò)程:CREATE PROCEDURE P_DIALY_DO dialy_date char(12), person_id smallint AS DECLARE goods_id int DECLARE quantity float DECLARE amount money DECLARE t

32、emp_cursor CURSOR FORSELECT A.GOODS_ID,SUM(A.QUANTITY),SUM(A.QUANTITY*B.COST_PRICE) 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_ST

33、ATUS=0) BEGIN if EXISTS(SELECT * FROM STORE_DETAIL WHERE GOODS_ID = goods_id) BEGIN 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) CL

34、OSE temp_cursor DEALLOCATE temp_cursor查詢每日商品銷售匯總的存儲(chǔ)過(guò)程:CREATE PROCEDURE P_DIALY_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.

35、amount-c.cost_price*a.quantity) AS gain FROM pos_sale a,small_type b,goods_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

36、商品審核入庫(kù)存儲(chǔ)過(guò)程CREATE PROCEDURE P_GOODS_ENTER enter_dan_id int AS DECLARE goods_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

37、_id,quantity,amount WHILE (FETCH_STATUS=0) BEGIN if EXISTS(SELECT * FROM STORE_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 F

38、ETCH NEXT FROM temp_cursor INTO goods_id,quantity,amount END CLOSE temp_cursor DEALLOCATE temp_cursor查詢部門銷售匯總的存儲(chǔ)過(guò)程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 #t

39、emp_tableSELECT b.large_type_id, AS dep_name, a.quantity,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 FORM pos_sale a,large_type b,goods_info c WHERE a.goods_id=c.goods_id AND c.large_type=b.large_ty

40、pe_idSELECT work_date, large_type_id ,dep_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, large_type_id ,dep_name ORDER BY work_date查詢商品分類匯總的存儲(chǔ)過(guò)程CREATE PROCEDURE P_SEARCH_KIND_SALE ASCREA

41、TE TABLE #temp_table(small_type_id int,kind_name char(10),quantity float,amount 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

42、_cost, (a.amount-c.cost_price*a.quantity) AS gain FROM pos_sale a,small_type 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

43、 ) AS sum_gainFROM #temp_table GROUP BY work_date, small_type_id ,kind_name ORDER BY work_date查詢商品銷售的存儲(chǔ)過(guò)程: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_tableSELECT a.goods_id,a.bar_id, AS

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論