机房收费系统之六(上下机窗体)
来源:互联网 发布:stp什么软件打开 编辑:程序博客网 时间:2024/05/17 04:36
上机
1.刚开始进行上下机窗体的时候,想的比较简单,以至于后来遗漏很多问题。所以流程图改了好几遍才算比较完善。
上机模块主要功能就是输入卡号开始计时消费,类似于登陆窗体模块。需要注意的有两点:一是要考虑输入的卡号是否正在上机(卡号不能重复上机),二是考虑余额是否充足(不充足提醒充值)。
2.流程图:
通过多次改进流程图,基本上可以全面了解了上机模块的整个流程。然后再写代码就很顺畅了。
下机
1.下机模块和上机差不多。我觉得最复杂的地方就是计算消费。需要计算消费时间,通过消费时间计算出消费金额。这里需要通过结合基本数据表来判断和计算。我在这里思考了好久。
2.流程图:
3.重要的代码学习:
下机模块代码:
Private Sub cmdxiaji_Click() Dim txtSQL As String Dim txtSQL1 As String Dim txtSQL2 As String Dim txtSQL3 As String Dim txtSQL4 As String Dim msgText As String Dim mrc As ADODB.Recordset '连接student表 Dim mrc1 As ADODB.Recordset '连接Online表 Dim mrc2 As ADODB.Recordset '连接Line表 Dim mrc3 As ADODB.Recordset '连接Basic表 Dim mrc4 As ADODB.Recordset '连接Online,确认人数 Dim intlinetime As Integer '用于存储实际在线时间 Dim intconsume As Single Dim curconsume As Single '用于存储真正花费钱的时间 Dim curbalance As Single '用于存储用户的余额 Dim fixedunit As Single '用于存储单位金额 Dim temunit As Single '用于存储单位金额 Dim a As Integer Dim Remaincash As Single '模块一:判断卡号是否为空,判断卡号是否为数字 If Trim(txtcardno.Text = "") Then MsgBox "请输入卡号!", vbOKOnly + vbExclamation, "提示" Call Clear_Info txtcardno.SetFocus Exit Sub Else If Not IsNumeric(Trim(txtcardno.Text)) Then MsgBox "卡号必须输入数字!", vbOKOnly + vbExclamation, "提示" Call Clear_Info' txtcardno.Text = "" txtcardno.SetFocus Exit Sub End If End If '模块二:判断卡号是否注册,是否已经退卡。这里先查student_Info txtSQL = "select * from student_Info where cardno='" & Trim(txtcardno.Text) & "'" Set mrc = ExecuteSQL(txtSQL, msgText) If mrc.BOF And mrc.EOF Then MsgBox "该卡号未注册,请先注册信息!", vbOKOnly + vbExclamation, "提示" Call Clear_Info txtcardno.SetFocus Exit Sub Else If Trim(mrc.Fields(10)) = "不使用" Then MsgBox "该卡已经退卡", vbOKCancel + vbInformation, "提示" Call Clear_Info txtcardno.SetFocus Exit Sub End If End If ' mrc.Close ':判断卡号是否在上机,没有上机不能退卡.连接Online表 txtSQL1 = "select * from OnLine_Info where cardno= '" & Trim(txtcardno.Text) & "'" Set mrc1 = ExecuteSQL(txtSQL1, msgText) If mrc1.EOF = True Then MsgBox "该卡没有上机,不能进行下机处理", vbOKOnly + vbExclamation, "警告" Call Clear_Info txtcardno.SetFocus Exit Sub End If '在线时长计算 intlinetime = (Date - DateValue(mrc1!ondate)) * 1440 + (Hour(Time) - Hour(TimeValue(mrc1!OnTime))) * 60 + (Minute(Time) - Minute(TimeValue(mrc1!OnTime))) '时间单位为分钟 'txtSQL = "select * from student_Info where cardno='" & Trim(txtcardno.Text) & "'" ' 多余 'Set mrc = ExecuteSQL(txtSQL, Msgtext) '获得基本表的数据 txtSQL3 = "select * from Basicdata_Info" Set mrc3 = ExecuteSQL(txtSQL3, msgText) 'mrc3连接basicdata表 mrc3.MoveLast '单位时间的费用 (把固定用户,临时用户单位时间的费用分别赋值给费用) fixedunit = Val(mrc3.Fields(0)) '把固定用户的金额赋值给变量 temunit = Val(mrc3.Fields(1)) '把临时用户的金额赋值给变量 '判断在线时间是否小于准备时间,若小于则 消费金额=0 If intlinetime <= Val(Trim(mrc3.Fields(4))) Then txtxftime.Text = "0" Else '判断在线时间是否小于最低消费时间,若小于则为0 If intlinetime < Val(Trim(mrc3.Fields(3))) Then txtxftime.Text = "0" End If End If '在线时间大于单位时间,就按有几个单位时间算,分为固定用户和临时用户 If intlinetime >= Val(Trim(mrc3!leastTime)) And intlinetime And Trim(mrc.Fields(14)) = "固定用户" Then a = Int(intlinetime / Val(Trim(mrc3!unitTime))) If a = intlinetime / Trim(mrc3!unitTime) Then curconsume = a Else curconsume = a + 1 End If txtxfjine.Text = Val(curconsume) * Val(fixedunit) If txtxfjine.Text = "" Then txtxfjine.Text = "0" Else If intlinetime >= Val(Trim(mrc3!leastTime)) And intlinetime And Trim(mrc.Fields(14)) = "临时用户" Then a = Int(intlinetime / Val(Trim(mrc3!unitTime))) If a = intlinetime / Trim(mrc3!unitTime) Then curconsume = a Else curconsume = a + 1 End If txtxfjine.Text = Val(curconsume) * Val(temunit) End If End If '更新student表 txtSQL = "select * from student_Info where cardno='" & Trim(txtcardno.Text) & "'" Set mrc = ExecuteSQL(txtSQL, msgText) Remaincash = mrc!cash - Val(txtxfjine.Text) mrc.Fields(7) = Remaincash mrc.Update mrc.Close '下机显示 txtSQL = "select * from OnLine_Info where cardno='" & Trim(txtcardno.Text) & "'" Set mrc1 = ExecuteSQL(txtSQL, msgText) txtxjdate.Text = Format(Date, "yyyy-mm-dd") txtxjtime.Text = Time txttype = Trim(mrc1.Fields(1)) txtSID = Trim(mrc1.Fields(2)) txtname = Trim(mrc1.Fields(3)) txtxibie = Trim(mrc1.Fields(4)) txtsex = Trim(mrc1.Fields(5)) txtsjtime = Trim(mrc1.Fields(7)) txtsjdate = Trim(mrc1.Fields(6)) txtxftime.Text = intlinetime txtcash.Text = Remaincash '更新上机记录表line表 txtSQL2 = "select * from line_Info where cardno='" & Trim(txtcardno.Text) & "'" Set mrc2 = ExecuteSQL(txtSQL2, msgText) mrc2.Fields(8) = Trim(txtxjdate.Text) mrc2.Fields(9) = Trim(txtxjtime.Text) mrc2.Fields(10) = Trim(txtxftime.Text) mrc2.Fields(11) = Trim(txtxfjine.Text) mrc2.Fields(12) = Trim(txtcash.Text) mrc2.Fields(13) = Trim("正常下机") mrc2.Update mrc2.Close a = MsgBox("下机成功,欢迎下次再来", vbOKOnly + vbExclamation, "提示") If a = vbOK Then Call Clear_Info '删除online表的信息 mrc1.Delete mrc1.Update mrc1.Close txtSQL4 = "select * from OnLine_Info" Set mrc4 = ExecuteSQL(txtSQL4, msgText) Label15.Caption = mrc4.RecordCount '显示上机人数 mrc4.Close End Sub
总结:遇到问题,多思考,多请教“巨人”。感谢您的阅读!
阅读全文
2 0
- 机房收费系统之六(上下机窗体)
- 上下机窗体 机房收费系统
- 【机房收费系统】 之 上下机
- 机房收费系统 之 上下机
- 机房收费系统(二)上下机
- 机房收费系统(二)---上下机
- 【机房收费系统】上下机
- 【机房收费系统】上下机
- 机房收费系统-上下机
- 机房收费系统--上下机
- 上下机---机房收费系统
- 【机房收费系统】上下机
- 机房收费系统---上、下机
- 机房收费系统-上下机
- 机房收费系统-上下机
- 机房收费系统之下机
- 机房收费系统之下机
- 机房收费系统上下机之观察者模式的尝试
- UVA12503-Robot Instructions
- Q106:Mac系统下安装编译PBRT-V3
- SQL SERVER 注册服务器使用
- android探索之路:截取字符串substring()的用法
- Web系统大规模并发——电商秒杀与抢购
- 机房收费系统之六(上下机窗体)
- 库函数(过程)调用和系统调用的区别
- PHP中把stdClass Object转array的几个方法
- PHP面向对象3-引用&
- 单例模式及销毁
- 高可用Spark集群的主备切换过程(原理概要)
- 决定的事就一心干到底
- VMware中的网络浅析
- nodejs群聊和私聊