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

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

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

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

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

数据库oracle银行管理系统

摘要

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

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

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

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

一、""行管理系"构"

1.1系"构"

 

"1.1系"构"

二、"行管理系"E-R"和表"构

2.1E-R"

"2.1

图2.2

2.2表"构

通""行管理系"的需求分析,""系""3"表,分"用"信息表、"行卡信息表和交易信息表。

用"信息表用于存"用"的根本信息,包括用"的"、"名、身份"、"系"和家庭住址等信息

表2.1用"信息表

字段名"

字段描述

"据"型

"度

"束

customer

用""

Number

4

主"

customer

"名

Varhcar2

20

必填

PID

身份"

Varchar2

18

必填

telephone

"系"

Varchar2

13

必填

Address

家庭地址

Varchar2

50

"

"行卡信息表用于存"行卡相"的信息主要包括卡"、存"的""型,存款方式,"","金",余"、"行卡密"、是否挂失和用""等信息,

表2.2"行卡信息表

字段名"

字段描述

"据"型

"度

"束

cardID

卡"

Varchar2

20

主"

curType

"种"

Varhcar2

10

必填

SavingType

存款"型

Varchar2

8

非空

Opendate

"日期

DATETIME

必填

openmoney

"金"

Number

8

必填

Balance

"余"

Number

8

必填

Isreportloss

是否挂失

Varchar2

2

必填

Customer

""

Varchar

4

外"

交易信息表用于存"用"的交易",主要包括交易日期,卡"、交易"型,交易金"等信息。

表2.3交易信息表

字段名"

字段描述

"据"型

"度

"性

Transdate

交易日期

Datetime

PK

cardID

卡"

Varhcar2

20

非空

transTYPE

交易"型

VARCHAR2

4

非空

transMoney

交易金"

NUMBER

4

非空

remark

"注

VARCHAR2

50

非空

三、"建系"据表

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必"是****-********的格式或13位的手机"。

"3.2用"信息表

3.3"建"行卡信息表

"行卡信息表〔cardinfo〕中包含了卡"(cardid),"种"(curType),存款"型〔savingtype〕,"日期〔opendate〕,"金"〔openmoney〕,余"〔balance〕,密"〔pass〕,是否挂失〔isREPORTLOSS〕和用""〔customerID〕的信息。

其中,cardID"主",必"10103756********的格式;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:

new.transtype='存入'then

updatecardinfosetbalance=balance+:

new.transmoneywherecardid=:

new.cardId;

endif;

dbms_output.put_line('交易成功!

');

exception

whenrate_exceptionthen

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

end;

select*fromcardInfo_vw;

insertintotransInfo(transdate,cardID,transType,transMoney)

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

mit;

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

dbms_output.put_line('此卡"不存在!

');

elsifi>0then

ifpass_i=oldpassthen

UPDATEcardInfosetpass=newpasswherecardid=temp_cardid;

dbms_output.put_line('密"更改成功!

');

else

dbms_output.put_line('"密"不正确!

');

endif;

endif;

mit;

exception

whenothersthen

dbms_output.put_line('密"更改失"!

');

end

4.5"挂失

"用"的"行卡"失后,可以"卡"行挂失,"行管理系"需要"用"的真"性,"用"入"行卡"和密"相",才可以"卡"行挂失操作,即修改cardinfo表中的IsreportLOSS列"“是〞,否"提示“"挂失〞。

"果如":

"4.3

4.6余"查"

用"可以使用"行管理系","理余"查"等",系"要求用"入"行卡"和密","用"入的"和密"都合法",系"就查"用"的"余",否"提示用"“"或密""!

〞,

代":

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;

dbms_output.put_line('你"的余":

'||user_balance);

endif;

exception

whennot_data_foundthen

dbms_output.put_line('"或密""!

');

end;

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

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,'0123456789','**********')='****************'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(passDEFAUL

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

当前位置:首页 > 工程科技 > 电子电路

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

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