处女座——菜鸟程序员的工程总结

来源:互联网 发布:网络客服是做什么的 编辑:程序博客网 时间:2024/06/05 11:01

       学生信息管理系统是学习编程以来的处女座,无论好与坏,它都是菜鸟成长道路上最璀璨的启明星。

       对于不懂什么是需求,没有熟练掌握编程规范的我们来说,学生信息管理系统是我们初步学习、认识数据库并实际运用的典型事例。虽然只是一个简单不过的例子,但它学习编程起着巨大的作用,不仅仅可以初步掌握、运用数据库,更重要的是提高对数据库学习的兴趣。有了基础和兴趣,你还怕学不会数据库吗?

       学生信息管理系统非常的简单,解决了VB与数据库,最主要的两大问题:

一、调用数据库

二、对数据的增、删、改、查

       数据库的调用(用于调用经常使用,在模块中定义一个函数):

Public Function ExecuteSQL(ByVal strSQL As String, MsgString As String) As ADODB.Recordset        '定义ADO对象     Dim Cnn  As ADODB.ConnectionDim Rst As ADODB.RecordsetDim sTokens() As String    '错误处理On Error GoTo Error_Handle    '拆分sql语句付给数组sTokens = Split(strSQL)'打开连接Set Cnn = New ADODB.ConnectionCnn.Open ConnectString       '如果插入,删除,更新语句,则不返回结果。如果是查询语句则返回结果集    If InStr("insert,delect,update", UCase$(sTokens(0))) ThenCnn.Execute strSQL        MsgString = sTokens(0) & "query successful"   ElseSet Rst = New ADODB.RecordsetRst.Open Trim$(strSQL), Cnn, adOpenKeyset, adLockOptimistic        Set ExecuteSQL = Rst        MsgString = "查询到" & Rst.RecordCount & "条记录"   End IfExit Function    '错误处理,如果出现错误,记录错误信息,然后退出Error_Handle:'卸载ADO对象Set Rst = NothingSet Cnn = NothingEnd Function

        我们以添加学籍、删除学籍信息、修改学籍和查询学籍为例,为大家讲解对数据的增、删、改、查。

在增、删、改、查学籍信息时,对于重复的部分,定义一个过程,方便调用。

Public Sub ViewData() '赋值过程     TxtStuId.Text = StudentInfo.Fields(0)    TxtStuname.Text = StudentInfo.Fields(1)    CmbSex.Text = Trim(StudentInfo.Fields(2))    DTPBirthday.Value = Format(StudentInfo.Fields(3), "yyyy-mm-dd")    CmbClassNo.Text = StudentInfo.Fields(4)    TxtTel.Text = StudentInfo.Fields(5)    DTPEntrancedate.Value = Format(StudentInfo.Fields(6), "yyyy-mm-dd")    TxtAddress.Text = StudentInfo.Fields(7)    TxtComment.Text = StudentInfo.Fields(8)  End Sub

             添加学籍信息:

Dim objRs As ADODB.Recordset    Dim strSQL As String    Dim Msgtxt As String        '调用execute函数执行sql语句,返回学生信息集    strSQL = "select * from student_info where student_Id='" & Trim(TxtStuId.Text) & "'"    Set objRs = ExecuteSQL(strSQL, Msgtxt)    '判断学号是否重复,重复则重新输入,不重复进入下一步判断    If objRs.EOF = False Then      MsgBox "学号重复,请重新输入!", vbOKOnly + vbExclamation, "警告"      objRs.Close      TxtStuId.SetFocus    Else      objRs.Close      '判断出生日期格式是否正确,正确则进行下一步判断       If Not IsDate(DTPBirthday.Value) Then          MsgBox "出生时间应输入日期格式(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"          DTPBirthday.SetFocus       Else          DTPBirthday = Format(DTPBirthday, "yyyy-mm-dd")          '判断入校日期格式是否正确,正确则开始向数据库学籍信息集添加信息           If Not IsDate(DTPExtrance.Value) Then            MsgBox " 入校时间格式应输入日期格式(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"            DTPExtrance.SetFocus          Else            DTPExtrance = Format(DTPExtrance, "yyyy-mm-dd")            '调用execute函数执行sql语句,返回学生信息结果集             strSQL = "select * from student_info"           Set objRs = ExecuteSQL(strSQL, Msgtxt)            objRs.AddNew                        With objRs                .Fields(0) = Trim(TxtStuId.Text)                .Fields(1) = Trim(TxtStuname.Text)                .Fields(2) = Trim(CmbSex.Text)                .Fields(3) = Trim(DTPBirthday.Value)                .Fields(4) = Trim(CmbClassNo.Text)                .Fields(5) = Trim(TxtTele.Text)                .Fields(6) = Trim(DTPExtrance.Value)                .Fields(7) = Trim(TxtAddress.Text)                .Fields(8) = Trim(TxtComment.Text)                .Update            End With            '提示成功信息              MsgBox "添加学籍信息成功!", vbOKOnly + vbExclamation, "警告"            objRs.Close            Unload Me                          End If       End If    End If  

             删除学籍信息:

Dim intMsgbox As Integer    vntBookmark = StudentInfo.Bookmark    intMsgbox = MsgBox("确定要删除当前记录", vbOKCancel, "删除记录")    If intMsgbox = vbOK ThenStudentInfo.MoveNext        '根据要删除记录的位置不同,选择不同的删除方式   '如果要删除的记录是记录集的最后一条记录   If StudentInfo.EOF Then   '记录已经是最后一条记录,需要移到第一条记录          StudentInfo.MoveFirst     '记录当前的书签           vntBookmark = StudentInfo.Bookmark           '返回上一条记录  StudentInfo.MoveLast          '删除记录   StudentInfo.Delete   '返回刚才书签的记录位置  StudentInfo.Bookmark = vntBookmark  Call ViewData            Else'记录当前指针的位置         vntBookmark = StudentInfo.Bookmark              StudentInfo.MovePrevious         StudentInfo.Delete         StudentInfo.Bookmark = vntBookmark         Call ViewData                    End If        StudentInfo.Bookmark = vntBookmark        Call ViewDataEnd If

             修改学籍信息:

Dim strSQL As String          Dim Msgtxt As StringDim TempRs As ADODB.Recordset'删除当前的记录StudentInfo.Delete'取得记录集strSQL = "select * from student_info where student_Id = '" & Trim(TxtStuId.Text) & "'"Set TempRs = ExecuteSQL(strSQL, Msgtxt)'判断学号是否重复,若重复,则提示信息,不重复则进一步验证If TempRs.EOF = False ThenMsgBox "学号重复,请重新输入!", vbOKOnly + vbExclamation, "警告"         TempRs.Close         Set TempRs = Nothing         TxtStuId.SetFocusElse         '关闭临时记录,并释放           TempRs.Close                  Set TempRs = Nothing         '判断日期格式是否正确,不正确,则提示信息,正确则进一步验证           If Not IsDate(DTPBirthday.Value) Then         MsgBox "出生日期的格式应输入(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"            DTPBirthday.SetFocus       Else            DTPBirthday.Value = Format(DTPBirthday.Value, "yyyy - mm - dd")                        '判断入校日期格式是否正确            If Not IsDate(DTPEntrancedate.Value) Then               MsgBox "入校日期格式应输入(yyyy-mm-dd)!", vbOKOnly + vbExclamation, "警告"                DTPEntrancedate.SetFocus            Else                DTPEntrancedate.Value = Format(DTPEntrancedate.Value, "yyyy-mm-dd")                '向记录中添加记录                StudentInfo.AddNew                With StudentInfo                .Fields(0) = Trim(TxtStuId.Text)                .Fields(1) = Trim(TxtStuname.Text)                .Fields(2) = Trim(CmbSex.Text)                .Fields(3) = Trim(DTPBirthday.Value)                .Fields(4) = Trim(CmbClassNo.Text)                .Fields(5) = Trim(TxtTel.Text)                .Fields(6) = Trim(DTPEntrancedate.Value)                .Fields(7) = Trim(TxtAddress.Text)                .Fields(8) = Trim(TxtComment.Text)                .Update                End With                '记录添加成功                MsgBox "恭喜您,修改学籍成功!", vbOKOnly + vbExclamation, "警告"                                StudentInfo.Bookmark = vntBookmark                Call  ViewData                                            BlnClean = True             End If        End IfEnd If

          查询学籍信息:

'显示第一条记录Private Sub CmdFirst_Click()StudentInfo.MoveFirst    Call ViewData    End Sub'显示最后一条记录Private Sub CmdLast_Click()    StudentInfo.MoveLast    Call ViewDataEnd Sub'显示下一条记录Private Sub CmdNext_Click()    StudentInfo.MoveNext    If StudentInfo.EOF Then        StudentInfo.MoveFirst   End If    Call ViewDataEnd Sub'显示前一条记录Private Sub CmdPrevious_Click()    StudentInfo.MovePrevious    If StudentInfo.BOF Then        StudentInfo.MoveLast    End If    Call ViewDataEnd Sub

       虽然这仅是对数据库最基础、最基本的学习和运用,对于大牛们来讲,代码太简单了,不值得一提。我反而觉得是菜鸟程序员成长道路上的敲门砖。

        就当是小试牛刀,为编程打下良好的基础。有句话说的好:良好的基础是成功的一半。“万丈高楼平地起”说的是从基础做起,从零开始,事实上是包含地面之下的基础的,决非只是从地面开始。