




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录摘要.2ABSTRACT2 系统概述.3一. 应用背景3二. 系统功能3三. 系统预览3 四. 系统特点4第二章 .系统分析4一. 初步调查4 (一)进销存系统的任务4 (二)进销存系统的作用4 二. 详细调查4 (一)进销存系统需求分析4 (二)进销存系统数据库分析5(三)进销存系统E-R图5三. 可行性分析5 (一)系统功能5 (二)系统流程图6第三章 系统设计和数据库设计6 一. 系统功能模块划分6 二. 系统流程分析7三. 数据库设计7 (一)数据库结构设计8 (二)创建数据库8 (三)设计数据表8 (四)创建存储过程13四. 窗体设计14(一)创建系统主窗体14(二)创建数据访问
2、模块15(三)实现系统登录功能17(四)实现商品资料维护功能19(五)实现进货功能26(六)实现进货单单据打印功能31第四章 系统平台选择32一. 开发工具选择.32二. 开发和运行平32结束语32谢辞34参考文献35【摘要】本系统是实现一个公司进货、销售和库存管理的管理系统,并用于简单的资料管理及权限管理。是单机版应用程序。该系统使用microsoft公司的Visual Basic.NET 作为前台开发工具,微软公司的SQL Server 2000做后台数据库。文章论述了系统的设计与实现。【关键词】进销存系统; 数据库; 系统设计 【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超市进销存系统第一章 绪论一 应用背景随着企业的发展,以及软件开发的逐步成熟,进销存系统使得原来繁重而又容易出错的进销存管理变得简单而有条理。能够节省大量的人员成本,也使管理变得可靠方便。它可以是一个独立的项目,
5、也可以是一个完整的功能模块,对于整个ERP系统的开发也可以轻易的将它集成进去.二 系统功能 进销存管理系统的主要功能如下所示。资料管理:管理商品信息,供货商信息和客户信息,分别用于维护企业所经营商品的基本信息,供货商及客户的基本信息。进货管理:管理进货单信息,用于录入企业的进货单,分为主从两张表,主表“进货单”内容包括编号、供货商号、进货日期、业务员等,从表“进货单明细”内容包括编号、进货单号、货号、进货数量、进价等。销售管理:管理销售单信息,用于录入企业的销售单。主表“销售单”内容包括编号、客户编号、销售日期、业务员等,从表“销售单明细”内容包括编号、销售单号、货号、销售价等。库存管理:管理
6、库存信息,用于查询企业商品的库存。系统管理:管理用户权限,用于设置各操作员使用系统的权限,为了方便设置,一般的应用系统都是可以将操作人员分组的,将通用的权限赋予整个组,个别的权限单独赋予个人,这样可以大大减少权限管理的工作量。三 系统预览 由于在下面的章节中会给出具体的介绍,在此只给出主界面的一个预览,如图2.1所示。图1.1 主界面预览四 系统特点进销存管理系统的制作就是为了将进销存管理变得简单可靠,节省人力,实现傻瓜的操作。本系统给出了一套较完善的易学易用的进销存管理系统。 第二章 系统分析一 初步调查(一)进销存管理的任务进销存管理工作的主要任务有:企业的采购管理企业的销售管理(批发、零
7、售、连锁)企业各部门的商品配送管理企业库存商品的管理企业应收款,应付款的管理企业经营状况分析与决策(二)进销存管理系统的作用提高管理效率,降低人工成本降低采购成本及时调整营销策略,防止价格流失防范陈呆死帐,降低应收帐款减少仓储面积,提高房产综合利用降低储备资金占用加快资金周转,实现经济效益强化财务监控制,实现经济效益商业数据智能分析高效决策二 详细调查(一)进销存管理系统需求分析根据以上对进销存管理内容和进销存管理系统的分析,一个标准的进销存管理系统应该包括如图2.1所示的几大功能。其中每个功能都由若干相关联的子功能模块组成。图2.1 进销存管理系统的基本功能模块(二)进销存管理系统数据库分析
8、根据以上需求分析,一个基本的进销存管理系统数据库中大致包括60多张数据表,分别存放相应子功能的数据信息,其中商品清单、供货商清单和客户清单是起关键作用的表,用于存放基础的数据信息。其他涉及商品、供货商和客户信息的表,都只记录这些元素的编号,根据作为外键的“编号”字段来对应。因此这3张表和其他表间的关系是1:N的关系。因为整个系统涉及的实体和属性较多,限于时间和篇幅不能逐一列举。图2.2为进销存管理系统关键实体的E-R图。图2.2 进销存管理系统E-R图其他实体与基本信息表间的对应关系都是类似的。三 可行性分析(一)系统功能分析由于篇幅和时间有限,本设计详细介绍如下图所示功能的开发过程,并简化其
9、中各功能所包含的属性,其他功能完全可以参照这些功能的开发方法实现。图2.3本设计介绍的功能模块(二)系统流程图图2.4系统流程图第三章 系统设计和数据库设计一 系统功能模块划分系统大致可分为如下几个功能模块:登录模块:登录模块是一个很重要的模块,是进入系统的门户,对用户信息起到了一定的保护作用.资料管理模块:资料管理模块中包括了对商品信息,供货商信息以及客户信息的管理,并提供简单的查询功能.进销存管理模块:进销存系统中非常重要的就是对进货单,销售单和库存记录的管理,它是进销存系统的核心部分.系统管理模块:该模块是对各操作员使用权限的管理,为了方便设置,一般的应用系统都是可以将操作人员分组的,将
10、通用的权限赋予整个组,个别的权限单独赋予个人,这样可以大大减少权限管理的工作量。二 系统流程分析进销存系统的流程如下所示。第一步,进行登录,如果成功则进入第二步。第二步,打开系统的主界面,根据相应的操作,分别跳入不同的步骤,共有五种不同的选择。资料管理:在该模块中可以对客户信息、供货商信息和商品信息进行设置与管理。进货管理:在该模块中可以对进货单的记录进行一定条件下的查询。销售管理:在该模块中可以对销售单的记录进行一定条件下的查询。库存管理:在该模块中可以对库存情况进行一定条件下的查询。系统管理:在该摸块中不同操作员的使用权限进行设置。具体的流程如图所示。图3.1系统流程图三 数据库设计数据只
11、有用数据库来管理才能有自动化管理的可能。数据的结构将影响整个管理机制的应用,而且一但建立以后要修改常会出现麻烦。所以一开始就要仔细慎重地搭建一个完整而合理的结构。所谓数据库(Database)就是指按一定组织方式存储在一起的,相互有关的若干个数据的结合,数据库管理系统(Database Management System)就是一种操纵和管理数据库的大型软件,简称DBMS,他们建立在操作系统的基础上,对数据库进行统一的管理和控制,其功能包括数据库定义,数据库管理,数据库建立和维护,于操作系统通信等。DBMS通常由数据字典,数据描述语言及其编译程序,数据操纵(查询)语言及其编译程序,数据库管理例行
12、程序等部分组成。(一)数据库结构设计本系统的数据比较复杂,存储数据的表也比较多,如何让各个表有机地结合起来充分发挥各自的作用,是结构复杂数据库的难点。本设计共需要14张表,多数是平行结构,部分表必须配对存在,有主表、副表之分。用途分别如下表所示。数据表名称 数据表用途用户清单 保存系统使用者的信息权限清单 保存系统使用者的权限信息,可以指定到菜单级权限商品清单 保存企业经营商品的资料信息供货商清单 保存企业供货商的资料客户清单 保存企业客户的资料信息仓库清单 保存企业库房的分类信息,可以用于数据辞典业务员清单 保存企业的业务员信息,可以用于数据辞典进货单 进货单主表进货单明细 进货单从表进货单
13、历史 保存进货单历史进货单明细历史 保存进货单明细历史销售单 销售单主表销售单明细 销售单从表销售单历史 保存销售单历史销售单明细历史 保存销售单明细历史库存库 保存企业商品库存的数量、金额等信息应付款、应收款 保存企业应付款明细、应收款明细表3.1个数据表之间的E-R图可以参考图(二)创建数据库打开SQL Server企业管理器,新建一个数据库,将其命名为jxcbook.(三)设计数据表创建“商品清单”数据表CREATE TABLE dbo.商品清单 ( 货号 char (14) NOT NULL Primary Key, 条码 char (14) NULL, 拼音编码 char (40)N
14、ULL, 品名 varchar (80) NULL, 规格 varchar (40) NULL, 单位 char (6) NOT NULL, 产地 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创建“供货商清单”数据表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, 区号 char (6) NULL, 地区 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, 业务员 char (10) NULL, 业务部门 varchar (20) NULL)GO创建“客户清单”数据表CREATE TABLE dbo.客户清单 ( 客户编号 char (10) NOT NULL Primary Key, 拼音编码 char (20)NOT NULL, 简称 varchar (80) NULL, 名称 varchar (80) NULL, 联系人 varchar (30) NULL, 地址 varcha
17、r (80) NULL, 邮编 char (6) NULL, 区号 char (6) NULL, 地区 varchar (12) NULL, 电话 varchar (20) NULL, 传真 varchar (20) NULL, 电报 varchar (20) NULL, 开户行 varchar (40) NULL, 开户行邮编 char (6) NULL, 银行帐号 varchar (20) NULL, 税号 varchar (20) NULL, 性质 varchar (10) NULL, 业务员 char (10) NULL, 业务部门 varchar (20) NULL, 授信额度 de
18、cimal (28,6) NULL,)GO创建“进货单和进货单明细”数据表CREATE TABLE dbo.进货单 ( 编号 char (14) NOT NULL Primary Key, 供货商号 char (10)NOT NULL, 进货日期 datetime NULL, 业务员 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, 进货数量 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, 货物质量 varchar (50)NULL)GO创建“销售单和销售单明细”数据表CREATE TABLE dbo.销售单 ( 编号 char (14) NOT NULL Primary Key, 客户编号 char (10)NOT NULL, 销售日期 datetime NULL, 业务员 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, 销售数量 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创建起他重要数据表CREATE TABLE dbo.库存库 ( 货号 char (14) NOT NULL, 仓库 varchar (20)NOT NULL, 库存数量 decimal (28,6) NOT NULL, 库存金额 decimal (28,6) NOT NULL, 库存单价 decimal (28,6) NOT NULL, 最新进价 decimal (28,6) NULL, )GOCREATE TABLE dbo.权限清单 ( 权限序号 int IDENTITY (1,1) NOT NULL,用户编号 char (6)
23、NULL, 部门 char (20)NULL, 权限名称 char (6) NOT NULL )GO创建外部关键字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(四)创建存储过程系统使用了两个存
25、储过程,分别实现进货时增加库存、产生应付款和销售时减少库存、产生应收款的功能。建库脚本如下:CREATE PROCEDURE sf_进货单 记账人 char(10) = NULLASBegin transactionINSERT INTO 库存库(货号,仓库,库存数量,库存金额,库存单价) 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 库存数量=0 or
26、(库存数量+数量ALL)=0 then 进价Else (库存金额+税价合计ALL)/(库存数量+数量ALL)end, 库存数量=库存数量+数量ALL, 库存金额=case when 库存数量=0 or(库存数量+数量ALL)=0 then 进价+(库存数量+数量ALL)Else (库存金额+税价合计ALL) end, 最新进价=进价 FROM (SELECT 仓库,货号,数量ALL=sum(进货数量),进价=sum(税价合计)/sum(进货数量),税价合计ALL =sum(税价合计)FROM 进货单明细GROUP BY 仓库,货号)AS LSJ WHERE 库存库.仓库=LSJ.仓库 AND
27、库存库.货号=LSJ.货号 INSERT INTO 应付款(编号,进货单号,货号,进货商号,数量,进货单价,金额,进货日期,状态) SELECT 付+a.编号,b.编号,a.货号,b.供货商号,进货数量,进价,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 库存数量=库存数量-数量ALL,库存金额=库存单价 * (库存数量-数量ALL) FROM(SELECT 仓库,货号,数量ALL=sum(销售数量)FROM 进货单明细GROUP BY 仓库,货号)AS LSJ WHERE 库存库.仓库=LSJ.仓库 AND 库存库.货号=LSJ.货号 INSERT INTO 应付款(编号,销售单号,货号,客户编号,数量,销售价,金额,销售日期,状态) SELECT 收+a.编号,b.编号,a.货号,b.客户编号,销售数量,销售价,a.税价合计,进货日期,应
29、收 FROM 销售单明细 as a.销售单 as bWhere a.销售单号=b.编号INSERT INTO 销售单历史 SELECT * FROM 销售单INSERT INTO 销售单明细历史 SELECT * FROM 销售单明细Delete from 销售单明细Delete from 销售单CommitGo四.窗体设计(一)创建系统主窗体1.利用系统默认生成的窗体作为主窗体,并将其对应的文件更名为frmMain.vb,为其添加一个主菜单(MainMenu)控件。2.窗体的部分属性设置如下:对象(控件)名 属性 取值(说明)frmMain Name frmMainfrmMain Capti
30、on 进销存管理frmMain IsMdiContainer TruefrmMain StartPosition CenterScreen frmMain WindowState Maximized表3.23.在主菜单控件上单击鼠标左键进入菜单编辑模式,编辑菜单。4.在窗体frmMain对应的代码文件中添加私有变量以及程序入口函数Main.Public UserId AsString整个程序的入口PublicSharedSub Main()显示登陆对话框Dim loginFrm As frmLogin = New frmLogin loginFrm.ShowDialog()合法用户进入系统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.添加判断子窗体实例状态的函数GetInstanceState,此函数的主要作用是实现单机主窗体的某菜单项,如进货单只是出现一个进货单子窗体。PrivateFunction Ge
32、tInstanceState(ByVal name AsString) AsBoolean获得frmMain窗体的子窗体的数量Dim i AsInteger = Me.MdiChildren.Length循环判断是否有名为name的子窗体实例For i = 0 ToMe.MdiChildren.Length - 1IfMe.MdiChildren(i).Name = name Then存在名为name的子窗体,是子窗体获得焦点并返回TrueMe.MdiChildren(i).Focus()ReturnTrueEndIfNext不存在名为Name的子窗体FalseReturnFalseEndFu
33、nction7.为菜单商品资料维护的Click事件添加相应函数。PrivateSub MenuItemGoodsInfo_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles MenuItemGoodsInfo.Click判断商品资料维护窗体是是否已经创建If GetInstanceState(frmGoodsInfo) Then商品资料维护窗体已经创建并返回ExitSubEndIf创建并显示商品资料维护窗体Dim childFrm As frmGoodsInfo = New frmGoodsInf
34、o childFrm.MdiParent = Me childFrm.Show()EndSub其他菜单的Click事件相应代码已上面的基本一致,这里不再一一叙述。(二)创建数据访问模块因为各个窗体均需要对数据库进行访问,可以把数据库的一些操作通过一个类实现,这样可以使对数据库的访问更加简单。1.选择文件|添加新项命令添加一个名为“DataBase.vb” 的类文件。 2.用如下内容替换DataBase.vb中的内容。Imports System.DataImports System.Data.SqlClientImports System.ComponentModelPublicClass D
35、ataBase实现接口IDisposableImplements IDisposable数据库连接对象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建立数据库连接对象 SqlConn = New SqlConnection(Me.sConn)打开数据库连接 SqlConn.Op
37、en()EndIfEndSubPublicSub Close()如果数据库连接对象不为空则关闭数据库连接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(三)实现系统登录功能在用户输入“用户号”和“密码”后对用户的输入进行验证,并记录登录用户的姓名和
39、用户名,供系统使用。各控件的属性设置如下。控件类型 对象名 属性 取值(说明)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类添加如下两个公共变量。用于返回登陆结果Public bResult AsBoolean = False登陆用户的IDPublic UserId AsString = 登陆的用户名Public UserName AsString = 登陆的用户密码Private UserPwd AsString = 为文本txbUserId,txbPwd分别添加KeyPress时间相应函数。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是回车键并调用【确定】按钮的单击事件响应函数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事件相应函数。PrivateSub txbUserId_LostFocus(ByVal sender AsObject, _ByVal e As System.EventArgs) Handles txbUserId.LostFocus定义一个数据访问类的对象Dim db As DataBase
43、 = New DataBase根据输入的用户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释放数据访问类的占用资源 db.Dispose()EndSub为按钮btnSubmi,btnClear分别添加Click事件相应函数。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关闭登陆对话框Me.Close()关闭整个程序 Application.Exit()EndSub运行程序可以看到,系统首
46、先要求用户输入用户名和密码,并与“用户清单”中的信息进行对比,认证通过后才可以进入系统。(四)实现商品资料维护功能新建一个窗体,将其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中可视化的方法建立数据库的连接:1.从工具箱中拖动一个SqlDataAdapter对象到窗体上,在出现的数据适配器配置向导中(如图3.2)单击下一步按钮继续,这个步骤是用来设定要连接那个数据库,此时可以选择原有数据连接也可新建连接(如图3.3)。对于第一次可以单击新建连接按钮,在弹出的数据链接属性对话框中(如图3.4)进行相应设置。2.数据链接属性
48、对话框设置完毕后单机确定按钮返回到数据适配器配置向导,单击下一步按钮继续,要求选择查询类型(如图3.5),直接使用默认的使用SQL语句选项。3.单击下一步按钮,继续下一步骤。4.如图3.6,单击查询生成器按钮,在添加表对话框的表选项中(如图3.7),选择商品清单,单击添加按钮,在单击关闭按钮5.现在返回查询生成器,在商品清单表中选择*(所有列)选项,同时也可以一个一个字段的选择,完成后单击确定按钮。6.现在回到数据适配器配置向导的画面(如图3.8)单击下一步按钮会出现一个新的对话框,单击完成按钮,结束整个向导。7.右击SqlDataAdapter1对象,在弹出的快捷菜单中选择生成数据集菜单命令
49、。出现的生成数据集对话框中(如图3.9),选择新建单选按钮,然后单击确定按钮。图3.2 数据适配器配置向导图 3.3 选择数据库连接对象图3.4设置数据链接属性 图3.5选择查询类型图3.6生成SQL语句对话框 图3.7在查询生成器中添加数据表图3.8数据适配器配置向导作业完成 图3.9生成数据集对话框添加代码如下:为类frmGoodsInfo添加如下变量。用于判断双击是否关闭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数据源表的列数Dim numCols AsInteger = _ DataSet11.Tables(商品清单).Columns.Count()Dim i A
51、sInteger循环为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中奇数行的背景色 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的数据源 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事件。现在通过添加dgdGoodInfo的MouseDown事件的相应函数以及函数DGDoubleClick实现这个功能。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两次单击时间小于双击的时间间隔则调用dgdGoodInfo双击处理函数 dgdGoodInfo_DoubleClick(Nothing, Nothing)EndIfEndSub为按钮btnSe
57、arch的Click事件添加事件相应函数。PrivateSub btnSearch_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles btnSearch.ClickDim strSQL AsString = SELECT 货号, 条码, 拼音编码, strSQL += 品名, 规格, 单位,产地, 类别, 进货价, 销售价1 strSQL += , 销售价2, 最低售价 FROM 商品清单If txbGoodsPY.Text.Length 0 Then如果商品拼音不为空进行查询清空DataSet
58、11商品清单表的内容 DataSet11.Tables(商品清单).Clear()生成查询的SQL语句 strSQL += where 拼音编码 like strSQL += txbGoodsPY.Text.Trim() + %EndIf SqlDataAdapter1.SelectCommand.CommandText = strSQL重新填充DataSet11 SqlDataAdapter1.Fill(DataSet11)EndSub.NET的DataGrid的列只支持两种样式:一种是DataGridTextColumn,表现为单元格时是一个TextBox;另一种是DataGridBool
59、Column,表现为单元格时为一个CheckBox,如果想添加ComboBox列可以通过以下步骤实现。为frmGoodsInfo类添加变量。用于下拉列表的ComboBox的对象Public MyCombo AsNew ComboBox在frmGoodsInfo的Load事件相应函数中添加如下代码。为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事件相应函数Ct
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安徽绿海商务职业学院高职单招高职单招英语2016-2024历年频考点试题含答案解析
- B超肝区知识课件
- 诊疗常规及技术规范知识培训
- ccaa服务认证知识课件
- 仓储物流计件劳动合同
- 晋中学院《热质交换原理与设备》2023-2024学年第一学期期末试卷
- 陕西省蓝田县联考2024-2025学年初三下学期二模考试英语试题试卷含答案
- 人教版数学2.百分数(二)折扣同步练习六年级下册含答案
- 2024年八月跨河输气管道浮船辅助拆除水流监测合同
- 郑州工业安全职业学院《中西医结合内科学(一)》2023-2024学年第一学期期末试卷
- 《知识产权执法》课件
- 2024年大学试题(管理类)-港口企业管理学历年高频考点试卷专家荟萃含答案
- 高中化学-分子晶体和原子晶体教学设计学情分析教材分析课后反思
- 桥梁养护风险辨识手册
- 2021年青海省中考化学试卷(附答案详解)
- 《曼陀罗绘画疗愈-初三减压》PPT
- 小学生三好学生竞选演讲稿PPT幻灯片
- 养老机构员工考核评分表
- 北京市海淀区2022-2023学年高三下学期一模考试历史试卷(含答案)
- 季节性安全检查表(四季)
- 2023年贵州省中学生生物学竞赛考试(初赛)试题( 含答案解析 )
评论
0/150
提交评论