机房收费系统——再回首「建议收藏」

机房收费系统——再回首「建议收藏」机房收费系统——再回首

大家好,又见面了,我是你们的朋友全栈君。

机房收费系统陆陆续续都要结束了,回顾自己敲机房的经历,一路上真的收获了不少。


技术篇

       在实现功能的时候,有的东西以前接触的不是很多,像数据导出到Excel,组合查询,做报表等等,不过我们还是通过自己的思考和网络上的知识做到了。下面就具体分享一些具体的小细节

1.下手之前多一份思考

      在调用数据库的时候,我们大多用的是select语句,除了要查询的内容外,更新,删除添加都也是先用select语句,然后再用mrc.AddNew , mrc.Delete , mrc.Update等,在看数据库视频的时候,老师很详细的讲过每一种语句的使用方法,而且在模块里也是这么写的

 If InStr(“INSERT,DELETE,UPDATE”, UCase$(sTokens(0))) Then
        cnn.Execute SQL
        MsgString = sTokens(0) & “query successful”
    Else
        Set rst = New ADODB.Recordset
        rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
        Set ExecuteSQL = rst
        MsgString = “查询到” & rst.RecordCount & “条记录”
    End If

在代码中也写到了关于Insert,delete的内容,所以我们在遇到一些能使用update,delete 或是 insert 语句的时候,也可以试着直接使用一些这个语句。

比如说在添加和删除用户的窗体中,想要删除某一个用户,就可以这么写

    txtSQL = “delect User_Info where “
    Call ExecuteSQL(txtSQL, msgText)

添加一个新用户时

   txtSQL = “insert into User_Info values(‘” & txtUser.Text & “‘,'” & txtPWD.Text & “‘,'” & comboUserLevel.Text & “‘,'” & txtName.Text &  _                          “‘,'” & Head &  “‘)”
    Call ExecuteSQL(txtSQL, msgText)

更新某个用户信息

    txtSQL = “update User_Info set UserID = ‘ “

   Call Executesql(txtSQL, msgText)

这样就省去了很多代码,而且节省了很多时间,还避免了插入的数据跟数据库中的字段不对应的错误。

2.对功能不断完善

以注册用户信息为例,

        首先注册卡号为 “1011”的用户,用户信息为张三的个人信息,用了一段时间,张三退卡了,那么1011这个卡号还可以再次注册,而且用户信息为李四的信息,这样的情况可以吗?

        这个问题说明我们的程序还不够完善,所以可以多加一些限定条件,比如说

<pre name="code" class="vb"><span style="font-size:14px;">    txtSQL = "select * from student_Info where cardno= '" & Trim(txtCardno.Text) & "'"    '查询卡号
    Set mrc = ExecuteSQL(txtSQL, msgText)
    If mrc.EOF = False Then
        If Trim(mrc.Fields(10)) = Trim("不使用") Then                    ’判断是否已经退卡
            A = MsgBox("此卡已注销,是否要激活?", vbYesNo + vbQuestion, "提示")            '如果已退卡,询问是否要激活     
            If A = vbYes Then
                txtSQL = "update student_Info set status= '" & Trim("使用") & "' where cardno = '" & txtCardno.Text & "'"
                Call ExecuteSQL(txtSQL, msgText)
                Exit Sub
            End If
        End If</span>
<span style="font-size:14px;">    End If</span>



通过以上代码也可以看出,在这中条件下,卡号和用户是一对一的关系。当然还有其他的处理方法,这只是其中一种,我觉得只要合理就可以。

3.多次重复的代码该怎么办

        面向对象的一个好处就是封装好的对象可以服用,我们在敲代码的时候,不妨也可以这么想,如果一段代码总是重复实现,是不是可以写成一个公共的函数来调用呢?

        比如说想要清空注册窗体中的内容,是直接就写  text1.Text = ” ”  呢,还是有其他更好的办法。这是在贾文静同学的博客中看到的一种办法

<span style="font-size:14px;">    For Each ctrl In Me.Controls
        If TypeOf ctrl Is TextBox Then
            ctrl.Text = ""
        End If
    Next</span>


这里用了一个循环语句,就做到了,而且还避免了遗漏某些文本框的可能。

还有就是在优化的时候,比如说注册用户时班级填错了

首先是txtClass. SetFocus,

然后是txtClass.SelStart = 0
            txtClass.SelLength = Len(txtCardno.Text)

其中每一个信息都有可能填错,所以也可以把这几行代码拿出来单独定义为一个函数再调用。


程序中还有很多细节值得我们去思考,去优化,我们可以做的更好。


经验篇

1.just  to do it

        记得刚开始敲机房的时候,就一个登陆窗体就做了好几天,代码检查了一遍又一遍,就是登陆不了,再加上这是第一次自己敲代码,很受挫,就觉得自己做不下去了,就因为这个还跟师父聊了一晚上,于是又有不得不再继续进行,这不自己也做出来了吗!所以有时候不能因为一点点困难就想到要放弃,没有什么事是过不去的,世上无难事,只要肯登攀!

2.学习生活化

        一开始接触机房,我们肯定对这个系统不是很了解,尤其是像一般用户,操作员,管理员的职能范围还不同,所以我们可以静下来想想,生活中的很多地方都跟我们这个很相似,就像咱们图书馆的上机系统。

        咱们去图书馆上网,在屋里的老师就相当于一般用户,可以执行一些简单的查询功能。当我们的卡里余额不足时,就得去新图书馆找专门的老师充值,这个老师就相当于我们的操作员,可以注册,对用户充值,并执行一些相应的查询。再高一级的负责人就相当于管理员,可以添加,删除工作人员,像一般用户,操作员,管理员等,并对相应的数据进行结账,日结账单反映了一天的收益情况,周结账单的记录就反映了一周的收益情况,管理者可以根据这一周的情况进行分析,并对接下来的工作作出指导。

        我们也可以把这个系统和网吧的收费联系对比,也可以是其他的,不管怎么理解,合理就好。


下面是对机房整体的回顾,还有每个窗体中用到的数据库中的表,有的窗体中一个功能就可能用到三四张表,所以要好好分析分析,一个都不能落下。

机房收费系统——再回首「建议收藏」

机房收费系统——再回首「建议收藏」

里面的信息可能还有不完善的地方,还请大家多多指教。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105788.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 开关三极管的导通和截止条件「建议收藏」

    开关三极管的导通和截止条件「建议收藏」转自:https://blog.csdn.net/ruanjianruanjianruan/article/details/38523973三极管在我们数字电路和模拟电路中都有大量的应用,在我们开发板上也用了多个三极管。在我们板子上的LED小灯部分,就有这个三极管的应用了,图3-5的LED电路中的Q16就是一个PNP型的三极管。图3-5 LED电路三极管的初步认识三极管是一…

    2022年6月16日
    135
  • 对比学习、自监督学习的理解「建议收藏」

    对比学习、自监督学习的理解「建议收藏」自监督学习定义:自监督学习主要是利用辅助任务从大规模的无监督数据中挖掘自身的监督信息来提高学习表征的质量,通过这种构造监督信息对网络进行训练,从而可以学习到对下游任务具有价值的表征。辅助任务(pretext):可以认为是一种为达到特定训练任务而设计的间接任务。pretext任务的好处是为了简化原任务的求解,在深度学习中就是避免人工标记样本,实现无监督的语义提取。Pretext任务可以进一步理解为:对目标任务有帮助的辅助任务。主要pretexttask包括:图像旋转、图像着色、图像修复。下游任务:图

    2022年9月14日
    0
  • decltype 使用

    decltype 使用功能decltype可以将给定的表达式或变量的类型推导出来,包含引用和指针。一般用于复杂表达式作为返回值的类型推导。可以用于补足c++11的auto缺陷.编译阶段的事情,不会任何执行,表达式也不会执行。类型规则规则一:声明类型,类型包含引用就有引用,没有引用也不会自行添加。规则二:返回值则根据返回值类型确定最终类型。规则三:表达式根据默认和重载得到的最终类型。不建议特别复杂的表达式。声明类型分析案例一intmain()..

    2022年9月9日
    0
  • clientheight什么意思_汇编中offset是什么意思

    clientheight什么意思_汇编中offset是什么意思许多文章已经介绍了clientHeight和offsetHeight的区别,就是clientHeight的值不包括scrollbar的高度,而offsetHeight的值包括了scrollbar的高度。然而,clientHeight和offsetHeight的值到底由什么组成的呢?如何计算这两个数的值?1.clientHeight和offsetHeight的值由什么决定?假如我们…

    2022年9月10日
    0
  • js 全局变量优点和缺点

    js 全局变量优点和缺点全局变量的优点:可以减少变量的个数,减少由于实际参数和形式参数的数据传递带来的时间消耗。全局变量的缺点:(1)全局变量保存在静态存贮区,程序开始运行时为其分配内存,程序结束释放该内存。与局部变量的动态分配、动态释放相比,生存期比较长,因此过多的全局变量会占用较多的内存单元。(2)全局变量破坏了函数的封装性能。函数象一个黑匣子,一般是通过函数参数和返回值进行输入输出,函数内部实现相对独立

    2022年6月9日
    63
  • 机器学习之决策树原理和sklearn实践

    1.场景描述时间:早上八点,地点:婚介所‘闺女,我有给你找了个合适的对象,今天要不要见一面?’‘多大?’‘26岁’‘长的帅吗?’‘还可以,不算太帅’‘工资高吗?’‘略高于平均水平’

    2021年12月30日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号