返回列表 发帖

[ASP] ASP入门基础教程-实例 网上图书管理系统

本管理程序的主要功能有:1、图书列表展示功能;2、图书放置购物车、移去购物车和清空购物车功能;3、购书结帐功能;4、新会员注册功能。

  iindex.asp 首页。框架结构。上框架连接top.htm页面,下框架连接booklist页面。

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title>网上图书管理系统--图书列表</title>
</head>
<frameset rows="80,*" cols="*" frameborder="no" border="0" framespacing="0">
<frame src="top.htm" name="topframe" scrolling="no" noresize >
<frame src="booklist.asp" name="mainframe">
</frameset>
<noframes>
<body>
</body>
</noframes>
</html>
  conn.asp 数据库连接文件。在所有与数据库连接的页面中只要包括该文件,即可以连接和打开数据库。

'创建连接对象
<% set conn=server.createobject("adodb.connection")
'连接字符串
strsql="driver={microsoft access driver (*.mdb)};dbq=" &_
server.mappath("bookshop.mdb")
conn.open(strsql)
%>
  top.htm 图书列表 top 页。仅仅是一个图片标题页。

<!doctype html public "-//w3c//dtd html 4.01 transitional//en">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title>网上图书管理系统</title>
<link href="style.css" rel="stylesheet">
</head>
<body topmargin="0">
<table width="770" height="124" border="0" cellpadding="-2" cellspacing="-2">
<tr>
<td background="images/bg_booklist.gif"> </td>
</tr>
</table>
</body>
</html>
  booklist 以表格的形式分页显示出所有的图书。

本页面以表格的形式分页显示出所有记录。实现过程如下:
  1、使用一个包含文件,创建一个数据库连接对象;

  2、创建一个记录集对象;

  3、创建一个表格,第一行用来显示字段名;

  4、判断记录指针是不是到了记录的头部或尾部之外,若是显示提示信息,若不是,则开始进行提取当前页的每一条记录和进行分页;

  5、通过do while 循环语句,将当前页的每一条记录读取出来;

  6、通过for 循环将除当前页码之外的每一个页码做一个超连接;

  7、关闭记录集对象并释放其所占用的所有资源;

  8、关闭连接对象并释放其所占用的所有资源。

<%@language="vbscript"%>
<!--使用一个包含文件,创建一个数据库连接对象-->
<!--#include file="connections/conn.asp" -->
<%
'创建一个记录集对象。
set rs_booklist=server.createobject("adodb.recordset")
sql="select bookid, bookname, bnumber from db_bookinfo order by bnumber desc,bookname"
rs_booklist.open sql,conn,1,3
%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title>图书列表</title>
<link href="style.css" rel="stylesheet">
<style type="text/css">
<!--
body,td,th {
font-size: 11pt;
color: #009999;
line-height: 1.5;
}
body {
background-image: url(images/bg1.jpg);
}
-->
</style>
</head>
<body leftmargin="0" topmargin="0">
<div align="center">
<!--创建一个表格,第一行用来显示字段名。-->
<table width="644" border="1" bordercolor="#cccc99" background="images/bg.jpg">
<tr>
<td height="20"><div align="center"><strong>书号</strong></div></td>
<td height="20"><div align="center"><strong>书名</strong></div></td>
<td height="20"><div align="center"><strong>数量</strong></div></td>
<td height="20"> </td>
</tr>
<!--*******分页开始******************-->
<%
'判断记录指针是不是到了记录的头部或尾部之外,若是显示提示信息,若不是,则开始进行提取当前页的每一条记录和进行分页。
if rs_booklist.bof and rs_booklist.eof then
response.write "没有数据"
else
'分页显示
dim page_size '此变量用来存放每一页的记录数。
dim page_nonce '此变量用来存放当前页的页码。
dim page_total '此变量用来存放总页数。
page_size=7 '将第一页记录数设置为7条。
rs_booklist.pagesize=page_size '将page_size变量中的值赋给rs_booklist记录集对象的页面大小(pagesize)属性。
page_total=rs_booklist.pagecount '将rs_booklist记录集对象的页面个数(pagecount)属性赋给变量page_total。
'下面5句,是判断网页是不是刚打开,若是,则将1赋给变量page_nonce(即当前页为第一页),
'若不是,则将由request对象的querystring集合从http查询字符串中获取来的变量值(当前页码)赋给变量page_nonce。
if request.querystring("page_nonce")<>"" then
page_nonce=cint(request.querystring ("page_nonce"))
else
page_nonce=1
end if
'将当前页码赋给记录集对象的表示当前记录页号的属性(absolutepage)。
rs_booklist.absolutepage=page_nonce
dim i
i=page_size
'通过do while 循环语句,将当前页的每一条记录读取出来。
do while not rs_booklist.eof and i>0
i=i-1
response.write "<tr align='center'>"
response.write "<td height='10'>" & rs_booklist("bookid") & "</td>"
response.write "<td height='10'>" & rs_booklist("bookname") & "</td>"
response.write "<td height='10'>" & rs_booklist("bnumber") & " </td>"
%>
<td width="25" height='10'><div align="center"><a href="buycar_add.asp?bookid=<%= rs_booklist("bookid") %>" target="txtframe"><img src="images/add.gif" alt="添加至购物车" width="18" height="18" border="0" align="middle"></a></div></td>
<%
'将记录指针移动到下一条记录。
rs_booklist.movenext
loop
response.write "</table>"
'开始做分页连接。
response.write "<p align='center'>分页: "
'通过for 循环将除当前页码号之外的每一个页码号做一个超连接,
for j=1 to page_total
if j=page_nonce then
response.write j & "&nbsp"
else
response.write "<a href='booklist.asp?page_nonce=" & j & "'>" & j & "</a>&nbsp"
end if
next
end if
rs_booklist.close
set rs_booklist=nothing
conn.close
set conn=nothing
%>
</table>
</dir>
</body>
</html>

TOP

本页面是一个程序处理页。其主要功能有:

  1、通过 session("bookidlist") 变量在打开网页时清空 bookidlist 中的值,因为刚打开网页 session("bookidlist") 为空;

  2、将由request对象获得的“图书id”存入变量 bookidlist 中;

  3、将变量 bookidlist 中的值赋给 session 对象中的 bookidlist变量,以便在"buycar_see.asp"页面中使用;

  4、将页面'转到"查看购物车"页面 "buycar_see.asp"。

  注:instr 函数返回的是一个位置值,此位置是一个搜索字符串在另一个被搜索字符串中的出现的位置。其格式如下:

instr([ingstartpos] , strstring1 , strstring2 [, compare])
  参数:ingstartpos :从strstring1 中开始对 strstring2 进行搜索的位置;

  strstring1 :字符串,在这个字符串中搜索 strstring2 ;

  strstring2 :所需搜索的字符串;

  compare :一个数值数据,用来指定所采用的搜索比较方式;如果此参数被忽略,则缺省值为0(即vbbinarycompare),招待的是二进制比较。

<%@ language="vbscript"%>
<%
bookidlist = session("bookidlist")        '此句的功能是打开网页时清空 bookidlist 中的值。
if len(bookidlist) = 0 then              '如果第一次提交购物车中的图书,
bookidlist = "'" & request("bookid") & "'"
'则将由request对象获得的“图书id”存入变量 bookidlist 中。
elseif instr( bookidlist, request("bookid")) <= 0 then
'如果不是第一次提交购物车的图书,而且,当前提交的图书在这之前没有提交过,
bookidlist = bookidlist & ", '" & request("bookid") & "'"
'则将本次提交的”图书id“存入变量 bookidlist 的尾部,并用逗号与前面的值分开。
end if
session("bookidlist") = bookidlist
'将变量 bookidlist 中的值赋给 session 对象中的 bookidlist变量。
response.redirect "buycar_see.asp"           '转到查看购物车页面
'instr 函数返回的是一个位置值,此位置是一个搜索字符串在另一个被搜索字符串中的出现的位置。
%>
buycar_see.asp 查看购物车。 本页面以表格的形式将您所选图书显示出来,在此可以由您修改所购图书的数量,然后自动计算金额和合计总金额。并通过四个超连接,分别连接到登录收银台页面(checkout.asp)、主页面(index.asp)、从购物车中移去所选图书页面(move.asp)和清空购物车页面(clear.asp)。
注: 函数:返回表达式,此表达式已被转换为 double 子类型的 variant。
<!-- #include file="connections/conn.asp" -->
<!--如果点击了“到收银台结帐”按钮,则转向“checkout.asp”页面。-->
<% if request.form("jiezhang")="到收银台结账" then
response.redirect("checkout.asp")
end if
if len(session("bookidlist")) <> 0 then
'如果 session("bookidlist") 的长度不为零,即其不为空,则执行下面的sql语句。
sql = "select * from db_bookinfo where bookid in (" &_
session("bookidlist") & ") order by bookid"
'从 db_bookinfo 表中查询”图书id“与在session("bookidlist")变量保存的值中相匹配的记录,并以”图书id“排序
set rs = conn.execute( sql )
'执行上面的 sql 语句,并返回一个记录集。
else
'如果session("bookidlist") 的长度不为零,即其不为空,则跳转到 ”buycar_empty.asp"页面。
response.redirect "buycar_empty.asp"
end if
%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title>查看购物车</title>
<link href="style.css" rel="stylesheet">
<script language="javascript">
//自定义一个名为 stand()自定义函数。
function stand(){
//当点击了“"继续选择图书"按时,跳转到index.asp页面。
window.location.href="./index.asp";}
</script>
<style type="text/css">
<!--
.style3 {color: #ecf5ff}
-->
</style>
</head>
<body leftmargin="0" topmargin="10" background="images/bg1.jpg">
<center>
<table width="640" height="134" border="0" cellpadding="-1" cellspacing="-1">
<tr>
<td background="images/bg.jpg"><img src="images/buycar_top.gif" width="640" height="130"></td>
</tr>
</table>
<table width="640" height="306" border="0" cellpadding="-1" cellspacing="-1">
<tr>
<td valign="top" background="images/bg.jpg">
<div align="center">
<form name="form1" method="post" action="buycar_see.asp">
<table width="97%" height="52" border="1" align="center" cellpadding="0"
cellspacing="0" bordercolordark="#0099ff" bordercolorlight="#ffffff"
bordercolor="#ffffff">
<!--在内层表格的第一第显示出记录集中所选字段名。-->
<tr>
<td width="14%" height="16"><div align="center">书号</div></td>
<td width="41%"><div align="center">书名</div></td>
<td width="15%"><div align="center">单价</div></td>
<td width="9%"><div align="center">数量</div></td>
<td width="14%"><div align="center">金额</div></td>
<td width="7%"><div align="center">移去</div></td>
</tr>
<% i=0
sum=0
session("sl")=""
session("checkbook")=""
%>
<!--使用while 的循环语句,将购物车中的图书记录一一列出来。-->
<% while not rs.eof%>
<tr>
<td height="16"><%=rs("bookid")%></td>
<td><%=rs("bookname")%></td>
<% i=i+1 %>
<% sl = cint(request( "sl"&i)) 's1 用来存储所选图书数量。”s1“ & i 表示“数量”输入框名。
if sl <= 0 then sl = 1 '当跳转到此页面,将数量值赋1.
sum = sum + cdbl(rs("price")) * sl '计算总金额
%>
<td><div align="center">
<!--此单元格显示单价值-->
<input name=<%= "price"&i%> type="text" class="sytle_auto"
id="price" value=<%=rs("price")%>
size="6" readonly="yes">
(元)</div></td>
<td><div align="center">
<!--此单元格显示数量-->
<input name=<%= "sl"&i%> type="text" class="sytle_auto_s" id="sl"
onchange="jscript:form1.submit();" value=<%= sl%> size="4">
<!--当改变输入框的内容时,则form1的提交按钮将进行提交。-->
</div></td>
<td><div align="center">
<!--此单元格显示金额-->
<input name=<%= "je"&i%> type="text" class="sytle_auto"
id="je" value=<%=rs("price")*sl%> size="6" readonly="yes">
(元)</div></td>
<!--此单元格在图片上做一个超连接,将页面转到move.asp指定参数的页面。-->
<td><div align="center"><a href="move.asp?clickbookid=<%=rs("bookid")%>">
<img src="images/move.gif" width="18" height="17" border="0"></a></div></td>
</tr>
<%
if len(session("sl"))=0 then '如果只提交一种图书,则将该图书的数量赋给变量session("s1")
session("sl")=sl
else
session("sl")=session("sl")&", "&sl '如果提交了两种或两种以上的图书。则将各种图书的数量赋给变量session("s1")
end if
if len(session("checkbook"))=0 then '如果只提交一种图书,则将该图书id赋给变量session("checkbook")
session("checkbook")="'"& rs("bookid")& "'"
else '如果提交了两种或两种以上的图书。则将各种图书id赋给变量session("checkbook")
session("checkbook")=session("checkbook")&", '"& rs("bookid")& "'"
end if
rs.movenext '移动到下一条记录。
wend %>
</table>
<table width="97%" height="40" border="0" cellpadding="-1"
cellspacing="-1" class="sytle_auto">
<tr>
<td><div align="right">合计金额:
<!--此单元格用来合计金额,只读输入框-->
<input name="sum" type="text" class="sytle_auto" id="sum2"
value=<%= sum %> size="10" readonly="yes">
(元)</div></td>
</tr>
</table>
<table width="97%" height="39" border="0" cellpadding="-1" cellspacing="-1">
<tr>
<td width="79%"><div align="center">
<input type="submit" name="jiezhang" value="到收银台结账"> <!--当点击此提交按钮时,转到checkout.asp页面。-->
<input type="button" name="goon" value="继续选择图书" onclick="stand()">
<!--当单击此按钮时,调用stand()函数。转向index.asp页面-->
<a href="clear.asp"> </a></div></td>
<td width="5%"><div align="center"><a href="clear.asp"> <!--当点击此提交按钮时,转到buycar_see.asp页面。-->
<img src="images/emptybuycar.gif" width="20" height="20" border="0"></a></div></td>
<td width="16%"><a href="clear.asp">清空购物车 </a></td>
</tr>
</table>
</form>
</div></td>
</tr>
</table>
</center>
</body>
</html>

TOP

1、通过request对象读取http查询字符串中clickbookid参数的值(即您要移去图书的id)赋给变量cclickbookid;

  2、将数组中的每一项(即您所选的所全图书id)与您要移去的图书id(即clickbookid参数值)一一进行比较,如果不等,则将数组中的此项元素赋给变量bookidlist;

  3、如果bookidlist为空了,即全删除了,则跳转到“buycar_empty.asp”页面,否则,跳转到“buycar_see.asp”页面。

<%@language="vbscript" codepage="936"%>
<%
arrcheckbook= split(session("checkbook"),", ") '将所选图书以数组的形式显示出来。
bookidlist="" '清空bookidlist变量。
for i=0 to ubound(arrcheckbook)'显示数组的最大维数
cclickbookid="'"&request("clickbookid")&"'"
'通过request对象读取http查询字符串中clickbookid参数的值(即您要移去图书的id)赋给变量'cclickbookid。
if arrcheckbook(i)<>cclickbookid then
'将数组中的每一项(即您所选的r所全图书id)与您要移去的图书id一一进行比较,如果不等,则将数组中的'此项元素赋给变量bookidlist.
if len(bookidlist) = 0 then
'如果第一次进行比较,bookidlist为空,所以就将arrcheckbook(i)的值赋给变量bookidlist.
bookidlist =arrcheckbook(i)
else
'如果不是第一次进行比较,则将arrcheckbook(i)的值赋给变量bookidlist原有值的尾部,并用逗号分隔开来.
bookidlist = bookidlist & ", " & arrcheckbook(i)
end if
end if
next
'如果bookidlist为空了,即全删除了,则跳转到“buycar_empty.asp”页面。
if len(bookidlist)=0 then
session("bookidlist")= bookidlist
response.redirect("buycar_empty.asp")
else
'否则,跳转到“buycar_see.asp”页面。
session("bookidlist")= bookidlist
response.redirect "buycar_see.asp"
end if
%>
  clear.asp 清空购物车。 本页面是清空购物车,它的主要功能有:

  1、使用session对象的abandon属性结束session对象;

TOP

TOP

好!!!!

TOP

返回列表

Powered by Discuz! 7.2   论坛QQ群:逐梦论坛群

© 2001-2021 Comsenz Inc. 鲁公网安备 37120302000001号