机房收费系统---下机

下机功能是整个机房收费系统中非常重要的一个环节,这个环节关乎到使用我们软件的商家会不会赔钱,所以,我们在做这个窗体的时候一定要把各个细节的问题都要考虑到。

 

首先“下机”的主要功能是:

1:使正在上机的用户停止上机

2:计算用户上机所花费的时间和金额

3:然后将卡中的余额减去花费的金钱是当前用户所剩余的钱数

4:将这个信息全部链接到数据库的表中,有的需要添加,有的需要更新,有的需要删除。

我在这个窗体中一共用到了5个数据库表,他们的名字和功能如下

(可能有些疏忽的地方多多指点):

数据库表

实现的功能

1: student_info

----用来判断输入的用户是否正确,判断用户是固定用户还是临时用户

 ---更新用户剩余的金额

 

2:onLine_info

 

---首先需要判断用户是否处于上机

---下机的时候需要将该用户用该表中删除

3:  basicdata_info

 

---根据该表中的数据进行结算金额

4: Line_info

 

---记录用户上机记录

5: checkday_info

 

 

---根据用户花费的金额,在日账单中显示出来

 

下面是我的流程图:

 

Private Sub downComputer_Click()
      Dim mrc As ADODB.Recordset '用来存放online表中的数据
      
      Dim mrc1 As ADODB.Recordset '用来存放basicdata 表中的数据
      Dim mrc2 As ADODB.Recordset ' 用来存放 student 表中的数据
    
      Dim mrb As ADODB.Recordset '用来存放line表中的数据
      Dim mrcc As ADODB.Recordset '用来连接日账单
      Dim txtsqlc As String
      Dim msgtextc As String
      
      Dim cc As Integer
      '定义一个时间变量
      Dim nowtti
      nowtti = Date
      Dim txtsqb As String
      Dim msgtxb As String
      
      Dim msgtxt As String
      Dim txtsql As String
      Dim txtsqla As String
      
       Dim costday As String
       
       Dim costtime As String
       Dim alltime As Integer
       Dim cashmoney As Integer
       Dim rate As String
       Dim tmprate As String
       
       Dim unittime As String
       
       Dim preparetime As String
       Dim useMoney As Integer
       
      '判断输入输入卡号
      If Trim(cardNumber.Text = "") Then
            MsgBox "请输入卡号", vbOKOnly + vbExclamation, "警告"
      Else
      '判断输入的卡号是否在注册表中
            txtsql = "select * from student_info where cardno='" & cardNumber.Text & "'"
            Set mrc2 = ExecuteSQL(txtsql, msgtxt)
            
            If mrc2.EOF Then
                  MsgBox "您输入的卡号还未注册,请先注册! ", vbOKOnly + vbExclamation
                  cardNumber.SetFocus
            Else
                  '判断该用户是否正在上机,如果正处于上机状态,那么可以执行“下机操作”,否则不可以
                  txtsql = "select * from online_info where cardno='" & cardNumber & "'"
                  Set mrc = ExecuteSQL(txtsql, msgtxt)
                  If mrc.EOF Then
                        MsgBox "该用户没有上机,请重新选择", vbOKOnly + vbExclamation
                  Else
                              
                              MsgBox cashmoney
                              downTi(6).Caption = Time
                              downDay(5).Caption = Date
                              costday = DateDiff("n", mrc.Fields(6), Date) '花费的时间
                              costtime = DateDiff("n", mrc.Fields(7), Time) '花费的时间
                              alltime = Val(costday) + Val(costtime)
                              useTime(7).Caption = Str(alltime)
                              
                              cashmoney = mrc2.Fields(7) '从student表中调用它剩余的金额
                              MsgBox cashmoney '提示框弹出卡中剩余的金额
                              mrc.Delete
                               '判断花费的金钱,这个时候需要调用basicdatab表中的信息
                              txtsql = "select * from basicdata_info"
                              Set mrc1 = ExecuteSQL(txtsql, msgtxt)
                              rate = mrc1.Fields(0) '普通用户的收费标准
                              tmprate = mrc1.Fields(1) '会员的收费标准
                              unittime = mrc1.Fields(2) '每60分钟收费一次
                              preparetime = mrc1.Fields(4) '上机准备时间
                              
                              txtsqb = "select * from line_info where cardno='" & Trim(cardNumber.Text) & "'"
                              Set mrb = ExecuteSQL(txtsqb, msgtxb)
                              If mrb.EOF Then
                                          MsgBox "该用户还没有上机"
                              Else
                                          '下机日期
                                         
                                          mrb.Fields(8) = downDay(5).Caption
                                          mrb.Fields(9) = downTi(6).Caption
                                          mrb.Fields(10) = Str(alltime)
                                          
                                          
                                          
                                          mrb.Fields(13) = "正常下机"
                                          mrb.Update
                              End If
                              '判断时间是否多余准备上机时间,如果低于准备时间,具体看情况
                              '收费,低于准备时间 固定用户半价收费,临时用户全额收费
                              If alltime < preparetime Then
                                    useMoney = 0
                                    useM(8).Caption = Str(useMoney)
                                    
                              
                                    
                              
                              
                              Else
                                     If mrc2.Fields(14) = "固定用户" Then
                                          ' 如果用户上机时间小于标准时间60分钟
                                          If alltime < unittime Then
                                                useMoney = Val(tmprate / 2)
                                                useM(8).Caption = Str(useMoney)
                                                mrb.Fields(11) = useM(8).Caption
                                                mrb.Fields(10) = Trim(alltime)
                                                lastMoney(9).Caption = Trim(cashmoney - useMoney)
                                                mrb.Fields(12) = lastMoney(9).Caption
                                                mrb.Update
                                          Else
                                                useMoney = (alltime Mod Val(unittime)) * Val(tmprate)
                                                
                                                useM(8).Caption = Str(useMoney)
                                                mrb.Fields(11) = useM(8).Caption
                                                mrb.Fields(10) = Trim(alltime)
                                                
                                                lastMoney(9).Caption = Trim(Val(cashmoney) - Val(useMoney))
                                                mrb.Fields(12) = lastMoney(9).Caption
                                                mrb.Update
                                          End If
                                          
                                          
                                        
                                          
                              
                                    Else
                                          '如果零时用户小于标准时间60分钟
                                          If alltime < unittime Then
                                                useMoney = Val(rate)
                                                useM(8).Caption = Str(useMoney)
                                                mrb.Fields(11) = useM(8).Caption
                                                mrb.Fields(10) = Trim(alltime)
                                                lastMoney(9).Caption = Str(cashmoney - useMoney)
                                                mrb.Fields(12) = Trim(lastMoney(9).Caption)
                                                mrb.Update
                                          Else
                                                useMoney = (alltime Mod Val(unittime)) * Val(rate)
                                                useM(8).Caption = Str(useMoney)
                                                mrb.Fields(11) = useM(8).Caption
                                                lastMoney(9).Caption = Str(cashmoney - useMoney)
                                                mrb.Fields(12) = Trim(lastMoney(9).Caption)
                                                mrb.Update
                                          End If
                                          
                              
                                    End If
                  '用来更新student 表中学生的余额。
                  mrc2.Fields(7) = Trim(lastMoney(9).Caption)
                  mrc2.Update
                  
                  
                 txtsqlc = "select * from checkday_info where date='" & Trim(nowtti) & "'"
                 
                Set mrcc = ExecuteSQL(txtsqlc, msgtextc)
                If mrcc.EOF Then
                  mrcc.AddNew
                  mrcc.Fields(2) = Trim(useMoney)
                  mrcc.Update
                  Else
                  cc = mrcc.Fields(2)
                  mrcc.Fields(2) = Str(cc + useMoney)
                  mrcc.Update
                     End If
                End If
            End If
      End If
End If
      
End Sub

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
机房收费管理系统 问题描述 结合我校计算机机房的运作模式,设计一种适合的收费管理系统,能够实现相关的人员检索,计时收费,管理汇总等功能模块。 开发环境 采用C或C++实现,VC++6.0 基本要求 主要功能模块: (1) 登录模块 (2) 上机管理模块 说明:上机登记时,余额不足3元或卡处于挂失状态,则拒绝登记。 每位同学的一次上机形成一条记录,每30秒遍历一次上机记录表,对表中所有正上机字段为TRUE的记录的上机用时增加30秒,同时减少上机卡表中的余额。 (3) 上机卡管理模块 (4) 充值挂失模块 (5) 查找统计模块:统计某天上机的总时数、每次上机的平均时数和机房的收入;某学生上机的次数、上机总时数、每次上机平均时间;挂失和查询余额。 参考的数据结构: 上机卡(卡号,姓名,专业班级,余额,状态),状态有:正常和挂失。 上机记录(卡号,上机日期,开始时间,上机用时,正上机,管理号代码) 上机记录表永久保存,用于事后查询和统计。 设计要求 1) 界面友好,输入信息符合逻辑:如上机时间设定在合理的时间范围。 2) 能从实践生活出发,设计合理的功能模块 3) 各类信息的数据结构明晰 4) 可根据自身生活体验添加相关功能模块。 拓展功能要求 鼓励采用Turbo C/C++、MFC等开发工具,实现彩色或图形操作界面。鼓励引入小型数据作为处理数据的来源,拓展知识面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值