软件开发可分为计划阶段、需求分析阶段、设计阶段、编码阶段、测试阶段、运行维护阶段。在机房的学习中需求分析显得很突出,只要思路不顺,代码敲出来也实现不了自己的要求,所以一定要想清楚思路,然后再去做。我感觉自己的思路是对的,但是敲的时候还是在不断的完善,改进,最后便有了融会贯通的感觉,原来这么简单,下面就和大家一起学习一下吧。
上机:
上机时首先判断输入框,然后调用student_info表 判断账号是否存在,是否注册,是否退卡,余额是否充足。用oline_info表 判断账号是否正在使用。最后显示数据,将上机信息保存在online_info表中,统计表中总数,显示上机人数。
下机:
下机这里就比较复杂了。我作为一个慷慨又小气的老板设置的小于最小上机时间的时候是免费的,小于准备时间和最小上机时间之和也是免费的!但是,只要大于了就按递增时间来要钱,而且没有四舍五入,只有入,多一分钟也按一个递增时间单位要钱。计算时间这里有运算,所以这里需要将自己需要的变量定义好,然后直接调用比较方便,我开始的时候就是空想,然后就乱七八糟了,感觉什么都乱套了,但是用定义好的变量问题就简单了。
思路:判断是否可以使用,是否注册,是否正在上机。
判断消费时间是否大于准备时间
判断消费时间是否大于准备时间与最少上机时间之和(这一步可以更改最少上机时间然后改为收费)
判断用户类型— 固定或临时
收费——显示数据——更新余额(student_info)——更新line_info——删除online_info数据——更新在线人数
Private Sub CmdOffline_Click()
Dim mrc As ADODB.Recordset
Dim mrc1 As ADODB.Recordset
Dim mrc2 As ADODB.Recordset
Dim mrc3 As ADODB.Recordset
Dim txtsql As String, txtSQL1 As String, txtSQL2 As String, txtSQL3 As String
Dim msgtext As String, MsgText1 As String, MsgText2 As String, Msgtext3 As String
Dim intlineTime As Integer '用于存储实际在线时间
Dim FreeTime As Integer '用于存储不花钱的时间
Dim curConsume As Integer '用于存储真正花费钱的时间
Dim curBalance As Single '用于存储用户的余额
Dim fixedRate As Single '用于存储固定用户单价
Dim tempRate As Single '用户存储临时用户上机单价
Dim unitTime As Integer '用于存储递增单位时间
'判断条件
If txtcardno.Text = "" Then
MsgBox "请输入卡号!", vbOKOnly, "警告"
txtcardno.SetFocus
Exit Sub
End If
If Not IsNumeric(txtcardno.Text) Then
MsgBox "卡号请输入数字!", vbOKOnly, "警告"
txtcardno.Text = ""
txtcardno.SetFocus
Exit Sub
End If
txtsql = "select * from student_Info where cardno = '" & Trim(txtcardno.Text) & "'"
Set mrc = ExecuteSQL(txtsql, msgtext)
If mrc.EOF Then
MsgBox "该用户尚未注册!", vbOKOnly, "警告"
txtcardno.SetFocus
Exit Sub
Else
If Trim(mrc.Fields(10)) = "不使用" Then
MsgBox "该卡号已经退卡,不能使用!", vbOKCancel + vbExclamation, "提示"
txtcardno.SetFocus
Exit Sub
Else
txtSQL1 = "select * from online_info where cardno = '" & Trim(txtcardno.Text) & "'"
Set mrc1 = ExecuteSQL(txtSQL1, MsgText1)
If mrc1.EOF Then
MsgBox "该卡没有上机!", vbOKCancel + vbExclamation, "提示"
txtcardno.SetFocus
Exit Sub
End If
End If
End If
txtSQL2 = "select * from basicdata_info"
Set mrc2 = ExecuteSQL(txtSQL2, MsgText2)
FreeTime = Val(Trim(mrc.Fields(3)) + Trim(mrc2.Fields(4))) '不需要花钱的时间
'计算消费时间
intlineTime = (Date - DateValue(mrc1!ondate)) * 1440 + (Hour(Time) - Hour(TimeValue(mrc1!OnTime))) * 60 + (Minute(Time) - Minute(TimeValue(mrc1!OnTime)))
curConsume = intlineTime - FreeTime '真正花钱的时间
fixedRate = Trim(mrc2!Rate) '固定用户单价
tempRate = Trim(mrc2!tmprate) '临时用户单价
unitTime = Trim(mrc2!unitTime)
If intlineTime <= Val(Trim(mrc2.Fields(4))) Then '是否小于准备时间
txtconsume.Text = 0
Else
If intlineTime <= FreeTime Then '是否小于免费时间
txtconsume.Text = 0
Else
If intlineTime > FreeTime And Trim(mrc.Fields(14)) = "固定用户" Then ' 固定用户消费
txtconsume.Text = fixedRate * Int(((curConsume / unitTime) + 1))
Else
If intlineTime > FreeTime And Trim(mrc.Fields(14)) = "临时定用户" Then ' 临时用户消费
txtconsume.Text = tempRate * Int(((curConsume / unitTime) + 1))
End If
End If
End If
End If
curBalance = Trim(mrc!cash) - txtconsume.Text '余额
'显示数据
txtcardno.Text = Trim(mrc.Fields(0))
txttype.Text = Trim(mrc.Fields(14))
txtstudentno.Text = Trim(mrc.Fields(1))
txtstudentname.Text = Trim(mrc.Fields(2))
txtdepartment.Text = Trim(mrc.Fields(4))
txtsex.Text = Trim(mrc.Fields(3))
txtondate.Text = Trim(mrc1.Fields(6))
txtontime.Text = Trim(mrc1.Fields(7))
txtofftime.Text = Time
txtoffdate.Text = Date
txtconsumetime.Text = intlineTime
txtcash.Text = curBalance
MsgBox "下机成功,欢迎下次再来!", vbOKCancel + vbExclamation, "提示"
'更新student_info
mrc.Fields(7) = curBalance
mrc.Update
mrc.Close
txtSQL3 = "select * from line_info"
Set mrc3 = ExecuteSQL(txtSQL3, Msgtext3)
'更新line_info
mrc3.AddNew
mrc3.Fields(1) = Trim(txtcardno.Text)
mrc3.Fields(2) = Trim(txtstudentno.Text)
mrc3.Fields(3) = Trim(txtstudentname.Text)
mrc3.Fields(4) = Trim(txtdepartment.Text)
mrc3.Fields(5) = Trim(txtsex.Text)
mrc3.Fields(6) = Trim(txtondate.Text)
mrc3.Fields(7) = Trim(txtontime.Text)
mrc3.Fields(8) = Trim(txtoffdate.Text)
mrc3.Fields(9) = Trim(txtofftime.Text)
mrc3.Fields(10) = Trim(Val(txtconsumetime.Text))
mrc3.Fields(11) = Trim(Val(txtconsume.Text))
mrc3.Fields(12) = Trim(Val(txtcash.Text))
mrc3.Fields(13) = "正常下机"
mrc3.Fields(14) = Environ("computername")
mrc3.Update
'更新online_info
mrc1.Delete
mrc1.Update
mrc1.Close
txtonflag.Caption = Str(txtonflag.Caption - 1) '更新在线人数
End Sub
每一个难点的学习都是经过了很煎熬的过程,感觉身体被掏空,但是做过之后就感觉其实并没有那么难,但是只是有些地方被卡住了,经过看好多次的博客,一点点往前走就成功了。最后最重要的一点就是要好好总结出来,不然用过的东西会很快忘掉。