引言
不知不觉,我在机房收费系统上耗的时间也有两个月多了,很尴尬,就像我们的故事一样,掺杂了太多感情在里面了,但是地球总还是要转的,明天早上太阳依然还是要升起的,所以这件事还是要有个完结的,所以今天我们就再此写下此完结篇,临表嗟叹,了却此间恩怨。
细想一下,经过两个月的机房经历,我到底学到了什么,慢慢的罗列一下还是有不少东西呢。从学生管理系统到机房收费系统,从一无所知到知道软件编程的原理,我走过了从普通走向入门的过程了,同时也走过了整整一个夏天。
当第一次看到机房收费系统的时候,我的感觉就是在做以前网吧的收费系统,上网的人就是一般用户,分为会员与非会员,他们的级别比较低,他只能进行一些基本的查询的事情或者最基本的修改密码的事情。当他们不想上网了了,但是身份证里还有钱呢,我们可以找网管(操作员或者管理员)去退卡退钱,也可以留着下回用。管理员就相当网管,他可以进行基本的信息查询增删改查,但是对于钱方面的还要是boss来操作,这里的boss就相当于管理员,管理员的权限是最高的,他就相当于图书馆里级别比较大的管理者。他可以通过结账了解一段时间内网吧的收入情况,以及上网人员上机的费用是怎么算的,他需要首先设定一个基本数据。他可以增删改查。
下面呢,我们先来看一张图来整体的了解一下机房收费系统的整体结构以及他与数据库之间的关系。
从这个图上我们看出来机房的整体架构以及每个窗体索要用到的数据表,所以之后的一切都是依照这个图来进行。
按照软件工程上说得,就是我们有了图以后呢,就是写文档,理清思路,所以下一步我们就一个窗体一个窗体来理思路。
思路分析
㈠登录窗体:判断是否有该用户、输入的密码是否正确,如果判断结果为真,则判断登录者的身份,根据登录者的身份,限制主窗体菜单栏中某菜单项的使用情况。
㈡一般用户操作:
(1)学生查看余额:首先判断输入的卡号是否为空,是否为数字,如果判断结果为真,查询student_info,判断是否有该用户,如果没有,提示注册,否则,把查询到的内容显示到文本框中。
(2)学生查看上机记录:首先判断输入的卡号是否为空,是否为数字,如果判断结果真,查询Line_Info,判断是否有该用户,如果没有,提示重新输入卡号,否则,把查询到的内容显示到MSFlexGrid控件中。导出Excel:判断是否有记录,如果没有进行提示,如果有,则把MSFlexGrid控件中的数据导入到excel中。
(3)学生充值记录查看:
①检测卡号和金钱的输入
1.1
首先输入卡号(检查输入卡号是否存在以及是否为数字。若不存在不为数字,提示并请重新输入,
从student_info中调去信息判断卡号是否存在,若该卡号存在,下一步)
1.2
输入充值金额,
从basicdata_info中调去数据
充值金额不能小于最小充值金额,
②单机确定按钮充值成功文本框中显示本次充值的信息,根据信息我们可以得知
2.1 在ReCharge_info中显示本次的充值记录,
2.2在student_info中更新金额总数
③文本框显示充值信息
(4)学生上机状态查看:
①查询:连接到学生上机统计信息查询的窗体
②显示全部:查询online_Info表,把里面的信息都显示出来
③上机管理:所有学生强制下机,选中学生强制下机
④退出:退出本窗体
(5)修改密码:
①判断旧密码与数据库密码是否相符,如果不符,请重新输入旧密码
②判断两次密码输入是否不一致,如果不一致,请重新输入新密码
③都符合以后,修改数据库,把新密码赋给数据库中的密码字段
④窗体加载的时候显示当前用户的名称。
㈢操作员操作:
(1)注册:
①查找:查询学生查看余额窗体,
②清空:把窗体上显示的内容都清空
③存盘:判断每一个输入框都不得为空,并且判断充值金额不能低于设置的最小金额,然后查询student_info,先判断是否有相同记录,如果有请重新输入,如果没有,根据所要添加的项往数据库中添加东西,注册成功。
④退出:退出本程序
(2)充值:
①首先判断卡号和充值金额不得为空,并且判断充值金额需要为数字
②然后查询student_info表,先判断该卡号是否存在并且为正在使用的卡号
③查询basicdata_info表,输入的金额和其表中的最小金额相比较,判断输入金额不得小于最小金额
④更新recharge表中的数据,更新student表中的最新余额,并且在显示框显示相关信息。
(3)退卡:
①首先判断卡号不得为空,并且判断卡号需要为数字
②查询student_info表,判断卡号是否存在,是否正在使用
③查询online_info表,判断卡号是否正在上机,上机的卡号不得退卡
④更新cancelcard_info表中的数据,更新student表中的金额为0,且状态为不使用
⑤在显示框显示退卡的相关信息。
(4)收取余额查询:
①首先判断终止日期要比起始日期晚,如果判断结果为真
②查询ReCharge_Info表,时间在起始日期和终止日期之间
③判断有无数据,如果有数据,则把数据在MSFlexGrid控件中循环显示出来
④导出Excel:判断是否有记录,如果没有进行提示,如果有,则把MSFlexGrid控件中的数据导入到excel中。
(5)金额返还信息查询
①此过程和收取余额查询过程一样,只是此过程查询的是cancelcard_info表。
(6)学生基本信息维护(组合查询)
①首先在窗体上按照要求加载控件,各个字段下的combo下拉框都是由其第一个复制粘贴得到的
②查询:
1)当组合关系下的combo3(0)里面的内容为空时,说明没有组合关系,则第二行和第三行的框都为锁定状态,不可用,且第一行的内容不得为空
3、当组合关系下的combo3(0)里面的内容不为空时且组合关系下的combo3(1)的内容为空时,第一行和第二行里的查询内容不得为空,第三行的内容锁定
4、当组合关系下combo3(1)的内容不为空时,第一行和第二行和第三行的内容都不得为空
5、查询的是student_Info表
③清空:所有的控件里的内容为空,且MSFlexGrid控件的内容为空,没有表格显示
④导出Excel:判断是否有记录,如果没有进行提示,如果有,则把MSFlexGrid控件中的数据导入到excel中。
(7)学生上机统计信息查询(组合查询)
和学生基本信息维护的代码思路一样,在这里查询的是line_Info表
(8)操作员工作记录(组合查询)
和学生基本信息维护的代码思路一样,在这里查询的是worklog_Info表
㈣ 管理员操作:
(1)结账:
1、通过选择不同的操作员的用户名,下面就会出现相应的操作员的真实姓名,并且出现其对应的工作记录
2、购卡:访问的是student_Info,显示购买卡学生的信息。当我们选中一个操作员后,购卡这个选项卡里面的显示控件,显示的就是这个操作员注册的并且没有结账的卡号的信息。
3、充值:访问的是Recharge_Info,将选中操作员进行的所有的未结账的充值记录调出来。
4、退卡:访问的是cancelcard_Info,将选中操作员进行的所有的未结账的退卡记录调出来
5、临时用户:将此操作员注册的、未退卡的、未结账的并且是临时用户的记录调出来
6、汇总:
①把购卡、充值、退卡、临时用户中的信息汇总,所以这里用到的表就比较多。有student_Info、Recharge_Info 、cancelcard_Info表
② 售卡张数=购卡选项卡的记录总数
③ 退卡张数=退卡选项卡的记录总数
④ 退卡金额=cancelcard_Info表中的金额进行累加
⑤ 总售卡数=售卡数-退卡数
⑥ 充值金额=Recharge_Info 表中的充值金额
⑦ 临时收费=student_info 表中临时用户的费用
⑧ 应收金额=(注册和)充值金额-退卡金额
⑨ 结账:将student_Info 、Recharge_Info、Cancelcard_Info 中的“未结账”改为“结账”,需要把结账信息添加到日结账单和周结账单中。
(2)删除和添加用户:
①添加:
1)判断各个文本框不得为空,并且判断两次输入的密码应该一致
2)查询User_Info表,判断用户名不得重复。
3)如果用户名不重复,则往User_Info表中添加数据
②删除:
1)判断MSFlexGrid控件的第一行不可删除,判断不可删除正在登陆的用户
2)查询user_info表显示出级别不同下所对应出的用户
3)删除的时候单击选择的是整行,并且所选定的单元要突出显示
③退出:退出本窗体
④更新:
1)当用户级别所对应的为空时,更新的是所有的级别的用户。
2)当用户级别有所对应的用户的时候,更新该级别的用户。
(3)基本数据设定
①修改:激活文本框
②取消:退出本窗体
③确定:
1)判断各个文本框输入的内容不得为空,并且判断应为数字
2)查询basicdata数据表,判断数据库中是否有内容,如果没有内容则往数据库中添加一条信息
3)如果有内容,则修改数据库中的则一条内容,即仍是把文本框的内容赋给数据库对应的项
4)在窗体结束之前把各个文本框变为锁定状态
④窗体的加载:各个文本框为锁定状态
⑤窗体的活动:
1)查询BasicData_info数据表,如果数据表中没有内容则往数据库中加一条基本的数据
2)如果数据表中有内容,则把该条数据的内容显示出来
(4)正在值班教师
①查询worklog_Info表,把查询到的内容显示到MSFlexGrid控件中
(5)日结账单
①首先自己制作报表
②在窗体加载处,实例化报表,添加报表所在的位置,报表连接数据库
③查询checkday_info表,查看报表,显示报表
④报表的打印预览,报表的打印
⑤报表的更新
(6)周结账单
①周结账单表是可以选择起始日期和终止日期来查看最近的消费情况。
②周结账单表是一张空的表,在需要的时候才添加数据,不需要的时候就会删除整个表中的数据。
③由于是一张空表,所以我们要添加记录
④我们要汇总每一天的总的消费、总退卡钱数、总充值钱数。
代码部分
好了,思路清楚了,我们就要开始写代码,机房的代码我们把他们分成三个部分简单部分,
中等部分,以及困难部分,就像打怪闯关一样,一开始先是敲简单部分,这部分我们模仿着之前学生的
代码就可以,一般的简单的查询窗体,就属于简单窗体,中等的呢就需要自己去查一些东西了,有些代码是固定的比较使用的
不如说导出Excel,报表等得,最后困难部分就是需要我们根据逻辑去慢慢尝试的代码,比如组合查询,周结账,日结账等得代码。
代码的总体结构都差不多,好多窗体类型一样,还有一点就是一定要记住其中的重点代码,也就是核心代码。这是一个窗体的关键。
结言
经过,机房收费系统的学习,我们相当于独自完成了一个完整的应用系统,是相当厉害的事,我们对软件的设计流程有了一个
相对完整的认识,知道怎么去做了,那以后我们遇到类似的问题我们自己就可以去做了。