《个人办公助理》案例指导书.docx
- 文档编号:9528653
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:29
- 大小:21.81KB
《个人办公助理》案例指导书.docx
《《个人办公助理》案例指导书.docx》由会员分享,可在线阅读,更多相关《《个人办公助理》案例指导书.docx(29页珍藏版)》请在冰豆网上搜索。
《个人办公助理》案例指导书
目录
1.数据库设计2
1.1.数据库环境说明2
1.2创建表空间2
1.3创建用户并授权2
1.4创建数据表3
1.4.1用户表users3
1.4.2事件信息表Events3
1.5创建序列4
1.5.1序列User_seq4
1.5.2序列Event_seq4
1.6创建触发器5
1.6.1触发器bi_users_userId5
1.6.2触发器bi_events_eventId5
1.7创建程序包5
1.7.1程序包users_pkgs5
1.7.2程序包events_pkgs10
2前台页面设计11
2.1连接文件conn.jsp11
2.2登录页面login.jsp11
2.3登录执行页面loginSuccess.jsp12
2.4注册页面regist.jsp15
2.5注册执行页面registSuccess.jsp17
2.6修改信息页面update.jsp18
2.7修改信息执行页面updateSuccess.jsp21
1.数据库设计
1.1.数据库环境说明
采用的数据库为Oracle10g,使用SQLplus工具编写sql语句及PL/SQL程序。
服务器在运行时需启动service服务和监听服务,监听应用程序端对数据库的操作.
1.2创建表空间
该数据库的所有表信息都存储在grbgzl_tbs表空间上,数据文件位置为D:
\grbgzl\grbgzl.dbf,初始大小为10M,自动扩展,每次扩展1M,最大不限,分区管理采用本地自动分配管理,自动进行段空间管理。
创建表空间的代码如下:
Createtablespacegrbgzl_tbs
datafile'D:
\grbgzl\grbgzl.dbf'size10mautoextendon
next1mmaxsizeunlimited
extentmanagementlocalautoallocate
segmentspacemanagementauto;
注意:
D:
\grbgzl文件夹必须事先建立。
1.3创建用户并授权
创建数据库用户test,其默认表空间为grbgzl_tbs,并为其分配角色为CONNECT,RESOURCE,DBA。
代码如下:
--创建用户
Createusertest
identifiedbyoralce--设置口令
defaulttablespacegrbgzl_tbs--设置默认表空间
temporarytablespacetemp;--设置临时表空间
--设置角色
GrantCONNECT,RESOURCE,DBAtotest;
1.4创建数据表
1.4.1用户表users
表名
Users
列名
列说明
数据类型(精度范围)
空/非空
约束条件
UserId
用户的惟一编号
Varchar2(20)
非空
主键
LoginName
用户登录名称
Varchar2(20)
非空
惟一
Password
用户登录密码
Varchar2(20)
非空
Name
用户姓名
Varchar2(20)
Description
关于用户的描述
Varchar2(2000)
补充说明
用户的惟一编号构成为:
Usr0000+序列值
代码如下:
CreatetableUsers
(UserIdVarchar2(20)primarykey,
LoginNameVarchar2(20)uniquenotnull,
PasswordVarchar2(20)notnull,
NameVarchar2(20),
DescriptionVarchar2(2000)
);
1.4.2事件信息表Events
表名
Events
列名
列说明
数据类型(精度范围)
空/非空
约束条件
EventId
事件的惟一编号
Varchar2(20)
非空
主键
EventName
事件的标题
Varchar2(100)
非空
EventContent
事件的内容梗概
Varchar2(2000)
EventDesc
事件描述
Varchar2(2000)
EventExer
事件执行者
Varchar2(20)
非空
外键
PlanBeginTime
计划开始时间
date
PlanFinishTime
计划结束时间
date
FinalFinishTime
最晚结束时间
date
ActBeginTime
实际开始时间
date
ActFinishTime
实际结束时间
date
IsFinished
事件是否完成
Char
(1)
默认为’N’
IsExpired
事件是否过期
Char
(1)
默认为’N’
IsDeleted
事件是否删除
Char
(1)
默认为’N’
补充说明
序列的惟一编号构成为:
Evt0000+序列值
代码:
……
1.5创建序列
1.5.1序列User_seq
功能:
该序列用于产生用户的惟一编号,将该序列与触发器结合使用,可为每个新注册的用户产生惟一的编号。
应用于表:
该序列将应用于表Users
序列代码:
CREATESEQUENCEUser_Seq
STARTWITH1
INCREMENTBY1
CACHE20.
1.5.2序列Event_seq
功能:
该序列用于产生事件的惟一编号,将该序列与触发器结合使用,可为每个新添加的事件产生惟一的编号。
应用于表:
该序列将应用于表Events
序列代码:
……
1.6创建触发器
1.6.1触发器bi_users_userId
功能:
实现Users表产生惟一编号的功能
触发器代码:
CREATEORREPLACETRIGGERbi_users_userId
BEFOREinsertONusers
FOREACHROW
DECLARE
new_idnumber;
BEGIN
SELECTUser_seq.nextval
INTOnew_id
FROMDUAL;
:
new.userid:
='usr'||lpad(new_id,4,'0');
END;
1.6.2触发器bi_events_eventId
功能:
实现Events表产生惟一编号的功能
触发器代码:
……
1.7创建程序包
1.7.1程序包users_pkgs
功能:
用于实现获取用户信息、增加或修改用户信息,在该包中有三个公有存储过程:
•saveUsers():
用于存储用户信息
•getUsers():
用于查询用户信息,该存储过程为重载,可根据用户编号进行查询用户信息或根据用户登录名及密码查询用户信息
•updateUsers():
用于修改用户信息,只有UserId和登录名不能修改
程序包规范:
CREATEORREPLACEPACKAGEusers_pkgsIS
--定义一个动态游标,用于存储查找到的记录信息
TYPEcurUserISREFCURSOR;
--定义一些常量,用不同数值表示不同含义
Successconstantinteger:
=1;
UserExistconstantinteger:
=-1;
UserNotExistconstantinteger:
=-2;
UserNotExistOrPasswordErrorconstantinteger:
=-3;
UnKonwErrorconstantinteger:
=-8;
--定义存储过程,用于存储用户信息
ProceduresaveUsers
(var_userIdoutVarchar2,
var_loginNameinvarchar2,
var_passwordinvarchar2,
var_nameinvarchar2,
var_descriptioninvarchar2,
resultoutnumber
);
--定义存储过程,用于根据userId查找用户信息
ProceduregetUsers
(var_userIdinVarchar2,
var_useroutcurUser,
resultoutnumber
);
--定义存储过程,用于根据登录名和密码查找用户信息
ProceduregetUsers
(var_loginNameinVarchar2,
var_passwordinvarchar2,
var_useroutcurUser,
resultoutnumber
);
--定义存储过程,用于根据userId修改用户的其他信息
ProcedureupdateUsers
(var_userIdinVarchar2,
var_oldPasswordinvarchar2,
var_newPasswordinvarchar2,
var_newNameinvarchar2,
var_newDescriptioninvarchar2,
resultoutnumber
);
endusers_pkgs;
程序包包体代码:
CREATEORREPLACEPACKAGEBODYusers_pkgs
IS
--定义存储过程,用于存储用户信息
ProceduresaveUsers
(var_userIdoutVarchar2,
var_loginNameinvarchar2,
var_passwordinvarchar2,
var_nameinvarchar2,
var_descriptioninvarchar2,
resultoutnumber
)
AS
isExistinteger:
=0;
userHasExistexception;
BEGIN
selectcount(*)intoisExistfromuserswherelower(loginName)=lower(var_loginName);
ifisExist>0then
raiseuserHasExist;
else
insertintousers(loginName,password,name,description)
values(var_loginName,var_password,var_name,var_description);
selectuserIdintovar_useridfromuserswherelower(loginName)=lower(var_loginName);
commit;
result:
=Success;
endif;
EXCEPTION
WHENuserHasExistTHEN
var_usrId:
=null;
result:
=UserExist;
WHENothersTHEN
result:
=UnKonwError;
ENDsaveUsers;
--定义存储过程,用于根据userId查找用户信息
ProceduregetUsers
(var_userIdinVarchar2,
var_useroutcurUser,
resultoutnumber
)
AS
notExistexception;
rec_userusers%rowtype;
BEGIN
SELECT*INTOrec_userFROMusersWHERElower(userId)=lower(var_userId);
IFSQL%notfoundTHEN
OPENvar_userFORselect*fromdual;
RAISEnotExist;
ELSE
OPENvar_userFORselect*fromusersWHERElower(userId)=lower(var_userId);
result:
=success;
ENDIF;
EXCEPTION
WHENnotExistTHEN
result:
=UserNotExist;
WHENothersTHEN
result:
=UnKonwError;
ENDgetUsers;
--定义存储过程,用于根据登录名和密码查找用户信息
ProceduregetUsers
(var_loginNameinVarchar2,
var_passwordinvarchar2,
var_useroutcurUser,
resultoutnumber
)
AS
notExistorPasswordErrorexception;
rec_userusers%rowtype;
BEGIN
SELECT*INTOrec_userFROMusers
WHERElower(loginName)=lower(var_loginName)ANDlower(password)=lower(var_password);
IFSQL%notfoundTHEN
OPENvar_userFORselect*fromdual;
RAISEnotExistorPasswordError;
ELSE
OPENvar_userFORselect*fromusersWHERElower(loginName)=lower(var_loginName)ANDlower(password)=lower(var_password);
result:
=success;
ENDIF;
EXCEPTION
WHENnotExistorPasswordErrorTHEN
result:
=UserNotExistorPasswordError;
WHENothersTHEN
result:
=UnKonwError;
ENDgetUsers;
--定义存储过程,用于根据userId修改用户的其他信息
ProcedureupdateUsers
(var_userIdinVarchar2,
var_oldPasswordinvarchar2,
var_newPasswordinvarchar2,
var_newNameinvarchar2,
var_newDescriptioninvarchar2,
resultoutnumber
)
AS
v_pwdvarchar2(20);
passwordErrorexception;
BEGIN
selectpasswordintov_pwdfromuserswhereuserId=var_userId;
ifv_pwd<>var_oldPasswordthen
raisepasswordError;
else
updateusers
setpassword=var_newPassword,name=var_newName,
description=var_newDescription
whereuserId=var_userId;
result:
=success;
endif;
EXCEPTION
WHENpasswordErrorTHEN
result:
=UserNotExistorPasswordError;
WHENothersTHEN
result:
=UnKonwError;
ENDupdateUsers;
ENDusers_pkgs;
1.7.2程序包events_pkgs
功能:
程序包规范:
程序包包体代码:
2前台页面设计
2.1连接文件conn.jsp
代码如下:
<%
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
//xtj为计算机名,1521为监听端口号,orcl为实例名
Stringurl="jdbc:
oracle:
thin:
@xtj:
1521:
orcl";
//test为数据库用户名
Stringuser="test";
//oracle为密码
Stringpassword="oracle";
//建立连接对象
Connectionconn=DriverManager.getConnection(url,user,password);
%>
2.2登录页面login.jsp
代码如下:
<%@pagelanguage="java"import="java.util.*"%>
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport="java.sql.*"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
--该javascript函数用于检测用户名及密码是否为空-->
functionregcheck()
{
if(document.form1.loginname.value=="")
{window.alert("用户名不可以为空!
请重新输入!
");
returnfalse;
}
if(document.form1.password.value=="")
{window.alert("密码不可以为空!
请重新输入!
");
returnfalse;}
}
2.3登录执行页面loginSuccess.jsp
代码如下:
<%@pagelanguage="java"import="java.util.*"%>
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport="java.sql.*"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<%@includefile="conn.jsp"%>
<%
//取表单中的登录名和密码
Strings1=request.getParameter("loginname");
Strings2=request.getParameter("password");
s1=newString(s1.getBytes("ISO8859_1"),"GBK");
//调用带输入输出参数的程序包中的存储过程
Stringprocedure="{callusers_pkgs.getUsers(?
?
?
?
)}";
CallableStatementcs=null;
cs=conn.prepareCall(procedure);
//设置输入参数
cs.setString(1,s1);
cs.setString(2,s2);
//设置输出参数
cs.registerOutParameter(3,oracle.jdbc.OracleTypes.CURSOR);
cs.registerOutParameter(4,oracle.jdbc.OracleTypes.NUMBER);
//执行存储过程
cs.execute();
//取输出参数结果值
intx2=cs.getInt(4);
//如果存储过程执行成功--用户名及密码正确
if(x2==1){
//取输出参数--返回游标记录集
ResultSetrs=(ResultSet)cs.getObject(3);
rs.next();
Stringx1=rs.getString
(1);
//设置SESSION值被其他页面引用
session.setAttribute("userId",x1);
session.setAttribute("l
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 个人办公助理 个人 办公 助理 案例 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)