`

模拟银行存取款的业务

 
阅读更多

----模拟银行的常规业务
      ----开户
      ----存取钱,转账
      -----查询历史交易
      ----挂失
      ----修改密码
      ----催款业务
       ----统计利润率
      
      
       -----出现错误,编辑
---------------------------------------------------------员工的考核
     ----表一:用户基本信息表
     create table userInfo
     (
        uuid number(6),
        uname varchar2(20),
        uaddress varchar2(50),
        ucis varchar2(18),---身份证
        utel varchar2(11),
        primary key(uuid)
     ) 
     select * from userInfo
     ---表二:账户信息表
     create table countTnfo
     (
        cardid varchar2(20),---账户id,账号
        pwd varchar2(20),
        money number(10),---余额
        opendate date,---开户日期
        saveType varchar2(20),---账户类型,定期还是货期
        moneyType varchar2(20),---哪的账户
        ucid varchar2(18),---外键
        primary key(cardid)
     )
     drop table countTnfo
     select * from countTnfo
     ----表三:历史交易记录表
     create table transInfo(
      tid number(6),---流水编号
      cardid varchar2(20),
      ttype varchar2(10),---交易类型,转账,存款,跨行
      tdate date,
      tmoney number(10),
      primary key(tid)
      )
 --------------------------------------------------------------------------1........完成开户    
   -----第一:创建函数,这个函数的作用产生一个账号
   ----1.用函数产生一个随机考号,其中约束条件是前八位固定,后八位随机,6100 1212  **** *****   
   create or replace function make_vardid
   return varchar2
   is
      v_rand_num varchar2(20);
   begin
     select substr(to_char(dbms_random.value),2,4) ||' '||
            substr(to_char(dbms_random.value),6,4) into v_rand_num
     from dual;---产生随机数
     v_rand_num:='6100 1212' ||' '||v_rand_num;
     return v_rand_num;
     end;
     select make_vardid from dual---测试随机数
     ------第二:开户业务,开户的时候用到上面这个账号了(同时操作两个表,用户开户的时候要填写用户信息表和开户信息表)
     create or replace procedure proc_open
     (v_name varchar2, v_address varchar2,v_cid varchar2,v_tel varchar2,v_pwd varchar2,v_money number,v_savet varchar2,v_moneyt varchar2)
     is
        v_cardid varchar(20);
     begin
       v_cardid:=make_vardid;--函数调用
       savepoint bg;---两个表同时插入(两个表用到事务)
         -----sql是我自己创建的序列,sql.nextval表示产生下一个主键号
           insert into userinfo values(sql.nextval,
                v_name,v_address,v_cid,v_tel);
   
           insert into countTnfo values(v_cardid,v_pwd,v_money,
                 sysdate,v_savet,v_moneyt,v_cid);
                 dbms_output.put_line('开户成功------');
                commit;
            exception
                when others then
                 dbms_output.put_line('开户失败------');
                rollback to bg; 
                   end;
       -----测试开户
       begin
          proc_open('小白','北京','111122223333444455',
          '11011011011','888888',10,'定期','RMB');
        end; 
        select * from userinfo;
        select * from countTnfo      
----------------------------------------------------------2...................完成存取款过程
       ----写一个存储过程模拟存取款,op表示操作(存还是取),交易信息表可以创建一个触发器
      
        create or replace procedure take_save_pro
        (v_cardId varchar2,v_pwd varchar2,v_money number, v_op varchar2)
        is
           v_pwd2 varchar2(10); ---用来保存在数据库中查到的密码
        begin
          
           select pwd into v_pwd2 from countTnfo where cardId=v_cardId;---得到密码
          
           savepoint bg;---如果密码正确,如果选择了存款就加钱,如果选择取款就减钱       
           if v_pwd2 = v_pwd then
             if v_op='存款' then
                update countTnfo set money=money+v_money where cardId=v_cardId;      
             else
                update countTnfo set money=money-v_money where cardId=v_cardId;
             end if;
             insert into transInfo values(seq_tid.nextval, v_cardId,v_op,sysdate,v_money);
            
             dbms_output.put_line('交易成功------');
             commit;
           else
             dbms_output.put_line('密码错误------');
           end if;
        exception
          when others then
          dbms_output.put_line('交易失败------');
          rollback to bg;
        end;

 ---测试存款和取款
            select * from countTnfo---注意这里用到了上面的账号
            select * from transInfo
            delete  from transInfo;
              begin
                take_save_pro('6100 1212 0949 3030','888888',100,'存款');
              end;   
 ---------------------------------------------3.模拟转账
   ----转账(参数:两个账户,自己的密码,转账金额)
  
create or replace procedure  zhuan_proc
(v_cid1 varchar2,v_cid2 varchar2
,v_pwd varchar2 ,v_money number)
is
   v_pwd2 varchar2(10);   
begin
   select pwd into v_pwd2 from
    countTnfo where cardId=v_cid1;
   savepoint bg;
   if v_pwd=v_pwd2 then
       update countTnfo set money=money-v_money
       where cardId=v_cid1;
       update countTnfo set money=money+v_money
       where cardId=v_cid2;
      
       insert into transInfo values(seq_tid.nextval,
       v_cid1,'取款',sysdate,v_money);
       insert into transInfo values(seq_tid.nextval,
       v_cid2,'存款',sysdate,v_money);
       dbms_output.put_line('转账成功------');
       commit;
   else
       dbms_output.put_line('密码错误------');
   end if;
  
exception
  when others then
    dbms_output.put_line('转账失败------');
    rollback to bg;
end;
-----------------------------------------------
---测试转账业务
begin
  zhuan_proc('6100 1212 0949 3030',
  '6100 1212 4788 3274','888888',2);
end;

分享到:
评论

相关推荐

    基于Java语言实现模拟银行存取款业务系统

    本项目的主要功能是模拟银行的存取款业务,当用户登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作类型。操作类型包括四种(存款:1 取款:2 ...

    模拟银行存取款业务.docx

    Java 面向对象编程应用实践 - 模拟银行存取款业务 本资源总结了 Java 面向对象编程的应用实践,通过模拟银行存取款业务项目,展示了 Java 编程的实践应用。该项目涵盖了 Java 的面向对象编程三大特性:封装、继承和...

    【Java】—模拟银行存取款业务(项目报告已上传)

    模拟银行存取款业务的程序需要有三个类,分别是:User类、Bank类和Test类。 User类用于存放银行用户,此类中需要定义一些用户的基本信息,比如姓名,银行账户,密码,余额等信息,将这些信息私有化并生成相应的set和...

    基于Java语言实现模拟银行存取款业务系统.zip

    本项目的主要功能是模拟银行的存取款业务,当用户登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作类型。操作类型包括四种(存款:1 取款:2 ...

    基于Java语言实现模拟银行存取款业务系统源码(高分大作业).zip

    基于Java语言实现模拟银行存取款业务系统源码(高分大作业).zip主要针对计算机相关专业的正在做课程设计和期末大作业的学生和需要项目实战练习的学习者。包含全部项目源码、该项目可以直接使用、项目都经过严格调试...

    Java作业—模拟银行存取款业务

    Java作业—模拟银行存取款业务 仅代码 本项目的主要功能是模拟银行的存取款业务,当用户登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作类型...

    模拟银行取款(java代码)

    这个一个模拟银行存取款的java代码实现,相当于AMT柜员机里面的程序实现,不过相对是比较简单的

    银行存取款模拟系统1.1源码

    1.修正了按钮文字显示不全的错误 2.使用了公共的数据库连接类 3.修正了转账异常的错误 4.一些其它的修改和优化 由于有时间就更新了一下,这是1.1的版本,也很可能是最后一个版本,基础向,写了一些注释,入门级的...

    银行存取款系统数据库设计.docx

    这个银行存取款系统数据库设计考虑了实际业务需求,通过合理的数据模型和流程设计,确保了系统的稳定性和用户友好性。在开发此类系统时,还需要考虑到安全性、并发控制、事务处理等重要因素,以确保交易的准确性和...

    银行存取款系统模拟系统设置实现

    2. **MVC设计模式**:银行存取款系统可能会采用Model-View-Controller(MVC)设计模式,将业务逻辑、数据模型和用户界面分离,使得代码更易于维护和扩展。模型负责处理数据,视图负责显示,控制器处理用户输入。 3....

    java实现“模拟ATM机存取款管理系统”课程设计.txt

    java实现“模拟ATM机存取款管理系统”课程设计 模拟银行的自动取款机使用过程中的界面和用户交互过程。实现查询银行卡余额、取款、存款、修改密码、退出系统等功能。 功能要求: (1)卡号、密码输入最多三次,否则...

    模拟ATM存取款机

    ATM(Automated Teller Machine)模拟存取款机是一个典型的银行系统应用,它能够模拟真实的ATM设备,提供存款、取款、查询余额、转账等基本金融服务。在这个项目中,我们使用Eclipse作为集成开发环境,而数据库选择...

    C#银行操作程序——这是一个银行模拟系统,根据银行寻取款,信用卡,储蓄卡,不同的业务方式设计的

    这是一个银行模拟系统,根据银行寻取款,信用卡,储蓄卡,不同的业务方式设计的一个模拟程序,用窗体实现操作,简易方便

    银行存取款方法java

    在Java编程语言中,"银行存取款方法"通常涉及到模拟银行账户的类设计,用于实现用户存款、取款的功能。这里的`BankAccount`类是一个基础的银行账户模型,包含了几个重要的属性,如: 1. **Name**:代表账户所有者的...

    银行ATM存取款机系统设计与实现数据库课程设计

    报告的主要目的是设计和实现一个银行ATM存取款机系统的数据库,使用PowerDesigner完成数据库设计,创建数据库、表和约束,并使用T-SQL语句编程实现常见业务。 知识点1:数据库设计 * 使用PowerDesigner完成数据库...

    银行账户存取款业务

    要求编写程序模拟银行账户的存、取款操作。按要求完成以下步骤: 步骤1:编写程序Account.java,其中定义银行账户类Account。该类中有账号、姓名、 存款余额等数据域,余额默认是0;有存款、取款、获取当前余额等...

    银行模拟存取款系统代码c++

    在信息技术高速发展的今天,银行存取款系统的模拟成为了学习编程和理解金融交易流程的重要途径。本文将深入探讨一个使用C++语言编写的银行模拟存取款系统,通过分析其设计原理和实现细节,帮助读者深化对C++编程以及...

    这是一个关于银行存取款的程序。

    2. **银行存取款业务逻辑** - 存款操作:涉及账户余额增加,需要考虑金额合法性验证、实时更新账户状态以及记录交易日志。 - 取款操作:包括账户余额减少,同样需要验证金额、检查账户是否有足够的余额,以及记录...

Global site tag (gtag.js) - Google Analytics