论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > asp教程
Tag:入门,文摘,实例,技巧,iis,表单,对象,上传,数据库,记录集,session,cookies,存储过程,注入,分页,安全,优化,xmlhttp,fso,jmail,application,防盗链,stream,组件,md5,乱码,缓存,加密,验证码,算法,ubb,正则表达式,水印,,日志,压缩,url重写,控件,函数,破解,触发器,socket,ADO,初学,聊天室,留言本,视频教程

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

文章类别:asp | 发表日期:2008-8-9 16:11:37

  本管理程序的主要功能有: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">&nbsp;</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">&nbsp;</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>

  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。
<!-- #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">&nbsp;<%=rs("BookID")%></td>
<td>&nbsp;<%=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"> &nbsp;</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>

  Move.asp 从购物车中移去所选图书。 本页面是从购物车中移去您不想要的图书。它的主要功能有:

  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对象;

  2、跳转到查看购物车页面

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--使用session对象的Abandon属性结束session对象。-->
<% session.Abandon()
'跳转到查看购物车页面。
response.Redirect("buycar_see.asp")
%>

  buycar_empty.asp 购物车已被清空提示页面。 本页面是显示您的购物车已被清空的提示页,它的主要功能有:

  1、提示您购物车已被清空,

  2、返回主页面

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>您的购物车为空!</title>
<style>
<!--
p { font-size: 25pt; font-family: "宋体";
}
body {
background-image: url(images/bg1.jpg);
}
-->
</style>
</head>
<body leftmargin="0" topmargin="20">
<center>
<table width="640" height="135" border="0" cellpadding="-1" cellspacing="-1">
<tr>
<td background="images/bg.jpg"><img src="images/buycar_top.gif" width="640" height="134"></td>
</tr>
</table>
<table width="640" height="280" border="0" cellpadding="-1" cellspacing="-1">
<tr>
<td align="center" bordercolor="1" background="images/bg.jpg">
<p><strong><font color="#990000">您的购物车已被清空!</font></strong></p><br>
<p class="style1">欢迎惠顾!</p>
</td>
</tr>
<tr>
<td height="70" background="images/bg.jpg"><div align="center"><a href="index.asp"><img src="images/home1.gif" width="75" height="34" border="0"></a></div></td>
</tr>
</table>
</center>
</body>
</html>

  Checkout.asp 收银台登录页面。 本页面是收银台登录页面。其主要功能有:

  1、通过表单提交会员ID和用户密码;

  2、从DB_Member(会员)表中查询ID等于由表单提交的用户ID的记录;

  3、如果没有找到相应的记录,则转向登录失败页面,否则,验证密码;

  4、从图书信息表(DB_bookinf)中查询图书ID(BookID)在session("checkBook")变量中包含的值的记录。并以列表的形式显示出来;

  5、通过注册按钮将页面跳转到注册页面"register.asp";

  6、通过结帐按钮调用check()函数进行密码验证,若密码输入正确,则跳到登录成功(checkout_OK.ASP)页面。否则,提示: "您输入的会员密码错误,请重新输入!"

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/conn.asp" -->
<!--将session对象的mName变量清空。-->
<% session("mName")=""%>
<!--如果从表单中提取的会员ID和用户密码均不为空-->
<% if request.Form("UserID")<>"" and request.Form("userPWD")<>"" then
'则将表单提交的分别赋给变量session("UserID")和session("PWD")。
session("UserID")=request.Form("UserID")
session("PWD")=request.Form("userPWD")
'从DB_Member(会员)表中查询ID等于由表单提交的用户ID的记录。
sql="SELECT ID, PassWord FROM DB_Member WHERE ID='" & session("UserID")&"'"
set rs=conn.execute(sql)
'如果记录到了记录集的尾部,则转向登录失败页面。
if rs.eof then
%>
<script language="javascript">
window.location.href="checkout_fail.htm"
</script>
<%
else
'否则,检查密码是否对,如对,则跳转到用户登录成功页面。
if rs("password")=session("PWD") then
%>
<script language="javascript">
window.location.href="checkout_OK.ASP"
</script>
<%else%>
'否则,提示:您输入的会员密码错误,请重新输入!并返回下一页。
<script language="javascript">
alert("您输入的会员密码错误,请重新输入!");
history.back();
</script>
<%end if
end if
end if
%>
<%
'从图书信息表(DB_bookinf)中查询图书ID(BookID)在session("checkBook")变量中包含的值的记录
sql = "Select * From DB_bookinfo Where BookID In (" & session("checkBook") & ")"
Set rs_C = conn.Execute( sql )
%>
<!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">
//检验会员ID号和密码
function check()
{
if (form1.userID.value=="")
{ alert("请输入会员ID号!");form1.userID.focus();return;}
if (form1.userPWD.value=="")
{ alert("请输入会员密码!");form1.userPWD.focus();return;}
form1.submit();}
</script>
</head>
<body leftmargin="0" topmargin="0">
<center>
<table width="640" height="133" border="0" cellpadding="-1" cellspacing="-1">
<tr>
<td background="images/bg.jpg"><img src="images/checkout.gif" width="640" height="130"></td>
</tr>
</table>
<!--外表格开始-->
<table width="640" height="341" border="0" cellpadding="-1" cellspacing="-1">
<tr>
<td valign="top" background="images/bg.jpg">
<div align="center">
<!--表单开始-->
<form name="form1" method="POST" action="checkout.asp">
<!--内表格开始-->
<table width="97%" height="119" border="0" cellpadding="-1" cellspacing="-1">
<tr>
<td height="37"> <div align="center"><strong><font color="#C60001">
如果您还不是我们的会员,请点击“注册”按钮注册会员!</font></strong></div></td>
</tr>
<tr>
<td>
<!--嵌套的第三层表格开始,在这个表格中插入表单-->
<table width="81%" height="70" border="0" align="center"
cellpadding="-1" cellspacing="-1">
<tr>
<td width="32%" height="32"> <div align="right">会员ID号:</div></td>
<td width="36%"><input name="userID" type="text" id="userID"></td>
<td width="32%"><a href="register.asp"> &nbsp;注册</a></td>
</tr>
<tr>
<td><div align="right">您的密码:</div></td>
<td><input name="userPWD" type="password" id="userPWD"></td>
<td><input type="button" name="Submit" value="结账" onClick="check()">
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--嵌套的第三层表格开始,在这个表格中插入一条水平线-->
<table width="97%" border="0" align="center" cellpadding="-1" cellspacing="-1">
<tr>
<td> <hr width="97%"></td>
</tr>
</table>
</form>
<!--表单结束-->
<table width="97%" height="27" border="0" align="center" cellpadding="-1" cellspacing="-1">
<tr>
<td><strong>&nbsp;&nbsp;以下是您选购的图书:</strong></td>
</tr>
</table>
<!--下面这个表格用来显示您所选图书信息-->
<table width="94%" height="52" border="1" align="center" cellpadding="0" cellspacing="0"
bordercolordark="#0000FF" bordercolorlight="#FFFFFF" bordercolor="#FFFFFF">
<tr>
<td width="17%" height="16"><div align="center">书号</div></td>
<td width="39%"><div align="center">书名</div></td>
<td width="16%"><div align="center">单价</div></td>
<td width="11%"><div align="center">数量</div></td>
<td width="17%"><div align="center">金额</div></td>
</tr>
<%
ASL=""
AID=""
ASL=split(session("sl"),",")
AID=split(session("checkBook"),",")
i=0
while not rs_C.eof
%>
<tr>
<td height="16"><div align="center"><%= rs_C("BookID") %></div></td>
<td>&nbsp; <%=rs_C("BookName")%></td>
<td><div align="right"> <%=rs_C("price")%>(元)</div></td>
<td><div align="center"><%= ASL(i)%></div></td>
<td><div align="right"> <%=rs_C("price")*ASL(i)%>(元)</div></td>
</tr>
<%
i=i+1
rs_C.movenext
wend %>
</table>
</div></td>
</tr>
</table>
</center>
</body>
</html>

  CheckOut_OK.asp 购书结帐成功页面。 本页面是购书结帐成功页面。其主要功能有:

  1、从会员信息表中查询 ID等于session("UserID")记录中等级的值,并将其值赋给变量session("grade");

  2、从等级表中查找等级等于session("grade")变量的折扣率;

  3、从销售表中查找订单ID的最大值作为 MAXID 字段名输出;

  4、从图书信息表中查找图书ID在变量session("checkBool")中有与其相匹配的图书记录;

  5、自动产生订单号,它由四部分组成:年、月、日和先前的最大订单号的后五位加1;

  6、计算图书应付金额,它等于单价*数量*折扣率;

  7、往销售表中插入一条记录;

  8、从“销售量”表中查询图书ID等于bookID变量的图书记录,如果记录指针到了记录的尾部,则向记录集中插入一条记录,否则,更改原有的图书ID相等的图书数量值;

  9、更改会员信息表中ID等于parID会员的总金额;

  10、自动更新会员等级;

  11、提交本次消费金额和应付金额。

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/conn.asp" -->
<%
'创建一个记录集对象。
Set rs_grade = Server.CreateObject("ADODB.Recordset")
'***从会员信息表中查询 ID等于session("UserID")记录中等级的值。
'Replace函数可以用来对给定字符串中的指定部分进行规定次的替换。
sql_grade= "SELECT grade FROM DB_Member WHERE ID = '" +_
Replace(session("UserID"), "'", "''") + "'"
rs_grade=conn.execute(sql_grade)
'将用户等级变量清空。
session("grade")=""
'将会员信息表中的相应会员的等级值赋给变量session("grade")
session("grade")=Replace(rs_grade("grade"), "'", "''")
Set rs_rebate = Server.CreateObject("ADODB.Recordset")
'***从等级表中查找等级等于session("grade")变量的折扣率。
sql_rebate= "SELECT rebate FROM DB_rebate WHERE grade = '" +_
session("grade") + "'"
rs_rebate.open sql_rebate,conn,3
%>
<%
set rs_max= Server.CreateObject("ADODB.RecordSet")
'***从销售表中查找订单ID的最大值作为 MAXID 字段名输出。
sql_max="select MAX(OrderID) AS MAXID from DB_sell"
rs_max=conn.execute(sql_max)
%>
<%
'***从图书信息表中查找图书ID在变量session("checkBool")中有与其相匹配的图书记录。
sql = "Select * From DB_bookinfo Where BookID In (" & session("checkBook") & ")"
Set rs_C = conn.Execute( sql )
%>
<!--开始自动产生订单号,它由四部分组成:年、月、日和先前的最大订单号的后五位加1。-->
<% no=trim(rs_max("MaxID"))
if len(month(date()))=1 then
cmonth="0"& cstr(month(date()))
else
cmonth=cstr(month(date()))
end if
if len(day(date()))=1 then
cday="0"& cstr(day(date()))
else
cday=cstr(day(date()))
end if
select case len(int(Right(no,5)+1))
case 1
cno="0000"+Cstr(int(Right(no,5)+1))
case 2
cno="000"+Cstr(int(Right(no,5)+1))
case 3
cno="00"+Cstr(int(Right(no,5)+1))
case 4
cno="0"+Cstr(int(Right(no,5)+1))
case 5
cno=Cstr(int(Right(no,5)+1))
case Else
cno="00001"
end select
intno=cStr(Year(Date()))& cmonth& cday&cno
'自动产生订单号结束。
%>
<%
ASL=""
ASL=split(session("sl"),",") '此数组用来存储所选图书的数量。
i=0
sum=0
shuliang=0
'开始计算所购图书总金额、往“销售”表中插入一条记录和往“销售量”表插入一条记录或更改相应的记录。
while not rs_C.eof
bookID=rs_C("BookID")
bookName=rs_C("BookName")
price=rs_C("price")
paSL=cInt(ASL(i))
sum_1=sum_1+rs_C("price")*ASL(i)
'图书金额等于单价*数量*折扣率
booksum=rs_C("price")*ASL(i)*CSng(left(rs_rebate("rebate"),len(rs_rebate("rebate"))-1))/10
sum=sum+booksum
'left(rs_rebate("rebate"),len(rs_rebate("rebate"))-1)这一部分是把从记录集取出的折扣率的值(字符串),再从中取出其长度减1的字符串,这时得到的值就去掉了最后的“折”字。
oDate=now()
parID=Session("UserID")
'往销售表中插入一条记录。
sql_Ins="insert into DB_sell(OrderID,BookID,BookName,Price,bnumber,sum,HYID,OrderDate)"&_
"values('"&intno&"','"&bookID&"','"&bookName&"',"&price&","&paSL&","&booksum&_
",'"&parID&"',#"&oDate&"#)"
conn.execute sql_Ins
'***从“销售量”表中查询图书ID等于bookID变量的图书记录。
sql_update="select * from DB_sellsum where BookID='"&bookID&"'"
set rs_update=conn.execute (sql_update)
if rs_update.eof then
'如果记录指针到了记录的尾部,则向记录集中插入一条记录。
sql_num="insert into DB_sellsum(BookID,BookName,bnumber) values('"&bookID&_
"','"&bookName&"',"&paSL&")"
conn.execute sql_num
else
'否则,更改原有的图书ID相等的图书数量值。
sql_num="update DB_sellsum set bnumber=bnumber+"&paSL&" where BookID='"&bookID&"'"
conn.execute sql_num
end if
i=i+1
rs_C.movenext
wend %>
<!--********结束**********-->
<%
'***更改会员信息表中ID等于parID会员的总金额。
sql="update DB_member set amount=amount+ "&sum&" where ID= '"&parID&"'"
conn.execute sql
'开始自动更新会员等级
'***从会员信息表中查询ID等于parID会员的记录,并且只含等级和累计金额两个字段。
autosql="select grade,amount from DB_member where ID= '"&parID&"'"
set rs_auto=conn.execute (autosql)
samount=rs_auto("amount") '将字段中的累计金额值赋给变量samount。
'***从折扣率表中查询所有记录
sql_rebate="select* from DB_rebate"
set rs_rebateall=conn.execute (sql_rebate)
'将记录指针移动到第一帧。
rs_rebateall.movefirst
bz=0
while not rs_rebateall.eof
'如果记录指针没有到记录尾部,如果总金额大于记录集中的金额值,则将原等级加1赋给新等级。
if samount>rs_rebateall("sum") then
newgrade=rs_rebateall("grade")+1
bz=1
else
if bz=0 then newgrade=0
end if
rs_rebateall.movenext
wend
'等级最大到4
if newgrade>4 then newgrade=4
'更改会员信息表中的等级。
sql_newgrade="update DB_member set grade='"&newgrade&"' where ID= '"&parID&"'"
conn.execute sql_newgrade
%>
<!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 {
background-image: url(images/bg1.jpg);
}
-->
</style></head>
<body leftmargin="0" topmargin="0">
<center>
<table width="640" height="133" border="0" cellpadding="-1" cellspacing="-1">
<tr>
<td background="images/bg.jpg"><img src="images/checkout.gif" width="640" height="130"></td>
</tr>
</table>
<table width="640" height="341" border="0" cellpadding="-1" cellspacing="-1">
<tr>
<td valign="top" background="images/bg.jpg"> <div align="center">
<form name="form1" method="POST">
<table width="97%" height="153" border="0" cellpadding="-1" cellspacing="-1">
<tr>
<td height="71">
<div align="center"><strong><font color="#C60001" size="3">
<!!--从折扣率记录表中取出折扣率作为优惠率-->
您本次购物享受<%=(rs_rebate.Fields.Item("rebate").Value)%>优惠!<br>
您本次消费金额为<%= sum_1%>元,实际应付费用<%=sum%>元。</font>
</strong> <strong><font color="#C60001" size="3"></font></strong></div></td>
</tr>
<tr>
<td><div align="center"><strong><font color="#C60001" size="3">
结账已经完成,欢迎下次惠顾!</font></strong></div></td>
</tr>
</table>
</form>
<a href="http://cms.ddvip.com/index.php#" onClick="JScript:window.close();"><img src="images/home1.gif"
width="75" height="34" border="0"></a></div></td>
</tr>
</table>
</center>
<!--CSng 函数 :返回表达式,该表达式已被转换为 Single 子类型的 Variant。-->
</body>
</html>
<%session.Abandon()%>

  Checkout_fail.asp 收银台登录失败提示页面。

</style>
</head>
<body leftmargin="0" topmargin="0">
<center>
<table width="640" height="133" border="0" cellpadding="-1" cellspacing="-1">
<tr>
<td background="images/bg.jpg"><img src="images/checkout.gif" width="640" height="130"></td>
</tr>
</table>
<table width="640" height="318" border="0" cellpadding="-1" cellspacing="-1" background="images/bg.jpg">
<tr>
<td width="472" align="center" valign="middle">
<div align="center"><strong><font color="#990000" size="3"><p>您现在还不是我们的会员,<br><br>
请单击“注册”按钮注册会员!</font></strong></div>
</td>
</tr>
<tr>
<td height="70" background="images/buycar_bottom.jpg"><div align="center"><img src="images/register_butt.gif" width="75" height="34"><a href="checkout.asp"><img src="images/home1.gif" width="75" height="34" border="0"></a></div></td>
</tr>
</table>
</center>
</body>
</html>

  Register.asp 填写并保存注册会员信息页面。本页面是注册页面。其主要功能有:

  1、通过表单提交用户所填资料;

  2、按一定的规则自动生成会员ID;

  3、通过myreset()自定义函数执行重写命令;

  4、通过mysubmit()自定义函数检查资料是否填写完整,如不完整,弹出相应的提示框,否则进行表单提交,进入本页面的程序处理代码,处理完毕,跳转到"register_OK.asp"页面,显示注册成功相关信息。

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="Connections/conn.asp" -->
<%
'如果从表单中提取的用户名不为空,而且session("mName")为空,则,
if Request.Form("mName")<>"" and session("mName")="" then
'将表单中获取的ID、用户名和密码分别存入变量session("MyID")、session("mName")和session("MyPD")中。
session("MyID")=request.Form("ID")
session("mName")=Request.Form("mName")
session("MyPWD")=request.Form("PassWord")
'将从表单中提取来的各项值分别存入相应的变量中。
mName=Request.Form("mName")
city=Request.Form("city")
address=Request.Form("address")
postcode=Request.Form("postcode")
CardNO=Request.Form("CardNO")
CardType=Request.Form("CardType")
Tel=Request.Form("Tel")
Email=Request.Form("Email")
'向DB_Member表中插入一条记录,各字段值就是从表单中提取来的各项值。
Ins_sql = "Insert into DB_Member (ID,mName,PassWord,city,address,postcode,CardNO,"&_
"CardType,Tel,Email) values('"&session("MyID")&"','"&mName&"','"&session("MyPWD")&_
"','"&city&"','"&address&"','"&postcode&"','"&CardNO&"','"&CardType&"','"&Tel&_
"','"&Email&"')"
conn.execute(Ins_sql)
'页面转向到“register_OK.asp”页面。即注册成功页面。
response.redirect("register_OK.asp")
end if
%>
<%
'创建一个记录集对象。
Set rs_Max = Server.CreateObject("ADODB.Recordset")
'***从会员信息表(DB_Member)中取出最大的会员ID。
sql_max="SELECT MAX(ID) AS MaxID FROM DB_Member"
rs_max=conn.execute(sql_max)
%>
<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 {
background-image: url(images/bg1.jpg);
}
-->
</style>
</head>
<body leftmargin="0" topmargin="0">
<center>
<table width="640" height="133" border="0" cellpadding="-1" cellspacing="-1">
<tr>
<td background="images/bg.jpg"><img src="images/register_top.gif" width="640" height="130"></td>
</tr>
</table>
<table width="640" height="341" border="0" cellpadding="-1" cellspacing="-1" background="images/bg.jpg">
<tr>
<td valign="top" background="images/buycar_bottom.jpg">
<div align="center">
<!--开始创建表单-->
<form method="POST" action="register.asp" name="form1">
<table width="346" border="1" align="center" cellpadding="0"
cellspacing="0" bordercolor="#FFFFFF" bordercolorlight="#FFFFFF"
bordercolordark="#aaaaFF">
<tr>
<!--开始按一定的规则自动生成会员ID-->
<% no=trim(rs_max("MaxID"))
'从rs_max记录集中取出字段名为“MaxID"的值,它就是当前最大的会员ID。
'下面分别取出当前的月、日和年的值,作为新会员编号的头部。如果取出的月和日的值为一位数,则在其前添加一个0。
if len(month(date()))=1 then
cmonth="0"& cstr(month(date()))
else
cmonth=cstr(month(date()))
end if
if len(day(date()))=1 then
cday="0"& cstr(day(date()))
else
cday=cstr(day(date()))
end if
'下面取出新会员编号的后5位的值。
select case len(int(Right(no,5)+1))
'当从变量(no)中由右向左取5个字符串加1后,其值的长度等于1,则将其值前加上0000后赋给变量cno。
case 1
cno="0000"+Cstr(int(Right(no,5)+1))
case 2
cno="000"+Cstr(int(Right(no,5)+1))
case 3
cno="00"+Cstr(int(Right(no,5)+1))
case 4
cno="0"+Cstr(int(Right(no,5)+1))
case 5
cno=Cstr(int(Right(no,5)+1))
case Else
cno="00001"
end select
intno="HY"& cStr(Year(Date()))& cmonth& cday&cno
%>
<td width="82" height="27" align="right" nowrap>会员ID:</td>
<td width="258" height="27">&nbsp;
<input type="hidden" name="ID" value="<%= intno %>" size="32">
<font color="#666699"><%= intno %></font></td>
</tr>
<tr>
<td height="27" align="right" nowrap>会员名称:</td>
<td height="27"> <div align="center">
<input type="text" name="mName" size="32">
</div></td>
</tr>
<tr>
<td height="27" align="right" nowrap>您的密码:</td>
<td height="27"> <div align="center">
<input type="password" name="PassWord" value="" size="32">
</div></td>
</tr>
<tr>
<td height="27" align="right" nowrap>城市:</td>
<td height="27"> <div align="center">
<input type="text" name="city" value="" size="32">
</div></td>
</tr>
<tr>
<td height="27" align="right" nowrap>地址:</td>
<td height="27"> <div align="center">
<input type="text" name="address" value="" size="32">
</div></td>
</tr>
<tr>
<td height="27" align="right" nowrap>邮政编码:</td>
<td height="27"> <div align="center">
<input name="postcode" type="text" value="" size="32" maxlength="6">
</div></td>
</tr>
<tr>
<td height="27" align="right" nowrap>信用卡号:</td>
<td height="27"> <div align="center">
<input name="CardNO" type="text" value="" size="32" maxlength="24">
</div></td>
</tr>
<tr>
<td height="27" align="right" nowrap>信用卡类型:</td>
<td height="27"> <div align="center">
<input type="text" name="CardType" value="" size="32">
</div></td>
</tr>
<tr>
<td height="27" align="right" nowrap>联系电话:</td>
<td height="27"> <div align="center">
<input type="text" name="Tel" value="" size="32">
</div></td>
</tr>
<tr>
<td height="27" align="right" nowrap>Email:</td>
<td height="27"> <div align="center">
<input type="text" name="Email" value="" size="32">
</div></td>
</tr>
<!--创建表单结束-->
<script language="JavaScript">
//创建一个名为myreset的自定义函数。
function myreset(){
//执行表单重填。
form1.reset();
event.returnValue=false;
}
</script>
<script language="VBScript">
'创建一个名为mysubmit的自定义函数。当表单中某项内没有填写数值时,一提交,此函数就显示相应的提示信息。
function mysubmit()
if form1.mName.value="" then
msgbox "请输入会员姓名!"
form1.mName.focus()
end if
if form1.PassWord.value="" then
msgbox "请输入会员密码!"
form1.PassWard.focus()
end if
if form1.city.value="" then
msgbox "请输入城市!"
form1.city.focus()
end if
if form1.address.value="" then
msgbox "请输入地址!"
form1.address.focus()
end if
if form1.Postcode.value="" then
msgbox "请输入邮政编码!"
form1.Postcode.focus()
end if
if form1.CardNO.value="" then
msgbox "请输信用卡号!"
form1.CardNO.focus()
end if
if form1.Tel.value="" then
msgbox "请输入联系电话!"
form1.Tel.focus()
end if
if form1.Email.value="" then
msgbox "请输入Email!"
form1.Email.focus()
end if
end function
</script>
<table>
<tr>
<td width="314" height="49" align="right">
<div align="center">
<input type="image" value="提交" src="images/submit.gif" onClick="return mysubmit()">
<input type="image" name="Submit" value="重置" src="images/reset.gif" onClick="myreset()">
<a href="checkout.asp"><img src="images/home1.gif" width="81" height="36" border="0"></a>
<input name="Amount" type="hidden" id="Amount" value="0">
<input name="grade" type="hidden" id="grade" value="0">
</div></td>
</tr>
</table>
</center>
</body>
</html>

  Register_OK.asp 显示注册会员成功信息页面。 本页面是注册注册成功提示页面。其主要功能有:

  1、注册成功相关信息提示;

  2、返回按钮引导您回收银台结帐。

<%@language="VBScript" %>
<html>
<head>
<title>会员注册成功!</title>
<link href="style.css" rel="stylesheet">
<!--**********************************-->
<style type="text/css">
<!--
body,td,th {
font-size: 14pt;
color: #666699;
line-height: 1.5;
}
-->
</style>
<!--*******************************************************-->
</head>
<body background="images/bg1.jpg" leftmargin="50" topmargin="0">
<center>
<table width="640" height="133" border="0" cellpadding="-1" cellspacing="-1" background="images/bg.jpg">
<tr>
<td background="images/bg.jpg"><img src="images/register_top.gif" width="640" height="130"></td>
</tr>
</table>
<table width="640" height="318" border="0" cellpadding="-1" cellspacing="-1">
<tr>
<td height="200" background="images/bg.jpg">
<div align="center">祝贺您,已经注册成功!<br>
您的会员ID号<font color="#C60001"><strong>[<% response.Write(session("MyID"))%>]</strong></font><br>
密码为:<font color="#C60001"><strong>[<% response.Write(session("MyPWD"))%>]</font></strong>请记好!<br>
请单击“返回”按钮到收银台结账。</div></td>
</tr>
<tr>
<td height="120" background="images/bg.jpg"><div align="center"> <a href="checkout.asp"><img src="images/home1.gif" width="75"
height="34" border="0"></a></div></td>
</tr>
</table>
</center>
</body>
</html>
<% session("mName")=""%>

  

视频教程列表
文章教程搜索
 
Asp推荐教程
Asp热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058