系统需求分析
研究生个人信息管理
导师信息管理
专业信息管理
功能模块设计
针对上述需求,设计的功能模块如图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所示。
窗体的代码设计如下。
新闻热点
疑难解答