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

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

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

  • 相关阅读:
    Nginx负载均衡+代理+ssl+压力测试
    Nginx配置文件详解
    HDU ACM 1690 Bus System (SPFA)
    HDU ACM 1224 Free DIY Tour (SPFA)
    HDU ACM 1869 六度分离(Floyd)
    HDU ACM 2066 一个人的旅行
    HDU ACM 3790 最短路径问题
    HDU ACM 1879 继续畅通工程
    HDU ACM 1856 More is better(并查集)
    HDU ACM 1325 / POJ 1308 Is It A Tree?
  • 原文地址:https://www.cnblogs.com/ainima/p/6331078.html
Copyright © 2011-2022 走看看