4 系统的设计与实施 copyright paper51.com 由于本系统模块较多,主要对购物车和订单管理两个有代表性的模块进行重点讲解。 http://www.paper51.com 4.1 系统总体设计框架 内容来自论文无忧网 www.paper51.com
本系统采用模块化设计,将可以公用的代码提取出,单独形成文件,以方便后面程序设计时调用。其中lib目录存储着整个系统的公共库函数文件,config里存储着整个系统的公共设置参数文件,这两个目录都是整个系统程序必须用到的。Css目录存储着整个系统的格式文件。 http://www.paper51.com 4.1.1 公共库函数 内容来自www.paper51.com Lib.asp文件中包含了同数据库相关的基本函数: 内容来自www.paper51.com 打开数据库,关闭数据库:打开数据库中的数据集合,关闭数据库中使用的数据集合。字符串处理,数据传递接受函数等。 copyright paper51.com DB_ Connect () 连接数据库: http://www.paper51.com dim oConn http://www.paper51.com sub DB_Connect(sDBConnect) copyright paper51.com
SetoConn = Server.CreateObject("ADODB.Connection") paper51.com oConn.Open sDBConnect http://www.paper51.com end sub copyright paper51.com DB_Connect()是用来打开数据库的,在ASP中同数据库打交道的主要是ADO。对数据库进行操作处理,首先要建立同数据源的连接,可以利用ADO的Connection来建立同数据库的链接。建立ADODB.Connection对象,使用此对象的Open方法,打开数据库。 内容来自论文无忧网 www.paper51.com DB_DisConnect() 断开与数据库的连接: 内容来自论文无忧网 www.paper51.com sub DB_DisConnect() http://www.paper51.com oConn.Close copyright paper51.com Set oConn = Nothing http://www.paper51.com end sub 内容来自www.paper51.com
此函数同上述的打开数据库函数相对应,使用Connection对象的关闭数据库的Close方法,并且使用Set方法将此对象从内存中完全清除。 内容来自www.paper51.com DB_RSConnect() 断开RS与数据库的连接: http://www.paper51.com sub DB_RSConnect(RSobj) copyright paper51.com RSobj.Close copyright paper51.com Set RSobj = Nothing http://www.paper51.com
end sub 内容来自论文无忧网 www.paper51.com 4.1.2 公共设置参数 paper51.com 数据库: http://www.paper51.com conststrconn="DSN=shop;uid=elvis;pwd=19841113;database=shop" copyright paper51.com 折扣价格: http://www.paper51.com const discountPrice=0.7 paper51.com 分页显示每页的条目数 : copyright paper51.com const MaxPerPage =5 copyright paper51.com 存储上载图片的路径 : http://www.paper51.com Const sPath_Info = "/img/" http://www.paper51.com 其中strcon常量是设置数据的,当设好ODBC后应直接修改次参数来完成; 内容来自www.paper51.com MaxPerPage常量是设置每页显示数据的,默认为5;sPath_Info为上传图片的目录。 内容来自www.paper51.com
4.2 商品浏览模块 http://www.paper51.com copyright paper51.com 图4-1 商品浏览 内容来自论文无忧网 www.paper51.com
商品浏览程序要分两步去实现,第一步是初始化,完成从数据库中数据集合的生成,确定完成刘表功能的参数值,第二步就是完成数据的显示。 内容来自论文无忧网 www.paper51.com
快速搜索部分代码: copyright paper51.com
DimtypeListSQL,tempRS paper51.com
typeListSQL="selectSt_typeid,St_name from GoodsType where St_fid=0 order by St_sort desc" 内容来自www.paper51.com settempRS=oConn.execute(typeListSQl) http://www.paper51.com if not tempRS.eof then paper51.com do while not tempRS.eof paper51.com response.write"<optionvalue="""&tempRS(0)&""">"&tempRS(1)&"</option>" 内容来自论文无忧网 www.paper51.com tempRS.movenext http://www.paper51.com loop copyright paper51.com 4.3 用户登录模块 copyright paper51.com
内容来自www.paper51.com
图4-2 用户注册 copyright paper51.com 编写程序时要考虑到: paper51.com 1. 用户输入的信息是否正确,是否要求验证; 内容来自论文无忧网 www.paper51.com 2. 要对出错部分进行处理。 copyright paper51.com 3. 是否可以把公用的功能函数放到一起,以便共享。 copyright paper51.com
系统一般使用Session来存储用户的相关信息并与客户端保持联系。前台登录后,以用户存储在数据库中的标识符作为信息记载,并以判断这个值是否为空来判断用户是否登录。 http://www.paper51.com
copyright paper51.com
图4-3 修改用户资料 http://www.paper51.com 4.4 购物车模块 内容来自www.paper51.com
内容来自www.paper51.com
图4-4 购物车 内容来自www.paper51.com 在本系统中它是前台用户端程序中非常关键的一个功能模块,帮助用户完成商品的选购,并把商品交给服务台进行结算。它的功能包括有:将商品添加进购物车,浏览购物车,取消购物车中的商品,编辑购物车中商品的数量,清空购物车。 内容来自www.paper51.com 当用户进入商城后,一旦选购了商品,系统就会为每一个用户分配一辆购物车供用户使用,当用户不断单击商品旁边的购买按钮,系统就会不停帮用户把商品放入到给用户分配的购物车中。对于相同的商品,用户单击多少次就相当于购买该系统的数量为多少。 http://www.paper51.com
购物车主要要实现添加、删除、更新、清空四个功能,实现是靠接收到的4个参数:Ssbtok,sMode,sItemId,sItemNum 实现的。 paper51.com
ssbtOk=request("sbtok") paper51.com sMode=request("imode") copyright paper51.com sItemId=request("itemid") http://www.paper51.com sItemNum=request("txtnum") copyright paper51.com Ssbtok和sMode是用来接受处理模式的,如果sMode是add, 则不需要再进行处理;如果不是add,就要根据Ssbtok接收到的参数来确定。在系统里设置了4个参数,分别对购物车的4个操作对应。 内容来自www.paper51.com sItemNum是用来接收商品数量的,直接单击购买后数量为空时,系统默认为1。 内容来自www.paper51.com sItemId用来接受购买商品的ID。 paper51.com 另外还需要完成的是在每次购物前先打开购物车。购物车里的全部商品都存储在两个Session里: 内容来自论文无忧网 www.paper51.com Session(“CartItemTypeArray”)存储着商品的种类,每类商品中间使用特殊符号“@”来间隔; paper51.com
Session(“CartItemNumArray”)存储着商品的数量,每种商品的数量使用同种类相同的符号“@”间隔开,并且这两个是相互对应的,每种商品对应着一个数字。 内容来自www.paper51.com
打开购物车代码: sItemA=split(Session("CartItemTypeArray"),"@") copyright paper51.com sItemAIndex=ubound(sItemA) 内容来自论文无忧网 www.paper51.com sItemNumA=split(Session("CartItemNumArray"),"@") 内容来自论文无忧网 www.paper51.com 其中首先使用Split函数把商品种类的Session分成数组,然后使用Ubound取得它的最大项。 copyright paper51.com 添加商品代码: http://www.paper51.com
If sMode="add" Then copyright paper51.com If sItemAindex>=1 Then '购物车中已经含有物品 paper51.com
For i=0 tosItemAindex-1 '查对购物车中是否已经有此物品 copyright paper51.com
If sItemId=sItemA(i)Then 内容来自论文无忧网 www.paper51.com sNowItemAIndex=i copyright paper51.com Exit For copyright paper51.com
End If copyright paper51.com
Next http://www.paper51.com IfsNowItemAIndex<>"" And sNowItemAIndex>=0 Then '购物车中已经有此类物品 http://www.paper51.com
sItemNumA(sNowItemAIndex)=sItemNumA(sNowItemAIndex)+sItemNum 内容来自www.paper51.com Session("CartItemNumArray")="" 内容来自www.paper51.com For i=0 to sItemAindex-1 http://www.paper51.com Session("CartItemNumArray")=Session("CartItemNumArray")&sItemNumA(i)&"@" 内容来自论文无忧网 www.paper51.com Next 内容来自论文无忧网 www.paper51.com ElseifsNowItemAIndex="" Then '购物车中还没有此类物品 内容来自论文无忧网 www.paper51.com Session("CartItemTypeArray")=Session("CartItemTypeArray")&sItemId&"@" 内容来自论文无忧网 www.paper51.com Session("CartItemNumArray")=Session("CartItemNumArray")&sItemNum&"@" paper51.com EndIf copyright paper51.com ElseIf cint(sItemAindex)=-1then '购物车是空车 copyright paper51.com Session("CartItemTypeArray")=sItemId&"@" 内容来自www.paper51.com Session("CartItemNumArray")=sItemNum&"@" 内容来自www.paper51.com End If paper51.com
注:在打开购物车后,要向购物车中添加商品。首先查看购物车中是否有商品,如果有商品,再判断是不是有此类商品; 内容来自论文无忧网 www.paper51.com
1. 如果有此类商品,把存储商品数量的Session打开,找到同种类相对应的项,直接为此类商品数目加1,然后再把存储商品数量的Session打包成字符串; http://www.paper51.com 2. 如果没有此类商品,则直接在存储商品种类和商品数量的Session字符串后面加上种类和数据就可以; http://www.paper51.com
3. 如果购物车中为空,则直接添加进新的商品种类和商品数量即可。 内容来自www.paper51.com |