ATM取款机(Oracle)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
--默认账户已经激活