zoukankan      html  css  js  c++  java
  • 处女座——菜鸟程序员的工程总结

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

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

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

    一、调用数据库

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

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

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

                 修改学籍信息:

    	
    	Dim strSQL As String	    
          Dim Msgtxt As String
    	Dim 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 Then
    		MsgBox "学号重复,请重新输入!", vbOKOnly + vbExclamation, "警告"
    	         TempRs.Close
    	         Set TempRs = Nothing
    	         TxtStuId.SetFocus
    	Else
    	         '关闭临时记录,并释放
    	           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 If
    	End If

              查询学籍信息:

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

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

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

  • 相关阅读:
    《构建之法》读后感 二
    求数组最大子数组的和(循环数组)
    求数组最大子数组的和
    《构造之法》阅读笔记一
    2019春季学期学习进度报告(一)
    软件工程开课博客
    个人NABCD
    《构建之法》阅读笔记02
    大二下学期学习进度(六)
    《构建之法》阅读笔记01
  • 原文地址:https://www.cnblogs.com/ainima/p/6331078.html
Copyright © 2011-2022 走看看