ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:189.11KB ,
资源ID:3869037      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3869037.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(大数据库oracle银行管理系统.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、大数据库oracle银行管理系统摘 要 随着计算机的飞速发展及应用领域的扩大,特别是计算机网络和电子商务的发展,极大的改变了商业银行传统的经营模式。能够为客户提供方便、快捷、安全的服务,也能够有效的降低银行的营运成本,这是银行存储系统追求的目标。目前,对于现代化银行运营的要求是客户可以实现方便安全的业务交易,银行职员可以进行高效合理的工作管理,实现银行业务电子化。方便用户快速的进行存款、取款、修改密码以及完成一些转账的交易,大大提高办公效率,能够及时、准确、有效的帮用户办理各种繁琐的手续,也减缓了银行工作人员的压力。1、设计银行管理系统结构图1.1系统结构图银行系统 图1.1系统结构图2、银行

2、管理系统E-R图和表结构2.1E-R图 图2.1 图2.22.2表结构 通过对银行管理系统的需求分析,应该为该系统设计3个表,分别为用户信息表、银行卡信息表和交易信息表。 用户信息表用于存储用户的基本信息,包括用户的编号、开户名、身份证号、联系电话和家庭住址等信息 表2.1 用户信息表字段名称字段描述数据类型长度约束customer用户编号Number4主键customer开户名Varhcar220必填PID身份证号Varchar218必填telephone联系电话Varchar213必填Address家庭地址Varchar250无 银行卡信息表用于存储银行卡相关的信息主要包括卡号、存储的货币

3、类型,存款方式,开户时间,开户金额,余额、银行卡密码、是否挂失和用户编号等信息, 表2.2银行卡信息表字段名称字段描述数据类型长度约束cardID卡号Varchar220主键curType货币种类Varhcar210必填SavingType存款类型Varchar28非空Opendate开户日期DATETIME必填openmoney开户金额Number8必填Balance帐户余额Number8必填Isreportloss是否挂失Varchar22必填Customer开户编号Varchar4外键 交易信息表用于存储用户的交易记录,主要包括交易日期,卡号、交易类型,交易金额等信息。 表2.3交易信息

4、表字段名称字段描述数据类型长度属性Transdate交易日期DatetimePKcardID卡号Varhcar220非空transTYPE交易类型VARCHAR24非空transMoney交易金额NUMBER4非空remark备注VARCHAR250非空 三、创建系统数据表3.1创建表空间和用户 使用system用户连接数据库后,创建表空间space_zqp,指定数据文件为D:Bank.dbf,代码如下图: 图3.1表空间和用户3.2创建用户信息表并添加约束用户信息表保存了用户的基本信息,该表的创建语句如下,CREATE TABLE userInfo(customerID NUMBER(4)

5、NOT NULL,customerName VARCHAR2(20) NOT NULL,PID VARCHAR2(18) NOT NULL,telephone VARCHAR2(13) NOT NULL,address VARCHAR2(50)PARTITION BY HASH(PID)( PARTITION pid1, PARTITION pid2, PARTITION pid3,);ALTER TABLE userInfoADD CONSTRAINT PK_customerID PRIMARY KEY(customerID)ADD CONSTRAINT UK_PID UNIQUE(PID)

6、ADD CONSTRAINT CK_PID CHECK(LENGTH(PID)=18 OR LENGTH(PID)=15)ADD CONSTRAINT CK_telephone CHECK(telephone LIKE 0-90-90-90-9-0-90-90-90-90-90-90-90-9ORLENGTH(telephone)=13);-创建可以自动生成自增主列的序列 customerid_seqCREATE SEQUENCE customerid_seqSTART WITH 1INCREMENT BY 1NOCACHE 如上述语句所示,在userInfo表中包含用户编号(customer

7、id)、开户名(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

8、)和用户编号(customerID)的信息。其中,cardID为主键,必须为1010 3756 xxxx xxxx的格式;CURTYPE默认为RMB,openmoney必须不能低于一元;balance也必须不能低于一元;pass默认为88888888;ISREPORTLOSS的值必须是“是/否”中之一,默认为否;customerID为外键,引用userInfo表中的customerID列。图3.3 3.4创建交易信息表 交易信息表中包含了五个字段,分别为transdate(交易日期),cardID(卡号)、TRANSTYPE(交易类型),transmoney(交易金额)和remark(备注)。

9、其中,transdate默认为系统当前日期;cardid位外键,引用cardinfo表中的cardid列,可重复;transtype只能是“存入/取出”之一;transmoney必须大于0.图3.4交易信息表四、模拟常规业务操作4.1建立更新账号触发器结果如下:图4.1创建before update触发器4.2存取款交易操作 当用户办理取款或存款业务时,不仅需要向交易信息表中添加一条交易记录,还需要修改当前账户中的余额,如果办理取款业务,如果将当前账户总的余额减去支取余额,如果办理托管业务,多叫当前账户中的金额加上存款金额。 在交易信息表中包含一个名为transtype的字段,该字段用于表示交

10、易类型,取值范围必须是存入或者自取,因此可以为transINFO表创建BEFORE INSERTR触发器。根据要办理里的交易类型,判断出当前的交易类型,如果transtype字段值为“支取”,则表示要办理取款业务,检测当前余额是否大于或等于要支取的金额,如果满足条件,则要修改cardinfo表中的balance字段值,将该字段值减去交易金额(transmoney),如果transtype字段值为“存入”,则表示要办理存款业务,修改cardinfo表中的balance字段值,将该值加上交易金额(transmoney)。代码如下:reate or replace trigger trig_tran

11、sbefore insert or update on transinfofor each rowdeclare my_balance number;rate_exception exception;begin select balance into my_balance from cardinfo where cardid=:new.cardid; if :new.transtype=支取 then if my_balance:new.transmoney-1 then update cardinfo set balance=balance-:new.transmoney where car

12、dId=:new.cardId; end if;elsif :new.transtype=存入 thenupdate cardinfo set balance=balance+:new.transmoney where cardid=:new.cardId; end if; dbms_output.put_line(交易成功!); exception when rate_exception then raise_application_error(-20001,交易失败); end;select * from cardInfo_vw;insert into transInfo (transda

13、te,cardID,transType,transMoney) values(sysdate,1010 3576 8888 6666,存入,1000);commit;4.3用户开户 根据身份证号查询是否在该行开过户,为万无一失,还需要查询生成的卡号是否已经被使用,如果这两个条件都符合要求(此人从未在该行开过户,生成的卡号也无人使用),则向userinfo表中插入开户人的基本信息记录,并根据开户人的身份证号获取开户人的编号,从而向cardinfo表中插入开户人的基本信息记录,同时还需要将生成的卡号显示给开户人。如果收到卡号已经被使用,得提醒用户开户失败;如果当前开户人已经在此行开过户,则提示用户

14、此身份证已有账号。 结果如下图:图4.24.4更改密码 一个银行账号对应一个密码,因此当用户输入的卡号密码相对应时,可以为该银行卡设置新的密码,代码: create or replace procedure proc_updateUserPass(temp_cardid varchar2, -卡号oldpass varchar2, -旧密码newpass varchar2 -新密码)asi number;pass_i VARCHAR2(6);beginselect count(*) into i from cardInfo where cardID=temp_cardid;select pas

15、s into pass_i from cardInfo where cardID=temp_cardid;if i=0 thendbms_output.put_line(此卡号不存在!);elsif i0 thenif pass_i=oldpass thenUPDATE cardInfo set pass=newpass where cardid=temp_cardid;dbms_output.put_line(密码更改成功!);elsedbms_output.put_line(旧密码不正确!);end if;end if;commit;exceptionwhen others thendbm

16、s_output.put_line(密码更改失败!);end4.5账号挂失 当用户的银行卡丢失后,可以对该卡进行挂失,银行管理系统需要验证用户的真实性,当用户输入银行卡号和密码相对应,才可以对该卡进行挂失操作,即修改cardinfo表中的IsreportLOSS列为“是”,否则提示“无权挂失”。结果如图: 图4.34.6余额查询 用户可以使用银行管理系统,办理余额查询等业务,系统要求用户输入银行卡账号和密码,当用户输入的账号和密码都合法时,系统就查询该用户的账户余额,否则将提示用户“账号或密码错误!”,代码:CREATE OR REPLACE procedure pro_query_balan

17、ce(card_id varchar2, -帐户card_pass varchar2) -密码asi NUMBER:=0;not_data_found exception;user_balance NUMBER(8);beginselect count(*) into i from cardInfo where cardID=card_id and pass=card_pass;if i=0 thenraise not_data_found;elseselect balance into user_balance from cardInfo where cardID=card_id and p

18、ass=card_pass;dbms_output.put_line(你帐号的余额为:|user_balance);end if;exceptionwhen not_data_found thendbms_output.put_line(帐号或密码错误!);end;4.7转账业务设置 自助银行管理系统办理转账业务时,要求用户输入正确的用于转账的卡号和密码,以及获得转账的卡号和转账金额,系统将根据用户输入的卡号和密码,检测该银行卡是否存在,如果存在,则判断该银行卡余额是否大于要转账的余额;如果大于,则向表中插入两条交易记录,一条支取的记录,一条为存入的记录,并提示用户转账成功;如果用户输入的卡号

19、和密码不正确,则提示“你的卡号或密码有误!”。4.8银行盈利结算 银行的管理人员可以统计银行的资金流通余额和盈利结算,资金流动金额等于总存入-总支数金额;盈利结算,等于总支出金额乘以8%-总存入金额乘以3%,代码如图:图4.44.9撤户操作 当用户不再需要使用某张银行卡时,可去银行办理撤户操作,撤户操作需要用户输入正确的卡号和密码,系统将根据用户输入的数据对该银行卡进行验证,如果该银行卡存在,都需要将卡上的余额全部取出,并删除该卡在cardinfo表中的记录,以及在transinfo表中所有的交易记录。代码如下图图4.5五、总 结 通过此次课程设计,使我更加扎实的掌握了有关数据库方面的知识,在

20、设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘

21、,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!参考文献1郝安林,Oracle 11g基础教程与实验指导,清华大学出版社 2王珊,数据库系统概论,高等教育出版社3王霓虹,数据库系统原理 ,哈尔滨工业出版社(十二五规划教材)4李建中,数据库系统原理,电子工业出版社(原理)5Stephens著,数据库设计,机械工业出版社6李丙洋.涂抹oracle-三思笔记之一步一步学oracleM中国水利水电出版社,2010.17KarenMorton.OracleSQL高级编程M.人民邮电出版社,2011.118梁敬彬,梁敬弘.收获不止oracleM.电子工业出版社,2

22、013.59盖国强.循序渐进oracle数据库管理、优化与备份恢复M.人民邮电出版社,2011.810LanAbramson,MicheaelAbbey,MichaelJ.Corey,窦朝辉.oracledatabase11g:初学者指南M.清华大学出版社,2010-01附录程序源代码:CREATE TABLESPACE space_zqpDATAFILE D:Bank.dbf SIZE 50MAUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED;创建用户zqp,用户密码:zqpCREATE USER zqpIDENTIFIED BY zqpDEFAULT TABLE

23、SPACE space_zqp;TEMPORARY TABLESPACE tempQUOTA 20M ON space_xianglin;/用户已创建GRANT DBA TO XIANGLIN;/授权成功CONNECT xianglin/accp;/已连接REATE TABLE userInfo(customerID NUMBER(4) NOT NULL,customerName VARCHAR2(20) NOT NULL,PID VARCHAR2(18) NOT NULL,telephone VARCHAR2(13) NOT NULL,address VARCHAR2(50)-根据身份证ID

24、创建散列分区PARTITION BY HASH(PID)( PARTITION pid1, PARTITION pid2, PARTITION pid3,);-为userInfo表添加约束条件ALTER TABLE userInfoADD CONSTRAINT PK_customerID PRIMARY KEY(customerID)ADD CONSTRAINT UK_PID UNIQUE(PID)ADD CONSTRAINT CK_PID CHECK(LENGTH(PID)=18 OR LENGTH(PID)=15)ADD CONSTRAINT CK_telephone CHECK(tele

25、phone LIKE 0-90-90-90-9-0-90-90-90-90-90-90-90-9ORLENGTH(telephone)=13);/表已更改-创建可以自动生成自增主列的序列 customerid_seqCREATE SEQUENCE customerid_seqSTART WITH 1INCREMENT BY 1NOCACHE;/序列已创建CREATE TABLE cardIofo(cardID VARCHAR2(20) NOT NULL,curType VARCHAR2(10) NOT NULL,savingType VARCHAR2(8) NOT NULL,openDate

26、DATE NOT NULL,openMoney NUMBER(8) NOT NULL,balance NUMBER(8) NOT NULL,pass VARCHAR2(6) NOT NULL,IsReportLoss VARCHAR2(2) NOT NULL,customerID NUMBER(4) NOT NULL)-根据开户日期创建表分区PARTITION BY RANGE(openDate)(PARTITION openDate_p1 VALUES LESS THAN(TO_DATE(01/01/2007,dd/mm/yyyy),PARTITION openDate_p2 VALUES

27、LESS THAN(TO_DATE(01/04/2007,dd/mm/yyyy),PARTITION openDate_p3 VALUES LESS THAN(TO_DATE(01/07/2007,dd/mm/yyyy),PARTITION openDate_p4 VALUES LESS THAN(TO_DATE(01/10/2007,dd/mm/yyyy),PARTITION openDate_p5 VALUES LESS THAN(TO_DATE(01/01/2008,dd/mm/yyyy),PARTITION openDate_p6 VALUES LESS THAN(TO_DATE(01

28、/04/2008,dd/mm/yyyy),PARTITION openDate_p7 VALUES LESS THAN(TO_DATE(01/07/2008,dd/mm/yyyy),PARTITION openDate_p8 VALUES LESS THAN(TO_DATE(01/10/2008,dd/mm/yyyy),PARTITION openDate_p9 VALUES LESS THAN(TO_DATE(01/01/2009,dd/mm/yyyy),PARTITION openDate_p10 VALUES LESS THAN(TO_DATE(01/04/2009,dd/mm/yyyy

29、),PARTITION openDate_p11 VALUES LESS THAN(TO_DATE(01/07/2009,dd/mm/yyyy),PARTITION openDate_p12 VALUES LESS THAN(maxvalue);/表已创建-为cardInfo表添加约束条件ALTER TABLE cardIofoADD CONSTRAINT PK_cardID PRIMARY KEY(cardID)ADD CONSTRAINT CK_cardID CHECK(TRANSLATE(cardID,0123456789 ,xxxxxxxxxx )=xxxx xxxx xxxx xxxx ANDINSTR(cardID,1010 3576 )=1)ADD CONSTRAINT CK_sav CHECK(savingType IN (活期,定期两便,定期)A

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

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