【机房收费系统】——问题总结(二)

来源:互联网 发布:cef c js 编辑:程序博客网 时间:2024/05/23 22:25

接着上次的总结,我们继续哈!

问题五:报表

由于我的进度较慢,所以我做到这块的时候已经看到很多人的技术文章了,其中我觉得昌哥的博文最是清楚了。关于报表,我的印象最深刻的是动态数据这块。周报表中有时间段选择,具体体现在代码里就是:

    Report.ParameterByName("startime").AsDateTime = Format(startime.Value, "yyyy-mm-dd")    Report.ParameterByName("endtime").AsDateTime = Format(endtime.Value, "yyyy-mm-dd")
如果想知道当前管理员,直接在报表设计时,直接双击出现“综合文字框文本”,然后点击“插入域”,出现“选择数据库”对话框,从引用类型中选择参数,然后从参数中选择UserID就妥了!

然后是报表的一系列功能,我也觉得特别神奇,比如刷新:

GRDisplayViewer1.Refresh '刷新
还有打印

Report.[Print] (True) '打印
预览也是报表功能的一个特色

Report.PrintPreview (True) '预览
问题六:结账

结账,是我在整个机房中遇到的一大难关那!刚开始做结账的时候,真的不知道结账的原理。拿着好久都不知道怎么下手。真正开始知道结账原理,还是在第一次验收系统之后,经过师傅的点播,总算是能了解一点点。结账,是管理员给操作员和一般用户结账,说的实例化一点,就是公司老板查看财务经手的资金情况。所以一般用户和操作员应该是没有权限查看结账的,这就涉及到权限问题:一般用户的权限仅不能查看操作员和管理员记录,而操作员不能查看管理员记录,这就是规矩!

问题七:下机

下机是我的最痛!花的时间也绝对是最多的。这儿涉及到的四张表:student_Info,online_Info,line_Info,database_Info都快被我折腾疯了!下机这块,还是以图表示吧:


为什么没有理清楚下机这块,就是因为四张表的关系没有理清楚。Online表和Line表是由联系的,但是当时可能是一叶障目了吧,想的特别简单:上机就是把记录录入到Online表中,下机就把Online表中数据删除了,然后line表重新录入数据,但是没有把line表和Online表联系起来。所以总是剪不断,理还乱。

上边叙述的是主页上的下机,还有比较复杂的选择下机和全部下机。

在主页上的下机理清楚之后,全部下机就比较清楚了,一个循环解决问题:

    Do While Mrc(4).RecordCount > 0  '只有OnLine表中还有数据就进行操作        '算花费时间        strCostTime(1) = Hour(Time) * 60 + Minute(Time)        strCostTime(2) = Hour(Mrc(4).Fields(7)) * 60 + Minute(Mrc(4).Fields(7))        strCostTime(3) = strCostTime(1) - strCostTime(2)                '将数据录入line表中        Mrc(3).AddNew        Mrc(3)!cardno = Mrc(4)!cardno        Mrc(3)!studentNo = Mrc(4)!studentNo        Mrc(3)!studentName = Mrc(4)!studentName        Mrc(3)!Department = Mrc(4)!Department        Mrc(3)!sex = Mrc(4)!sex        Mrc(3)!ondate = Mrc(4)!ondate        Mrc(3)!OnTime = Mrc(4)!OnTime        Mrc(3)!offdate = Format(Date, "yyyy-mm-dd")        Mrc(3)!offtime = Time        Mrc(3)!consumeTime = strCostTime(3)        Mrc(3)!Status = "正常下机"        Mrc(3)!Computer = Mrc(4)!Computer                '判断时间是否大于一个小时,一个小时内统一按照2元收费        If strCostTime(3) < 60 Then            Mrc(3).Fields(11) = 2        Else        '否则的话根据用户类型进行分类收费            If Mrc(2).Fields(14) = "临时用户" Then                Mrc(3).Fields(11) = Int(Mrc(4).Fields(1) * Hour(txtCostTime.Text))            Else                Mrc(3).Fields(11) = Int(Mrc(4).Fields(0) * Hour(txtCostTime.Text))            End If        End If                '算所剩余额        Mrc(3).Fields(12) = Val(Mrc(1).Fields(7)) - Val(Mrc(3).Fields(11))        Mrc(1).Fields(7) = Mrc(3).Fields(12)                Mrc(4).Delete        Mrc(4).MoveNext        If Mrc(4).RecordCount = 0 Then Exit Do    Loop
再说选择下机,在盖盖的帮助下,知道怎么去将在myflexgrid中的记录与数据库的记录对应起来。

stuNo = Trim(myflexgrid.TextMatrix(myflexgrid.Row, 0))    
然后再对其进行操作:

            strCostTime(1) = Hour(Time) * 60 + Minute(Time)            strCostTime(2) = Hour(Mrc(3).Fields(7)) * 60 + Minute(Mrc(3).Fields(7))            strCostTime(3) = strcosttime1 - strcosttime2                        '更新line表            Mrc(1).AddNew            Mrc(1)!cardno = Mrc(3)!cardno            Mrc(1)!studentNo = Mrc(3)!studentNo            Mrc(1)!studentName = Mrc(3)!studentName            Mrc(1)!Department = Mrc(3)!Department            Mrc(1)!sex = Mrc(3)!sex            Mrc(1)!ondate = Mrc(3)!ondate            Mrc(1)!OnTime = Mrc(3)!OnTime            Mrc(1)!offdate = Format(Date, "yyyy-mm-dd")            Mrc(1)!offtime = Time            Mrc(1)!consumeTime = strCostTime(3)            Mrc(1)!Status = "正常下机"            Mrc(1)!Computer = Mrc(3)!Computer                        '算钱            If strCostTime(3) < 60 Then                Mrc(1).Fields(11) = 2            Else                If Mrc(2).Fields(14) = "临时用户" Then                    Mrc(1).Fields(11) = Int(Mrc(4).Fields(1) * Hour(txtCostTime.Text))                Else                    Mrc(1).Fields(11) = Int(Mrc(4).Fields(0) * Hour(txtCostTime.Text))                End If            End If            '所剩余额计算            Mrc(1).Fields(12) = Val(Mrc(2).Fields(7)) - Val(Mrc(1).Fields(11))            Mrc(2).Fields(7) = Mrc(1).Fields(12)            Mrc(2).Update            Mrc(1).Update            Mrc(3).Delete                        MsgBox "下机成功!"            '删除所选行            myflexgrid.RemoveItem Row

小结

整个机房收费系统敲下来,我的唯一感觉是:累,真心很累。花了大概一个月的时间敲机房,整个过程不说历经坎坷,也是披荆斩棘了。考验的不是一个人技术水平有多高,考研的是一个人的耐心和坚持。看到很多人跑到那那那前边去了,也仍然能心平气和的继续自己的学习。正在一点点的领悟提高班培养的不是码农,是精英······






0 0