流程图略
VERSION 5.00
Begin VB.Form mainForm
Caption = "教师点名系统"
ClientHeight = 5115
ClientLeft = 165
ClientTop = 810
ClientWidth = 9660
LinkTopic = "Form1"
ScaleHeight = 5115
ScaleWidth = 9660
StartUpPosition = 3 '窗口缺省
Begin VB.ListBox List1
Height = 4380
Left = 120
TabIndex = 0
Top = 480
Width = 2295
End
Begin VB.Label Label2
Caption = "显示结果处"
Height = 255
Left = 2640
TabIndex = 2
Top = 1800
Width = 975
End
Begin VB.Label Label1
AutoSize = -1 'True
Caption = "|"
BeginProperty Font
Name = "宋体"
Size = 24
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 3720
TabIndex = 1
Top = 1560
Width = 255
End
Begin VB.Menu BJXSSJ
Caption = "编辑学生数据"
Begin VB.Menu TJ
Caption = "添加一名新同学"
End
Begin VB.Menu SC
Caption = "删除一名新同学"
End
End
Begin VB.Menu KSDM
Caption = "开始点名"
Begin VB.Menu DM
Caption = "点名"
End
End
Begin VB.Menu CXXSDMQK
Caption = "查询学生点名情况"
End
Begin VB.Menu TC
Caption = "退出"
End
End
Attribute VB_Name = "mainForm"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim XH(100) As String '学号
Attribute XH.VB_VarUserMemId = 1073938432
Dim XM(100) As String '姓名
Attribute XM.VB_VarUserMemId = 1073938433
Dim CS(100) As String '次数
Attribute CS.VB_VarUserMemId = 1073938434
Dim cnt As Integer
Dim FileName As String
Private Sub ReadFile() '导入文件
'On Error GoTo errorHandler ' 设置错误处理
Dim strLine As String
Dim tmp
Open FileName For Input As #1
cnt = 0
Do While Not EOF(1) ' 逐行读取文件内容
Line Input #1, strLine
tmp = Split(strLine, vbTab)
XH(cnt) = tmp(0)
XM(cnt) = tmp(1)
CS(cnt) = tmp(2)
cnt = cnt + 1
Loop
Close #1 '关闭文件
Exit Sub ' 退出子过程
errorHandler: ' 错误处理
MsgBox FileName & " 打开文件失败,错误代码为:" & Err.Number & ",错误信息为:" & Err.Description
End Sub
Private Sub WriteFile()
'On Error GoTo errorHandler ' 设置错误处理
Dim strLine As String
Dim tmp
Dim i As Integer
Open FileName For Output As #1
For i = 0 To cnt - 1
strLine = XH(i) + vbTab
strLine = strLine + XM(i) + vbTab
strLine = strLine + CS(i)
Print #1, strLine '记录进文件
Next
Close #1 '关闭文件
Exit Sub ' 退出子过程
errorHandler: ' 错误处理
MsgBox FileName & " 打开文件失败,错误代码为:" & Err.Number & ",错误信息为:" & Err.Description
End Sub
Private Sub infoToList()
Dim i As Integer
Dim strLine As String
List1.Clear
For i = 0 To cnt - 1
strLine = XH(i) + vbTab
strLine = strLine + XM(i)
List1.AddItem (strLine)
Next
End Sub
Private Sub CXXSDMQK_Click()
Dim i As Integer
Dim strLine As String
List1.Clear
For i = 0 To cnt - 1
strLine = XH(i) + vbTab
strLine = strLine + XM(i) + vbTab
strLine = strLine + CS(i)
List1.AddItem (strLine)
Next
End Sub
Private Sub DM_Click()
Dim randomNumber As Integer
randomNumber = Int(Rnd * cnt)
Label1 = XH(randomNumber) + " " + XM(randomNumber)
CS(randomNumber) = CS(randomNumber) + 1
WriteFile '更新文件
ReadFile
End Sub
Private Sub Form_Load()
Randomize ' 初始化随机数种子,一般只需要调用一次
FileName = App.Path & "\点名册.txt"
ReadFile
infoToList
End Sub
Private Sub Form_Unload(Cancel As Integer)
End '一定要加这句,因为原来的窗体只是隐藏了,并没退出
End Sub
Private Sub SC_Click()
Dim XXH As String '学号
Dim Find As Boolean
Find = False
XXH = InputBox("请输入要删除的学号", "删除")
If XXH = "" Then Exit Sub
'添加之前查一下学号是否存在,如果存在不能加入
Dim i As Integer
For i = 0 To cnt - 1
If XH(i) = XXH Then
Find = True
Exit For
End If
Next
If Find = False Then
MsgBox "此学号不存在", , "提示"
Exit Sub
End If
'用最后一条记录替换当前记录
XH(i) = XH(cnt - 1)
XM(i) = XM(cnt - 1)
CS(i) = CS(cnt - 1)
cnt = cnt - 1
WriteFile
ReadFile
infoToList '更新列表
End Sub
Private Sub TC_Click()
End
End Sub
Private Sub TJ_Click()
Dim XXH, XXM As String '学号 ,姓名
XXH = InputBox("请输入要加入的学号", "添加")
If XXH = "" Then Exit Sub
'添加之前查一下学号是否存在,如果存在不能加入
Dim i As Integer
For i = 0 To cnt - 1
If XH(i) = XXH Then
MsgBox "此学号已经存在不可以添加", , "提示"
Exit Sub
End If
Next
XXM = InputBox("请输入要加入的姓名")
If XXM = "" Then Exit Sub
XH(cnt) = XXH
XM(cnt) = XXM
CS(cnt) = 0
cnt = cnt + 1
WriteFile
ReadFile
infoToList '更新列表
End Sub
在这个课程设计过程中,我学到了很多关于编程的知识和技巧。通过实际的编程实践,我更深入地理解了程序的结构和逻辑,以及如何使用变量、数组、文件操作等基本概念和功能来实现所需的功能。我也更加熟悉了VB的语法和编程规范。
这个程序的优点是:
简单易懂:程序的逻辑结构清晰,代码注释完善,易于理解和修改。
功能完善:程序实现了学生信息的增加、删除、修改和随机点名等功能,可以方便地管理学生信息。
文件操作:通过文件操作,程序可以将学生信息保存到文件中,并在需要时读取和更新文件,确保数据的持久性和可靠性。
然而,这个程序也存在一些缺憾:
用户界面简陋:程序的用户界面比较简单,没有美化和交互性,用户体验有待提升。
错误处理不完善:程序中使用了错误处理,但只是简单地弹出一个消息框提示错误信息,没有提供更详细的错误处理和恢复机制。
数组大小固定:程序中定义了固定大小的数组来存储学生信息,如果学生数量超过数组大小,会导致数组溢出的问题。应该考虑使用动态数据结构来解决这个问题。
Option Explicit Dim XH(100) As String '学号 Dim XM(100) As String '姓名 Dim CS(100) As String '次数 Dim cnt As Integer Dim FileName As String Private Sub ReadFile() '导入文件 'On Error GoTo errorHandler ' 设置错误处理 Dim strLine As String Dim tmp Open FileName For Input As #1 cnt = 0 Do While Not EOF(1) ' 逐行读取文件内容 Line Input #1, strLine tmp = Split(strLine, vbTab) XH(cnt) = tmp(0) XM(cnt) = tmp(1) CS(cnt) = tmp(2) cnt = cnt + 1 Loop Close #1 '关闭文件 Exit Sub ' 退出子过程 errorHandler: ' 错误处理 MsgBox FileName & " 打开文件失败,错误代码为:" & Err.Number & ",错误信息为:" & Err.Description End Sub Private Sub WriteFile() 'On Error GoTo errorHandler ' 设置错误处理 Dim strLine As String Dim tmp Dim i As Integer Open FileName For Output As #1 For i = 0 To cnt - 1 strLine = XH(i) + vbTab strLine = strLine + XM(i) + vbTab strLine = strLine + CS(i) Print #1, strLine '记录进文件 Next Close #1 '关闭文件 Exit Sub ' 退出子过程 errorHandler: ' 错误处理 MsgBox FileName & " 打开文件失败,错误代码为:" & Err.Number & ",错误信息为:" & Err.Description End Sub Private Sub infoToList() Dim i As Integer Dim strLine As String List1.Clear For i = 0 To cnt - 1 strLine = XH(i) + vbTab strLine = strLine + XM(i) List1.AddItem (strLine) Next End Sub Private Sub CXXSDMQK_Click() Dim i As Integer Dim strLine As String List1.Clear For i = 0 To cnt - 1 strLine = XH(i) + vbTab strLine = strLine + XM(i) + vbTab strLine = strLine + CS(i) List1.AddItem (strLine) Next End Sub Private Sub DM_Click() Dim randomNumber As Integer randomNumber = Int(Rnd * cnt) Label1 = XH(randomNumber) + " " + XM(randomNumber) CS(randomNumber) = CS(randomNumber) + 1 WriteFile '更新文件 ReadFile End Sub Private Sub Form_Load() Randomize ' 初始化随机数种子,一般只需要调用一次 FileName = App.Path & "\点名册.txt" ReadFile infoToList End Sub Private Sub Form_Unload(Cancel As Integer) End '一定要加这句,因为原来的窗体只是隐藏了,并没退出 End Sub Private Sub SC_Click() Dim XXH As String '学号 Dim Find As Boolean Find = False XXH = InputBox("请输入要删除的学号", "删除") If XXH = "" Then Exit Sub '添加之前查一下学号是否存在,如果存在不能加入 Dim i As Integer For i = 0 To cnt - 1 If XH(i) = XXH Then Find = True Exit For End If Next If Find = False Then MsgBox "此学号不存在", , "提示" Exit Sub End If '用最后一条记录替换当前记录 XH(i) = XH(cnt - 1) XM(i) = XM(cnt - 1) CS(i) = CS(cnt - 1) cnt = cnt - 1 WriteFile ReadFile infoToList '更新列表 End Sub Private Sub TC_Click() End End Sub Private Sub TJ_Click() Dim XXH, XXM As String '学号 ,姓名 XXH = InputBox("请输入要加入的学号", "添加") If XXH = "" Then Exit Sub '添加之前查一下学号是否存在,如果存在不能加入 Dim i As Integer For i = 0 To cnt - 1 If XH(i) = XXH Then MsgBox "此学号已经存在不可以添加", , "提示" Exit Sub End If Next XXM = InputBox("请输入要加入的姓名") If XXM = "" Then Exit Sub XH(cnt) = XXH XM(cnt) = XXM CS(cnt) = 0 cnt = cnt + 1 WriteFile ReadFile infoToList '更新列表 End Sub