摘要:本文提出了石龙自来水总公司抄表收费系统的结构设计及其实现。经过实际使用,证明设计合理,它可以使整个公司在生产效率和综合管理水平方面上一个新台阶。
关键词:结构化数据 动态网页 B/S三层结构 抄表收费系统
一、目前的发展状况
石龙自来水总公司原来的抄表收费系统是用FOXPRO 2.5开发的,是结构化程序系统,开发出来的功能有很大局限性,操作烦琐,效率低,界面不好看,是上世纪90年代的产品。将现代化的计算机技术ASP .NET应用到供水企业中,有利于节约人力和财力,有利于实时掌握当前的经营状况,堵住漏洞、提高经济效益,使整个公司在生产效率和综合管理水平方面上一个新台阶[1]。
本系统开发目的正是为石龙自来水总公司提高生产效率、提高管理水平服务。目前软件系统结构有2种基本模式。
C/S开发结构需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置;兼容性较差,对于不同的开发工具,具有较大的局限性,采用不同工具,需要重新改写程序;开发成本较高,需要具有一定专业水准的技术人员才能完成。
B/S开发结构大大简化了客户端,只要客户端机器能上网就可以。而且开发和维护几乎所有工作也都集中在服务器端,当企业对网络应用进行升级时,只需要更新服务器端的软件就可以,这减轻了异地用户系统维护与升级的成本 [2]。
故此,传统的C/S结构渐被B/S结构取代。任何用户只需使用WEB浏览器即可对应系统进行操作。因此B/S结构在管理信息系统开发领域中得了飞速的发展。
二、技术基础
2.1、各种开发技术的比较
对于B/S结构的软件系统开发方面,有以下几种技术:PHP、JSP、ASP.NET[3]。PHP技术虽然是开源的,也支持面向对象,但是,由于没有丰富的类库,加之在组件方面也是相对缺乏,因此用它开发大型的平台存在很多问题,而且相对JSP和ASP.NET两种技术的不断更新,此技术稍显落后;JSP技术具有不依赖于特定的平台、建立在工业标准之上、大部分运算在服务器端运行等优点,但是J2EE在布置使得开发成本显得略高,没有良好的安装界面的缺点;ASP.NET技术作为新一代的Web平台框架,虽然没有JSP的跨平台性,但是在Microsoft.NET Framework和IIS(Internet Information Server)的强大支持下,可以使用先进的C#语言来编写代码,并采用预编译技术,加强代码的安全性,且易于服务器的维护,成本相对较低,开发周期较短的优点[4]。
2.2 、ASP.NET和ADO.NET关键技术介绍
1.ASP.NET数据访问技术-ADO.NET。ADO.NET是新一代具有可编程性、互操作性并以XML为突出重点的数据访问技术。它满足了当前应用程序开发模型的多种要求,而且适用于分布式及Internet等大型应用程序环境。在数据传送方面,它主要提供对结构化数据的访问能力。另外,它还集成了大量用于数据库处理的类,这些类代表了那些具有典型数据库功能的容器对象[5]。
2.ASP.NET应用程序安全性。它是系统设计与实现中的重要环节,其中包括:不允许未经授权的用户访问Web站点的敏感信息,注意防范恶意代码攻击,以及防止竞争对手窃取信息等。.
3.服务器端控件。ASP.NET提供一整套的服务器端控件,这些控件可以在编译时自动生成相应的HTML代码,不管是在代码的规范性上还是在页面的执行效率上都有很大的提高。控件主要包括HTML控件、Web控件、验证控件、自定义控件及组合控件几种类型。
2.3 、SQL Server的介绍
目前的商业环境要求不同类型的数据库解决方案。性能、可伸缩性及可靠性是基本要求,而进入市场时间也非常关键。除这些核心企业品质外,SQL Server 还为您的数据管理与分析带来了灵活性,允许单位在快速变化的环境中从容响应,从而获得竞争优势。从数据管理和分析角度看,将原始数据转化为商业智能和充分利用 Web 带来的机会非常重要。
ADO.NET 应用程序通常使用 .NET Framework Data Provider for SQL Server 连接到 SQL Server。程序使 ADO.NET 对象能够与 SQL Server 直接进行通信。通常,应用程序使用 SqlConnection 对象建立连接,然后使用 SqlCommand 对象向服务器发送命令,并接收服务器返回的结果。SqlDataAdapter 和 SqlDataReader 类通常与 SqlCommand 一起使用,以便通过托管的代码应用程序与 SQL Server 进行交互。
三、抄表收费系统的设计
3.1、需求说明
①、客户说明。自来水公司集中管理客户信息。一个水表一个客户,水表有口径、用水类型、付款方式之分。对每一个客户都对应一个最后交费行度和最后交费日期,客户管理主要包括客户编号、客户名称、客户地址、口径、用水类型、付款方式、抄表员、开户日期、表芯号码等静态信息,以及最后交费行度和最后交费日期等动态信息。
②、抄表管理。抄表管理可用人手输入和抄表机输入两种方式,抄表后还要统计抄表员进度表。抄表信息主要包括客户编号、抄表日期、当月行度、补差度、抄表员等信息。
③、收费管理。收费管理根据客户的付款方式设计出现金收费、转帐收费、银行代扣管理、冲正业务和补打发票。收费都要开出相应的发票记录客户的编号、客户名称、客户地址、用水类型、用水单价、水表当前行度、抄表日期、交费行度、实际行度、水费滞纳金、总额、收费号和上月行度等等信息。
3.2、对象分析。通过对系统需求进行分析,得出如下几个主要实体对象。
1.客户对象。客户对象是本系统的核心对象。其客户代码全局唯一,用于唯一标识一个客房。主要组成元素有:客户编号、客户名称、客户地址、电话、用水类型、可免水人数、每人可免水度数、最少用水量、口径、是否收滞纳金、银行帐号、抄表员号、开户日期、表芯号码、水表位数、抄表顺序号、所属区域等。
客户对象的下级对象还有已交费对象,它是一个动态的对象,主要元素有:客户编号、交费行度、交费日期、收费员号、收费机号等。
2.抄表记录对象。交费记录对象对应抄表管理的业务。主要元素有:客户编号、抄表日期、水表行度、抄表员、入数机号、操作员号。
3.交费记录对象。交费记录对象对应收费管理的业务。主要元素有:客户编号、户名、地址、用水类型、单价、水表行度、抄表日期、应交水量、实际用水量、可免度数、补差度、水费滞纳金、总额、收费员、交费日期、付款方式、上月行度、抄表员、交费机、交费流水号等。
3.3实体关系图(部分)

四、抄表收费系统的实现
4.1、抄表收费系统开发环境
硬件环境:CPU最低为2.4G Pentium 4处理器,RAM最小要求512MB,硬盘最少要有80GB。
软件环境:服务器操作系统是Windows 2000 Server及以上版本,Web服务器是IIS5.0及以上版本,数据库为SQL Server 2000及以上版本,开发工具为Microsoft Visual Basic.NET。
4.2、妥善处理数据库的共享并发
①、锁(Locking)。并发控制机制是衡量一个数据库系统性能的重要标志之一。数据库系统的并发控制机制协调并发操作以保证事务的隔离性,保证数据的一致性。SQL Server以事务为单位,通常使用锁来实现并发控制。
锁是最常采用的并发控制机制。锁就是事务对某个数据库中的资源(如表和记录)存取前,先向系统发出请求,封锁该资源。事务获得锁后,即获得对数据的控制权,在事务释放它的锁之前,其他的事务不能更新此数据。当事务结束或撤销以后,释放被锁定的资源。
当需要精细控制对资源的锁定类型时,可以使用表级锁定提示。使用SELECT、INSERT、UPDATE和DELETE语句指定表级的锁定类型。一般来说,读操作需要共享锁,写操作需要排它锁。
②、加入时间戳型字段
如果在创建表时,定义了一个字段为时间戳型(timestamp),则无论用户何时向表中添加(Insert)记录,SQL Server都会自动向该字段加入一个计数器值。
时间戳字段的值为二进制格式的数据,与系统时间并没有关系,它表示包含时间戳字段的记录的操作顺序,实际上相当于一个单值递增的计数器。
在数据库中,其列值保持唯一,也就是说,它可以唯一标识表中的字段。SQL Server首先找到该记录的时间戳字段的值[0x0000000000000131],tsequal()函数用来比较该值与给出的常量表达式是否相等,如果相等,就允许修改。时间戳字段的值已经修改为[0x0000000000000135]。如果此时另一个用户更新表中的记录,那么这个用户的更新操作不可能完成。因为此记录已经在前面更新过了,而且在更新的同时,系统已经修改了时间戳字段的值。
4.3、创建登录页面。
用户登录界面程序运行结果如图4.1所示

在login.vb文件中添加登录按钮的Click事件处理函数。限于篇幅,只列主要代码。

只介绍4.3创建登录页面模块,其它模块从略。
五、 结束语
①、本系统能妥善处理数据库的共享并发。利用了锁和表中加入时间戳型字段。导绝了丢失更新,脏数据,不可重复读取和幻影数据的现象,保证数据的一致性。在系统中不能所有表都使用锁和时间戳型字段,否则系统的反应速度有所下限,或者有可能造成死锁。
②、应用抄表机,提高抄表准确率和效率。应用抄表机能对数据输入错误检查,抄表员在输入水表读数时可自动进行商务规则检查:A、用水量偏大或偏小判断;B、未抄表情况检查,对抄表完成情况进行检查,防止有抄表遗漏;C、记录安装业务,如:表漏水、滞行、补差度等等;D、显示用户最后交费日期;E、防止重复入数保护。抄表机能提高抄表准确率和效率。
③、条型码用户卡和激光扫描枪,提高收费准确率和效率。应用带条型码用户卡和激光扫描枪,提高收费准确率,减少收费员的劳动强度,加快收费速度。
④、提供触摸查询屏接口,语音系统接口和安装业务接口。本系统提供触摸查询屏系统、语音系统和安装业务系统的接口。可被它们取数。
综上所述,ASP.NET是一种功能强大的Web服务器端技术,它提供了一个真正的面向对象的编程模型。本系统采用了ASP.NET和Visual Basic.net 进行开发,不仅实现了各项功能,而且具有很好的封装性,从而使系统运行更安全、更稳定。总之,基于.NET Framework的ASP.NET将使网络开发更加方便快捷,ASP.NET将成为未来几年中广泛应用的网络开发工具。
参 考 文 献
[1] Stephen Walther.ASP.NET揭密[M].北京:中国电力出版社,2004
[2] 李正希,胡方霞,陈发吉.ASP.NET案例开发[M]北京:中国水利水电出版社,2005
[3] 王南,吴元宝. 基于ASP.NET技术B/S结构的产品管理系统. 煤矿机械, 2006,27(6):1050-1052
[4] 廖信彦,ASP.net交互式Web数据库程序设计[M].北京:中国铁道出版社,2003
[5] Sceppa D. ADO.NET技术内幕[M]北京:清华大学出版社,2003;3