第一次机房收费系统【总结】——结账

素颜马尾好姑娘i 2024-02-17 17:51 156阅读 0赞

说起机房,我个人感觉最具有挑战性的就是上下机,组合查询,以及结账。下面我就来说一说结账。

结账,概括的来说,就让管理员知道每天机房的金钱收支。详细的说是把每个操作员一天收支明细列出来让管理员一目了然。

下面我们先来看看结账的界面,如下图

Center

经过分析,我们可知道,这就是管理员看操作员一天的工作明细,即售卡,充值,退卡的情况。

1、 购卡:就是在student_info表总查询没有结账的那些新注册的学生卡号等信息。

2、 充值:在recharge_info表中查询未结账的充值信息。

3、 退卡:在cancelCard_info中查询未结账的退卡信息。

4、 临时用户:在student_info表中查询未结账的,没有退卡的临时用户。

5、 汇总:将前面所有的信息汇总起来。用到了student_Info 、Recharge_Info 、cancelcard_Info 表。

6、 售卡张数=购卡选项卡的记录总数

7、 退卡张数=退卡选项卡的记录总数

8、 退卡金额=cancelcard_Info表中的金额进行累加

9、 总售卡数=售卡数-退卡数

10、 注册和充值金额=student_Info 表中注册时候的充值金额+Recharge_Info 表中的充值金额(注册时的充值的钱和充值时充进去的钱其实都一样)

11、 临时收费=临时收费选项卡记录中的卡号上机所消费的钱的总和(Line_Info)(只是用来显示)

12、应收金额=注册和充值金额-退卡金额

但是,这样使用三个表相互查询,略觉复杂。我们可以在recharge表中添个字段,让问题变得简单点。值使用两个表即可将此窗体功能实现。如下图:

Center 1

只需添加图中的两个字段,就可以在实现本窗体功能时,丢弃student表了。

功能分析如下:

1、 购卡:就是在recharge_info表总查询没有结账的那些新注册的学生卡号等信息。

2、 充值:在recharge_info表中查询未结账的充值信息。

3、 退卡:在cancelCard_info中查询未结账的退卡信息。

4、 临时用户:在recharge_info表中查询未结账的,没有退卡的临时用户。

5、 汇总:因为我们数据表的改动,所以我们只是用到了Recharge_Info 、cancelcard_Info 表。

代码如下:

  1. Dim txtSQL As String
  2. Dim msgtext As String
  3. Dim checkDaymrc As ADODB.Recordset
  4. Dim LineMrc As ADODB.Recordset
  5. Dim CancelMrc As ADODB.Recordset
  6. Dim REChargeMrc As ADODB.Recordset
  7. Dim Yescheckmrc As ADODB.Recordset
  8. 'Dim cancelCash1 As String '用于记录退卡总金额
  9. Dim Allcash1 As String '用户记录注册和充值总金额
  10. Private Sub cmdcheckout_Click()
  11. '打开日结账单 的表,查询上次结账时是否有记录,如果没有则
  12. 'remainCash清零。否则将上次的记录填上。
  13. '每次都是增加一条记录,将汇总里面的信息填上即可。并且情况,然后对其数据库标记
  14. Dim Remaincash As String '上期余额
  15. Dim RechargeCash As String '上期充值
  16. Dim ConsumCash As String '学生消费
  17. ConsumCash = 0
  18. '判断下拉菜单中是否有东西
  19. If ComLevel.Text = "" Then
  20. MsgBox "先选择员工", vbOKOnly + vbExclamation, "提示"
  21. Exit Sub
  22. End If
  23. txtSQL = "select * from checkday_info"
  24. Set checkDaymrc = ExecuteSQL(txtSQL, msgtext)
  25. Call SQL_Timer
  26. txtSQL = "select * from checkday_info where date='" & Trim(Left(Sqlser_time, 9)) & "'"
  27. Set Yescheckmrc = ExecuteSQL(txtSQL, msgtext)
  28. '看看checkday数据库是否有记录,有记录的话上次的余额等内容填写上次的,否则为零
  29. If checkDaymrc.EOF = False Then '如果有记录
  30. checkDaymrc.MoveLast '跳到最后一条记录
  31. Remaincash = checkDaymrc.Fields(4) 'remaincash
  32. '计算今日消费
  33. txtSQL = "select * from line_info where ischeck='未结账'and status='正常下机'"
  34. Set LineMrc = ExecuteSQL(txtSQL, msgtext)
  35. If LineMrc.EOF = False Then
  36. Do While LineMrc.EOF = False
  37. ConsumCash = Val(ConsumCash) + Val(LineMrc.Fields(11))
  38. LineMrc.Fields(13) = "已结账"
  39. LineMrc.MoveNext
  40. Loop
  41. End If
  42. If Yescheckmrc.EOF = True Then '如果今天没有结账
  43. checkDaymrc.AddNew
  44. checkDaymrc.Fields(0) = Val(Remaincash) 'remaincash
  45. checkDaymrc.Fields(1) = Val(labRechargeCash.Caption) 'rechargecash
  46. checkDaymrc.Fields(2) = Val(ConsumCash)
  47. checkDaymrc.Fields(3) = Val(labCancelCash.Caption) 'cancelcash
  48. checkDaymrc.Fields(4) = Val(labAllCash.Caption)
  49. Call SQL_Timer
  50. checkDaymrc.Fields(5) = Trim(Left(Sqlser_time, 9)) 'date
  51. checkDaymrc.Update
  52. checkDaymrc.Close
  53. Else
  54. Yescheckmrc.Fields(0) = Val(Remaincash) 'remaincash
  55. Yescheckmrc.Fields(1) = Val(labRechargeCash.Caption) + Val(Yescheckmrc.Fields(1)) 'rechargecash
  56. Yescheckmrc.Fields(2) = Val(ConsumCash) + Val(Yescheckmrc.Fields(2))
  57. Yescheckmrc.Fields(3) = Val(labCancelCash.Caption) + Val(Yescheckmrc.Fields(3)) 'cancelcash
  58. Yescheckmrc.Fields(4) = Val(labAllCash.Caption) + Val(Yescheckmrc.Fields(4))
  59. Call SQL_Timer
  60. Yescheckmrc.Fields(5) = Trim(Left(Sqlser_time, 9)) 'date
  61. Yescheckmrc.Update
  62. Yescheckmrc.Close
  63. End If
  64. Else '如果没有记录
  65. txtSQL = "select * from line_info where ischeck='未结账'and status='正常下机'"
  66. Set LineMrc = ExecuteSQL(txtSQL, msgtext)
  67. If LineMrc.EOF = False Then
  68. Do While LineMrc.EOF = False
  69. ConsumCash = Val(ConsumCash) + Val(LineMrc.Fields(11))
  70. LineMrc.Fields(13) = "已结账"
  71. LineMrc.MoveNext
  72. Loop
  73. End If
  74. checkDaymrc.AddNew
  75. checkDaymrc.Fields(0) = 0 'remaincash
  76. checkDaymrc.Fields(1) = Val(labRechargeCash.Caption) 'rechargecash
  77. checkDaymrc.Fields(2) = Val(ConsumCash)
  78. checkDaymrc.Fields(3) = Val(labCancelCash.Caption) 'cancelcash
  79. checkDaymrc.Fields(4) = Val(labAllCash.Caption)
  80. Call SQL_Timer
  81. checkDaymrc.Fields(5) = Trim(Left(Sqlser_time, 9)) 'date
  82. checkDaymrc.Update
  83. checkDaymrc.Close
  84. End If
  85. '对数据库进行结账标记
  86. '对cancelcard标记
  87. txtSQL = "select * from cancelcard_info where status='未结账'and userid='" & ComLevel.Text & "'"
  88. Set CancelMrc = ExecuteSQL(txtSQL, msgtext)
  89. Do While CancelMrc.EOF = False
  90. CancelMrc.Fields(5) = "结账"
  91. CancelMrc.MoveNext
  92. Loop
  93. 'recharge数据库标记
  94. txtSQL = "select * from recharge_info where status='未结账'and userid='" & ComLevel.Text & "'"
  95. Set REChargeMrc = ExecuteSQL(txtSQL, msgtext)
  96. Do While REChargeMrc.EOF = False
  97. REChargeMrc.Fields(8) = "结账"
  98. REChargeMrc.MoveNext
  99. Loop
  100. labCardNo.Caption = 0
  101. labCancelNo.Caption = 0
  102. labRechargeCash.Caption = 0
  103. lablinCash.Caption = 0
  104. labCancelCash.Caption = 0
  105. laballCardNo.Caption = 0
  106. labAllCash.Caption = 0
  107. End Sub
  108. Private Sub comLevel_Click() '当在点击下拉菜单中的选项,则显示真是姓名
  109. txtSQL = "select * from user_info where userid='" & ComLevel.Text & "'"
  110. Set mrc = ExecuteSQL(txtSQL, msgtext)
  111. labName.Caption = Trim(mrc.Fields(3)) '显示姓名
  112. lablevel.Caption = Trim(mrc.Fields(2)) '级别
  113. mrc.Close
  114. Call viewdate
  115. End Sub
  116. Private Sub ComLevel_KeyPress(KeyAscii As Integer) '下拉菜单不可输入。
  117. KeyAscii = 0
  118. End Sub
  119. Private Sub Form_Deactivate() '失去焦点时,窗体卸载
  120. Unload Me
  121. End Sub
  122. Private Sub Form_Load()
  123. '窗体初始加载时,在下拉菜单中加载userid(级别)
  124. txtSQL = "select * from user_Info" '查询
  125. Set mrc = ExecuteSQL(txtSQL, msgtext)
  126. '在下来菜单中显示所有userid
  127. Do While mrc.EOF = False
  128. ComLevel.AddItem mrc.Fields(0) '操作员用户名
  129. mrc.MoveNext
  130. Loop
  131. mrc.Close
  132. '窗体加载时,加载购卡卡片的字段名
  133. With MfgBugCard
  134. .Rows = 1
  135. .CellAlignment = 4 '居中
  136. .TextMatrix(0, 0) = "学号" 'studentid
  137. .TextMatrix(0, 1) = "卡号" 'cardid
  138. .TextMatrix(0, 2) = "日期" 'date
  139. .TextMatrix(0, 3) = "时间" 'time
  140. .TextMatrix(0, 4) = "金额" 'cash
  141. End With
  142. With MfgRecharge
  143. .Rows = 1
  144. .CellAlignment = 4 '居中
  145. .TextMatrix(0, 0) = "学号" 'studentid
  146. .TextMatrix(0, 1) = "卡号" 'cardid
  147. .TextMatrix(0, 2) = "充值金额" 'cash
  148. .TextMatrix(0, 3) = "日期" 'date
  149. .TextMatrix(0, 4) = "时间"
  150. .TextMatrix(0, 5) = "方式" 'source
  151. End With
  152. With MfgCancelCard
  153. .Rows = 1
  154. .CellAlignment = 4 '居中
  155. .TextMatrix(0, 0) = "学号" 'studentid
  156. .TextMatrix(0, 1) = "卡号" 'cardid
  157. .TextMatrix(0, 2) = "日期" 'cash
  158. .TextMatrix(0, 3) = "时间" 'date
  159. .TextMatrix(0, 4) = "退卡金额"
  160. End With
  161. With MSHFlexGrid4
  162. .Rows = 1
  163. .CellAlignment = 4 '居中
  164. .TextMatrix(0, 0) = "学号" 'studentid
  165. .TextMatrix(0, 1) = "卡号" 'cardid
  166. .TextMatrix(0, 2) = "日期" 'date
  167. .TextMatrix(0, 3) = "时间" 'time
  168. End With
  169. End Sub
  170. Private Sub viewdate() '根据已经选择好人员信息来修改SSTab里面的汇总信息
  171. Dim txtSQL As String
  172. Dim msgtext As String
  173. Dim mrcSD As ADODB.Recordset
  174. Dim mrcRC As ADODB.Recordset
  175. Dim mrcCC As ADODB.Recordset
  176. Dim mrcTmp As ADODB.Recordset
  177. Dim RechargeCash As Variant '用于存储,充值的 所有金额
  178. Dim cancelCash As Variant '用于存储,退钱的 所有金额
  179. Dim TmpCash As Variant '临时用户金额
  180. '把他的所有信息,未结账的显示出来
  181. '购卡
  182. txtSQL = "select * from recharge_Info where status='未结账' and UserID='" & ComLevel.Text & "'and source='注册'"
  183. Set mrcSD = ExecuteSQL(txtSQL, msgtext)
  184. MfgBugCard.Rows = mrcSD.RecordCount + 1
  185. With MfgBugCard
  186. .Rows = 1
  187. .CellAlignment = 4 '居中
  188. .TextMatrix(0, 0) = "学号" 'studentid
  189. .TextMatrix(0, 1) = "卡号" 'cardid
  190. .TextMatrix(0, 2) = "日期" 'date
  191. .TextMatrix(0, 3) = "时间" 'time
  192. While mrcSD.EOF = False
  193. .Rows = .Rows + 1
  194. .CellAlignment = 4
  195. .TextMatrix(.Rows - 1, 0) = Trim(mrcSD.Fields(1)) 'studentno
  196. .TextMatrix(.Rows - 1, 1) = Trim(mrcSD.Fields(0)) 'cardno
  197. .TextMatrix(.Rows - 1, 2) = Trim(mrcSD.Fields(5)) 'date
  198. .TextMatrix(.Rows - 1, 3) = Trim(mrcSD.Fields(6)) 'time
  199. .TextMatrix(.Rows - 1, 4) = Trim(mrcSD.Fields(3)) 'cash
  200. mrcSD.MoveNext
  201. Wend
  202. End With
  203. AutoColWidth Me, MfgBugCard '自动调整表格大小
  204. '把该操作员的所有未结账的充值信息汇总到表格,一个注册信息对应一个充值信息
  205. '充值结账
  206. txtSQL = "select * from ReCharge_Info where status='未结账' and UserID='" & ComLevel.Text & "'and source='充值'"
  207. Set mrcRC = ExecuteSQL(txtSQL, msgtext)
  208. RechargeCash = 0
  209. With MfgRecharge
  210. .Rows = 1
  211. .CellAlignment = 4 '居中
  212. .TextMatrix(0, 0) = "学号" 'studentid
  213. .TextMatrix(0, 1) = "卡号" 'cardid
  214. .TextMatrix(0, 2) = "充值金额" 'cash
  215. .TextMatrix(0, 3) = "日期" 'date
  216. .TextMatrix(0, 4) = "时间"
  217. While Not mrcRC.EOF
  218. .Rows = .Rows + 1
  219. .TextMatrix(.Rows - 1, 0) = Trim(mrcRC.Fields(1)) 'studentno
  220. .TextMatrix(.Rows - 1, 1) = Trim(mrcRC.Fields(2)) 'cardno
  221. .TextMatrix(.Rows - 1, 2) = Trim(mrcRC.Fields(3)) 'rechargecash
  222. .TextMatrix(.Rows - 1, 3) = Trim(mrcRC.Fields(4)) 'date
  223. .TextMatrix(.Rows - 1, 4) = Trim(mrcRC.Fields(5)) 'time
  224. mrcRC.MoveNext
  225. Wend
  226. End With
  227. AutoColWidth Me, MfgRecharge '自动调整表格大小
  228. '退卡
  229. '把所有信息汇总到表格
  230. txtSQL = "select * from CancelCard_Info where status='未结账' and UserID='" & ComLevel.Text & "'"
  231. Set mrcCC = ExecuteSQL(txtSQL, msgtext)
  232. cancelCash = 0
  233. With MfgCancelCard
  234. .Rows = 1
  235. .CellAlignment = 4 '居中
  236. .TextMatrix(0, 0) = "学号" 'studentid
  237. .TextMatrix(0, 1) = "卡号" 'cardid
  238. .TextMatrix(0, 2) = "日期" 'cash
  239. .TextMatrix(0, 3) = "时间" 'date
  240. .TextMatrix(0, 4) = "退卡金额"
  241. While mrcCC.EOF = False
  242. .Rows = .Rows + 1
  243. .CellAlignment = 4
  244. .TextMatrix(.Rows - 1, 0) = Trim(mrcCC.Fields(0)) 'studentno
  245. .TextMatrix(.Rows - 1, 1) = Trim(mrcCC.Fields(1)) 'cardno
  246. .TextMatrix(.Rows - 1, 2) = Trim(mrcCC.Fields(2)) 'date
  247. .TextMatrix(.Rows - 1, 3) = Trim(mrcCC.Fields(3)) 'time
  248. .TextMatrix(.Rows - 1, 4) = Trim(mrcCC.Fields(6)) 'cancelcash
  249. cancelCash = cancelCash + mrcCC.Fields(6)
  250. mrcCC.MoveNext
  251. Wend
  252. End With
  253. AutoColWidth Me, MfgCancelCard '自动调整表格大小
  254. '临时用户
  255. txtSQL = "select * from Recharge_Info where status='未结账' and UserID='" & ComLevel.Text & "'and source='注册'and type='临时用户'"
  256. Set mrcTmp = ExecuteSQL(txtSQL, msgtext)
  257. TmpCash = 0
  258. With MSHFlexGrid4
  259. .Rows = 1
  260. .CellAlignment = 4 '居中
  261. .TextMatrix(0, 0) = "学号" 'studentid
  262. .TextMatrix(0, 1) = "卡号" 'cardid
  263. .TextMatrix(0, 2) = "日期" 'date
  264. .TextMatrix(0, 3) = "时间" 'time
  265. While mrcTmp.EOF = False
  266. .Rows = .Rows + 1
  267. .CellAlignment = 4
  268. .TextMatrix(.Rows - 1, 0) = Trim(mrcTmp.Fields(1)) 'studentno
  269. .TextMatrix(.Rows - 1, 1) = Trim(mrcTmp.Fields(0)) 'cardno
  270. .TextMatrix(.Rows - 1, 2) = Trim(mrcTmp.Fields(5)) 'date
  271. .TextMatrix(.Rows - 1, 3) = Trim(mrcTmp.Fields(6)) 'time
  272. TmpCash = cancelCash + mrcTmp.Fields(7)
  273. mrcTmp.MoveNext
  274. Wend
  275. End With
  276. AutoColWidth Me, MSHFlexGrid4 '自动调整表格大小
  277. txtSQL = "select * from Recharge_Info where status='未结账' and UserID='" & ComLevel.Text & "'"
  278. Set mrcTmp = ExecuteSQL(txtSQL, msgtext)
  279. Do While mrcTmp.EOF = False
  280. RechargeCash = RechargeCash + mrcTmp.Fields(3)
  281. mrcTmp.MoveNext
  282. Loop
  283. '然后,把操作员 的所有统计 信息 汇总 到 汇总列表
  284. labCardNo.Caption = Trim(mrcSD.RecordCount)
  285. labCancelNo.Caption = Trim(mrcCC.RecordCount)
  286. labRechargeCash.Caption = RechargeCash
  287. lablinCash.Caption = TmpCash
  288. labCancelCash.Caption = cancelCash
  289. laballCardNo.Caption = Val(labCardNo.Caption) - Val(labCancelNo.Caption)
  290. labAllCash = Val(labRechargeCash.Caption) - Val(labCancelCash.Caption)
  291. mrcSD.Close '关闭释放空间
  292. mrcRC.Close
  293. mrcCC.Close
  294. mrcTmp.Close
  295. End Sub
  296. Private Sub SSTab1_Click(PreviousTab As Integer)
  297. If SSTab1.Caption = "退出" Then
  298. Unload Me
  299. Else
  300. Call viewdate
  301. End If
  302. End Sub

发表评论

表情:
评论列表 (有 0 条评论,156人围观)

还没有评论,来说两句吧...

相关阅读

    相关 机房收费结账

    前言       感觉机房中最难的一部分就是结账这一部分了,越敲越乱,敲的曲曲折折的,真正弄懂结账这一块是第一次验收之后。结账是整个机房收费系统中除了上下机最核心的地方了

    相关 机房收费系统——结账

        机房收费系统的逻辑性很强。师傅也说了,第一次做机房,首要的是理清思路,明白它的逻辑。     做到结账这里,跟大家分享一下我对结账的一点理解: ![SouthEas

    相关 机房收费系统结账

    事实上,我觉得机房收费系统中结账的部分是耗我精力最多的。首先我就不明白结账是干嘛的,所以一上来就晕乎乎。后来看了一篇博客说结账方便老板管理的才明白了为什么是“操作员”。这里面要

    相关 机房收费系统结账

           机房收费系统中一个重要的窗体之一就是结账窗体,因为涉及到数据库中的好多表所以刚开始会觉得很难,其实理清思路后按照自己的思路写完后便觉得没有想象中的那么难!好先来看