www.pudn.com > cjg2.rar > frmStudent.frm


VERSION 5.00 
Begin VB.Form Student  
   BorderStyle     =   1  'Fixed Single 
   Caption         =   "学生信息管理" 
   ClientHeight    =   2820 
   ClientLeft      =   45 
   ClientTop       =   330 
   ClientWidth     =   7335 
   LinkTopic       =   "Form1" 
   MaxButton       =   0   'False 
   MDIChild        =   -1  'True 
   MinButton       =   0   'False 
   ScaleHeight     =   2820 
   ScaleWidth      =   7335 
   Begin VB.ComboBox cmbDept  
      Height          =   300 
      Left            =   4515 
      Style           =   2  'Dropdown List 
      TabIndex        =   5 
      Top             =   765 
      Width           =   2175 
   End 
   Begin VB.ComboBox cmbClass  
      Height          =   300 
      Left            =   4502 
      Style           =   2  'Dropdown List 
      TabIndex        =   4 
      Top             =   405 
      Width           =   2175 
   End 
   Begin VB.ComboBox cmbSex  
      Height          =   300 
      ItemData        =   "frmStudent.frx":0000 
      Left            =   1228 
      List            =   "frmStudent.frx":0002 
      Style           =   2  'Dropdown List 
      TabIndex        =   3 
      Top             =   1485 
      Width           =   2175 
   End 
   Begin VB.TextBox txtNum  
      Height          =   270 
      Left            =   1228 
      MaxLength       =   8 
      TabIndex        =   1 
      Top             =   780 
      Width           =   2175 
   End 
   Begin VB.TextBox txtCode  
      Height          =   270 
      Left            =   1228 
      MaxLength       =   8 
      TabIndex        =   2 
      Top             =   1140 
      Width           =   2175 
   End 
   Begin VB.TextBox txtRoom  
      Height          =   270 
      Left            =   4502 
      MaxLength       =   10 
      TabIndex        =   7 
      Top             =   1500 
      Width           =   2175 
   End 
   Begin VB.TextBox txtTime  
      Height          =   270 
      Left            =   4502 
      TabIndex        =   6 
      Top             =   1140 
      Width           =   2175 
   End 
   Begin VB.TextBox txtName  
      Height          =   270 
      Left            =   1228 
      MaxLength       =   15 
      TabIndex        =   0 
      Top             =   420 
      Width           =   2175 
   End 
   Begin VB.CommandButton cmdSave  
      Caption         =   "保存" 
      Height          =   300 
      Left            =   3662 
      TabIndex        =   10 
      Top             =   2070 
      Width           =   735 
   End 
   Begin VB.CommandButton cmdExit  
      Cancel          =   -1  'True 
      Caption         =   "退出" 
      Height          =   300 
      Left            =   4397 
      TabIndex        =   11 
      Top             =   2070 
      Width           =   735 
   End 
   Begin VB.CommandButton cmdDelete  
      Caption         =   "删除" 
      Height          =   300 
      Left            =   2912 
      TabIndex        =   9 
      Top             =   2070 
      Width           =   735 
   End 
   Begin VB.CommandButton cmdAdd  
      Caption         =   "添加" 
      Height          =   300 
      Left            =   2177 
      TabIndex        =   8 
      Top             =   2070 
      Width           =   735 
   End 
   Begin VB.PictureBox picNavigation  
      AutoSize        =   -1  'True 
      BorderStyle     =   0  'None 
      Height          =   350 
      Left            =   2582 
      ScaleHeight     =   345 
      ScaleWidth      =   2415 
      TabIndex        =   16 
      Top             =   2385 
      Width           =   2410 
      Begin VB.CommandButton cmdMove  
         Height          =   270 
         Index           =   1 
         Left            =   270 
         Picture         =   "frmStudent.frx":0004 
         Style           =   1  'Graphical 
         TabIndex        =   13 
         Top             =   0 
         Width           =   300 
      End 
      Begin VB.CommandButton cmdMove  
         Height          =   270 
         Index           =   0 
         Left            =   -15 
         Picture         =   "frmStudent.frx":0048 
         Style           =   1  'Graphical 
         TabIndex        =   12 
         Top             =   0 
         Width           =   300 
      End 
      Begin VB.CommandButton cmdMove  
         Height          =   270 
         Index           =   3 
         Left            =   2010 
         Picture         =   "frmStudent.frx":0095 
         Style           =   1  'Graphical 
         TabIndex        =   15 
         Top             =   -15 
         Width           =   300 
      End 
      Begin VB.CommandButton cmdMove  
         Height          =   270 
         Index           =   2 
         Left            =   1725 
         Picture         =   "frmStudent.frx":00E1 
         Style           =   1  'Graphical 
         TabIndex        =   14 
         Top             =   -15 
         Width           =   300 
      End 
      Begin VB.TextBox txtNews  
         Height          =   270 
         Left            =   555 
         Locked          =   -1  'True 
         TabIndex        =   17 
         TabStop         =   0   'False 
         Top             =   0 
         Width           =   1185 
      End 
   End 
   Begin VB.Label Label8  
      AutoSize        =   -1  'True 
      Caption         =   "系部名称" 
      Height          =   180 
      Left            =   3673 
      TabIndex        =   25 
      Top             =   825 
      Width           =   720 
   End 
   Begin VB.Label Label7  
      AutoSize        =   -1  'True 
      Caption         =   "班级名称" 
      Height          =   180 
      Left            =   3673 
      TabIndex        =   24 
      Top             =   465 
      Width           =   720 
   End 
   Begin VB.Label Label6  
      AutoSize        =   -1  'True 
      Caption         =   "考试教室" 
      Height          =   180 
      Left            =   3673 
      TabIndex        =   23 
      Top             =   1545 
      Width           =   720 
   End 
   Begin VB.Label Label5  
      AutoSize        =   -1  'True 
      Caption         =   "考试时间" 
      Height          =   180 
      Left            =   3673 
      TabIndex        =   22 
      Top             =   1185 
      Width           =   720 
   End 
   Begin VB.Label Label3  
      AutoSize        =   -1  'True 
      Caption         =   "考号" 
      Height          =   180 
      Left            =   658 
      TabIndex        =   21 
      Top             =   1185 
      Width           =   360 
   End 
   Begin VB.Label Label4  
      AutoSize        =   -1  'True 
      Caption         =   "性别" 
      Height          =   180 
      Left            =   658 
      TabIndex        =   20 
      Top             =   1545 
      Width           =   360 
   End 
   Begin VB.Label Label1  
      AutoSize        =   -1  'True 
      Caption         =   "姓名" 
      Height          =   180 
      Left            =   658 
      TabIndex        =   19 
      Top             =   465 
      Width           =   360 
   End 
   Begin VB.Label Label2  
      AutoSize        =   -1  'True 
      Caption         =   "学号" 
      Height          =   180 
      Left            =   658 
      TabIndex        =   18 
      Top             =   825 
      Width           =   360 
   End 
End 
Attribute VB_Name = "Student" 
Attribute VB_GlobalNameSpace = False 
Attribute VB_Creatable = False 
Attribute VB_PredeclaredId = True 
Attribute VB_Exposed = False 
Option Explicit 
Dim isAdding As Boolean                 '定义操作状态标志 
Dim objStudent As Recordset             '用于保存学生信息数据表记录 
Dim objCn As Connection                 '用于建立数据库联接 
 
Private Sub cmbClass_KeyPress(KeyAscii As Integer) 
    '如果敲回车键,使下一控件获得焦点 
    If KeyAscii = vbKeyReturn Then SendKeys "{TAB}" 
End Sub 
 
Private Sub cmbDept_KeyPress(KeyAscii As Integer) 
    '如果敲回车键,使下一控件获得焦点 
    If KeyAscii = vbKeyReturn Then SendKeys "{TAB}" 
End Sub 
 
Private Sub cmbSex_KeyPress(KeyAscii As Integer) 
    '如果敲回车键,使下一控件获得焦点 
    If KeyAscii = vbKeyReturn Then SendKeys "{TAB}" 
End Sub 
 
Private Sub cmdExit_Click() 
    Unload Me               '关闭学生信息管理窗体 
End Sub 
 
Private Sub Form_Load() 
    Dim objTemp As New Recordset 
    '建立数据库联接 
    Set objCn = New Connection                 '实例化联接对象 
    With objCn                                 '建立数据库联接 
        .Provider = "SQLOLEDB" 
        .ConnectionString = "User ID=sa;PWD=123;Data Source=(local);" & _ 
                            "Initial Catalog=自测考试" 
        .Open 
    End With 
    '获取学生信息记录 
    Set objStudent = New Recordset                 '实例化objStudent对象 
    With objStudent 
        Set .ActiveConnection = objCn 
        .CursorLocation = adUseClient           '指定使用客户端游标 
        .CursorType = adOpenStatic              '指定使用静态游标 
        .LockType = adLockOptimistic 
        .Open "SELECT * FROM 学生信息"          '获取学生信息登录信息 
    End With 
    '获取班级信息 
    With objTemp 
        Set .ActiveConnection = objCn 
        .CursorLocation = adUseClient           '指定使用客户端游标 
        .CursorType = adOpenStatic              '指定使用静态游标 
        .Open "SELECT * FROM 班级信息"       '获取班级信息数据 
        '建立班级名称列表 
        cmbClass.AddItem "" 
        cmbClass.ItemData(cmbClass.NewIndex) = 0 
        While Not .EOF 
            cmbClass.AddItem .Fields("名称") 
            cmbClass.ItemData(cmbClass.NewIndex) = Val(.Fields("编号")) 
            .MoveNext 
        Wend 
    End With 
    '获取系部信息 
    With objTemp 
        .Close 
        .Open "SELECT * FROM 系部信息"       '获取系部信息数据 
        '建立系部名称列表 
        cmbDept.AddItem "" 
        cmbDept.ItemData(cmbDept.NewIndex) = 0 
        While Not .EOF 
            cmbDept.AddItem .Fields("名称") 
            cmbDept.ItemData(cmbDept.NewIndex) = Val(.Fields("编号")) 
            .MoveNext 
        Wend 
    End With 
    '建立性别列表 
    cmbSex.AddItem "" 
    cmbSex.AddItem "男" 
    cmbSex.AddItem "女" 
    cmdMove(0).Value = True                     '触发按钮单击事件,显示第一个记录 
End Sub 
 
Private Sub cmdMove_Click(Index As Integer) 
    With objStudent 
        Select Case Index           '切换当前记录 
            Case 0                  '使第一个记录成为当前记录 
                If .RecordCount > 0 And Not .BOF Then .MoveFirst 
            Case 1                  '使上一个记录成为当前记录 
                If .RecordCount > 0 And Not .BOF Then 
                    .MovePrevious 
                    If .BOF Then .MoveFirst 
                End If 
            Case 2                  '使下一个记录成为当前记录 
                If .RecordCount > 0 And Not .EOF Then 
                    .MoveNext 
                    If .EOF Then .MoveLast 
                End If 
            Case 3                  '使最后一个记录成为当前记录 
                If .RecordCount > 0 And Not .EOF Then .MoveLast 
        End Select 
        Show_Data 
    End With 
    If isAdding Then isAdding = False 
End Sub 
 
Private Sub cmdAdd_Click() 
    txtNews = "添加新记录" 
    txtName = "" 
    isAdding = True 
    txtName.SetFocus 
End Sub 
 
Private Sub cmdDelete_Click() 
    '根据是否处于添加记录状态执行不同的操作 
    If isAdding Then 
        '退出添加记录状态,显示当前记录 
        isAdding = False 
        If objStudent.RecordCount <= 0 Then 
            txtNews = "记录:无"    '显示无记录提示 
        Else 
            Show_Data '显示当前记录数据 
        End If 
    Else 
        If objStudent.RecordCount > 0 Then 
            If MsgBox("是否删除当前记录?", vbYesNo + vbQuestion, _ 
                       "学生信息管理") = vbYes Then 
                objStudent.Delete                   '执行删除当前记录操作 
                cmdMove(2).Value = True             '显示下一记录数据 
            Else 
                Show_Data                       '显示当前记录数据 
            End If 
        End If 
    End If 
End Sub 
Private Sub cmdSave_Click() 
    Dim objCopy As New Recordset 
    '在当前表中无数据和不是添加记录时,不执行保存操作 
    If Not isAdding And objStudent.RecordCount < 1 Then Exit Sub 
    If Trim(txtName) = "" Then 
        MsgBox "学生姓名不能为空!", vbCritical, "学生信息管理" 
        txtName.SetFocus 
        txtName = "" 
    ElseIf Not txtNum Like "[1-9]#######" Then 
        MsgBox "学号必须是以非0数字开头的8位数字字符串!", vbCritical, "学生信息管理" 
        txtNum.SetFocus 
        txtNum.SelStart = 0 
        txtNum.SelLength = 8 
    ElseIf Not txtCode Like "[1-9]#######" Then 
        MsgBox "考号必须是以非0数字开头的8位数字字符串!", vbCritical, "学生信息管理" 
        txtCode.SetFocus 
        txtCode.SelStart = 0 
        txtCode.SelLength = 8 
    ElseIf Trim(cmbSex) = "" Then 
        MsgBox "请选择性别!", vbCritical, "学生信息管理" 
        cmbSex.SetFocus 
    ElseIf Trim(cmbClass) = "" Then 
        MsgBox "请选择所属班级!", vbCritical, "学生信息管理" 
        cmbClass.SetFocus 
    ElseIf Trim(cmbDept) = "" Then 
        MsgBox "请选择所属系部!", vbCritical, "学生信息管理" 
        cmbDept.SetFocus 
    ElseIf Not IsDate(txtTime) Then 
        MsgBox "请输入有效的考试时间!", vbCritical, "学生信息管理" 
        txtTime.SetFocus 
        txtTime.SelStart = 0 
        txtTime.SelLength = Len(txtTime) 
    ElseIf Trim(txtRoom) = "" Then 
        MsgBox "请输入考试教室!", vbCritical, "学生信息管理" 
        txtRoom.SetFocus 
        txtRoom = "" 
    Else 
        Set objCopy = objStudent.Clone 
        With objCopy 
            If .RecordCount > 0 Then 
                '检查学生学号是否重复 
                .MoveFirst 
                .Find "学号='" & Trim(txtNum) & "'" 
                If (isAdding And Not .EOF) Or _ 
                    (Not isAdding And Not .EOF And _ 
                     .AbsolutePosition <> objStudent.AbsolutePosition) Then 
                    MsgBox "学号重复,请修改!", vbCritical, "学生信息管理" 
                    txtNum.SetFocus 
                    txtNum.SelStart = 0 
                    txtNum.SelLength = Len(txtNum) 
                    Exit Sub 
                End If 
                '检查学生考号是否重复 
                .MoveFirst 
                .Find "考号='" & Trim(txtCode) & "'" 
                If (isAdding And Not .EOF) Or _ 
                    (Not isAdding And Not .EOF And _ 
                     .AbsolutePosition <> objStudent.AbsolutePosition) Then 
                    MsgBox "考号重复,请修改!", vbCritical, "学生信息管理" 
                    txtCode.SetFocus 
                    txtCode.SelStart = 0 
                    txtCode.SelLength = Len(txtCode) 
                    Exit Sub 
                End If 
                If isAdding Then objStudent.AddNew      '保存或添加新记录 
            Else 
                If isAdding Then objStudent.AddNew      '添加新记录 
            End If 
            objStudent.Fields("姓名") = Trim(txtName) 
            objStudent.Fields("学号") = Trim(txtNum) 
            objStudent.Fields("考号") = Trim(txtCode) 
            objStudent.Fields("性别") = cmbSex 
            objStudent.Fields("班级") = cmbClass.ItemData(cmbClass.ListIndex) 
            objStudent.Fields("系部") = cmbDept.ItemData(cmbDept.ListIndex) 
            objStudent.Fields("时间") = txtTime 
            objStudent.Fields("教室") = txtRoom 
            objStudent.Update 
            MsgBox "数据保存成功!", vbInformation, "学生信息管理" 
            isAdding = False 
            '显示当前记录编号和记录总数 
            txtNews = "记录:" & objStudent.AbsolutePosition & "/" & objStudent.RecordCount 
        End With 
    End If 
End Sub 
 
Private Sub Form_Terminate() 
 
End Sub 
 
Private Sub Form_Unload(Cancel As Integer) 
    objCn.Close                 '关闭数据联接 
    Set objCn = Nothing         '释放数据库联接 
    Set objStudent = Nothing      '释放记录集对象 
End Sub 
'限制联系电话输入 
Private Sub txtPhone_KeyPress(KeyAscii As Integer) 
    '如果敲回车键,使下一控件获得焦点 
    If KeyAscii = vbKeyReturn Then SendKeys "{TAB}" 
    If Not (Chr(KeyAscii) Like "[0-9]" Or KeyAscii = vbKeyBack) Then 
        KeyAscii = 0    '输入不是数字或退格键,取消输入 
    End If 
End Sub 
Private Sub txtCode_KeyPress(KeyAscii As Integer) 
    '如果敲回车键,使下一控件获得焦点 
    If KeyAscii = vbKeyReturn Then SendKeys "{TAB}" 
End Sub 
Private Sub txtName_KeyPress(KeyAscii As Integer) 
    '如果敲回车键,使下一控件获得焦点 
    If KeyAscii = vbKeyReturn Then SendKeys "{TAB}" 
End Sub 
Private Sub txtSum_KeyPress(KeyAscii As Integer) 
    '如果敲回车键,使保存按钮获得焦点 
    If KeyAscii = vbKeyReturn Then cmdSave.SetFocus 
End Sub 
 
Private Sub Show_Data() 
    Dim i% 
    With objStudent 
        If .RecordCount < 1 Then 
            txtNews = "记录:无"    '显示无记录提示 
            '清除显示数据 
            txtName = "": txtNum = "" 
            txtCode = "": txtTime = "": txtRoom = "" 
            cmbSex.ListIndex = 0: cmbClass.ListIndex = 0 
            cmbDept.ListIndex = 0 
        Else 
            '显示当前记录数据 
            txtName = .Fields("姓名"): txtNum = .Fields("学号") 
            txtCode = .Fields("考号"): txtTime = .Fields("时间") 
            txtRoom = .Fields("教室") 
            '显示性别 
            If .Fields("性别") = "男" Then 
                cmbSex.ListIndex = 1 
            Else 
                cmbSex.ListIndex = 2 
            End If 
            '显示班级名称 
            For i = 1 To cmbClass.ListCount - 1 
                If Val(.Fields("班级")) = cmbClass.ItemData(i) Then Exit For 
            Next 
            cmbClass.ListIndex = i 
            '显示系部名称 
            For i = 1 To cmbDept.ListCount - 1 
                If Val(.Fields("系部")) = cmbDept.ItemData(i) Then Exit For 
            Next 
            cmbDept.ListIndex = i 
            '显示当前记录编号和记录总数 
            txtNews = "记录:" & .AbsolutePosition & "/" & .RecordCount 
        End If 
    End With 
End Sub 
Private Sub txtNum_KeyPress(KeyAscii As Integer) 
    '如果敲回车键,使下一控件获得焦点 
    If KeyAscii = vbKeyReturn Then SendKeys "{TAB}" 
End Sub 
 
Private Sub txtRoom_KeyPress(KeyAscii As Integer) 
    '如果敲回车键,使保存按钮获得焦点 
    If KeyAscii = vbKeyReturn Then cmdSave.SetFocus 
End Sub 
 
Private Sub txtTime_KeyPress(KeyAscii As Integer) 
    '如果敲回车键,使下一控件获得焦点 
    If KeyAscii = vbKeyReturn Then SendKeys "{TAB}" 
End Sub