ress 文本 50联系地址
Pays文本20付款方式
RegTime日期/时间 默认值Now()订货时间
Flag文本20标记
Remark文本255备注
说明:所建立的数据库文件(SuperMarket_Data.mdb)保存在文件夹market_database下,为防止别人随意篡改数据库,故将其后缀名改为.asp来调用。
五.系统功能模块设计
5.1客户端
5.1.1购物篮
在设计购物篮中,首先要考虑到的是购物篮中商品信息的存储,而且在整个的商品购买中没有改变,这里就要用到ASP中的内置Session组件,它是访问者从的到达某个特定主页到离开为止的那段时间,服务器端给他分配一个用来储存信息的全局变量的集合,这些变量可以自动生成,也可以是程序人员在服务器端脚本程序中定义的。
Session可以用来存储访问者的特定信息,创建访问者信息容器。我们使用它来作为虚拟购物篮,无论什么时候用户在我网站中选择了一种商品,那么这种商品就会进入购物篮,当用户准备离开时,就可以立即进行以上所有选择的商品的订购。这些购物信息可以保存在Session中。用户在Web应用程序中访问同一页面时,Session变量始终存在,当用户在应用程序的页之间跳转时,存储在Session对象中的变量也不会清除。
在建立购物篮中,其实是对全局变量的操作。在这里我定义了一个全局变量:ProductList=Session("ProductList"),将购物信息保存到此全局变量中。另外还定义了一个全局变量Products,通过函数PutToShopBag()将ProductList的值赋给Products,使用函数Split()将读取到的字符串进行分割,以得到购物信息:Products=Split(Request("cpbm"),",")。
/*建立购物篮的详细代码*/
ProductList=Session("ProductList")
Products=Split(Request("cpbm"),",")
Fori=0ToUBound(Products)
PutToShopBagProducts(i),ProductList
Next
Session("ProductList")=ProductList
/*函数PutToShopBag()代码*/
<%
SubPutToShopBag(cpbm,ProductList)
IfLen(ProductList)=0Then
ProductList="'"&cpbm&"'"
ElseIfInStr(ProductList,cpbm)<=0Then
ProductList=ProductList&",'"&cpbm&"'"
EndIf
EndSub
%>
购物篮界面如下图所示:
在我的购物篮中可操作的事件为:
◇确认更改:在数量项目文本框中可以更改数目,该事件是用以更新购物篮中的商品数量;
◇继续购物:该事件是关闭窗口;
◇订单取消:该事件清空购物篮;
◇去收银台:该事件是用来关闭窗口并重新打开新的窗口。
除了购物篮中的可视化操作外,还有就是商品购入事件(即在网上商店的点击购买的事件)。现在我们称这些事件是用来触发购物篮中的工作模式,在每次的触发模式时,都有一个传递的数值变量通过来判断触发的是哪个工作模块。下面详细介绍购物篮(check.asp)各工作模式的具体实现:
1)Add模式(购买添加)
用户点击他想购买的商品的"订购"链接时,通过调用函数OpenBag()来打开页面check.asp,"订购"链接把有关商品信息的资料字符传到check.asp,如下例:
functionopenbag(id){
window.open("check.asp?cpbm="+id,"","height=200,width=600,left=190,top=0,resizable=yes,scrollbars=yes,status=no,toolbar=no,menubar=no,location=no");}
在该触发事件触发时,执行check.asp,
对购物车执行了这次添加后,大部分其余的ASP代码就不再执行,因为它应用于其他的工作模式,模式的选择都是采用IF语句来实现的,而每次check.asp只会在一个模式下工作的。
2)Record模式(更新数量)
该模式用于顾客项购买多件货物时,自动重新计算所需的货物总价格。用户以用它马上看到改过的数量后的结果。
如下面的语句:
Sum=0
WhileNotrs.EOF
Quatity=CInt(Request("Q_"&rs("Product_Id")))
IfQuatity<=0Then
Quatity=CInt(Session(rs("Product_Id")))
IfQuatity<=0ThenQuatity=1endif
EndIf
Session(rs("Product_Id"))=Quatity
Sum=Sum+ccur(rs("P_NewPrice"))*Quatity
在输入文本框中时,该程序将对其输入的值进行判断,是否是数字的字符,以避免存储出错,造成不必要的麻烦。其判断函数如下(采用Javascript脚本语言编写):
//功能介绍:检查是否为数字
//参数说明:要检查的数字
//返回值:1为是数字,0为不是数字
functionfucCheckNUM(NUM)
{
vari,j,strTemp;
strTemp="0123456789";
if(NUM.length==0)
return0
for(i=0;i
=1then
ifrs("userid")=request.form("uid")then
Response.Redirect"messagebox.asp?msg=此用户名已经注册过,请选用其他用户名!"
response.end
rs.close
endif
endif
之后进入用户详细资料登记的页面(Reg_User_OK.asp):
另外还将调用页面Reg_User_2.asp,它将使用大量的Javascript的语言开发的程序,用来检查用户填入字符的正确性。其主要的程序看后面源程序代码,详细的介绍各程序单元所完成的功能和作用。
在用户登记个人的详细资料时,仍然使用ASP中的Recordset的对象,对数据库进行添加的操作,其方法如下:
rs.addnew
rs("UserId")=request.form("uid")
rs("PassWD")=request.form("pwd")
rs("WtPass")=request.form("question")
rs("DaPass")=request.form("answer")
rs("Name")=request.form("Name")
rs("Sex")=request.form("Sex")
rs("Email")=request.form("Email")
rs("Phone")=request.form("usephone")
rs("Address")=request.form("haddr")
rs("Zip")=request.form("postcode")
rs.update
%>
<%
setrs_detail=server.createobject("adodb.recordset")
sqltext2="select*fromRegUserwhereUserId='"&request.form("uid")&"'"
rs_detail.opensqltext2,conn,1,1
申请成功后进入提示界面,告诉用户已经申请成功。
5.1.3商品查询
首先在主页面default.asp中实现以商品大类方式的查询:
WhileNotrs_class_1.EOF
setrs_class_2=server.createobject("adodb.recordset")
sqltext3="select*fromClass_2whereClass_1_Name='"&rs_class_1("Class_1_Name")&"'"
rs_class_2.opensqltext3,conn,1,1
如果在文本输入框中输入了商品名称,则调用执行ProductSearch.asp:
ProductClass_2=request("ProductClass_2")
setrs=server.createobject("adodb.recordset")
sqltext="select*fromProduct"
ifrequest("Product_Name")<>""then
sqltext=sqltext&"whereProduct_Namelike'%"&request("Product_Name")&"%'"
else
sqltext=sqltext&"whereProduct_Namelike'%"&""&"%'"
endif
ifrequest("Product_Class")<>""then
sqltext=sqltext&"andClass_1like'%"&request("Product_Class")&"%'"
endif
rs.opensqltext,conn,1,1
5.1.4订单查询
Form_ID=Request.form("Form_Id")
IFSession("LoginSuccess")=""Then
response.redirect"FindOrderLogin.asp"
Else
setRs3=Server.CreateObject("ADODB.recordset")
sql3="select*fromOrderListwhereForm_Id="&Form_Id&""
rs3.opensql3,conn,1,1
IFrs3.RecordCount>=1then
IFSession("LoginSuccess")=rs3("User_Id")Then
查询成功的页面:
在这里,如果查询的不是属于当前用户自己的订单,则返回出错信息:
response.redirect"messagebox.asp?msg=您不能查看不属于您的订单,请重新输入您自己的订单号!"
5.2后台管理端
后台管理的功能主要包括:商品的添加、商品的审查、订单的处理、发或的查询、会员的审查以及管理员的添加和审查。
5.2.1商品的添加
商品的添加功能是通过三个步骤来实现的:商品大类添加、商品小类的添加、商品的添加。
(1)大类添加
functionFORM1_onsubmit()
{
if(document.FORM1.class_name.value.length<1)
{
alert("您必须输入商品大类名称!");
document.FORM1.class_name.focus();
returnfalse;
}
sqltext="select*fromClass_1whereClass_1_name='"&request.form("class_name")&"'"
rs.opensqltext,conn,1,1
'查找数据库,检查商品大类是否已经存在
ifrs.recordcount>=1then
ifrs("Class_1_name")=request.form("class_name")then
Response.Redirect"messagebox.asp?msg=此商品大类已经存在,请选用其它名称!"
response.end
rs.close
endif
endif
setrs=server.createobject("adodb.recordset")
sqltext="select*fromClass_1"
rs.opensqltext,conn,3,3
'添加一个商品大类到数据库
rs.addnew
rs("Class_1_name")=request.form("class_name")
rs.update
<%
setrs_detail=server.createobject("adodb.recordset")
sqltext2="select*fromClass_1whereClass_1_name='"&request.form("class_name")&"'"
rs_detail.opensqltext2,conn,1,1
%>
大类添加页面:
(2)小类添加
functionFORM1_onsubmit()
{
if(document.FORM1.class_2_name.value.length<1)
{
alert("您必须输入商品小类名称!");
document.FORM1.class_2_name.focus();
returnfalse;
}
setrs=server.createobject("adodb.recordset")
sqltext="select*fromClass_2whereClass_2_name='"&request.form("class_2_name")&"'andClass_1_name='"&request.form("class_1_name")&"'"
rs.opensqltext,conn,1,1
'查找数据库,检查商品小类是否已经存在
ifrs.recordcount>=1then
ifrs("Class_2_name")=request.form("class_2_name")then
Response.Redirect"messagebox.asp?msg=此商品小类已经存在,请选用其它名称!"
response.end
rs.close
endif
endif
setrs=server.createobject("adodb.recordset")
sqltext="select*fromClass_2"
rs.opensqltext,conn,3,3
'添加一个商品小类到数据库
rs.addnew
rs("Class_2_name")=request.form("class_2_name")
rs("Class_1_name")=request.form("class_1_name")
rs.update
setrs_detail=server.createobject("adodb.recordset")
sqltext2="select*fromClass_2whereClass_2_name='"&request.form("class_2_name")&"'andClass_1_name='"&request.form("class_1_name")&"'"
上一篇:ASP网上售房管理系统(论文和程序)
下一篇:关于广告设计人才培养模式研究