数据库oracle银行管理系统Word下载.docx

上传人:b****5 文档编号:20958248 上传时间:2023-01-26 格式:DOCX 页数:32 大小:199.44KB
下载 相关 举报
数据库oracle银行管理系统Word下载.docx_第1页
第1页 / 共32页
数据库oracle银行管理系统Word下载.docx_第2页
第2页 / 共32页
数据库oracle银行管理系统Word下载.docx_第3页
第3页 / 共32页
数据库oracle银行管理系统Word下载.docx_第4页
第4页 / 共32页
数据库oracle银行管理系统Word下载.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

数据库oracle银行管理系统Word下载.docx

《数据库oracle银行管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《数据库oracle银行管理系统Word下载.docx(32页珍藏版)》请在冰豆网上搜索。

数据库oracle银行管理系统Word下载.docx

身份证号

Varchar2

18

telephone

联系电话

13

Address

家庭地址

50

银行卡信息表用于存储银行卡相关的信息主要包括卡号、存储的货币类型,存款方式,开户时间,开户金额,余额、银行卡密码、是否挂失和用户编号等信息,

表2.2银行卡信息表

cardID

卡号

curType

货币种类

10

SavingType

存款类型

8

非空

Opendate

开户日期

DATETIME

openmoney

开户金额

Balance

帐户余额

Isreportloss

是否挂失

2

Customer

开户编号

Varchar

外键

交易信息表用于存储用户的交易记录,主要包括交易日期,卡号、交易类型,交易金额等信息。

表2.3交易信息表

属性

Transdate

交易日期

Datetime

PK

transTYPE

交易类型

VARCHAR2

transMoney

交易金额

NUMBER

remark

备注

三、创建系统数据表

3.1创建表空间和用户

使用system用户连接数据库后,创建表空间space_zqp,指定数据文件为D:

\Bank.dbf,代码如下图:

图3.1表空间和用户

3.2创建用户信息表并添加约束

用户信息表保存了用户的基本信息,该表的创建语句如下,

CREATETABLEuserInfo

customerIDNUMBER(4)NOTNULL,

customerNameVARCHAR2(20)NOTNULL,

PIDVARCHAR2(18)NOTNULL,

telephoneVARCHAR2(13)NOTNULL,

addressVARCHAR2(50)

PARTITIONBYHASH(PID)

PARTITIONpid1,

PARTITIONpid2,

PARTITIONpid3,

);

ALTERTABLEuserInfo

ADDCONSTRAINTPK_customerIDPRIMARYKEY(customerID)

ADDCONSTRAINTUK_PIDUNIQUE(PID)

ADDCONSTRAINTCK_PIDCHECK(LENGTH(PID)=18ORLENGTH(PID)=15)

ADDCONSTRAINTCK_telephoneCHECK(

telephoneLIKE'

[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

OR

LENGTH(telephone)=13);

------------------创建可以自动生成自增主列的序列customerid_seq

CREATESEQUENCEcustomerid_seq

STARTWITH1

INCREMENTBY1

NOCACHE

如上述语句所示,在userInfo表中包含用户编号(customerid)、开户名(customername)、身份证号(PID)、联系电话(telephone)、家庭住址(address)。

其中,customerid为主键,自增(从1开始);

PID只能是18位或15位,并且是唯一的;

telephone必须是xxxx-xxxxxxxx的格式或13位的手机号码。

图3.2用户信息表

3.3创建银行卡信息表

银行卡信息表(cardinfo)中包含了卡号(cardid),货币种类(curType),存款类型(savingtype),开户日期(opendate),开户金额(openmoney),余额(balance),密码(pass),是否挂失(isREPORTLOSS)和用户编号(customerID)的信息。

其中,cardID为主键,必须为10103756xxxxxxxx的格式;

CURTYPE默认为RMB,openmoney必须不能低于一元;

balance也必须不能低于一元;

pass默认为88888888;

ISREPORTLOSS的值必须是“是/否”中之一,默认为否;

customerID为外键,引用userInfo表中的customerID列。

图3.3

3.4创建交易信息表

交易信息表中包含了五个字段,分别为transdate(交易日期),cardID(卡号)、TRANSTYPE(交易类型),transmoney(交易金额)和remark(备注)。

其中,transdate默认为系统当前日期;

cardid位外键,引用cardinfo表中的cardid列,可重复;

transtype只能是“存入/取出”之一;

transmoney必须大于0.

图3.4交易信息表

四、模拟常规业务操作

4.1建立更新账号触发器

结果如下:

图4.1创建beforeupdate触发器

4.2存取款交易操作

当用户办理取款或存款业务时,不仅需要向交易信息表中添加一条交易记录,还需要修改当前账户中的余额,如果办理取款业务,如果将当前账户总的余额减去支取余额,如果办理托管业务,多叫当前账户中的金额加上存款金额。

在交易信息表中包含一个名为transtype的字段,该字段用于表示交易类型,取值范围必须是存入或者自取,因此可以为transINFO表创建BEFOREINSERTR触发器。

根据要办理里的交易类型,判断出当前的交易类型,如果transtype字段值为“支取”,则表示要办理取款业务,检测当前余额是否大于或等于要支取的金额,如果满足条件,则要修改cardinfo表中的balance字段值,将该字段值减去交易金额(transmoney),如果transtype字段值为“存入”,则表示要办理存款业务,修改cardinfo表中的balance字段值,将该值加上交易金额(transmoney)。

代码如下:

reateorreplacetriggertrig_trans

beforeinsertorupdate

ontransinfo

foreachrow

declare

my_balancenumber;

rate_exceptionexception;

begin

selectbalanceintomy_balancefromcardinfowherecardid=:

new.cardid;

if:

new.transtype='

支取'

then

ifmy_balance<

:

new.transmoney-1then

dbms_output.put_line('

对不起,您的余额不足!

'

return;

elsifmy_balance>

new.transmoney-1then

updatecardinfosetbalance=balance-:

new.transmoneywherecardId=:

new.cardId;

endif;

elsif:

存入'

then

updatecardinfosetbalance=balance+:

new.transmoneywherecardid=:

交易成功!

exception

whenrate_exceptionthen

raise_application_error(-20001,'

交易失败'

end;

select*fromcardInfo_vw;

insertintotransInfo(transdate,cardID,transType,transMoney)

values(sysdate,'

1010357688886666'

'

1000);

commit;

4.3用户开户

根据身份证号查询是否在该行开过户,为万无一失,还需要查询生成的卡号是否已经被使用,如果这两个条件都符合要求(此人从未在该行开过户,生成的卡号也无人使用),则向userinfo表中插入开户人的基本信息记录,并根据开户人的身份证号获取开户人的编号,从而向cardinfo表中插入开户人的基本信息记录,同时还需要将生成的卡号显示给开户人。

如果收到卡号已经被使用,得提醒用户开户失败;

如果当前开户人已经在此行开过户,则提示用户此身份证已有账号。

结果如下图:

图4.2

4.4更改密码

一个银行账号对应一个密码,因此当用户输入的卡号密码相对应时,可以为该银行卡设置新的密码,

代码:

createorreplaceprocedureproc_updateUserPass(

temp_cardidvarchar2,--卡号

oldpassvarchar2,--旧密码

newpassvarchar2--新密码

as

inumber;

pass_iVARCHAR2(6);

begin

selectcount(*)intoifromcardInfowherecardID=temp_cardid;

selectpassintopass_ifromcardInfowherecardID=temp_cardid;

ifi=0then

此卡号不存在!

elsifi>

0then

ifpass_i=oldpassthen

UPDATEcardInfosetpass=newpasswherecardid=temp_cardid;

密码更改成功!

else

旧密码不正确!

exception

whenothersthen

密码更改失败!

end

4.5账号挂失

当用户的银行卡丢失后,可以对该卡进行挂失,银行管理系统需要验证用户的真实性,当用户输入银行卡号和密码相对应,才可以对该卡进行挂失操作,即修改cardinfo表中的IsreportLOSS列为“是”,否则提示“无权挂失”。

结果如图:

图4.3

4.6余额查询

用户可以使用银行管理系统,办理余额查询等业务,系统要求用户输入银行卡账号和密码,当用户输入的账号和密码都合法时,系统就查询该用户的账户余额,否则将提示用户“账号或密码错误!

”,

CREATEORREPLACEprocedurepro_query_balance(

card_idvarchar2,--帐户

card_passvarchar2)--密码

iNUMBER:

=0;

not_data_foundexception;

user_balanceNUMBER(8);

selectcount(*)intoifromcardInfowherecardID=card_idandpass=card_pass;

raisenot_data_found;

selectbalanceintouser_balancefromcardInfowherecardID=card_idandpass=card_pass;

你帐号的余额为:

||user_balance);

whennot_data_foundthen

帐号或密码错误!

4.7转账业务设置

自助银行管理系统办理转账业务时,要求用户输入正确的用于转账的卡号和密码,以及获得转账的卡号和转账金额,系统将根据用户输入的卡号和密码,检测该银行卡是否存在,如果存在,则判断该银行卡余额是否大于要转账的余额;

如果大于,则向表中插入两条交易记录,一条支取的记录,一条为存入的记录,并提示用户转账成功;

如果用户输入的卡号和密码不正确,则提示“你的卡号或密码有误!

”。

4.8银行盈利结算

银行的管理人员可以统计银行的资金流通余额和盈利结算,资金流动金额等于总存入-总支数金额;

盈利结算,等于总支出金额乘以8%-总存入金额乘以3%,

代码如图:

图4.4

4.9撤户操作

当用户不再需要使用某张银行卡时,可去银行办理撤户操作,撤户操作需要用户输入正确的卡号和密码,系统将根据用户输入的数据对该银行卡进行验证,如果该银行卡存在,都需要将卡上的余额全部取出,并删除该卡在cardinfo表中的记录,以及在transinfo表中所有的交易记录。

代码如下图

图4.5

五、总结

通过此次课程设计,使我更加扎实的掌握了有关数据库方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。

实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。

在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。

最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。

这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。

在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!

参考文献

[1]郝安林,《Oracle11g基础教程与实验指导》,清华大学出版社

[2]王珊,《数据库系统概论》,高等教育出版社

[3]王霓虹,《数据库系统原理》,哈尔滨工业出版社(十二五规划教材)

[4]李建中,《数据库系统原理》,电子工业出版社(原理)

[5]Stephens著,《数据库设计》,机械工业出版社

[6]李丙洋.涂抹oracle--三思笔记之一步一步学oracle[M]中国水利水电出版社,2010.1 

[7] 

Karen 

Morton.Oracle 

SQL高级编程[M].人民邮电出版社,2011.11 

[8] 

梁敬彬,梁敬弘.收获不止oracle[M].电子工业出版社,2013.5 

[9] 

盖国强.循序渐进oracle数据库管理、优化与备份恢复[M].人民邮电出版社,2011.8 

[10]Lan 

Abramson,Micheael 

Abbey,Michael 

J.Corey,窦朝辉.oracle 

database 

11g:

初学者指南[M].清华大学出版社,2010-01

附录

程序源代码:

CREATETABLESPACEspace_zqp

DATAFILE'

D:

\Bank.dbf'

SIZE50M

AUTOEXTENDONNEXT5MMAXSIZEUNLIMITED;

创建用户zqp,用户密码:

zqp

CREATEUSERzqp

IDENTIFIEDBYzqp

DEFAULTTABLESPACEspace_zqp;

TEMPORARYTABLESPACEtemp

QUOTA20MONspace_xianglin;

//用户已创建

GRANTDBATOXIANGLIN;

//授权成功

CONNECTxianglin/accp;

//已连接

REATETABLEuserInfo

-----根据身份证ID创建散列分区

-------------------为userInfo表添加约束条件

//表已更改

NOCACHE;

//序列已创建

CREATETABLEcardIofo

cardIDVARCHAR2(20)NOTNULL,

curTypeVARCHAR2(10)NOTNULL,

savingTypeVARCHAR2(8)NOTNULL,

openDateDATENOTNULL,

openMoneyNUMBER(8)NOTNULL,

balanceNUMBER(8)NOTNULL,

passVARCHAR2(6)NOTNULL,

IsReportLossVARCHAR2

(2)NOTNULL,

customerIDNUMBER(4)NOTNULL

-------根据开户日期创建表分区

PARTITIONBYRANGE(openDate)

PARTITIONopenDate_p1VALUESLESSTHAN(TO_DATE('

01/01/2007'

dd/mm/yyyy'

)),

PARTITIONopenDate_p2VALUESLESSTHAN(TO_DATE('

01/04/2007'

PARTITIONopenDate_p3VALUESLESSTHAN(TO_DATE('

01/07/2007'

PARTITIONopenDate_p4VALUESLESSTHAN(TO_DATE('

01/10/2007'

PARTITIONopenDate_p5VALUESLESSTHAN(TO_DATE('

01/01/2008'

PARTITIONopenDate_p6VALUESLESSTHAN(TO_DATE('

01/04/2008'

PARTITIONopenDate_p7VALUESLESSTHAN(TO_DATE('

01/07/2008'

PARTITIONopenDate_p8VALUESLESSTHAN(TO_DATE('

01/10/2008'

PARTITIONopenDate_p9VALUESLESSTHAN(TO_DATE('

01/01/2009'

PARTITIONopenDate_p10VALUESLESSTHAN(TO_DATE('

01/04/2009'

PARTITIONopenDate_p11VALUESLESSTHAN(TO_DATE('

01/07/2009'

PARTITIONopenDate_p12VALUESLESSTHAN(maxvalue)

//表已创建

-------------------------为cardInfo表添加约束条件

ALTERTABLEcardIofo

ADDCONSTRAINTPK_cardIDPRIMARYKEY(cardID)

ADDCONSTRAINTCK_cardIDCHECK(

TRANSLATE(cardID,'

0123456789'

xxxxxxxxxx'

)='

xxxxxxxxxxxxxxxx'

AND

INSTR(cardID,'

10103576'

)=1)

ADDCONSTRAINTCK_s

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

当前位置:首页 > 成人教育 > 自考

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

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