机房收费系统总结
随着机房收费系统的结束,有时间也有机会让自己好好回头反思自己在整个系统中所遇到的问题,解决的方法以及自己的收获。
我认为自己的心理问题严重,造成影响学习效率的罪魁祸首。主要表现为一种忌惮心理,不想去做,或者也可以说成执行力低下,固执于拖延。
做与不做你就在那里,避与不避也都在那里。也许只有那就话最对,如果你不想做,就没人能帮的了你(靠山山会倒,靠人人会跑,只有自己才是最可靠)。
曾经的曾经已都不是重点,重点是走过的路是否让自己成长了?
细数自己机房收费系统的经历。
机房收费系统做了好一段时间,这也算作自己独立完成的第一个正式系统吧!机房收费系统的难点不外乎有这么几个:1、上下机(这里面你要考虑的逻辑关系有好几种,这些逻辑关系是最让人纠结的地方)2、组合关系(也是考虑到利用了一系列的逻辑关系)3、日结账单和周结账中的打印报表4.结账(也是需要考虑的一系列逻辑关系)5.再有难点就是自己搭建数据库了(这个是基础,和你日后使用、连接程序有着密切的关系)等等!
这次做系统是我充分认识到做好笔记的重要性,onenote在这里起到了至关重要的用途。例如:开始时要进行分析系统的各种功能,数据库的搭建,表的搭建,各种细节性的描述等等。做好笔记的重要性还表现在错误的整理上,第一次错了,记录下来,第二次就不会再错了,吸取教训。还有就是代码量的问题,第一次这段代码不会书写不要紧,可以把它记录下来,在接下来在遇到同样的需求你会有思路,问题从而得以解决,这样就会有“柳暗花明又一村”的感觉。
还有就是mindmanager画图工具的使用,梳理思维。在这里不加以赘述。
下面是各窗体是按照权限分类的(不再加图,前面博客以用到了图解)
操作员
1.学生注册:涉及两个表(student_info和recharge_info),注册成功时在学生表增加一条记录同时充值表也增加一条记录.界面上,本次要充入的金额可以输入但是最终"充值金额"不可输入.代码则不要忘mrc.addnew和mrc.update
2充值:首先判断该卡是否已注册,若注册则充值成功时在充值表增加一条记录,同时更新学生表中的余额数据.
3.退卡:判断该卡是否注册是否正在上机,已注册未上机则办理退卡,退卡成功不删除学生表中的记录,而是将state由"使用"改为"不使用".
4.收取金额查询:用到一个日期控件,DTPicker,然后查询两个日期之间的所有记录.导出为Excel的方法在上一篇博客中有详细介绍.
5.退还金额查询:即由于退卡而退回的金额,在学生表中查询两个日期之间的status为"不使用"的记录.
6.学生基本信息维护
7.学生上下机统计信息
8.操作员工作记录
这三个都是组合查询,通过字段名(卡号,姓名等),操作符(<=等)和组合关系(and,or)的组合构成查询条件,在相应的表中的找到记录并用MXFlexGrid控件显示.其中用到的方法是定义一组变量Field(2),通过select语句判断combo控件的comboField.listindex属性值给变量Field(0)赋值,其他两个条件同上,然后构造SQL语句.用到的思想是用变量将字段内容取出,在处理多个类型相同的数据时,数组不失为一种极佳的选择.
一般用户
1学生查看余额
2学生上机记录查看
3.学生充值记录查询
输入卡号,进行一些条件的判断,如是否注册,卡号是否为空,然后分别在学生表,上下机表,充值表中查询并显示符合条件的记录.
4.学生上机状态查看:
该窗体有四个菜单选项,
(1)上机状态查询,是一个组合查询,查找符合某些条件的正在上机的记录.
(2)显示全部,将正在上机表中的所有记录查询出来显示.
(3)上机管理,包括全部下机和选中学生强制下机,参考下机的事件过程即可.
(4)退出.
5.修改密码:输入旧密码和新密码,在user表中查询该userID的PWD,若和输入的旧密码,则更新user表数据,改为新密码.
6退出
退出时,用到QueryUnload事件,对参数UnloadMode进行判定,若为0-5则提示是否退出,退出时在操作员工作记录表中补充相应信息.
管理员
1.结账
分别从student_info,recharge_info和cancelcard_info中查询userid为某个操作员且status为未结账的记录,结账时将各个记录集的个数赋值给汇总部分的相应文本框,更改status为已结账.选择操作员的意义在于管理员可以核对该操作员所上交的钱和系统的账目上的收入金额是否一致,对于后台数据库没有多少影响.此处的操作员应为广义上的操作员,即包括有注册,充值,退卡等权限的管理员.
2.添加删除用户:
选择用户级别,填写用户信息,然后更新user_info中的数据.
3.基本数据设定:
该表的意义在于为上下机的结账提供依据.表中数据分别有一下意义:
(1)准备时间:为上机学生提供一定的准备时间,该时间段内不收费
(2)最少上机时间:如果上机时间少于该数,则按照最少上机时间收费
(3)递增单位时间:在上机时间大于最少上机时间的情况下,按照递增单位时间计算上机时间,不足一个单位时间的按照一个单位时间计算.
(4)每半小时费用:根据实际情况,递增单位时间应该是半小时的整数倍,所以设定每半小时的费用,依此计算上机费用.
4正在值班教师查询:
在教师工作记录表中查询status为"true"的记录即可.
5日结账单
6周结账单
共用checkday_info一张表,日结时只对当天的充值金额,消费金额和退卡金额各进行求和结算,更新数据,然后用报表显示出来.有打印和打印预览功能.周结时,选择起止日期,为防止有某日未结账而直接从数据库中读取数据将漏掉数据的情况,先将该时间段内的记录删除,然后执行日结的过程,重复次数为该时间段的天数.然后再从数据库中读取这些记录并显示.
登录窗体
1.考虑是否在线
2.判断用户名是否合法
3.判断用户名和密码是否一致
4.判断权限
上机
判断是否注册,
是否正在上机,
判断最小余额,小于最少余额,提示余额不足.
满足条件开始上机
下机
准备时间内不收费
消费时间consumetime=offtime-ontime
计费时间=consumetime-preparetime
如果上机时间<准备时间,则直接下机不收费
如果准备时间<上机时间<至少上机时间,则按照至少上机时间收费
如果上机时间>至少上机时间,则按照递增单位时间收费