very表:subject(送货/汇款方式)、fee(价钱)、deliveryidorder(顺序)等。
图2-12delivery表结构图
orders表:username(写订单用户名)、actiondate(日期)、id(产品编号)、productnum(产品订购数量)、recepit(收货人)、address(收货地址)、realname(姓名)、useremail(EMAIL)、usertel(电话)等。
图2-13orders表结构图
review表:id(对应产品编号)、title(标题)、reviewdtm(日期时间)、reviewcontent(评论内容)、audit(是否通过审批)。
图2-14review表结构图
product表:name(书名)、author(作者)、productdate(出版日期)、detail(详细介绍)、price1(市场价)、price2(会员价)、discount(折扣)、mark(出版社)、type(ISBN)、pagenum(页数)、desc(简介)等。
图2-15product表结构图
sorts表:sorts(小类名)、sortsorder(顺序)、categoryid(对应大类编号)、first(是否在首页显示)。
图2-16sorts表结构图
user表:username(用户名)、useremail(EMAIL)、password(密码)、identify(身份证号)、adddate(注册日期)、question(密码提示)、answer(密码答案)、postcode(邮编)、usertel(电话)、sex(性别)、realname(姓名)等。
图2-17user表结构图
2.2数据库的连接
本系统通过Microsoft.Jet.OLEDB.4.0来连接和操作数据库。建立数据库连接文件conn.asp实现与数据库的连接,其他文件通过调用该文件实现与数据库的连接。其代码如下:
<%
'定义连接数据库需要的变量
dimconn,connstr,db,rs
'数据库的名称
db="manage/db/db.mdb"
'初始化连接对象
Setconn=Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(""&db&"")
'打开数据库连接
conn.Openconnstr
%>
第三章网上书店系统设计
图3-1网上书店系统文件结构图
3.1用户信息模块的实现
用户分为客户和系统用户,主要实现用户注册、登录、查看、更改注册资料等功能。主要包括下列文件:
login.asp:客户登录及登录信息处理页面。
tiao.asp:客户注册第一步页面,显示条款。
reg.asp:客户注册信息填写,处理页面。
muser.asp:客户消息中心页面。
userinfo.asp:客户个人资料修改程序。
changepws.asp:客户密码修改程序。
logout.asp:客户退出登录程序。
3.1.1客户的注册、登录及退出
当客户在首页单击注册时,进入注册的第一个页面tiao.asp,在这个页面中给出了网上书店注册条约,主要是说明用户在网上书店购书所需要遵守的准则和制度,在该页面上有[我同意]和[我不同意]两个按钮,当单击两个按钮时,网页分别定向到注册页面reg.asp和首页面index.asp。
reg.asp是用户注册文件,在客户端进行信息有效性验证,如果信息填写不正确,则给出相应提示,信息填写正确则进行后台数据处理。效果如图3-2
图3-2注册页面reg.asp
其主要代码如下:
<%
'判断用户是否已经提交注册请求
ifNOTisempty(request("RegSubmit"))then
'判断用户是否已经注册过
ifsession("regtimes")=1then
'如果已经注册过,则返回上一页面
callMsgBox("对不起,您刚注册过用户!","Back","None")
response.end
endif
'初始化ADODBrecordset对象
setrs=server.CreateObject("adodb.recordset")
'查询数据库,验证用户注册Email是否存在
rs.open"selectusername,useremailfrom[user]whereusername='"&trim
(request("username"))&"'oruseremail='"&trim(request("useremail"))&"'",conn,1,1
ifnotrs.eofandnotrs.bofthen
callMsgBox("您输入的用户名或Email地址已存在,请返回重新输入!","Back","None")
endif
rs.close
'该用户名没有被使用,则添加入数据库
rs.open"select*from[user]",conn,1,3
rs.addnew
下面代码对注册表单传递过来的数据进行处理。
'用户名
rs("username")=trim(request("username"))
'密码
rs("password")=md5(trim(request("password")))
'email
rs("useremail")=trim(request("useremail"))
'密码提示问题
rs("quesion")=trim(request("quesion"))
'提示问题答案
rs("answer")=md5(trim(request("answer")))
'真实姓名
rs("realname")=trim(request("realname"))
'身份证
rs("identify")=trim(request("identify"))
'电话
rs("mobile")=trim(request("mobile"))
'QQ
rs("userqq")=trim(request("userqq"))
'取得当前时间
rs("adddate")=now()
rs("lastvst")=now()
rs("loginnum")=0
rs("postcode")=0
rs("score")=0
rs("paymethord")=0
rs("deliverymethord")=0
'更新数据库
rs.update
rs.close
'释放资料
setrs=nothing
'设置cookie,把用户名写入cookie
response.Cookies(cookieName)("username")=trim(request("username"))
'设置cookie对象有效期
response.Cookies(cookieName).expires=date+1
'用session对象来存储变量
session("regtimes")=1
'设定session对象的超时时间为1分钟
session.Timeout=1
'提示注册成功,定向网页到muser.asp
callBox("注册成功!请到用户管理中心填详细资料!","GoUrl","muser.asp")
endif
%>
login.asp程序完成客户登录功能,用户填写用户名和密码后,单击[登录]按钮,则调用登录程序进行验证,如果登录成功,系统自动进入用户信息资料页面。关键代码如下:
<%
'判断用户是否单击[登录]按钮
ifNOTisempty(request("LoginSubmit"))then
'定义两个变量,对用户名和密码进行处理
dimusername,password
username=replace(trim(request("username")),"'","")
password=md5(replace(trim(request("password")),"'",""))
'初始化对象
setrs=server.CreateObject("adodb.recordset")
'查询数据库
rs.Open"select*from[user]whereusername='"&username&"'andpassword='"&password&"'",conn,1,3
'判断用户是否存在
ifnot(rs.bofandrs.eof)then
'判断用户密码是否正确,设置cookie
ifpassword=rs("password")then
response.Cookies(cookieName)("username")=trim(request("username"))
response.Cookies(cookieName)("vip")=rs("vip")
rs("lastvst")=now()
rs("loginnum")=rs("loginnum")+1
rs.Update
rs.Close
setrs=nothing
response.redirect"muser.asp"
else
callMsgBox("对不起,您的用户名或密码有误!","Back","None")
endif
else
callMsgBox("对不起,您的用户名或密码有误!","Back","None")
endif
endif
%>
Logout.asp程序完成客户退出处理,客户退出系统后,系统给出提示,并返回到首页。代码如下:
<%
response.Cookies(cookieName).Expires=NOW()-1
response.Cookies(cookieName)("username")=""
response.Cookies(cookieName)("vip")=""
response.Write"alert('您已成功注销!');"
response.redirect"index.asp"
%>
3.1.2客户资料的查看、更新及密码的修改
userinfo.asp查看操作是显示用户注册的所有信息。更新操作,首先从更改表单中获取相应值,执行后根据返回值做相应处理。其ASP代码如下:
<%
'判断cookie对象中用户名是否为空
ifrequest.cookies(cookieName)("username")=""then
response.Redirect"reg.asp"
response.End
endif
'初始化recordset对象
setrs=server.CreateObject("adodb.recordset")
'判断操作类型,如果是客户提交了保存操作,则保存数据
ifNOTisempty(request("SaveSubmit"))then
dimusername
username=request.cookies(cookieName)("username")
rs.open"selectuseremail,realname,quesion,answerfrom[user]whereusername='"&username&"'",conn,1,3
'对post传递过来的数据进行处理
rs("useremail")=trim(request("useremail"))
rs("realname")=trim(request("realname"))
rs("quesion")=trim(request("quesion"))
iftrim(request("answer"))<>""then
'对提示问题回答做加密处理
rs("answer")=md5(trim(request("answer")))
endif
'更新数据库
rs.update
rs.close
endif
'显示用户资料
rs.open"selectuseremail,vip,identify,quesion,realnamefrom[user]whereusername='"&request.cookies(cookieName)("username")&"'",conn,1,1
'rs.open"selectuseremail,vip,identify,quesion,realnamefrom[user]whereusername='timesshop'",conn,1,1
DimRank
Rank="普通会员"
'判断用户是否为会员
Ifrs("vip")=truethen
Rank="VIP会员"
Endif
%>
changepws.asp程序供客户修改密码,并在修改密码之前验证原密码的正确性,只有原密码正确,才可以修改密码。其ASP代码如下:
<%
'判断用户是否单击了确认修改密码的按钮
ifNOTisempty(request("ChangePwsSubmit"))then
dimusername
'读取cookie
username=request.cookies(cookieName)("username")
'初始化recordset对象
setrs=server.CreateObject("adodb.recordset")
'查询数据库
rs.open"selectpasswordfrom[user]whereusername='"&username&"'",conn,1,3
'用MD5加密密码后和原密码对比验证
ifmd5(trim(request("password")))<>trim(rs("password"))then
callMsgBox("对不起,您输入的原密码错误!","Back","None")
else
rs("password")=md5(trim(request("password1")))
rs.update
rs.close
setrs=nothing
callMsgBox("密码更改成功!","none","none")
endif
endif
%>
3.2图书信息模块的实现
主要是查看图书列表、搜索图书、显示图书信息、把图书放入购物车等功能。主要包括以下文件:
class.asp:显示图书分类列表。
sub.asp:显示分类图书。
new.asp:显示新品图书。
hot.asp:显示畅销图书。
commend.asp:显示推荐图书。
search.asp:搜索图书,可以按照图书名称、作者名称、出版社、出版时间、价格范围及图书类别搜索。
car.asp:查看我的购物车信息,图书结账。
vpro.asp:查看详细图书信息。
3.2.1分类的显示和详细信息的显示
分类列表的显示
class.asp程序实现图书的分类显示功能,
sub.asp程序完成当客户单击某一分类时显示具体分类图书的功能,显示内容为该图书的图片及一些基本的图书信息。
图书详细信息显示
vpro.asp程序完成当用户单击图书名称时显示图书的详细信息。效果如图3-3
图3-3图书详细信息显示界面
其关键代码如下:
<%
dimid
'得到图书id
id=request.QueryString("id")
'定义变量
Dimprename,company,intro,predate,graph2,description,remarks,price
'初始化recordset对象
setrs=server.CreateObject("adodb.recordset")
'在数据库中查询图书
rs.open"select*fromproductwhereid="&id,conn,1,3
'图书浏览次数加1
rs("viewnum")=rs("viewnum")+1
rs.update
%>
3.2.2图书的搜索
search.asp程序实现搜索,供客户输入搜索条件并进行有效性验证,当客户输入的搜索条件经过有效性验证后程序就会把数据提交到rsearch.asp,由rsearch.asp进行搜索和显示搜索结果。例如,我现在要搜索一本书名中有ASP的图书,就可以这样做,如图3-4。单击[开始搜索]出现图3-5的搜索结果。
图3-4图书搜索search.asp运行界面
图3-5图书搜索结果rsearch.asp运行界面
rsearch.asp代码如下:
<%
'判断用户是否进行搜索
ifrequest.QueryString=""then
callMsgBox("错误:没有搜索条件!","GoUrl","search.asp")
response.end
endif
'开始分页
ConstMaxPerPage=5
dimtotalPut
dimCurrentPage
dimTotalPages
dimj
dimsql
dimnid,sortsid
ifNotisempty(request.QueryString("page"))then
currentPage=Cint(request.QueryString("page"))
else
currentPage=1
endif
setrs=server.CreateObject("adodb.recordset")
'定义变量
dimname
dimauthor
dimmanufacturer
dimenabledate
dimexpiredate
dimsmallprice
dimlargeprice
dimcode
dimOrderField
dimOrder
'把从search.asp提交过来的数据赋值给相应的变量
name=trim(request.QueryString("name"))
author=trim(request.QueryString("author"))
manufacturer=trim(request.QueryString("manufacturer"))
enabledate=trim(request.QueryString("enabledate"))
expiredate=trim(request.QueryString("expiredate"))
smallprice=trim(request.QueryString("smallprice"))
largeprice=trim(request.QueryString("largeprice"))
OrderField=trim(request.QueryString("OrderField"))
Order=trim(request.QueryString("Order"))
code=trim(request.QueryString("code"))
ifOrderField=""thenOrderField="adddate"
ifOrder=""thenOrder="DESC"
sql="selectpagenum,name,mark,vipprice,id,author,productdate,price2,price1,discount,picfromproductwhere1=1"
'判断搜索条件,根据不条件设定不同的SQL语句
ifname<>""then
sql=sql&"andnamelike'%"&name&"%'"
endif
ifauthor<>""then
sql=sql&"andauthorlike'%"&author&"%'"
endif
ifmanufacturer<>""then
sql=sql&"andmarklike'%"&manufacturer&"%'"
endif
ifcode<>""then
sql=sql&"andcategoryidlike'%"&code&"%'"
endif
ifsmallprice<>""then
smallprice=CDbl(smallprice)
sql=sql&"andprice2>="&smallprice
endif
iflargeprice<>""then
largeprice=CDbl(largeprice)
sql=sql&"andprice2<="&largeprice
endif
ifexpiredate<>""then
expiredate=CDate(expiredate)
sql=sql&"andproductdate<=#"&expiredate&"#"
endif
ifenabledate<>""then
enabledate=CDate(enabledate)
sql=sql&"andproductdate>=#"&enabledate&"#"
endif
sql=sql&"orderby"&OrderField&""&Order
'查询数据库
rs.opensql,conn,1,1
'判断搜索结果
iferr.number<>0then
callMsgBox("数据库中无数据","Back","None")
response.End
endif
ifrs.eofAndrs.bofthen
callMsgBox("对不起,找不到你所需的书籍!","Back","None")
response.End
else
'搜索数量
totalPut=rs.recordcount
'分页显示
ifcurrentpage<1then
urrentpage=1
endif
'尾页判断
if(currentpage-1)*MaxPerPage>totalputthen
if(totalPutmodMaxPerPage)=0then
currentpage=totalPut\MaxPerPage
else
currentpage=totalPut\MaxPerPage+1
endif
endif
'判断是否是第一页显示
ifcurrentPage=1then
else
if(currentPage-1)*MaxPerPage
3.2.3购物车功能的实现
如果客户满意某本图书,则单击"购物车"就可以把该本图书放进自己的购物车,该功能由icar.asp完成。客户可随时通过car.asp查看购物车里图书的详细信息,如果不满意可通过删除功能删除图书
上一篇:Asp原创网上书店(论文和程序)
下一篇:关于武汉地名的语言文化考察