1、目 录全套源程序代码,联系 153893706摘 要 I第一章 绪论 11.1 选题的背景和意义 11.2 研究内容 11.2.1 服务端 11.2.2 客户端 11.3 系统开发技术 21.3.1 VB.NET21.3.2 Access 2003 数据库 .2第二章 系统设计 .32.1 系统需求分析 32.1.1 系统需求分析 32.1.2 传统网吧管理 32.1.3 系统优点 32.1.4 功能需求 32.2 系统的设计原则 32.3 系统设计的思想 42.4 系统功能描述 42.4.1 操作员管理功能模块 52.4.2 用户管理功能模块 62.4.3 计算机管理功能模块 72.5 系统
2、设计的类结构 8第三章 数据库设计 .103.1 数据库的需求分析 10第四章 通信过程与 VB.NET 中的通信类 .144.1 通信过程 144.2 VB.NET 中的通信类 154.2.1 TcpListener 类 .164.2.2 TcpClient 类 .164.2.3 NetworkStream 类 .174.2.4 StreamReader 类 .174.2.5 StreamWriter 类 .18第五章 系统的实现 195.1 公共模块 195.2 服务器端的实现 195.2.1 服务器端登录 195.2.2 添加操作员 215.2.3 编辑操作员 235.2.4 删除操作员
3、 245.2.5 修改密 码 255.2.6 设置上机费率 265.2.7 锁定屏幕 275.2.8 用户充值 285.2.9 查询费用 295.2.10 添加用户信息 305.2.11 修改用户信息、删除用户信息 315.2.12 添加计算机信息 335.2.13 修改/删除计算机信息 335.3 客户端登录 355.3.1 登录 355.3.2 下机 365.3.3 设置 375.3.4 退出 37第六章:总结 .386.1 网吧计费系统的开发技术特点 386.2 系统的不足与前景 38参考文献 .39致 谢 40I机 房 计 费 系 统 软 件摘 要本课题研究的网吧计费系统是一款基于 C
4、/S 结构,采用 Access 2003 数据库,利用 Visual B 设计开发的网吧计费系统。文中主要介绍了系统的基本功能和系统结构组成情况,内容包括系统需求分析、系统设计原则、系统设计思想、系统功能模块描述、数据库设计、系统通信过程、通信协议等,同时还对开发环境 Visual B、Access 2003 数据库、Visual B 技术的使用进行简单介绍,并列出了一些程序代码以说明该系统应用程序设计的实现过程。关键字 C/S 结构 Access 2003 Visual B 通信协议 IIACCOUNTING SYSTEM SOFTWARE ON COMPUTER LABAbstract T
5、his thesis focus the study on computer lab accounting system which is based on C/S structure, designed and developed by Access 2003 databases and Visual B. In the article, author mainly analyzes some basic functions and composition of this system, which including system demanding analysis, system de
6、sign principle, system design idea, description of functional module, Database design, processes of system communication and agreements of communication. In addition, this thesis introduces briefly on use of Visual B, Access 2003 database, and Visual Basic.Net, meanwhile, lists some programming code
7、s to explain the realization process of this system applying the programs.Key words C/S structure, Access 2003, Visual B, communication agreement1第一章 绪论1.1 选题的背景和意义随着计算机技术的日月更新,越来越多的人们注重加强对计算机知识的学习,为了满足学校学生或者社会学员的需求,许多网吧都纷纷对外开放,实行计时收费。但随着上机人数的增多,网吧的管理成了一个非常困难的问题。首先,人工计时收费是非常繁琐的一项工作,耗费人力物力,而且极容易出错;最后
8、的统计工作更是一项费时费力的苦差事,甚至不能统计。其次,上机过程中,每个网吧都需要值班人员值班,耗费了管理人员的很多时间。随着计算机各种外围设备技术的发展,以上工作通过计算机就可以很方便地实现。为了适应当前网吧管理无人化的需求,本人试图利用自己大学所学专业知识并结合教学管理中的实际情况和其它类似计费软件的优点,开发了一套网吧收费系统软件。本系统可以解决网吧管理中存在的几个实际问题:(1). 减少值班人员、维护人员,降低管理人员费用,甚至可以做到网吧无需人员值 守管理。(2). 增加网吧的开放时间,提高设备的利用率。(3). 解决目前网吧管理中的人情免费上机、脱逃费问题。1.2 研究内容利用 V
9、B.NET、Access2003 等开发工具开发一套基于 c/s 框架结构的网吧计费系统软件, 该系统要求由服务端、客户端 2 个模块组成。各模块主要实现以下功能:1.2.1 服务端(1). 操作员管理主要包括:操作用户管理、操作员登录、修改密码、设置上机费用 。这其中大部分是标准数据的维护,包括新增、修改、删除、查询等;(2). 用户信息管理主要包括:用户充值、查询用户费用、删除用户信息、添加用户信息、修改用户信息。这里区分不同的用户类型,按照不同用户类型设置上机费用等;(3). 计算机信息管理主要包括团体添加计算机信息、修改计算机信息、删除计算机信息 3 个模块。这里要记录计算机本身的配置
10、信息以及使用情况。(4). 上机计费主要负责接收客户端程序发送来的上、下机信息,进行上、下机的处理,在处理上机登录时要进行用户的合法性检测。检测通过后产生一条用户上机记录,记录下计算机代码、卡号、登录开始时间等信息。处理下机信息时,要记录下此用户下机的详细时间。计费时要将当前使用费用记录在上机记录中,并在用户的档案记录的余额字段中扣减,还要判断用户的余额情况,如果余额不足,要及时发送一个网络消息给用户。1.2.2 客户端首先要求将客户端的桌面、任务管理器、系统状态栏等系统功能锁定,桌面上只有客户登录程序界面,要求用户输入用户代码和密码进行登录。登录信息要求以网络数据包的形式发送到“服务器端”
11、,由“服务器端”来判断其合法性,并反馈一个信息给客户端,如果一切合法的话,再将桌面、任务管理器等功能解锁,让用户正常使用。客户端程序要求正常停靠在系统托盘中,用户下机时要求点击此图标进行下机,客户端将下机信息发送到“服务器端” ,然后重新弹出登录界面,等待下一个用户登录。21.3 系统开发技术1.3.1 VB.NETVB.net 是微软最新平台技术,是.net framework SDK 的一种语言。编译以后生成的可执行文件被称为 Assembly,即程序集。 VB.net 的版本号是 Visual Basic 7.0,它的运行是建立在 CLR(Common Language Runtime)
12、和 MSIL(Microsoft Intermediate Language)虚拟器上的。其实,它的机制和 Java 差不多。 VB.net 的语言特点有下:(1). 代码托管。被托管的代码享受.net framework 提供的安全保障和垃圾回收机制,但是这也同时表明,程序被框在 Framework 里面了。API 变得不太方便。(2). 强大的面向对象特性。现在 VB7 已经是一个完全的面向对象程序。它已经支持类的各种特性:继承,函数的覆盖,重载,虚拟,隐藏 (3). 功能强大,程序界面更标准。(4). 程序代码结构化更强,开发环境舒适体贴。1.3.2 Access 2003 数据库Acc
13、ess 是 Microsoft 公司推出的一款优秀的数据库管理软件,最适合用来作为中、小规模数据量应用软件的底层数据库。因为其功能强大、可靠、高效的管理方式,支持网络和多媒体技术,简单易学,便于开发等主要特点,目前已经获得相当广泛的应用。Access 本身就是一个采用面向对象技术开发的数据库系统软件,它能很好地支持面向对象技术。Access 的数据库对象都具有属性和方法等面向对象技术的基本特征。在 Access 2003 版本中,Access 使用了表格来实现数据的采集、维护、分析和传播等功能,此外,它还提供了关系型数据库所要求的相当丰富的数据运算和数据汇总能力。其主要特点如下:(1). 完善
14、地管理各种数据库对象,具有强大的数据组织、用户管理、安全检查等功能。 (2). 强大的数据处理功能,在一个工作组级别的网络环境中,使用 Access 开发的多用户数据库管理系统具有传统的 XBASE(DBASE、FoxBASE 的统称)数据库系统所无法实现的客户服务器 (Client/Server) 结构和相应的数据库安全机制,Access 具备了许多先进的大型数据库管理系统所具备的特征,如事务处理/出错回滚能力等。 (3). 可以方便地生成各种数据对象,利用存储的数据建立窗体和报表,可视性好。(4). 作为 Office 套件的一部分,可以与 Office 集成,实现无缝连接。 (5). 能
15、够利用 Web 检索和发布数据,实现与 Internet 的连接。Access 主要适用于中小型应用系统,或作为客户机/服务器系统中的客户端数据库。3第二章 系统设计2.1 系统需求分析2.1.1 系统需求分析(1). 需求分析的定义:需求分析是对用户需求的真正明确,是对要解决的问题的彻底理解,是一个软件开发的最重要阶段,需要了解和澄清用户的需求 ,严格的制定被开发的软件系统的需求规格说明书。(2). 需求分析的任务:开发软件系统最为困难的部分是准确说明开发什么,最为困难的概念性工作便是编写出详细的技术需求,这包括所有面向用户,面向机器和其他软件系统的接口,同时这也是一旦出错,将最终会给系统带
16、来极大损害的部分,并且以后再对它修改也极为困难的。这些定义强调的是:产品是怎样的,而并非产品是怎样设计构造的。之说所说到需求分析是最重要,就因为它具有决策性、方向性、策略性的作用。因而对于任何一款软件来说,做好它的根本在于它的需求分析。2.1.2 传统网吧管理网吧是随人们生活中对计算机越来越需要而建立的,这类网吧大多存在于学校,公司,图书馆等大型公共场所,在网吧建立之初,没有网吧计费系统的情况下,网吧的管理完全人工化。逃费,人情上机,计费错误等情况不可避免地出现。也可以说是网吧现象中的一部分,这类情况给管理人员带来很大的麻烦,逃费和计费错误会给网吧管人员在财力带来损失或误会,人情上机会给管理人
17、员带来生活中尴尬的烦恼。这类情况一再发生,就会在管理人员精神上带来越来越大的压力。上机用户有时也会因管理人员的失误带来不必要的麻烦。渐渐大家对网吧就会有一种厌恶感和恐惧感。同时,在人工长期使用,会形成大量的数据,这些数也会使得数据管理上的混乱。2.1.3 系统优点综上 2.1.2 所述,人工管理网吧实在存在很大的问题,而且浪费太多的人力,物力。计算机一点一丁的入侵人类的生活,计算机管理代替人工管理是不可避免的,像网吧管理这类不要求在管理上创新,机械般管理更加完美的前提下,我选择设计开发网吧计费系统,希望能改善网吧管理上的混乱情况,也避免了管理人员的工作麻烦。使用网吧计费系统优于人工管理在于:(
18、1).管理人员的工作量。(2).计费准确无误。(3).避免人情上机的尴尬。(4).工作迅速快捷。2.1.4 功能需求网吧计费系统的主要功能有:(1). 服务端(包括操作员管理,用户信息管理,计算机信息管理)(2). 客户端(用户使用计算机的所有情况)(3). 系统数据的初始化,查询,修改,删除。2.2 系统的设计原则4根据系统的需求分析,计费系统属于网络,计算机使用费用,作息管理及数据库于一体的综合性系统,因而,网吧计费系统在总体设计时应遵循以下原则上:(1). 系统的功能设计完善性,满足多方的使用需求。(2). 系统应具有良好的稳定性,实用性,安全性。设计理念应是客户容易使用。(3). 数据
19、库结构设计合理,各类属性符合要求。2.3 系统设计的思想(1). 系统设计结构基于网吧计费系统的综合性,而且为了满足多方使用的需求,本系统以 c/s 的框架结构为基本结构模式:(如图 2.1 所示)服务器机房计费系统数据库数据查询返回结果图 2.1 系统结构图(2). 系统实现技术系统实现所需开发环境 Visual Basic.NET,它是下一代的 Visual Basic。而并不是简单的在 Visual Basic 6.0 上在添加一些新特性而已,微软重新设计了产品以便使开发者能够更加容易的开发分布式应用,例如基于 WEB 的程序以及多层系统。Visual Basic.NET 中有两种窗体包
20、,Windows 窗体以及 Web 窗体;一个新版的 ADO 用于接受离线数据源;新的语言,移走了原来的关键字,提高 Type 数据的安全性以及提供低级别结构以满足高级别开发者的需求。这些新的特性为 Visual Basic 开发者提供了新的开发窗口:通过 Web 窗体以及 ADO.NET,你可以快速开发可扩展的 Web 站点;通过继承,该语言实现了真正的支持面向对象编程(object-oriented programming) ;Windows 窗体本身支持可视继承;现在展开程序就像拷贝可执行文件和控件到另一个目录那样简单。 Visual Basic.NET 现在完全集成在其它的Micros
21、oft Visual Studio .NET 语言中,不仅可以通过不同的语言开发组件,而且通过交叉语言继承,可以从用一种语言编写的类中派生用另一种语言编写的类。 (3). 系统的安全性 为了使系统能够在使用的过程中,用户利益得到保障。在系统中应设计管理模块,根据不同的客户设定不同的权限,体现了追求系统人工智能化,保证了只有管理员才能对整个系统的完全控制。2.4 系统功能描述 5对系统的功能进行分析,综合本系统设计的服务器端与客户端,总结整个系统功能模块,如图 2.2 所示机房计费系统服务器端 客户端操作员登录计算机信息管理用户信息管理操作员管理添加计算机信息修改计算机信息添加用户信息查询用户费
22、用用户充值删除用户信息设置上机费用操作员管理修改密码删除计算机信息修改计算机信息上机计费图 2.2 系统功能模块图本系统要求对用户使用网吧计算机资源的整个过程进行有效的管理。客户端保证用户在登录系统前无法使用计算机。服务器端实现系统的各种功能,包括系统管理、用户、计算机信息的管理功能。服务器端的功能需求具体表述有:2.4.1 操作员管理功能模块该模块主要提供操作员登录、操作员管理、修改密码和设置上机费用的功能。操作员管理具体包括添加、编辑和删除操作员,能够按模块的方式设置操作员不同的权限。 (如图 2.3 所示)6操作员管理操作员管理退出锁定屏幕设置上机费用修改密码操作员登录添加操作员编辑操作
23、员删除操作员图 2.3 操作员管理模块图2.4.2 用户管理功能模块该模块主要提供用户充值、添加、查询、修改和删除用户信息的功能。这里要区分不同的用户类型,按不同的用户类型设置上机费用。 (如图 2.4 所示)7用户信息管理删除用户信息修改用户信息添加用户信息查询用户费用用户充值按用户帐号按用户姓名按用户类型按用户类型按用户帐号按用户姓名图 2.4 用户信息管理模块图2.4.3 计算机管理功能模块该模块主要提供添加、修改和删除计算机信息功能。这里不仅需要记录计算机本身的配置信息,还需要记录计算机的连接和使用情况。 (如图 2.5 所示)8计算机信息管理添加计算机信息修改计算机信息删除计算机信息
24、按机房编号按配置按计算机名称按机房编号按配置按计算机名称图 2.5 计算机信息管理模块图2.5 系统设计的类结构本系统代码结构分为前端界面和底层的类代码。前端界面包括服务器端的前界端面和客户端的前端界面,服务器端的前端界面面向操作员,客户端的前端界面面向计算机用户。底层代码包括 ClsSuperUser 类、ClsUser 类、ClsComputer 类、ClsFeeRules 类、ClsDBOperation 类、ClsServer 类和ClsClient 类。其中 ClsDBOperation 类负责对数据库进行一些基本的操作;ClsSuperUser 类、ClsUser 类、ClsCom
25、puter 类分别负责数据库中管理员,用户和计算机信息的操作;ClsServer 类和 ClsClient 类分别负责服务器和客户端的通信。如图 2.6 所示9操 作 员服 务 器 前 端 界 面数据库 Clsomputer类ClsDBOperation类FRls类U类SuUs类 ClsServ 类用 户客 户 端 前 端 界 面Clsient类图 2.6 系统代码结构设计图10第三章 数据库设计数据库设计是信息管理系统中的一个基础工作,在整个开发工作中占有相发重要的份量。数据库的设计目的在于提供高的数据库存储效率,保证数据库的完整性和一致性。设计数据库系统时应先了解用户的各方面需求,包括现有
26、系统的需求及将有可能增加的需求。3.1 数据库的需求分析用户的需求具体体现在各种信息的提供、保存、更新、和查询,这就要求数据库存结构能充分满足各种信息的输入和输出。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,是系统设计的根本。基于计费系统的需求,通过业务流程和数据流程的分析,需设计以下数据表和数据字段。1. 操作员信息表包括的数据字段有:操作员账号、密码、操作员真实姓名、用户模块、计算机模块、备注。其中关键字段是操作员的账号。如表 3.1 所示字段名 意义 字段类型 字段大小 关键字UserName 操作员账号 文本 6 是Password 密码 文本 10RealNam
27、e 操作员真实姓名 文本 10ModUser 用户模块 文本 3ModComputer 计算机模块 文本 3Memo 备注 备注表 3.1 操作员信息表设计完成后,保存信息为“tbSuperUser” ,为了在程序中检验数据库存的合理性以及测试程序的效果,应在数据库中输入一些数据。如图 3.1 所示:图 3.1 操作员信息表图2. 用户信息表:包括的数据字段有:用户名、密码、用户真实姓名、用户类型、账号余额、出生日期、联系电话、有效日期、证件类型、证件号码、住址、邮编、备注。其中用户名有关键字段。如表 3.2 所示11字段名 意义 字段类型 字段大小 关键字UserName 用户名 文本 6
28、是Password 密码 文本 10RealName 用户真实姓名 文本 10Group 用户类型 文本 3Fee 账号余额 数字 单精度BirthDate 出生日期 日期Phone 联系电话 文本 20ValidDate 有效日期 日期CreateCarDate 创建日期 日期CertificateType 证件类型 文本 10CertificateNo 证件号码 文本 20Address 住址 文本 50PostCode 邮编 文本 6Memo 备注 备注表 3.2 用户信息表设计完成后,保存信息为“tbUser” ,为了检验数据库设计的合理性及测试程序的效果,应先在数据库中输入一些数据,
29、如图 3.2 所示图 3.2 用户信息表图3. 计算机信息表:包括的数据字段有:计算机名称,用户名、是否连接、IP 地址、网吧编号、机位编号、配置、备注。其中计算机名称是关键字段。如表 3.3 所示字段名 意义 字段类型 字段大小 关键字ComputerName 计算机名称 文本 17 是UserName 用户名 文本 10Connected 是否连接 文本 1IPAddress IP 地址 文本 15RoomNo 网吧编号 文本 2PositionNo 机位编号 文本 312Config 配置 文本 50Memo 备注 备注表 3.3 计算机信息表设计完成后,保存信息为“tbCompter”
30、 ,为了检验数据库设计的合理性及测试程序的效果,应先在数据库中输入一些数据,如图 3.3 所示图 3.3 计算机信息表图4. 用户费用信息表:包括的数据字段有:用户名、登录时间,下机时间、本次上机时间、本次上机费用、计算机的房间编号+机位编号。如表 3.4 所示字段名 意义 字段类型 字段大小 关键字UserName 用户名 文本 10LoginTime 登录时间 日期 10LogoffTime 下机时间 日期 日期TotalHour 本次上机时间 数字 单精度Fee 本次上机费用 数字 单精度Computer 计算机的房间编号+机位编号文本 10表 3.4 用户费用信息表5. 费率信息表:包
31、括的数据字段有:用户类型和费率。如表 3.5 所示字段名 意义 字段类型 字段大小 关键字Group 用户类型 文本 10 是Amount 费率 数字 单精度表 3.5 用户费率信息表用户费率可以经操作员定义,根据用户类型的不同,制定不同费率。如图 3.4 所示13图 3.4 用户费率信息表图14第四章 通信过程与 VB.NET 中的通信类4.1 通信过程网吧计费系统有异于其它信息管理系统,它的工作原理如图 4.1 所示,因此服务器端与客户端机器通信就必然会采用异步通信的方式,在主程序启动后,程序在后台同时启动别一个线程,通过 Socket 对象开始侦听客户端。当客户端传入一个连接请求时,后台
32、程序将接受该请求,同时实例化一个 Socket 对象负责与该客户端的 Socket对象进行通信。如果程序没有退出,进入下一个侦听循环,则后台程序就实现了一点对多点的通信模式。侦听客户端传入的连接请求接受客户端传入的连接请求实例化 S o c k e t 对象用于与客户端通信退出侦听是否程序是否退出图 4.1 后台程序工作流程图服务器端与客户端的具体通信过程如图 4.2 所示。具体工作流程先是客户端发出连接请求,正常情况,服务器端必定接受请求。客户端再发送一个连接信息,该信息包含客户端机器的一些信息,服务器端将接受该信息,并对其进行相应处理,再回发一个确认信息给客户端。这样就表现服务端与客户端已
33、成功连接。此时,客户端发送登录信息,或在登录成功后,间期性发送连接信息,或在下机时发送注销信息,同时服15务器端对这些信息进行相应处理,并反馈客户端。这就是一个完整的客户端与服务器端的通信过程。服务器端客户端请求连接信息接受请求再次连接信息确认再次连接信息登录/注销/连接确认同步信息图 4.2 服务器端与客户端的完整通信过程图4.2 VB.NET 中的通信类TCP 协议是 TCP/IP 协议簇中的传输层中的一个协议,也是 TCP/IP 协议簇最为重要的协议之一。TCP 协议是一种面向连接的,并提供可靠的、完整的、安全的数据传送的网络协议。它提供可靠字节服务的协议。在网络中通过 TCP 协议传送
34、数据之前,发送方和接收方之间必须建立连接,这种连接就是所谓的“握手“。网络中 TCP 应用,如同日常生活中的打电话,在通话之前,首先要拨号、震铃(犹如发送方向接收方提出 TCP连接申请,并等待 TCP 连接申请通过) 。直到对方拿起电话时(发送方和接收方的 TCP连接已经建立) ,就可以通话了(传送数据) 。本系统是基于 TCP/IP 协议网络数据传送的。在.Net FrameWork SDK 中提供了很多用以实现 TCP 协议或与之相关协议的类库,现介绍在系统设计中用到的 5 个类,即:TcpListener 类、TcpClient 类、NetworkStream 类、StreamReade
35、r 类和 StreamWriter 类。TcpListener 主要用以侦听端口号,并接收远程主机的 TCP 连接申请;TcpClient 主要用以提出 TCP 连接申请; 16NetworkStream 类是实现 TCP 数据传输的基础数据流;StreamReader 类的作用是通过操作 NetworkStream,实现从网络接收数据;StreamWriter 类的作用是通过操作NetworkStream,实现向网络传输数据。4.2.1 TcpListener 类在本系统设计中,TcpListener 类设计在服务器端,主要作用是从 TCP 网络客户端侦听连接, TcpListener 类基
36、于 Socket 类,提供更高理念级别的 TCP 服务。可以使用 TcpListener 从 TCP 客户端侦听连接。像 FTP 和 HTTP 这样的应用层协议是在 TcpListener 类的基础上建立的。TcpListener 类常用方法、属性及其说明,如表4.1、表 4.2 所示:方法 说明AcceptSocket 接受挂起的连接请求AcceptTcpClient 接受挂起的连接请求Pending 确定是否有挂起的连接请求Start 开始侦听网络请求Stop 关闭侦听器表 4.1 TcpListener 类常用方法及其说明表属性 说明LocalEndpoint 获取当前 TcpListe
37、ner 的基础 EndPointActive 获取一个值,该值指示 TcpListener 是否正主动侦听客户端连接Server 获取基础网络 Socket表 4.2 TcpListener 类常用属性及其说明表4.2.2 TcpClient 类在本系统设计中,TcpClient 类设计在客户端,主要为 TCP 网络服务提供客户端连接。TcpClient 是类基于 Socket 类构建,它以更高的抽象程度提供 TCP 服务。TcpClient 提供了通过网络连接、发送和接收数据的简单方法。TcpClient 类常用方法、属性及其说明,如表 4.3、表 4.4 所示:方法 说明Close 关闭
38、TCP 连接Connect 使用指定的主机名和端口号将客户端连接到 TCP 主机GetStream 返回用于发送和接收数据的流表 4.3 TcpClient 类类常用方法及其说明表属性 描述LingerState 有关套接字逗留时间的信息NoDelay 一个值,该值在发送或接收缓冲区未满时启用延迟ReceiveBufferSize 接收缓冲区的大小ReceiveTimeout TcpClient 在启动后为接收数据而等待的时间长度SendBufferSize 发送缓冲区的大小SendTimeout 在您启动发送操作后 TcpClient 将为接收确认而等待的时间17长度表 4.4 TcpCli
39、ent 类类常用属性及其说明表4.2.3 NetworkStream 类NetworkStream 类主要是提供用于网络访问的基础数据流。它主要是网络数据传输的载体,并提供同步、异步方式来访问网络数据流。在 程序设设计过程中,经常利用 NetworkStream 作为传送(StreamWriter 类)和接收(StreamReader 类)数据的载体。NetworkStream 类常用方法、属性及其说明,如表 4.5、表 4.6 所示:方法 说明BeginRead 开始异步读者基础数据流BeginWrite 开始异步写入基础数据流Close 关闭流并可选择关闭基础套接字EndRead 结束异
40、步读取EndWrite 结束异步写入Flush 刷新流中的数据Read 从流中读取数据Seek 将流的当前位置设置为给定值SetLength 设置流的长度Write 将数据写入流表 4.5 NetworkStream 类中常用的方法及其说明表(注:其中“BeginRead“、“EndRead“和“BeginWrite“、“EndWrite“是二对异步方法,起作用分别相当于“Read“和“Write“方法。 )属性 说明CanRead 获取当前流是否支持读取CanSeek 获取流是否支持查找。该属性总是返回 falseCanWrite 获取当前流是否支持写入DataAvailable 获取是否可
41、以在流上读取数据Length 流上可用数据的长度Position 获取或设置流中的当前位置表 4.6 NetworkStream 类中属性及其说明表4.2.4 StreamReader 类StreamReader 类能够实现对基础数据流的读操作,从而实现对经过基础数据流传送来的数据。StreamReader 类常用方法、属性及其说明,如表 4.7 所示:方法 说明Close 关闭 StreamReader 并释放与阅读器关联的所有系统资源DiscardBufferedData 允许 StreamReader 丢弃其当前数据Peek 返回下一个可用的字符,但不使用它Read 读取输入流中的下一个
42、字符或下一组字符ReadBlock 从当前流中读取最大数量的字符并从索引开始将该数据写入缓冲区18ReadLine 从当前流中读取一行字符并将数据作为字符串返回ReadToEnd 从流的当前位置到末尾读取流表 4.7 StreamReader 类中常用的方法及其说明表4.2.5 StreamWriter 类StreamWriter 类能够实现对基础数据流的写操作,从而实现提供基础数据流来传送数据。StreamWriter 类常用方法及其说明,如表 4.8 所示:方法 说明Close 关闭当前的 StreamWriter 和基础流Flush 清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流
43、Write 写入基础数据流WriteLine 写入重载参数指定的某些数据,后跟行结束符表 4.8 StreamReader 类中常用的方法及其说明表19第五章 系统的实现创建系统数据库,服务器端程序和客户端程序后,就可以实现运行整个系统程序。5.1 公共模块首先在服务器端程序的公共模块中添加以下代码,运行系统登录窗口:Sub Main ( )Application.EnableVisualStyles ( )Application.DoEvents ( )Application.Run( New FrmLogin)End Sub 5.2 服务器端的实现服务器端主界面分为 4 部分:主菜单、工具
44、栏、广播消息面板和客户端显示板。主菜单可以对系统的操作员信息,用户信息和计算机信息进行管理;工具栏为用户提供了一些操作的快捷方式;广播消息可以向用户发送文本消息和关机等命令;客户端的连接情况则经显示面板显示。5.2.1 服务器端登录 进入系统,首先是登录界面,而登录功能是任何一个数据库信息管理系统不可少的模块,设计如图 5.1 所示,用户需要输入用户名,密码和附加码。如果该界面判断用户名、密码和附加码都正确有效,系统将会进入到主界面。图 5.1 服务端登录图设计过程,系统首先需要判断输入附加验证码是否正确。利用附加码的目的是防止非法用户利用机器程序,这些附加码都是随机产生的,大大增加了系统的安
45、全性,比如穷举破解密码方法在这一功能下行不通。工作流程图 5.2 所示20登录界面输入用户名 、 密码和附加验证码登录成功是是验证码是否正确否用户名和密码是否正确否图 5.2 登录流程图 根据以上流程,双击窗体上的“确定”按钮,打开代码编辑器,在按钮的 Click事件中添加如下代码:Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.ClickIf Label.Text = TxtAttachCode.Text ThenNewSuperUser = New Cls
46、SuperUser(Trim(UsernameTextBox.Text), PasswordTextBox.Text)If NewSuperUser.LoginConfirm ThenDim Frmobj As New FrmMain()Frmobj.Show() 显示主窗体Me.Finalize()ElseMsgBox(“输入错误,请重试“, MsgBoxStyle.Critical, “信息框“)Label.Text = ClsSuperUser.AttachCodeExit SubEnd If21ElseMsgBox(“输入错误,请重试“, MsgBoxStyle.Critical, “
47、信息框“)Label.Text = ClsSuperUser.AttachCodeExit SubEnd IfMe.Close()End Sub5.2.2 添加操作员添加操作员信息功能是超级用户具有的功能,通过此界面设置所添加操作员的相关信息和权限设置。所添加操作员对用户/计算机信息模块的权限分为 3 种:无权限、可读和可读写。添加操作员设计图如图 5.3 所示。图 5.3 添加操作员图添加操作员功能只能由超级用户添加,这个设计就能使系统管理不混乱,保障系统安全性,判断“添加操作员”操作权限工作流程如图 5.4 所示。22进入添加界面获取当前系统用户名退出否是判断是否为超级用图 5.4 判断“
48、添加操作员”操作权限流程图双击“确定”按钮,编写代码如下:Private Sub BtOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtOK.ClickIf Trim(TxtName.Text) = “ ThenMsgBox(“输入的用户名不能为空!“, MsgBoxStyle.Exclamation, “信息框“)Exit SubEnd IfIf Trim(TxtRealName.Text) = “ ThenMsgBox(“输入的用户真实姓名不能为空!“, MsgBoxStyle.Ex
49、clamation, “信息框“)Exit SubEnd IfIf Trim(TxtPassword.Text) = “ ThenMsgBox(“输入的密码不能为空!“, MsgBoxStyle.Exclamation, “信息框“)Exit SubEnd IfDim TempUser As New ClsSuperUser(Trim(TxtName.Text), TxtPassword.Text)TempUser.RealName = Trim(TxtRealName.Text)TempUser.ModUser = Trim(ComboModUser.Text)TempUser.ModComputer = Trim(ComboModComputer.Text)TempUser.Memo = Trim(TxtMemo.Text)NewSuperUser.AddUser(TempUser)Me.Close()End Sub235.2.3 编辑操作员编辑操作员信息功能是超级用户具有的功能,通过此界面设置所要修改操作员的相关信息和权限设置。所编辑操作员对用户/计算机信息模块的权限分为 3 种:无权限、可读和可