【前言】
机房收费系统总算是要做一个结尾了,拖延了很长时间,最后决定在这个节点来逼自己一把,最终还是证明自己可以完成的。
【正文】
我们在做一个程序的时候,首先要思考面向用户是谁,用户会需要用到什么功能,这些功能大体上需要怎样实现,有哪些是可以简化的,有哪些是比较人性化的,怎样可以增加用户体验,这些都是我们在开始做程序之前要思考到的问题。做一个程序最重要的环节并不是敲代码的时候,而是你在了解用户需求并构思的时候。
但是我们总是先敲代码先做着,做完了再去优化,再去思考,这就有些本末倒置了,而且会浪费很多的时间和精力。
数据库
- 数据库中的数据类型,不同的表中相同的名字对应的数据类型应该是一样的.
- 像cardNo studentNo等列,已经在程序中限制了输入的字符不能超过6个字符,那么数据库中的数据类型就应该限制为CHAR(6)不要过多,否则维护数据库费人力物力。
- 还有时间和日期,date和time,可以合并为datatime,不必复杂,不要浪费。
- 对于金额,numeric这个数据类型,numeric(18,0)最多输入18个数字,不可以有小数,但是有的表中是允许存在小数的。充值整数,扣费整数,哪里来的小数呢,这个小数完全没有必要存在。但是也会存在打折出来扣费0.5,这个时候就另当别论了。
18个字符,充值的时候需要连接数据库判断加入这个钱之后,数据库中的钱有没有18个字符,如果超过了18个字符,数据库会崩,我们需要限制一下,超过18个字符就不让它充钱了。 - 数据库中的使用不使用,结账不结账,可以直接用0和1代替,节省资源,也方便记录。
各种限制
用户名和密码,只能输入数字和退格键,不可以使用右键粘贴。密码用*代替。
查看更多的限制可以查看VB中的各种限制
Private Sub txtCardNo_KeyPress(KeyAscii As Integer)
txtCardNo.MaxLength = 6 '限制输入数字长度为6
'限制只能输入数字
Select Case KeyAscii
Case 48 To 57
Case 8
Case Else
KeyAscii = 0
txtCardNo.Text = ""
End Select
End Sub
'禁止单击右键
Private Sub txtCardNo_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = MouseButtonConstants.vbRightButton Then
Clipboard.Clear
End If
End Sub
登录窗体
- 窗体加载的事件不对,点击空白处就没有了各个控件的显示。
- 除了卡号需要输入以外,其他的都是不需要输入的,可以不使用text控件,使用label透明,这样更美观。
- 上机之后显示账户的基本信息,更新当前上机人数。
- 下机之后需要显示全部信息以及消费时间和消费金额,需要设置一个timer控件,过几秒钟之后就消除这些内容。
- 下机之后同样要更新上机人数。也可以设置一个timer控件,每隔几秒钟就要查询一下online表,更新上机人数。
- 上机的时候需要查询当前用户余额是否大于最少余额,上机的时候不足最少余额了,要提示需要充值,若不充值,需要强制下机。
- 其他的控件内容是需要跟随卡号进行变动的,卡号进行变动的时候,其他卡号的内容要清空。
- 界面的picturebox里面的图片要跟随控件或者窗体变化大小,不然就限制窗体的大小以及不能点击最大最小。
查看余额
- 除卡号之外的其他文本框不能输入,需要限制各文本框的输入条件和输入长度。
- 卡号在查询不到的时候,提示卡号不存在。这里的提示不要有很明显的提示框,可以在旁边设置一个暗按钮,提示一行红字,告知你没有这个卡号,总是爆提醒,会影响用户体验。
其他内容需要跟随变化,卡号变动其他内容要清空。 - 点击查询之前要先把所有控件的内容清空这样才会有变动。
- 不需要有清除信息的按钮,浪费!
- 一般用户下面不要有退出的按钮,一是权限不明确,二是可以直接点击叉号退出,浪费!
学生查看上机记录
- MSHFlexGrid,要注意不要有一行空白格,这是一个老问题!
- 在表格中显示的问题,要注意列宽,让内容充分显示出来。金额在表格中靠右显示,其余的内容最好是居中显示。
- 日期和时间可以合并,不要浪费资源。
- 导出Excel表格的时候,可以设置自己自动命名,可以是当前日期时间或者是当前的用户等,自己设置。
- 下面表格的内容跟随卡号变动,卡号变化的时候,下面的内容直接清空。
' 添加列名
With MSHFlexGrid1
.Rows = 1
.CellAlignment = 4
.TextMatrix(0, 0) = "卡号"
.TextMatrix(0, 1) = "充值金额"
.TextMatrix(0, 2) = "充值日期"
.TextMatrix(0, 3) = "充值时间"
.TextMatrix(0, 4) = "充值教师"
End With
'判断是否移动到数据集对象的最后一条记录
Do While Not mrc.EOF
With MSHFlexGrid1
.Rows = .Rows + 1
.CellAlignment = 4
.TextMatrix(.Rows - 1, 0) = mrc.Fields(2) '卡号
.TextMatrix(.Rows - 1, 1) = mrc.Fields(3) '充值金额
.TextMatrix(.Rows - 1, 2) = Trim(mrc.Fields(4)) '充值日期
.TextMatrix(.Rows - 1, 3) = mrc.Fields(5) '充值时间
.TextMatrix(.Rows - 1, 4) = Trim(mrc.Fields(6)) '充值教师
'移动到下一条记录
mrc.MoveNext
End With
Loop
注册
- 输入卡号查找这个卡号是否存在,不存就要注册,存在就提示。
- 注册的时候状态只有使用,可以不要这个选择了,直接在代码中默认,也可以选择使用不使用,然后使用的时候再次激活。
- 注册时候是不是可以考虑不充值金额,以后使用的时候再去充值。
- 一个卡号对应一个学号,还是,一个卡号对应多个学号,这个需要判断。
- 清空按钮没有必要存在。
充值
- 下面文本框限制不可以输入。
- 如果输入的卡号不对,会提示卡号不存在或者已经停用,这个时候需要卡号和充值金额同时清空。
- 已经限制了充值金额不能少于最少金额,还需要限制充值金额不能是以0开头的(002),也不能是0(0000)。
- 充值成功之后显示的充值老师应该是当前登录账户,而不是给这个账户注册的老师,防止责权不明。
- 提示充值成功可以使用暗按钮,爆一行红字提示,不要直接弹出提示框。
退卡
- 退卡的时候可以不输入退还金额,自动把全部金额退还。
- 退卡之后这个账户就是不使用状态。
- 退卡成功之后有一个提示框,然后直接清空内容。这样清除信息按钮就没有存在的必要了。
学生上机信息统计
- 输入的内容需要限制,根据输入的限制进行限制。
- 表格中的显示需要调整格式,按照上面说的。
学生上机状态查看
- 点击显示全部之后,可以左键选中标记,右键有一个菜单栏,显示的内容是上机管理的内容。
- 上机管理可以跳着标记选中下机,下机成功之后需要更改主窗体的当前上机人数。
- 学生基本信息维护,应该是对于学生的基本信息进行更改维护,不应该是学生基本信息查询。
收取金额查询
- 起始时间早于终止时间,终止时间早于系统当前时间。
显示的表格格式需要调整。
表格可以设置一个滑轮,可以鼠标进行滑动。
删除和添加用户
- 当前登录的用户不要显示,不然容易误删。
- 删除的时候最好是做一个选中标记进行删除,不然点击表头删除岂不是要爆“91”了。
基本数据设定
- 至少上机时间和准备时间可以去掉。上机即扣费,自己点击上机,这是网吧的做法,可以考虑参考,这样做的话就需要把普通用户和管理员的登录和上机界面区分开了,普通用户可以设置为登录即上机。
账单
- 表格可以显示起始日期和终止日期,不然不知道你结账是何时的。
- 上期余额没有必要另外拎出来,可以直接去掉了。
- 注意操作顺序,选择时间——刷新账单——打印预览——打印,这个顺序是不可以更改的哟。
- 表单上显示打印表单的时间和账单的时间(就是两个时间,不知道你能不能理解)
结账
- 结账是管理员对操作员的动作。汇总的是操作的售卡退卡以及充值金额收取金额等。
- 结账的时候有一个临时用户,需要主要汇总的金额是否包含临时用户的,偶尔临时用户的操作会造成负值。如果说汇总的金额是固定用户和临时用户的总用户,那么就不必再有临时用户的显示,若是说汇总的金额是只有固定用户的,没有临时用户的,那么这里就需要统计临时用户的存在。
【结尾】
以上的总结都是需要注意的事项,也是下次需要重点优化的地方。
这不是结束,这是一个新的起航!