对数据进行编辑之后,单击“保存”按钮将编辑后的结果保存到data.dat 文件中。 (4)选择“查询”按钮,弹出图所示的“查询”对话框。在“查询”对话框中可以组合多种文件夹来查询感兴的数据。如图所示,选择“性别”和“院系”并在性别中选择“男”在院系中选择“机械工程学院”,表示查找所有机械工程学院男学生的信息。按“确定”按钮返回主窗口,所有满足条件的数据行一红色背景显示。
5
(5)在“查询”对话框中如图所示未选中的数据列表示该数据不加限制,该项后面用于输入详细信息的文本框和组合框是无效的。“学号”和“姓名”中可以输入完整的学号和姓名,也可以输入部分的学号和姓名。连续使用“查询”功能时,后一次的查询不会清除前一次查询的结果,二者会同时突出显示。如果在查询对话框中不指定任何条件会选择所有的数据行,如果单击了查询对话框中的“取消”按钮会取消所有数据行的突出显示。
(6)如果用户对数据进行了修改,关闭程序是弹出如图所示的消息框加以提示.
二、设计思路与总体方案
学生信息管理系统
登陆界面
保存
追加
主界面 查询界面
插入 删除 查询
2.1标准模块Module1 一、因为在整个过程中都涉及到学生信息的编辑,所以对于学生信息定义成全局级的自定义数据类型。同时民族、院系、专业、省份都是需要读入的,所以定义
6
为动态数组。
Public Type StudentInfo number As String * 8 Name As String * 8 Sex As Boolean Birth As Date Nation As Byte faculty As Byte subject As Byte Province As Byte Score As Single End Type
Public num As Integer Public student() As StudentInfo Public Modified As Boolean Public EditMode As Boolean
Public faculty() As String Public Province() As String Public Nation() As String Public subject() As String
Public conArr(9) As Control
另外由于保存过程中涉及到文件是否被修改,所以应该定义一个逻辑型变量Modified来标榜数据是否被修改,同时根据要求过程涉及到是否可以编辑,所以定义全局的逻辑型变量EditMode来标榜是否可以编辑。
定义了一系列的动态数组,需要将其重新定义,将文件中的民族,专业、院系、省份的具体内容读入动态数组中,同时在启动程序时需要加载数据,表格要显示学生信息,而关闭时需要保存数据,所以编写了OpenData、SaveData两个全局过程方便调用。并且采用读随机文件的方式进行文件的读写,根据上学期所学知识,随机文件的特点使得使用自定义类型对其进行操作是非常方便的。 Public Sub OpenData() Dim i As Integer Dim stu As StudentInfo num = 0 Erase student
7
If Dir(App.Path & \ Exit Sub End If
Open App.Path & \ num = LOF(1) / Len(stu) For i = 1 To num
ReDim Preserve student(i) Get #1, , student(i) Next Close #1 Modified = False End Sub
Public Sub SaveData() Dim i As Integer Dim stu As StudentInfo
If Dir(App.Path & \ Kill App.Path & \ End If
Open App.Path & \ For i = 1 To num Put #1, , student(i) Next Close #1 Modified = False End Sub
Public Sub OpenInfo() Dim i As Integer Dim n As Integer
8
If Dir(App.Path & \院系.txt\ i = 0
Open App.Path & \院系.txt\ Do While Not EOF(1) i = i + 1
ReDim Preserve faculty(i) Input #1, n, faculty(i) Loop Close End If
If Dir(App.Path & \民族.txt\ i = 0
Open App.Path & \民族.txt\ Do While Not EOF(1) i = i + 1
ReDim Preserve Nation(i) Input #1, n, Nation(i) Loop Close End If
If Dir(App.Path & \省份.txt\ i = 0
Open App.Path & \省份.txt\ Do While Not EOF(1) i = i + 1
ReDim Preserve Province(i) Input #1, n, Province(i) Loop Close End If
If Dir(App.Path & \专业.txt\ i = 0
Open App.Path & \专业.txt\ Do While Not EOF(1)
9