版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、目錄摘要.2ABSTRACT2 系統(tǒng)概述.3一. 應用背景3二. 系統(tǒng)功能3三. 系統(tǒng)預覽3 四. 系統(tǒng)特點4第二章 .系統(tǒng)分析4一. 初步調(diào)查4 (一)進銷存系統(tǒng)的任務4 (二)進銷存系統(tǒng)的作用4 二. 詳細調(diào)查4 (一)進銷存系統(tǒng)需求分析4 (二)進銷存系統(tǒng)數(shù)據(jù)庫分析5(三)進銷存系統(tǒng)E-R圖5三. 可行性分析5 (一)系統(tǒng)功能5 (二)系統(tǒng)流程圖6第三章 系統(tǒng)設計和數(shù)據(jù)庫設計6 一. 系統(tǒng)功能模塊劃分6 二. 系統(tǒng)流程分析7三. 數(shù)據(jù)庫設計7 (一)數(shù)據(jù)庫結(jié)構(gòu)設計8 (二)創(chuàng)建數(shù)據(jù)庫8 (三)設計數(shù)據(jù)表8 (四)創(chuàng)建存儲過程13四. 窗體設計14(一)創(chuàng)建系統(tǒng)主窗體14(二)創(chuàng)建數(shù)據(jù)訪問
2、模塊15(三)實現(xiàn)系統(tǒng)登錄功能17(四)實現(xiàn)商品資料維護功能19(五)實現(xiàn)進貨功能26(六)實現(xiàn)進貨單單據(jù)打印功能31第四章 系統(tǒng)平臺選擇32一. 開發(fā)工具選擇.32二. 開發(fā)和運行平32結(jié)束語32謝辭34參考文獻35【摘要】本系統(tǒng)是實現(xiàn)一個公司進貨、銷售和庫存管理的管理系統(tǒng),并用于簡單的資料管理及權(quán)限管理。是單機版應用程序。該系統(tǒng)使用microsoft公司的Visual Basic.NET 作為前臺開發(fā)工具,微軟公司的SQL Server 2000做后臺數(shù)據(jù)庫。文章論述了系統(tǒng)的設計與實現(xiàn)?!娟P(guān)鍵詞】進銷存系統(tǒng); 數(shù)據(jù)庫; 系統(tǒng)設計 【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超市進銷存系統(tǒng)第一章 緒論一 應用背景隨著企業(yè)的發(fā)展,以及軟件開發(fā)的逐步成熟,進銷存系統(tǒng)使得原來繁重而又容易出錯的進銷存管理變得簡單而有條理。能夠節(jié)省大量的人員成本,也使管理變得可靠方便。它可以是一個獨立的項目,
5、也可以是一個完整的功能模塊,對于整個ERP系統(tǒng)的開發(fā)也可以輕易的將它集成進去.二 系統(tǒng)功能 進銷存管理系統(tǒng)的主要功能如下所示。資料管理:管理商品信息,供貨商信息和客戶信息,分別用于維護企業(yè)所經(jīng)營商品的基本信息,供貨商及客戶的基本信息。進貨管理:管理進貨單信息,用于錄入企業(yè)的進貨單,分為主從兩張表,主表“進貨單”內(nèi)容包括編號、供貨商號、進貨日期、業(yè)務員等,從表“進貨單明細”內(nèi)容包括編號、進貨單號、貨號、進貨數(shù)量、進價等。銷售管理:管理銷售單信息,用于錄入企業(yè)的銷售單。主表“銷售單”內(nèi)容包括編號、客戶編號、銷售日期、業(yè)務員等,從表“銷售單明細”內(nèi)容包括編號、銷售單號、貨號、銷售價等。庫存管理:管理
6、庫存信息,用于查詢企業(yè)商品的庫存。系統(tǒng)管理:管理用戶權(quán)限,用于設置各操作員使用系統(tǒng)的權(quán)限,為了方便設置,一般的應用系統(tǒng)都是可以將操作人員分組的,將通用的權(quán)限賦予整個組,個別的權(quán)限單獨賦予個人,這樣可以大大減少權(quán)限管理的工作量。三 系統(tǒng)預覽 由于在下面的章節(jié)中會給出具體的介紹,在此只給出主界面的一個預覽,如圖2.1所示。圖1.1 主界面預覽四 系統(tǒng)特點進銷存管理系統(tǒng)的制作就是為了將進銷存管理變得簡單可靠,節(jié)省人力,實現(xiàn)傻瓜的操作。本系統(tǒng)給出了一套較完善的易學易用的進銷存管理系統(tǒng)。 第二章 系統(tǒng)分析一 初步調(diào)查(一)進銷存管理的任務進銷存管理工作的主要任務有:企業(yè)的采購管理企業(yè)的銷售管理(批發(fā)、零
7、售、連鎖)企業(yè)各部門的商品配送管理企業(yè)庫存商品的管理企業(yè)應收款,應付款的管理企業(yè)經(jīng)營狀況分析與決策(二)進銷存管理系統(tǒng)的作用提高管理效率,降低人工成本降低采購成本及時調(diào)整營銷策略,防止價格流失防范陳呆死帳,降低應收帳款減少倉儲面積,提高房產(chǎn)綜合利用降低儲備資金占用加快資金周轉(zhuǎn),實現(xiàn)經(jīng)濟效益強化財務監(jiān)控制,實現(xiàn)經(jīng)濟效益商業(yè)數(shù)據(jù)智能分析高效決策二 詳細調(diào)查(一)進銷存管理系統(tǒng)需求分析根據(jù)以上對進銷存管理內(nèi)容和進銷存管理系統(tǒng)的分析,一個標準的進銷存管理系統(tǒng)應該包括如圖2.1所示的幾大功能。其中每個功能都由若干相關(guān)聯(lián)的子功能模塊組成。圖2.1 進銷存管理系統(tǒng)的基本功能模塊(二)進銷存管理系統(tǒng)數(shù)據(jù)庫分析
8、根據(jù)以上需求分析,一個基本的進銷存管理系統(tǒng)數(shù)據(jù)庫中大致包括60多張數(shù)據(jù)表,分別存放相應子功能的數(shù)據(jù)信息,其中商品清單、供貨商清單和客戶清單是起關(guān)鍵作用的表,用于存放基礎的數(shù)據(jù)信息。其他涉及商品、供貨商和客戶信息的表,都只記錄這些元素的編號,根據(jù)作為外鍵的“編號”字段來對應。因此這3張表和其他表間的關(guān)系是1:N的關(guān)系。因為整個系統(tǒng)涉及的實體和屬性較多,限于時間和篇幅不能逐一列舉。圖2.2為進銷存管理系統(tǒng)關(guān)鍵實體的E-R圖。圖2.2 進銷存管理系統(tǒng)E-R圖其他實體與基本信息表間的對應關(guān)系都是類似的。三 可行性分析(一)系統(tǒng)功能分析由于篇幅和時間有限,本設計詳細介紹如下圖所示功能的開發(fā)過程,并簡化其
9、中各功能所包含的屬性,其他功能完全可以參照這些功能的開發(fā)方法實現(xiàn)。圖2.3本設計介紹的功能模塊(二)系統(tǒng)流程圖圖2.4系統(tǒng)流程圖第三章 系統(tǒng)設計和數(shù)據(jù)庫設計一 系統(tǒng)功能模塊劃分系統(tǒng)大致可分為如下幾個功能模塊:登錄模塊:登錄模塊是一個很重要的模塊,是進入系統(tǒng)的門戶,對用戶信息起到了一定的保護作用.資料管理模塊:資料管理模塊中包括了對商品信息,供貨商信息以及客戶信息的管理,并提供簡單的查詢功能.進銷存管理模塊:進銷存系統(tǒng)中非常重要的就是對進貨單,銷售單和庫存記錄的管理,它是進銷存系統(tǒng)的核心部分.系統(tǒng)管理模塊:該模塊是對各操作員使用權(quán)限的管理,為了方便設置,一般的應用系統(tǒng)都是可以將操作人員分組的,將
10、通用的權(quán)限賦予整個組,個別的權(quán)限單獨賦予個人,這樣可以大大減少權(quán)限管理的工作量。二 系統(tǒng)流程分析進銷存系統(tǒng)的流程如下所示。第一步,進行登錄,如果成功則進入第二步。第二步,打開系統(tǒng)的主界面,根據(jù)相應的操作,分別跳入不同的步驟,共有五種不同的選擇。資料管理:在該模塊中可以對客戶信息、供貨商信息和商品信息進行設置與管理。進貨管理:在該模塊中可以對進貨單的記錄進行一定條件下的查詢。銷售管理:在該模塊中可以對銷售單的記錄進行一定條件下的查詢。庫存管理:在該模塊中可以對庫存情況進行一定條件下的查詢。系統(tǒng)管理:在該摸塊中不同操作員的使用權(quán)限進行設置。具體的流程如圖所示。圖3.1系統(tǒng)流程圖三 數(shù)據(jù)庫設計數(shù)據(jù)只
11、有用數(shù)據(jù)庫來管理才能有自動化管理的可能。數(shù)據(jù)的結(jié)構(gòu)將影響整個管理機制的應用,而且一但建立以后要修改常會出現(xiàn)麻煩。所以一開始就要仔細慎重地搭建一個完整而合理的結(jié)構(gòu)。所謂數(shù)據(jù)庫(Database)就是指按一定組織方式存儲在一起的,相互有關(guān)的若干個數(shù)據(jù)的結(jié)合,數(shù)據(jù)庫管理系統(tǒng)(Database Management System)就是一種操縱和管理數(shù)據(jù)庫的大型軟件,簡稱DBMS,他們建立在操作系統(tǒng)的基礎上,對數(shù)據(jù)庫進行統(tǒng)一的管理和控制,其功能包括數(shù)據(jù)庫定義,數(shù)據(jù)庫管理,數(shù)據(jù)庫建立和維護,于操作系統(tǒng)通信等。DBMS通常由數(shù)據(jù)字典,數(shù)據(jù)描述語言及其編譯程序,數(shù)據(jù)操縱(查詢)語言及其編譯程序,數(shù)據(jù)庫管理例行
12、程序等部分組成。(一)數(shù)據(jù)庫結(jié)構(gòu)設計本系統(tǒng)的數(shù)據(jù)比較復雜,存儲數(shù)據(jù)的表也比較多,如何讓各個表有機地結(jié)合起來充分發(fā)揮各自的作用,是結(jié)構(gòu)復雜數(shù)據(jù)庫的難點。本設計共需要14張表,多數(shù)是平行結(jié)構(gòu),部分表必須配對存在,有主表、副表之分。用途分別如下表所示。數(shù)據(jù)表名稱 數(shù)據(jù)表用途用戶清單 保存系統(tǒng)使用者的信息權(quán)限清單 保存系統(tǒng)使用者的權(quán)限信息,可以指定到菜單級權(quán)限商品清單 保存企業(yè)經(jīng)營商品的資料信息供貨商清單 保存企業(yè)供貨商的資料客戶清單 保存企業(yè)客戶的資料信息倉庫清單 保存企業(yè)庫房的分類信息,可以用于數(shù)據(jù)辭典業(yè)務員清單 保存企業(yè)的業(yè)務員信息,可以用于數(shù)據(jù)辭典進貨單 進貨單主表進貨單明細 進貨單從表進貨單
13、歷史 保存進貨單歷史進貨單明細歷史 保存進貨單明細歷史銷售單 銷售單主表銷售單明細 銷售單從表銷售單歷史 保存銷售單歷史銷售單明細歷史 保存銷售單明細歷史庫存庫 保存企業(yè)商品庫存的數(shù)量、金額等信息應付款、應收款 保存企業(yè)應付款明細、應收款明細表3.1個數(shù)據(jù)表之間的E-R圖可以參考圖(二)創(chuàng)建數(shù)據(jù)庫打開SQL Server企業(yè)管理器,新建一個數(shù)據(jù)庫,將其命名為jxcbook.(三)設計數(shù)據(jù)表創(chuàng)建“商品清單”數(shù)據(jù)表CREATE TABLE dbo.商品清單 ( 貨號 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, 進貨價 decimal (28,6) NULL default(0), 銷售價1 decimal (28,6) NULL default(0), 銷售價2 decimal (28,6) NULL default(0), 最低售價 decimal (28,6) NULL default(0) )GO創(chuàng)建“供貨商清單”數(shù)據(jù)表CREATE TABLE dbo.供貨商清單 ( 恭貨
15、商號 char (10) NOT NULL Primary Key,拼音編碼 char (40)NOT NULL, 簡稱 varchar (80) NULL, 名稱 varchar (80) NULL, 地址 varchar (80) NULL, 郵編 char (6) NULL, 區(qū)號 char (6) NULL, 地區(qū) char (10) NULL, 電話 varchar (20) NULL, 傳真 varchar (20) NULL, 電報 varchar (20) NULL, 開戶行 varchar (40) NULL, 開戶行郵編 char (6) NULL, 銀行帳號 varcha
16、r (20) NULL, 稅號 varchar (20) NULL, 庫房地址 varchar (40) NULL, 庫房電話 varchar (20) NULL, 業(yè)務員 char (10) NULL, 業(yè)務部門 varchar (20) NULL)GO創(chuàng)建“客戶清單”數(shù)據(jù)表CREATE TABLE dbo.客戶清單 ( 客戶編號 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ū)號 char (6) NULL, 地區(qū) varchar (12) NULL, 電話 varchar (20) NULL, 傳真 varchar (20) NULL, 電報 varchar (20) NULL, 開戶行 varchar (40) NULL, 開戶行郵編 char (6) NULL, 銀行帳號 varchar (20) NULL, 稅號 varchar (20) NULL, 性質(zhì) varchar (10) NULL, 業(yè)務員 char (10) NULL, 業(yè)務部門 varchar (20) NULL, 授信額度 de
18、cimal (28,6) NULL,)GO創(chuàng)建“進貨單和進貨單明細”數(shù)據(jù)表CREATE TABLE dbo.進貨單 ( 編號 char (14) NOT NULL Primary Key, 供貨商號 char (10)NOT NULL, 進貨日期 datetime NULL, 業(yè)務員 char (10) NULL, 制單人 char (10) NULL, 驗收員 char (10) NULL, 保管人 char (10) NULL, 稅價合計 decimal (28,6) NULL, 不含稅價 decimal (28,6) NULL, 稅額 decimal (28,6) NULL, 訂單號 c
19、har (14) NULL)GOCREATE TABLE dbo.進貨單明細 ( 編號 char (14) NOT NULL Primary Key, 進貨單號 char (14)NOT NULL, 貨號 char (14) NOT NULL, 進貨數(shù)量 decimal (28,6) NOT NULL, 進價 decimal (28,6) NULL, 稅價合計 decimal (28,6) NULL, 扣率 decimal (28,6) NULL, 稅率 decimal (28,6) NULL, 不含稅價 decimal (28,6) NULL, 稅額 decimal (28,6) NULL,
20、 倉庫 char (20) NULL, 貨物質(zhì)量 varchar (50)NULL)GO創(chuàng)建“銷售單和銷售單明細”數(shù)據(jù)表CREATE TABLE dbo.銷售單 ( 編號 char (14) NOT NULL Primary Key, 客戶編號 char (10)NOT NULL, 銷售日期 datetime NULL, 業(yè)務員 char (10) NULL, 制單人 char (10) NULL, 保管人 char (10) NULL, 稅價合計 decimal (28,6) NULL, 不含稅價 decimal (28,6) NULL, 稅額 decimal (28,6) NULL, 訂單
21、號 char (14) NOT NULL)GOCREATE TABLE dbo.銷售單明細 ( 編號 char (14) NOT NULL Primary Key, 銷售單號 char (14)NOT NULL, 貨號 char (14) NOT NULL, 銷售數(shù)量 decimal (28,6) NOT NULL, 銷售價 decimal (28,6) NULL, 稅價合計 decimal (28,6) NULL, 扣率 decimal (28,6) NULL, 稅率 decimal (28,6) NULL, 不含稅價 decimal (28,6) NULL, 稅額 decimal (28,
22、6) NULL, 倉庫 char (20) NULL )GO創(chuàng)建起他重要數(shù)據(jù)表CREATE TABLE dbo.庫存庫 ( 貨號 char (14) NOT NULL, 倉庫 varchar (20)NOT NULL, 庫存數(shù)量 decimal (28,6) NOT NULL, 庫存金額 decimal (28,6) NOT NULL, 庫存單價 decimal (28,6) NOT NULL, 最新進價 decimal (28,6) NULL, )GOCREATE TABLE dbo.權(quán)限清單 ( 權(quán)限序號 int IDENTITY (1,1) NOT NULL,用戶編號 char (6)
23、NULL, 部門 char (20)NULL, 權(quán)限名稱 char (6) NOT NULL )GO創(chuàng)建外部關(guān)鍵字ALTER TABLE dbo.進貨單 ADD CONSTRAINT 進貨單_供貨商_fk FOREIGN KEY ( 供貨商號 ) REFERENCES dbo.供貨商清單( 供貨商號 )GOALTER TABLE dbo.進貨單明細 ADD CONSTRAINT FK_進貨單明細_進貨單 FOREIGN KEY ( 進貨單號 ) REFERENCES dbo.進貨單( 編號 ), CONSTRAINT 進貨單明細_貨號_fk FOREIGN KEY ( 貨號 ) REFEREN
24、CES dbo.商品清單( 貨號 )GOALTER TABLE dbo.銷售單 ADD CONSTRAINT 銷售單_客戶編號_fk FOREIGN KEY ( 客戶編號 ) REFERENCES dbo.客戶清單( 客戶編號 )GOALTER TABLE dbo.銷售單明細 ADD CONSTRAINT FK_銷售單明細_銷售單 FOREIGN KEY ( 銷售單號 ) REFERENCES dbo.客戶清單( 編號 ),CONSTRAINT 銷售單明細_貨號_fk FOREIGN KEY ( 貨號 ) REFERENCES dbo.商品清單( 貨號 )GO(四)創(chuàng)建存儲過程系統(tǒng)使用了兩個存
25、儲過程,分別實現(xiàn)進貨時增加庫存、產(chǎn)生應付款和銷售時減少庫存、產(chǎn)生應收款的功能。建庫腳本如下:CREATE PROCEDURE sf_進貨單 記賬人 char(10) = NULLASBegin transactionINSERT INTO 庫存庫(貨號,倉庫,庫存數(shù)量,庫存金額,庫存單價) SELECT DISTINCT j.貨號,j.倉庫,0,0,0 FROM 進貨單明細 AS J left join 庫存庫 as k on (j.倉庫=k.倉庫 and j.貨號=k.貨號)Where k.貨號 is null UPDATA 庫存庫 SET 庫存單價=case when 庫存數(shù)量=0 or
26、(庫存數(shù)量+數(shù)量ALL)=0 then 進價Else (庫存金額+稅價合計ALL)/(庫存數(shù)量+數(shù)量ALL)end, 庫存數(shù)量=庫存數(shù)量+數(shù)量ALL, 庫存金額=case when 庫存數(shù)量=0 or(庫存數(shù)量+數(shù)量ALL)=0 then 進價+(庫存數(shù)量+數(shù)量ALL)Else (庫存金額+稅價合計ALL) end, 最新進價=進價 FROM (SELECT 倉庫,貨號,數(shù)量ALL=sum(進貨數(shù)量),進價=sum(稅價合計)/sum(進貨數(shù)量),稅價合計ALL =sum(稅價合計)FROM 進貨單明細GROUP BY 倉庫,貨號)AS LSJ WHERE 庫存庫.倉庫=LSJ.倉庫 AND
27、庫存庫.貨號=LSJ.貨號 INSERT INTO 應付款(編號,進貨單號,貨號,進貨商號,數(shù)量,進貨單價,金額,進貨日期,狀態(tài)) SELECT 付+a.編號,b.編號,a.貨號,b.供貨商號,進貨數(shù)量,進價,a.稅價合計,進貨日期,應付 FROM 進貨單明細 as a.進貨單 as bWhere a.進貨單號=b.編號INSERT INTO 進貨單歷史 SELECT * FROM 進貨單INSERT INTO 進貨單明細歷史 SELECT * FROM 進貨單明細Delete from 進貨單明細Delete from 進貨單CommitGoCREATE PROCEDURE sf_銷售單 記
28、賬人 char(10) = NULLASBegin transactionUPDATA 庫存庫 SET 庫存數(shù)量=庫存數(shù)量-數(shù)量ALL,庫存金額=庫存單價 * (庫存數(shù)量-數(shù)量ALL) FROM(SELECT 倉庫,貨號,數(shù)量ALL=sum(銷售數(shù)量)FROM 進貨單明細GROUP BY 倉庫,貨號)AS LSJ WHERE 庫存庫.倉庫=LSJ.倉庫 AND 庫存庫.貨號=LSJ.貨號 INSERT INTO 應付款(編號,銷售單號,貨號,客戶編號,數(shù)量,銷售價,金額,銷售日期,狀態(tài)) SELECT 收+a.編號,b.編號,a.貨號,b.客戶編號,銷售數(shù)量,銷售價,a.稅價合計,進貨日期,應
29、收 FROM 銷售單明細 as a.銷售單 as bWhere a.銷售單號=b.編號INSERT INTO 銷售單歷史 SELECT * FROM 銷售單INSERT INTO 銷售單明細歷史 SELECT * FROM 銷售單明細Delete from 銷售單明細Delete from 銷售單CommitGo四.窗體設計(一)創(chuàng)建系統(tǒng)主窗體1.利用系統(tǒng)默認生成的窗體作為主窗體,并將其對應的文件更名為frmMain.vb,為其添加一個主菜單(MainMenu)控件。2.窗體的部分屬性設置如下:對象(控件)名 屬性 取值(說明)frmMain Name frmMainfrmMain Capti
30、on 進銷存管理frmMain IsMdiContainer TruefrmMain StartPosition CenterScreen frmMain WindowState Maximized表3.23.在主菜單控件上單擊鼠標左鍵進入菜單編輯模式,編輯菜單。4.在窗體frmMain對應的代碼文件中添加私有變量以及程序入口函數(shù)Main.Public UserId AsString整個程序的入口PublicSharedSub Main()顯示登陸對話框Dim loginFrm As frmLogin = New frmLogin loginFrm.ShowDialog()合法用戶進入系統(tǒng)If
31、 loginFrm.bResult = TrueThenDim frm As frmMain = New frmMain frm.UserName = loginFrm.UserName frm.UserId = loginFrm.UserId Application.Run(frm)EndIf5.設置程序的啟動項目,選擇項目|進銷存管理 屬性命令,在彈出的對話框中的啟動對象下拉列表中選擇Sub Main,點擊確定。6.添加判斷子窗體實例狀態(tài)的函數(shù)GetInstanceState,此函數(shù)的主要作用是實現(xiàn)單機主窗體的某菜單項,如進貨單只是出現(xiàn)一個進貨單子窗體。PrivateFunction Ge
32、tInstanceState(ByVal name AsString) AsBoolean獲得frmMain窗體的子窗體的數(shù)量Dim i AsInteger = Me.MdiChildren.Length循環(huán)判斷是否有名為name的子窗體實例For i = 0 ToMe.MdiChildren.Length - 1IfMe.MdiChildren(i).Name = name Then存在名為name的子窗體,是子窗體獲得焦點并返回TrueMe.MdiChildren(i).Focus()ReturnTrueEndIfNext不存在名為Name的子窗體FalseReturnFalseEndFu
33、nction7.為菜單商品資料維護的Click事件添加相應函數(shù)。PrivateSub MenuItemGoodsInfo_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles MenuItemGoodsInfo.Click判斷商品資料維護窗體是是否已經(jīng)創(chuàng)建If GetInstanceState(frmGoodsInfo) Then商品資料維護窗體已經(jīng)創(chuàng)建并返回ExitSubEndIf創(chuàng)建并顯示商品資料維護窗體Dim childFrm As frmGoodsInfo = New frmGoodsInf
34、o childFrm.MdiParent = Me childFrm.Show()EndSub其他菜單的Click事件相應代碼已上面的基本一致,這里不再一一敘述。(二)創(chuàng)建數(shù)據(jù)訪問模塊因為各個窗體均需要對數(shù)據(jù)庫進行訪問,可以把數(shù)據(jù)庫的一些操作通過一個類實現(xiàn),這樣可以使對數(shù)據(jù)庫的訪問更加簡單。1.選擇文件|添加新項命令添加一個名為“DataBase.vb” 的類文件。 2.用如下內(nèi)容替換DataBase.vb中的內(nèi)容。Imports System.DataImports System.Data.SqlClientImports System.ComponentModelPublicClass D
35、ataBase實現(xiàn)接口IDisposableImplements IDisposable數(shù)據(jù)庫連接對象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ù)庫連接對象 SqlConn = New SqlConnection(Me.sConn)打開數(shù)據(jù)庫連接 SqlConn.Op
37、en()EndIfEndSubPublicSub Close()如果數(shù)據(jù)庫連接對象不為空則關(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(三)實現(xiàn)系統(tǒng)登錄功能在用戶輸入“用戶號”和“密碼”后對用戶的輸入進行驗證,并記錄登錄用戶的姓名和
39、用戶名,供系統(tǒng)使用。各控件的屬性設置如下??丶愋?對象名 屬性 取值(說明)Form frmLogin Caption 登錄Form frmLogin Position CenterScreenForm frmLogin FormBorderStyle Fixen3DLabel lblUserID Text 用戶編號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類添加如下兩個公共變量。用于返回登陸結(jié)果Public bResult AsBoolean = False登陸用戶的IDPublic UserId AsString = 登陸的用戶名Public UserName AsString = 登陸的用戶密碼Private UserPwd AsString = 為文本txbUserId,txbPwd分別添加KeyPress時間相應函數(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)用【確定】按鈕的單擊事件響應函數(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將焦點移到txbPwdMe.txbPwd.Focus()EndIfEndSub為文本框txbUserId添加LostFocus事件相應函數(shù)。PrivateSub txbUserId_LostFocus(ByVal sender AsObject, _ByVal e As System.EventArgs) Handles txbUserId.LostFocus定義一個數(shù)據(jù)訪問類的對象Dim db As DataBase
43、 = New DataBase根據(jù)輸入的用戶ID進行查詢Dim dv As DataView = _ db.RunSelectSQL _ (select 密碼,姓名 from 用戶清單 where 用戶編號 = _ + 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()獲得用戶的密碼級用戶名Me.UserPwd = dv
44、.Item(0)(密碼)Me.txbName.Text = dv.Item(0)(姓名)EndIf釋放數(shù)據(jù)訪問類的占用資源 db.Dispose()EndSub為按鈕btnSubmi,btnClear分別添加Click事件相應函數(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密碼錯誤 bResult = False MessageBox.Show(請確認你的用戶名或密碼是否正確)EndIfEndSubPrivateSub btnClear_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles btnClear.Click關(guān)閉登陸對話框Me.Close()關(guān)閉整個程序 Application.Exit()EndSub運行程序可以看到,系統(tǒng)首
46、先要求用戶輸入用戶名和密碼,并與“用戶清單”中的信息進行對比,認證通過后才可以進入系統(tǒng)。(四)實現(xiàn)商品資料維護功能新建一個窗體,將其Name屬性位置為“frmGoodsInfo”并在窗體上分別添加一個ImageList控件,一個ToolBar控件,一個Label控件,一個TextBox控件,一個Button控件,一個GroupBox控件和一個DataGrid控件。各控件的屬性設置如下:控件類型 對象名 屬性 取值(說明)Form frmGoodsInfo Text 商品信息維護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.從工具箱中拖動一個SqlDataAdapter對象到窗體上,在出現(xiàn)的數(shù)據(jù)適配器配置向?qū)е校ㄈ鐖D3.2)單擊下一步按鈕繼續(xù),這個步驟是用來設定要連接那個數(shù)據(jù)庫,此時可以選擇原有數(shù)據(jù)連接也可新建連接(如圖3.3)。對于第一次可以單擊新建連接按鈕,在彈出的數(shù)據(jù)鏈接屬性對話框中(如圖3.4)進行相應設置。2.數(shù)據(jù)鏈接屬性
48、對話框設置完畢后單機確定按鈕返回到數(shù)據(jù)適配器配置向?qū)?,單擊下一步按鈕繼續(xù),要求選擇查詢類型(如圖3.5),直接使用默認的使用SQL語句選項。3.單擊下一步按鈕,繼續(xù)下一步驟。4.如圖3.6,單擊查詢生成器按鈕,在添加表對話框的表選項中(如圖3.7),選擇商品清單,單擊添加按鈕,在單擊關(guān)閉按鈕5.現(xiàn)在返回查詢生成器,在商品清單表中選擇*(所有列)選項,同時也可以一個一個字段的選擇,完成后單擊確定按鈕。6.現(xiàn)在回到數(shù)據(jù)適配器配置向?qū)У漠嬅妫ㄈ鐖D3.8)單擊下一步按鈕會出現(xiàn)一個新的對話框,單擊完成按鈕,結(jié)束整個向?qū)А?.右擊SqlDataAdapter1對象,在彈出的快捷菜單中選擇生成數(shù)據(jù)集菜單命令
49、。出現(xiàn)的生成數(shù)據(jù)集對話框中(如圖3.9),選擇新建單選按鈕,然后單擊確定按鈕。圖3.2 數(shù)據(jù)適配器配置向?qū)D 3.3 選擇數(shù)據(jù)庫連接對象圖3.4設置數(shù)據(jù)鏈接屬性 圖3.5選擇查詢類型圖3.6生成SQL語句對話框 圖3.7在查詢生成器中添加數(shù)據(jù)表圖3.8數(shù)據(jù)適配器配置向?qū)ё鳂I(yè)完成 圖3.9生成數(shù)據(jù)集對話框添加代碼如下:為類frmGoodsInfo添加如下變量。用于判斷雙擊是否關(guān)閉Public bClose = False用于記錄在DataGrid上雙擊時間Private gridMouseDownTime As DateTime為窗體frmGoodsInfo的Load事件添加事件相應代碼。Pri
50、vateSub frmGoodsInfo_Load(ByVal sender As System.Object, _ByVal e As System.EventArgs) HandlesMyBase.Load定義一個DataGrid表樣式Dim ts AsNew DataGridTableStyle定義一個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設置MappingName和HeaderText屬性 aColumnTextColumn.MappingName = _ DataSet11.Tables(商品清單).Columns(i).ColumnName() aColumnTextColumn.HeaderText = _ DataSet11.Tables(商品清單).Columns(i).ColumnName()設置NullText屬性為空 aCol
52、umnTextColumn.NullText = 設置格式化文本的方法 aColumnTextColumn.Format = F為列樣式對應的TextBox添加事件響應為DataGrid單元格支持雙擊雙擊添加事件響應AddHandler aColumnTextColumn.TextBox.MouseDown, _New MouseEventHandler(AddressOf DGDoubleClick)AddHandler aColumnTextColumn.TextBox.DoubleClick, _New EventHandler(AddressOf dgdGoodInfo_DoubleC
53、lick)將列樣式添加到表樣式中 ts.GridColumnStyles.Add(aColumnTextColumn)Next設置設置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, 商品清單)設置dgdGoodInfo的數(shù)據(jù)源 ts.MappingName = DataSet11.Tables(商品清單).TableName dgdGoodInfo.DataSource = _ DataSet11.Tables(商品清單).DefaultViewEndSub為按鈕dgdGoodInfo的DoubleClick事件添加事件相應代碼。PrivateSub dgdGoodInfo_DoubleClick(ByVal sender AsObject, _ByVal e As System.EventArgs) Handles dgdGoodInfo.D
55、oubleClickIf bClose Then Close()EndIfEndSub由于.NET 的DataGrid不直接支持雙擊某個單元格的DoubleClick事件?,F(xiàn)在通過添加dgdGoodInfo的MouseDown事件的相應函數(shù)以及函數(shù)DGDoubleClick實現(xiàn)這個功能。PrivateSub dgdGoodInfo_MouseDown(ByVal sender AsObject, _ByVal e As MouseEventArgs) Handles dgdGoodInfo.MouseDown記住在dgdGoodInfo點下鼠標的時間 gridMouseDownTime = D
56、ateTime.NowEndSubPrivateSub DGDoubleClick(ByVal sender AsObject, _ByVal e As MouseEventArgs)判斷兩次單擊時間是否小于雙擊的時間間隔If (DateTime.Now gridMouseDownTime.AddMilliseconds _ (SystemInformation.DoubleClickTime) Then兩次單擊時間小于雙擊的時間間隔則調(diào)用dgdGoodInfo雙擊處理函數(shù) dgdGoodInfo_DoubleClick(Nothing, Nothing)EndIfEndSub為按鈕btnSe
57、arch的Click事件添加事件相應函數(shù)。PrivateSub btnSearch_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles btnSearch.ClickDim strSQL AsString = SELECT 貨號, 條碼, 拼音編碼, strSQL += 品名, 規(guī)格, 單位,產(chǎn)地, 類別, 進貨價, 銷售價1 strSQL += , 銷售價2, 最低售價 FROM 商品清單If txbGoodsPY.Text.Length 0 Then如果商品拼音不為空進行查詢清空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)為單元格時是一個TextBox;另一種是DataGridBool
59、Column,表現(xiàn)為單元格時為一個CheckBox,如果想添加ComboBox列可以通過以下步驟實現(xiàn)。為frmGoodsInfo類添加變量。用于下拉列表的ComboBox的對象Public MyCombo AsNew ComboBox在frmGoodsInfo的Load事件相應函數(shù)中添加如下代碼。為MyCombo添加TextChanged事件響應AddHandler MyCombo.TextChanged, AddressOf Ctrls_TextChanged設置MyCombo的Name以及Visible屬性 MyCombo.Name = MyCombo MyCombo.Visible =
60、False MyCombo.DropDownStyle = ComboBoxStyle.DropDown清空MyCombo MyCombo.Items.Clear()給MyCombo添加項 MyCombo.Items.Add(包) MyCombo.Items.Add(瓶) MyCombo.Items.Add(盒) MyCombo.Items.Add(袋) MyCombo.Items.Add(箱)把MyCombo加入到dgdGoodInfo的Controls集合中 dgdGoodInfo.Controls.Add(MyCombo)為下拉列表框MyCombo的TextChanged事件相應函數(shù)Ct
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度年福建省高校教師資格證之高等教育心理學考前練習題及答案
- 2024年度山西省高校教師資格證之高等教育法規(guī)典型題匯編及答案
- 一年級數(shù)學計算題專項練習集錦
- 戒毒康復人員常規(guī)醫(yī)療服務工作總結(jié)
- 2024年保安人員勞務服務協(xié)議
- 自然保護區(qū)建設與管理結(jié)課論文
- 2024年回遷房屋購買協(xié)議格式
- 2024年合作伙伴合資經(jīng)營協(xié)議
- 2024年學生暑假工聘任協(xié)議示例
- 物聯(lián)網(wǎng)L1題庫測試與答案2020第23部分
- 三年級上冊數(shù)學說課稿《5.筆算多位數(shù)乘一位數(shù)(連續(xù)進位)》人教新課標
- 行賄受賄檢討書
- 人教版《勞動教育》六上 勞動項目二《晾曬被子》教學設計
- (正式版)QC∕T 1208-2024 燃料電池發(fā)動機用氫氣循環(huán)泵
- 中外合作辦學規(guī)劃方案
- 醫(yī)學美容技術(shù)專業(yè)《中醫(yī)美容技術(shù)》課程標準
- CJJ207-2013 城鎮(zhèn)供水管網(wǎng)運行、維護及安全技術(shù)規(guī)程
- 六年級道德與法治期末測試卷加答案(易錯題)
- 三位數(shù)除以兩位數(shù)300題-整除-有標準答案
- 辦公室裝修工程施工方案講義
- 醫(yī)院護理人文關(guān)懷實踐規(guī)范專家共識
評論
0/150
提交評論