数据库oracle银行管理系统 .docx
《数据库oracle银行管理系统 .docx》由会员分享,可在线阅读,更多相关《数据库oracle银行管理系统 .docx(48页珍藏版)》请在课桌文档上搜索。
1、摘要1一、设计银行管理系统结构图11未勾2二、银行管理系统E-R图和表结构2IER*132. 2木勾.5三、创建系统数据表3.1创建表空间和用户63. 2创建用户信息表并添加约束63. 3创建银行卡信息表83. 4仓J彳口,息、四、模拟常规业务操作4.1建立更新账号触发器114. 2存取款交易操作1143JIJJI134. 4j1.i.164. 5账号挂失1746184. 7转账业务设置204. 8银行盈利结算204. 9撤户操作21五、总结23参考文献24附录25随着计算机的飞速发展及应用领域的扩大,特别是计算机网络和电子商务的发展,极大的改变了商业银行传统的经营模式。能够为客户提供方便、快
2、捷、安全的服务,也能够有效的降低银行的营运成本,这是银行存储系统追求的目标。目前,对于现代化银行运营的要求是客户可以实现方便安全的业务交易,银行职员可以进行高效合理的工作管理,实现银行业务电子化。方便用户快速的进行存款、取款、修改密码以及完成一些转账的交易,大大提高办公效率,能够及时、准确、有效的帮用户办理各种繁琐的手续,也减缓了银行工作人员的压力。一、设计银行管理系统结构图1.1系统结构图图1.1系统结构图2.1E-R图二、银行管理系统E-R图和表结构图2.1开户图2.22. 2表结构通过对银行管理系统的需求分析,应该为该系统设计3个表,分别为用户信息表、银行卡信息表和交易信息表。用户信息表
3、用于存储用户的基本信息,包括用户的编号、开户名、身份证号、联系电话和家庭住址等信息表2.1用户信息表字段名称字段描述数据类型长度约束customer用户编号Number4主键customer开户名Varhcar220必填PID身份证号Varchar218必填te1.ephone联系电话Varchar213必填Address家庭地址Varchar250无银行卡信息表用于存储银行卡相关的信息主要包括卡号、存储的货币类型,存款方式,开户时间,开户金额,余额、银行卡密码、是否挂失和用户编号等信息,表2.2银行卡信息表字段名称字段描述数据类型长度约束CardID卡号Varchar220主键CurType
4、货币种类Varhcar210必填SavingType存款类型Varchar28非空Opendate开户口期DATETIME必填openmoney开户金额Number8必填Ba1.ance帐户余额Number8必填Isreport1.osS是否挂失Varchar22必填Customer开户编号Varchar4外键交易信息表用于存储用户的交易记录,主要包括交易日期,卡号、交易类型,交易金额等信息。表2.3交易信息表字段名称字段描述数据类型长度属性Transdate交易日期DatetimePKCardID卡号Varhcar220非空transTYPE交易类型VARCHAR24非空transMoney
5、交易金额NUMBER1非空remark备泞VARCHAR250非空三、创建系统数据表2.1 创建表空间和用户使用system用户连接数据库后,创建表空间SPaCe.zqp,指定数据文件为D:Bank.dbf,代码如下图:SQ1.CREATETAB1.ESrACEspace_zqp2DATAFI1.ED:Bank.dbfSIZE50M3AUTOEXTENDONNEXT5MMAXSIZEUN1.IMITED:苣空间已创建。createuserzqpIDENTIFIEDBYzqpDEFAU1.TTAB1.ESPACEspace_zqpTEMPORARYTAB1.ESPACEtempQUOTA20MO
6、Nspacezqp;村户已创建。EQ1.grantdbatozqp;授权成功。JSQ1.connectzqp/zqp;已连接。图3.1表空间和用户3. 2创建用户信息表并添加约束用户信息表保存了用户的基本信息,该表的创建语句如下,CREATETAB1.Euserinfo(CUStomerIDNUMBER(4)NOTNU1.1.,CUStomerNameVARCHAR2(20)NOTNU1.1.,PIDVARCHAR2(18)NOTNU1.1.,te1.ephoneVARCHAR2(13)NOTNU1.1.,addressVARCHAR2(50)PARTITIONBYHASH(PID)PARTI
7、TIONpid1.,PARTITIONpid2,PARTITIONpid3,);A1.TERTAB1.EuserinfoADDCONSTRAINTPK_customerIDPRIMARYKEY(customerID)ADDCONSTRAINTUK_PIDUNIQUE(PID)ADDCONSTRAINTCK_PIDCHECK(1.ENGTH(PID)=18OR1.ENGTH(PID)=15)ADDCONSTRAINTCK_teIephoneCHECK(te1.ephone1.IKE,0-90-90-90-9-0-90-90-90-90-90-90-90-91,OR1.ENGTH(te1.epho
8、ne)=13);创建可以自动生成自增主列的序列customerid_seqCREATESEQUENCEcustomerid_seqSTARTWITH1INCREMENTBY1NOCACHE如上述语句所示,在USer1.nfO表中包含用户编号(customerid)开户名(customername)身份证号(P1.D)、联系电话(te1.ephone)、家庭住址(address)。其中,customerid为主键,自增(从1开始);P1.D只能是18位或15位,并且是唯一的;te1.ephone必须是xxxx-xxxxxxxx的格式或13位的手机号码。SQ1.se1.ect*fromcard1.
9、ofo;CARDIDCURTYPESavingtyopendateOPENMONEYBA1.ANCEpassisCustomerid10103576888888否123400011RMB活期17-11月-161000100010103576888888否123400046RMB定期17-11月-168000800010103576888888否1234000511RMB定期17-11月-1650005000CARDIDCURTYPESAVINGOPENDATEOPENMONEYBA1.ANCEpassisCustomerid10103576888888否123400063RMB定期17-11月
10、-164000400010103576888888否123400077RMB定期17-11月-164400440010103576888888否1234001010RMB定期17-11月-1644004400CARDIDCURTYPESAVINGTYOPENDATEOPENMONEYBA1.ANCE图32用户信息表3.3创建银行卡信息表银行卡信息表(cardinfo)中包含了卡号(Cardid),货币种类(CUrTye),存款类型(savingtype),开户日期(opendate),开户金额(openmoney),余额(ba1.ance),密码(PaSS),是否挂失(isREPORT1.OS
11、S)和用户编号(CUStOmer1.D)的信息。其中,CardID为主键,必须为Io1.o3756xxxxXXXX的格式;CURTYPE默认为RMB,openmoney必须不能低于一元;ba1.ance也必须不能低于一元;pass默认为88888888;ISREPORT1.OSS的值必须是“是/否”中之一,默认为否;CustomerID为外键,引用userinfo表中的CustomerID列。1CREATETAB1.Ecard1.ofo2 (3 cardIDVARCHAR2(20)NOTNU1.1.,4 curTypeVARCHAR2(10)NOTNU1.1.,5 SavingTypeVARC
12、HAR2(8)NOTNU1.1.,6 openDateDATENOTNU1.1.,7 operJoneyNUKBER(8)NOTNU1.1.,8 ba1.anceNUMBER(8)NOTNU1.1.,9 passVARCHAR2(6)NOTNU1.1.,10 IsReport1.ossVARCHAR2(2)NOTNU1.1.,11 CUStomerIDNU1.BER(4)NOTNU1.1.12 )13 PARTITIONBYRANGE(openDate)14 (15 PARTITIONOPenDateq1.VA1.UES1.ESSTHAN(TO_DATEC01012007,ddyyyy,),1
13、6PARTITIONOPenDate_p2VA1.UES1.ESSTHAN(TO_DATE(,01042007,ddWyyyy,),17PARTITIONOPenDateq3VA1.UES1.ESSTHAN(TO_DATEC01/07/2007,ddmyyyy,),18PARTITIONOPenDate_p4VA1.UES1.ESSTHAN(TOJ)ATE(,01102007,ddmnyyyy,),19PARTITIONOPenDateq5VA1.UES1.ESSTHAN(TO.DATEC01/01/2008,ddmyyyy,),20PARTITIONopenDate_p6VA1.UES1.E
14、SSTHAN(TOJ)ATEC01042008,ddmyyyy,),21PARTITIONOPenDateq7VA1.UES1.ESSTHAN(TO.DATEC01/07/20081,ddmyyyy,),22PARTITIONopenDate_p8VA1.UES1.ESSTHAN(TOJ)ATEC01102008,ddyyyy,),23PARTITIONOPenDateq9VA1.UES1.ESSTHAN(TO_DATEC01/01/2009,ddmyyyy,),24PARTITIONOPenDateA1.oVA1.UES1.ESSTHAN(TOJ)ATE(,01042009,ddyyyy,)
15、,25PARTITIONOPenDateH1.VA1.UES1.ESSTHAN(TO.DATEC01072009,ddmyyyy,),26PARTITIONopenDate_p1.2VA1.UES1.ESSTHANGnaXVaIUe)27*)SQ1./限已创建。图3.33.4创建交易信息表交易信息表中包含了五个字段,分别为transdate(交易日期),cardID(卡号)、TRANSTYPE(交易类型),transmoney(交易金额)和remark(备注)。其中,transdate默认为系统当前日期;Cardid位外键,引用Cardinfo表中的Cardid列,可重复;transtype只
16、能是“存入/取出”之一;transmoney必须大于0.SQ1.CREATEORREP1.ACEVIEWcard1.nfo.vw2 AS3 SE1.ECTcardIDas银行卡号,curTypeas货币类型,SavingTYpeas存款类型,oPenDateas开户日期,oPenHcIneyas开户金IS,ba1.anceas余额PaSSas密祜,ISRePOrt1.oSSas是否挂失,CustomerIDas用户编号4 FROMcardinfo;视图已创建。SQ1.se1.ect*5 fromcard1.nf-vw;果行卡号货币类型存款类型开户日期开户金额余额四、模拟常规业务操作4.1建立更
17、新账号触发器结果如下:SQ1.connectzqp/zqp已连接。SQ1.createorrep1.aceTRIGGERtrg_cardInfo_cardID_notUpdate2 BEFOREUPDATEOFcardID3 ONcardinfo4 FOREACHRoW5 BEGIN6 RAISE_APP1.ICATION_ERROR(-20001,账户不允许修改!,);7 END;S/触发器已创建图4.1创建beforeupdate触发器4.2存取款交易操作当用户办理取款或存款业务时,不仅需要向交易信息表中添加一条交易记录,还需要修改当前账户中的余额,如果办理取款业务,如果将当前账户总的余额
18、减去支取余额,如果办理托管业务,多叫当前账户中的金额加上存款金额。在交易信息表中包含一个名为transtype的字段,该字段用于表示交易类型,取值范围必须是存入或者自取,因此可以为transINFO表创建BEFOREINSERTR触发器。根据要办理里的交易类型,判断出当前的交易类型,如果transtype字段值为“支取”,则表示要办理取款业务,检测当前余额是否大于或等于要支取的金额,如果满足条件,则要修改CardinfO表中的ba1.ance字段值,将该字段值减去交易金额(transmoney),如果transtype字段值为“存入”,则表示要办理存款业务,修改cardinfo表中的ba1.a
19、nce字段值,将该值加上交易金额(transmoney)o代码如下:reateorrep1.acetriggertrigtransbeforeinsertorupdateontransinfoforeachrowdec1.aremyba1.ancenumber;rate_exceptionexception;beginse1.ectba1.anceintomy_ba1.ancefromcardinfowherecardid=:new.cardid;if:new.transtype=支取thenifmyba1.ance:new.transmoney-1thenupdatecardinfosetb
20、a1.ance=ba1.ance-:new.transmoneywherecard1.d=:new.card1.d;endif;e1.sif:new.transtype=存入thenupdatecardinfosetba1.ance=ba1.ance+:new.transmoneywherecardid=:new.card1.d;endif;dbmsoutput,put1.ine(,交易成功!);exceptionwhenrate_exceptionthenraise_app1ication_error(-20001,交易失败);end;se1.ect*fromcardinfovw;inser
21、tintotransInfo(transdate,cardID,transType,transMoney)va1.ues(sysdate,1010357688886666,存入,1000);commit;4.3用户开户根据身份证号查询是否在该行开过户,为万无一失,还需要查询生成的卡号是否已经被使用,如果这两个条件都符合要求(此人从未在该行开过户,生成的卡号也无人使用),则向USerinfO表中插入开户人的基本信息记录,并根据开户人的身份证号获取开户人的编号,从而向cardinfo表中插入开户人的基本信息记录,同时还需要将生成的卡号显示给开户人。如果收到卡号已经被使用,得提醒用户开户失败;如果当
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库oracle银行管理系统 数据库 oracle 银行 管理 系统
链接地址:https://www.desk33.com/p-407935.html