中华考试网·阅读新闻
编程开发 > ASP > 文章内容

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

2015-10-13编辑:ljnbset

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

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

  Iindex.asp 首页。框架结构。上框架连接Top.htm页面,下框架连接Booklist页面。











  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 页。仅仅是一个图片标题页。













 


  Booklist 以表格的形式分页显示出所有的图书。

本页面以表格的形式分页显示出所有记录。实现过程如下:

  1、使用一个包含文件,创建一个数据库连接对象;

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

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

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

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

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

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

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

<%@LANGUAGE="VBSCRIPT"%>


<%
'创建一个记录集对象。
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
%>




图书列表














<%
'判断记录指针是不是到了记录的头部或尾部之外,若是显示提示信息,若不是,则开始进行提取当前页的每一条记录和进行分页。
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 "
"
Response.Write ""
Response.Write ""
Response.Write ""
%>

<%
'将记录指针移动到下一条记录。
rs_booklist.MoveNext
Loop
Response.Write "
书号
书名
数量
 
" & rs_booklist("BookID") & "" & rs_booklist("BookName") & "" & rs_booklist("bnumber") & "
"
'开始做分页连接。
Response.Write "

分页: "


'通过For 循环将除当前页码号之外的每一个页码号做一个超连接,
For j=1 To page_total
If j=page_nonce Then
Response.Write j & " "
Else
Response.Write "" & j & " "
End If
Next
End If
rs_booklist.Close
Set rs_booklist=nothing
Conn.Close
Set Conn=nothing
%>



  Buycar_add.asp 添加至购物车。

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

  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。


<% 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
%>




查看购物车


















cellspacing="0" bordercolordark="#0099FF" bordercolorlight="#FFFFFF"
bordercolor="#FFFFFF">









<% i=0
sum=0
session("sl")=""
session("checkBook")=""
%>

<% while not rs.eof%>



<% i=i+1 %>
<% sl = CInt(Request( "sl"&i)) 's1 用来存储所选图书数量。”s1“ & i 表示“数量”输入框名。
If sl <= 0 Then sl = 1 '当跳转到此页面,将数量值赋1.
Sum = Sum + CDbl(rs("Price")) * sl '计算总金额
%>






<%
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 %>
书号
书名
单价
数量
金额
移去
 <%=rs("BookID")%> <%=rs("BookName")%>


type="text" class="Sytle_auto"
id="price" value=<%=rs("price")%>
size="6" readonly="yes">
(元)


type="text" class="Sytle_auto_s" id="sl"
onChange="JScript:form1.submit();" value=<%= sl%> size="4">



type="text" class="Sytle_auto"
id="je" value=<%=rs("price")*sl%> size="6" readonly="yes">
(元)

cellspacing="-1" class="Sytle_auto">



合计金额:

value=<%= sum %> size="10" readonly="yes">
(元)







清空购物车





咨询热线:4000-525-585(免长途费)