第一次机房收费系统总结

前言

    经过一个多月时间的学习第一次机房收费系统终于是完成了,其中借鉴了许多前辈和同学的经验。充分利用现有的学习资源为己用,再将所学所用整合为自己脑子里的知识,这应该就是站在巨人的肩膀的真谛吧!下面就对整个系统进行一下总结,巩固自己学习的知识。

    机房我是从上下机部分开始的,该部分的总结可以点击传送门查看,有兴趣的同学可以看看,具体就不在累述。下面是对机房整体总结性的导图:

    开始机房是首先我们要对其整体结构有一定的了解,机房主要分为三大功能模块:一般用户、操作员和管理员。其中不同用户等级拥有不同权限,等级越高权限越高,高权限拥有低权限所有功能。具体顺序:管理员→操作员→一般用户,下面我们由一般用户逐级介绍,还是先看导图:


    一般用户:该功能模块中主要涉及的都是数据的增删改,因此需要注意各个数据表的调用和基础sql语句的严格性和有效性。

    在该模块需要重点注意的有两点:1.一般用户一般我们认为是学生即普通用户,作为消费者一般用户应只能修改或查询自身信息,而不能对其他用户信息进行修改或查询。因此在使用一般用户权限登录机房收费系统时需要对其设置权限,禁止查询自身之外的客户信息。2.上机状态查询功能涉及到上下机操作,这是作为普通用户不应该具有的权限。我们可以再登陆时验证用户等级,当一般用户登录时该功能不可见,只有在更高权限用户登录时才可以使用此功能。

    接下来是操作员部分,思维导图如下:


    操作员:首先操作员拥有一般用户所有权限,然后在此基础上添加了用户注册、充值和退卡功能及更多的记录查询功能。这里的操作员更类似于工作人员的性质,拥有基本的客户信息增改删功能。

    该模块的重点在于组合查询部分,组合查询每个人都有自己不同的思路,我的整体思路大概是:首先限制第二行和第三行为不可输入,在第一行条件输入时检测第一个组合关系输入是否为空,如为空则执行第一行条件语句,否则第二行可输入,继续输入第二行查询条件,以此类推。代码部分如下所示: 

Private Sub cmdquery_Click()
  Dim mrc As ADODB.Recordset
  Dim txtSQL As String
  Dim msgtext As String
  
  txtSQL = "select * from student_Info where"
  
  If Trim(com1.Text) = "" Or Trim(com2.Text) = "" Or Trim(txt1.Text) = "" Then
     MsgBox "请填写完整的查询条件", vbInformation, "提示"
    Exit Sub
  Else
    txtSQL = txtSQL & " " & Field(com1.Text) & " " & com2.Text & "'" & Trim(txt1.Text) & "'"
    
    If Trim(com7.Text) <> "" Then
     If Trim(com3.Text) = "" Or Trim(com4.Text) = "" Or Trim(txt2.Text) = "" Then
       MsgBox "请填写完整的查询条件", vbInformation, "提示"
       Exit Sub
     Else
      txtSQL = txtSQL & "" & Field(com7.Text) & " " & Field(com3.Text) & "" & com4.Text & "'" & Trim(txt2.Text) & "'"
     
     If Trim(com8.Text) <> "" Then
      If Trim(com5.Text) = "" Or Trim(com6.Text) = "" Or Trim(txt3.Text) = "" Then
        MsgBox "请填写完整的查询条件", vbInformation, "提示"
        Exit Sub
      Else
       txtSQL = txtSQL & "" & Field(com8.Text) & " " & Field(com5.Text) & "" & Trim(com6.Text) & "'" & Trim(txt3.Text) & "'"
       
       End If
      End If
     End If
    End If
Private Sub com7_Click()
  If com7.Text <> "" Then
   com3.Enabled = True
   com4.Enabled = True
   com8.Enabled = True
   txt2.Enabled = True
  End If
End Sub
    在组合查询时还需注意一点:在原始数据表中学号和卡号都定义为字符串类型,但是在比较大小时字符串类型无法实现此功能,就会出现比较大小功能并不能实现。所以我们需要将数据表中相关字符串类型转化为数值类型,这样才可以实现改功能。

     管理员部分导入如下:


    管理员:该角色类似于BOSS拥有所有的权限,包括所有用户的增删、基础数据设定、当前员工工作状态查看以及最重要结账和收入报表的查看。其中关于基本数据的增改删的部分就不在介绍,报表部分的总结可以可以点击
传送门查看,下面我们主要介绍结账部分的逻辑。

     结账部分在源程序中只包括了操作员的结账,但是我们知道有很多情况下管理员也进行了很多的操作。所以应该添加上管理员结账,否则管理员进行的操作始终处于未结账状态。结账功能中购卡、充值、退卡和临时用户只是数据的增改删,无需过多累述。重点在汇总部分:总售卡=售卡总数-退卡总数  充值金额中包括临时用户的金额,因此为避免重复计算 应收金额=充值金额-退款金额,临时金额不计算其中。代码如下:

  

If st.Caption = "汇总" Then
  Dim i As Integer
    If txtcash.Text = "0" Then
        
    txtSQL = "select * from student_Info where userID='" & Trim(comuser.Text) & "'" & " and Ischeck='未结账'"
    Set mrc = ExecuteSQL(txtSQL, msgtext)
        
    txtsk.Text = mrc.RecordCount   '计算售卡数目
        
    txtSQL = "select * from CancelCard_Info where userID='" & Trim(comuser.Text) & "'" & " and status='未结账'"
    Set mrc = ExecuteSQL(txtSQL, msgtext)
      
    txttk.Text = mrc.RecordCount     '计算退卡数量
    txtzs.Text = Val(txtsk.Text) - Val(txttk.Text) '计算总售卡数

    txtSQL = "select * from student_Info where userID='" & Trim(comuser.Text) & "'" & " and type='临时用户'" '& " and status='使用'"
    Set mrc = ExecuteSQL(txtSQL, msgtext)

    For i = 1 To mrc.RecordCount
        txttemcash.Text = Val(txttemcash.Text) + Val(Trim(mrc.Fields(7))) '临时金额计算
    Next i

    mrc.Close
        
    txtSQL = "select * from Recharge_Info where userID='" & Trim(comuser.Text) & "'" & "and status='未结账'"
    Set mrc = ExecuteSQL(txtSQL, msgtext)
        
    txtrecharge.Text = ""
        
    Do While Not mrc.EOF
        txtrecharge.Text = Val(txtrecharge.Text) + Val(Trim(mrc.Fields(3)))
        mrc.MoveNext    '充值金额计算
    Loop
        
    txtSQL = "select * from CancelCard_Info where userID='" & Trim(comuser.Text) & "'" & " and status='未结账'"
    Set mrc = ExecuteSQL(txtSQL, msgtext)
        
      txttj.Text = ""
          
    Do While Not mrc.EOF
        txttj.Text = Val(txttj.Text) + Val(Trim(mrc.Fields(2)))
        mrc.MoveNext   '退款金额计算
    Loop
        
    txtcash.Text = Val(txtrecharge.Text) - Val(txttj.Text)  '应收金额计算
   End If
【总结】

     机房收费系统是我们学习过程中里程碑式的项目,在经过这么长时间的学习后,无论是对代码的熟悉度还是自信心方面亦或者解决问题的能力都有了很大的进步。在其中也少不了各位同学的帮助,真的很感谢各位的帮助同时也让我认识到:闻道有先后,术业有专攻。一定要和别人多交流多学习,既提升了自己也帮助别人提高了自己。

     

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值