大数据库oracle银行管理系统.docx

上传人:b****3 文档编号:4795619 上传时间:2023-05-07 格式:DOCX 页数:38 大小:202.60KB
下载 相关 举报
大数据库oracle银行管理系统.docx_第1页
第1页 / 共38页
大数据库oracle银行管理系统.docx_第2页
第2页 / 共38页
大数据库oracle银行管理系统.docx_第3页
第3页 / 共38页
大数据库oracle银行管理系统.docx_第4页
第4页 / 共38页
大数据库oracle银行管理系统.docx_第5页
第5页 / 共38页
大数据库oracle银行管理系统.docx_第6页
第6页 / 共38页
大数据库oracle银行管理系统.docx_第7页
第7页 / 共38页
大数据库oracle银行管理系统.docx_第8页
第8页 / 共38页
大数据库oracle银行管理系统.docx_第9页
第9页 / 共38页
大数据库oracle银行管理系统.docx_第10页
第10页 / 共38页
大数据库oracle银行管理系统.docx_第11页
第11页 / 共38页
大数据库oracle银行管理系统.docx_第12页
第12页 / 共38页
大数据库oracle银行管理系统.docx_第13页
第13页 / 共38页
大数据库oracle银行管理系统.docx_第14页
第14页 / 共38页
大数据库oracle银行管理系统.docx_第15页
第15页 / 共38页
大数据库oracle银行管理系统.docx_第16页
第16页 / 共38页
大数据库oracle银行管理系统.docx_第17页
第17页 / 共38页
大数据库oracle银行管理系统.docx_第18页
第18页 / 共38页
大数据库oracle银行管理系统.docx_第19页
第19页 / 共38页
大数据库oracle银行管理系统.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

大数据库oracle银行管理系统.docx

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

大数据库oracle银行管理系统.docx

大数据库oracle银行管理系统

·

摘要

 随着计算机的飞速发展及应用领域的扩大,特别是计算机网络和电子商务的发展,极大的改变了商业银行传统的经营模式。

能够为客户提供方便、快捷、安全的服务,也能够有效的降低银行的营运成本,这是银行存储系统追求的目标。

目前,对于现代化银行运营的要求是客户可以实现方便安全的业务交易,银行职员可以进行高效合理的工作管理,实现银行业务电子化。

方便用户快速的进行存款、取款、修改密码以及完成一些转账的交易,大大提高办公效率,能够及时、准确、有效的帮用户办理各种繁琐的手续,也减缓了银行工作人员的压力。

一、设计银行管理系统结构图

系统结构图

 

 

 

图系统结构图

二、银行管理系统E-R图和表结构

 

 

表结构

通过对银行管理系统的需求分析,应该为该系统设计3个表,分别为用户信息表、银行卡信息表和交易信息表。

用户信息表用于存储用户的基本信息,包括用户的编号、开户名、身份证号、联系电话和家庭住址等信息

表用户信息表

字段名称

字段描述

数据类型

长度

约束

customer

用户编号

Number

4

主键

customer

开户名

Varhcar2

20

必填

PID

身份证号

Varchar2

18

必填

telephone

联系电话

Varchar2

13

必填

Address

家庭地址

Varchar2

50

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

表银行卡信息表

字段名称

字段描述

数据类型

长度

约束

cardID

卡号

Varchar2

20

主键

curType

货币种类

Varhcar2

10

必填

SavingType

存款类型

Varchar2

8

非空

Opendate

开户日期

DATETIME

必填

openmoney

开户金额

Number

8

必填

Balance

帐户余额

Number

8

必填

Isreportloss

是否挂失

Varchar2

2

必填

Customer

开户编号

Varchar

4

外键

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

表交易信息表

字段名称

字段描述

数据类型

长度

属性

Transdate

交易日期

Datetime

PK

cardID

卡号

Varhcar2

20

非空

transTYPE

交易类型

VARCHAR2

4

非空

transMoney

交易金额

NUMBER

4

非空

remark

备注

VARCHAR2

50

非空

三、创建系统数据表

创建表空间和用户

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

\,代码如下图:

图表空间和用户

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

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

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位的手机号码。

图用户信息表

创建银行卡信息表

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

其中,cardID为主键,必须为10103756xxxxxxxx的格式;CURTYPE默认为RMB,openmoney必须不能低于一元;balance也必须不能低于一元;pass默认为;ISREPORTLOSS的值必须是“是/否”中之一,默认为否;customerID为外键,引用userInfo表中的customerID列。

创建交易信息表

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

其中,transdate默认为系统当前日期;cardid位外键,引用cardinfo表中的cardid列,可重复;transtype只能是“存入/取出”之一;transmoney必须大于0.

图交易信息表

 

四、模拟常规业务操作

建立更新账号触发器

结果如下:

图创建beforeupdate触发器

存取款交易操作

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

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

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

代码如下:

reateorreplacetriggertrig_trans

beforeinsertorupdate

ontransinfo

foreachrow

declare

my_balancenumber;

rate_exceptionexception;

begin

selectbalanceintomy_balancefromcardinfowherecardid=:

;

if:

='支取'then

ifmy_balance<:

then

('对不起,您的余额不足!

');

return;

elsifmy_balance>:

then

updatecardinfosetbalance=balance-:

wherecardId=:

;

endif;

elsif:

='存入'then

updatecardinfosetbalance=balance+:

wherecardid=:

;

endif;

('交易成功!

');

exception

whenrate_exceptionthen

raise_application_error(-20001,'交易失败');

end;

select*fromcardInfo_vw;

insertintotransInfo(transdate,cardID,transType,transMoney)

values(sysdate,'1010357688886666','存入',1000);

commit;

用户开户

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

如果收到卡号已经被使用,得提醒用户开户失败;如果当前开户人已经在此行开过户,则提示用户此身份证已有账号。

结果如下图:

更改密码

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

代码:

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

('旧密码不正确!

');

endif;

endif;

commit;

exception

whenothersthen

('密码更改失败!

');

end

账号挂失

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

结果如图:

余额查询

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

”,

代码:

CREATEORREPLACEprocedurepro_query_balance(

card_idvarchar2,--帐户

card_passvarchar2)--密码

as

iNUMBER:

=0;

not_data_foundexception;

user_balanceNUMBER(8);

begin

selectcount(*)intoifromcardInfowherecardID=card_idandpass=card_pass;

ifi=0then

raisenot_data_found;

else

selectbalanceintouser_balancefromcardInfowherecardID=card_idandpass=card_pass;

('你帐号的余额为:

'||user_balance);

endif;

exception

whennot_data_foundthen

('帐号或密码错误!

');

end;

转账业务设置

自助银行管理系统办理转账业务时,要求用户输入正确的用于转账的卡号和密码,以及获得转账的卡号和转账金额,系统将根据用户输入的卡号和密码,检测该银行卡是否存在,如果存在,则判断该银行卡余额是否大于要转账的余额;如果大于,则向表中插入两条交易记录,一条支取的记录,一条为存入的记录,并提示用户转账成功;如果用户输入的卡号和密码不正确,则提示“你的卡号或密码有误!

”。

银行盈利结算

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

代码如图:

撤户操作

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

代码如下图

五、总结

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

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

 

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

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

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

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

 

参考文献

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

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

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

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

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

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

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

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

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

[10]Lan Abramson,Micheael Abbey,Michael ,窦朝辉.oracle database 11g:

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

附录

程序源代码:

CREATETABLESPACEspace_zqp

DATAFILE'D:

\'SIZE50M

AUTOEXTENDONNEXT5MMAXSIZEUNLIMITED;

创建用户zqp,用户密码:

zqp

CREATEUSERzqp

IDENTIFIEDBYzqp

DEFAULTTABLESPACEspace_zqp;

TEMPORARYTABLESPACEtemp

QUOTA20MONspace_xianglin;//用户已创建

GRANTDBATOXIANGLIN;//授权成功

CONNECTxianglin/accp;//已连接

REATETABLEuserInfo

customerIDNUMBER(4)NOTNULL,

customerNameVARCHAR2(20)NOTNULL,

PIDVARCHAR2(18)NOTNULL,

telephoneVARCHAR2(13)NOTNULL,

addressVARCHAR2(50)

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

PARTITIONBYHASH(PID)

PARTITIONpid1,

PARTITIONpid2,

PARTITIONpid3,

);

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

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;//序列已创建

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','dd/mm/yyyy')),

PARTITIONopenDate_p3VALUESLESSTHAN(TO_DATE('01/07/2007','dd/mm/yyyy')),

PARTITIONopenDate_p4VALUESLESSTHAN(TO_DATE('01/10/2007','dd/mm/yyyy')),

PARTITIONopenDate_p5VALUESLESSTHAN(TO_DATE('01/01/2008','dd/mm/yyyy')),

PARTITIONopenDate_p6VALUESLESSTHAN(TO_DATE('01/04/2008','dd/mm/yyyy')),

PARTITIONopenDate_p7VALUESLESSTHAN(TO_DATE('01/07/2008','dd/mm/yyyy')),

PARTITIONopenDate_p8VALUESLESSTHAN(TO_DATE('01/10/2008','dd/mm/yyyy')),

PARTITIONopenDate_p9VALUESLESSTHAN(TO_DATE('01/01/2009','dd/mm/yyyy')),

PARTITIONopenDate_p10VALUESLESSTHAN(TO_DATE('01/04/2009','dd/mm/yyyy')),

PARTITIONopenDate_p11VALUESLESSTHAN(TO_DATE('01/07/2009','dd/mm/yyyy')),

PARTITIONopenDate_p12VALUESLESSTHAN(maxvalue)

);//表已创建

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

ALTERTABLEcardIofo

ADDCONSTRAINTPK_cardIDPRIMARYKEY(cardID)

ADDCONSTRAINTCK_cardIDCHECK(

TRANSLATE(cardID,'09','xxxxxxxxxx')='xxxxxxxxxxxxxxxx'AND

INSTR(cardID,'10103576')=1)

ADDCONSTRAINTCK_savCHECK(

savingTypeIN('活期','定期两便','定期'))

ADDCONSTRAINTCK_openMoneyCHECK(openMoney>=1)

ADDCONSTRAINTCK_passCHECK(LENGTH(pass)=6)

ADDCONSTRAINTCK_IsRePortLossCHECK(IsReportLossIN('是','否'))

ADDCONSTRAINTFK_customerIDFOREIGNKEY(customerID)REFERENCESuserInfo(customerID)

MODIFY(curTypeDEFAULT'RMB')

MODIFY(openDateDEFAULTsysdate)

MODIFY(passDEFAULT888888)

MODIFY(IsReportLossDEFAULT'否');//表已更改

CREATETABLEtransInfo

transDateDATENOTNULL,

card

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2