《个人办公助理》案例指导书文档格式.docx

上传人:b****8 文档编号:22664694 上传时间:2023-02-05 格式:DOCX 页数:29 大小:21.81KB
下载 相关 举报
《个人办公助理》案例指导书文档格式.docx_第1页
第1页 / 共29页
《个人办公助理》案例指导书文档格式.docx_第2页
第2页 / 共29页
《个人办公助理》案例指导书文档格式.docx_第3页
第3页 / 共29页
《个人办公助理》案例指导书文档格式.docx_第4页
第4页 / 共29页
《个人办公助理》案例指导书文档格式.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

《个人办公助理》案例指导书文档格式.docx

《《个人办公助理》案例指导书文档格式.docx》由会员分享,可在线阅读,更多相关《《个人办公助理》案例指导书文档格式.docx(29页珍藏版)》请在冰豆网上搜索。

《个人办公助理》案例指导书文档格式.docx

注意:

\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

用户登录名称

惟一

Password

用户登录密码

Name

用户姓名

Description

关于用户的描述

Varchar2(2000)

补充说明

用户的惟一编号构成为:

Usr0000+序列值

CreatetableUsers

(UserIdVarchar2(20)primarykey,

LoginNameVarchar2(20)uniquenotnull,

PasswordVarchar2(20)notnull,

NameVarchar2(20),

DescriptionVarchar2(2000)

);

1.4.2事件信息表Events

Events

EventId

事件的惟一编号

EventName

事件的标题

Varchar2(100)

EventContent

事件的内容梗概

EventDesc

事件描述

EventExer

事件执行者

外键

PlanBeginTime

计划开始时间

date

PlanFinishTime

计划结束时间

FinalFinishTime

最晚结束时间

ActBeginTime

实际开始时间

ActFinishTime

实际结束时间

IsFinished

事件是否完成

Char

(1)

默认为’N’

IsExpired

事件是否过期

IsDeleted

事件是否删除

序列的惟一编号构成为:

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,

--定义存储过程,用于根据登录名和密码查找用户信息

(var_loginNameinVarchar2,

--定义存储过程,用于根据userId修改用户的其他信息

ProcedureupdateUsers

var_oldPasswordinvarchar2,

var_newPasswordinvarchar2,

var_newNameinvarchar2,

var_newDescriptioninvarchar2,

endusers_pkgs;

程序包包体代码:

CREATEORREPLACEPACKAGEBODYusers_pkgs

IS

ProceduresaveUsers

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;

=UserExist;

WHENothersTHEN

=UnKonwError;

ENDsaveUsers;

ProceduregetUsers

notExistexception;

rec_userusers%rowtype;

SELECT*INTOrec_userFROMusersWHERElower(userId)=lower(var_userId);

IFSQL%notfoundTHEN

OPENvar_userFORselect*fromdual;

RAISEnotExist;

ELSE

OPENvar_userFORselect*fromusersWHERElower(userId)=lower(var_userId);

=success;

ENDIF;

WHENnotExistTHEN

=UserNotExist;

ENDgetUsers;

notExistorPasswordErrorexception;

rec_userusers%rowtype;

SELECT*INTOrec_userFROMusers

WHERElower(loginName)=lower(var_loginName)ANDlower(password)=lower(var_password);

RAISEnotExistorPasswordError;

OPENvar_userFORselect*fromusersWHERElower(loginName)=lower(var_loginName)ANDlower(password)=lower(var_password);

WHENnotExistorPasswordErrorTHEN

=UserNotExistorPasswordError;

v_pwdvarchar2(20);

passwordErrorexception;

selectpasswordintov_pwdfromuserswhereuserId=var_userId;

ifv_pwd<

>

var_oldPasswordthen

raisepasswordError;

else

updateusers

setpassword=var_newPassword,name=var_newName,

description=var_newDescription

whereuserId=var_userId;

WHENpasswordErrorTHEN

=UserNotExistorPasswordError;

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"

html>

<

head>

title>

登录页面<

/title>

/head>

--该javascript函数用于检测用户名及密码是否为空-->

scriptlanguage="

javascript"

functionregcheck()

{

if(document.form1.loginname.value=="

"

{window.alert("

用户名不可以为空!

请重新输入!

returnfalse;

}

if(document.form1.password.value=="

密码不可以为空!

/script>

body>

formname="

form1"

id="

action="

loginSuccess.jsp"

method="

post"

onSubmit="

returnregcheck()"

tablewidth="

100%"

border="

0"

cellspacing="

cellpadding="

4"

<

tr>

tdvalign="

top"

br>

/td>

/tr>

<

tdbgcolor="

#FFFFFF"

b>

/b>

#ffffff"

td>

fontcolor="

#CCCCCC"

tdalign="

right"

labelfor="

t1"

登录名:

/label>

td>

inputtype="

text"

name="

loginname"

<

t2"

密码:

password"

submit"

value="

提交"

/table>

/form>

/body>

/html>

2.3登录执行页面loginSuccess.jsp

登录成功页面<

%@includefile="

conn.jsp"

%

//取表单中的登录名和密码

Strings1=request.getParameter("

Strings2=request.getParameter("

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);

l

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 天文地理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1