3 详细设计3.1 用户登陆页面 该页面用于用户登陆,包括游客,用户和管理员。成功登陆则取得用户的session用于以后的操作权限认定。程序执行时首先判断用户类型,如果是游客则对session赋值为游客类型,然后直接进入主页;如果不是游客则执行查询语句,看数据库中是否存在这样的用户名和密码,根据选择用户类型的不同在不同的表中进行操作,成功则进入主页,否则提示输入错误。 http://www.paper51.com 截图如下: http://www.paper51.com http://www.paper51.com 图3.1.1 用户登陆 内容来自论文无忧网 www.paper51.com 代码: paper51.com
<linkhref="style.css" type="text/css"rel="stylesheet"> 内容来自www.paper51.com <!--#includefile="conn.asp"--> 内容来自论文无忧网 www.paper51.com <% ifrequest("login")<>"" then copyright paper51.com ifrequest("usertype")<>"" then '用户类型不空,核实数据真实 copyright paper51.com IfRequest("usertype")="user" Then 内容来自论文无忧网 www.paper51.com
sql ="select * from u wherename='"&request("name")&"' andpwd='"&request("pwd")&"'" copyright paper51.com Else 内容来自论文无忧网 www.paper51.com sql ="SELECT * FROM admin WHEREname='"&Request("name")&"' andpwd='"&Request("pwd")&"'" copyright paper51.com End If 内容来自论文无忧网 www.paper51.com Set rs=db.execute(sql) 内容来自论文无忧网 www.paper51.com If not rs.EOF Or Not rs.BOF Then '输入数据存在 内容来自www.paper51.com IfRequest("usertype")="user" Then copyright paper51.com
Ifrs("lock") Then copyright paper51.com response.Write"<script>alert('您已被锁定了!');window.location.href='login.asp'</script>" http://www.paper51.com else copyright paper51.com Session("usertype")="user" http://www.paper51.com
Session("userid")=rs("id") http://www.paper51.com Session("name")=rs("name") paper51.com Response.Redirect("index.asp") http://www.paper51.com endif 内容来自论文无忧网 www.paper51.com
Else 内容来自www.paper51.com
Session("usertype")="admin" http://www.paper51.com
Session("adminid")=rs("id") copyright paper51.com Session("name")=rs("name") 内容来自www.paper51.com Response.Redirect("index.asp") http://www.paper51.com EndIf 内容来自论文无忧网 www.paper51.com Else 内容来自www.paper51.com response.Write"<script>alert('输入错误!');window.location.href='login.asp'</script>" paper51.com rs.close copyright paper51.com End if copyright paper51.com else'用户类型空 copyright paper51.com response.Write"<script>alert('没有选择用户类型!');window.location.href='login.asp'</script>" 内容来自论文无忧网 www.paper51.com end if 内容来自www.paper51.com end if 内容来自论文无忧网 www.paper51.com %> copyright paper51.com 3.2图书查询页面 内容来自www.paper51.com
该页面用于用户的图书查询,利用查询语句的like %替代任意长度字符实现了模糊查询。所有查询的字段用户都可以不输入,如果输入了某个数据,程序执行时自己会判断,输入了就会加上相应的SQL语句。考虑到使用方便性,图书类型,价格范围,出版日期都无须用户输入,已经设定了合理的初始值。图书类型如果不做选择就默认在所有图书类型中查找。考虑到找到的记录可能会很多,引入了分页显示,在记录集循环显示的时候引入参数i来实现,设定i<10,初始值为0,这样每页显示的记录数为10条。 paper51.com 内容来自论文无忧网 www.paper51.com 图3.2.1图书查询 内容来自论文无忧网 www.paper51.com 代码: copyright paper51.com <link href="style.css" type="text/css"rel="stylesheet"> copyright paper51.com <!--#include file="conn.asp"--> 内容来自论文无忧网 www.paper51.com <%'定义记录集和变量 copyright paper51.com set rs=server.createobject("adodb.recordset") copyright paper51.com bookname=trim(request("bookname")) copyright paper51.com booktype=request("booktype") http://www.paper51.com
publishing=trim(request("publishing")) copyright paper51.com
money1=trim(request("money1")) paper51.com
money2=trim(request("money2")) 内容来自www.paper51.com date1=trim(request("date1")) 内容来自论文无忧网 www.paper51.com date11=trim(request("date11")) http://www.paper51.com date2=trim(request("date2")) http://www.paper51.com date22=trim(request("date22")) 内容来自论文无忧网 www.paper51.com
date3=trim(request("date3")) http://www.paper51.com
date33=trim(request("date33")) paper51.com date111=date1&"-"&date2&"-"&date3 内容来自论文无忧网 www.paper51.com date222=date11&"-"&date22&"-"&date33 http://www.paper51.com
'查询的实现 http://www.paper51.com sql="select * from book where 1 " 内容来自www.paper51.com
if booktype<>"" then http://www.paper51.com
sql=sql+"and booktype like '%"&booktype&"%'" copyright paper51.com
else if bookname<>"" then paper51.com sql=sql+"and bookname like '%"&bookname&"%'" paper51.com
else if publishing<>"" then paper51.com sql=sql+"and publishing like '%"&publishing&"%'" 内容来自www.paper51.com end if 内容来自www.paper51.com end if 内容来自论文无忧网 www.paper51.com end if 内容来自www.paper51.com sql=sql+"and bookmoney>='"&money1&"' andbookmoney<='"&money2&"' and pdate between'"&date111&"' and '"&date222&"' order by iddesc"rs.open sql,db,1,3 paper51.com if rs.eof or rs.bof then paper51.com
response.write "对不起没有搜索到记录" 内容来自论文无忧网 www.paper51.com response.end copyright paper51.com
else paper51.com '页面显示 paper51.com dim pagenum,i 内容来自www.paper51.com rs.pagesize=10 http://www.paper51.com pagecount1=rs.pagecount 内容来自论文无忧网 www.paper51.com if request.querystring("pagenum")=0 orrequest.querystring("pagenum")="" then 内容来自www.paper51.com pagenum=1 http://www.paper51.com
else 内容来自论文无忧网 www.paper51.com pagenum=trim(request("pagenum")) paper51.com rs.absolutepage=trim(request("pagenum")) paper51.com
end if paper51.com %> http://www.paper51.com <%’分页实现 copyright paper51.com
response.write "总共"&pagecount1&"页,当前"&pagenum&"/"&pagecount1&",<ahref=search.asp?pagenum=1&bookname="&bookname&"&booktype="&booktype&"&publishing="&publishing&"&money1="&money1&"&money2="&money2&"&date1="&date1&"&date2="&date2&"&date3="&date3&"&date11="&date11&"&date22="&date22&"&date33="&date33&">首页</a>" paper51.com %> 内容来自论文无忧网 www.paper51.com <% 内容来自www.paper51.com if pagenum>1 then 内容来自www.paper51.com response.write "<ahref=search.asp?pagenum="&(pagenum-1)&"&bookname="&bookname&"&booktype="&booktype&"&publishing="&publishing&"&money1="&money1&"&money2="&money2&"&date1="&date1&"&date2="&date2&"&date3="&date3&"&date11="&date11&"&date22="&date22&"&date33="&date33&">上一页</a> " paper51.com else paper51.com response.write "上一页 " paper51.com end if http://www.paper51.com if pagenum < trim(pagecount1) then 内容来自论文无忧网 www.paper51.com
response.write "<ahref=search.asp?pagenum="&(pagenum+1)&"&bookname="&bookname&"&booktype="&booktype&"&publishing="&publishing&"&money1="&money1&"&money2="&money2&"&date1="&date1&"&date2="&date2&"&date3="&date3&"&date11="&date11&"&date22="&date22&"&date33="&date33&">下一页</a> " 内容来自www.paper51.com else 内容来自论文无忧网 www.paper51.com response.write "下一页" paper51.com end if paper51.com %> paper51.com <% paper51.com response.write "<a href=search.asp?pagenum="&pagecount1&"&bookname="&bookname&"&booktype="&booktype&"&publishing="&publishing&"&money1="&money1&"&money2="&money2&"&date1="&date1&"&date2="&date2&"&date3="&date3&"&date11="&date11&"&date22="&date22&"&date33="&date33&">尾页</a>" 内容来自www.paper51.com
%> http://www.paper51.com </p> http://www.paper51.com
3.3统计超期 paper51.com 方便管理员清楚图书借出后的归还情况,并可以给超期的用户发送消息提醒,或者锁定该用户,使其无法登陆系统。超期判定用dateserial()函数来实现将当前系统时间的格式转化为YY-MM-DD,这样方便后面的日期比较操作。设置一个变量来代表当前系统时间减去三十天,如果用户借书的时间不在这两个时间之间那么就是超期。页面开始首先进行管理员身份核实,用到了前面登陆页面说的session。点击左边菜单的统计超期后系统自动完成统计,并将结果显示在右边,管理员可以进行的操作有:锁定,给单个用户发消息,群发消息。截图如下: 内容来自www.paper51.com
copyright paper51.com
图3.3.1 统计超期 paper51.com 代码: copyright paper51.com <%':从loans表导出时间超期的数据 更改系统时间来实现超期~ 管理员验证 分页显示 管理员发消息提醒还书 copyright paper51.com ifsession("usertype")<>"admin" then 内容来自论文无忧网 www.paper51.com response.write"<script>alert('不是管理员,请先登陆!');window.location.href='go.asp'</script>" paper51.com
end if http://www.paper51.com dim loan_time '现在时间和借书时间相差三十天则超期 copyright paper51.com loan_time =dateserial(year(date),month(date),day(date)-30)'转换日期格式2007-3-31,函数参考topic.csdn.net http://www.paper51.com
sql1="select* from loans" http://www.paper51.com
setrs1=db.execute(sql1) 内容来自www.paper51.com sql2="selectbook.bookname as b_name,book.booktype as booktype,* from loans,u ,book whereloans.time not between #"&loan_time&"# and#"&date&"# andu.id=loans.uid and book.id=loans.bid " paper51.com setrs2=db.execute(sql2) copyright paper51.com 'sql3="select* from u where id='"&(rs2("uid"))&"'" copyright paper51.com
'setrs3=db.execute(sql3) paper51.com %> 内容来自www.paper51.com |