




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、目錄摘要.2ABSTRACT2 系統(tǒng)概述.3一. 應(yīng)用背景3二. 系統(tǒng)功能3三. 系統(tǒng)預(yù)覽3 四. 系統(tǒng)特點(diǎn)4第二章 .系統(tǒng)分析4一. 初步調(diào)查4 (一)進(jìn)銷存系統(tǒng)的任務(wù)4 (二)進(jìn)銷存系統(tǒng)的作用4 二. 詳細(xì)調(diào)查4 (一)進(jìn)銷存系統(tǒng)需求分析4 (二)進(jìn)銷存系統(tǒng)數(shù)據(jù)庫分析5(三)進(jìn)銷存系統(tǒng)E-R圖5三. 可行性分析5 (一)系統(tǒng)功能5 (二)系統(tǒng)流程圖6第三章 系統(tǒng)設(shè)計(jì)和數(shù)據(jù)庫設(shè)計(jì)6 一. 系統(tǒng)功能模塊劃分6 二. 系統(tǒng)流程分析7三. 數(shù)據(jù)庫設(shè)計(jì)7 (一)數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)8 (二)創(chuàng)建數(shù)據(jù)庫8 (三)設(shè)計(jì)數(shù)據(jù)表8 (四)創(chuàng)建存儲(chǔ)過程13四. 窗體設(shè)計(jì)14(一)創(chuàng)建系統(tǒng)主窗體14(二)創(chuàng)建數(shù)據(jù)訪問
2、模塊15(三)實(shí)現(xiàn)系統(tǒng)登錄功能17(四)實(shí)現(xiàn)商品資料維護(hù)功能19(五)實(shí)現(xiàn)進(jìn)貨功能26(六)實(shí)現(xiàn)進(jìn)貨單單據(jù)打印功能31第四章 系統(tǒng)平臺(tái)選擇32一. 開發(fā)工具選擇.32二. 開發(fā)和運(yùn)行平32結(jié)束語32謝辭34參考文獻(xiàn)35【摘要】本系統(tǒng)是實(shí)現(xiàn)一個(gè)公司進(jìn)貨、銷售和庫存管理的管理系統(tǒng),并用于簡單的資料管理及權(quán)限管理。是單機(jī)版應(yīng)用程序。該系統(tǒng)使用microsoft公司的Visual Basic.NET 作為前臺(tái)開發(fā)工具,微軟公司的SQL Server 2000做后臺(tái)數(shù)據(jù)庫。文章論述了系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)?!娟P(guān)鍵詞】進(jìn)銷存系統(tǒng); 數(shù)據(jù)庫; 系統(tǒng)設(shè)計(jì) 【Abstract】This system is a man
3、agement system that implements the purchase,sell and storage management of a company,also for the simple information management and purview management.It is a stand-alone application program.This system designed with Visual Basic.NET of the microsoft company as proscenium emploiture tool,and with th
4、e SQL Server 2000 as the background data-base.This article discussed the design and implement of the system.【Key words】The purchase,sell and storage management system ; data-base ; system design超市進(jìn)銷存系統(tǒng)第一章 緒論一 應(yīng)用背景隨著企業(yè)的發(fā)展,以及軟件開發(fā)的逐步成熟,進(jìn)銷存系統(tǒng)使得原來繁重而又容易出錯(cuò)的進(jìn)銷存管理變得簡單而有條理。能夠節(jié)省大量的人員成本,也使管理變得可靠方便。它可以是一個(gè)獨(dú)立的項(xiàng)目,
5、也可以是一個(gè)完整的功能模塊,對(duì)于整個(gè)ERP系統(tǒng)的開發(fā)也可以輕易的將它集成進(jìn)去.二 系統(tǒng)功能 進(jìn)銷存管理系統(tǒng)的主要功能如下所示。資料管理:管理商品信息,供貨商信息和客戶信息,分別用于維護(hù)企業(yè)所經(jīng)營商品的基本信息,供貨商及客戶的基本信息。進(jìn)貨管理:管理進(jìn)貨單信息,用于錄入企業(yè)的進(jìn)貨單,分為主從兩張表,主表“進(jìn)貨單”內(nèi)容包括編號(hào)、供貨商號(hào)、進(jìn)貨日期、業(yè)務(wù)員等,從表“進(jìn)貨單明細(xì)”內(nèi)容包括編號(hào)、進(jìn)貨單號(hào)、貨號(hào)、進(jìn)貨數(shù)量、進(jìn)價(jià)等。銷售管理:管理銷售單信息,用于錄入企業(yè)的銷售單。主表“銷售單”內(nèi)容包括編號(hào)、客戶編號(hào)、銷售日期、業(yè)務(wù)員等,從表“銷售單明細(xì)”內(nèi)容包括編號(hào)、銷售單號(hào)、貨號(hào)、銷售價(jià)等。庫存管理:管理
6、庫存信息,用于查詢企業(yè)商品的庫存。系統(tǒng)管理:管理用戶權(quán)限,用于設(shè)置各操作員使用系統(tǒng)的權(quán)限,為了方便設(shè)置,一般的應(yīng)用系統(tǒng)都是可以將操作人員分組的,將通用的權(quán)限賦予整個(gè)組,個(gè)別的權(quán)限單獨(dú)賦予個(gè)人,這樣可以大大減少權(quán)限管理的工作量。三 系統(tǒng)預(yù)覽 由于在下面的章節(jié)中會(huì)給出具體的介紹,在此只給出主界面的一個(gè)預(yù)覽,如圖2.1所示。圖1.1 主界面預(yù)覽四 系統(tǒng)特點(diǎn)進(jìn)銷存管理系統(tǒng)的制作就是為了將進(jìn)銷存管理變得簡單可靠,節(jié)省人力,實(shí)現(xiàn)傻瓜的操作。本系統(tǒng)給出了一套較完善的易學(xué)易用的進(jìn)銷存管理系統(tǒng)。 第二章 系統(tǒng)分析一 初步調(diào)查(一)進(jìn)銷存管理的任務(wù)進(jìn)銷存管理工作的主要任務(wù)有:企業(yè)的采購管理企業(yè)的銷售管理(批發(fā)、零
7、售、連鎖)企業(yè)各部門的商品配送管理企業(yè)庫存商品的管理企業(yè)應(yīng)收款,應(yīng)付款的管理企業(yè)經(jīng)營狀況分析與決策(二)進(jìn)銷存管理系統(tǒng)的作用提高管理效率,降低人工成本降低采購成本及時(shí)調(diào)整營銷策略,防止價(jià)格流失防范陳呆死帳,降低應(yīng)收帳款減少倉儲(chǔ)面積,提高房產(chǎn)綜合利用降低儲(chǔ)備資金占用加快資金周轉(zhuǎn),實(shí)現(xiàn)經(jīng)濟(jì)效益強(qiáng)化財(cái)務(wù)監(jiān)控制,實(shí)現(xiàn)經(jīng)濟(jì)效益商業(yè)數(shù)據(jù)智能分析高效決策二 詳細(xì)調(diào)查(一)進(jìn)銷存管理系統(tǒng)需求分析根據(jù)以上對(duì)進(jìn)銷存管理內(nèi)容和進(jìn)銷存管理系統(tǒng)的分析,一個(gè)標(biāo)準(zhǔn)的進(jìn)銷存管理系統(tǒng)應(yīng)該包括如圖2.1所示的幾大功能。其中每個(gè)功能都由若干相關(guān)聯(lián)的子功能模塊組成。圖2.1 進(jìn)銷存管理系統(tǒng)的基本功能模塊(二)進(jìn)銷存管理系統(tǒng)數(shù)據(jù)庫分析
8、根據(jù)以上需求分析,一個(gè)基本的進(jìn)銷存管理系統(tǒng)數(shù)據(jù)庫中大致包括60多張數(shù)據(jù)表,分別存放相應(yīng)子功能的數(shù)據(jù)信息,其中商品清單、供貨商清單和客戶清單是起關(guān)鍵作用的表,用于存放基礎(chǔ)的數(shù)據(jù)信息。其他涉及商品、供貨商和客戶信息的表,都只記錄這些元素的編號(hào),根據(jù)作為外鍵的“編號(hào)”字段來對(duì)應(yīng)。因此這3張表和其他表間的關(guān)系是1:N的關(guān)系。因?yàn)檎麄€(gè)系統(tǒng)涉及的實(shí)體和屬性較多,限于時(shí)間和篇幅不能逐一列舉。圖2.2為進(jìn)銷存管理系統(tǒng)關(guān)鍵實(shí)體的E-R圖。圖2.2 進(jìn)銷存管理系統(tǒng)E-R圖其他實(shí)體與基本信息表間的對(duì)應(yīng)關(guān)系都是類似的。三 可行性分析(一)系統(tǒng)功能分析由于篇幅和時(shí)間有限,本設(shè)計(jì)詳細(xì)介紹如下圖所示功能的開發(fā)過程,并簡化其
9、中各功能所包含的屬性,其他功能完全可以參照這些功能的開發(fā)方法實(shí)現(xiàn)。圖2.3本設(shè)計(jì)介紹的功能模塊(二)系統(tǒng)流程圖圖2.4系統(tǒng)流程圖第三章 系統(tǒng)設(shè)計(jì)和數(shù)據(jù)庫設(shè)計(jì)一 系統(tǒng)功能模塊劃分系統(tǒng)大致可分為如下幾個(gè)功能模塊:登錄模塊:登錄模塊是一個(gè)很重要的模塊,是進(jìn)入系統(tǒng)的門戶,對(duì)用戶信息起到了一定的保護(hù)作用.資料管理模塊:資料管理模塊中包括了對(duì)商品信息,供貨商信息以及客戶信息的管理,并提供簡單的查詢功能.進(jìn)銷存管理模塊:進(jìn)銷存系統(tǒng)中非常重要的就是對(duì)進(jìn)貨單,銷售單和庫存記錄的管理,它是進(jìn)銷存系統(tǒng)的核心部分.系統(tǒng)管理模塊:該模塊是對(duì)各操作員使用權(quán)限的管理,為了方便設(shè)置,一般的應(yīng)用系統(tǒng)都是可以將操作人員分組的,將
10、通用的權(quán)限賦予整個(gè)組,個(gè)別的權(quán)限單獨(dú)賦予個(gè)人,這樣可以大大減少權(quán)限管理的工作量。二 系統(tǒng)流程分析進(jìn)銷存系統(tǒng)的流程如下所示。第一步,進(jìn)行登錄,如果成功則進(jìn)入第二步。第二步,打開系統(tǒng)的主界面,根據(jù)相應(yīng)的操作,分別跳入不同的步驟,共有五種不同的選擇。資料管理:在該模塊中可以對(duì)客戶信息、供貨商信息和商品信息進(jìn)行設(shè)置與管理。進(jìn)貨管理:在該模塊中可以對(duì)進(jìn)貨單的記錄進(jìn)行一定條件下的查詢。銷售管理:在該模塊中可以對(duì)銷售單的記錄進(jìn)行一定條件下的查詢。庫存管理:在該模塊中可以對(duì)庫存情況進(jìn)行一定條件下的查詢。系統(tǒng)管理:在該摸塊中不同操作員的使用權(quán)限進(jìn)行設(shè)置。具體的流程如圖所示。圖3.1系統(tǒng)流程圖三 數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)只
11、有用數(shù)據(jù)庫來管理才能有自動(dòng)化管理的可能。數(shù)據(jù)的結(jié)構(gòu)將影響整個(gè)管理機(jī)制的應(yīng)用,而且一但建立以后要修改常會(huì)出現(xiàn)麻煩。所以一開始就要仔細(xì)慎重地搭建一個(gè)完整而合理的結(jié)構(gòu)。所謂數(shù)據(jù)庫(Database)就是指按一定組織方式存儲(chǔ)在一起的,相互有關(guān)的若干個(gè)數(shù)據(jù)的結(jié)合,數(shù)據(jù)庫管理系統(tǒng)(Database Management System)就是一種操縱和管理數(shù)據(jù)庫的大型軟件,簡稱DBMS,他們建立在操作系統(tǒng)的基礎(chǔ)上,對(duì)數(shù)據(jù)庫進(jìn)行統(tǒng)一的管理和控制,其功能包括數(shù)據(jù)庫定義,數(shù)據(jù)庫管理,數(shù)據(jù)庫建立和維護(hù),于操作系統(tǒng)通信等。DBMS通常由數(shù)據(jù)字典,數(shù)據(jù)描述語言及其編譯程序,數(shù)據(jù)操縱(查詢)語言及其編譯程序,數(shù)據(jù)庫管理例行
12、程序等部分組成。(一)數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)本系統(tǒng)的數(shù)據(jù)比較復(fù)雜,存儲(chǔ)數(shù)據(jù)的表也比較多,如何讓各個(gè)表有機(jī)地結(jié)合起來充分發(fā)揮各自的作用,是結(jié)構(gòu)復(fù)雜數(shù)據(jù)庫的難點(diǎn)。本設(shè)計(jì)共需要14張表,多數(shù)是平行結(jié)構(gòu),部分表必須配對(duì)存在,有主表、副表之分。用途分別如下表所示。數(shù)據(jù)表名稱 數(shù)據(jù)表用途用戶清單 保存系統(tǒng)使用者的信息權(quán)限清單 保存系統(tǒng)使用者的權(quán)限信息,可以指定到菜單級(jí)權(quán)限商品清單 保存企業(yè)經(jīng)營商品的資料信息供貨商清單 保存企業(yè)供貨商的資料客戶清單 保存企業(yè)客戶的資料信息倉庫清單 保存企業(yè)庫房的分類信息,可以用于數(shù)據(jù)辭典業(yè)務(wù)員清單 保存企業(yè)的業(yè)務(wù)員信息,可以用于數(shù)據(jù)辭典進(jìn)貨單 進(jìn)貨單主表進(jìn)貨單明細(xì) 進(jìn)貨單從表進(jìn)貨單
13、歷史 保存進(jìn)貨單歷史進(jìn)貨單明細(xì)歷史 保存進(jìn)貨單明細(xì)歷史銷售單 銷售單主表銷售單明細(xì) 銷售單從表銷售單歷史 保存銷售單歷史銷售單明細(xì)歷史 保存銷售單明細(xì)歷史庫存庫 保存企業(yè)商品庫存的數(shù)量、金額等信息應(yīng)付款、應(yīng)收款 保存企業(yè)應(yīng)付款明細(xì)、應(yīng)收款明細(xì)表3.1個(gè)數(shù)據(jù)表之間的E-R圖可以參考圖(二)創(chuàng)建數(shù)據(jù)庫打開SQL Server企業(yè)管理器,新建一個(gè)數(shù)據(jù)庫,將其命名為jxcbook.(三)設(shè)計(jì)數(shù)據(jù)表創(chuàng)建“商品清單”數(shù)據(jù)表CREATE TABLE dbo.商品清單 ( 貨號(hào) char (14) NOT NULL Primary Key, 條碼 char (14) NULL, 拼音編碼 char (40)N
14、ULL, 品名 varchar (80) NULL, 規(guī)格 varchar (40) NULL, 單位 char (6) NOT NULL, 產(chǎn)地 varchar (50) NULL, 類別 char (20) NULL, 進(jìn)貨價(jià) decimal (28,6) NULL default(0), 銷售價(jià)1 decimal (28,6) NULL default(0), 銷售價(jià)2 decimal (28,6) NULL default(0), 最低售價(jià) decimal (28,6) NULL default(0) )GO創(chuàng)建“供貨商清單”數(shù)據(jù)表CREATE TABLE dbo.供貨商清單 ( 恭貨
15、商號(hào) char (10) NOT NULL Primary Key,拼音編碼 char (40)NOT NULL, 簡稱 varchar (80) NULL, 名稱 varchar (80) NULL, 地址 varchar (80) NULL, 郵編 char (6) NULL, 區(qū)號(hào) char (6) NULL, 地區(qū) char (10) NULL, 電話 varchar (20) NULL, 傳真 varchar (20) NULL, 電報(bào) varchar (20) NULL, 開戶行 varchar (40) NULL, 開戶行郵編 char (6) NULL, 銀行帳號(hào) varcha
16、r (20) NULL, 稅號(hào) varchar (20) NULL, 庫房地址 varchar (40) NULL, 庫房電話 varchar (20) NULL, 業(yè)務(wù)員 char (10) NULL, 業(yè)務(wù)部門 varchar (20) NULL)GO創(chuàng)建“客戶清單”數(shù)據(jù)表CREATE TABLE dbo.客戶清單 ( 客戶編號(hào) char (10) NOT NULL Primary Key, 拼音編碼 char (20)NOT NULL, 簡稱 varchar (80) NULL, 名稱 varchar (80) NULL, 聯(lián)系人 varchar (30) NULL, 地址 varcha
17、r (80) NULL, 郵編 char (6) NULL, 區(qū)號(hào) char (6) NULL, 地區(qū) varchar (12) NULL, 電話 varchar (20) NULL, 傳真 varchar (20) NULL, 電報(bào) varchar (20) NULL, 開戶行 varchar (40) NULL, 開戶行郵編 char (6) NULL, 銀行帳號(hào) varchar (20) NULL, 稅號(hào) varchar (20) NULL, 性質(zhì) varchar (10) NULL, 業(yè)務(wù)員 char (10) NULL, 業(yè)務(wù)部門 varchar (20) NULL, 授信額度 de
18、cimal (28,6) NULL,)GO創(chuàng)建“進(jìn)貨單和進(jìn)貨單明細(xì)”數(shù)據(jù)表CREATE TABLE dbo.進(jìn)貨單 ( 編號(hào) char (14) NOT NULL Primary Key, 供貨商號(hào) char (10)NOT NULL, 進(jìn)貨日期 datetime NULL, 業(yè)務(wù)員 char (10) NULL, 制單人 char (10) NULL, 驗(yàn)收員 char (10) NULL, 保管人 char (10) NULL, 稅價(jià)合計(jì) decimal (28,6) NULL, 不含稅價(jià) decimal (28,6) NULL, 稅額 decimal (28,6) NULL, 訂單號(hào) c
19、har (14) NULL)GOCREATE TABLE dbo.進(jìn)貨單明細(xì) ( 編號(hào) char (14) NOT NULL Primary Key, 進(jìn)貨單號(hào) char (14)NOT NULL, 貨號(hào) char (14) NOT NULL, 進(jìn)貨數(shù)量 decimal (28,6) NOT NULL, 進(jìn)價(jià) decimal (28,6) NULL, 稅價(jià)合計(jì) decimal (28,6) NULL, 扣率 decimal (28,6) NULL, 稅率 decimal (28,6) NULL, 不含稅價(jià) decimal (28,6) NULL, 稅額 decimal (28,6) NULL,
20、 倉庫 char (20) NULL, 貨物質(zhì)量 varchar (50)NULL)GO創(chuàng)建“銷售單和銷售單明細(xì)”數(shù)據(jù)表CREATE TABLE dbo.銷售單 ( 編號(hào) char (14) NOT NULL Primary Key, 客戶編號(hào) char (10)NOT NULL, 銷售日期 datetime NULL, 業(yè)務(wù)員 char (10) NULL, 制單人 char (10) NULL, 保管人 char (10) NULL, 稅價(jià)合計(jì) decimal (28,6) NULL, 不含稅價(jià) decimal (28,6) NULL, 稅額 decimal (28,6) NULL, 訂單
21、號(hào) char (14) NOT NULL)GOCREATE TABLE dbo.銷售單明細(xì) ( 編號(hào) char (14) NOT NULL Primary Key, 銷售單號(hào) char (14)NOT NULL, 貨號(hào) char (14) NOT NULL, 銷售數(shù)量 decimal (28,6) NOT NULL, 銷售價(jià) decimal (28,6) NULL, 稅價(jià)合計(jì) decimal (28,6) NULL, 扣率 decimal (28,6) NULL, 稅率 decimal (28,6) NULL, 不含稅價(jià) decimal (28,6) NULL, 稅額 decimal (28,
22、6) NULL, 倉庫 char (20) NULL )GO創(chuàng)建起他重要數(shù)據(jù)表CREATE TABLE dbo.庫存庫 ( 貨號(hào) char (14) NOT NULL, 倉庫 varchar (20)NOT NULL, 庫存數(shù)量 decimal (28,6) NOT NULL, 庫存金額 decimal (28,6) NOT NULL, 庫存單價(jià) decimal (28,6) NOT NULL, 最新進(jìn)價(jià) decimal (28,6) NULL, )GOCREATE TABLE dbo.權(quán)限清單 ( 權(quán)限序號(hào) int IDENTITY (1,1) NOT NULL,用戶編號(hào) char (6)
23、NULL, 部門 char (20)NULL, 權(quán)限名稱 char (6) NOT NULL )GO創(chuàng)建外部關(guān)鍵字ALTER TABLE dbo.進(jìn)貨單 ADD CONSTRAINT 進(jìn)貨單_供貨商_fk FOREIGN KEY ( 供貨商號(hào) ) REFERENCES dbo.供貨商清單( 供貨商號(hào) )GOALTER TABLE dbo.進(jìn)貨單明細(xì) ADD CONSTRAINT FK_進(jìn)貨單明細(xì)_進(jìn)貨單 FOREIGN KEY ( 進(jìn)貨單號(hào) ) REFERENCES dbo.進(jìn)貨單( 編號(hào) ), CONSTRAINT 進(jìn)貨單明細(xì)_貨號(hào)_fk FOREIGN KEY ( 貨號(hào) ) REFEREN
24、CES dbo.商品清單( 貨號(hào) )GOALTER TABLE dbo.銷售單 ADD CONSTRAINT 銷售單_客戶編號(hào)_fk FOREIGN KEY ( 客戶編號(hào) ) REFERENCES dbo.客戶清單( 客戶編號(hào) )GOALTER TABLE dbo.銷售單明細(xì) ADD CONSTRAINT FK_銷售單明細(xì)_銷售單 FOREIGN KEY ( 銷售單號(hào) ) REFERENCES dbo.客戶清單( 編號(hào) ),CONSTRAINT 銷售單明細(xì)_貨號(hào)_fk FOREIGN KEY ( 貨號(hào) ) REFERENCES dbo.商品清單( 貨號(hào) )GO(四)創(chuàng)建存儲(chǔ)過程系統(tǒng)使用了兩個(gè)存
25、儲(chǔ)過程,分別實(shí)現(xiàn)進(jìn)貨時(shí)增加庫存、產(chǎn)生應(yīng)付款和銷售時(shí)減少庫存、產(chǎn)生應(yīng)收款的功能。建庫腳本如下:CREATE PROCEDURE sf_進(jìn)貨單 記賬人 char(10) = NULLASBegin transactionINSERT INTO 庫存庫(貨號(hào),倉庫,庫存數(shù)量,庫存金額,庫存單價(jià)) SELECT DISTINCT j.貨號(hào),j.倉庫,0,0,0 FROM 進(jìn)貨單明細(xì) AS J left join 庫存庫 as k on (j.倉庫=k.倉庫 and j.貨號(hào)=k.貨號(hào))Where k.貨號(hào) is null UPDATA 庫存庫 SET 庫存單價(jià)=case when 庫存數(shù)量=0 or
26、(庫存數(shù)量+數(shù)量ALL)=0 then 進(jìn)價(jià)Else (庫存金額+稅價(jià)合計(jì)ALL)/(庫存數(shù)量+數(shù)量ALL)end, 庫存數(shù)量=庫存數(shù)量+數(shù)量ALL, 庫存金額=case when 庫存數(shù)量=0 or(庫存數(shù)量+數(shù)量ALL)=0 then 進(jìn)價(jià)+(庫存數(shù)量+數(shù)量ALL)Else (庫存金額+稅價(jià)合計(jì)ALL) end, 最新進(jìn)價(jià)=進(jìn)價(jià) FROM (SELECT 倉庫,貨號(hào),數(shù)量ALL=sum(進(jìn)貨數(shù)量),進(jìn)價(jià)=sum(稅價(jià)合計(jì))/sum(進(jìn)貨數(shù)量),稅價(jià)合計(jì)ALL =sum(稅價(jià)合計(jì))FROM 進(jìn)貨單明細(xì)GROUP BY 倉庫,貨號(hào))AS LSJ WHERE 庫存庫.倉庫=LSJ.倉庫 AND
27、庫存庫.貨號(hào)=LSJ.貨號(hào) INSERT INTO 應(yīng)付款(編號(hào),進(jìn)貨單號(hào),貨號(hào),進(jìn)貨商號(hào),數(shù)量,進(jìn)貨單價(jià),金額,進(jìn)貨日期,狀態(tài)) SELECT 付+a.編號(hào),b.編號(hào),a.貨號(hào),b.供貨商號(hào),進(jìn)貨數(shù)量,進(jìn)價(jià),a.稅價(jià)合計(jì),進(jìn)貨日期,應(yīng)付 FROM 進(jìn)貨單明細(xì) as a.進(jìn)貨單 as bWhere a.進(jìn)貨單號(hào)=b.編號(hào)INSERT INTO 進(jìn)貨單歷史 SELECT * FROM 進(jìn)貨單INSERT INTO 進(jìn)貨單明細(xì)歷史 SELECT * FROM 進(jìn)貨單明細(xì)Delete from 進(jìn)貨單明細(xì)Delete from 進(jìn)貨單CommitGoCREATE PROCEDURE sf_銷售單 記
28、賬人 char(10) = NULLASBegin transactionUPDATA 庫存庫 SET 庫存數(shù)量=庫存數(shù)量-數(shù)量ALL,庫存金額=庫存單價(jià) * (庫存數(shù)量-數(shù)量ALL) FROM(SELECT 倉庫,貨號(hào),數(shù)量ALL=sum(銷售數(shù)量)FROM 進(jìn)貨單明細(xì)GROUP BY 倉庫,貨號(hào))AS LSJ WHERE 庫存庫.倉庫=LSJ.倉庫 AND 庫存庫.貨號(hào)=LSJ.貨號(hào) INSERT INTO 應(yīng)付款(編號(hào),銷售單號(hào),貨號(hào),客戶編號(hào),數(shù)量,銷售價(jià),金額,銷售日期,狀態(tài)) SELECT 收+a.編號(hào),b.編號(hào),a.貨號(hào),b.客戶編號(hào),銷售數(shù)量,銷售價(jià),a.稅價(jià)合計(jì),進(jìn)貨日期,應(yīng)
29、收 FROM 銷售單明細(xì) as a.銷售單 as bWhere a.銷售單號(hào)=b.編號(hào)INSERT INTO 銷售單歷史 SELECT * FROM 銷售單INSERT INTO 銷售單明細(xì)歷史 SELECT * FROM 銷售單明細(xì)Delete from 銷售單明細(xì)Delete from 銷售單CommitGo四.窗體設(shè)計(jì)(一)創(chuàng)建系統(tǒng)主窗體1.利用系統(tǒng)默認(rèn)生成的窗體作為主窗體,并將其對(duì)應(yīng)的文件更名為frmMain.vb,為其添加一個(gè)主菜單(MainMenu)控件。2.窗體的部分屬性設(shè)置如下:對(duì)象(控件)名 屬性 取值(說明)frmMain Name frmMainfrmMain Capti
30、on 進(jìn)銷存管理frmMain IsMdiContainer TruefrmMain StartPosition CenterScreen frmMain WindowState Maximized表3.23.在主菜單控件上單擊鼠標(biāo)左鍵進(jìn)入菜單編輯模式,編輯菜單。4.在窗體frmMain對(duì)應(yīng)的代碼文件中添加私有變量以及程序入口函數(shù)Main.Public UserId AsString整個(gè)程序的入口PublicSharedSub Main()顯示登陸對(duì)話框Dim loginFrm As frmLogin = New frmLogin loginFrm.ShowDialog()合法用戶進(jìn)入系統(tǒng)If
31、 loginFrm.bResult = TrueThenDim frm As frmMain = New frmMain frm.UserName = loginFrm.UserName frm.UserId = loginFrm.UserId Application.Run(frm)EndIf5.設(shè)置程序的啟動(dòng)項(xiàng)目,選擇項(xiàng)目|進(jìn)銷存管理 屬性命令,在彈出的對(duì)話框中的啟動(dòng)對(duì)象下拉列表中選擇Sub Main,點(diǎn)擊確定。6.添加判斷子窗體實(shí)例狀態(tài)的函數(shù)GetInstanceState,此函數(shù)的主要作用是實(shí)現(xiàn)單機(jī)主窗體的某菜單項(xiàng),如進(jìn)貨單只是出現(xiàn)一個(gè)進(jìn)貨單子窗體。PrivateFunction Ge
32、tInstanceState(ByVal name AsString) AsBoolean獲得frmMain窗體的子窗體的數(shù)量Dim i AsInteger = Me.MdiChildren.Length循環(huán)判斷是否有名為name的子窗體實(shí)例For i = 0 ToMe.MdiChildren.Length - 1IfMe.MdiChildren(i).Name = name Then存在名為name的子窗體,是子窗體獲得焦點(diǎn)并返回TrueMe.MdiChildren(i).Focus()ReturnTrueEndIfNext不存在名為Name的子窗體FalseReturnFalseEndFu
33、nction7.為菜單商品資料維護(hù)的Click事件添加相應(yīng)函數(shù)。PrivateSub MenuItemGoodsInfo_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles MenuItemGoodsInfo.Click判斷商品資料維護(hù)窗體是是否已經(jīng)創(chuàng)建If GetInstanceState(frmGoodsInfo) Then商品資料維護(hù)窗體已經(jīng)創(chuàng)建并返回ExitSubEndIf創(chuàng)建并顯示商品資料維護(hù)窗體Dim childFrm As frmGoodsInfo = New frmGoodsInf
34、o childFrm.MdiParent = Me childFrm.Show()EndSub其他菜單的Click事件相應(yīng)代碼已上面的基本一致,這里不再一一敘述。(二)創(chuàng)建數(shù)據(jù)訪問模塊因?yàn)楦鱾€(gè)窗體均需要對(duì)數(shù)據(jù)庫進(jìn)行訪問,可以把數(shù)據(jù)庫的一些操作通過一個(gè)類實(shí)現(xiàn),這樣可以使對(duì)數(shù)據(jù)庫的訪問更加簡單。1.選擇文件|添加新項(xiàng)命令添加一個(gè)名為“DataBase.vb” 的類文件。 2.用如下內(nèi)容替換DataBase.vb中的內(nèi)容。Imports System.DataImports System.Data.SqlClientImports System.ComponentModelPublicClass D
35、ataBase實(shí)現(xiàn)接口IDisposableImplements IDisposable數(shù)據(jù)庫連接對(duì)象Private SqlConn As SqlConnectionPublicShared sConn AsString = Persist Security Info=False; _ + Integrated Security=SSPI;database=jxcbook; _ + server=localhost;Connect Timeout=30PublicSub Dispose() Implements System.IDisposable.Dispose Dispose(True)
36、GC.SuppressFinalize(True)EndSubProtectedSub Dispose(ByVal disposing AsBoolean)If disposing TrueThenReturnEndIfIf SqlConn IsNothing = FalseThen SqlConn.Dispose() SqlConn =NothingEndIfEndSubPublicSub Open()If SqlConn IsNothing = TrueThen建立數(shù)據(jù)庫連接對(duì)象 SqlConn = New SqlConnection(Me.sConn)打開數(shù)據(jù)庫連接 SqlConn.Op
37、en()EndIfEndSubPublicSub Close()如果數(shù)據(jù)庫連接對(duì)象不為空則關(guān)閉數(shù)據(jù)庫連接If SqlConn IsNothing = FalseThen SqlConn.Close()EndIfEndSubPublicFunction RunSelectSQL(ByVal sSQLString _As System.String) As DataViewMe.Open()Dim SqlDS As DataSet = New DataSetDim SqlDA As SqlDataAdapter = _New SqlDataAdapter(sSQLString, Me.SqlCon
38、n) SqlDA.Fill(SqlDS)Return SqlDS.Tables(0).DefaultViewEndFunctionPublicFunction RunDelOrInsSQL(ByVal sSQLString _As System.String)Me.Open()Dim SqlComm As SqlCommand = _New SqlCommand(sSQLString, Me.SqlConn) SqlComm.ExecuteNonQuery()EndFunctionEndClass(三)實(shí)現(xiàn)系統(tǒng)登錄功能在用戶輸入“用戶號(hào)”和“密碼”后對(duì)用戶的輸入進(jìn)行驗(yàn)證,并記錄登錄用戶的姓名和
39、用戶名,供系統(tǒng)使用。各控件的屬性設(shè)置如下??丶愋?對(duì)象名 屬性 取值(說明)Form frmLogin Caption 登錄Form frmLogin Position CenterScreenForm frmLogin FormBorderStyle Fixen3DLabel lblUserID Text 用戶編號(hào)Label lblName Text 用戶名Label lblPwd Text 密碼Label lblText Text 初始用戶為:1密碼為 sys TextBox txbUserId TextTextBox txbName TextTextBox txbPwd Passwor
40、dChar *TextBox txbPwd TextButton btnSubmit Caption 確定Button btnClear Caption 取消表3.3代碼如下:為frmLogin類添加如下兩個(gè)公共變量。用于返回登陸結(jié)果Public bResult AsBoolean = False登陸用戶的IDPublic UserId AsString = 登陸的用戶名Public UserName AsString = 登陸的用戶密碼Private UserPwd AsString = 為文本txbUserId,txbPwd分別添加KeyPress時(shí)間相應(yīng)函數(shù)。PrivateSub txb
41、Pwd_KeyPress(ByVal sender AsObject, _ByVal e As KeyPressEventArgs) Handles txbPwd.KeyPress判斷是否是回車鍵If e.KeyChar = Microsoft.VisualBasic.ChrW(13) _And UserId Then是回車鍵并調(diào)用【確定】按鈕的單擊事件響應(yīng)函數(shù)Me.btnSubmit_Click(Nothing, Nothing)EndIfEndSubPrivateSub txbUserId_KeyPress(ByVal sender AsObject, _ByVal e As KeyPre
42、ssEventArgs) Handles txbUserId.KeyPressIf e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then將焦點(diǎn)移到txbPwdMe.txbPwd.Focus()EndIfEndSub為文本框txbUserId添加LostFocus事件相應(yīng)函數(shù)。PrivateSub txbUserId_LostFocus(ByVal sender AsObject, _ByVal e As System.EventArgs) Handles txbUserId.LostFocus定義一個(gè)數(shù)據(jù)訪問類的對(duì)象Dim db As DataBase
43、 = New DataBase根據(jù)輸入的用戶ID進(jìn)行查詢Dim dv As DataView = _ db.RunSelectSQL _ (select 密碼,姓名 from 用戶清單 where 用戶編號(hào) = _ + Me.txbUserId.Text.Trim() + )判斷用戶ID是否存在If dv.Count = 0 Then用戶ID不存在Me.txbUserId.Text = Me.txbPwd.Text = Me.txbName.Text = Else用戶ID存在 UserId = Me.txbUserId.Text.Trim()獲得用戶的密碼級(jí)用戶名Me.UserPwd = dv
44、.Item(0)(密碼)Me.txbName.Text = dv.Item(0)(姓名)EndIf釋放數(shù)據(jù)訪問類的占用資源 db.Dispose()EndSub為按鈕btnSubmi,btnClear分別添加Click事件相應(yīng)函數(shù)。PrivateSub btnSubmit_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles btnSubmit.Click判斷用戶輸入密碼的合法性IfMe.UserPwd.Trim() = Me.txbPwd.Text.Trim() _And UserPwd Then
45、合法用戶 bResult = True UserName = Me.txbName.Text.Trim()Me.Close()Else密碼錯(cuò)誤 bResult = False MessageBox.Show(請(qǐng)確認(rèn)你的用戶名或密碼是否正確)EndIfEndSubPrivateSub btnClear_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles btnClear.Click關(guān)閉登陸對(duì)話框Me.Close()關(guān)閉整個(gè)程序 Application.Exit()EndSub運(yùn)行程序可以看到,系統(tǒng)首
46、先要求用戶輸入用戶名和密碼,并與“用戶清單”中的信息進(jìn)行對(duì)比,認(rèn)證通過后才可以進(jìn)入系統(tǒng)。(四)實(shí)現(xiàn)商品資料維護(hù)功能新建一個(gè)窗體,將其Name屬性位置為“frmGoodsInfo”并在窗體上分別添加一個(gè)ImageList控件,一個(gè)ToolBar控件,一個(gè)Label控件,一個(gè)TextBox控件,一個(gè)Button控件,一個(gè)GroupBox控件和一個(gè)DataGrid控件。各控件的屬性設(shè)置如下:控件類型 對(duì)象名 屬性 取值(說明)Form frmGoodsInfo Text 商品信息維護(hù)ImageList ImageList1 Images ToolBar ToolBar1 ImageList Imag
47、eList1ToolBar ToolBar1 ButtonsLabel lblGoodsPY Text 商品拼音TextBox txbGoodsPY TextButton btnSearch Text 查詢表3.4利用Visual Basic.NET中可視化的方法建立數(shù)據(jù)庫的連接:1.從工具箱中拖動(dòng)一個(gè)SqlDataAdapter對(duì)象到窗體上,在出現(xiàn)的數(shù)據(jù)適配器配置向?qū)е校ㄈ鐖D3.2)單擊下一步按鈕繼續(xù),這個(gè)步驟是用來設(shè)定要連接那個(gè)數(shù)據(jù)庫,此時(shí)可以選擇原有數(shù)據(jù)連接也可新建連接(如圖3.3)。對(duì)于第一次可以單擊新建連接按鈕,在彈出的數(shù)據(jù)鏈接屬性對(duì)話框中(如圖3.4)進(jìn)行相應(yīng)設(shè)置。2.數(shù)據(jù)鏈接屬性
48、對(duì)話框設(shè)置完畢后單機(jī)確定按鈕返回到數(shù)據(jù)適配器配置向?qū)?,單擊下一步按鈕繼續(xù),要求選擇查詢類型(如圖3.5),直接使用默認(rèn)的使用SQL語句選項(xiàng)。3.單擊下一步按鈕,繼續(xù)下一步驟。4.如圖3.6,單擊查詢生成器按鈕,在添加表對(duì)話框的表選項(xiàng)中(如圖3.7),選擇商品清單,單擊添加按鈕,在單擊關(guān)閉按鈕5.現(xiàn)在返回查詢生成器,在商品清單表中選擇*(所有列)選項(xiàng),同時(shí)也可以一個(gè)一個(gè)字段的選擇,完成后單擊確定按鈕。6.現(xiàn)在回到數(shù)據(jù)適配器配置向?qū)У漠嬅妫ㄈ鐖D3.8)單擊下一步按鈕會(huì)出現(xiàn)一個(gè)新的對(duì)話框,單擊完成按鈕,結(jié)束整個(gè)向?qū)А?.右擊SqlDataAdapter1對(duì)象,在彈出的快捷菜單中選擇生成數(shù)據(jù)集菜單命令
49、。出現(xiàn)的生成數(shù)據(jù)集對(duì)話框中(如圖3.9),選擇新建單選按鈕,然后單擊確定按鈕。圖3.2 數(shù)據(jù)適配器配置向?qū)D 3.3 選擇數(shù)據(jù)庫連接對(duì)象圖3.4設(shè)置數(shù)據(jù)鏈接屬性 圖3.5選擇查詢類型圖3.6生成SQL語句對(duì)話框 圖3.7在查詢生成器中添加數(shù)據(jù)表圖3.8數(shù)據(jù)適配器配置向?qū)ё鳂I(yè)完成 圖3.9生成數(shù)據(jù)集對(duì)話框添加代碼如下:為類frmGoodsInfo添加如下變量。用于判斷雙擊是否關(guān)閉Public bClose = False用于記錄在DataGrid上雙擊時(shí)間Private gridMouseDownTime As DateTime為窗體frmGoodsInfo的Load事件添加事件相應(yīng)代碼。Pri
50、vateSub frmGoodsInfo_Load(ByVal sender As System.Object, _ByVal e As System.EventArgs) HandlesMyBase.Load定義一個(gè)DataGrid表樣式Dim ts AsNew DataGridTableStyle定義一個(gè)DataGrid列樣式Dim aColumnTextColumn As DataGridTextBoxColumn獲得DataGrid數(shù)據(jù)源表的列數(shù)Dim numCols AsInteger = _ DataSet11.Tables(商品清單).Columns.Count()Dim i A
51、sInteger循環(huán)為DataGrid添加列樣式For i = 0 To numCols - 1 aColumnTextColumn = New DataGridTextBoxColumn設(shè)置MappingName和HeaderText屬性 aColumnTextColumn.MappingName = _ DataSet11.Tables(商品清單).Columns(i).ColumnName() aColumnTextColumn.HeaderText = _ DataSet11.Tables(商品清單).Columns(i).ColumnName()設(shè)置NullText屬性為空 aCol
52、umnTextColumn.NullText = 設(shè)置格式化文本的方法 aColumnTextColumn.Format = F為列樣式對(duì)應(yīng)的TextBox添加事件響應(yīng)為DataGrid單元格支持雙擊雙擊添加事件響應(yīng)AddHandler aColumnTextColumn.TextBox.MouseDown, _New MouseEventHandler(AddressOf DGDoubleClick)AddHandler aColumnTextColumn.TextBox.DoubleClick, _New EventHandler(AddressOf dgdGoodInfo_DoubleC
53、lick)將列樣式添加到表樣式中 ts.GridColumnStyles.Add(aColumnTextColumn)Next設(shè)置設(shè)置DataGrid中奇數(shù)行的背景色 ts.AlternatingBackColor = Color.LightGray ts.AllowSorting = False將表樣式ts添加到DataGrid中 dgdGoodInfo.TableStyles.Add(ts) SqlConnection1.ConnectionString = DataBase.sConn用SqlDataAdapter1填充DataSet11的商品清單表 SqlDataAdapter1.Fi
54、ll(DataSet11, 商品清單)設(shè)置dgdGoodInfo的數(shù)據(jù)源 ts.MappingName = DataSet11.Tables(商品清單).TableName dgdGoodInfo.DataSource = _ DataSet11.Tables(商品清單).DefaultViewEndSub為按鈕dgdGoodInfo的DoubleClick事件添加事件相應(yīng)代碼。PrivateSub dgdGoodInfo_DoubleClick(ByVal sender AsObject, _ByVal e As System.EventArgs) Handles dgdGoodInfo.D
55、oubleClickIf bClose Then Close()EndIfEndSub由于.NET 的DataGrid不直接支持雙擊某個(gè)單元格的DoubleClick事件。現(xiàn)在通過添加dgdGoodInfo的MouseDown事件的相應(yīng)函數(shù)以及函數(shù)DGDoubleClick實(shí)現(xiàn)這個(gè)功能。PrivateSub dgdGoodInfo_MouseDown(ByVal sender AsObject, _ByVal e As MouseEventArgs) Handles dgdGoodInfo.MouseDown記住在dgdGoodInfo點(diǎn)下鼠標(biāo)的時(shí)間 gridMouseDownTime = D
56、ateTime.NowEndSubPrivateSub DGDoubleClick(ByVal sender AsObject, _ByVal e As MouseEventArgs)判斷兩次單擊時(shí)間是否小于雙擊的時(shí)間間隔If (DateTime.Now gridMouseDownTime.AddMilliseconds _ (SystemInformation.DoubleClickTime) Then兩次單擊時(shí)間小于雙擊的時(shí)間間隔則調(diào)用dgdGoodInfo雙擊處理函數(shù) dgdGoodInfo_DoubleClick(Nothing, Nothing)EndIfEndSub為按鈕btnSe
57、arch的Click事件添加事件相應(yīng)函數(shù)。PrivateSub btnSearch_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles btnSearch.ClickDim strSQL AsString = SELECT 貨號(hào), 條碼, 拼音編碼, strSQL += 品名, 規(guī)格, 單位,產(chǎn)地, 類別, 進(jìn)貨價(jià), 銷售價(jià)1 strSQL += , 銷售價(jià)2, 最低售價(jià) FROM 商品清單If txbGoodsPY.Text.Length 0 Then如果商品拼音不為空進(jìn)行查詢清空DataSet
58、11商品清單表的內(nèi)容 DataSet11.Tables(商品清單).Clear()生成查詢的SQL語句 strSQL += where 拼音編碼 like strSQL += txbGoodsPY.Text.Trim() + %EndIf SqlDataAdapter1.SelectCommand.CommandText = strSQL重新填充DataSet11 SqlDataAdapter1.Fill(DataSet11)EndSub.NET的DataGrid的列只支持兩種樣式:一種是DataGridTextColumn,表現(xiàn)為單元格時(shí)是一個(gè)TextBox;另一種是DataGridBool
59、Column,表現(xiàn)為單元格時(shí)為一個(gè)CheckBox,如果想添加ComboBox列可以通過以下步驟實(shí)現(xiàn)。為frmGoodsInfo類添加變量。用于下拉列表的ComboBox的對(duì)象Public MyCombo AsNew ComboBox在frmGoodsInfo的Load事件相應(yīng)函數(shù)中添加如下代碼。為MyCombo添加TextChanged事件響應(yīng)AddHandler MyCombo.TextChanged, AddressOf Ctrls_TextChanged設(shè)置MyCombo的Name以及Visible屬性 MyCombo.Name = MyCombo MyCombo.Visible =
60、False MyCombo.DropDownStyle = ComboBoxStyle.DropDown清空MyCombo MyCombo.Items.Clear()給MyCombo添加項(xiàng) MyCombo.Items.Add(包) MyCombo.Items.Add(瓶) MyCombo.Items.Add(盒) MyCombo.Items.Add(袋) MyCombo.Items.Add(箱)把MyCombo加入到dgdGoodInfo的Controls集合中 dgdGoodInfo.Controls.Add(MyCombo)為下拉列表框MyCombo的TextChanged事件相應(yīng)函數(shù)Ct
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 7436:2024 EN Fasteners - Slotted set screws with cup point
- 2025年度二手房買賣交易合同(附帶房屋抵押權(quán)解除及貸款還款計(jì)劃)
- 2025年度新能源項(xiàng)目安全生產(chǎn)責(zé)任書匯編
- 2025年度科技創(chuàng)新項(xiàng)目資金擔(dān)保合同
- 2025年高科技車間承包服務(wù)協(xié)議
- 2025年度社區(qū)配套車位代理銷售服務(wù)合同
- 傳統(tǒng)藝術(shù)與現(xiàn)代美術(shù)課程融合計(jì)劃
- 如何進(jìn)行有效的課堂觀察計(jì)劃
- 提升自我管理能力的策略計(jì)劃
- 關(guān)注員工個(gè)人發(fā)展的措施計(jì)劃
- 火力發(fā)電廠水、汽試驗(yàn)方法(標(biāo)準(zhǔn)規(guī)程匯編)
- 傷寒論類方整理
- 急性心肌梗塞
- 八年級(jí)地理下期教學(xué)計(jì)劃(星球地圖版)
- GB/T 19675.2-2005管法蘭用金屬?zèng)_齒板柔性石墨復(fù)合墊片技術(shù)條件
- 藍(lán)色科技風(fēng)半導(dǎo)體產(chǎn)業(yè)PPT模板
- 院感手衛(wèi)生培訓(xùn)課件
- 鑄牢中華民族共同體意識(shí)學(xué)習(xí)PPT
- 多重耐藥鮑曼不動(dòng)桿菌治療課件
- PID圖(工藝儀表流程圖)基礎(chǔ)知識(shí)培訓(xùn)課件
- 《澳大利亞特有動(dòng)物》課件
評(píng)論
0/150
提交評(píng)論