第一次机房收费系统——无尽
来源:互联网 发布:南昌软件测试招聘 编辑:程序博客网 时间:2024/05/16 15:23
这是我的第一次机房收费系统,最近对上下机功能进行了学习。实现了,与大分享。
在这里,我将上机分为七个模块。按照如下的顺序只需要定义四个变量。既节省了内存,又便于修改。
<span style="font-size:18px;"><strong>Dim mrc As New ADODB.Recordset '在一个库里,mrc可以重复使用。同时节省内存。Dim strsql As String '这里最省内存Dim mrcBasicData As New ADODB.RecordsetDim mrcline As New ADODB.Recordset</strong></span>
<span style="font-size:18px;"><strong>Private Sub cmdMachineOn_Click() '上机'模块一:判断卡号是否为空,判断卡号是否为数字If Trim(txtcardno.Text = "") ThenMsgBox "请输入卡号!", vbOKOnly + vbExclamation, "提示"txtcardno.SetFocusExit SubElse If Not IsNumeric(Trim(txtcardno.Text)) Then MsgBox "卡号必须输入数字!", vbOKOnly + vbExclamation, "提示" txtcardno.Text = "" txtcardno.SetFocus Exit Sub End IfEnd If'模块二:判断卡号是否注册,是否已经退卡。这里先查student_Info,mrc为以后方便用。strsql = "select * from student_Info where cardno= '" & Trim(txtcardno.Text) & "'"Set mrc = ExecuteSQL(strsql, "")If mrc.BOF And mrc.EOF ThenMsgBox "该卡号未注册,请先注册信息!", vbOKOnly + vbExclamation, "提示"txtcardno.Text = ""txtcardno.SetFocusExit SubElse If Trim(mrc.Fields(10)) = "不使用" Then MsgBox "该卡已经退卡", vbOKCancel + vbInformation, "提示" txtcardno.Text = "" txtcardno.SetFocus Exit Sub End IfEnd If'模块三:查BasicData_Info,判断是余额小于最小金额。strsql = "select * from BasicData_Info"Set mrcBasicData = ExecuteSQL(strsql, "")If Val(mrc.Fields(7)) < Val(mrcBasicData.Fields(5)) Then '这里mrc.Fields(7)用的很巧妙MsgBox "余额不足,请充值后上机!", vbOKOnly + vbExclamation, "提示"txtcardno.Text = ""txtcardno.SetFocusEnd If'模块四:查OnLine_Info,看该卡是否在上机strsql = "select * from OnLine_Info where cardno= '" & Trim(txtcardno.Text) & "'"Set mrc = ExecuteSQL(strsql, "")If mrc.EOF = False ThenMsgBox "该卡正在上机,不能重复上机!"txtcardno.Text = mrc.Fields(0)txttype.Text = mrc.Fields(1)txtstudentNo.Text = mrc.Fields(2)txtstudentName.Text = mrc.Fields(3)txtdepartment.Text = mrc.Fields(4)txtsex.Text = mrc.Fields(5)txtMachineOnDate.Text = mrc.Fields(6)txtMachineOnTime.Text = mrc.Fields(7)Exit SubEnd If'模块五:显示该卡号信息strsql = "select * from student_Info where cardno= '" & Trim(txtcardno.Text) & "'"Set mrc = ExecuteSQL(strsql, "")If mrc.EOF = False ThentxtstudentNo.Text = Trim(mrc.Fields(1))txtstudentName.Text = Trim(mrc.Fields(2))txtsex.Text = mrc.Fields(3)txtdepartment.Text = mrc.Fields(4)txttype.Text = mrc.Fields(14)txtMachineOnDate.Text = DatetxtMachineOnTime.Text = TimeEnd If'模块六:更新line_Info数据strsql = "select * from line_Info where cardno= '" & Trim(txtcardno.Text) & "'"Set mrcline = ExecuteSQL(strsql, "")mrcline.AddNewmrcline.Fields(1) = Trim(txtcardno.Text)mrcline.Fields(2) = Trim(txtstudentNo.Text)mrcline.Fields(3) = Trim(txtstudentName.Text)mrcline.Fields(4) = Trim(txtdepartment.Text)mrcline.Fields(5) = Trim(txtsex.Text)mrcline.Fields(6) = Trim(txtMachineOnDate.Text)mrcline.Fields(7) = Trim(txtMachineOnTime.Text)mrcline.Fields(12) = Trim(mrc.Fields(7))mrcline.Fields(13) = "正常上机"mrcline.Fields(14) = Trim(Environ("computername"))mrcline.Update'模块七:更新OnLine_Info数据strsql = "select * from OnLine_Info"Set mrc = ExecuteSQL(strsql, "")mrc.AddNewmrc.Fields(0) = Trim(txtcardno.Text)mrc.Fields(1) = Trim(txttype.Text)mrc.Fields(2) = Trim(txtstudentNo.Text)mrc.Fields(3) = Trim(txtstudentName.Text)mrc.Fields(4) = Trim(txtdepartment.Text)mrc.Fields(5) = Trim(txtsex.Text)mrc.Fields(6) = Datemrc.Fields(7) = Timemrc.Fields(8) = Trim(Environ("computername"))mrc.UpdateIf mrc.EOF = True Then txtCurrentNumber.Text = 0ElsetxtCurrentNumber.Text = mrc.RecordCountEnd IfEnd SubPrivate Sub cmdMachineUp_Click() '下机Dim intLineTime As Integer '用于存储实际在线时间Dim intconsume As SingleDim curConsume As Single '用于存储真正花费钱的时间Dim curBalance As Single '用于存储用户的余额Dim fixedunit As Single '用于存储单位金额Dim temunit As Single '用于存储单位金额Dim a As IntegerDim remaincash As Single'模块一:判断卡号是否为空,判断卡号是否为数字If Trim(txtcardno.Text = "") ThenMsgBox "请输入卡号!", vbOKOnly + vbExclamation, "提示"txtcardno.SetFocusExit SubElse If Not IsNumeric(Trim(txtcardno.Text)) Then MsgBox "卡号必须输入数字!", vbOKOnly + vbExclamation, "提示" txtcardno.Text = "" txtcardno.SetFocus Exit Sub End IfEnd If'模块二:判断卡号是否注册,是否已经退卡。这里先查student_Info,mrc为以后方便用。strsql = "select * from student_Info where cardno= '" & Trim(txtcardno.Text) & "'"Set mrc = ExecuteSQL(strsql, "")If mrc.BOF And mrc.EOF ThenMsgBox "该卡号未注册,请先注册信息!", vbOKOnly + vbExclamation, "提示"txtcardno.Text = ""txtcardno.SetFocusExit SubElse If Trim(mrc.Fields(10)) = "不使用" Then MsgBox "该卡已经退卡", vbOKCancel + vbInformation, "提示" txtcardno.Text = "" txtcardno.SetFocus Exit Sub End IfEnd If'模块八:判断改卡号是否在上机,没有上机不能退卡strsql = "select * from OnLine_Info where cardno= '" & Trim(txtcardno.Text) & "'"Set mrc = ExecuteSQL(strsql, "")If mrc.EOF = True ThenMsgBox "该卡没有上机,不能进行下机处理", vbOKOnly + vbExclamation, "警告"txtcardno.Text = ""txtcardno.SetFocusEnd IfintLineTime = (Date - DateValue(mrc!onDate)) * 1440 + (Hour(Time) - Hour(TimeValue(mrc!OnTime))) * 60 + (Minute(Time) - Minute(TimeValue(mrc!OnTime))) '时间单位为分钟strsql = "select * from student_Info where cardno= '" & Trim(txtcardno.Text) & "'"Set mrc = ExecuteSQL(strsql, "")'模块九:获得基本表的数据strsql = "select * from BasicData_Info"Set mrcBasicData = ExecuteSQL(strsql, "")mrcBasicData.MoveLast'单位时间的费用 (把固定用户,临时用户单位时间的费用分别赋值给费用)fixedunit = Val(mrcBasicData.Fields(0)) '把固定用户的金额赋值给变量temunit = Val(mrcBasicData.Fields(1)) '把临时用户的金额赋值给变量'判断在线时间是否小于准备时间,若小于则 消费金额=0If intLineTime <= Val(Trim(mrcBasicData.Fields(4))) ThentxtConsumptionAmount.Text = "0"Else'判断在线时间是否小于最低消费时间,若小于则为0 If intLineTime < Val(Trim(mrcBasicData.Fields(3))) Then txtConsumptionAmount.Text = "0" End IfEnd If '在线时间大于单位时间,就按有几个单位时间算,分为固定用户和临时用户If intLineTime >= Val(Trim(mrcBasicData!leasttime)) And intLineTime And Trim(mrc.Fields(14)) = "固定用户" Thena = Int(intLineTime / Val(Trim(mrcBasicData!unittime))) If a = intLineTime / Trim(mrcBasicData!unittime) Then curConsume = a Else curConsume = a + 1 End IftxtConsumptionAmount.Text = Val(curConsume) * Val(fixedunit)Else If intLineTime >= Val(Trim(mrcBasicData!leasttime)) And intLineTime And Trim(mrc.Fields(14)) = "临时用户" Then a = Int(intLineTime / Val(Trim(mrcBasicData!unittime))) If a = intLineTime / Trim(mrcBasicData!unittime) Then curConsume = a Else curConsume = a + 1 End If txtConsumptionAmount.Text = Val(curConsume) * Val(temunit) End IfEnd If'模块十:更新学生表strsql = "select * from student_Info where cardno= '" & Trim(txtcardno.Text) & "'"Set mrc = ExecuteSQL(strsql, "")remaincash = mrc!cash - Val(txtConsumptionAmount.Text) mrc.Fields(7) = remaincash mrc.Update mrc.Close '模块十二:下机显示,删除在线表的信息strsql = "select * from OnLine_Info where cardno= '" & Trim(txtcardno.Text) & "'"Set mrc = ExecuteSQL(strsql, "")txtMachineUpDate.Text = DatetxtMachineUpTime.Text = Timetxttype = Trim(mrc.Fields(1))txtstudentNo = Trim(mrc.Fields(2))txtstudentName = Trim(mrc.Fields(3))txtdepartment = Trim(mrc.Fields(4))txtsex = Trim(mrc.Fields(5))txtMachineOnDate = Trim(mrc.Fields(6))txtMachineOnTime = Trim(mrc.Fields(7))txtDissipate.Text = intLineTimetxtcash.Text = remaincash'模块十一:更新上机记录表strsql = "select * from line_Info where cardno= '" & Trim(txtcardno.Text) & "'"Set mrcline = ExecuteSQL(strsql, "")mrcline.Fields(8) = Trim(txtMachineUpDate.Text)mrcline.Fields(9) = Trim(txtMachineUpTime.Text)mrcline.Fields(10) = Trim(txtDissipate.Text)mrcline.Fields(11) = Trim(txtConsumptionAmount.Text)mrcline.Fields(12) = Trim(txtcash.Text)mrcline.Fields(13) = Trim("正常下机")mrcline.UpdateMsgBox "下机成功,欢迎下次再来", vbOKOnly + vbExclamation, "警告"'删除在线表的信息mrc.Deletemrc.UpdatetxtCurrentNumber.Text = Str(Int(txtCurrentNumber.Text) - 1)End Sub</strong></span>
0 0
- 第一次机房收费系统——无尽
- 第一次机房收费系统——幽梦
- 第一次机房收费系统——饮血
- 第一次机房收费系统——结账
- 第一次机房收费系统——报表
- 第一次机房收费系统—宏观认识
- 第一次机房收费系统—上/下机
- 第一次机房收费系统—优化
- 第一次机房收费系统—登录窗体
- 第一次机房收费系统—组合查询
- 第一次机房收费系统—导出Excel
- 第一次机房收费系统——写给自己
- 第一次机房收费系统——电刀
- 第一次机房收费系统【总结】——概括
- 第一次机房收费系统【总结】——结账
- 第一次机房收费系统——轻语
- 第一次机房收费系统【一】——初步认识
- 【Computer】第一次机房收费系统——配置流程(一)
- 一头扎进设计模式-观察者模式
- iClient客户端之关联查询-LinkItem
- 第三周项目3-单链表的应用(2)
- 第3周【项目4-顺序表应用问题(1)】
- 第四周项目3--单链表的应用--单链表递增
- 第一次机房收费系统——无尽
- invalidate()和postInvalidate()的使用与区别
- 【第三周项目3-求集合并集】
- H264 RTP封包原理
- SQL Server 索引维护(1)——系统常见的索引问题
- 正则表达式匹配,替换,查找,切割的方法
- Ajax中文乱码解决总结
- 524.Left Pad-左填充(容易题)
- c3p0连接池参数解释