中央廣播電視大學(xué)人才培養(yǎng)模式改革和開放教育試點(diǎn)計算機(jī)應(yīng)用專_第1頁
中央廣播電視大學(xué)人才培養(yǎng)模式改革和開放教育試點(diǎn)計算機(jī)應(yīng)用專_第2頁
中央廣播電視大學(xué)人才培養(yǎng)模式改革和開放教育試點(diǎn)計算機(jī)應(yīng)用專_第3頁
中央廣播電視大學(xué)人才培養(yǎng)模式改革和開放教育試點(diǎn)計算機(jī)應(yīng)用專_第4頁
中央廣播電視大學(xué)人才培養(yǎng)模式改革和開放教育試點(diǎn)計算機(jī)應(yīng)用專_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、中央廣播電視大學(xué)人才培養(yǎng)模式改革和開放教育試點(diǎn)計算機(jī)應(yīng)用??飘厴I(yè)論文 龍江紙廠倉庫管理系統(tǒng)分校(站、點(diǎn)): 龍巖電大 學(xué)生姓名: 郭云冰 學(xué) 號: 037070929 指導(dǎo)教師: 林振木 完稿日期: 2006年4月 龍江紙廠倉庫管理系統(tǒng)目 錄一、概述1二、需求分析2(一)、設(shè)計思想2(二)、模塊框圖2(三)、設(shè)計工作流程圖3(四)、數(shù)據(jù)庫需求分析3(五)、數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計4(六)、數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計6(七)、數(shù)據(jù)庫結(jié)構(gòu)的實(shí)現(xiàn)8三、系統(tǒng)功能12四、開發(fā)工具12五、各功能模塊的實(shí)現(xiàn)13(一)、創(chuàng)建應(yīng)用程序13(二)、操作日志模塊設(shè)計15(三)、登錄窗口的設(shè)計和程序初始化21(四)、主對話框界面設(shè)

2、計34(五)、設(shè)備代碼管理窗口的建立35(六)、庫存信息管理窗口的創(chuàng)建38(七)、設(shè)備入庫信息管理45(八)、設(shè)備入庫窗口52(九)、設(shè)備采購報表管理55(十)、庫存報警窗口59(十一)、幫助模塊設(shè)計62六、程序編譯62七、系統(tǒng)評價63八、結(jié)束語63【參考文獻(xiàn)】64龍江紙廠倉庫管理系統(tǒng)【內(nèi)容摘要】本篇論文主要介紹了龍江倉庫管理系統(tǒng)開發(fā)的過程,開發(fā)背景是龍江紙廠物資管理復(fù)雜、繁瑣。由于掌握的物資種類眾多,訂貨、管理、發(fā)放的渠道各有差異,各類統(tǒng)計計劃報表繁多,因此必須根據(jù)該廠的具體情況來制定相應(yīng)的方案來提高工作效率,開發(fā)過程包括對用戶的需求分析,結(jié)合現(xiàn)在信息系統(tǒng)軟件開發(fā)現(xiàn)狀,采用了Visral C

3、+程序設(shè)計語言進(jìn)行該倉庫管理系統(tǒng)的開發(fā),用SQL語句創(chuàng)建后臺數(shù)據(jù)庫,通過對龍江紙廠倉庫管理的調(diào)查分析,設(shè)計出能滿足該廠應(yīng)用要求的倉庫管理系統(tǒng)模塊,確立相應(yīng)的實(shí)體及實(shí)體之間的關(guān)系,創(chuàng)建數(shù)據(jù)庫表格,設(shè)計各個模塊,調(diào)試編譯完成?!娟P(guān)鍵詞】數(shù)據(jù)庫結(jié)構(gòu)、編程接口、技術(shù)前 言企業(yè)的物資供應(yīng)管理往往是很復(fù)雜、繁瑣。由于掌握的物資種類眾多,訂貨、管理、發(fā)放的渠道各有差異,各個企業(yè)之間的管理體制不盡相同,各類統(tǒng)計計劃報表繁多,因此企業(yè)的物資管理必須實(shí)現(xiàn)計算機(jī)化,而且必須根據(jù)企業(yè)的具體情況來制定相應(yīng)的方案來提高工作效率。龍江紙廠是一家中小型企業(yè),主要生產(chǎn)壓光感應(yīng)紙等。該企業(yè)原先采用使用功能單一的Excel和Acc

4、ess來管理倉庫,明顯不能滿足企業(yè)規(guī)模擴(kuò)大,更好展開生產(chǎn)的需求。為此迫切地需要引入新的思想技術(shù)和管理技術(shù)進(jìn)入到倉庫管理之中。本套系統(tǒng)正是為解決以上問題而開發(fā)的。由于能力有限和時間的限制,系統(tǒng)的設(shè)計難免會存在不足之處,敬請各位同學(xué)、老師不吝賜教。一、 概述目前無論公司還是企業(yè)對于貨物都實(shí)行了信息化管理,以提高管理水平和工作效率,同時也可以最大限度地減少手工操作帶來得錯誤。在工廠中,產(chǎn)品的進(jìn)銷存涉及產(chǎn)品原材的采購、庫存、投入生產(chǎn)、報損,甚至有時涉及到銷售,同時,對于產(chǎn)品也有相應(yīng)的生產(chǎn)、庫存、銷售和報損等類似環(huán)節(jié)。倉庫管理的物資主要是指紙廠生產(chǎn)所需要的各種設(shè)備,在進(jìn)貨時經(jīng)檢查合同確認(rèn)為有效托收之后,

5、進(jìn)行驗(yàn)收入庫,填寫入庫單和入庫登記。紙廠各個部門根據(jù)所需要的物資設(shè)備總額和部門生產(chǎn)活動需要提出物資需求申請,計劃員根據(jù)整個紙廠的需求開出物資設(shè)備的出庫單,倉庫管理員根據(jù)出庫單核對發(fā)放設(shè)備。設(shè)備使用完畢需要及時歸還入庫,填寫入庫單,根據(jù)需要按照月、季和年進(jìn)行統(tǒng)計分析,產(chǎn)生相應(yīng)報表。通過對龍江紙廠的需求分析,結(jié)合現(xiàn)在軟件開發(fā)的現(xiàn)狀,我們決定運(yùn)用Visual C+程序設(shè)計語言來開發(fā)這套龍江紙廠倉庫管理系統(tǒng),后臺數(shù)據(jù)庫為SQL Server 2000。該系統(tǒng)支持操作平臺為:Windows98、Windows2000及以上操作系統(tǒng)。二、 需求分析(一)、 設(shè)計思想龍江紙廠倉庫管理系統(tǒng)開發(fā)的總體任務(wù)是實(shí)現(xiàn)

6、龍江紙廠物資設(shè)備管理的系統(tǒng)化、規(guī)范化和自動化,從而達(dá)到提高倉庫管理效率的目的。倉庫管理的特點(diǎn)是信息處理量比較大,所管理的物資設(shè)備種類繁多,而且入庫單、出庫單和需求單等單據(jù)的發(fā)生量特別大,關(guān)節(jié)聯(lián)信息多,查詢和統(tǒng)計的方式不盡相同,在管理過程中經(jīng)常出現(xiàn)信息的重復(fù)傳遞,各個部門管理規(guī)格不容易統(tǒng)一等等。為了克服上面這些困難,滿足計算機(jī)管理的需要,所開發(fā)的倉庫管理系統(tǒng)必須采取以下的原則:v 統(tǒng)一各種原始單據(jù)的格式,統(tǒng)一帳目和報表的格式v 刪除不必要的管理冗余,實(shí)現(xiàn)管理規(guī)范化、科學(xué)化v 程序代碼標(biāo)準(zhǔn)化,軟件統(tǒng)一化,確保軟件的可維護(hù)性和實(shí)用性v 界面盡量簡單化,做到實(shí)用、方便,盡量滿足紙廠中不同層次員工的需要

7、v 建立操作日志,系統(tǒng)自動記錄所進(jìn)行的各種操作(二)、 模塊框圖通過遵循以上的設(shè)計思想,在對龍江紙廠倉庫管理系統(tǒng)功能進(jìn)行分析的基礎(chǔ)上,結(jié)合Visual C+程序編制的特點(diǎn),我們繪制出該龍江紙廠倉庫管理系統(tǒng)的系統(tǒng)功能模塊圖如下:(三)、 設(shè)計工作流程圖經(jīng)過對系統(tǒng)各個功能模塊的仔細(xì)分析,按照Visusl C+程序開發(fā)思想,結(jié)合信息系統(tǒng)軟件開發(fā)模式,我們可以繪制出整套龍江紙廠倉庫管理系統(tǒng)的設(shè)計工作流程圖如下:(四)、 數(shù)據(jù)庫需求分析有了系統(tǒng)模塊功能圖和設(shè)計工作流程圖,在仔細(xì)調(diào)查龍江紙廠物資管理過程的基礎(chǔ)上,根據(jù)SQL Server 2000數(shù)據(jù)庫的特點(diǎn),我們繪制出龍江紙廠倉庫管理系統(tǒng)的數(shù)據(jù)流程圖如下

8、針對龍江紙廠倉庫管理工作的現(xiàn)狀,通過對倉庫管理的內(nèi)容和數(shù)據(jù)流程進(jìn)行分析,設(shè)計的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)如下v 設(shè)備代碼信息,包括的數(shù)據(jù)項(xiàng)有設(shè)備號、設(shè)備名稱v 現(xiàn)有庫存信息,包括的數(shù)據(jù)項(xiàng)有現(xiàn)有設(shè)備、現(xiàn)有數(shù)目、總數(shù)目、最大庫存和最小庫存等v 設(shè)備使用信息,包括的數(shù)據(jù)項(xiàng)有使用的設(shè)備、使用部門、數(shù)目、使用時間和出庫時的狀態(tài)等v 設(shè)備采購信息,包括的數(shù)據(jù)項(xiàng)有采購的設(shè)備、采購員、供應(yīng)商、采購數(shù)目和采購時間等v 設(shè)備歸還信息,包括的數(shù)據(jù)項(xiàng)有歸還設(shè)備、歸還部門、歸還數(shù)目、歸還時間和經(jīng)手人等v 設(shè)備需求信息,包括的數(shù)據(jù)項(xiàng)有需求的部門、需求的設(shè)備、需求數(shù)目和需求時間等(五)、 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計這一設(shè)計階段的設(shè)計是在需求

9、分析的基礎(chǔ)上,設(shè)計出能滿足龍江紙廠需求的各種實(shí)體,以及它們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計打下基礎(chǔ)。龍江紙廠倉庫管理系統(tǒng)包含的實(shí)體共有庫存實(shí)體、入庫實(shí)體、出庫實(shí)體、采購實(shí)體、還庫實(shí)體和需求實(shí)體等。各實(shí)體的E-R圖和它們之間的關(guān)系如下:庫存實(shí)體的E-R圖入庫實(shí)體的E-R圖出庫實(shí)體的E-R圖部門需求實(shí)體的E-R圖還庫實(shí)體的E-R圖計劃采購實(shí)體的E-R圖實(shí)體和實(shí)體之間關(guān)系的E-R圖(六)、 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計在上面的實(shí)體以及實(shí)體之間關(guān)系的基礎(chǔ)上,形成數(shù)據(jù)庫中的原始表格和各個表格之間的關(guān)系。共有以下幾個表:設(shè)備代碼表device_code列名數(shù)據(jù)類型可否為空說明codevarchar(6)NOT NU

10、LL設(shè)備號(主鍵)namevarchar(20)NULL設(shè)備名稱設(shè)備入庫表device_in列名數(shù)據(jù)類型可否為空說明codevarchar(6)NOT NULL設(shè)備號in_datedateNOT NULL入庫時間(主鍵)providervarchar(20)NULL供應(yīng)商telenovarchar(10)NULL供應(yīng)商電話in_numbernumber(6)NULL入庫數(shù)量pricenumber(6)NULL價格buyervarchar(10)NULL采購員設(shè)備出庫表device_out列名數(shù)據(jù)類型可否為空說明codevarchar(6)NOT NULL設(shè)備號departmentvarchar

11、(20)NULL使用部門out_datedateNULL出庫時間(主鍵)out_statenumber(1)NULL出庫狀況out_personvarchar(10)NULL經(jīng)手人out_numbernumber(6)NOT NULL出庫數(shù)量takervarchar(10)NULL領(lǐng)取人usagevarchar(20)NULL用途現(xiàn)有庫存表device列名數(shù)據(jù)類型可否為空說明codevarchar(6)NOT NULL設(shè)備號(主鍵)now_numbernumber(6)NULL現(xiàn)有庫存high_numbernumber(6)NULL最大庫存low_numbernumber(6)NULL最少庫存

12、total_numbernumber(6)NULL總數(shù)部門需求表device_need列名數(shù)據(jù)類型可否為空說明codevarchar(6)NOT NULL設(shè)備號departmentvarchar(20)NOT NULL部門名稱need_numbernumber(6)NULL需要數(shù)量begin_datedateNULL需求開始時間end_datedateNULL需求結(jié)束時間設(shè)備還庫表device_return列名數(shù)據(jù)類型可否為空說明codevarchar(6)NOT NULL設(shè)備號returndateNULL還庫時間(主鍵)keepervarchar(10)NULL倉庫管理員return_num

13、bernumber(6)NULL歸還數(shù)量return_personvarchar(10)NULL歸還人操作日志表howdo列名數(shù)據(jù)類型可否為空說明do_uservarchar(10)NOT NULL操作員do_whatvarchar(40)NOT NULL操作內(nèi)容do_datedateNOT NULL操作時間設(shè)備采購計劃表device_wantbuy列名數(shù)據(jù)類型可否為空說明codevarchar(6)NOT NULL設(shè)備號now_numbernumber(6)NULL現(xiàn)有庫存total_numbernumber(6)NULL總庫存max_numbernumber(6)NULL最大庫存buy_n

14、umbernumber(6)NULL購買數(shù)量providervarchar(10)NULL供應(yīng)商pricenumber(6)NULL價格buy_datedateNULL計劃采購時間(主?。ㄆ撸?數(shù)據(jù)庫結(jié)構(gòu)的實(shí)現(xiàn)依托SQL Server 2000數(shù)據(jù)庫,創(chuàng)建各個表并生成代碼如下:v 創(chuàng)建設(shè)備代碼表格device_codeif exists (select * from dms.sysobjects where id = object_id(N'dms.device_code') and OBJECTPROPERTY(id, N'IsUserTable') =

15、1)drop table dms.device_codeGOCREATE TABLE dms.device_code (code varchar (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,name varchar (20) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARYGOv 創(chuàng)建入庫表格device_inif exists (select * from dbo.sysobjects where id = object_id(N'dbo.device_in') and OBJECTPROPERTY(i

16、d, N'IsUserTable') = 1)drop table dbo.device_inGOCREATE TABLE dms.device_in (code varchar (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,in_date datetime NOT NULL ,provider varchar (20) COLLATE Chinese_PRC_CI_AS NULL ,teleno varchar (10) COLLATE Chinese_PRC_CI_AS NULL ,in_number numeric(18, 0) NULL

17、 ,price numeric(18, 0) NULL ,buyer varchar (10) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARYGOv 創(chuàng)建出庫表格device_outif exists (select * from dbo.sysobjects where id = object_id(N'dbo.device_out') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table dbo.device_outGOCREATE TABLE dms.device

18、_out (code varchar (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,department varchar (20) COLLATE Chinese_PRC_CI_AS NULL ,out_date datetime NULL ,out_state numeric(18, 0) NULL ,out_person varchar (10) COLLATE Chinese_PRC_CI_AS NULL ,out_number numeric(18, 0) NOT NULL ,taker varchar (10) COLLATE Chinese_PRC

19、_CI_AS NULL ,usage varchar (20) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARYGOv 創(chuàng)建現(xiàn)有庫存表deviceif exists (select * from dbo.sysobjects where id = object_id(N'dbo.device') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table dbo.deviceGOCREATE TABLE dms.device (code varchar (6) COLLATE

20、Chinese_PRC_CI_AS NOT NULL ,now_number numeric(18, 0) NULL ,high_number numeric(18, 0) NULL ,low_number numeric(18, 0) NULL ,total_number numeric(18, 0) NULL ) ON PRIMARYGOv 創(chuàng)建部門需求表device_needif exists (select * from dbo.sysobjects where id = object_id(N'dbo.device_need') and OBJECTPROPERTY(

21、id, N'IsUserTable') = 1)drop table dbo.device_needGOCREATE TABLE dms.device_need (code varchar (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,department varchar (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,need_number numeric(18, 0) NULL ,begin_date datetime NULL ,end_date datetime NULL ) ON PRIMARYGOv

22、 創(chuàng)建設(shè)備還庫表device_returnif exists (select * from dbo.sysobjects where id = object_id(N'dbo.device_return') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table dbo.device_returnGOCREATE TABLE dms.device_return (code varchar (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,return_date datetime N

23、ULL ,keeper varchar (10) COLLATE Chinese_PRC_CI_AS NULL ,return_number numeric(18, 0) NULL ,return_person varchar (10) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARYGOv 創(chuàng)建設(shè)備采購計劃表device_wantbuyif exists (select * from dbo.sysobjects where id = object_id(N'dbo.device_wantbuy') and OBJECTPROPERTY(

24、id, N'IsUserTable') = 1)drop table dbo.device_wantbuyGOCREATE TABLE dms.device_wantbuy (code varchar (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,now_number numeric(18, 0) NULL ,total_number numeric(18, 0) NULL ,max_number numeric(18, 0) NULL ,buy_number numeric(18, 0) NULL ,provider varchar (10)

25、 COLLATE Chinese_PRC_CI_AS NULL ,price numeric(18, 0) NULL ,buy_date datetime NULL ) ON PRIMARYGOv 創(chuàng)建操作日志表howdoif exists (select * from dbo.sysobjects where id = object_id(N'dbo.howdo') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table dbo.howdoGOCREATE TABLE dms.howdo (do_user v

26、archar (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,do_what varchar (40) COLLATE Chinese_PRC_CI_AS NOT NULL ,do_date datetime NOT NULL ) ON PRIMARYGO三、 系統(tǒng)功能本系統(tǒng)中實(shí)現(xiàn)的模塊功能包括如下幾項(xiàng):Ø 輸入模塊功能包括:倉庫管理各種信息的輸入,包括入庫、出庫、還庫和需求信息的輸入Ø 查詢模塊功能包括:倉庫管理各種信息的查詢,包括入庫、出庫、還庫和需求信息的查詢Ø 輸出模塊功能包括:設(shè)備采購報表的生成,輸出Ø 維護(hù)模

27、塊功能包括:倉庫管理各種信息的查詢、維護(hù)以及操作日志的管理Ø 幫助模塊功能包括:倉庫管理系統(tǒng)的使用幫助四、 開發(fā)工具龍江紙廠倉庫管理系統(tǒng)的開發(fā)采用了Visual C+程序設(shè)計語言來進(jìn)行開發(fā)設(shè)計,這是由于Visual C+是現(xiàn)在最為通用的軟件開發(fā)工具之一,它提供了相當(dāng)齊備的類庫和友好的編程界面,借助Visual C+可以輕松開發(fā)出功能強(qiáng)勁、速度快、應(yīng)用廣泛并且占用資源少的應(yīng)用程序。不僅如此,Visual C+開發(fā)數(shù)據(jù)庫還具有以下方面的優(yōu)勢,它提供了多種多樣的數(shù)據(jù)庫訪問技術(shù)WDBC API、MFC ODBC、DAO、OLEDB、ADO等等,這就使得用Visual C+開發(fā)數(shù)據(jù)庫具有以下幾

28、個特點(diǎn):v 簡單性Visual C+提供的MFC類具有強(qiáng)大的功能,一些開發(fā)向?qū)軌蚝喕瘧?yīng)用程序的開發(fā),另外MFC ODBC和ADO數(shù)據(jù)庫接口已經(jīng)將一些底層的操作都封裝在類中,所以可以方便地使用這些接口,而無需再編寫操作數(shù)據(jù)庫的底層代碼。v 可擴(kuò)展性Visual C+提供的OLE技術(shù)和ActiveX技術(shù)可以讓開發(fā)人員利用Visual C+中提供的各種組件、控件以及第三方開發(fā)者提供的組件來創(chuàng)建自己的程序,從而實(shí)現(xiàn)應(yīng)用程序的組件化,而組件化的應(yīng)用程序則具有良好的可擴(kuò)展性。v 訪問速度快Visual C+為了解決利用ODBC開發(fā)的數(shù)據(jù)庫應(yīng)用程序訪問數(shù)據(jù)庫速度過慢的問題,提供了新的訪問技術(shù),即OLE D

29、B和它的高層接口ADO,它們是基于COM接口的技術(shù),因此使用這種技術(shù)可以直接對數(shù)據(jù)庫的驅(qū)動程序進(jìn)行訪問,從而有效的提高了訪問速度。v 數(shù)據(jù)源友好傳統(tǒng)的ODBC技術(shù)只能訪問關(guān)系型數(shù)據(jù)庫,而在Visual C+中,通過OLE DB訪問技術(shù),不僅能訪問關(guān)系型數(shù)據(jù)庫,還能夠訪問非關(guān)系型數(shù)據(jù)庫。五、 各功能模塊的實(shí)現(xiàn)(一)、 創(chuàng)建應(yīng)用程序龍江紙廠倉庫管理系統(tǒng)應(yīng)用程序的具體創(chuàng)建步驟如下:1、 選擇菜單“文件”>“新建”>在選項(xiàng)卡中選擇“MFC AppWizard(exe)”,設(shè)置合適的目錄和項(xiàng)目名,如“D:projects”目錄中的“guo”項(xiàng)目。2、 創(chuàng)建一個對話框應(yīng)用程序。單擊“下一步”按

30、鈕。3、 由于在這個項(xiàng)目中要使用ADO,所以需要選中“自動操作”選項(xiàng),使應(yīng)用程序能夠支持自動化對象,如下圖所示。4、 單擊“結(jié)束”按鈕,以完成項(xiàng)目的創(chuàng)建,這樣就建好了一個基于對話框的應(yīng)用程序框架。主對話框名為CDMSDLG。創(chuàng)建該應(yīng)用程序的源代碼為:/ stdafx.h : include file for standard system include files,/ or project specific include files that are used frequently, but/ are changed infrequently#if !defined(AFX_STDAFX_

31、H_D88A47CA_27FD_443A_968B_365D1CA1BB4C_INCLUDED_)#define AFX_STDAFX_H_D88A47CA_27FD_443A_968B_365D1CA1BB4C_INCLUDED_#if _MSC_VER > 1000#pragma once#endif / _MSC_VER > 1000#define VC_EXTRALEAN/ Exclude rarely-used stuff from Windows headers#include <afxwin.h> / MFC core and standard compo

32、nents#include <afxext.h> / MFC extensions#include <afxdisp.h> / MFC Automation classes#include <afxdtctl.h>/ MFC support for Internet Explorer 4 Common Controls#ifndef _AFX_NO_AFXCMN_SUPPORT#include <afxcmn.h>/ MFC support for Windows Common Controls#endif / _AFX_NO_AFXCMN_SU

33、PPORT/ This macro is the same as IMPLEMENT_OLECREATE, except it passes TRUE/ for the bMultiInstance parameter to the COleObjectFactory constructor./ We want a separate instance of this application to be launched for/ each automation proxy object requested by automation controllers.#ifndef IMPLEMENT_

34、OLECREATE2#define IMPLEMENT_OLECREATE2(class_name, external_name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) AFX_DATADEF COleObjectFactory class_name:factory(class_name:guid, RUNTIME_CLASS(class_name), TRUE, _T(external_name); const AFX_DATADEF GUID class_name:guid = l, w1, w2, b1, b2, b3, b4, b5, b

35、6, b7, b8 ;#endif / IMPLEMENT_OLECREATE2#import "c:program filescommon filessystemadomsado15.dll" no_namespace rename("EOF", "adoEOF") #include "icrsint.h"inline void TESTHR(HRESULT x) if FAILED(x) _com_issue_error(x);#define DATEFMTCString("'%s'&

36、quot;)/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_STDAFX_H_D88A47CA_27FD_443A_968B_365D1CA1BB4C_INCLUDED_)(二)、 操作日志模塊設(shè)計1、 寫日志模塊通過操作日志模塊,該倉庫管理系統(tǒng)每一次改變數(shù)據(jù)庫的操作都會在操作日志表格中有相應(yīng)的記錄,這樣就增強(qiáng)了操作人員的責(zé)任感,提高了系統(tǒng)的安全性,也有利于維護(hù)數(shù)據(jù)庫內(nèi)數(shù)

37、據(jù)的完整性,此外,一份詳細(xì)的操作日志,也給開發(fā)過程中的調(diào)試、除錯帶來很大便利,所以,我們最先設(shè)計操作日志的模塊。首先定義一個名為CLogMngr的類:#if !defined(AFX_LOGMNGR_H_B99C1212_779F_4312_AD2B_B9AAC968AE69_INCLUDED_)#define AFX_LOGMNGR_H_B99C1212_779F_4312_AD2B_B9AAC968AE69_INCLUDED_#if _MSC_VER > 1000#pragma once#endif / _MSC_VER > 1000class CLogMngr public:

38、CLogMngr();virtual CLogMngr();public:bool AddLog(LPCSTR op);void Setup(_ConnectionPtr cnnt, CString& user)m_DBCnt = cnnt;m_user = user;protected:_ConnectionPtr m_DBCnt;CString m_user;#endif在這個類中,保存了一個數(shù)據(jù)庫連接指針m_DBCnt和當(dāng)前用戶的ID(m_user)。CLogMngr:AddLog內(nèi)部實(shí)現(xiàn)的過程如下:bool CLogMngr:AddLog(LPCSTR op)CTime tm

39、= CTime:GetCurrentTime();CString sql_;sql_.Format("INSERT INTO HOWDO (do_user,do_what,do_date) VALUES('%s','%s','%d-%d-%d %d:%d:%d')",m_user, op, tm.GetYear(), tm.GetMonth(), tm.GetDay(),tm.GetHour(), tm.GetMinute(), tm.GetSecond();_bstr_t sql = sql_;try/ 執(zhí)行插入操作m_DB

40、Cnt->Execute(sql,NULL,adCmdText);catch(_com_error& e) CString Error = e.ErrorMessage(); AfxMessageBox(e.ErrorMessage();return false; return true;2、 讀日志模塊在項(xiàng)目資源中加入一個對話框,它包括一個列表框控件,幾個編輯框和二個按鈕。這個窗體用來顯示系統(tǒng)中的所有日志記錄,刪除所有記錄使用SQL語句,使用語句為“TRUNCATE TABLE”/ DlgViewLog.cpp : implementation file#include &qu

41、ot;stdafx.h"#include "DMS.h"#include "DlgViewLog.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CDlgViewLog dialogCDlgViewLog:CDlgViewLog(CWnd* pParent /*=NULL*/): CDialog(CDlgViewLog:IDD, pParent)/AFX_DATA_INIT(CDlgViewLog)m_opr =

42、 _T("");m_op = _T("");m_date = _T("");/AFX_DATA_INITvoid CDlgViewLog:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CDlgViewLog)DDX_Control(pDX, IDC_LIST_VLLOG, m_list);DDX_Text(pDX, IDC_EDIT_VLOPR, m_opr);DDX_Text(pDX, IDC_EDIT_VLOP, m_op);

43、DDX_Text(pDX, IDC_EDIT_VLDATE, m_date);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CDlgViewLog, CDialog)/AFX_MSG_MAP(CDlgViewLog)ON_NOTIFY(NM_CLICK, IDC_LIST_VLLOG, OnClickListVllog)ON_BN_CLICKED(IDC_BTN_VLRMALL, OnBtnVlrmall)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CDlgViewLog message handlersBOOL CDlgViewLog:OnInitDialo

44、g() CDialog:OnInitDialog();m_list.InsertColumn(0,"操作員");m_list.InsertColumn(1,"操作日期");m_list.InsertColumn(2,"操作內(nèi)容");RECT rect;m_list.GetWindowRect(&rect);int wid = rect.right - rect.left;m_list.SetColumnWidth(0,wid/3);m_list.SetColumnWidth(1,wid/3);m_list.SetColumnW

45、idth(2,wid/3);m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);RefreshData();return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSEvoid CDlgViewLog:RefreshData()m_list.DeleteAllItems();m_list.SetRedraw(FALSE);_bstr_t strSQL("SELECT * FR

46、OM HOWDO");_RecordsetPtr MySet; int i = 0;tryMySet.CreateInstance(_uuidof(Recordset); MySet = m_DBCnt->Execute(strSQL,NULL,adCmdText);_variant_t Holder;while(!MySet->adoEOF) Holder = MySet->GetCollect("do_user");if(Holder.vt!=VT_NULL)m_list.InsertItem(i, (char*)(_bstr_t)Holde

47、r);Holder = MySet->GetCollect("do_date");if (Holder.vt!=VT_NULL)m_list.SetItemText(i, 1, (char*)(_bstr_t)Holder); Holder = MySet->GetCollect("do_what");if(Holder.vt!=VT_NULL)m_list.SetItemText(i, 2, (char*)(_bstr_t)Holder);MySet->MoveNext(); MySet->Close();catch(_com_

48、error& e) AfxMessageBox(e.ErrorMessage();m_list.SetRedraw(TRUE);return; m_list.SetRedraw(TRUE);void CDlgViewLog:OnClickListVllog(NMHDR* pNMHDR, LRESULT* pResult) int i = m_list.GetSelectionMark();m_opr = m_list.GetItemText(i,0);m_date = m_list.GetItemText(i,1);m_op = m_list.GetItemText(i,2);Upda

49、teData(FALSE);*pResult = 0;void CDlgViewLog:OnBtnVlrmall() _bstr_t strSQL("TRUNCATE TABLE HOWDO");trym_DBCnt->Execute(strSQL,NULL,adCmdText);catch(_com_error& e) AfxMessageBox(e.ErrorMessage();EndDialog(0); RefreshData();最后整個窗體的外觀如下圖所示:(三)、 登錄窗口的設(shè)計和程序初始化登錄窗口的設(shè)計和程序初始化具體代碼如下:/ DMSDlg.

50、cpp : implementation file#include "stdafx.h"#include "DMS.h"#include "DMSDlg.h"#include "DlgProxy.h"#include "DlgLogIn.h"#include "DlgDevcode.h"#include "DlgReport.h"#include "DlgViewLog.h"#include "DlgViewDevIn.h&q

51、uot;#include "DlgViewRet.h"#include "DlgViewOut.h"#include "DlgViewNeed.h"#include "DlgViewReport.h"#include "DlgDev.h"#include "DlgDevAlert.h"#include "DlgDevIn.h"#include "DlgDevOut.h"#include "DlgDevRet.h"#i

52、nclude "DlgDevNeed.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated vir

53、tual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CDMSDlg dialogIMPLEMENT_DYNAMIC(CDMSDlg, CDialog);CDMSDlg:CDMSDlg(CWnd*

溫馨提示

  • 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

提交評論