资源描述
VB毕业设计--《网吧收费系统》
———————————————————————————————— 作者:
———————————————————————————————— 日期:
35
个人收集整理 勿做商业用途
题 目: (服务器端)
姓 名: 陈 宝 忠
系 别: 计算机工程系
指导教师: 钟 文 龙
重庆电子职业技术学院
二00八年三月
摘要
计算机日益普及的今天,我国网民数量日益增多.其中网吧是网民集中的场所,在利益的驱使下,越来越多的网吧成立.网吧的管理也成了一 个新的问题,一方面是硬件的安装与维修,网络安全的组建。还有一方面就是网吧收费。网吧这样的公众场所,人员流动性大,不可能完全靠人力 去解决,而且管理者和工作人员之间也要有帐目的清算.
而且为了节约成本,网吧的工作人员也不会有太多,如何达到这样的目的,信息化的时代还是 要靠科技.面对这样的现实,一款应用软件就能把这些问题解决,软件该怎么做,需要什么功能我们自然不能靠简单的理论分析,有机会 还是要到实际的生活中去了解,只有这样才能保证做 出的系统有较高的使用价值.
在开发图书管理的过程,在实际调查后确定开发流程,基本功能设计,文档研究方案。
现在网吧不单是靠提供计算机给网民上网服务,还加有商品的销售,商品销售如果只是靠人员来记录消费情况,会提高出错的概率,而且在人员换班的时候 帐目清算是件很麻烦的事情。 如果把商品 的销售也加进这个系统中,工作人员只是输入商品的编号,帐目就有系统自动结算.
还要考虑到系统实际运行执行代码的效率,功能模块很多的时候,运行速度就成了新的问题,如何解决,让起流畅运行呢?
数据库安全的问题,计算机毕竟只是机器而已,受外界环境影响很大,所以也要考虑备份数据库.
这次开发只是开发了收费系统的服务器端,还要开发出对应的客户端与服务器连接起来才可以正常使用.
问题的提出:讲清所研究的问题“是什么”。
选题背景及意义:讲清为什么选择这个题目来研究,即阐述该研究对学科发展的贡献、对国计民生的理论与现实意义等.
文献综述:对本研究主题范围内的文献进行详尽的综合述评,“述”的同时一定要有“评”,指出现有研究成果的不足,讲出自己的改进思路。
研究方法:讲清论文所使用的科学研究方法。
目录
1.前言
2。 需求分析
2。1 用户定位分析
2.2 功能需求分析
2.3 性能需求分析
3.系统分析
3。1 环境平台分析
3。2 程序功能设计
3.3 程序流程设计
4. 详细设计
4.1 程序单元设计
4。2 程序单元编码
4.3 集成开发
5. 系统实现
5。1 系统模块一
6 结论与展望
参考文献
前言
根据自己的爱好和软件编程的能力,我选择用VB编写网吧收费系统的服务器端,只是编写出了基本的功能,比现实生活中使用的要粗略。但是这个系统只是自己的一次实践,我会在以后的学习中继续努力的
编写这个应用程序其意义在于锻炼了我的动手能力和逻辑思维能力,而且以前也从来没有尝试过编写这样综合性的程序,培养了对问题考虑的全面性.
为了编写有实用价值的东西,我还参阅了大量的资料,包括网络资料的选择,当然在程序完成只后,也不能只有编写者才会用,所以要写出对应的帮助文挡,一般的软件都会有,这是我们生活中的常识。 只是限于水平 ,只能编写部分功能,数据库安全方面也不可靠.一直在寻找解决办法,如果能够采用动态数据库,这些问题就能解决了.
科学这东西讲究的就是严谨的态度,建立数学模型有助于完成设计,在设计的时候避免出现思绪混乱,
在经过系统功能需求分析,在大脑中 已经有很清晰的的目标,可以画出要进行的流程图,比如先根据功能模块确定好选择数据库,然后根据实际编写数据库表,完成数据库表的关联,可以先保存后,等窗体确定完毕,再连接数据库。
经过代码调试,确定能正常运行。
2. 需求分析
2。1用户定位分析
1.合理的工具设置:用户要求界面简洁 容易操作。于是可以使用工具条进行设置,把经常要使用的功能用工具条单独罗列出来,比直接在菜单中选择效率要高.
2.安全要求:为了避免意外事件或者是人为原因导致数据库信息丢失,要做好数据库的保秘和数据库灾难性恢复.
3。简单的操作方式:因为需要有的时候需要对客户机进行远程控制,这样管理起来就轻松起来 。
4。提供全面的数据查询和统计:可以任意选择查询条件,而且为了方便可以设置统计报表功能。
5。报表打印导出功能:要随时可以导出以报表格式存放,打印出来长期备份。
6。会员卡管理:会员卡较之现金交易比较方便管理,
7。商品管理:能够对商品进行销售统计,存储查询。
8。网址限制:现在网络病毒流行,尤其要注意一些不良网页上隐藏病毒,所以要限制一些网站.
2.2功能需求分析
主要功能: 对网吧的人员,资源进行管理。公布网吧的通知公告等信息,发布网吧内外新闻动态,提供上网人员的意见、建议反馈场所,管理网吧内的计算机,对上机用户的情况进行统计,计时计费等。
具体功能:
被控制机有一个服务器,控制器集中在管理机上.可以控制登陆,并进行计时,这是两个基本功能;管理机还有上机,下机结帐,开机,关机,重新启动等功能.
网络管理、计费系统:本网站最重要和最复杂的功能。又分会员注册,登录,以及会员的审核系统,员工的管理,计时计费,计算机管理等小系统。
资源管理:分为流行歌曲,影视频道,游戏推荐,动漫Flash,精彩图片几个模块.
交流平台: 提供在线交流的平台,收集上网人员的相关的意见和建议,并及时处理,对有必要的问题进行回复。
以上功能大部份为系统已实现的基本功能,在开发本系统时也为后继系统扩展开发留有接口,使系统更加方便地可以进行升级和扩展。
2.3性能需求分析
强大的安全保障:网络通讯全面采用数字证书认证体系,具有与网上银行同等的安全级别;基于角色的权限管理允许灵活定制管理权限;具有完备的数据保密、备份、灾难恢复等机制,保证数据高度安全可靠。
严谨与高效的业务流程设计:网吧计费管理系统业务数据遵循财务准则设计,严谨、规范;众多独到的设计不仅方便顾客使用也大大减轻了服务员的工作强度。
易于使用与维护:网吧计费管理系统充分考虑了不同层次使用者的接受能力,服务员经过10分钟简单培训就能掌握,管理人员则拥有众多工具和方法用于简化管理与维护。此外,为了帮助用户尽快熟练掌握网吧计费管理系统的应用,相关软件公司还提供了多种方式的培训和技术支持.
集中管理能力:将配置、升级等任务集中到服务器处理,使管理工作大量减少,变得高效。
3. 系统分析
3.1系统平台分析
系统的开发、运行、测试环境均选用 Windows 系列的操作系统,因为 Windows 系统是PC机上普及最广泛的操作系统,它的界面友好、有高效的计算环境、对硬件的支持程度高、支持On-Now设备、有良好的可移植性和可伸缩性、系统运行稳定、可靠性好、维护方便、容易安装;性能经过优化、安全性好、对网络的支持程度好、使网络应用更为方便快捷。本系统可运行于Windows 20000以上操作系统,在这些操作系统上都必须安装IIS,当然最好是在Windows 2000 Advanced Server 上运行,因为微软开发的Windows 2000 Advanced Server是专门用来提供网络服务器的,有微软这个强大的技术支持,并且系统运行稳定、维护方便、性能经过优化、对网络的支持程度好、使网络应用更为方便快捷。
考虑到Windows XP Professional是我们平时用得最多的操作系统,比较熟悉,且足够支持开发软件VB和Microsoft SQL Server 2000。所以在此我选用了它作为开发环境、运行环境以及测试环境.
在选择开发工具的时候,考虑到各种编程软件,我选择VB6。0主要 有其特点决定的,VB 6。0提供了各种丰富的通信接口,比较适合这种服务器-客户端。
在界面设置上,VB 提供可视化编程,可以避免大量的代码编写,需要什么样子的窗口布局,可以直接在工具箱\里面选择,然后调整布局。
采用的是事件驱动方式,代码执行的过程可以直接控制,很方便代码的调试和改写。比起传统的那些编程语言,代码从开始执行到代码结涑
3.2程序功能设计
(1) 系统功能设计:这一部分是整个系统最基本也是最重要的设置,其中系统设置至少包括以下几方面的内容:
计算机设置:
管理员设置
数据备份
数据还原
系统设置
(2) 记费用功能设计:包括下面内容
开始记费
限定时间
结帐
调换计算机
选购计算机
客户机控制
(3) 界面设置功能:主要是对运行中的系统界面设置,不同的工作人员喜欢不同的背景或布局格式,对整个系统没有太大的影响
(4) 管理功能:包括商品资料管理,客户管理,会员卡管理
(5) 统计功能:
日报表统计:商品统计和上机统计
月报表统计:商品统计和上机统计
3.3程序流程设计
1. 数据库设计(采用无源数据库连接)
无源数据库”连接也并不是说不需要数据源,如果没有数据源则连接是纸上谈兵,只是不需要配置ODBC数据源,利用ADO就可通过代码进行连接。
1.1 ADO(ActiveX Data Object)
在Visual Basic6.0中,数据访问接口有三种:ActiveX数据对象(ADO)、远程数据对象(RDO)和数据访问对象(DAO)。这三种接口的每一种都分别代表该技术的不同发展阶段,最新的是ADO,它比RDO和DAO更加简单,更加灵活.对于新工程,应使用ADO作为数据访问接口。
ADO 是Microsoft 数据库应用程序开发的接口,是建立在OLE DB之上的高层数据库访问技术.它封装了OLE DB所提供的接口,比起OLE DB提供者,ADO的接口可以使程序员在更高级别上进行数据交互。ADO技术不仅可以应用于关系数据库,也可以应用于非关系数据库。可以用统一的方法对不同的文件系统进行访问,大大简化了程序编制,增加了程序的可移植性。
1.2 建立无源数据库连接
在连接数据库前,首先要在Visual Basic 6。0菜单中“工程”—“引用"中选择Microsoft ActiveX Data Objects 2。6 Library 和Microsoft ActiveX Data Objects Recordset 2。6 Library这两个组件。
运用ADO对象模型的主要元素:Connection(连接)中的ConnectionString属性进行连接, ConnectionString为可读写string类型,指定一个连接字符串,告诉ADO 如何连接数据库。
实例:以建立登陆系统为例,介绍无源数据库连接。在Microsoft SQL Server 2000 中建立一个Student 的数据库,在Student数据库中建立login_user(name,password)的数据表,Microsoft SQL Server服务器的名为data_server。代码如下:
Option Explicit
Public LoginSucceeded As Boolean
'引用Microsoft ActiveX Data Objects 2。6 Library
’定义连接对象和记录集
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
’对取消按钮单击事件的响应
Private Sub cmdCancel_Click()
'设置全局变量为 false
'不提示失败的登录
LoginSucceeded = False
Me。Hide
End Sub
'对登录按钮单击事件的响应
Private Sub cmdOK_Click()
Set conn = New ADODB。Connection
Set rs = New ADODB.Recordset
'建立无源数据库连接
conn。ConnectionString=”driver={sql server};server=data_server;uid=sa;pwd=;Database=student"
conn.ConnectionTimeout = 50
conn。Open
Dim str As String
'连接连接对象
Set rs.ActiveConnection = conn
'设置游标类型
rs。CursorType = adOpenDynamic
If Trim(txtUserName.Text = ”") Then
MsgBox ”用户名不能为空,请重新输入用户名!”, vbOKOnly + vbExclamation, ”警告”
txtUserName.SetFocus
Else
’设置查询字符串
str = "select * from login_user where name =’” & Trim(txtUserName。Text) & "’"
rs。Open str
If rs。EOF = True Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName。SetFocus
Else
'登录成功,连接主窗口
If (Trim(txtPassword.Text) = Trim(rs。Fields("password”))) Then
LoginSucceeded = True
Me.Hide
main.Show
Else
MsgBox ”密码不正确,请重输入密码!", , ”警告"
txtPassword。SetFocus
SendKeys ”{Home}+{End}”
End If
End If
End If
End Sub
无源数据库连接则不用配置ODBC环境,可以省去手工设置DSN的麻烦,这种方法所编写的软件适应性广,又符合专业软件的要求。
DO封装并且实现了Microsoft强大的数据访问接口OLE DB的所有功能,它具有通用性好,效率高的特点。通过ADO进行无源数据库连接,省去手工设置DSN的麻烦,使ADO对象模型获得更大的灵活性。
2. 界面设置
确定 应用程序的功能后,从最基本的界面布局设置,这一步的关键就是熟悉VB控件的基本功能,包括常用控件和其它需要从部件里面添加的控件。界面设置要合理,美观为好。
3. 代码编辑
VB 采用的是事件驱动方式,可以直接选择控件的事件和属性,在编写代码的时候会自动给予提示,这样当对一个事件进行代码编辑的时候如果没有给予格式提醒,这个时候要考虑是不是出错了,如果没有这种功能,这种错误只能到代码编译运行的时候才会发现,那个时候会浪费很多时间来修改错误代码。
4. 模块建立
模块一般是放全局公用的函数、过程、常数、自定义结构、全局变量等等东西的地方,也就是公用部分的集中场所。当然,模块中也可以定义private 的函数或者过程以便公用过程的内部调用。类模块是定义一个类,类模块中的所有public成员必须在创建了累的实例以后才能够调用,需要和标准模块区分开来.好的编程习惯是把不同种类的功用模块分类放在不同的标准模块中,便于查阅,所以很多程序中会有多个标准模块存在.
类模块和标准模块的不同点在于存储数据方法的不同。标准模块的数据只有一个备份。这意味着标准模块中一个公共变量的值改变以后,在后面的程序中再读取该变量时,它将得到同一个值。
而类模块的数据,是相对于类实例(也就是,由类创建的每一对象)而独立存在的。
同样的,标准模块中的数据在程序作用域内存在,也就是说,它存在于程序的存活期中;而类实例中的数据只存在于对象的存活期,它随对象的创建而创建,随对象的撤消而消失。
最后,当变量在标准模块中声明为 Public 时,则它在工程中任何地方都是可见的;而类模块中的 Public 变量,只有当对象变量含有对某一类实例的引用时才能访问
5. 运行调试
1.运行程序
运行程序,可用下列方法之一:
(1)选择主窗口的“运行”菜单的“启动"命令。
(2)按快捷键F5。
(3)选择工具栏上的启动按钮。
在程序运行过程中,标题栏显示:
工程1—Microsoft Visual Basic[运行]
表示进入运行状态.
2.暂停运行
若程序有错误,可用以下任一种方式进入中断状态,对程序进行调试:
(1)选择“运行"菜单的“中断"命令.
(2)按Ctrl+Break键.
(3)选择工具栏上的中断图标。
进人中断状态,标题栏显示:
工程1-Microsoft Visual Basic[break]
若要继续运行,可直接按F5键,或选取“运行”菜单的“继续"命令。若要重新运行,按
Shift+F5键或选择“运行”菜单的“重新启动”命令。
3.结束程序运行
结束程序运行返回设计状态的方法为:
(1)选择“运行"菜单的“结束”命令。
(2)选择工具栏上的结束图标。
(3)按程序的结束按钮或程序窗口的关闭按钮
4. 详细设计
4。1程序单元设计
1. 登陆窗口设计:登陆系统窗口界面要简单为好,需要两个标签框用来标明用户名和密码,两个文本框用来输入用户名和密码,还有两个命令按扭用来实现登入和取消命令:
根据需要添加ACTIVE XActiveX控件数据输入和函数功能执行都必须通过容器,因此ActiveX控件和容器都必须支持一些特定的接口协议。根据Microsoft 相应的规格标准,ActiveX控件应具备如下的性能机制。 属性和方法:ActiveX控件必须提供属性的名称、方法的名称及参数,通过这项机制容器可以存取和改变ActiveX控件的属性参数. 事件:ActiveX控件由这项机制通知容器在ActiveX控件中发生的事件,比如属性参数的改变,用户按下鼠标左键等. 存储:容器由这项机制通知ActiveX控件存储和提取有关信息数据等。 ActiveX控件只要在Windows的Registry数据库中注册后,就可以像其他Windows应用程序一样发挥各自的功能。 ActiveX控件是一个模块化的灵活对象,如果某个应用程序或网页需要增加一项特殊的功能,无须重写整个程序,只要灵活地插入一个具有此项功能的ActiveX控件即可实现。ActiveX的优势还在于它的动态可交互性,用户可以动态地在使用过程中,通过改变它的属性和参数,在应用程序中实现自己的特殊要求。 也许有的读者会问:目前在市面上可以找到各种各样现成的ActiveX控件,还有没有必要自己创建ActiveX控件呢?关于这个问题很容易解释,现有的控件种类是很多,功能也比较齐全,问题是有许多时候会遇到这种情况:使用现成的控件虽能完成任务,但自己需要的一些特性(属性、事件或方法)该控件却没有提供,还需要自己手工写代码来实现,而这些特 性偏偏在自己的应用系统中又经常会用到,为了避免大量的重复劳动,一劳永逸的办法就是在创建自己的ActiveX控件。 目前可以使用Visual Basic或其它开发工具创建 ActiveX控件。无论按照哪种标准,Visual Basic都是计算机历史上最为成功的(同时也是最流行的)编程语言,其中最令人兴奋的特性就是可以创建用户自己的控件并可以像其他控件一样应用于支持 ActiveX控件技术的应用程序中。下面通过一个具体实例来阐述如何在Visual Basic 6。0(中文企业版)下进行 ActiveX控件创建。 本文为互联网收集,请勿用作商业用途文档为个人收集整理,来源于网络
设计完成效果图
2.主界面设计
4.2.程序单元编码
1. 登陆窗口代码:
rivate Sub cmdOK_Click()
’检查正确的密码
With frmMain.Data8.Recordset
.MoveFirst
For i = 1 To 。RecordCount
If Combo1.Text = 。Fields("用户名称”) And txtPassword = 。Fields("用户密码") Then
LoginSucceeded = True
UserName = .Fields(”用户名称”)
UserPass = 。Fields(”权限")
Exit For
End If
。MoveNext
Next i
If LoginSucceeded Then
’将代码放在这里传递
’成功到 calling 函数
'设置全局变量时最容易的
Unload Me
Else
MsgBox "无效的密码,请重试!”, , ”登录”
txtPassword。SetFocus
SendKeys "{Home}+{End}"
End If
End With
End Sub
Private Sub Form_Load()
On Error Resume Next
With frmMain。Data8.Recordset
.MoveFirst
For i = 1 To 。RecordCount
Combo1.AddItem 。Fields(”用户名称")
Combo1.ItemData(Combo1.NewIndex) = .AbsolutePosition
。MoveNext
Next i
End With
2. 管理员模块代码
Dim aa As Long
Private Sub Combo1_Click()
Command4。Enabled = True
End Sub
Private Sub Command1_Click()
’添加用户
On Error Resume Next
If Command1.Caption = "添加用户" Then
ListView1.Visible = False
Frame1。Visible = True
Text1。Text = ””
Text2.Text = ”"
Text3.Text = "”
Text4.Text = ""
Combo1。Text = Combo1.List(0)
Command2。Enabled = False
Command3。Enabled = False
Command4.Enabled = True
Command1.Caption = ”放弃添加”
Else
ListView1.Visible = True
Frame1。Visible = False
Command2。Enabled = True
Command3.Enabled = True
Command4.Enabled = False
Command1.Caption = ”添加用户”
End If
End Sub
Private Sub Command2_Click()
'编辑用户
On Error Resume Next
With frmMain.Data8.Recordset
Text1.Text = .Fields("用户名称”)
Select Case .Fields("权限”)
Case "A"
Combo1.Text = Combo1.List(0)
Text2.PasswordChar = ”"
Text3。PasswordChar = ””
Text4。PasswordChar = "”
Text2.Text = 。Fields("用户密码”)
Text3。Text = 。Fields("用户密码”)
Text4。Text = .Fields("用户密码”)
Case "B"
Combo1。Text = Combo1。List(1)
Text2。PasswordChar = ””
Text3。PasswordChar = ”"
Text4.PasswordChar = ””
Text2.Text = 。Fields("用户密码”)
Text3.Text = .Fields(”用户密码")
Text4.Text = 。Fields("用户密码”)
Case ”C"
Combo1.Text = Combo1.List(2)
Text2.PasswordChar = ”"
Text3.PasswordChar = ”"
Text4.PasswordChar = ""
Text2。Text = .Fields("用户密码")
Text3.Text = .Fields("用户密码")
Text4.Text = 。Fields("用户密码”)
Case "D"
Text2.PasswordChar = "*”
Text3.PasswordChar = ”*"
Text4。PasswordChar = ”*”
Text2。Text = ”"
Text3.Text = ”"
Text4。Text = ""
Combo1.Text = Combo1.List(3)
End Select
End With
If Command2。Caption = "修改用户” Then
ListView1.Visible = False
Frame1。Visible = True
Command1.Enabled = False
Command3。Enabled = False
Command4.Enabled = False
Command2。Caption = "放弃修改”
Else
ListView1.Visible = True
Frame1.Visible = False
Command1.Enabled = True
Command3.Enabled = True
Command4.Enabled = False
Command2。Caption = "修改用户"
End If
End Sub
Private Sub Command3_Click()
'删除用户
On Error Resume Next
With frmMain。Data8.Recordset
If MsgBox("确实要删除用户:” & 。Fields(”用户名称”) & ” 吗?", vbYesNo + vbQuestion) = vbYes Then
If Err <> 0 Then Exit Sub
If .Fields("权限”) = ”D" Then
mm = InputBox("请输入密码:")
If mm = 。Fields(”用户密码") And 。Fields("用户名称") <> UserName Then
.Delete
ListView1.ListItems.Clear
Form_Load
Else
MsgBox "不能删除用户!”, vbCritical
End If
Else
.Delete
ListView1。ListItems。Clear
Form_Load
End If
End If
End With
End Sub
Private Sub Command4_Click()
’保存设置
On Error Resume Next
If Trim(Text1.Text) = ”" Then
MsgBox "用户名错误!", vbCritical
Text1.SetFocus
Exit Sub
End If
With frmMain。Data8。Recordset
If Text3.Text 〈> Text4。Text Then
MsgBox ”前后密码设置不一至,请重新输入!", vbCritical
Text3.Text = ”"
Text4.Text = "”
Text3.SetFocus
Exit Sub
End If
aa = .AbsolutePosition
.MoveFirst
For i = 1 To 。RecordCount
If 。Fields(”用户名称”) = Text1。Text Then
If 。AbsolutePosition 〈> aa Then
MsgBox ”用户名已经存在了,请你再换一个!", vbExclamation
。MoveFirst
.Move aa
Text1.SetFocus
Text1。SelStart = 0
Text1。SelLength = Len(Text1。Text)
Exit Sub
End If
End If
.MoveNext
Next i
.MoveFirst
.Move aa
If Command1.Caption = "放弃添加” Then
.AddNew
Else
If Text2.Text <> 。Fields("用户密码”) Then
MsgBox "密码错误,请重新输入!", vbCritical
Text2.Text = "”
Text3.Text = "”
Text4.Text = ""
Text2。SetFocus
Exit Sub
End If
.Edit
End If
。Fields(”用户名称”) = Text1。Text
。Fields(”用户密码") = Text3.Text
.Fields(”权限") = Left(Combo1。Text, 1)
.Update
End With
If Err 〈〉 0 Then MsgBox Error: Exit Sub
ListView1.Visible = True
Frame1。Visible = False
Command1.Enabled = True
Command2。Enabled = True
Command3。Enabled = True
Command4.Enabled = False
Command1.Caption = ”添加用户"
Command2。Caption = ”修改用户”
ListView1。ListItems。Clear
Form_Load
End Sub
Private Sub Command5_Click()
Unload Me
End Sub
Private Sub Form_Load()
On Error Resume Next
With frmMain。Data8。Recordset
aa = .AbsolutePosition
。MoveFirst
For i = 1 To 。RecordCount
ListView1。ListItems。Add i, , .Fields(”用户名称”)
’ ListView1。ListItems(i)。SubItems(1) = 。Fields(”用户密码”)
ListView1.ListItems(i)。SubItems(1) = ”********”
Select Case .Fields(”权限”)
Case ”A"
ListView1.ListItems(i)。SubItems(2) = ”A—记费员"
Case "B"
ListView1。ListItems(i)。SubItems(2) = ”B—操作员"
Case "C"
ListView1。ListItems(i)。SubItems(2) = ”C-管理员”
Case "D"
ListView1。ListItems(i).SubItems(2) = ”D-超级管理员"
End Select
。MoveNext
Next i
。MoveFirst
.Move aa
End With
End Sub
Private Sub Form_Resize()
On Error Resume Next
ListView1。Move 30, 10, Me。Width — 150, Me.Height - 1200
Picture1.Top = ListView1。Top + ListView1.Height + 100
Picture1.Left = (Me。Width - Picture1。Width) / 2
End Sub
Private Sub Label5_Click()
End Sub
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib。ListItem)
’
On Error Resume Next
With frmMain。Data8.Recordset
.MoveFirst
.Move Item。Index - 1
End With
End Sub
Private Sub Text1_Change()
Command4。Enabled = True
End Sub
Private Sub Text2_Change()
Command4.Enabled = True
End Sub
Priva
展开阅读全文