【机房收费系统】问题集锦
来源:互联网 发布:造梦西游1装备数据大全 编辑:程序博客网 时间:2024/06/05 01:01
敲机房的时候感觉有一些的问题需要改进所以就相应的做了一些的更改
1、当卡号中余额为0的时候自动下机
Dim mrc As ADODB.Recordset '选择在线online表 Dim txtSQl, MsgText As String Dim mr As ADODB.Recordset '选择学生表提取金额 Dim m As ADODB.Recordset '选择基本数据表用于固定用户和临时用户开销 Dim mrr As ADODB.Recordset txtSQl = "select * from online_info" Set mrc = ExecuteSQL(txtSQl, MsgText) txtSQl = "select * from BasicData_Info" Set m = ExecuteSQL(txtSQl, MsgText) Do While Not mrc.EOF txtSQl = "select * from student_Info where cardno='" & Trim(mrc.Fields(0)) & "'" Set mr = ExecuteSQL(txtSQl, MsgText) mrc.Fields(10) = Trim(mrc.Fields(10)) + 1 mrc.Update If Trim(mr.Fields(14)) = "固定用户" Then txtTime.Text = mr.Fields(7) / m.Fields(1) * 60 - mrc.Fields(10) alltime.Text = mr.Fields(7) / m.Fields(1) * 60 Else txtTime.Text = mr.Fields(7) / m.Fields(0) * 60 - mrc.Fields(10) alltime.Text = mr.Fields(7) / m.Fields(0) * 60 End If txtadd.Text = DateDiff("n", mrc.Fields(6), Format(Now, "yyyy-mm-dd")) '计算相差分钟数 txtadd.Text = txtadd.Text + DateDiff("n", Trim(mrc.Fields(7)), Format(Now, "hh:mm:ss")) If Int(txtadd.Text) > Int(alltime) Then MsgBox ("卡号" & mrc.Fields(0) & "已经没有费了"), vbOKOnly + vbExclamation, "提示" mr.Fields(7) = 0 mr.Fields(6) = "不使用" mr.Update End If If txtTime.Text < 10 And txtTime.Text > 8 Then MsgBox ("卡号" & Trim(mrc.Fields(0)) & "余额不足,十分钟后将自动下机,请尽快提示充值") End If If txtTime.Text = 1 Then MsgBox ("卡号" & Trim(mrc.Fields(0)) & "即将在1分钟后自动下机") End If If txtTime.Text = 0 Then MsgBox ("卡号" & Trim(mrc.Fields(0)) & "余额为0,欢迎下次再来") mr.Fields(10) = "不使用" mr.Update End If If Trim(mr.Fields(6)) = "不使用" Then txtSQl = "delete from online_info where cardno='" & mr.Fields(10) & "'" Set mrr = ExecuteSQL(txtSQl, MsgText) End If mrc.MoveNext Loop2、对于上机来说是比较容易的但是下机是最难搞定的 (需要想很多的东西)
首先就是卡号是否为空、卡号要是数字、卡号是否还在使用、此卡是否正在上机
再次计时计算时间,根据消费的时间算出相应的花销
最后就是更新Line_info 中的数据库 删除Online_info中下机的卡号的信息
<span style="font-size:18px;">Dim mrc As ADODB.RecordsetDim mrcc As ADODB.RecordsetDim mrcd As ADODB.RecordsetDim mrce As ADODB.RecordsetDim txtSQl As StringDim MsgText As StringDim Usetime, UnitNumber, a, b, c As String '判断下机卡号是否为空 If txtCardID.Text = "" Then '判断卡号是否为空 MsgBox "请输入卡号!", 0 + 48, "提示" Exit Sub txtCardID.SetFocus txtCardID.Text = "" End If '判断下机卡号是否是数字 If Not IsNumeric(txtCardID.Text) Then '判断卡号是否为数字 MsgBox "卡号请输入数字!", 0 + 48, "提示" txtCardID.SetFocus txtCardID.Text = "" Exit Sub End If '判断卡号是否还在使用 txtSQl = "select * from student_Info where cardno ='" & Trim(txtCardID.Text) & "'" Set mrcd = ExecuteSQL(txtSQl, MsgText) If mrcd.EOF Then MsgBox "卡号不存在或者已经不用了", 0 + 48, "提示" '判断卡号是否被使用 Exit Sub End If '判断输入的卡号是否在上机 txtSQl = "select * from OnLine_Info where cardno = '" & Trim(txtCardID.Text) & "'" Set mrce = ExecuteSQL(txtSQl, MsgText) If mrce.EOF Then MsgBox "此卡号没有上机,请重新选择!", vbOKOnly + vbExclamation, "警告" txtID.Text = "" txtDepartment.Text = "" txtType.Text = "" txtName.Text = "" txtSex.Text = "" txtOndate.Text = "" txtOntime.Text = "" txtCash.Text = "" txtOffdate.Text = "" txtOfftime.Text = "" txtCosttime.Text = "" txtCost.Text = "" txtCardID.Text = "" Exit Sub Else '此卡正在上机 txtID.Text = mrcd.Fields(1) txtDepartment.Text = mrcd.Fields(4) txtType.Text = mrcd.Fields(14) txtName.Text = mrcd.Fields(2) txtSex.Text = mrcd.Fields(3) txtOndate.Text = mrce.Fields(6) txtOntime.Text = mrce.Fields(7) c = mrce.Fields(7) txtOntime.Text = c mrce.Delete Label4.Caption = mrce.RecordCount End If txtOffdate.Text = Format(Date, "yyyy-mm-dd") txtOfftime.Text = Format(time, "hh:mm") b = Abs(DateDiff("n", txtOfftime, c)) '计算上机时间 txtCosttime.Text = b '计算上机时间 txtSQl = "select * from BasicData_Info" Set mrc = ExecuteSQL(txtSQl, MsgText) '第一种情况:上机时间<准备时间 If Val(txtCosttime.Text) < Val(mrc.Fields(4)) Then '上机时间小于准备时间 txtCost.Text = 0 txtCosttime.Text = 0 '第二种情况:准备时间<上机时间<最下上机时间 ElseIf Val(mrc.Fields(4)) <= Val(txtCosttime.Text) And Val(txtCosttime.Text) <= Val(mrc.Fields(3)) Then '准备时间<上机时间<最少上机时间 txtCost.Text = 1 txtCash.Text = Val(mrcd.Fields(7)) - 1 mrcd.Fields(7) = Trim(txtCash.Text) mrcd.Update '第二种情况:上机时间>最小上机时间 ElseIf Val(txtCosttime.Text) > Val(mrc.Fields(3)) Then '上机时间>最小上机时间 Usetime = Val(txtCosttime.Text) - Val(mrc.Fields(4)) UnitNumber = Usetime Mod Val(mrc.Fields(2)) If UnitNumber = 0 Then '用时小于周期 UnitNumber = Int(Usetime / Val(mrc.Fields(2))) 'int是取整函数,取证原则是比括号中的数值小的最接近的整数,不进行四舍五入。 所以 比-2.9还小的整数是-3,同样分析知道,int(2.9)=2 Else '用时大于周期 如 90/60=1.5 int(1.5)=1 说以要+1 UnitNumber = Int(Usetime / Val(mrc.Fields(2))) + 1 End If End If '判断此时用户类别 If mrcd.Fields(14) = "固定用户" Then a = Val(mrc.Fields(0)) Else a = Val(mrc.Fields(1)) End If '计算最后的花销 txtCost.Text = Format(UnitNumber * a, "0.0") '计算最后的花费 txtCash.Text = Val(mrcd.Fields(7)) - Val(txtCost.Text) mrcd.Fields(7) = Trim(txtCash.Text) mrcd.Update txtSQl = "select * from Line_Info " '‘where '正常上机' and cardno ='" & Trim(txtCardID.Text) & "'" Set mrcc = ExecuteSQL(txtSQl, MsgText) mrcc.AddNew mrcc.Fields(1) = Trim(txtCardID.Text) mrcc.Fields(2) = Trim(txtID.Text) mrcc.Fields(3) = Trim(txtName.Text) mrcc.Fields(4) = Trim(txtDepartment.Text) mrcc.Fields(5) = Trim(txtSex.Text) mrcc.Fields(6) = txtOndate.Text mrcc.Fields(7) = txtOntime.Text mrcc.Fields(14) = Trim(VBA.Environ("computername")) '获取计算机名 mrcc.Fields(11) = Trim(txtCost.Text) mrcc.Fields(12) = Trim(txtCash.Text) mrcc.Fields(8) = Trim(txtOffdate.Text) mrcc.Fields(9) = Trim(txtOfftime.Text) mrcc.Fields(10) = Trim(txtCosttime.Text) mrcc.Fields(13) = Trim("正常下机") mrcc.Update</span>
3、关于报表
'日结账单刷新Dim txtSQl As String Dim mrc As ADODB.Recordset Dim MsgText As String GRDisplayViewer1.Stop txtSQl = "select * from CheckDay_info" '创建报表对象 Set Report = New grproLibCtl.GridppReport '载入报表模版文件 Report.LoadFromFile (App.Path & "\daycheck.grf") '设置数据连接串 Report.DetailGrid.Recordset.ConnectionString = ConnectString Report.DetailGrid.Recordset.QuerySQL = txtSQl '显示报表中的内容 ' GRDisplayViewer1.Refresh '刷新 GRDisplayViewer1.Report = Report GRDisplayViewer1.Start ' 给报表赋值 Report.ParameterByName("EndDate").Value = Format(Now, "yyyy-mm-dd") Report.ParameterByName("XX").Value = Trim(Username) Report.ParameterByName("OPT").Value = Trim(Username)
最后机房已经完成的差不多了,就更新到这里吧!机房给我的教训就是以后再做一个系统之前一定要先理清思路。
0 0
- 【机房收费系统】问题集锦
- 机房收费系统问题集锦(一)
- 机房收费系统问题集锦(五)
- 机房收费系统重构——问题集锦一
- 机房收费系统问题收录
- VB机房收费系统问题
- 机房收费系统问题记录
- 机房收费系统登陆问题
- 机房收费系统问题汇总
- 机房收费系统问题集锦(四)——报表问题
- 机房收费系统问题集锦(二)——组合查询
- 机房收费系统问题集锦(三)——导出为Excel
- 机房收费系统集锦(一)---打开重复窗体
- 机房收费系统集锦(二)--玩转DataGridView
- 机房收费系统完善问题汇总
- 机房收费系统---遇见的问题
- 机房收费系统之SQL注入问题
- 登录机房收费系统遇到的问题
- java实体类实现序列化的意义
- Alpha混合物体的深度排序[译]
- POJ 1321.棋盘问题
- 指针数组、数组指针、函数指针、指针函数
- 关于《3D管线导论》这本书
- 【机房收费系统】问题集锦
- 蘑菇街——内存泄露及测试
- 游戏中的对象资源信息管理
- 【c++版数据结构】之循环双链表的实现(带头结点以及尾节点)
- Note For Linux By Jes(5)-认识与学习 BASH
- CMarkup: fast simple C++ XML parser 学习笔记
- iOS学习笔记-错误-ARC forbids explicit message send of autorelease
- OGRE3D 渲染系统线程化
- CaptainGan------ 使用“递归方法”对整个目录进行删除操作