ATM取款机(Oracle)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ATM取款机(Oracle实现)

一.功能描述:

1.创建用户表和账户表,完成建表相关操作,录入测试数据(40分)

2.建立程序包,完成如下功能:开户(10分),登陆(10分),修改密码(10分),转帐

(20分),查询余额(10分)(总计60分)

二.参考代码:

建表:

程序包定义:

参考答案:(把下面的答案直接复制到SQL执行控制台可以直接执行)

--账户表

create table User_Account

(

Aid varchar2(19) not null primary key, --卡号

Username varchar2(20) not null, --户主

Opendate date default sysdate, --开户时间

Balance number default 0 , --余额

userpassword varchar2(8) DEFAULT '888888' not null, --密码

stauts Char(2) default 0 not NULL --卡状态:0:正常,1:冻结2:注销)

--交易表

create table transinfo

(

Tid INTEGER not null primary key, --交易流水号

Aid varchar2(19) not null, --卡号

transtype VARCHAR2(10) not null, --交易类型:存入,支取

tBalance Number(8,2) not null, --交易金额

Transdate date default sysdate not null --交易时间

)

-- 创建交易流水号序列

create sequence seq_transinfo

start with 000000001

increment by 1

nomaxvalue;

--查询数据

select * from User_Account where aid='9558000076903450474'

select * from transinfo

delete from transinfo

delete from User_Account

--录入测试数据

insert into User_Account values(substr(to_char(( dbms_random.value(100000000000,0)+95580000*100000000000)),1,19), '张三',default,0,'111111','0');

insert into transinfo values(seq_transinfo.nextval,'9558000076903450474','存入',20,default); insert into transinfo values(seq_transinfo.nextval,'9558000076903450474','存入',20,sysdate);

--建立包头

create or replace package pack_User_Atm

is

--存储过程proc_CreateUserAccount(vUsername varchar2);--开户,输入用户姓名,产生卡号为19位,前8位为95580000,录入到账户表并输出生成的卡号。

procedure proc_CreateUserAccount(vUsername varchar2);

--存储过程proc_insert_transinfo(vaid varchar2,vpassword varchar2);--登陆,输入账号和密码,登录成功打印ok,失败打印error

procedure proc_insert_transinfo(vaid varchar2,vpassword varchar2);

--存储过程proc_Change_password(vaid varchar2,oldPass varchar2,newPass varchar2);--修改密码,输入账号、原始密码、新密码,判断修改流程,成功打印ok,失败打印error procedure proc_Change_password(vaid varchar2,oldPass varchar2,newPass varchar2);

--存储过程proc_give_money(vaid varchar2,giveID varchar2,money number);--转帐,输入转出账号,转入账号,以及金额,执行相关流程,成功打印ok,失败打印error

procedure proc_give_money(vaid varchar2,giveID varchar2,money number);

--函数fun_check_balance(vaid varchar2,vpassword varchar2); ----查询余额,输入账号和密码,返回余额

function fun_check_balance(vaid varchar2,vpassword varchar2) return number;

end pack_User_Atm;

--建立包体

create or replace package body pack_User_Atm

is

--注册

procedure proc_CreateUserAccount(vUsername varchar2)

is

vaid User_Account.Aid%type;

begin

--开头是95580000,后面数字随即生成

select substr(to_char(( dbms_random.value(100000000000,0)+95580000*100000000000)),1,19) into vaid from dual;

--默认账户已经激活

相关文档
最新文档