.NET平台下借记系统的设计与实现
2010-11-15俞佳曦
俞佳曦
(永州职业技术学院 网络信息中心,湖南 永州 425100)
.NET平台下借记系统的设计与实现
俞佳曦
(永州职业技术学院 网络信息中心,湖南 永州 425100)
随着中国加入WTO后,高效的业务管理对于企业尤为重要,基于.NET 平台下开发的借记系统,可以极大提高企业的工作效率,节约经营成本。
.NET;进销存管理系统;借记系统
1 引 言
进销存管理系统的出现对于现代企业的作用,犹如雪中送炭一般,开销不大,却大大改善了企业的运作效率。采用进销存管理系统减少了会计与业务人员的人工投入、降低对工作人员的要求、加快会计工作的速度,并及时、准确地提供更多、更全面的管理信息,为企业在有限资源环境下进一步提高它们的市场竞争能力。本文主要介绍了在.NET平台下,应用C#和SQL Server2000,并运用DATAGRID控件、表和视图进行编程,设计并实现进销存管理系统中借记系统的功能。
本项目参与了某公司借记系统的设计与实现工作。该公司的销售、营销、客户服务和支持之间等业务是分开进行的,这些前台的业务领域与后台部门也是分开进行的,这使得公司各环节很难以合作的姿态对待客户,工作效率低下,面对的客户的多元化,业务员要处理的业务也比较繁杂,常常会出现员工将大部分精力花费在一大堆数据表格中。本系统的设计应用就是为了将员工从数据表格中解放出来,让他们拥有更多的时间开展更先进的业务方式,为公司发展潜在大客户、留住老客户提供一个信息处理与分析平台,使公司能准确地掌握市场动态,进一步提高公司的市场竞争能力。
所有程序均在 Microsoft Windows2000 环境下进行开发,运行环境需要 IIS4.0以上,数据库系统使用的是Microsoft SQL Server2000。开发工具包括:Visual Studio.NET2003,SQL Server2000,Rational Rose2000 Enterprise Edition,Microsoft Visio。开发语言是C#。
2 系统的分析及设计
首先对进销存管理系统的流程和结构进行分析,并设计出七种单据:采购入库单、销售出库单、借记单、冲借用单、调拨入库单、调拨出库单、领料单。进销存系统分为采购(进货)、销售(出库)、库存管理三部分。采购商品入库对应有入库单输入各种资料,销售对应有出库单记录销售情况,库存有借记单反映情况,借记系统属于代销借记部分,与借记单密切相关,以此对借记系统的查询和统计模块做一个大概的设计,将它们分为两个Windows窗体,便于以后和其它模块进行整合。
2.1 借记系统的查询模块
查询模块的主窗体如图1所示。
图1 借记单查询模块的主界面
该模块分为四个小模块,分别是借记单查询类型模块、借记单查询条件模块、客户简称模糊查询模块、表单模块。
借记单查询类型模块又分为单项查询和多项查询两项,其中单项查询是通过借记单号来查询。按照文本提示在单项查询的文本框中输入借记单号,按下文本框右边有望远镜符号的按钮,则右边的借记单列表框中显示出查找出来的对应借记单信息。点击借记单列表框中的借记单编号,下面的借记单商品列表框中就会显示出该张借记单所包含的商品信息。点击其中的商品型号,其备注信息将显示列表框下边的物资商品备注框中。会将该商品备注显示出来。
多项查询是通过商品大类和品牌或商品大类和型号的组合来进行查询。多项查询的选择方式如图2所示,要特别说明的是单项查询和多项查询还有两个前提约束,就是日期范围和客户选择。
图2 多项查询的选择方式
借记单查询条件模块提供了客户、日期范围、商品大类、品牌、型号、借记单号共六个查询条件。根据这些条件可以查询某时间内的所有借记单,某时间内和某家客户交易的借记单,做了某样商品生意的借记单,做了某品牌生意的借记单,以及做了某品牌里某种商品的借记单。选择日期范围,点中后会弹出一个时间选择框;选择型号时,会弹出商品分类窗口,方便使用者的选择,如图3所示。
图3 商品分类窗口
商品的大、中、小类和品牌还可以从下拉框中选择,如图4所示。
图4 商品分类下拉框
这里的查询条件也都可以通过直接输入的方式来查询。
由于客户的数量很大,使用者很难迅速找到指定的客户,为了解决这个问题,设计一个客户简称模糊查询模块。使用者按照提示在客户列表框下的客户简称文本框中输入客户的大概信息,比如说我要找某公司的维修服务中心,我只需要键入该公司的名称,然后按下按钮就能轻松地找到了,如图5所示。
图5 客户简称模糊查询
表单模块总共有六章表单,他们是客户列表框,物资商品备注框,借记单列表框,借记单列表(商品)框,借记单列表(品牌)框,借记单商品列表框。
借记单列表框、借记单列表(商品)框、借记单列表(品牌)框,显示的是查询出的每张借记单的基本信息;借记单商品列表框,显示的是某一张借记单所包含的商品信息;物资商品备注框显示的是物资商品的备注信息。
借记系统的统计模块
统计模块的主窗体如图6所示。
图6 借记单统计模块的主界面
该模块也将分为四个小模块,分别是借记单统计方法模块、借记单统计条件模块、客户简称模糊查询模块、表单模块。
借记单统计方法模块中,统计方法的选择方式及流程如图7所示。
图7 统计方法的选择方式
图 7中第四个统计方法框中的商品小类和品牌的CheckBox选中后,它们各自的下来框就被激活。同样,这里的查询条件也都可以通过直接输入的方式来查询。
借记单统计条件模块提供了客户、日期范围、商品大、中、小类、品牌、型号共七个查询条件。根据这些条件我们可以得到18种统计方式:按照时间段统计;按照时间、客户统计;按照时间、客户、商品大类统计;按照时间、客户、商品中类统计;按照时间、客户、商品小类统计;按照时间、客户、品牌统计;按照时间、供应商、商品型号统计;按照时间、商品大类统计;按照时间、商品中类统计;按照时间、商品小类统计;按照时间、品牌统计;按照时间、商品型号统计;按照时间、品牌、商品大类统计;按照时间、品牌、商品中类统计;按照时间、品牌、商品小类统计;按照时间、供应商、品牌、商品大类统计;按照时间、供应商、品牌、商品中类统计;按照时间、客户、品牌、商品小类统计。
表单模块共有六章表单,他们是客户列表框,借记单商品列表框,借记单统计列表(商品大类)框,借记单统计列表(商品中类)框,借记单统计列表(商品小类)框,借记单统计列表(商品型号)框。
借记单商品列表框,显示的是某一张借记单所包含的商品信息;借记单统计列表(商品大类)框、借记单统计列表(商品中类)框、借记单统计列表(商品小类)框,显示的是按照商品统计的结果;借记单统计列表(商品型号)框,显示的是按商品型号统计的结果,统计出该型号商品的最低、最高供价,总金额,平均供价。
3 功能实现过程中的关键技术
在借记系统的两大模块的实现过程中,关键是对数据库的操作,包括运用SQL2000建表和视图,编写SQL语句,在Windows窗体中创建Datagrid控件,通过Datagrid来把数据库和程序联系起来。
ADO.NET DataSet 是数据的一种内存驻留表示形式,无论它包含的数据来自什么数据源,它都会提供一致的关系编程模型。一个 DataSet 表示整个数据集,其中包含对数据进行包含、排序和约束的表以及表间的关系。由于DataSet 独立于数据源,DataSet 可以包含应用程序本地的数据,也可以包含来自多个数据源的数据。与现有数据源的交互通过 DataAdapter 来控制。
使用 DataSet 的方法有若干种,这些方法可以单独应用,也可以结合应用:
(1)在 DataSet 中以编程方式创建 DataTables、DataRelations 和 Constraints 并使用数据填充这些表。
(2)通过 DataAdapter 用现有关系数据源中的数据表填充 DataSet。
(3)使用 XML 加载和保持 DataSet 内容。
本文中使用最多的是第二种方法。
随 .NET 框架提供的每个 .NET 数据提供程序都包含一个 DataAdapter 对象:OLE DB .NET 数据提供程序包含一个 OleDbDataAdapter 对象,而 SQL Server .NET 数据提供程序包含一个 SqlDataAdapter 对象。DataAdapter 对象用于从数据源中检索数据并填充 DataSet 中的表。DataAdapter 还会将对 DataSet 作出的更改解析回数据源。DataAdapter 使用 .NET 数据提供程序的 Connection 来连接到数据源,使用 Command 对象从数据源中检索数据并将更改解析回数据源。
DataAdapter的 SelectCommand 属性是一个 Command对象,它从数据源中检索数据。DataAdapter 的 Insert Command、UpdateCommand 和 DeleteCommand 属性也是Command 对象,它们按照对 DataSet 中数据的修改来管理对数据源中数据的更新。
DataAdapter 的 Fill 方法用于使用 DataAdapter 的SelectCommand 的结果来填充 DataSet。Fill 将要填充的DataSet 和 DataTable 对象(或要使用从 SelectCommand中返回的行来填充的 DataTable 的名称)用作它的参数。
Fill 方法使用 DataReader 对象来隐式地返回用于在DataSet 中创建表的列名称和类型以及用来填充 DataSet中的表行的数据。表和列仅在不存在时才创建;否则,Fill 将使用现有的 DataSet 架构。除非数据源中存在主键并且DataAdapter.MissingSchemaAction 设置为 MissingSchema Action.AddWithKey,否则不会创建主键。如果 Fill 发现存在用于某表的主键,那么对于其中的主键列值与从数据源中返回的行的主键值相匹配的行,它将使用数据源中的数据改写 DataSet 中的数据。如果未找到任何主键,则数据将追加到 DataSet 中的表。当填充 DataSet 时,Fill 会使用任何可能存在的 TableMappings。
在选择商品型号时,因为是从另一个窗口中去取数据,所以要能把参数从一个窗口传递到另一个,方法有几种,本文采用的是设立公共变量的方法,它比较简单。
首先在商品分类的窗体代码中声明一个公共变量:
public string Ware_ModelName
创建一个函数来发送消息:
然后在主窗口代码中新建商品分类窗体的对象:
注意这里的Form_Sort(TextBox_Ware),它把TextBox _Ware作为一个参数传到了商品分类窗体中,上面的df1就是TextBox_Ware在商品分类窗体中的替身。如此以来,我们就轻松完成了两个窗体的参数传递。
在调试程序的过程中发现,在一天之内完成的进销存,借记系统的查询和统计模块都没有涉及到,后来研究发现程序的开始时间和结束时间没有具体到某时某刻。于是对时间函数做了以下修改,变为:
this.beginDateTimePicker.Value=DateTime.Today.AddM onths(-1);//设置开始时间
this.endDateTimePicker.Value=DateTime.Today.AddHou rs(23);//设置结束时间
把某一天的时间差设置在23小时。这样就能够对一天内发生的进销存数据进行查询和统计了。
在程序调试中有一个问题是由于数据库的连接造成的,因为在程序当中有一个 oleDbConnection,它指示了当前的服务器连接。由于做好的软件将会被安装在不同的机器上,而服务器的连接只能在源程序中改,对于用户而言是不可能的,暂时还没有找到一个能自动改连接字符串的更好方法来替代,所以就采取从外部文件中读取连接字符串的方法,在制作源程序的安装文件时,将这个外部文件添加到Setup文件包中。这样用户在安装好软件后,只需修改安装目录下的这个文件中的对应连接字符串就可以完成正确连接了。这个方法的函数如下:
4 结 束 语
利用.NET平台设计与实现的借记系统,具有稳定、兼容性好等优点,该系统使公司员工从繁杂的数据表格中解放出来,极大提升了公司运作效率,从而为客户提供更优质、优先、优惠得服务,进一步提高了公司的市场竞争能力。
[1]张志学..NET框架开发人员参考手册 数据库分册[M].北京:清华大学出版社,2001.
[2]吉尙戎..NET框架程序员参考手册 用户界面篇[M].北京:国防工业出版社,2002.
[3]Jeff Ferguson.C#宝典[M].北京:电子工业出版社,2002.
[4]Gayle Coffman.SQL Serve 7 参考手册[M].北京:北京希望电子产品出版社,1999.
[5]Patrick O’Neil.数据库原理、编程与性能(原书第2版)[M].北京:机械工业出版社,2007.
(责任编校:何俊华)
TP393
A
1673-2219(2010)12-0080-04
2010-09-26
俞佳曦(1980-),男,浙江海宁人,助教,现工作于永州职业技术学院网络信息中心。