东北大学数据库应用程序设计实践报告
课程编号:
B080 10 0 9 004
数据库应用程序设计实践报告
姓 名
学 号
班 级
指 导 教 师
开 设 学 期
20 0 16 6- -2 2 01 17 7 第一学 期
开 设 时 间
第 1 3 周 - -— — 第 第 5 15 周
报 告 日 期
201 6 /12 / 16
评 定 成 绩
评 定 人
评 定 日 期
东北大学软件学院
1. 问题定义 银行代收费系统给电力公司开发得一套缴费系统,方便用户通过网银支付电费. 主要得用例图:
图 1 银行代收费系统用例图 根据用例图得出主要得业务需求:
(1)抄表
系统管理员把抄表记录录入系统,抄表记录包括当前电表数、抄表日期、抄表人等信息,根据抄表记录,系统自动计算每个计费设备当月得应收电费。每个计费设备有唯一
编号。
(2)查询
用户随时查询欠费金额。一个用户名下可能多个计费设备,查询欠费时,将所有计费设备欠费总与输出。需要考虑设备得余额问题。如果余额大于欠费,则欠费为 0,更新余额,修改 receivable 中 flag 标志。
(3)缴费
在当月电费清单生成完毕后,用户可进行电费缴纳,缴纳金额可就是任意金额.系统将缴费金额存入设备余额中,再次查询则欠费应该减少。
(4)冲正
用户在缴费过程中如果给其她用户缴费了,在当日 0 点前可以冲正,即把钱收回,放入余额,向 payfee 表中添加一个负数金额、相同银行流水号得记录.并且修改设备余额,此时查询欠费应该有改变。
(5)对帐
每个银行每日凌晨给电力公司得代缴费系统发送对账信息,代缴费系统记录对账结果,对账明细,对账异常信息进行存储。错误信息为 100银行没有此记录。101企业没有此流水号、102 银行企业金额不等。
2. . 数据库设计 (1)ER 图设计: 自己设计得 ER图:
经过老师修正统一得 ER 图:
客户teladdress name设备deviceid拥有费用(应收)产生费用(实缴)缴纳银行缴给idnameflag
idyearmonth paydate
bankserial type
paymoney
idcodeidtype
balance
抄表记录产生idyearmonth snum
basicfee
银行记录银行对账总表银行对账异常表id
payfee
bankserial
checkdate
banktotalcountbanktotalmoneyourtotalcount ourtotalmoney id
exceptiontype
ourmoney id
checkdate
bankserial
bankmoney (2)建表语句
-- Create table create table Bank (
id
number(4),
name varchar2(20),
code char(2)
) ; —- Create/Recreate primary, unique and foreign key constraints
alter table Bank
add constraint PK_BANK_ID primary key (ID); alter table BANK
add constraint PK_BANK_CODE unique (CODE); -- Create table create table client (
id
number(4),
name
varchar2(20),
address varchar2(80),
tel
varchar2(20)
)
; —- Create/Recreate primary, unique and foreign key constraints
alter table client
add constraint PK_CLIENT_ID primary key (ID); -— Create table create table device (
deviceid number(4),
clientid number(4),
type
char(2),
balance
number(7,2)
)
; -- Create/Recreate primary, unique and foreign key constraints
alter table device
add constraint PK_DEVICE_DEVICEID primary key (DEVICEID); alter table device
add constraint FK_DEVICE_CLIENTID foreign key (CLIENTID)
references client (ID); —- Create table create table electricity (
id
number(4),
deviceid
number(4),
yearmonth char(6),
snum
number(10)
) ; -- Create/Recreate primary, unique and foreign key constraints
alter table electricity
add constraint PK_ELECTRICITY_ID primary key (ID); alter table electricity
add constraint FK_ELECTRICITY_DEVICEID foreign key (DEVICEID)
references device (DEVICEID); —- Create table create table RECEIVABLES (
id
number(4),
yearmonth char(6),
deviceid
number(4),
basicfee
number(7,2),
flag
char(1)
)
; -— Create/Recreate primary, unique and foreign key constraints
alter table RECEIVABLES
add constraint PK_RECEIVABLES_ID primary key (ID); alter table RECEIVABLES
add constraint FK_RECEIVABLES_DEVICEID foreign key (DEVICEID)
references device (DEVICEID); —- Create table create table PAYFEE (
id
number(4),
deviceid
number(4),
paymoney
number(7,2),
paydate
date,
bankcode
char(2),
type
char(4),
bankserial varchar2(20) ) ; -- Create/Recreate primary, unique and foreign key constraints
alter table PAYFEE
add constraint PK_PAYFEE_ID primary key (ID); alter table PAYFEE
add constraint FK_PAYFEE_DEVICEID foreign key (DEVICEID)
references device (DEVICEID); alter table PAYFEE
add constraint FK_PAYFEE_BANKCODE foreign key (BANKCODE)
references BANK (CODE); -- Create table create table BANKRECORD (
id
number(4),
payfee
number(7,2),
bankcode
char(2),
bankserial varchar2(20) ) ; -- Create/Recreate primary, unique and foreign key constraints
alter table BANKRECORD
add constraint PK_BANKRECORD_ID primary key (ID); alter table BANKRECORD
add constraint FK_BANKRECORD_BANKCODE foreign key (BANKCODE)
references BANK (CODE); —— Create table create table CHECKRESULT (
id
number(4),
checkdate
date,
bankcode
char(2),
banktotalcount number(4),
banktotalmoney number(10,2),
ourtotalcount
number(4),
ourtotalmoney
number(10,2)
)
; —— Create/Recreate primary, unique and foreign key constraints
alter table cHECKRESULT
add constraint PK_CHECKRESULT_ID primary key (ID); alter table CHECKRESULT
add constraint FK_CHECKRESULT_BANKCODE foreign key (BANKCODE)
references BANK (CODE); -— Create table create table check_exception (
id
number(4),
checkdate
date,
bankcode
char(2),
bankserial
varchar2(20),
bankmoney
number(7,2),
ourmoney
number(7,2),
exceptiontype char(3)
)
; —- Create/Recreate primary, unique and foreign key constraints
alter table check_exception
add constraint PK_CHECKEXCEPTION_ID primary key (ID); alter table CHECK_EXCEPTION
add constraint FK_CHECKEXCEPTION_BANKCODE foreign key (BANKCOD
E)
references BANK (CODE); 3. . 数据库端得系统实现
条 1、十条 s ql 语句 ( (1)
)
查询出所有欠费用户. (为了使测试方便, 修改添加了一些数据,见附录)
select a、clientid,c、name,a、deviceid,b、yearmonth from device a join receivables b on a、deviceid=b、deviceid join client c on a、clientid=c、id where b、flag=0
order by 1,3,4
( (2)
)过 查询出拥有超过 2 个设备得用户 SELECT clientid,name FROM (SELECT clientid, COUNT(*)
CT FROM device GROUP BY clientid)
join client on client、id=clientid WHERE CT > 2
( (3)
)
统计电力企业 某个月 得总应收费用,实收费用 select month,sum(paymoney) from( select to_char(paydate,"yyyymm') as Month,paymoney from payfee p
where to_char(paydate,’yyyymm’)=’201608" ) group by month
-—实收费用
select yearmonth ,sum(basicfee) as receivableMoney from receivables group by yearmonth having yearmonth=’201608' -—应收费用
( (4)
)
查询出所有欠费超过半年得用户 with s as( select b、deviceid ,count(b、deviceid) from
receivables b where flag=0 group by b、deviceid having count(b、deviceid)〉1 --我将题目修改成超过一个月
)
select device、clientid,device、deviceid from
device join s on
device、deviceid=s、deviceid order by 1,2
( (5)
)
查询任意用户得欠费总额 select clientid,sum(b、basicfee)
from device a join receivables b on a、deviceid=b、deviceid where clientid=1
group by clientid ,flag having flag=0
( (6)
)得 查询出某个月用电量最高得 3 名用户 with s as ( select sum(b、snum)
as sum_num, a、clientid from device a inner join electricity b on a、deviceid = b、deviceid where b、yearmonth = ’201608’ -- 月份条件
group by a、clientid )
select s0、* from( select s、clientid, s、sum_num from s order by s、sum_num desc)s0 where rownum <= 3
( (7)
)
查询出电力企业某个月哪天得缴费人数最多 select day,num from
(
select count(id) as num ,to_char(paydate,’yyyymmdd") as day
from payfee
where to_char(paydate,’yyyymm")="201608’
group by to_char(paydate,’yyyymmdd’)
order by count(bankserial)
desc ) where rownum<2;——查询 8 月份付款人数最多得一天
( (8)
)
按设备类型使用人数从高到低排序查询列出设备类型, 使用人数。
select device、type,count(*) as num from device group by device、type order by count(*) desc
( (9)
)
统计每个月各银行缴费人次,从高到低排序。
select to_char(paydate,"yyyymm’)
yearmonth,bank、name, count(payfee、id) num
from bank join payfee on bank、code = payfee、bankcode
group by to_char(paydate,’yyyymm'),bank、name
order by yearmonth,num desc;
—— 增加了一条记录,修改了两条记录
( (10)
)
查询出电力企业所有新增用户(使用设备不足半年). select client、id,device、deviceid from client join device on client、id = device、clientid join electricity on device、deviceid = electricity、deviceid group by client、id,device、deviceid having count(yearmonth)<6;
-—如果某个设备得抄表记录数小于 6,则其使用不足半年
附录:
添加修改得数据: 1、在device 表下,加入数据如图:
2、在 receivables表中,加入四个设备两个月得应收记录如图:
3.在 payfee 里加入1201 设备 201609 得付款记录
4、向electricity中插入数据,如下图,比较用户.
5.将payfee 中得部分记录得 bankcode 更改,订单日期也进行更改 6.增加记录到 bank 表中。
2 、事物存储过程 (1)
查询 码 代码 1: (按设备号进行查询,在代码 2 中被调用) create or replace procedure queryfee1(deviceno in number, smoney out number )
is
basicfee number(7,2);
yearmonth receivables、yearmonth%type;
dtype device、type%type;
days number;
days2 number;
d_balance number;
rid number;
chargedate date;
cursor temp_cursor is
select r、basicfee,r、yearmonth,d、type,r、id
from
device d, receivables r
where
d、deviceid = r、deviceid
and r、flag = 0
and d、deviceid=deviceno; begin
smoney:=0;
open temp_cursor;
loop
fetch temp_cursor into basicfee,yearmonth,dtype,rid;
exit when temp_cursor%notfound;
smoney:=smoney+basicfee;
smoney:=smoney+basicfee*0、08;
if dtype = ’01" then
smoney:= smoney + basicfee*0、1;
else
smoney:=smoney + basicfee*0、15;
end if;
select round(sysdate - add_months(to_date(yearmonth,'yyyymm'),1))
into days
from dual;
select TO_CHAR(SYSDATE,’DDD')
into days2 from dual;
if days 〉0 then
if dtype='01" then —-居民
违约金 跨年与不跨年违约金比例相同
smoney:=smoney+basicfee*0、001*days;
else
if days<days2 then —— 其她, 不跨年
smoney:=smoney+basicfee*0、002*days;
else
——其她,跨年
smoney:=smoney+basicfee*0、002*(days—days2)+basicfee*0、003*(days2);
end if;
end if;
end if;
end loop;
select balance into d_balance from device where deviceid=deviceno;
if(smoney<=d_balance and smoney!=0) then —-如果设备余额大于欠费
余额更新、欠费置 0
select trunc(sysdate) into chargedate from dual; ——截取到日
insert into devicerecord values(deviceno,smoney,rid,chargedate); --把设备扣费记录保存保存
update device set balance=balance-smoney where deviceid=deviceno;
update receivables set flag=2 where id=rid;
smoney:=0;
elsif(smoney!=0)
then --设备余额不够缴费
smoney:=smoney-d_balance;
end if; end queryfee1; 代码2 2: (按用户号获得设备号,将设备号传入代码 1 )
得存储过程中)
create or replace procedure QueryFee(clientno in client、id%type, smoney out number)
is
deviceno number;
d_smoney number;
cursor temp_cursor is
select d、deviceid
from client c, device d
where c、id = d、clientid
and c、id = clientno; begin
smoney:=0;
open temp_cursor;
loop
fetch temp_cursor into deviceno;
exit when temp_cursor%notfound;
queryfee1(deviceno,d_smoney);
smoney:=smoney+d_smoney;
end loop; end QueryFee;
测试截图:
设备 6 得应收费用表:
查询设备 6 得欠费金额:
主要创新点:
1.我将修改标志位flag 与扣费得过程写在了此存储过程中.查询时如果设备余额大于欠费数,则用余额对设备进行缴费,更新 flag=2(第二天凌晨所有得flag=2更改为 1)就是为
了标志就是今天得扣费修改过程,方便冲正。
2.我新设置了一个表,bankrecord 用来记录扣费记录,方便冲正得时候将设备金额变回来。
3、在计算跨年费用时,我使用了 select TO_CHAR(SYSDATE,"DDD") into days2 from dual; 首先判断当前时间就是一年中得第几天,再根据老师得代码,设备欠费天数 days 作比较. 如果 days>days2 ,说明存在跨年得欠费,否则不存在。
2. 缴费 代码:(添加记录到payf ee 表中,并更改设备余额)
create or replace procedure payfee1(deviceno in number,paymoney in number,results out varchar )
is
paydate date; begin
if paymoney>0 then
select trunc(sysdate)
into paydate from dual; —-截取到日
insert into payfee values(paysequence、nextval,deviceno,paymoney,paydate,19,2001,bankserial、nextval);
update device set balance=balance+paymoney where deviceid=deviceno;
results:="成功’;
else
results:="缴费失败,缴费金额不能少于 0’;
end if; end payfee1; 测试截图
缴费之后得 payfee表:(增加了一条付费记录)
再次查询欠费金额:(欠费金额为 0)
缴费之后得设备表:(余额由 3 变成58、8)
设备 6 应收费用表:(flag=2用来标志就是今天刚刚缴费得,方便冲正。)
主要创新点: 按照设备号进行缴费,向 payfee 中添加记录。
使用序列来控制流水号,与id。
3. 冲正 代码 create or replace procedure Reverse ( re_bankserial in payfee、bankserial%type,results out varchar) is
deviceno number;
re_money number; —-冲正钱数
d_balance number; —-设备余额
d_smoney number; -—设备扣费前得余额
re_bankcode char(2);
re_date date;
paydate date;
cursor temp_cursor is
select p、deviceid,p、paymoney,p、bankcode,p、paydate
from
payfee p
where p、bankserial=re_bankserial and p、bankserial in (
select bankserial
from payfee
group by bankserial
having count(*)=1); --没被冲正过得记录
begin
open temp_cursor;
fetch temp_cursor into deviceno,re_money,re_bankcode,paydate;
select trunc(sysdate)
into re_date from dual; —-截取到日
if temp_cursor%NOTFOUND
--判断有无数据
then results :='失败,没有找到此流水号";
elsif paydate!=re_date then
results:=’失败,不就是本日记录。’;
else
insert into payfee values(paysequence、nextval,deviceno,0-re_money,re_date,re_bankcode,2000,re_bankserial);
select balance into d_balance from device where deviceid=deviceno; —-取出设备得余额
if(d_balance>re_money)
then —-设备余额大于充值钱数
说明充值得钱数不够,flag 不变
update device
set balance=balance—re_money where deviceid=deviceno;
results :=’成功";
else —-设备余额小于充值钱数,说明充值之后够了,并且扣费成功了
update receivables set flag = 0 where deviceid=deviceno and flag=2;
select distinct money into d_smoney from devicerecord where deviceid=deviceno and chargedate=paydate;
update device set balance=balance+d_smoney-re_money where deviceid=deviceno;
results :=’成功’;
end if;
end if; end Reverse ; 测试截图 将刚刚为 6 得缴费冲正.
此时得 payfee 表:(增加了一条冲正记录)
应收费用表:(flag 标志为变成 0)
设备表:(回到缴费前 3 元状态)
查询设备 6 得欠费情况:(回到缴费前得状态,仍然欠费 141、2)
主要创新点:
实验得主要思路就是主要确定有一致得缴费记录,并且流水号记录只有一次,说明没有
冲正过,然后进行冲正。
冲正过程中,读取设备此时余额与缴费金额(或者说就是冲正金额)作对比,根据“设备初始金额+缴费金额-扣费金额=设备此时余额”,如果设备此时余额<缴费金额,这说明执行了扣费过程,需要进行 receivable 中标志位得更改,也需要修改device表中得设备余额,这时候用到了扣费记录表(自己建得)找到扣费金额。那么 设备此时得余额+扣费金额-缴费金额=设备初始金额 、 如果设备此时余额>缴费金额 ,这说明缴费之后依然欠费,没有进行扣费.这时候只需要向 payfee 中添加记录,并修改设备金额; 4. 对总账 代码 create or replace procedure checkmoney(check_bankcode in char,total_count
in
number, total_money in
number,check_date
in
varchar,results out varchar) is
bankcode1 varchar(2);
paydate1 date;
total_money1 number;
total_count1 number;
re_count number;
cursor temp_cursor is
select bankcode,paydate,sum(paymoney),count(*)
from
payfee
group by bankcode,paydate
having bankcode=check_bankcode and to_char(paydate,’yyyymmdd’)=check_date; begin
select count(*) into
re_count
from
payfee
where bankcode=check_bankcode and to_char(paydate,’yyyymmdd")=check_date and paymoney〈0;
open temp_cursor;
fetch temp_cursor into bankcode1,paydate1,total_money1,total_count1;
total_count1:=total_count1-re_count*2;
if total_count1=total_count and total_money1=total_money then
results:="对账成功’;
else
results:=’对账失败,执行对账明细.’;
check_detail (check_date);
end if; end checkmoney; 测试截图 对账成功(:
Payfee 表中数据:
对账失败,调用对账明细:
主要创新点:
主要思路就是用游标把 payfee 表中符合银行代码、日期得记录保存
起来,然后提取出来进行比较。失败则调用对明细账模块,将错误信息存储. 5.对明细帐 代码: create or replace procedure check_detail(check_date in char) is
Bbankcode varchar(2);
Bpayfee number;
Bbankserial varchar(20);
Pbankserial varchar(20);
Ppayfee number;
Ppaydate date;
cursor temp_cursor is
select b、bankcode,b、payfee ,b、bankserial,p、bankserial,p、paymoney
from bankrecord b full outer join payfee p on p、bankserial=b、bankserial
where p、bankserial not in
(select bankserial -—找到冲正得记录 与 被冲正得记录
from
payfee
where type=2000) and to_char(p、paydate,'yyyymmdd")=check_date or to_char(p、paydate,"yyyymmdd") is null; begin
select trunc(sysdate)
into Ppaydate from dual; --截取到日
open temp_cursor;
loop
fetch temp_cursor into BBankcode,Bpayfee,Bbankserial,Pbankserial,Ppayfee;
exit when temp_cursor%notfound;
if(Bbankserial is null) then
insert into check_exception values(checkid、nextval,ppaydate,Bbankcode,Pbankserial,Bpayfee,Ppayfee,100);
elsif(Pbankserial is null) then
insert into check_exception values(checkid、nextval,Ppaydate,Bbankcode,Bbankserial,Bpayfee,Ppayfee,101);
elsif(Bpayfee!=Ppayfee)
then
insert into check_exception values(checkid、nextval,Ppaydate,Bbankcode,Bbankserial,Bpayfee,Ppayfee,102);
end if;
end loop; end check_detail; 测试截图:
对账失败时
Checkexception 表中数据:100-银行无此流水号
101-企业无此流水号
102-银行与企业记录得钱数不等
主要创新点: 主要思路就是将 payfee表与银行记录表进行全连接,然后进行筛选。
因为一开始我在构建游标时使用了 where paydate=check_date 筛选条件,忽略了全连接之后企业没有此流水号记录,paydate 为空得情况,导致了企业方无此流水号这种错误记录不会出现。所以将条件改为 to_char(p、paydate,'yyyymmdd")=check_date or to_char(p、paydate,"yyyymmdd")
is null;
4. 程序实现 调用存储过程代码: package database; import java、sql、CallableStatement; import java、sql、Connection; import java、sql、DriverManager; import java、sql、SQLException; import java、sql、Types; import java、text、ParseException; import java、text、SimpleDateFormat; import java、util、Date;
import java、util、Scanner; public class procedure {
{noitpecxEesraP sworht )sgra ][gnirtS(niam diov citats cilbupﻩ ;”revirDelcarO、cbdj、elcaro” = revird gnirtSﻩﻩ
;"EX:95194:tsohlacol:niht:elcaro:cbdj" = lru gnirtSﻩ
//连接字符串,49159 对应得就是我得 oracle在我得电脑上使用得端口,XE 就是服务名
;”rh" = resu gnirtSﻩﻩ
String password = "hr";
ﻩ try {
ﻩﻩ Class、forName(driver); ﻩsap ,resu ,lru(noitcennoCteg、reganaMrevirD = noitcennoc noitcennoCﻩsword);
System、out、println(”连接成功");
;eurt = nigol naeloobﻩﻩ ﻩ
;)ni、metsyS(rennacS wen = rennacs rennacSﻩﻩ;eciohc tniﻩ ﻩ
;sc tnemetatSelballaCﻩ ﻩﻩ String bankSerial = null;
ﻩ
String result;
ﻩ
String bankCode;
ﻩ String date1 = null;
;muNlatot tniﻩ ﻩ
int totalMoney;
ﻩﻩ String date; ﻩ ;onecived tniﻩ
;yenoMyap tniﻩﻩ ﻩﻩ while(login)
{
;)”询查、1"(nltnirp、tuo、metsySﻩﻩ ﻩﻩﻩ System、out、println("2、缴费");
ﻩ
System、out、println("3、冲正");
;)”帐总对、4"(nltnirp、tuo、metsySﻩ ﻩﻩ
;)”账细明对、5”(nltnirp、tuo、metsySﻩ ﻩﻩﻩ System、out、println(”0、退出");
ﻩ
ﻩ System、out、println(”请输入选项:");
;)(tnItxen、rennacs = eciohcﻩﻩ
{ )eciohc( hctiwsﻩﻩ ﻩ:1 esacﻩ ﻩﻩﻩ
;)":号户客入输请"(nltnirp、tuo、metsySﻩ
ﻩ
;)(tnItxen、rennacs = onremotsuc tniﻩﻩ
ﻩ;)”)?,?(EEFYREUQ llac"(llaCeraperp、noitcennoc = scﻩ
ﻩ
cs、setInt(1, customerno);
ﻩﻩ
cs、registerOutParameter(2, Types、NUMERIC);
cs、execute();
;)2(tnIteg、sc = yenoms elbuodﻩﻩﻩﻩﻩ;)yenoms(nltnirp、tuo、metsySﻩﻩﻩﻩ;kaerbﻩ
ﻩ
case 2:
ﻩﻩﻩ
cs = connection、prepareCall("call payfee1(?,?,?)");
;)":号备设入输请"(nltnirp、tuo、metsySﻩﻩ ﻩ
;)(tnItxen、rennacs = onecivedﻩ
ﻩ
;)”:额金费缴入输请"(nltnirp、tuo、metsySﻩ
ﻩ
;)(tnItxen、rennacs = yenoMyapﻩﻩ ﻩ
ﻩ
cs、setInt(1, deviceno);
cs、setInt(2, payMoney);
ﻩ
ﻩ cs、registerOutParameter(3, Types、VARCHAR);
ﻩ cs、execute();
ﻩﻩ
;)3(gnirtSteg、sc = tluserﻩﻩ ﻩ
ﻩﻩ System、out、println(result);
ﻩ
break;
ﻩ
case 3:
ﻩ
;)":号水流行银入输请"(nltnirp、tuo、metsySﻩ ﻩﻩﻩ
bankSerial = scanner、next();
ﻩ
;)")?,?(esrever llac"(llaCeraperp、noitcennoc = scﻩ
ﻩ
cs、setString(1, bankSerial);
ﻩ
ﻩ
;)RAHCRAV、sepyT ,2(retemaraPtuOretsiger、scﻩ
ﻩﻩﻩ cs、execute();
ﻩ result = cs、getString(2);
ﻩﻩ
System、out、println(result);
ﻩﻩﻩ
;kaerbﻩ
ﻩﻩ case 4:
ﻩ
System、out、println("请输入银行代号:”);
ﻩﻩ
bankCode = scanner、next();
ﻩﻩ
;)”:数笔总入输请"(nltnirp、tuo、metsySﻩ ﻩ
ﻩ
totalNum = scanner、nextInt();
ﻩ
System、out、println("请输入总金额:”);
ﻩ ﻩ;)(tnItxen、rennacs = yenoMlatotﻩ
ﻩ
;)”:期日入输请"(nltnirp、tuo、metsySﻩ
ﻩﻩ
date1 =scanner、next();
ﻩﻩ
java、util、Date d = new SimpleDateFormat("yyyy-MM-dd")、parse(date1);
ﻩ;)")?,?,?,?,?(yenomkcehc llac"(llaCeraperp、noitcennoc = scﻩ ﻩ
ﻩ
;)laireSknab ,1(gnirtStes、scﻩ ﻩ
;)muNlatot ,2(tnItes、scﻩ
ﻩ
;)yenoMlatot ,3(tnItes、scﻩﻩ
ﻩ
ﻩﻩ cs、setDate(4, new java、sql、Date(d、getTime()));
ﻩ
;)RAHCRAV、sepyT ,5(retemaraPtuOretsiger、scﻩﻩ ﻩﻩ
;)(etucexe、scﻩﻩ
ﻩﻩﻩ result = cs、getString(5);
ﻩ
;)tluser(nltnirp、tuo、metsySﻩ ﻩ
ﻩﻩ break;
ﻩ
:0 esacﻩ ﻩﻩﻩ
login = false;
ﻩ
ﻩ
System、out、println("拜拜!!!"); ﻩﻩﻩ;kaerbﻩ
ﻩ
default:
ﻩ
ﻩﻩ System、out、println(”输入有误!请重新输入:");
ﻩ
;kaerbﻩﻩ }ﻩﻩﻩﻩ ﻩ
} ﻩ } { )e noitpecxEdnuoFtoNssalC(hctacﻩﻩ ﻩ
;)"常异接连"(nltnirp、tuo、metsySﻩ
} catch(SQLException e) {
ﻩ
;)(ecarTkcatStnirp、eﻩ ﻩ }
} } 5. . 遇到得问题及其解决方案 1) 查询对账明细时,对账明细表中没有错误类型为 100 得记录,即企业有流水号、银行没有流水号得情况。
错误原因:因为一开始我在构建游标时使用了where paydate=check_date筛选条件,忽略了全连接之后企业没有此流水号记录,paydate 为空得情况,导致了企业方无此流水号这种错误记录不会出现. 解决方案:将条件改为 to_char(p、paydate,’yyyymmdd’)=check_date or to_char(p、paydate,"yyyymmdd")
is null; 程序可以正确运行。
2) 同一缴费记录冲正可以多次进行。
错误原因:未考虑仅可冲正一次得限制。
解决方案:在从payfee 表中读取数据得时候,对流水号有两次(说明已冲正)得进行剔除。
3)
在 java 程序实现得时候,出现错误:
解决方法:错误得原因就是我在使用数据库得时候,登陆账户使用得就是系统权限。所以我将数据库内容改成了normol权限。
6. . 创新点 1) 冲正过程中,对设备余额进行修改,让其返回初始状态。我将修改标志位 flag 与扣费得过程写在了此存储过程中。查询时如果设备余额大于欠费数,则用余额对设备进行缴费,更新flag=2(第二天凌晨所有得flag=2更改为 1)就是为了标志就是今天得扣费修改过程,方便冲正.我新设置了一个表,bankrecord 用来记录扣费记录,方便冲正得时候将设备金额变回来。
2) 查询过程中,我把查询分成了两个存储过程,一个就是按设备号进行查询,一个就是按客户号进行查询,然后客户号查询时调用设备查询过程。查询过程中就进行了扣费过程,如果余额大于欠费,则进行扣费,并修改标志位. 3) 冲正过程中,根据“设备初始金额+缴费金额-扣费金额=设备此时余额",读取设备此时余额与缴费金额(或者说就是冲正金额)作对比:如果设备此时余额<缴费金额,这说明执行了扣费过程,需要进行 receivable 中标志位得更改,也需要修改device 表中得设备余额,这时候用到了扣费记录表(自己建得)找到扣费金额。那么 设备此时得余额+扣费金额-缴费金额=设备初始金额;如果设备此时余额〉缴费金额 ,这说明缴费之后依然欠费,没有进行扣费.这时候只需要向payfee 中添加记录,并修改设备金额; 4) 在计算跨年费用时,我使用了 select TO_CHAR(SYSDATE,"DDD’)
into days2 from dual;首先判断当前时间就是一年中得第几天,再根据老师得代码,设备欠费天数days 作比较。如果 days>days2 ,说明存在跨年得欠费,否则不存在. 7. 总结
1) 通过这次实验,充分学习了数据库得相关知识,从业务分析来画出 ER 图,设计表结构,练习了 sql 语句以及事物存储过程 plsql 语言,并且学会了如何从java 调用数据库存
储过程.总之,从这次实验中学到了很多知识,非常感谢老师。
2) 测试就是非常必要得工具,在完成代码后一定要进行充分您得测试来发现就是否有错误存在。我在实验过程中本来以为代码已经完善了,但就是经过充分得测试,总可能发现一个又一个得问题需要自己去解决。
3) 代码就是基于现实生活得,我本来在实验存储过程2中设置了低于欠费不可以缴费。但就是实际生活中,电力公司一定就是无条件接受所有缴费得.所以得代码得编写一定要基于实践、基于现实。
4) 作业得分步提交能够极大得提高同学们得学习效率与时间,不会出现将实验堆积到最后一起写得拖沓情况。希望实验都可以按照这种方式来进行验收。有多少耕耘就有多少收获,这次得实验我本着认真、认真再认真得态度,熬了很多个夜晚,甚至吃饭得时候都在想代码。最终也能够高质量得完成代码与实验,希望自己以后能够认真对待每一个实验,为自己负责. 5) 每次验收得时候自己总会非常紧张,希望自己在以后得学习生活中,能够战胜自己,敢于面对,克服自己得障碍。
参考文献 例:
[1] 萨师煊,王珊、数据库系统概论(第三版)[M]、北京:
高等教育出版社,2002,122—150、 [2] 侯捷、Java 编程思想[M]、北京:机械工业出版社,2002,22—35、 教师评语或 评价表格:
评价内容
具
体
要
求
分值
得分
平时表现
实践课过程中,无缺勤、迟到、早退现象,学习态度积极. . 按时提交3 3 次阶段成果物, , 且完成正确。
30
实践验收
按实践要求合理设计并定义出数据库结构, , 认真记录实验数据, , 原理及实验结果分析准确, , 归纳总结充分。程序结构清晰正确, SQ L与 PL / SQ L程序代码书写规范,简洁。验收过程中能够正确回答问题。在解决问题得过程中有自己独到得见解, , 并能够有 所创新。
40 0
报告质量
实践报告格式规范, , 报告内容充实、正确,报告叙述逻辑严密, , 可准确反映出实践过程中出现得问题与解决方案, ,以及独立分析问题与解决问题得能力。
3 3 0
总
分
- 范文大全
- 职场知识
- 精美散文
- 名著
- 讲坛
- 诗歌
- 礼仪知识
-
超星尔雅学习通《对话大国工匠致敬劳动模范》题库附答案
超星尔雅学习通《对话大国工匠致敬劳动模范》题库附答案 1、历史只会眷顾坚定者、奋进者、搏击者,而不会
【入党申请书】 日期:2021-05-12
-
对于政治生态考核整改工作方案
本文系作者原创投稿,仅供学习参考,请勿照搬照抄! 关于政治生态考核整改工作的方案 为做好推进风清气正
【经济工作】 日期:2020-06-05
-
大学生学习2024年两会精神心得感悟
大学生学习2024年两会精神心得感悟过去一年,是全面贯彻二十大精神的开局之年,中国共产党带领全国各族人民,付出艰辛努力,换来重大成
【心得体会】 日期:2024-03-07
-
中国传统故事英文版 中国古代故事英文版
历史学科蕴含着许多丰富的、生动的、有趣的素材,每一个历史事件、历史人物都有相关的、动人的历史小故事,都能给人以启迪。你对中国古代的故事了解多少呢?下面是小编为您...
【调查报告】 日期:2019-05-22
-
基尔霍夫定律验证实验报告
基尔霍夫定律的验证的实验报告本文关键词:基尔,定律,霍夫,验证,实验基尔霍夫定律的验证的实验报告本文
【思想宣传】 日期:2021-03-08
-
中小学党建工作实施意见
中小学党建设工作实施意见中小学校担负着培养德智体美全面发展的社会主义建设者和接班人的重要使命。加强中
【爱国演讲】 日期:2020-09-22
-
地藏经诵读仪规(完整版)
地藏经诵读仪规(完整版) 恭请文: 恭请大慈大悲大愿地藏王菩萨、护法诸天菩萨慈悲加持护念弟子***能
【个人简历】 日期:2021-03-31
-
青年学生学习全国人大十四届二次会议心得感想16篇
青年学生学习全国人大十四届二次会议心得感想16篇报告中提到政府在经济调控、消费政策、基础设施和制造业投资、房地产调控以及地方债务
【心得体会】 日期:2024-03-07
-
小学党建工作制度
小学党建工作制度33篇 党建工作责任制度 1 党支部年初制定全年党建工作计划,将目标任务分解到有关部
【思想学习】 日期:2021-02-10
-
材料力学考题
材料力学考题本文关键词:材料力学,考题材料力学考题本文简介:材料力学1、简易起重设备中,AC杆由两根
【入党申请书】 日期:2021-03-06
-
执行信息公开网
执行信息公开网 执行信息公开网 执行信息公开网: zhi*ing (点击下图可直接进行访问) 全国
【职场知识】 日期:2020-07-03
-
年国家开放大学电大电子商务单选题题库
单选: 1、EDI是指A、电子商务B、电子数据交换C、电子交易 D、移动数据交换 答案: B 2、电
【职场知识】 日期:2020-06-05
-
大学教师毕业设计指导记录4篇
大学教师毕业设计指导记录4篇 毕业设计是指工、农、林科高等学校和中等专业学校学生毕业前夕总结性的独立作业。是实践性教学最后一
【职场知识】 日期:2022-05-11
-
有机磷酸酯类中毒及其解救(实验报告范文)
有机磷酸酯类中毒及其解救XXX、XXX一、实验目的1 观察有机磷酸酯类农药敌百虫中毒时的症状。 2
【职场知识】 日期:2020-08-30
-
“以学生为中心”的教学原则
以学生为中心的教学原则教师在开展以学生为中心的教学实践中,必须谨记学习目标不再是知识的获得,能力要比知识更重要。以下是蒲公英阅读网
【职场知识】 日期:2023-01-05
-
2021教育基础知识试题(附答案)
2021教育基础知识精选试题(附答案) 1、主张恢复西方传统教育核心价值,反对“进步教育
【职场知识】 日期:2021-03-17
-
组工干部学习谈治国理政第三卷《共建创新包容开放型世界经济》心得体会
组工干部学习谈治国理政第三卷《共建创新包容的开放型世界经济》心得体会 《习近平谈治国理政》第三卷第七
【职场知识】 日期:2020-09-22
-
男一分钟仰卧起坐标准表
表表11--13 男生一分钟仰卧起坐、引体向上单项评分表(单位:次) 等级 单项 得分 三年级 四年
【职场知识】 日期:2021-05-08
-
心理健康黑板报_心理健康黑板报图片
虽然工作上难免压力,但是只要正视压力,一切就不会太辛苦。下面就随小编看看心理健康黑板报内容,希望喜欢哦。 心理健康黑板报图片欣赏 心理健康黑板报图片1 心理健...
【职场知识】 日期:2020-02-26
-
发展党员工作部门联审征求意见表
发展党员工作部门联审征求意见表发展对象姓 名 性别 出生年月 身份证号 现工作单位及职务 家庭住址
【职场知识】 日期:2020-09-22
-
唐代诗人李昂个人信息
唐代诗人李昂个人信息 导读:我根据大家的需要整理了一份关于《唐代诗人李昂个人信息》的内容,具体内容:
【古典文学】 日期:2020-11-07
-
[关于中秋的朗诵诗词] 关于爱国的朗诵诗词
中秋,热闹的街头树起了灯彩,舞起了火龙。你知道多少关于中秋的朗诵诗词?下面小编为你整理了几篇关于中秋的朗诵诗词,希望对你有帮助。 关于中秋的朗诵诗词一 中秋佳节...
【古典文学】 日期:2019-06-06
-
叠加原理实验报告
一、实验目的1、通过实验来验证线性电路中的叠加原理以及其适用范围。 2、学习直流仪器仪表的测试方法。
【古典文学】 日期:2020-11-12
-
输血查对制度
输血查对制度依据卫生部《临床输血技术规范》的要求,制订抽血交叉配备查对制度、取血查对制度、输血查对制
【古典文学】 日期:2020-09-24
-
大气唯美黑板报【国庆节大气黑板报】
日本在投降的那一天,再也没有昔日的嚣张,我们中国的屈辱得到洗刷。下面就随小编看看国庆节大气黑板报内容,希望喜欢哦。 国庆节大气黑板报图片欣赏 国庆节大气黑板报...
【古典文学】 日期:2019-05-05
-
【二人旅游英语情景对话】 二人英语对话2分钟旅游
随着国内外旅游业市场的不断扩大,旅游英语人才成为社会的紧缺人才。小编精心收集了二人旅游英语情景对话,供大家欣赏学习! 二人旅游英语情景对话1 A:Itsmyfirsttimeto...
【古典文学】 日期:2020-02-29
-
怎样认识世界处于百年未有之大变局
怎样认识世界处于百年未有之大变局 首先,“大变局”是对国际格局发生巨大变迁的
【古典文学】 日期:2020-10-28
-
2021公安专业知识考试练习题(附答案)
2021公安专业知识考试练习题(附答案) 1 甲地公安机关接到群众举报,在当天举行的大型娱乐活动中,
【古典文学】 日期:2021-01-29
-
乳糖检测方法
附录A(规范性附录) 乳糖的测定A 1原理牛乳或乳粉样液经沉淀剂澄清后,样液中的乳糖在苯酚、氢氧化钠
【古典文学】 日期:2020-12-08
-
法律知识手抄报图片大全|法律知识手抄报
我国开展了全面的普法宣传工作,法制宣传教育、普及法律常识作为经常的重要任务。做法制教育手抄报,普及法律知识。下面是小编为大家带来的法律知识手抄报图片大全,希望大家...
【古典文学】 日期:2020-03-10
-
时尚女装店面装修效果图|韩式女装店面装修
在服装店的设计之中,我们要将多变、创新、品牌自身的定位与发展趋势相结合,用一种可持续的设计方式呈现出来,以便更加适应不断更新的展示主体。下面小编就为大家解开时尚女装店...
【中国文学】 日期:2019-05-16
-
2021年超星尔雅学习通《辩论与修养》章节测试试题(共183题附答案)
2021年超星尔雅学习通《辩论与修养》章节测试试题(共183题附答案)1、辩论的目的不是单纯获得某种
【中国文学】 日期:2021-05-12
-
天地人格最佳搭配起名技巧|天地人格的五行怎么算
天地有阴有阳,物体刚柔表里,而数字则有一个诱导力,那么你知道怎么计算天地人格来取名吗?今天小编为你整理了天地人格最佳搭配起名技巧,一起来看看用天地人格取名的方法有哪些...
【中国文学】 日期:2019-06-06
-
信息技术重要性
信息技术的重要性 信息技术与课程整合将带来课程内容的革新,信息技术的高速发展,要求传统的课程必须适应
【中国文学】 日期:2021-02-11
-
【世界上最大的半岛】阿拉伯半岛
你知道世界上最大的半岛是什么吗?下面由小编来介绍一下。 阿拉伯半岛的简介 阿拉伯半岛(阿拉伯文:)位于亚洲,是世界上最大的半岛。沙特阿拉伯、也门、阿曼、阿拉伯联合...
【中国文学】 日期:2019-05-24
-
2022年当前世界下中国面临国际形势论文范本
和平与发展仍然是当今时代的主题。谋和平、求合作、促发展是各国人民的共同愿望。为了大家学习方便,下面是小编为大家整理的当前世界下中国面临的国际形势论文范文内容,以供参...
【中国文学】 日期:2022-03-31
-
雪天安全行车注意事项_雪天安全行车提示语
维护城市交通秩序,争做河源文明市民。你们想看看雪天安全行车提示语有哪些吗?以下是小编推荐雪天安全行车提示语给大家,欢迎大家阅读! 安全行车温馨提示语【经典篇】 1...
【中国文学】 日期:2020-03-15
-
古代人物漫画女生唯美图片欣赏 漫画人物图片女孩唯美
中国漫画始于清末民初,而平面设计虽然其名称是在改革开放以后确立的,但设计活动却自古就有,二者的相互影响是本文的主要讨论范围。小编整理了唯美古代女生人物漫画,欢迎阅读!...
【中国文学】 日期:2020-03-19
-
2021年5月时事政治热点(国内+国际)
2021年年5月时事政治热点(国内+国际)国内部分 1 55月月66日,由商务部和海南省人民政府共同
【中国文学】 日期:2021-06-10
-
普通高中通用技术学生设计作品图文材料
普通高中通用技术学生设计作品图文材料 一、基本情况作品名称:竹刻大佛笔筒设计人员:xxx学校班级:海
【中国文学】 日期:2020-09-28
-
山东省生产经营单位安全生产主体责任规定(303号令)
山东省生产经营单位安全生产主体责任规定(2013年2月2日山东省人民政府令第260号公布根据2016
【外国名著】 日期:2020-10-22
-
改革开放大事记简表(改革开放新时期1978-2012年)
改革开放大事记简表 (1978-2012年) 时间1978年12月18日至22日地点北京事件党的十一
【外国名著】 日期:2021-06-17
-
大学生音乐欣赏论文 大学音乐鉴赏论文3000
今天小编就为你介绍关于大学生音乐欣赏论文,下面是!小编给你搜集了相关资料!希望可以能帮助到大家。 大学生音乐欣赏论文—第一篇 音乐是生活不可缺少的一部分,学会欣...
【外国名著】 日期:2019-05-27
-
材料力学金属扭转实验报告
材料力学金属扭转实验报告 【实验目的】 1、验证扭转变形公式,测定低碳钢的切变模量G。;测定低碳钢和
【外国名著】 日期:2020-11-27
-
长豆角家常做法怎么做好吃营养 炒豆角的家常做法
豆角在我们日常生活中是很常见的食材,可能我们只知道它含有优质蛋白和维生素,其实它还有其他的营养价值。它也是可以和很多食材做搭配的。下面小编为大家整理了长豆角的做法...
【外国名著】 日期:2020-02-26
-
白烛葵的花语:白烛葵的不死幻想症
白烛葵,花名,花语为“不感兴趣”。现又指《知音漫客》上连载漫画《极度分裂》里主要角色之一。下面小编为你整理了白烛葵的花语。欢迎阅读。 白烛葵的花语:不感兴趣 ...
【外国名著】 日期:2019-05-11
-
(新版)就业知识竞赛题库及答案解析
(新版)就业知识竞赛题库(全真题库) 一、单选题1 (单选):在职业生涯规划工具中,组织在展开员工职
【外国名著】 日期:2021-07-21
-
植物装饰画黑白图片欣赏|荷花装饰画黑白图片
装饰画是一种装饰性艺术,是装饰性和创造性相结合的艺术设计形式。小编整理了植物装饰画黑白,欢迎阅读! 植物装饰画黑白图片展示 植物装饰画黑白图片1 植物装饰画黑白...
【外国名著】 日期:2019-05-31
-
坚定不移全面从严管党治警研讨发言稿
坚定不移全面从严管党治警研讨发言稿政治建警、从严治警是党在新时代的建警治警方针。一年前的全国公安工作
【外国名著】 日期:2020-09-18
-
[10.1旅游去哪里好玩] 旅游去哪里好玩
十月一到,秋意已在一个我们不经意的黎明走来,习习凉风,却是最适合出门游行。小编为您整理了10 1旅游去哪里好玩,秋天,我们一起出发吧。 1、云南建水古城 建水古城...
【外国名著】 日期:2020-03-01
-
梧桐花的花语|梧桐花的功效与作用
梧桐花为梧桐科植物梧桐的花,植物形态详梧桐子条。今天小编为你整理了梧桐花的花语,欢迎阅读。 梧桐花的花语是:情窦初开 在春季里晚开的花朵,有着恬淡的气息。 ...
【寓言童话】 日期:2020-03-03
-
西部计划笔试题库(99题含答案)
西部计划笔试题库(99题含答案) 1 第十三届全国人大三次会议表决通过了《中华人民共和国民法典》,自
【寓言童话】 日期:2021-06-16
-
大学生音乐欣赏论文 大学音乐鉴赏论文3000
今天小编就为你介绍关于大学生音乐欣赏论文,下面是!小编给你搜集了相关资料!希望可以能帮助到大家。 大学生音乐欣赏论文—第一篇 音乐是生活不可缺少的一部分,学会欣...
【寓言童话】 日期:2020-03-12
-
年学生资助诚信教育主题活动方案
各二级学院(部): 为深入贯彻落实习近平总书记关于教育的重要论述,落实立德树人根本任务,增强当代大学
【寓言童话】 日期:2020-06-21
-
主题教育调查研究工作方案2篇
主题教育调查研究工作方案1根据省、市、县开展“不忘初心、牢记使命”主题教育工
【寓言童话】 日期:2021-03-19
-
油管、套管规格尺寸对照表
API油管规格及尺寸 公称尺寸(in) 不加厚外径(mm) 不加厚内径(mm) 加厚外径(mm) 加
【寓言童话】 日期:2020-08-31
-
惊悚鬼故事50字 令人惊悚的故事
这些惊悚故事在短短的篇幅和时间之内让您感受到故事里传达出来的恐怖感,令你感到害怕。下面就是小编给大家整理的令人惊悚的故事,希望对你有用! 令人惊悚的故事篇1:学校...
【寓言童话】 日期:2019-05-13
-
【古代男生漫画图片大全】男生漫画头像
漫画和动画组成了动漫产业的两大支柱。然而,与动画相比,漫画在业界和学界皆相对冷清。小编整理了古代男生漫画,欢迎阅读! 古代男生漫画图片展示 古代男生漫画图片1 ...
【寓言童话】 日期:2019-05-27
-
读《李光耀观天下》有感_李光耀观天下txt在线读
务实与真诚 ——读《李光耀观天下》有感 原创:雁过留声ly 购于北大,在出差的飞机和高铁上读完,这本《李光耀观天下》给予我很多启示。严格地说,这本书没有详
【寓言童话】 日期:2019-05-05
-
北京最好吃的自助餐厅 北京高档自助餐排名
自助餐简直就是拯救大胃王的最佳饮食!没有之一!世界上没有什么事情是吃一顿自助餐解决不了的,如果有,那就吃两顿!下面小编给大家推荐北京几家好吃的自助餐。 北京最好吃的...
【寓言童话】 日期:2020-02-25
-
学生高考动员演讲稿
学生高考动员演讲稿3篇高考动员演讲稿11 老师们、同学们: 大家下午好!漫漫高考长征路已经进入尾声了
【百家讲坛】 日期:2021-09-22
-
企业安全演讲稿2021
最新企业安全的演讲稿5篇 演讲稿是作为在特定的情境中供口语表达使用的文稿。在充满活力,日益开放的今天
【百家讲坛】 日期:2021-09-22
-
XX镇扶贫项目实施专项整治工作总结_1
XX镇扶贫项目实施专项整治工作总结 为深入贯彻精准扶贫精准脱贫基本方略,认真落实党中央、国务院,省委
【百家讲坛】 日期:2021-09-22
-
对乡镇领导班子干部成员批评意见例文
对乡镇领导班子干部成员的批评看法范文 一、对党委书记XXX同志的批评看法〔3条〕 1、与干部交流偏少
【百家讲坛】 日期:2021-09-22
-
群英乡扶贫资金项目芬坡村祖埇村生产道路硬化工程绩效自评报告
群英乡扶贫资金项目((芬坡村祖埇村生产道路硬化工程))绩效自评报告 一、基本情况(一)群英乡扶贫资金
【百家讲坛】 日期:2021-09-22
-
党委书记警示教育大会上讲话2021汇编
党委书记在警示教育大会上的讲话55篇汇编 党委书记在警示教育大会上的讲话(一) 同志们: 根据省州委
【百家讲坛】 日期:2021-09-22
-
对于2021年召开巡视整改专题民主生活会对照检查材料
关于12021年召开巡视整改专题民主生活会对照检查材料 按照中央巡视组要求和省、市、区委统一部署,区
【百家讲坛】 日期:2021-08-14
-
消防安全知识培训试题.doc
消防安全知识培训试题姓名: 部门班组: 成绩: 一:填空题,每空4分,共44分。 1、灭火剂是通过隔
【百家讲坛】 日期:2021-08-14
-
涉疫重点人员“五包一”居家隔离医学观察工作流程
涉疫重点人员“五包一”居家隔离医学观察工作流程 目前,全球疫情仍处于大流行状
【百家讲坛】 日期:2021-08-14
-
疫情防控致全体师生员工及家长一封信
疫情防控致全体师生员工及家长的一封信 各位师生员工及全体家长朋友: 暑假已至,近期我省部分地方发现确
【百家讲坛】 日期:2021-08-14