您的位置:首页 > 编程语言

学生总结(四)----代码的优化与理解

2017-09-06 16:41 183 查看
对于学生的优化,我的总结还是针对于对代码的优化与理解多一些,界面的优化少了点,接下来请看这些优化吧!

1、在修改密码这一窗体上加上输入原密码,这样就不会谁都能任意的修改密码了!



下来请看代码

txtSQL = "select * from user_Info where user_id='" & Trim(frmlogin.username) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If Trim(Text1.Text) <> Trim(mrc.Fields(1)) Then
MsgBox "密码输入不正确!", vbOKOnly + vbExclamation, "警告"
Text1.Text = ""
Text1.SetFocus


代码解释:frmlogin是你的登录窗体,username为你的登录窗体的用户名!通过了public 定义! 需要将你调用的窗体名写上!

2、聚焦要按着顺序执行

比如这张照片,如果你想按着你的tab键一直按着顺序的方式在各个文本框聚焦,是不是这样一想,就很爽。这时最简单的办法就是建立控件数组,很简单的!比如TXTsid(0) TXTname(1) ……按照这样的方式就可以了!



3、控制文本框内容的设置

a、只能输入汉字,回车和退格 , 如果不在这个范围内就不能输入!

If KeyAscii >= -20319 And KeyAscii <= -3652 Or KeyAscii = 8 Or KeyAscii = 13 Then
Else
KeyAscii = 0
End If


b、限制输入内容只能是数字

If KeyAscii = 8 And KeyAscii >= 48 Or KeyAscii <= 57 Then
Else
KeyAscii = 0
End If


4、添加成绩信息之重要逻辑关系

我们的身份证是从大小的,比如 **省 **县** 市**镇**村**组**门牌号,都是按着范围的大小排列的,因此我们写代码也要这样严谨,这个窗体有考试编号,选择班号,还有选择学号,原来没有选择年级,我又加了一个选择年级,如图所示!



所以这个原则应该是这样,我只是简单的举个例子啊,先是考试编号:2000期中,然后下一个窗口激活,选择年级2,然后下一个窗口激活再选择班号1,然后激活课程窗口,最后输入姓名!这样在面对大量的数据,系统也会很快的查询出信息,不会卡顿!

但是这里有一个特别神奇的地方,就是你的sql里只有一个表中有exam_no,别的表没有它,意思就是它连接不了与年级相关的表,所以要是想按照顺序的话,就得在那个有关年级的表建立exam_no的属性。这里呢,小编没有完成这项任务,只是将思想分享给大家

‘添加学号在comboSID_DropDown过程中,且在选择考试类型,班号之后 。dropdown为下拉框的属性

Private Sub comboSID_DropDown()
Dim mrc As ADODB.Recordset
Dim txtSQL As String
Dim MsgText As String
If Trim(cboExamType.Text) = "" Then
MsgBox "请先选择考试类型!", vbExclamation + vbOKOnly, "提示"
cboExamType.SetFocus
Exit Sub
ElseIf Trim(cboClassNumber.Text) = "" Then
MsgBox "请先选择班号!", vbExclamation + vbOKOnly, "提示"
cboClassNumber.SetFocus
Exit Sub
Else
strSQL = "select * from student_Info where class_No='" & cboClassNumber.Text & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF Then
MsgBox "该班没有学号,请先添加学号!", vbInformation + vbOKOnly, "提示"
frmAddResult.Hide
frmAddsinfo.Show
End If
comboSID.Clear
While Not (mrc.EOF)
comboSID.AddItem mrc!student_ID
mrc.MoveNext
Wend
mrc.Close
End If
End Sub


‘添加课程在cboCourse_DropDown过程中,在考试类型,班号及学号之后

Private Sub cboCourse_DropDown()
Dim mrc As ADODB.Recordset
Dim txtSQL As String
Dim MsgText As String
If Trim(cboExamType.Text) = "" Then
MsgBox "请先选择考试类型!", vbExclamation + vbOKOnly, "提示"
cboExamType.SetFocus
Exit Sub
ElseIf Trim(cboClassNumber.Text) = "" Then
MsgBox "请先选择班号!", vbExclamation + vbOKOnly, "提示"
cboClassNumber.SetFocus
Exit Sub
ElseIf Trim(cboNumber.Text) = "" Then
MsgBox "请先选择学号!", vbExclamation + vbOKOnly, "提示"
comboSID.SetFocus
Exit Sub
Else
strSQL = "select * from class_Info where class_No='" & cboClassNumber.Text & "'"
Set mrs = ExecuteSQL(txtSQL, MsgText)
While Not (mrc.EOF)
strGrade = mrc!Grade
mrc.MoveNext
Wend
mrc.Close
strSQL = "select * from gradecourse_Info where grade='" & strGrade & "'"
Set mrc = ExecuteSQL(strSQL, MsgText)
If mrc.EOF Then
MsgBox "概年级没有课程,请先添加课程!", vbInformation + vbOKOnly, "提示"
frmAddResult.Hide
frmSetCourseinfo.Show
End If
cboCourse.Clear
While Not (mrc.EOF)
cboCourse.AddItem mrc!course_Name
mrc.MoveNext
Wend
mrc.Close
End If


5、设置年级课程这个窗体,我还是有好多的心得的,下来分享给大家!



a、首先这个窗体有一个思想,就是说所有课程里不能重复输入,已选择课程也不能重复输入,

这个窗体最值得分享的就是for循环,这段代码的思想是我和召子探讨到了半夜想到的,很实用!就是确定已选择课程那栏不能有重复的课程,请看代码,我给大家解释!

Private Sub cmdAdd_Click()
For i = 0 To listSelectcourse.ListCount - 1
If listSelectcourse.List(i) = listAllcourse.List(listAllcourse.ListIndex) Then
Exit Sub
End If
Next
listSelectcourse.AddItem listAllcourse.List(listAllcourse.ListIndex)
end sub


listSelectcourse.ListCount代表的是已选择课程的所有课程数

for循环:第一次循环的时候是0~-1,这就是说明没有循环,意思就是已选择课程的数目为0,直接跳出循环,此时新加了课程,加在了已选课程那一栏!计算机都是从0开始的,所以已选择课程那栏如果有两个科目,那么对应的索引值不是1,2而是0,1 所以就有了listSelectcourse.ListCount - 1

b、如图所示如果课程里显示了蓝条,那么已选择课程就不能选择蓝条,同理,如果已选择课程有蓝条,那么所有课程就不能是蓝条!如下面两段代码

保证全部课程选中时,已选课程不能同时选中

Private Sub listallcourse_Click()
If listAllcourse.ListIndex <> -1 Then
listSelectcourse.ListIndex = -1
End If
End Sub


保证已选课程选中时,全部课程不能被同时选中

Private Sub ListSelectcourse_Click()
If listSelectcourse.ListIndex <> -1 Then
listAllcourse.ListIndex = -1
End If
End Sub


6、使窗体不能改变大小,显示在屏幕中间

使窗体不能随便更改大小:BorderStyle改为1-FixedSingle

窗体居中显示:

With Me
.BorderStyle = 0
.Left = FrmMain.ScaleWidth / 2 - .Width / 2
.Top = FrmMain.ScaleHeight / 2 - .Height / 2
End With
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: