系统细节(答案是丰富多彩滴)














仅是细节记录和积累!


系统“接口”已给出:设计模式,重构才会发现设计模式的好处,这次主要运用了工厂模式:http://blog.csdn.net/xhf55555/article/details/7633505

DataGridView清空数据


在用winform程序中使用了DataGridView,在清除DataGridview的数据时遇到个问题。在上次用DataGridView的时候,是这样清楚数据的。

NUMBER ONE

把数据库中相应的数据删除,再重新绑定数据。

NUMBER TWO

偶然间发现了DataGridview.Rows.Clear(),这样子想必会更会省时省力,事实上,系统报错,提示不能清楚此列表。查找后了解到了用数据源绑定的DataGridView是不能用DataGridview.Rows.Clear()来清除的。手动添加的是可以用clear()方法来清楚的,但是会把标题也删掉。

NUMBER THREE

dgvOnline.DataSource = vbNull
        dgvOnline.Refresh()
 这样可以清除,弊端是也会把列标题清除掉。

winForm小插曲.

winForm关闭窗体事件,在关闭主窗体时,我们需要给出提示,开始用的是form_Closed事件,并且直接是if判断,没有把FormClosingEventArgsCancel属性设置为True,导致在提示是否关闭窗体时,点击""按钮同样也会卸载窗体..应用程序类的关闭方法或是退出方法关闭窗体时会发生FormClosed事件.我们如果要防止窗体关闭,应该用FormClosing事件,并将传递给事件处理程序的CancelEventArgsCancel属性设置为true.

Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        '判断是否是退出,并写入到工作记录表中去。
        If MsgBox("确定是要退出吗?", vbYesNo) = MsgBoxResult.Yes Then
                      frmLogin.Dispose()
        Else
            e.Cancel = True
        End If
    End Sub
同理加载窗体时:

Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '等待资源的使用        Me.Cursor = Cursors.WaitCursor
        Try
            …        
            Catch ex As Exception
            MsgBox("登录失败!请联系管理员!")
        End Try
        Me.Cursor = Cursors.Default
  
    End Sub




所有的删除记录操作。

为了保持数据的完整性和一致性,所以我们对数据删除的操作一般不是真正的把数据库中的记录删除,只是把数据库中的某个证明它存在的字段设置为false。在机房收费系统中对于删除的操作,除了在下机的时候删除正在上机和正在值班的教师记录是真正的把数据库中的那条记录删除外,其余的都是把某一个是否使用的字段设置为false.

SQLHelp类。

详细请见:http://blog.csdn.net/xhf55555/article/details/7705192


记录集DataSet。

因为实体的返回不具有相似性,所以我们系统中用的是dataset来返回记录集. 但是这无疑会遇到很多的问题,如果想要把数据显示到界面的话,装在套子里的实体必然会暴露 .界面层知道了数据库的东西,这就相当于国家总理亲自的去解决每个公民的问题是一样的.  所以在返回dataset时,在D层中进行转化一下就好. 

还有就是实体中可以有方法,来返回该方法的DataSet。从界面中显示DataSet到我们把DataSet返回的方法放到dal层,再到我们在实体中写一个得到datase方法后在把dataset中的值复制给实体,再返回这个方法。



在调试过程中出现的错误。

“Resources”参数中指定了项“obj\x86\Debug\frmLogin.frmLogin.resources”多次。“Resources”参数不支持重复项。

在配置文件动态链接库Dal的dll添加错误

SQlDateTime溢出.



历史记录的添加.

 时间的前一秒是未来,时间的后一秒就是历史,历史是永远变不了的,就像冰心说过的一句话一样:发生了永远不会消失的是拥抱,而诺言注定会随风而逝.转回说到我们的教师工作记录和学生上机工作记录的添加上,无论是添加教师的历史记录还是要添加学生上机的历史记录,都有两种方法,一种是在上机的时候就写入到了上机历史记录中去,在开始登录的时候就写入到数据库中,在退出的时候根据下机日期和ID号来进行更新剩余的字段.       一种是在下机的时候从正在上机的表中取出字段赋值给上机的历史记录中.这两种方法,分别在这两次的重构中得到了证实,还是第二种方法相对来说比较的简捷,更加符合大自然的规律.



下机的逻辑重复.

一是正常下机,二是强制下机,三是选中的记录下机.这三个下机都要执行,查找正在上机的表,写入上机历史记录表,在更新学生卡号基本信息表中,所以我们可以抽出一个下机的方法,避免更多的重复.

当出现大量的重复的时候,我们要想到的是是否可以把重复的部分抽出来一个单独的模块.



报表的设计和使用.

非常详细见:http://blog.csdn.net/xhf55555/article/details/7285325


关于系统的打包部署详细见:http://blog.csdn.net/xhf55555/article/details/7702212

最终我们交给用户的是一个.exe的安装程序,并且可以在xp win7 server2003上运行等.




生活是丰富多彩的,所以我们的答案是丰富多彩的. 答案是丰富多彩的,才让我们的生活更加丰富多彩的!  所以给自己一份勇气和信心,让我们的生活变得色彩斑斓!




       

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值