4.2 数据库结构设计 本系统数据库设计表的原则是:“One Fact in One Place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。包含:系统管理员信息(admin)、商品大类(BigClass)、商品信息(Bill)、商品缺货信息(InShort)、代理信息(Member)、非代理购买者信息(NoneMember)、定单信息(Orders)、已出售商品信息(Sold)和商品存货信息(Stock)。具体表项设计如下: 内容来自www.paper51.com
1. 系统管理员信息(admin)(如表1) 内容来自www.paper51.com 表1系统管理员信息(admin) http://www.paper51.com 2. 商品大类(BigClass)(如表2) paper51.com 表2商品大类(BigClass) 内容来自www.paper51.com 3. 商品信息(Bill)(如表3) http://www.paper51.com
表3商品信息(Bill) 内容来自论文无忧网 www.paper51.com
http://www.paper51.com
4. 商品缺货信息(InShort)(如表4) paper51.com 表4商品缺货信息(InShort) paper51.com 5. 代理信息(Member)(如表5) paper51.com 表5代理信息(Member) copyright paper51.com 6. 非代理购买者信息(NoneMember)(如表6) http://www.paper51.com 表6非代理购买者信息(NoneMember) http://www.paper51.com 7. 定单信息(Orders)(如表7) 内容来自论文无忧网 www.paper51.com 表7定单信息(Orders) http://www.paper51.com 8. 已出售商品信息(Sold)(如表8) copyright paper51.com 表8已出售商品信息(Sold) 内容来自www.paper51.com
9. 商品存货信息(Stock)(如表9) http://www.paper51.com 表9商品存货信息(Stock) copyright paper51.com
copyright paper51.com 数据库各表之间的关系(如图2) 内容来自www.paper51.com 图1 数据库各表间的关系 内容来自论文无忧网 www.paper51.com 4.3 数据库连接 copyright paper51.com
该数据库使用的是Access OLE Db驱动程序。据微软表示,Access OLE Db驱动程序的效率比ODBC驱动程序高。 http://www.paper51.com 数据库连接主要代码为: 内容来自论文无忧网 www.paper51.com
setconn=server.createobject("adodb.connection") copyright paper51.com DBPath =Server.MapPath("./data/data.asa") 内容来自论文无忧网 www.paper51.com conn.open"provider=microsoft.jet.oledb.4.0;data source=" & dbpath 内容来自论文无忧网 www.paper51.com 5 系统模块设计与分析5.1 系统总体流程 http://www.paper51.com
系统开发的主要任务是实现点拉的网上交易。本系统包括后台管理模块、代理注册登陆模块及商品交易模块三个模块。总体流程(如图2) 内容来自论文无忧网 www.paper51.com 图2 系统总体流程图 http://www.paper51.com 5.2 后台管理模块 内容来自论文无忧网 www.paper51.com 后台管理模块实现11个功能,包括:添加商品(BillAdd.asp)、类别管理(M_Class.asp)、库存查看(M_Stock.asp)、系统设置(M_admin.asp)、订单管理(M_Order.asp)、缺货信息(M_InShort.asp)、已售商品(M_Sold.asp)、代理审核(M_Reg.asp)、代理查看(M_Agent.asp)、商品管理(M_Bill.asp)、退出系统(M_Exit.asp)。这是后台管理的主体。如图3: 内容来自www.paper51.com 图3后台管理模块 内容来自论文无忧网 www.paper51.com 其中重要的两项功能流程图为: paper51.com
paper51.com
图4商品添加流程图 图5库存管理流程图 copyright paper51.com 商品添加的关键代码为: copyright paper51.com ifnot isNumeric(BigClassID) or not isNumeric(BillID) or CardNo="" orPin="" then copyright paper51.com EchoMes "商品类别/商品名称/卡号/密码不能为空" paper51.com end if 商品添加时检查商品信息是否填写完整。 paper51.com
if Session("Sql") then copyright paper51.com Sql="Insert Into Stock(BigClassID,BillID,CardNo,Pin,AddTime,Lock) Values (" & BigClassID&"," & BillID &",'" & CardNo&"','" & Pin &"','" & Now &"',False)" 内容来自www.paper51.com Else 内容来自论文无忧网 www.paper51.com Sql="Insert Into Stock(BigClassID,BillID,CardNo,Pin,AddTime,Lock) Values (" & BigClassID&"," & BillID &",'" & CardNo&"','" & Pin &"',Now,False)" 内容来自论文无忧网 www.paper51.com end if 判断Session("Sql"),并由判断结果向数据库中插入数据。 http://www.paper51.com conn.Execute(Sql) 内容来自论文无忧网 www.paper51.com Response.write "<scriptlanguage=javascript>alert('新卡添加成功');</script>" http://www.paper51.com
显示新卡添加成功。 http://www.paper51.com 库存管理关键代码为: copyright paper51.com
ifisNumeric(ClassID) then 判断ClassID是否为数字。 内容来自论文无忧网 www.paper51.com
Sql="Select *from Stock Where BigClassID=" & ClassID http://www.paper51.com Else 从数据库中取出大类ID为ClassID的记录。 内容来自www.paper51.com Sql="Select *from Stock Order By BigClassID,BillID" copyright paper51.com end if 从数据库Stock表中取出全部记录。 paper51.com 5.3 代理注册登陆模块 http://www.paper51.com 代理注册登陆模块实现了2个功能:代理注册(AgentSave.asp)和代理登陆(BuyCard.asp)如图6,其流程图如图7及图8。 paper51.com 图6 代理注册登陆模块 paper51.com
paper51.com 图7代理注册流程图 图8代理登陆流程图 paper51.com 代理注册关键代码: http://www.paper51.com Sql="Insertinto Member (UserName, [PassWord], Name, IDNumber, Province, City, Tel,Email, TotalMoney,RegTime,RegIp,Ver) Values 内容来自论文无忧网 www.paper51.com
Sql=Sql & "('" & UserName& "','" & PassWord & "','" & Name &"','" & IDNumber &"','" & Province &"','" & City & "','" & Tel 内容来自www.paper51.com Sql=Sql &"','" & Email & "', 0, Now (),'" & Request ("REMOTE_Addr")&"',False)" http://www.paper51.com 以上代码为添加新的代理信息。 内容来自www.paper51.com
代理登陆关键代码: paper51.com if AgentName<>"" and AgentPassword<>""then 判断是否输入代理人用户名和密码 内容来自www.paper51.com ifNot Session("Member") then paper51.com Sql="Select * fromMember Where UserName='" & AgentName &"' and Password='"& AgentPassword & "' and Ver" copyright paper51.com Else 内容来自www.paper51.com Sql="Select* from Member Where id=" & Session ("MemberID") 内容来自www.paper51.com end if 判断Session("Member"),以建立适合的数据库查询语言 http://www.paper51.com Set Rs=conn.Execute(Sql) 内容来自www.paper51.com
if Rs.eof then copyright paper51.com EchoMes"错误的用户名/密码或您的申请未通过审核" http://www.paper51.com end if 判断记录集Rs是否为空,为空则显示以上内容 paper51.com Session("Member")=True 假如记录集不为空则登陆成功,用Session 内容来自www.paper51.com Session("MemberID")=Rs("ID") 记录下该用户的信息。 http://www.paper51.com end if copyright paper51.com
5.4 商品交易模块 内容来自论文无忧网 www.paper51.com 商品交易模块实现了3个功能:填写并提交商品交易信息(BugCard.asp)、确认交易信息(BuyCardStep2.asp)和获取商品交易成功(Payend.asp)。如图9。 copyright paper51.com
图9商品交易模块 内容来自论文无忧网 www.paper51.com 填写并提交商品交易信息流程图及交易信息流程图如下: 内容来自论文无忧网 www.paper51.com 图10 填写并提交商品交易信息流程图 图11 确认交易信息流程图 copyright paper51.com
关键代码有: copyright paper51.com
function Next(form){ copyright paper51.com
if(!checkNull(form.Name,"姓名"))return false; 假如填写姓名为空,变返回false copyright paper51.com if(!checkNull(form.IDNumber,"身份证"))return false; 内容来自论文无忧网 www.paper51.com 假如填写身份证为空,变返回false http://www.paper51.com
if (form.IDNumber.value.length<15|| form.IDNumber.value.length>18) { paper51.com
alert("错误的身份证编号!"); copyright paper51.com
假如所填写的身份证少于15位或者多于18位,返回错误 paper51.com form.IDNumber.focus(); paper51.com return false; http://www.paper51.com } http://www.paper51.com
if(!checkNull(form.Province,"省价"))return false; 判断是否填写省份 内容来自论文无忧网 www.paper51.com if(!checkNull(form.City,"所在城市"))return false; 判断是否填写所在城市 内容来自论文无忧网 www.paper51.com if(!checkNull(form.tel,"电话"))return false; 判断是否填写电话 copyright paper51.com if (!(form.Email,"Email")) return false; 判断是否填写电子邮箱地址 内容来自www.paper51.com if(form.Email.value.indexOf("@")<=0) { http://www.paper51.com alert("请输入正确的Email地址"); 内容来自论文无忧网 www.paper51.com form.Email.focus(); 判断电子邮箱地址的格式是否正确 http://www.paper51.com returnfalse; 内容来自www.paper51.com } 内容来自www.paper51.com form.action="BuyCardStep2.asp"; 表单提交给BuyCardStep2.asp paper51.com form.submit();} 内容来自www.paper51.com 获取商品,交易完成流程图如下: 内容来自论文无忧网 www.paper51.com
图12 获取商品,交易完成流程图 内容来自www.paper51.com
关键代码如下: paper51.com
if OrderRs("Over")=True then 内容来自www.paper51.com Response.write "<b><fontcolor=#ff0000>错误:</font></b>交易重复处理!" paper51.com Response.end 判断此次交易是否为重复交易,True则显示错误 copyright paper51.com ElseIf OrderRs("AdminPay")=falsethen paper51.com Sql="Update Orders Set Status='处理中' Where OrderNo='" & OrderNo &"'" http://www.paper51.com Conn.Execute(Sql) 判断数据库中AdminPay值,false则令Status='处理中' http://www.paper51.com
ElseIf OrderRs("AdminPay")=Truethen http://www.paper51.com
Sql="Update Orders SetOver=True,Status='交易成功' Where OrderNo='" &OrderNo & "'" 内容来自www.paper51.com Conn.Execute(Sql) 内容来自论文无忧网 www.paper51.com 判断数据库中AdminPay值,True则Over=True,Status='交易成功' http://www.paper51.com
End if 内容来自www.paper51.com 6 系统测试 copyright paper51.com 软件设计完成后并不是结束,由于人会因为各种各样的原因而犯各种错误,因此测试成为软件系统开发中重要的一环。测试的内容包括功能测试、性能测试、可用性测试、客户端兼容性测试、安全测试等。 内容来自论文无忧网 www.paper51.com
|