前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >处女座——菜鸟程序员的工程总结

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

作者头像
程序猿小亮
发布2021-01-29 11:20:55
5570
发布2021-01-29 11:20:55
举报
文章被收录于专栏:程序猿小亮的专栏

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

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

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

一、调用数据库

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

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

代码语言:javascript
复制
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

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

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

代码语言:javascript
复制
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

添加学籍信息:

代码语言:javascript
复制
	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  

删除学籍信息:

代码语言:javascript
复制
	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

修改学籍信息:

代码语言:javascript
复制
	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

查询学籍信息:

代码语言:javascript
复制
'显示第一条记录
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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012/08/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档