PB图书管理系统设计 第12页
“关闭”按钮:close(parent)
(9) 还书窗口 w_return
图5.8
功能介绍:归还图书
操作方法:输入“图书编号”,判断后显示出图书名称、借阅人编号、借阅人姓名。并根据是否启用了“罚金制度”(在“罚金规则窗口”设置),决定是否计算罚金。
代码分析:
Open事件:char lc_flag
//查询“规则”是否启用,并表现出来
select flag
into :lc_flag
from regular;
if lc_flag='y' then sle_fine.enabled=true
this.width=1285
this.height=1256
“图书编号”输入框modified事件:
string ls_bookid,ls_title,ls_memberid,ls_membername
date ld_date1,ld_date2
int li_days
dec ld_fine,ld_countfine
ld_date2=today()//获得当前日期
ls_bookid=trim(this.text)//获得“图书编号”
//根据“图书编号”查询出“借阅日期”
SELECT loandate
INTO :ld_date1
FROM loan
WHERE bookid=:ls_bookid;
//查询“免费天数”、“罚金规定”
SELECT days,fine
INTO :li_days,:ld_fine
FROM regular;
//计算罚金
ld_countfine=countfine(li_days,ld_fine,countday(ld_date1,ld_date2))
//查询“图书名称”
SELECT title
INTO :ls_title
FROM bookinfo
WHERE bookid=:ls_bookid;
//查询“借阅人号”、“借阅人姓名”
SELECT memberid,membername
INTO :ls_memberid,:ls_membername
FROM memberinfo
WHERE memberid in
(SELECT memberid
FROM loan
WHERE bookid=:ls_bookid);
if sqlca.sqlcode<>0 then
messagebox("系统提示","没有借阅信息!")
sle_bookid.setfocus()
return
else
sle_title.text=ls_title
sle_memberid.text=ls_memberid
sle_membername.text=ls_membername
if sle_fine.enabled=true then sle_fine.text=string(ld_countfine)
end if
“归还”按钮:string ls_bookid,ls_bookonloan
ls_bookid=sle_bookid.text
if ls_bookid="" or isnull(ls_bookid) then
messagebox("系统提示","请输入图书编号!")
sle_bookid.setfocus()
return
else
select bookonloan into :ls_bookonloan
from bookinfo where bookid=:ls_bookid;
if ls_bookonloan="n" then
messagebox("系统提示","本书已归还!")
else
DELETE loan where bookid=:ls_bookid;
update bookinfo set bookonloan='n' where bookid=:ls_bookid;
commit;
end if
end if
sle_bookid.setfocus()
sle_bookid.text=""
sle_title.text=""
sle_memberid.text=""
sle_membername.text=""
sle_fine.text=""
“关闭”按钮:close(parent)
(10)图书查询
“按图书标题查询“窗口w_search_title
“按作者姓名查询”窗口w_search_author
“按出版社查询”窗口w_search_pub
“按关键词查询”窗口w_search_keyword
“按ISBN号查询”窗口w_search_isbn
“按出版日期-某个阶段查询”窗口w_search_date_between
“按出版日期-某个日期查询“窗口w_search_date_date
“按出版日期-某日期之前查询”窗口w_search_date_before
“按出版日期-某日期之后查询”窗口w_search_date_after
说明:由于“按出版日期查询”使用的是date型数据,所以分开阐述。
其中,查询条件为char型:
图5.9
说明:属于此类的查询包括:“按图书标题查询“、“按作者姓名查询”、“按出版社查询”
“按关键词查询”、“按ISBN号查询”。由于“按图书标题查询“窗口w_search_title为模板窗口,其他窗口都是继承得来,所以仅分析这个窗口。
功能介绍:根据查询条件,检索出符合条件的数据
操作方法:输入检索条件,点击“查询”按钮进行查询,点击“重置”按钮重新输入查询条件。
代码分析:
Open事件:dw_1.settransobject(sqlca)
this.width=3616
this.height=1096
“查询”按钮:string ls_title
ls_title=trim(sle_find.text)
if sle_find.text="" then
messagebox("提示信息","请输入"+mid(st_1.text,4,4))
else
ls_title="%"+ls_title+"%"//设置检索条件
dw_1.retrieve(ls_title)
end if
sle_find.setfocus()
“重置”按钮:sle_find.text=""
sle_find.setfocus()
数据窗口的数据源SQL语句:
SELECT "bookinfo"."bookonloan",
<< 上一页 [11] [12] [13] [14] [15] 下一页