DELPHI+SQL Server 2000图书管理系统 第6页
begin
set @minute=@minute-2*60
end
end
else if convert(varchar(5),@date3,108)>'08:00'
begin
if convert(varchar(5),@date1,108)<'08:00'
begin
set @minute=@minute-4*60
end
end
if @state=1
begin
set set @minute=@day*16*60-@minute
end
else
begin
set @minute=@minute+@day*16*60
end
GO
4.3系统实现
此系统是图书馆所有管理员,每位管理员在入职后都会有自己的账号和密码。管理员根据自己的账号和密码即可登陆系统进行操作。只有登陆用户才可以访问此系统。用户登录后可以根据导航栏完成相应的业务(如图)。其中在这系统里用了三方控件的皮肤控件。所以整个界面看起来比较舒服、柔和。
图4-4 登陆后的导航主界面
4.3.1启动画面的实现
启动画面是为了给用户一个良好的印象,加深软件的亲和力,没有实际的功能,在Form1窗体中加入了Image和Time组件。其中Time组件的功能是在系统运行的时候能够显示当前的当地时间和使用者的名称。
其主要实现代码如下:
//登录成功进入主界面的相关操作
procedure TF_main.FormShow(Sender: TObject);
//var user:String;
begin
u_login.loginNumber:=0;
//user:='当前操作者:'+U_Login.username;
state.Panels[0].Text:='当前操作者:'+U_Login.username;
//state.Panels[0].Alignment:=; //居中显示
state.Panels[1].Text:='当前时间:'+DateTimeToStr(now());
state.Panels[1].Alignment:=taCenter; //居中显示
end;
4.3.2用户的登陆界面的实现
(1) 此模块说明
因为时间的有限,本系统只考虑到那些个体户经营的图书店的管理和小型图书馆的管理。因而本窗体是只为管理员进入系统进行对系统的管理和操作。
(2) 在此模块的代码实现时候设置了如果你输入的用户名和密码超过三次,将被强制退出系统。其中三次的限制不包括用户名或者密码为空的情况。如果是数据库连接出现错误时,系统登陆也会出现提示窗体。其具体的代码如下:
if loginNumber>=3 then //判断登录次数是否超过三次
begin
showMessage('对不起,您已经登录三次!!!');
application.Terminate;
end;
//取得输入的用户名密码
username:=trim(txtUsername.Text);
password:=trim(txtPassword.Text);
//输入校验如果为空不能进入系统,其中三次的限制不包括用户名或者密码为空的情况
if ((username='') or (password='')) then
begin
showMessage('用户名和密码都不能为空!!!');
end
//累加登陆的次数
/若输入用户名密码不为空则让登录次数加一
loginNumber:=loginNumber+1;
if(queryLogin.Active=true) then
begin
queryLogin.Close;
end;
queryLogin.SQL.Clear;
sqlStr:='select * from manager where managername='''+username+''' and password='''+password+'''';
queryLogin.SQL.Add(sqlStr);
4.3.3预约图书管理
(1)此模块的功能说明
该模块的主要功能是读者可以预约一些图书馆里面有的图书。但是这些图书是现在暂时都被别人借走了,书店现在已经没有可以借出去的了,所以读者想要借的话就可以预约该类图书。另外还要进一步检查看看进行预约的读者的预约量是否已经达到最大量。
(2)页面说明
此模块共有两个页面组成:查询图书界面和预约界面。首先读者可以按照不同的查询方式进行查询所要预约的图书,然后预约该图书。此模块用了组合查询,可以按照图书索取号、作者名、图书名、出版社、图书类别等其中的任意一种方法都可以查到想要的图书,然后按照读者卡号进行预约,系统则要判断是否馆里还有该图书、是否预约量达到最大。若是其中的一个原因则该读者都不能预约该图书。其中调用了多条件查询函数:
TF_main.btnMoreTypeSearchBooksClick(),此处一定要把tableYuYue.Active赋值成真。
图 4-5 预约图书
(3)主要函数及算法说明
//执行预约操作
procedure TF_searchBook.BitBtn2Click(Sender: TObject);
begin
//判断有没有选择图书
if trim(lblBookNo.Caption)='' then//没有选者所要预约的图书
begin
showMessage('请选择要续借的图书!!!');
end
else
//得到读者卡号和图书编号
if proAbleYuYue.Parameters.ParamByName(
'@count').Value>0 then
//如果根据判断图书馆里还有你想要的图书的话,就不能预约该图书,只能借阅或者不借
begin
ShowMessage('图书馆中还有图书,不能预约!!!');
dm.proGuDing.Active:=false;
dm.proGuDing.Parameters.ParamByName('@key').Value:='yuYueBookNumber';
dm.proGuDing.ExecProc;//调用固定规则进行判断预约的最大数目
//取出可以预约的最大本数
ableYuyueCount:=dm.proGuDing.Parameters.ParamByName('@value').Value;
proGetUserYuYueNumber.Active:=false;
proGetUserYuYueNumber.Parameters.ParamByName('@user').Value:=readerNo;
proGetUserYuYueNumber.ExecProc;
yuYueCount:=proGetUserYuYueNumber.Parameters.ParamByName('@count').Value;
if yuYueCount>=ableYuYueCount then
//如果达到最大预约量则不能预约
showMessage('对不起预约量已经达到最大!不能再预约!!!');
//调用预约存储过程进行预约
proYuYue.Active:=false;
proYuYue.Parameters.ParamByName('@readerCard').Value:=readerNo;
proYuYue.Parameters.ParamByName('@bookNo').Value:=bookNo;
proYuYue.Parameters.ParamByName('@manager').Value:=u_login.username;
proYuYue.ExecProc;
ShowMessage('预约成功!!!');
end;上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页
DELPHI+SQL Server 2000图书管理系统 第6页下载如图片无法显示或论文不完整,请联系qq752018766