系统需求分析
研究生个人信息管理
导师信息管理
专业信息管理
功能模块设计
针对上述需求,设计的功能模块如图10.34所示。
数据表设计
1.研究生信息数据表
数据表名称:graduate_info。数据表结构如表10.4所示。
2.专业信息数据表
3.导师信息数据表
索引和视图设计
1.研究生信息数据表的索引和视图设计
2.专业信息表的索引和视图设计
3.导师信息数据表的索引和视图设计
创建数据库用户
(1)在如图10.35所示的创建用户的【一般信息】选项卡中进行如下设置。
(2)切换到如图10.36所示的创建用户的【角色】选项卡。
(3)成功创建上述用户的SQL代码如下。
―――――――――――――――――――――――――――――――――――――
CREATE USER "GRADUATEUSER" PROFILE "DEFAULT"
IDENTIFIED BY "12345678" DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "TEMP"
ACCOUNT UNLOCK;
GRANT UNLIMITED TABLESPACE TO "GRADUATEUSER";
GRANT "CONNECT" TO "GRADUATEUSER";
GRANT "RESOURCE" TO "GRADUATEUSER";
―――――――――――――――――――――――――――――――――――――
【参见光盘文件】:第10章\creategraduateuser.sql。
(4)读者可以直接在【SQLPlus Worksheet】中执行creategraduateuser.sql文件创建用户。
创建数据表
1.创建研究生信息表
(1)在如图10.37所示的创建表的【一般信息】选项卡中进行如下操作。
(2)切换到如图10.38所示的创建表的【约束条件】选项卡。
(3)上述创建数据表graduateuser.graduate_info的SQL代码如下。
(3)上述创建数据表graduateuser.graduate_info的SQL代码如下。
(4)读者可以直接在【SQLPlus Worksheet】中执行createtablegraduateinfo.sql 文件创建数据表graduateuser.graduate_info。
2.创建专业信息表
(1)在如图10.39所示的创建表的【一般信息】选项卡中按照如图所示进行设置。
(2)切换到如图10.40所示的创建表的【约束条件】选项卡。
(3)上述创建数据表graduateuser.major_info的SQL代码如下。
【参见光盘文件】:第10章\createtablemajorinfo.sql。
(4)读者可以直接在【SQLPlus Worksheet】中执行createtablemajorinfo.sql文件创建数据表graduateuser.major_info。
3.创建导师信息表
(1)在如图10.41所示的创建表的【一般信息】选项卡中按照如图所示进行设置。
(2)切换到如图10.42所示的创建表的【约束条件】选项卡。
(3)上述创建数据表graduateuser.director_info的SQL代码如下。
【参见光盘文件】:第10章\createtabledirectorinfo.sql。
(4)读者可以直接在【SQLPlus Worksheet】中执行createtabledirectorinfo.sql 文件创建数据表graduateuserdirector_info。
创建索引
1.为研究生信息表的NAME字段建立索引
(1)在如图10.43所示的创建索引的【一般信息】选项卡中按照图示进行操作。
(2)其他选项卡按照默认设置即可。
(3)上述创建索引的SQL代码如下。
―――――――――――――――――――――――――――――――――――――
CREATE INDEX "GRADUATEUSER"."研究生姓名字段索引"
ON "GRADUATEUSER"."GRADUATE_INFO"("NAME")
TABLESPACE "INDX"
―――――――――――――――――――――――――――――――――――――
【参见光盘文件】:第10章\createindexgraduate.sql。
(4)读者可以直接在【SQLPlus Worksheet】中执行createindexgraduate.sql 文件创建数据表graduateuser.graduate_info的索引“研究生姓名字段索引”。
2.为导师信息表的NAME字段建立索引
(1)在如图10.44所示的创建索引的【一般信息】选项卡中按照图示进行操作。
(2)其他选项卡按照默认设置即可。
(3)上述创建索引的SQL代码如下。
―――――――――――――――――――――――――――――――――――――
CREATE INDEX "GRADUATEUSER"."导师姓名字段索引"
ON "GRADUATEUSER"."DIRECTOR_INFO"("NAME")
TABLESPACE "INDX"
―――――――――――――――――――――――――――――――――――――
【参见光盘文件】:第10章\createindexdirector.sql。
(4)读者可以直接在【SQLPlus Worksheet】中执行createindexdirector.sql 文件创建数据表graduateuser.director_info的索引“导师姓名字段索引”。
创建视图
1.为研究生信息表建立视图
(1)在如图10.45所示的创建视图的【一般信息】选项卡中按照图示进行操作。
(2)其他选项卡按照默认设置即可。
(3)上述创建视图的SQL代码如下。
―――――――――――――――――――――――――――――――――――――
CREATE OR REPLACE VIEW "GRADUATEUSER"."VIEW_GRADUATE" AS
select *
from graduateuser.graduate_info WITH READ ONLY
―――――――――――――――――――――――――――――――――――――
【参见光盘文件】:第10章\createviewgraduate.sql。
(4)读者可以直接在【SQLPlus Worksheet】中执行createviewgraduate.sql文件创建数据表graduateuser.graduate_info的视图“VIEW_GRADUATE”。
2.为专业信息表建立视图
(1)在如图10.46所示的创建视图的【一般信息】选项卡中按照图示进行操作。
(2)其他选项卡按照默认设置即可。
(3)上述创建视图的SQL代码如下。
―――――――――――――――――――――――――――――――――――――
CREATE OR REPLACE VIEW "GRADUATEUSER"."VIEW_MAJOR" AS
select *
from graduateuser.major_info WITH READ ONLY
―――――――――――――――――――――――――――――――――――――
【参见光盘文件】:第10章\createviewmajor.sql。
(4)读者可以直接在【SQLPlus Worksheet】中执行createviewmajor.sql文件创建数据表graduateuser.major_info的视图“VIEW_MAJOR”。
2.为导师信息表建立视图
(1)在如图10.47所示的创建视图的【一般信息】选项卡中按照图示进行操作。
(2)其他选项卡按照默认设置即可。
(3)上述创建视图的SQL代码如下。
―――――――――――――――――――――――――――――――――――――
CREATE OR REPLACE VIEW "GRADUATEUSER"."VIEW_DIRECTOR" AS
select *
from graduateuser.director_info WITH READ ONLY
―――――――――――――――――――――――――――――――――――――
【参见光盘文件】:第10章\createviewdirector.sql。
(4)读者可以直接在【SQLPlus Worksheet】中执行createviewdirector.sql 文件创建数据表graduateuser.director_info的视图“VIEW_DIRECTOR”
VB工程总体框架
开发完成的研究生管理信息系统的总体框架如表10.7所示。
【参见光盘文件】:第10章\研究生管理信息系统.vbp。
系统是如何运行的
(1)启动VB,打开配套光盘的工程文件。
(2)如图10.48所示。
(3)出现如图10.49所示的工程属性的【通用】选项卡。
(4)打开模块Module1,查看名为Main的过程的代码如下。说明Main过程将启动名为frmMain的主窗体。
(5)编辑名为frmMain的主窗体,如图10.50所示。
(6)出现如图10.51所示的【菜单编辑器】界面,可以查看主窗体的菜单设计。
工程中设计的菜单如表10.8所示。
(7)为什么这些菜单可以调用这些子窗体或者执行退出主窗体的操作呢?在图10.50的主窗体中用鼠标双击,在出现的代码窗口中的主要代码如下。
―――――――――――――――――――――――――――――――――――――
‘选择菜单项DirectorInsertMenu后将显示子窗体FormInsertDirector
Private Sub DirectorInsertMenu_Click()
FormInsertDirector.Show
End Sub
‘选择菜单项DirectorSelectMenu 后将显示子窗体FormSelectDirector
Private Sub DirectorSelectMenu_Click()
FormSelectDirector.Show
End Sub
‘选择菜单项DirectorUpdateMenu后将显示子窗体FormUpdateDirector
Private Sub DirectorUpdateMenu_Click()
FormUpdateDirector.Show
End Sub
‘选择菜单项GraduateInsertMenu后将显示子窗体FormInsertGraduate
Private Sub GraduateInsertMenu_Click()
FormInsertGraduate.Show
End Sub
‘选择菜单项GraduateSelectMenu后将显示子窗体FormSelectGraduate
Private Sub GraduateSelectMenu_Click()
FormSelectGraduate.Show
End Sub
‘选择菜单项GraduateUpdateMenu后将显示子窗体FormUpdateGraduate
Private Sub GraduateUpdateMenu_Click()
FormUpdateGraduate.Show
End Sub
‘选择菜单项MajorInsertMenu后将显示子窗体FormInsertMajor
Private Sub MajorInsertMenu_Click()
FormInsertMajor.Show
End Sub
‘选择菜单项MajorUpdateMenu后将显示子窗体FormUpdateMajor
Private Sub MajorUpdateMenu_Click()
FormUpdateMajor.Show
End Sub
‘选择菜单项ExitMenu后将显示退出主窗体
Private Sub ExitMenu_Click()
End
End Sub
―――――――――――――――――――――――――――――――――――――
模块的设计
模块Module1的其他主要代码如下。
―――――――――――――――――――――――――――――――――――――
‘定义了名为ConnectString的无参数函数,连接数据库
Public Function ConnectString() As String
ConnectString = "DSN=graduateDB;UID=graduateuser;PWD=12345678"
End Function
‘定义了名为ExecuteSQL的带参数函数,参数SQL和MsgString都为字符串型。该函数用于执行SQL语句。
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
‘conn为ADODB的connection连接对象
Dim conn As ADODB.Connection
‘rest为ADODB的记录集对象
Dim rest As ADODB.Recordset
‘若执行SQL错误转向ExecuteSQL_Error标记处
On Error GoTo ExecuteSQL_Error
Set conn = New ADODB.Connection
‘连接数据库
conn.Open ConnectString
Set rest = New ADODB.Recordset
‘执行SQL字符串语句
rest.Open Trim$(SQL), conn, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rest
MsgString = "查询到" & rest.RecordCount & " 条记录"
‘执行SQL完毕后关闭连接和记录集
ExecuteSQL_Exit:
Set rest = Nothing
Set conn = Nothing
Exit Function
‘执行SQL错误时的处理方法
ExecuteSQL_Error:
MsgString = "查询错误: " & _
Err.Description
Resume ExecuteSQL_Exit
End Function
‘定义了名为Checktxt的带参数函数,参数txt为字符串型。该函数用于检测txt字符串是否有内容。
Public Function Checktxt(txt As String) As Boolean
If Trim(txt) = "" Then
Checktxt = False
Else
Checktxt = True
End If
End Function
―――――――――――――――――――――――――――――――――――――
各子窗体的设计
1.添加信息窗体的设计
打开名为FormInsertGraduate的子窗体,如图10.52所示。
窗体的设计如表10.8所示。
表10.8 子窗体FormInsertGraduate的设计
窗体的程序代码分析如下。
2.修改信息窗体的设计
打开名为FormUpdateGraduate的子窗体,如图10.53所示。
窗体的设计如表10.10所示。
窗体的程序代码分析如下。
3查询信息窗体的设计
打开名为FormSelectGraduate的子窗体,如图10.54所示。窗体的设计如表10.11所示。
窗体的代码设计如下。