已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书 I 目 录 摘摘 要要 1 1 一 设计银行管理系统结构图 1 1 系统结构图 2 二 银行管理系统 E R 图和表结构 2 1E R 图 3 2 2 表结构 5 三 创建系统数据表 3 1 创建表空间和用户 6 3 2 创建用户信息表并添加约束 6 3 3 创建银行卡信息表 8 3 4 创建交易信息表 9 四 模拟常规业务操作 4 1 建立更新账号触发器 11 4 2 存取款交易操作 11 4 3 用户开户 13 4 4 更改密码 15 4 5 账号挂失 16 课程设计说明书 II 4 6 余额查询 16 4 7 转账业务设置 17 4 8 银行盈利结算 18 4 9 撤户操作 18 五 总 结 20 参考文献 21 附录 22 课程设计说明书 1 摘摘 要要 随着计算机的飞速发展及应用领域的扩大 特别是计算机网络和电子商务 的发展 极大的改变了商业银行传统的经营模式 能够为客户提供方便 快捷 安全的服务 也能够有效的降低银行的营运成本 这是银行存储系统追求的目 标 目前 对于现代化银行运营的要求是客户可以实现方便安全的业务交易 银行职员可以进行高效合理的工作管理 实现银行业务电子化 方便用户快速 的进行存款 取款 修改密码以及完成一些转账的交易 大大提高办公效率 能够及时 准确 有效的帮用户办理各种繁琐的手续 也减缓了银行工作人员 的压力 课程设计说明书 2 1 设计银行管理系统结构图设计银行管理系统结构图 1 1 系统结构图系统结构图 银行系统 账 户 管 理 财 务 管 理 信 息 查 询 课程设计说明书 3 图 1 1 系统结构图 课程设计说明书 4 2 2 银行管理系统银行管理系统 E RE R 图和表结构图和表结构 2 1E R2 1E R 图图 开户名 身份证号联系电话住址 开户信息表 开户 开户名 身份证号联系电话 课程设计说明书 5 图 2 1 课程设计说明书 6 卡号 货币种类 存款类型 开户日期 开户金额 余额 密码 是否挂失 开户 银 行 信 息 表 交易 用户编号 交易信息表 交易日期 交易类型 卡号交易金额 图 2 2 课程设计说明书 7 2 22 2 表结构表结构 通过对银行管理系统的需求分析 应该为该系统设计 3 个表 分别为用 户信息表 银行卡信息表和交易信息表 用户信息表用于存储用户的基本信息 包括用户的编号 开户名 身份 证号 联系电话和家庭住址等信息 表 2 1 用户信息表 字段名称字段描述数据类型长度约束 customer 用户编号 Number4 主键 customer 开户名 Varhcar220 必填 PID 身份证号 Varchar218 必填 telephone 联系电话 Varchar213 必填 Address 家庭地址 Varchar250 无 银行卡信息表用于存储银行卡相关的信息主要包括卡号 存储的货币类型 存款方式 开户时间 开户金额 余额 银行卡密码 是否挂失和用户编号等 信息 表 2 2 银行卡信息表 字段名称字段描述数据类型长度约束 cardID 卡号 Varchar220 主键 curType 货币种类 Varhcar210 必填 SavingType 存款类型 Varchar28 非空 Opendate 开户日期 DATETIME 必填 openmoney 开户金额 Number8 必填 Balance 帐户余额 Number8 必填 课程设计说明书 8 Isreportlos s 是否挂失 Varchar22 必填 Customer 开户编号 Varchar4 外键 交易信息表用于存储用户的交易记录 主要包括交易日期 卡号 交易类 型 交易金额等信息 表 2 3 交易信息表 字段名称字段描述数据类型长度属性 Transdate 交易日期 DatetimePK cardID 卡号 Varhcar220 非空 transTYPE 交易类型 VARCHAR24 非空 transMoney 交易金额 NUMBER4 非空 remark 备注 VARCHAR250 非空 课程设计说明书 9 三 创建系统数据表三 创建系统数据表 3 13 1 创建表空间和用户创建表空间和用户 使用 system 用户连接数据库后 创建表空间 space zqp 指定数据文件为 D Bank dbf 代码如下图 图 3 1 表空间和用户 3 23 2 创建用户信息表并添加约束创建用户信息表并添加约束 用户信息表保存了用户的基本信息 该表的创建语句如下 CREATE TABLE userInfo customerID NUMBER 4 NOT NULL customerName VARCHAR2 20 NOT NULL 课程设计说明书 10 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 userInfo ADD 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 telephone LIKE 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 CREATE SEQUENCE customerid seq START WITH 1 课程设计说明书 11 INCREMENT BY 1 NOCACHE 如上述语句所示 在 userInfo 表中包含用户编号 customerid 开户名 customername 身份证号 PID 联系电话 telephone 家庭住址 address 其中 customerid 为主键 自增 从 1 开始 PID 只能是 18 位 或 15 位 并且是唯一的 telephone 必须是 xxxx xxxxxxxx 的格式或 13 位的 手机号码 图 3 2 用户信息表 3 33 3 创建银行卡信息表创建银行卡信息表 银行卡信息表 cardinfo 中包含了卡号 cardid 货币种类 curType 存款类型 savingtype 开户日期 opendate 开户金额 openmoney 余 额 balance 密码 pass 是否挂失 isREPORTLOSS 和用户编号 customerID 的信息 其中 cardID 为主键 必须为 1010 3756 xxxx xxxx 课程设计说明书 12 的格式 CURTYPE 默认为 RMB openmoney 必须不能低于一元 balance 也必须 不能低于一元 pass 默认为 88888888 ISREPORTLOSS 的值必须是 是 否 中 之一 默认为否 customerID 为外键 引用 userInfo 表中的 customerID 列 图 3 3 3 43 4 创建交易信息表创建交易信息表 交易信息表中包含了五个字段 分别为 transdate 交易日期 cardID 卡号 TRANSTYPE 交易类型 transmoney 交易金额 和 remark 备 注 其中 transdate 默认为系统当前日期 cardid 位外键 引用 cardinfo 表中的 cardid 列 可重复 transtype 只能是 存入 取出 之一 transmoney 必须大于 0 课程设计说明书 13 图 3 4 交易信息表 课程设计说明书 14 四 模拟常规业务操作四 模拟常规业务操作 4 14 1 建立更新账号触发器建立更新账号触发器 结果如下 图 4 1 创建 before update 触发器 4 24 2 存取款交易操作存取款交易操作 当用户办理取款或存款业务时 不仅需要向交易信息表中添加一条交易记 录 还需要修改当前账户中的余额 如果办理取款业务 如果将当前账户总的 余额减去支取余额 如果办理托管业务 多叫当前账户中的金额加上存款金额 在交易信息表中包含一个名为 transtype 的字段 该字段用于表示交易类 型 取值范围必须是存入或者自取 因此可以为 transINFO 表创建 BEFORE INSERTR 触发器 根据要办理里的交易类型 判断出当前的交易类型 如果 transtype 字段值为 支取 则表示要办理取款业务 检测当前余额是否大于 或等于要支取的金额 如果满足条件 则要修改 cardinfo 表中的 balance 字段 值 将该字段值减去交易金额 transmoney 如果 transtype 字段值为 存入 则表示要办理存款业务 修改 cardinfo 表中的 balance 字段值 将该值加上 交易金额 transmoney 课程设计说明书 15 代码如下 reate or replace trigger trig trans before insert or update on transinfo for each row declare 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 cardId new cardId end if elsif new transtype 存入 then update cardinfo set balance balance new transmoney where cardid new cardId 课程设计说明书 16 end if dbms output put line 交易成功 exception when rate exception then raise application error 20001 交易失败 end select from cardInfo vw insert into transInfo transdate cardID transType transMoney values sysdate 1010 3576 8888 6666 存入 1000 commit 4 34 3 用户开户用户开户 根据身份证号查询是否在该行开过户 为万无一失 还需要查询生成的卡 号是否已经被使用 如果这两个条件都符合要求 此人从未在该行开过户 生 成的卡号也无人使用 则向 userinfo 表中插入开户人的基本信息记录 并根 据开户人的身份证号获取开户人的编号 从而向 cardinfo 表中插入开户人的基 本信息记录 同时还需要将生成的卡号显示给开户人 如果收到卡号已经被使 用 得提醒用户开户失败 如果当前开户人已经在此行开过户 则提示用户此 身份证已有账号 结果如下图 课程设计说明书 17 图 4 2 课程设计说明书 18 4 44 4 更改密码更改密码 一个银行账号对应一个密码 因此当用户输入的卡号密码相对应时 可以 为该银行卡设置新的密码 代码 create or replace procedure proc updateUserPass temp cardid varchar2 卡号 oldpass varchar2 旧密码 newpass varchar2 新密码 as i number pass i VARCHAR2 6 begin select count into i from cardInfo where cardID temp cardid select pass into pass i from cardInfo where cardID temp cardid if i 0 then dbms output put line 此卡号不存在 elsif i 0 then if pass i oldpass then UPDATE cardInfo set pass newpass where cardid temp cardid dbms output put line 密码更改成功 else 课程设计说明书 19 dbms output put line 旧密码不正确 end if end if commit exception when others then dbms output put line 密码更改失败 end 4 54 5 账号挂失账号挂失 当用户的银行卡丢失后 可以对该卡进行挂失 银行管理系统需要验证用 户的真实性 当用户输入银行卡号和密码相对应 才可以对该卡进行挂失操作 即修改 cardinfo 表中的 IsreportLOSS 列为 是 否则提示 无权挂失 结果如图 课程设计说明书 20 图 4 3 4 64 6 余额查询余额查询 用户可以使用银行管理系统 办理余额查询等业务 系统要求用户输入银 行卡账号和密码 当用户输入的账号和密码都合法时 系统就查询该用户的账 户余额 否则将提示用户 账号或密码错误 代码 CREATE OR REPLACE procedure pro query balance card id varchar2 帐户 card pass varchar2 密码 as 课程设计说明书 21 i NUMBER 0 not data found exception user balance NUMBER 8 begin select count into i from cardInfo where cardID card id and pass card pass if i 0 then raise not data found else select balance into user balance from cardInfo where cardID card id and pass card pass dbms output put line 你帐号的余额为 user balance end if exception when not data found then dbms output put line 帐号或密码错误 end 4 74 7 转账业务设置转账业务设置 自助银行管理系统办理转账业务时 要求用户输入正确的用于转账的卡号 和密码 以及获得转账的卡号和转账金额 系统将根据用户输入的卡号和密码 检测该银行卡是否存在 如果存在 则判断该银行卡余额是否大于要转账的余 额 如果大于 则向表中插入两条交易记录 一条支取的记录 一条为存入的 课程设计说明书 22 记录 并提示用户转账成功 如果用户输入的卡号和密码不正确 则提示 你 的卡号或密码有误 4 84 8 银行盈利结算银行盈利结算 银行的管理人员可以统计银行的资金流通余额和盈利结算 资金流动金额 等于总存入 总支数金额 盈利结算 等于总支出金额乘以 8 总存入金额乘以 3 代码如图 图 4 4 4 94 9 撤户操作撤户操作 当用户不再需要使用某张银行卡时 可去银行办理撤户操作 撤户操作需 要用户输入正确的卡号和密码 系统将根据用户输入的数据对该银行卡进行验 课程设计说明书 23 证 如果该银行卡存在 都需要将卡上的余额全部取出 并删除该卡在 cardinfo 表中的记录 以及在 transinfo 表中所有的交易记录 代码如下图 图 4 5 课程设计说明书 24 五 总五 总 结结 通过此次课程设计 使我更加扎实的掌握了有关数据库方面的知识 在设 计过程中虽然遇到了一些问题 但经过一次又一次的思考 一遍又一遍的检查 终于找出了原因所在 也暴露出了前期我在这方面的知识欠缺和经验不足 实 践出真知 通过亲自动手制作 使我们掌握的知识不再是纸上谈兵 在课程设计过程中 我们不断发现错误 不断改正 不断领悟 不断获取 最终的检测调试环节 本身就是在践行 过而能改 善莫大焉 的知行观 这 次课程设计终于顺利完成了 在设计中遇到了很多问题 最后在老师的指导下 终于游逆而解 在今后社会的发展和学习实践过程中 一定要不懈努力 不能 遇到问题就想到要退缩 一定要不厌其烦的发现问题所在 然后一一进行解决 只有这样 才能成功的做成想做的事 才能在今后的道路上劈荆斩棘 而不是 知难而退 那样永远不可能收获成功 收获喜悦 也永远不可能得到社会及他 人对你的认可 课程设计说明书 25 参考文献参考文献 1 郝安林 Oracle 11g 基础教程与实验指导 清华大学出版社 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 课程设计说明书 26 附录附录 程序源代码 CREATE TABLESPACE space zqp DATAFILE D Bank dbf SIZE 50M AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED 创建用户 zqp 用户密码 zqp CREATE USER zqp IDENTIFIED BY zqp DEFAULT TABLESPACE space zqp TEMPORARY TABLESPACE temp QUOTA 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 课程设计说明书 27 根据身份证 ID 创建散列分区 PARTITION BY HASH PID PARTITION pid1 PARTITION pid2 PARTITION pid3 为 userInfo 表添加约束条件 ALTER TABLE userInfo ADD 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 telephone LIKE 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 CREATE SEQUENCE customerid seq START WITH 1 INCREMENT BY 1 课程设计说明书 28 NOCACHE 序列已创建 CREATE TABLE cardIofo cardID VARCHAR2 20 NOT NULL curType VARCHAR2 10 NOT NULL savingType VARCHAR2 8 NOT NULL openDate 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 LESS THAN TO DATE 01 04 2007 dd mm yyyy PARTITION openDate p3 VALUES LESS THAN TO DATE 01 07 2007 dd mm yyyy 课程设计说明书 29 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 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 PARTITION openDate p11 VALUES LESS THAN TO DATE 01 07 2009 dd mm yyyy PARTITION openDate p12 VALUES LESS THAN maxvalue 表已创建 为 cardInfo 表添加约束条件 ALTER TABLE cardIofo ADD CONSTRAINT PK cardID PRIMARY KEY cardID ADD CONSTRAINT CK cardID CHECK TRANSLATE cardID 0123456789 xxxxxxxxxx xxxx xxxx xxxx xxxx 课程设计说明书 30 AND INSTR cardID 1010 3576 1 ADD CONSTRAINT CK sav CHECK savingType IN 活期 定期两便 定期 ADD CONSTRAINT CK openMoney CHECK openMoney 1 ADD CONSTRAINT CK pass CHECK LENGTH pass 6 ADD CONSTRAINT CK IsRePortLoss CHECK IsReportLoss IN 是 否 ADD CONSTRAINT FK customerID FOREIGN KEY customerID REFERENCES userInfo customerID MODIFY curType DEFAULT RMB MODIFY openDate DEFAULT sysdate MODIFY pass DEFAULT 888888 MODIFY IsReportLoss DEFAULT 否 表已更改 CREATE TABLE transInfo transDate DATE NOT NULL cardID VARCHAR2 20 NOT NULL transType VARCHAR2 4 NOT NULL transMoney NUMBER 4 NOT NULL remark VARCHAR2 50 课程设计说明书 31 根据交易时间创建表分区 PARTITION BY RANGE transDate PARTITION transDate p1 VALUES LESS THAN to date 01 01 2007 dd mm yyyy PARTITION transDate p2 VALUES LESS THAN to date 01 04 2007 dd mm yyyy PARTITION transDate p3 VALUES LESS THAN to date 01 07 2007 dd mm yyyy PARTITION transDate p4 VALUES LESS THAN to date 01 10 2007 dd mm yyyy PARTITION transDate p5 VALUES LESS THAN to date 01 01 2008 dd mm yyyy PARTITION transDate p6 VALUES LESS THAN to date 01 04 2008 dd mm yyyy PARTITION transDate p7 VALUES LESS THAN to date 01 07 2008 dd mm yyyy PARTITION transDate p8 VALUES LESS THAN to date 01 10 2008 dd mm yyyy PARTITION transDate p9 VALUES LESS THAN to date 01 01 2009 dd mm yyyy PARTITION transDate p10 VALUES LESS THAN to date 01 04 2009 dd mm yyyy PARTITION transDate p11 VALUES LESS 课程设计说明书 32 THAN to date 01 07 2009 dd mm yyyy PARTITION transDate p12 VALUES LESS THAN maxvalue 表已创建 为 transInfo 表添加表约束 ALTER TABLE transInfo ADD CONSTRAINT FK cardID FOREIGN KEY cardID REFERENCES cardIofo cardID ADD CONSTRAINT CK transType CHECK transType IN 存入 支取 ADD CONSTRAINT CK transMoney CHECK transMoney 0 MODIFY transDate DEFAULT sysdate 表已更改 创建 userInfo 表视图 CREATE OR REPLACE VIEW userInfo vw AS SELECT customerID as 用户编号 customerName as 用户名称 PID as 身份证 号 telephone as 联系电话 address as 家庭住址 FROM userInfo 创建 cardInfo 表视图 CREATE OR REPLACE VIEW cardInfo vw AS 课程设计说明书 33 SELECT cardID as 银行卡号 curType as 货币类型 savingTYpe as 存款类型 openDate as 开户日期 openMoney as 开户金额 balance as 余额 pass as 密 码 IsReportLoss as 是否挂失 customerID as 用户编号 FROM cardInfo 创建 transInfo 表视图 CREATE OR REPLACE VIEW transInfo vw AS select transDate as 交易日期 cardID as 卡号 transType as 交易类型 transMoney as 交易金额 remark as 备注 FROM transInfo 创建 查询挂失的客户信息视图 CREATE OR REPLACE VIEW userInfo IsReportLoss vw AS select u customerID as 用户编号 u customerName as 开户名 u pid as 身份证号 u telephone as 联系电话 u address as 家庭地址 FROM userInfo u INNER JOIN cardInfo c ON u customerID c customerID WHERE IsReportLoss 是 创建 查询本周开户的卡号 显示相关信息视图 CREATE OR REPLACE VIEW query week information vw AS SELECT cardID as 卡号 curType as 货币类型 savingType as 存款类型 openDate as 开户日期 openMoney as 开户金额 balance as 余额 pass as 密码 IsReportLoss as 是否挂失 customerID as 课程设计说明书 34 用户编号 FROM cardInfo WHERE openDate BETWEEN TRUNC sysdate day AND sysdate 创建 查询本月交易金额最高的卡号 的视图 CREATE OR REPLACE VIEW top balance vw AS SELECT DISTINCT cardID as 交易最高的卡号 transMoney as 交易金额 FROM transInfo WHERE transMoney SELECT Max transMoney FROM transInfo 查看视图 select from userInfo vw userInfo 表视图 select from cardInfo vw cardInfo 表视图 select from transInfo vw transInfo 表视图 select from userInfo IsReportLoss vw 查询挂失的客户信息视图 select from query week information vw 查询本周开户的卡号 select from top balance vw 查询本月交易金额最高的卡 号 select u customerName as 客户名字 c balance as 余额 t transMoney as 交易金额 from userInfo u cardInfo c transInfo t where u customerName 张三 and u customerid c customerid and c cardid t cardid select u customerName as 客户名称 c balance as 余额 from userInfo u INNER JOIN cardInfo c on u customername 张三 and 课程设计说明书 35 u customerid c customerid 不允许更新 cardInfo 表的 cardID 列 不能更新卡号的触发器 create or replace trigger trg cardInfo cardID notUpdate before update of cardID on cardInfo for each row begin raise application error 20001 此列不允许修改 end 创建触发器实现交易操作 create or replace trigger trig trans before insert or update on transinfo for each row declare my balance number rate exception exception begin select balance into my balance from cardinfo where cardid new cardid 课程设计说明书 36 if new transtype 支取 then if my balance new transmoney 1 then update cardinfo set balance balance new transmoney where cardId new cardId end if elsif new transtype 存入 then update 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 插入交易数据 自动触发一系列操作 课程设计说明书 37 insert into transInfo transdate cardID transType transMoney values sysdate 1010 3576 8888 6666 存入 1000 commit select from cardInfo vw select from transInfo vw create or replace TRIGGER trg cardIofo card notUpdate BEFORE UPDATE OF cardID ON cardIofo FOR EACH ROW BEGIN RAISE APPLICATION ERROR 20001 账号不允许修改 END CREATE OR REPLACE FUNCTION random cardId RETURN VARCHAR2 AS card id VARCHAR2 20 1010 3576 tem CHAR 5 re card id count NUMBER 0 BEGIN LOOP 课程设计说明书 38 tem to char dbms random value 1000 9999 0000 card id card id tem tem to char dbms random value 1000 9999 0000 card id card id tem SELECT COUNT INTO re card id count FROM cardInfo WHERE cardID card id EXIT WHEN re card id count 0 END LOOP RETURN card id END 开户过程 CREATE OR REPLACE procedure proc openUser uname varchar2 开户的姓名 p id varchar2 身份证 tel varchar2 电话号码 address varchar2 地址 savingtype varchar2 存款类型 curType varchar2 货币类型 openMoney number 开户金额 课程设计说明书 39 pass varchar2 开户密码 as cid varchar2 20 卡号 customer id number 顾客 ID i NUMBER c NUMBER Begin 调用函数生成卡号 cid random cardId 查询此人是否在此行开过户 select count into i from userinfo where PID p id 查询卡号是否应该有了 select count into c from cardinfo where cardID cid if i 0 then if c 0 then Insert intouser Info values customerid seq nextval uname p id tel address 根据身份证号获取顾客编号 select customerId into customer id from userInfo where PID p id insert into 课程设计说明书 40 cardInfo cardId curType Savingtype Openmoney balance pass customerId values cid curType savingType openMoney openMoney pass customer id DBMS OUTPUT PUT LINE 您已成功开户 DBMS OUTPUT PUT LINE 您的卡号为 cid elsif c 0 then dbms output put line 开户失败 end if elsif i 0 then dbms output put line 此身份证已开有帐号 END IF EXCEPTION when others then dbms output put line 开户失败 end create or replace procedure proc updateUserPass temp cardid varchar2 卡号 oldpass varchar2 旧密码 newpass varchar2 新密码 as i number 课程设计说明书 41 pass i VARCHAR2 6 begin select count into i from cardInfo where cardID temp cardid select pass into pass i from cardInfo where cardID temp cardid if i 0 then dbms output put line 此卡号不存在 elsif i 0 then if pass i oldpass then UPDATE cardInfo set pass newpass where cardid temp cardid dbms output put line 密码更改成功 else dbms output put line 旧密码不正确 end if end if commit exception when others then dbms output put line 密码更改失败 End create or replace procedure proc lostCard card id varchar2 pass2 varchar2 课程设计说明书 42 as x char 2 i number begin select count into i from cardInfo where cardId card id and pass pass2 if i 0 THEN SELECT IsReportLoss INTO x from cardInfo where cardId card id and pass pass2 if x 是 then dbms output put line 此卡已经挂失 else UPDATE cardInfo set IsReportLoss 是 where cardId card id dbms output put line 该卡已成功挂失 请带相关证件到柜台去办理恢复该卡 end if ELSE dbms output put line 挂失失败 请核实卡号是否正确 END IF end 存取款 课程设计说明书 43 CREATE OR REPLACE PROCEDURE proc takeMoney temp cardId VARCHAR2 卡号 temp transType VARCHAR2 交易类型 temp pass VARCHAR2 密码 temp transMoney NUMBER 交易金额 temp remark VARCHAR2 备注 AS temp pwd VARCHAR2 6 BEGIN IF temp transType 支取 THEN 取款 SELECT pass INTO temp pwd FROM cardInfo WHERE cardID temp cardId IF temp pwd temp pass THEN INSERT INTO transInfo transType cardID transMoney remark VALUES temp transType temp cardId temp transMoney temp remark ELSE DBMS OUTPUT PUT LINE 密码错误 请重新输入 END IF 课程设计说明书 44 ELS INSERT INTO transInfo transType cardID transMoney remark VALUES 存入 temp cardId temp transMoney temp remark END IF END 余额查询 CREATE OR REPLACE procedure pro query balance card id varchar2 帐户 card pass varchar2 密码 as i NUMBER 0 not data found exception user balance NUMBER 8 begin select count into i from cardInfo where cardID card id and pass card pass if i 0 then raise not data found else sel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中风急性期压力性损伤预防
- 下载护理汇报模板
- 断肢再植术后血肿处理方法
- 新生儿梅毒护理中的疼痛管理
- 上海护理课件最佳课件最佳指导教师奖
- CARD14变异相关皮肤病的分子机制与诊治进展总结2026
- 2026年销售所长(某大型集团公司)面试题题库解析
- 高三物理一模提分周周练(十)
- 山西省运城市绛县2025届数学四年级下学期期末学业水平测试试题含答案
- 中医骨科护理的注意事项
- GD弹性混凝土无缝连接技术-拼缝180802
- GB/T 17824.3-2026规模猪场环境参数及环境管理技术规范
- 2025浙江金华市武义供销农贸城招聘6人笔试历年常考点试题专练附带答案详解
- GB/T 15000.4-2026标准样品工作导则第4部分:证书、标签和附带文件的内容
- 医疗设备维修保养及应急预案
- 分子诊断设备技师精准操作能力标准
- 工厂搬迁技术方案
- 2025中国热带农业科学院热带生物技术研究所第一批招聘23人笔试试题(第1号)附答案解析
- 全基因组选择育种课件
- 乡镇人大培训课件
- 腹内压测量方法与临床意义
评论
0/150
提交评论