一、前言
完成了机房收费系统后,觉得之前的逻辑图只有大构架,一些细节还是不够清晰,于是回过头来,重新整理了一下上下机逻辑图,顺便晒下代码。
二、内容
1、上机逻辑图
2、上机代码
- Private Sub cmdUp_Click()
- txtDate.Text = ""
- txtTime.Text = ""
- txtDistime.Text = ""
- txtDiscash.Text = ""
- '是否为空
- If Not TxTe(txtCardNo.Text) Then
- MsgBox "请您输入上机卡号!",vbOKOnly + 48,"提示"
- txtCardNo.SetFocus
- txtCardNo.Text = ""
- Exit Sub
- End If
- '是否在线
- txtsql = "select*from online_info where cardno='" & txtCardNo.Text & "'"
- Set mrc = Executesql(txtsql,MsgText)
- If mrc.EOF = False Then
- MsgBox "该卡已经上机!","提示"
- txtCardNo.SetFocus
- txtCardNo.Text = ""
- Exit Sub
- mrc.Close
- End If
- '判断有无该卡号
- txtsql = "select*from student_info where cardno='" & txtCardNo.Text & "'"
- Set mrc = Executesql(txtsql,MsgText)
- If mrc.EOF Then
- MsgBox "无该卡号,请重新输入!","提示"
- txtCardNo.SetFocus
- txtCardNo.Text = ""
- Exit Sub
- End If
- '是否使用状态
- If mrc.Fields(8) = "未使用" Then
- If MsgBox("该卡未激活!是否修改学生信息?",vbOKCancel,"提示") = vbOK Then
- frmInformation.Show,Me
- End If
- Exit Sub
- End If
- '是否有余额
- If mrc.Fields(1) <= 0 Then
- If MsgBox("该卡号余额不足,是否前往充值?","提示") = vbOK Then
- frmRecharge.Show,Me
- End If
- Exit Sub
- End If
- mrc.Close
- '是否设定基础数据
- txtsql = "select*from basicdata_info"
- Set mrc = Executesql(txtsql,MsgText)
- If mrc.EOF Then
- If MsgBox("未设定基础数据,无法登陆,是否前往设定?","提示") = vbOK Then
- frmSetting.Show,Me
- End If
- Exit Sub
- End If
- mrc.Close
- '更新上机界面信息
- '提取学生表
- txtsql = "select*from student_info where cardno='" & txtCardNo.Text & "'"
- Set mrc = Executesql(txtsql,MsgText)
- txtStudentNo.Text = Trim(mrc.Fields(4))
- txtType.Text = Trim(mrc.Fields(9))
- txtCash.Text = Trim(mrc.Fields(1))
- txtStudentName.Text = Trim(mrc.Fields(2))
- txtDepartment.Text = Trim(mrc.Fields(5))
- txtSex.Text = Trim(mrc.Fields(3))
- txtOnDate.Text = Trim(Date)
- txtOnTime.Text = Trim(Time)
- '更新上机表信息
- Dim bas As ADODB.Recordset
- Dim bsql As String,bMsg As String
- '提取上机表和基础数据表
- txtsql = "select*from online_info"
- Set mrc = Executesql(txtsql,MsgText)
- bsql = "select*from basicdata_info"
- Set bas = Executesql(bsql,bMsg)
- mrc.AddNew
- mrc.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(txtSex.Text)
- mrc.Fields(5) = Trim(txtDepartment.Text)
- mrc.Fields(6) = Trim(txtOnDate.Text)
- mrc.Fields(7) = Trim(txtOnTime.Text)
- mrc.Fields(8) = Trim(PCName)
- mrc.Fields(9) = Now
- mrc.Fields(10) = Trim(txtCash.Text)
- mrc.Fields(11) = 1
- '用户消费方式
- If txtType.Text = "固定会员" Then
- mrc.Fields(12) = Val(Trim(bas.Fields(0)))
- Else
- If txtType.Text = "临时用户" Then
- mrc.Fields(12) = Val(Trim(bas.Fields(1)))
- Else
- MsgBox "该卡号未设定用户类型,登陆失败!",vbOKOnly,"提示"
- Exit Sub
- End If
- End If
- mrc.Update
- txtCardNo.SetFocus
- txtCardNo.Text = ""
- '更新上机人数
- txtsql = "select*from online_info"
- Set mrc = Executesql(txtsql,MsgText)
- LoginNumber.Caption = "当前上机人数为:" & mrc.RecordCount
- mrc.Close
- End Sub
3、扣费
有关扣费请观阅:
机房收费系统之上机扣费
4、下机逻辑图
5、下机代码
- Private Sub cmdDown_Click()
- '是否为空
- If Not TxTe(txtCardNo.Text) Then
- MsgBox "请您输入下机卡号!",MsgText)
- If mrc.EOF Then
- MsgBox "用户未上机。","提示"
- txtCardNo.SetFocus
- txtCardNo.Text = ""
- Exit Sub
- End If
- '更新界面信息
- txtStudentNo.Text = Trim(mrc.Fields(2))
- txtType.Text = Trim(mrc.Fields(1))
- txtStudentName.Text = Trim(mrc.Fields(3))
- txtDepartment.Text = Trim(mrc.Fields(5))
- txtSex.Text = Trim(mrc.Fields(4))
- txtOnDate.Text = Trim(mrc.Fields(6))
- txtOnTime.Text = Trim(mrc.Fields(7))
- txtcash.Text = Trim(mrc.Fields(10))
- txtDistime.Text = Trim(mrc.Fields(11))
- txtDate.Text = Date
- txtTime.Text = Time
- '更新Online表数据
- mrc.Delete
- mrc.Close
- '计算消费金额
- txtsql = "select*from student_info where cardno='" & txtCardNo.Text & "'"
- Set mrc = Executesql(txtsql,MsgText)
- txtDiscash.Text = Val(Trim(mrc.Fields(1))) - Val(Trim(txtcash.Text))
- mrc.Close
- '更新下机信息
- Dim STD As ADODB.Recordset
- Dim tsql As String,mText As String
- '提取学生表和下线表
- tsql = "select*from student_info where cardno='" & txtCardNo.Text & "'"
- Set STD = Executesql(tsql,mText)
- txtsql = "select*from line_info order by serial desc"
- Set mrc = Executesql(txtsql,MsgText)
- '写入数据
- mrc.AddNew
- mrc.Fields(1) = Trim(txtCardNo.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) = Trim(txtOnDate.Text)
- mrc.Fields(7) = Trim(txtOnTime.Text)
- mrc.Fields(8) = Trim(txtDate.Text)
- mrc.Fields(9) = Trim(txtTime.Text)
- mrc.Fields(10) = Trim(txtDistime.Text)
- mrc.Fields(11) = Trim(txtDiscash.Text)
- mrc.Fields(12) = Trim(txtcash.Text)
- mrc.Fields(14) = Trim(PCName)
- STD.Fields(1) = Trim(txtcash.Text)
- '学生卡状态
- If Trim(STD.Fields(8)) = "使用" Then
- mrc.Fields(13) = Trim("使用")
- Else
- mrc.Fields(13) = Trim("未使用")
- End If
- mrc.Update
- STD.Update
- STD.Close
- mrc.Close
- '更新上机人数
- txtsql = "select*from online_info"
- Set mrc = Executesql(txtsql,MsgText)
- LoginNumber.Caption = "当前上机人数为:" & mrc.RecordCount
- mrc.Close
- End Sub
三、总结
做项目前,做好产品逻辑构造,可以起到事半功倍的作用,大构架掌控的是方向,而模块逻辑把控的是产品质量,每一次锻炼,都让我在待人待物上得到很大的提升。