网上书店系统设计
图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查看购物车里图书的详细信息,如果不满意可通过删除功能删除图书。效果如图3-6
图3-6购物车
icar代码如下:
<%
'判断客户动作,是否单击"购物车"
dimiaction,iid
iaction=request.QueryString("action")
iid=request.QueryString("id")
'判断客户是否已经登录
ifiaction="add"then
ifrequest.cookies(cookieName)("username")=""then
callMsgBox("你没有登陆!","None","None")
else
'初始化recordset对象
setrs=server.CreateObject("adodb.recordset")
'查看是否已经把该图书放入购物车
rs.open"selectid,usernamefromorderswhereusername='"&trim(request.cookies(cookieName)("username"))&"'andid="&iid&"andstate=6",conn,1,1
ifnotrs.eofandnotrs.bofthen
callMsgBox("对不起,此商品已存在于您的购物车中,不可以重复添加!","None","None")
rs.close
else
rs.close
rs.open"selectid,username,state,paidfromorders",conn,1,3
'添加到购物车
rs.addnew
rs("id")=iid
rs("username")=trim(request.cookies(cookieName)("username"))
rs("state")=6
rs("paid")=0
rs.update
rs.close
callMsgBox("商品成功添加到你的购物篮!","None","None")
endif
setrs=nothing
endif
endif
'判断用户级别,根据用户级别决定图书价格
dimiCarRs,iPrice,pNum
setiCarRs=server.CreateObject("adodb.recordset")
ifrequest.cookies(cookieName)("username")=""then
iPrice=0
pNum=0
else
'查询数据库,根据用户级别查询相应价格
iCarRs.open"selectcount(*)asco,sum(product.vipprice)asvipsum,sum(product.price2)aspsumfromproductinnerjoinordersonproduct.id=orders.idwhereorders.username='"&request.cookies(cookieName)("username")&"'andorders.state=6",conn,1,1
'会员用户
if(request.cookies(cookieName)("vip"))then
iPrice=iCarRs("vipsum")
'普通用户
else
iPrice=ICarRs("psum")
endif
pNum=iCarRs("co")
ifpNum=0theniPrice=0
'关闭对象
iCarRs.close
endif
iCarRs.open"selecttop10orders.id,product.namefromproductinnerjoinordersonproduct.id=orders.idwhereorders.username='"&request.cookies(cookieName)("username")&"'andorders.state=6",conn,1,1
%>
Car.asp用于显示购物车里面的图书信息。其代码如下:
<%
dimid,username,action
'客户是否进行了操作,并且判断操作类型
action=request.QueryString("action")
username=trim(request.cookies(cookieName)("username"))
id=request.QueryString("id")
'初始化recordset对象
setrs=server.CreateObject("adodb.recordset")
selectcaseaction
'在购物车里面删除图书
case"del"
conn.execute"deletefromorderswhereactionid="&request.QueryStringctionid")
response.redirect"car.asp"
'添加图书到购物车
case"add"
rs.open"selectid,usernamefromorderswhereusername='"&username&"'andid="&id&"andstate=6",conn,1,1
ifnotrs.eofandnotrs.bofthen
callMsgBox("对不起,此商品已存在于您的购物车中,不可以重复添加!","Close","None")
response.end
rs.close
'如果购物车里没有该图书
else
rs.close
rs.open"selectid,username,state,paidfromorders",conn,1,3
rs.addnew
rs("id")=id
rs("username")=username
rs("state")=6
rs("paid")=0
rs.update
rs.close
setrs=nothing
callMsgBox("商品成功添加到你的购物篮!","Close","None")
response.end
endif
endselect
rs.open"selectorders.actionid,orders.id,product.name,product.price1,product.rice2,duct.discountfromproductinnerjoinordersonproduct.id=orders.idwhereorders.username='"&request.cookies(cookieName)("username")&"'andorders.state=6",conn,1,1
%>
3.3系统管理模块的实现
manage/login.asp:管理员登录程序。
manage/quser.asp:客户管理程序,包括查找、删除客户。
manage/huser.asp:管理员用户管理程序,包括添加、删除、修改权限。
manage/logout.asp:管理员退出登录程序。
manage/addpro.asp:图书的添加程序。
系统管理模块完成的功能有图书的添加和删除、客户及管理员的管理,订单管理、图书大类别管理、图书小类别管理等。这里主要介绍图书的添加功能的实现和客户管理及管理员的管理。
3.3.1图书的管理
manage/addpro.asp程序实现图书的添加,首先设计一个表单供管理员输入图书资料,单击[添加]按钮后,先经过有效性验证,验证有效后添加到数据库中。其运行界面如图3-7
图3-8图书添加界面
其关键代码如下:
<%
'判断管理员级别
ifsession("rank")>2then
callMsgbox("你的权限不够!","Back","None")
response.End
endif
%>
<%
'判断是否进行添加产品操作
IfNOTIsEmpty(request("AddProSubmit"))then
dimproductdate,discount
discount=round(request("price2")/request("price1"),2)
'图书日期处理
ifrequest("productdateyear")<>""then
productdate=trim(request("productdateyear"))&"年"&trim(request("productdatemonth"))&"月"
else
productdate=""
endif
'初始化recordset对象
setrs=server.CreateObject("adodb.recordset")
rs.Open"select*fromproduct",conn,1,3
rs.AddNew
'开始添加
rs("productdate")=productdate
rs("discount")=discount
'对表单传递过来的数据进行处理
rs("name")=trim(request("name"))
rs("format")=request("format")
ifrequest("pagenum"
上一篇:ASP原创信息管理系统(论文和程序)
下一篇:学校党建工作论文