【第一次机房收费系统】上下机

前言

作为机房收费系统的核心,上下机的总结是必不可少的。不管我们做什么事情都要有全局意识,上下机也是这样,只有把上下机的整体逻辑思路搞清楚了,我们才能准确的把功能实现。

正文

首先,先把流程图画出来。
上下机之上机
上下机之下机
上机部分代码:

'是否输入卡号'
    If Trim(txtCardNo(0).Text = "") Then  '判断用户名是否为空'
        MsgBox "请输入卡号!", vbOKOnly + vbExclamation, "苏轼提醒您"
        txtCardNo(0).SetFocus
        Exit Sub
    Else
    '是否上机'
    onlinesql = "select*from online_info where cardno='" & txtCardNo(0).Text & "'"
    Set mrcOnline = ExecuteSQL(onlinesql, OnlineMsgtext)
    If mrcOnline.EOF = False Then                                                '判断此卡号是否在上机'
        MsgBox "此卡正在上机!", vbOKOnly + vbExclamation, "苏轼提醒您"
        txtCardNo(0).SetFocus
        txtCardNo(0).Text = ""
        Exit Sub
    Else
        '是否注册'
        studentSQL = "select*from student_Info where cardno= '" & txtCardNo(0).Text & "'and status='" & "使用" & "'"
        Set mrcStudent = ExecuteSQL(studentSQL, Studentmsgtext)
        If mrcStudent.EOF Then
            MsgBox "卡号不存在,请重新输入!", vbOKOnly + vbExclamation, "苏轼提醒您"
            txtCardNo(0).SetFocus
            txtCardNo(0).Text = ""  '使卡号为空'
            '清除text文本'
            For Each ctl In Controls
                If TypeOf ctl Is TextBox Then
                ctl.Text = ""
                End If
            Next ctl
            '清除combobox文本'
            For Each ctl1 In Controls
                If TypeOf ctl1 Is ComboBox Then
                ctl1.Text = ""
                End If
            Next ctl1      
        Else
        '余额是否充足'
        studentSQL = "select*from student_Info where cardno= '" & txtCardNo(0).Text & "' and status='" & "使用" & "'"
        Set mrcStudent = ExecuteSQL(studentSQL, Studentmsgtext)
            If Val(mrcStudent.Fields(7)) < 1 Then
                MsgBox "余额不足,请先充值!", vbOKOnly + vbExclamation, "警告"
                txtCardNo(0).SetFocus
                txtCardNo(0).Text = ""
                Exit Sub
            Else
                '更新上下机界面'
                txtSID(12).Text = mrcStudent.Fields(1)                       '更新上下机界面'
                ……
                txtBaLance(9).Text = Val(mrcStudent.Fields(7))

                '更新online表'
                onlinesql = "select*from online_info"
                Set mrcOnline = ExecuteSQL(onlinesql, OnlineMsgtext)
                mrcOnline.AddNew
                mrcOnline.Fields(0) = Trim(txtCardNo(0).Text)
                ……
                mrcOnline.Fields(8) = Trim("MARK")
                mrcOnline.Fields(9) = Date
                mrcOnline.Update
                lblOnlineNumber.Caption = mrcOnline.RecordCount                 '在界面上显示正在上机的人数
                mrcOnline.Close

                '增加上机记录'
                LineSQL = "select * from Line_Info"                     '
                Set mrcLine = ExecuteSQL(LineSQL, LineMsgtext)
                mrcLine.AddNew
                mrcLine.Fields(1) = Trim(txtCardNo(0).Text)
                ……
                mrcLine.Fields(13) = "正常上机"
                mrcLine.Fields(14) = "MARK"
                mrcLine.Update
                mrcLine.Close
                End If
            End If
        End If
    End If

下机部分代码:

'是否输入卡号'
    If Trim(txtCardNo(0).Text = "") Then  '判断用户名是否为空'
        MsgBox "请输入卡号!", vbOKOnly + vbExclamation, "苏轼提醒您"
        txtCardNo(0).SetFocus
        Exit Sub
    Else
    '是否上机'
    onlinesql = "select*from online_info where cardno='" & txtCardNo(0).Text & "'"
    Set mrcOnline = ExecuteSQL(onlinesql, OnlineMsgtext)
    If mrcOnline.EOF = True Then                                                '判断此卡号是否在上机'
        MsgBox "此卡未上机!", vbOKOnly + vbExclamation, "苏轼提醒您"
        txtCardNo(0).SetFocus
        txtCardNo(0).Text = ""
        Exit Sub
    Else
        '是否注册'
        studentSQL = "select * from student_Info where cardno= '" & txtCardNo(0).Text & "'and status='" & "使用" & "'"
        Set mrcStudent = ExecuteSQL(studentSQL, Studentmsgtext)
        If mrcStudent.EOF Then
            MsgBox "卡号不存在,请重新输入!", vbOKOnly + vbExclamation, "苏轼提醒您"
            txtCardNo(0).SetFocus
            txtCardNo(0).Text = ""  '使卡号为空'
        Else

        '从basicdata表中读取数据'
        BasicDataSQL = "select * from basicdata_Info"
        Set mrcBasicData = ExecuteSQL(BasicDataSQL, BasicdataMsgtext)

        '从student表中读取数据'
        studentSQL = "select * from student_Info"
        Set mrcStudent = ExecuteSQL(studentSQL, Studentmsgtext)

        '从line表中读取数据'
        LineSQL = "select * from line_Info"
        Set mrcLine = ExecuteSQL(LineSQL, LineMsgtext)

        '从online表中读取数据'
        onlinesql = "select * from online_Info"
        Set mrcOnline = ExecuteSQL(onlinesql, OnlineMsgtext)

        'CostTime = DateDiff("n", Trim(mrcOnline!ontime), Trim(Hour(Time)))
        CostTime = DateDiff("n", CDate(mrcOnline!ondate), CDate(Date)) + DateDiff("n", CDate(mrcOnline!ontime), CDate(Time))
        CostDate = DateDiff("n", Trim(mrcOnline!ondate), Trim(Date))
        intLineTime = Val(Format(Str(Val(CostTime) + Val(CostDate))))

        '判断实际在线时间是否小于准备时间,若小于则消费时间为0'
        If intLineTime < mrcBasicData!prepareTime Then
            intConsumeTime = 0
         '判断实际在线时间是否小于最低消费时间,若小于,则消费时间为最低消费时间'
         ElseIf intLineTime < mrcBasicData!leastTime Then
            intConsumeTime = mrcBasicData!leastTime
         Else
            intConsumeTime = intLineTime
         End If


         '计算消费金额(消费金额=消费时间/30*用户类型的半小时费用)'
         '固定用户(为什么要除以30) 最小计费单位'
         If Trim(mrcStudent.Fields(14)) = "固定用户" Then
            curConsume = Int(intConsumeTime / 30 * mrcBasicData!Rate) + 1
        Else
            curConsume = Int(intConsumeTime / 30 * mrcBasicData!tmpRate) + 1
         End If

        '计算余额(账户余额=原账户余额-消费金额)'
        curBalance = Int(mrcStudent!cash - curConsume)

         '更新学生信息表的余额'
         studentSQL = "select * from student_Info where cardno= '" & txtCardNo(0).Text & "'"
         Set mrcStudent = ExecuteSQL(studentSQL, Studentmsgtext)
         mrcStudent.Fields(7) = curBalance
         mrcStudent.Update
         mrcStudent.Close

         '更新上机记录表(line表)'
         LineSQL = "select * from line_Info"
         Set mrcLine = ExecuteSQL(LineSQL, LineMsgtext)
         mrcLine.AddNew
          '更新上机记录表(line表)'
         LineSQL = "select * from line_Info"
         Set mrcLine = ExecuteSQL(LineSQL, LineMsgtext)
         mrcLine.Fields(8) = Date
         ……
         mrcLine.Fields(14) = Trim(Environ("computername"))
         mrcLine.Update
         mrcLine.Close

         '删除在线表中的信息'
         onlinesql = "select * from online_Info"
         Set mrcOnline = ExecuteSQL(onlinesql, OnlineMsgtext)
         mrcOnline.Delete
         mrcOnline.Update

         '更新上下机界面
         txtOffDate(6).Text = Date
          ……
         lblOnlineNumber.Caption = mrcOnline.RecordCount                 '在界面上显示正在上机的人数
         mrcOnline.Close
         End If
        End If
    End If

后记

其实现在看来上下机也不是很难,只要你去做了,就会完成。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值