学生信息管理系统总结

来源:互联网 发布:韦德2006年总决赛数据 编辑:程序博客网 时间:2024/04/28 00:40
         从调试到自己敲完它,到最后的解决问题,已经有半个月了,没有想到自己还是这么慢,最后要好好总结一下……
         一、  学生信息管理系统的框架:            


                  充分体现了数据库增删改查的特点和功能。

          二、忘记以前学过的VB控件知识:
      1、窗体背景全屏显示
          学生信息管理系统里的主窗体是MDI父窗体,怎样在MDI窗体上加上背景图片呢?
          第一种方法是加Picture控件,但是picture控件在MDI窗体上的属性是不能设置的,只有在picture上加上Image控件,可以设置picture属性, 并做如下设置:

             Picture1的属性:

                  1.Align=top   2.Appearance=flat  3.BordeStyle=None   4.TabStop=false

            Image1的属性: 1.Stretch=true

               在MDI窗体的resize事件中添加如下代码:

                   Private Sub MDIForm_Resize()

                        Me.Picture1.Height = Me.Height

                   End Sub

                在Picture1控件的resize事件中添加如下代码:

                   Private Sub Picture1_Resize()

                       Me.Image1.Move 0, 0, Me.Picture1.Width, Me.Picture1.Height

                  End Sub    
         但是这种方法会覆盖子窗体,子窗体处于picturebox和image控件之间当时设置好了突然不见了的子窗体就是这么回事,当然还有一种方法就是直接更改图片的尺寸使它符合MDI窗体的大小。
        注意:在MDI主窗体中不可以放置控件,除非你在显示窗体时使用的是:Show方法而不是ShowDialog方法,如果是在MDI窗体中添加背景图,建议可以将设置窗体的背景图,而不是添加PictureBox控件。

         2、resize事件是窗口大小改变时发生的事件,可以在窗口启动、最大化、最小化、窗口大小改变(如拖拉改变窗口大小、move语句改变窗口大小、改变width或height属性以改变窗口大小)时发生。
3、ListBox控件
在设置课程窗体中,遇到的问题是点击一遍设置课程在ListAllcourse中就显示一遍课程信息,以至于课程重复。
解决方法:listAllcourse.Clear加在设置课程按钮单机事件里,每执行一次设置课程就清空上一次的所有课程列表;另一种方法添加循环语句,把重复列表项删除:
            For i = 0 To listAllcourse.ListCount - 1
                            For j = i + 1 To listAllcourse.ListCount
                                   If listAllcourse.List(j) = listAllcourse.List(i) Then
                                           listAllcourse.RemoveItem j     

                                   End If   
                           Next j
                      Next i

   三、数据库和SQL Server的问题
    1、MSFlexGrid控件
          作用:该控件以表格形式显示二维字符数组中每个单元的数据。常用于处理复杂的二维数据表的问题。 
       简单用法  : MSFlexGrid1.Rows=5  规定表格的总行数为5 
                            MSFlexGrid1.Cols=2  规定表格的总列数为2
                            MSFlexGrid1.TextMatrix3,0=dhkg”某一单元格的文本内容 
 MSFlexGrid1.AddItem “”,2  在第二行处插入行 ;MSFlexGrid1.RemoveItem 3 删除行
              属性:CellAlignment  设置一个值定义当前单元的水平和垂直对齐方式
      在五个实例里面用到过,显示查询结果时,怎样防止MSFlexGrid出现空白行?代码如下:
        With myflexgrid
                        .Rows = 2
                        .CellAlignment = 4
                        .TextMatrix(1, 0) = "考试编号"
                        .TextMatrix(1, 1) = "学号"
                        .TextMatrix(1, 2) = "姓名"
                        .TextMatrix(1, 3) = "班号"
                        .TextMatrix(1, 4) = "课程名称"
                        .TextMatrix(1, 5) = "分数"
        
                  Do While Not mrc.EOF
                        .Rows = .Rows + 1
                        .CellAlignment = 4
                        .TextMatrix(.Rows - 1, 0) = mrc.Fields(0)
                        .TextMatrix(.Rows - 1, 1) = mrc.Fields(1)
                        .TextMatrix(.Rows - 1, 2) = mrc.Fields(2)
                        .TextMatrix(.Rows - 1, 3) = mrc.Fields(3)
                        .TextMatrix(.Rows - 1, 4) = mrc.Fields(4)
                        .TextMatrix(.Rows - 1, 5) = mrc.Fields(5)
                     mrc.MoveNext
                  Loop
               End With

    2、BOF 和EOF

      如果当前记录位于第一个记录之前,BOF 属性将返回 True  ,如果当前记录为第一个记录或位于其后则将返回 False 。

      如果当前记录位于 Recordset 对象的最后一个记录之后 EOF 属性将返回 True,而当前记录为 Recordset 对象的最后一个记录或位于其前,则将返回 False

    如果 BOF 或 EOF 属性为 True,则没有当前记录

        3SQL语句

                 这是出现错误最多的地方,一个小小的符号或是空格都有可能导致出错

            例如: txtSQL = "select * from gradecourse_Info where grade=' " & comboGrade.Text & " ' "

             SELECT  语句用于检索查询数据库中的数据,SELECT……  from   ……WHERE……

        4、两种遍历记录方法

                   If Not mrc.EOF Then          '遍历记录方法1

                             For i = 1 To mrc.RecordCount

                                  listSelectcourse.AddItem mrc.Fields(1)

                                  mrc.MoveNext

                              Next i

                         End If

                      While (mrc.EOF = False)         '遍历记录方法2

                           listAllcourse.AddItem mrc.Fields(1)

                           mrc.MoveNext

                  Wend

          5GetUserName函数

            作用:取得当前用户的名字,返回值Long,true表示成功,否则为零。加强系统安全性,不同账号登录。对账号记录,不同的账号有不同的权限。

          6、ExecuteSQL(sqlQuery;fieldSeparator;rowSeparator……)

                作用:直接执行SQL语句获取数据表中的数据

                sqlQuery:是SQL查询语句

                fieldSeparator:字段分隔符,如果返回的结果包含多个字段,则使用这个参数指定一个字段分隔符

          7、dd(4)布尔变量数组的应用

           清楚的标记了查询方式,是选择一种方式查询,还是多种方式同时选择,都可以很清楚的标记 。

           当转换其他的数值类型为boolean值时,0会转成False,而其他的变成True。当转换boolean值为其他的数据类型时,False成为0,而True成为-1.