机房收费系统之六(上下机窗体)
2017-06-10 17:39
393 查看
上机
1.刚开始进行上下机窗体的时候,想的比较简单,以至于后来遗漏很多问题。所以流程图改了好几遍才算比较完善。
上机模块主要功能就是输入卡号开始计时消费,类似于登陆窗体模块。需要注意的有两点:一是要考虑输入的卡号是否正在上机(卡号不能重复上机),二是考虑余额是否充足(不充足提醒充值)。
2.流程图:
通过多次改进流程图,基本上可以全面了解了上机模块的整个流程。然后再写代码就很顺畅了。
下机
1.下机模块和上机差不多。我觉得最复杂的地方就是计算消费。需要计算消费时间,通过消费时间计算出消费金额。这里需要通过结合基本数据表来判断和计算。我在这里思考了好久。
2.流程图:
3.重要的代码学习:
下机模块代码:
总结:遇到问题,多思考,多请教“巨人”。感谢您的阅读!
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
总结:遇到问题,多思考,多请教“巨人”。感谢您的阅读!
相关文章推荐
- 机房收费系统之条件查询窗体
- 机房收费系统--系统用户管理模块和主窗体的建立(二)
- 机房收费系统-- MDI子窗体显示技巧(续vb.net版)
- 机房收费系统初体验——"歪打"无按钮标题栏,"正着"父窗体加载picturebox无遮挡显示子窗体
- 机房收费系统之主窗体
- 机房收费系统--系统用户管理模块和主窗体的创建(一)
- 机房收费系统-- 跨越窗体从数据库里取数据
- 机房收费系统(三)选中学生强制下机
- 机房收费系统--下机消费金额计算问题
- 机房收费系统——上机和下机
- 机房收费系统--系统用户管理模块和主窗体建立(三)
- 机房收费系统-- MDI子窗体显示技巧
- 机房收费系统小叙——窗体和数据库的关系
- 机房收费系统——窗体与数据库表关系
- 机房收费系统之充值窗体
- 机房收费系统--系统用户管理模块和主窗体的建立(四)
- 机房收费系统-----如何解决子窗体被picturebox挡住的办法
- 机房收费系统--各个窗体功能实现的基本要点
- 机房收费系统之主窗体
- 机房收费系统(五)有关子窗体的最小化功能