ASP基于bs在线花店系统设计(源代码+论文)
收藏
资源目录
压缩包内文档预览:(预览前20页/共51页)
编号:438688
类型:共享资源
大小:7.13MB
格式:RAR
上传时间:2015-06-03
上传人:小***
认证信息
个人认证
林**(实名认证)
福建
IP属地:福建
20
积分
- 关 键 词:
-
asp
基于
bs
在线
花店
系统
设计
源代码
论文
- 资源描述:
-
ASP基于bs在线花店系统设计(源代码+论文),asp,基于,bs,在线,花店,系统,设计,源代码,论文
- 内容简介:
-
名称代码数量阿勒泰 ALT 1安庆 AQG 1鞍山 ANS 2澳门 MFM 2蚌埠 BUF 2包头 BAV 7宝鸡 BAJ 1保定 BAD 2北戴河 BEI 4北海 BHY 7北京 PEK 305本溪 BEN 2滨州市 BIN 1沧州 CAG 1长春 CGQ 20长葛市 SGE 1长沙 CHS 25常德 CHD 2常熟 CSU 2常州 CZX 4常子 CZY 1潮州 CAO 1郴州 CHZ 1成都 CTU 49承德 CHE 5慈溪市 CXS 1大理 DL 4大连 DLC 56大庆 DQN 2大同 DT 4丹东 DAD 3德阳 DEY 1德州市 TEH 1登封 DF 1东莞市 DON 9东营市 DOY 1都江堰 DJY 1敦煌 DNH 8峨嵋山 EMS 2防城港 FCL 1佛山 FS 3福州 FOC 19抚顺 FUS 2阜阳 FY 1赣州 GZO 1格尔木 GRM 1广安市 GAN 1广州 CAN 104贵阳 KWE 12桂林 KWL 24哈尔滨 HRB 32哈密 HAM 1海城市 HC 1海口 HAK 17海拉尔 HAI 3邯郸 HDN 1韩城 HAC 1杭州 HGH 46合肥 HFE 14和田 HTN 2菏泽市 HEZ 2衡阳 HYN 3呼和浩特 HOU 14呼伦贝尔 HLE 2葫芦岛市 HUL 1淮北 HBE 1淮阴 HYI 2黄山 HSS 16黄石市 HUA 1黄岩 HY 1辉县 HX 1惠州市 HUI 2吉林 JIL 6济南 TNA 23济宁市 JNS 1佳木斯 JMS 1嘉兴 JXI 2嘉峪关 JUG 2建德 JAD 1江都 JD 1江阴 JIA 1金华市 JIN 2锦州 JZH 2晋江市 JIJ 2景德镇 JDZ 2九江 JJI 2九寨沟市 JZG 1喀什 KHG 5开封 KF 2克拉玛依 KLMY 2库车 KCA 1库尔勒 KEL 2库尔勒 KRL 3昆明 KMG 32昆山 KSH 2拉萨 LXA 4莱芜市 LAW 1兰州 LHW 10廊坊 LAN 2乐山 LES 2丽江 LIJ 5丽水市 LIS 1连云港 LYG 2聊城 LIA 1临汾 LF 1临海 LHA 2临沂 LIY 3柳州 LZH 4庐山 LUS 1洛阳 LYA 7马鞍山 MAS 1满州里 MAN 1茂名市 MAO 1眉山 MES 1绵阳 MIN 3牡丹江 MUD 4内江 NAJ 1南昌 KHN 10南海市 NAH 1南京 NKG 29南宁 NNG 10南通 NTG 2南阳 NY 1宁波 NGB 20盘锦市 PAJ 1蓬莱市 PEL 1邳州 PIZ 1莆田 PUT 1濮阳 PY 1齐齐哈尔 QQH 3秦皇岛 SHP 10青岛 TAO 37清江 QIJ 1琼海市 QIH 2曲阜 QFU 2泉州 QUA 3日照市 RIZ 2瑞安 RIA 3三门峡市 SMXS 1三水市 SAN 3三亚 SYX 39汕头 SWA 6上海 SHA 146上饶 SRO 1韶关 SHG 2绍兴 SHX 3深圳 SZX 62沈阳 SHE 29嵊州 SHN 1十堰 SHI 1什邡市 SHF 1石家庄 SJW 12石狮 SSS 2寿光市 SGS 1顺德 SHU 2苏州 SZV 13塔里木 TAR 1台州市 TAZ 5太仓市 TCS 1太原 TAI 20泰安市 TA 3唐山 TSH 4天津 TSN 28吐鲁番 TLF 2威海市 WEH 18潍坊市 WEF 3温州 WNZ 17乌鲁木齐 URC 23无锡 WUX 20芜湖 WH 2五台县 WTX 2武汉 WUH 33武夷山市 WYSS 6西安 SIA 35西宁 XNN 7西双版纳 JHG 3锡林浩特 XLG 1厦门 XMN 31咸阳 XIY 2香港 HKG 61香格里拉 XGL 1湘潭 XIA 1襄樊 XAN 5新加坡 SJP 1新乡 XIX 2信阳 XIN 1邢台 XIG 1徐州 XZH 3许昌 XUH 2烟台 YNT 12延安 YANN 1延吉 YAB 5盐城 YAC 1扬州 YZO 9阳江市 YAN 1宜宾 YIB 1宜昌 YCH 9宜兴 YIX 3义乌 YIU 3益阳 CYY 1银川 INC 6营口市 YEK 1榆次市 YUC 2玉林 YUL 1岳阳 YY 2运城市 YC 3枣庄市 ZAO 1湛江市 ZHA 2张家港 ZJG 2张家界市 ZJJS 6张掖市 ZY 1漳州 ZHH 1肇庆 ZQ 3镇江 ZJI 2郑州 ZHZ 19中山市 ZHO 2重庆 CHO 22舟山市 ZHS 3株洲 ZHU 2珠海 ZUH 22淄博市 ZIB 2自贡 ZIG 1遵义市 ZYS 1总计:2018一、在 线 花 店1二、特 色 突 破2三、 系 统 概 述23.1系统设计23.1.1 系统功能与应用背景23.1.2 系统浏览33.1.3 系统特点33.2 系统设计和架构43.2.1 系统设计思想43.2.2 系统结构设计4系统功能模块细分53.2.3服务器和ASP运作环境配置53.3数据库的设计、生成与配置73.3.1 数据库需求分析83.3.2数据库概念结构设计83.3.3数据库逻辑结构设计113.4公用模块的编写153.4.1数据库连接文件153.4.2页面头文件223.4.3页面尾文件233.5前台界面设计与实现273.5.1首页设计273.5.2产品详细信息323.5.3我的购物车页面设计363.5.4结帐处理393.5.5用户注册的设计与实现473.5.6订单查询48四、 结 论50五、致 谢51六、参考文献52一、在 线 花 店再线花店系统将传统的花店经营管理模式与计算机网络的综合经营管理模式结合在一起。将人、机、物的需求、活动和运作进行系统分析、设计并管理,一实现现代高效、科学且安全的电子商务。本例通过一个在线花店的实例来介绍ASP与Access数据库结合开发的小型电子商务系统的过程。在系统设计时。从传统花店的经营模式,网上用户需求与业务经营模式,计算机网络管理、系统设计等几方面综合分析,定义系统的输入、输出、实现功能、系统运作能力、系统安全性、系统可维护性等各项需求。其中数据库采用Access,动态网页开发采用ASP,综合应用了ADO、数据库设计、密码、身份验证和缓存等技术。二、特 色 突 破网上花店系统适合在线销售鲜花、礼品等,具有商品多属性检索(支持多重属性分类)、购物车、订单提交和查询等网上花店所需的基本功能。 本系统采用ASP编写,在Windows的IIS的支持下运行。为了提高系统的效率,使用户浏览时候响应速度更快,本实例后台采用了缓存技术。三、 系 统 概 述3.1系统设计3.1.1 系统功能与应用背景互联网以前所未有的速度发展,成为与报纸、广播、电视相比肩的第四媒体,同时正以其更捷的信息传输形式改变这人们的消费模式,利用简单、快界、低成本的电子通信方式,买卖双方不谋面就可以进行各种商贸活动,走向商业的互联网已经成为网络经济的大势所趋。眼下电子商务网站正如雨后春笋般大量涌现,企业网络化已经一种时尚。电子商务的发展可能大家都已经耳濡目染,上网的朋友对这已经不再陌生,电子商务确确实实出现在我们周围。本系统是一个在线花店系统,具有在线先手鲜花的基本功能。同过配置,可以作为一个实际应用的鲜花销售网站。本系统是为传统经营的花店构建网上销售渠道而开发的。本例中的在线花店重要完成的功能如下。l 鲜花产品选购(可按分类方式查找鲜花种类或通过关键字进行查询)l 购物车功能l 查看鲜花详细情况l 用户注册l 用户登陆l 查看用户的订单信息l 用户评论3.1.2 系统浏览图 3-1 是用户访问网站的第一个界面,也是本系统的主界面。用户通过这个主界面可以浏览网站各个分类页面,浏览推荐商品和查看分类属性页等。 图 3-1 网站的首页3.1.3 系统特点本章所介绍的实例具有以下特点。(1)页面模块化本系统在界面设计上都采用了模块化处理思想,把很多页面功用部分集成一个模块,例如页面的头、尾和导航条,这样在开发是遇到这些相似的页面部分,就不需要重新编写,只要重用这部分即可,大大提高了开发效率。(2)缓存技术把产品导航信息放到内存中缓存起来,大大提高了网站效率和响应速度。 3.2 系统设计和架构3.2.1 系统设计思想 电子上午发展已经有10多年的历史了,在中国很多人对电子商务也逐渐接受和认可。网上购物作为依仗时尚很多人去体会,更有部分人把购物同逛商场等显示社会服务一样作为生活的一部分。鲜花作为生活的点缀,也越来越为生活所需要。这种网上买卖鲜花的交易越来越多,也逐渐被广大消费者所接受。本系统是一个相对简单的基本应用系统,主要满足传统的花店运营需要,将自己的销售渠道扩展到网上,通过简单的管理,提供给最终消费者产品的展现、购物、订单处理等一实现鲜花在线销售。通过本系统可以管理简单的在线销售模式、满足用户随时查询产品信息,随时下单购物的应用需求。由于本系统考虑到产品的适应性、安全性和访问效率,所以,在系统平台多样性、技术先进性、功能适应性和灵活性等方面都有考虑,使系统相对完善,具有更好的学习价值。本实例把页面中一些常用的部分集成为模块,例如页面的头和尾部,这样设计新的页面如果有重复出现的部分,只需要那现成的模块来组装就可以了。3.2.2 系统结构设计本实例由Web服务器为最终用户提供展现服务和为管理员提供管理服务;用数据库保存产品、用户和订单等信息。系统结构如图3-2所示数据库Web服务器管理员用户系统用户系统用户系统图 3-2 系统结构图系统功能模块细分(1)用户管理模块管理用户登录、用户注册和用户修改等用户信息的基本功能,与一般电子商务的用户管理系统基本相同。(2)产品信息模块陈列产品的详细信息(3)导航分类检索模块按不同分类和不同应用导航产品,把相关产品列出。(4)购物车处理模块通过cookie技术实现购物车。用户选者产品后,点击“购买”进入购物页面,陈列要购买的产品明细项。(5)用户选择产品完毕,通过购物页面到订单结帐页面,填写必要的信息,产生最终订单;还提供订单查询功能。3.2.3服务器和ASP运作环境配置1软件准备本章实例的数据库管理软件采用Access,安装Office的时候便会附带安装Access如果读者机器上没有安装Access,请准备Office软件;Web服务采用IIS,IIS的安装请参考1.3.4节。2.IIS的配置IIS默认的Web(主页)文件存放于系统根区的“%system%inetpu/wwwroot”中。这里简单介绍IIS配置虚拟目录的过程。在“控制面板”,双击“管理工具”,在“管人站点”,然后用鼠标右键单击“默认网站”。从弹出的快捷菜单中选择【新建】【虚拟目录】,如图3-3所示弹出如图3-4所示的“虚拟目录别名”对话框。 图3-4指定虚拟目录别名在如图3-4所示对话框中填写虚拟目录别名,例如“Ivzhi”然后单击【下一步】按钮,弹出如图3-5所示的“网站内容目录”对话框。 图3-5 选择实际目录在图3-5所示对话框中,单击【浏览】按钮为该虚拟目录选择一个实际目录(例如)“c:www”),然后单击【下一步】按钮,最后单击【完成】按钮,这样名为“Ivzhii”的虚拟目录就创建好了。在实际开发时,所有页面都放到“c:www”下,访问时从浏览器输入“http:/localhost/Ivzhi/index.asp”,该访问“c:www”下的“index.asp”页面 3.3数据库的设计、生成与配置信息管理系统离不开数据库,它保存系统用到的数据。本系统的数据库主要用来保存用户、订单、产品等信息,所以数据库主要用到的表有:用户表、订单表、产品表和分类导航4类表。设计数据库系统时应该先充分了解各个方面的需求,根据需求决定数据库结构。3.3.1 数据库需求分析简单来说系统有3个对象:用户、消化产品和订单。用户浏览鲜花产品,并且在需要的时候下订单。各这些信息提供增加、修改、保存、更新和查询,这就要求数据库结构能从粉满足这些信息的输出和输入。收集基本数据、数据结构及数据处理的流程,组合一份尽的数据字典,为程序设计打下基础。系统需求积累用户资源,用用户表来记录用户的信息,具体包括用户的真名、地址、电话、邮编、身份证号、E-mail和密码等基本信息。网站要给用户展现产品,把鲜花产品的详细信息介绍给用户,需要产品信息表,具体包括产品名称、各类属性和所属分类等。网站是电子商务网站,最终目的是为用户服务,使用户浏览查后有购买的欲望,进行购买行为。订单类表格记录用户的购买行为,需要记录购买的产品信息,付款人的信息,收款人的信息,下单时间等。为了方便用户的查找,提高网站的服务质量,对产品进行不同的属性导航,一个鲜花产品分可以包含不同的属性,方便用户的查找,促进用户的消费,实现网站的价值,对具体查的属性进行分类,实现属性导航表,包括产品属性分类,产品对应产品属性的对应表。通过上述系统功能分析,针对一般的在线花店的需求,包括如下数据表。l 网站用户信息表,包括数据项、用户ID、用户代号等。l 采购订单表,包括数据项、订单ID、付款人姓名、付款人电话等。l 订单明细表,包括数据项、订单明细编号、产品ID、订单ID等。l 产品表,包括数据项、产品ID、产品代码、产品名称等。l 用户评论表,包括数据项、ID评论内容、用户名称等。l 目录属性表,包括数据项、目录编号名字、目录编号等。l 导航属性字典表,包括数据项、导航ID数字类型ID、文本类型ID。l 产品导航属性对应表,包括数据项、导航类型ID、导航名称等。3.3.2数据库概念结构设计得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这些实体包括各种具体信息,通过相互之间的作用形成数据的流动。本实例设计规划出的实体包括网站用户实体、采购订单明细实体、产品实体、用户评论实体、目录信息实体、目录属性实体、导航属性实体、查导航属性对应关系实体。图3-6为实体间关系的E-R图用户评论用户订单订单明细产品导航属性对应表导航字典产品目录信息目录属性图3-6 实体关系E-R图图3-7为网络用户实体E-R图。图3-8为采购订单的实体E-R图。用户用户ID用户代码用户口令用户电话订单付款人姓名产品ID付款人电话用户代号 图3-7网站用户实体E-R图 图3-8采购订单实体E-R图图3-9为订单明细实体E-R图。图3-10为产品实体E-R图。订单明细产品订单ID产品ID产品数量产品价格产品ID产品目录ID产品名称产品价格 图3-9订单明细实体E-R图 图3-10产品实体E-R图图3-11为用户评论实体E-R图。 图3-12为目录信息实体E-R图产品论评目录信息评论ID评论内容用户ID产品ID目录代号备注目录名称图3-11 用户评论实体E-R图 图3-12目录信息实体E-R图图3-13为目录属性实体E-R图。 图3-14为导航属性字典实体E-R图。目录属性导航属性字典目录属性代号目录名称所属目录信息代号导航属性ID导航属性名称对应目录属性DI图3-13 目录属性实体E-R图 图3-14导航属性字典实体E-R图图3-15为产品导航属性对应关系E-R图产品导航属性对应关系产品性目录属性ID 图3-15 产品导航属性对应关系E-R图3.3.3数据库逻辑结构设计数据库的概念结构设计完毕后,现在可以将上面的数据库概念结构转化为某种数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。本章实例系统采用Access数据库,因此在设计本章实例系统数据库概念结构时,需要遵循Access数据库的语法结构。在线花店系统中各个表的设计结果如下面表格所示。每个表格表示在数据库中的一个表,表3-1为用户表,记录某个用户的信息。字段名称数据类型说明autoid自动编码主键,递增,用户在网站的标识userid文本类型用户IDpwd文本类型用户口令sex文本类型性别:1男,0女realname文本类型真实姓名personid文本类型用户身份怔mobile文本类型手机号码phone文本类型固定电话lasttime日期类型修改时间:第一次就是注册时间adrress文本类型用户地址email文本类型邮编表3-1中autoid是用户网站惟一标识,Useid是在用户注册时自己选择的名字,其他是拥护需要的属性。表3-2为产品信息列表,记录花店现有的产品信息。字段名称数据类型说明autoid自动编写主键,递增,产品在网站的标识code文本类型产品代码,惟一标识,网站自己定义的字符串name文本类型产品名称description备注类型产品描述marketprice货币类型市场价格saleprice货币类型销售价格myimageurl文本类型图片地址status数字类型产品状态,是不销售:0销售,1停止销售category文本类型产品种类lasttime日期类型修改时间:第一次就是增加时间priority数字类型排序用的优先级别memberprice货币类型会员价格netimageurlsmall文本类型网络小图片地址netimageurlmid文本类型网络中图片地址netimageurlbigsign文本类型网络大图片地址sign数字类型标志是否特价产品表3-2中Autoid是产品在网站的惟一标识,在数据增加是自动生成,category是对应目录表的分类字符串。表3-3中目录信息表,记录花店的分类信息。 表3-3 directory目录信息表字段名称数据类型说明code文本类型目录代码,惟一标识一个目录name文本类型目录名称memo文本类型备注表3-3中目录用字符串分级表示,产品的种类对应目录代码。表3-4为订单信息表,记录花店的订单信息。 表3-4 myorder订单信息表字段名称数据类型说明autoid自动编码主键,递增,订单在网站的标识payname文本类型付款人姓名payphone文本类型付款人电话payemail文本类型付款人E-mailpayaddress货币类型付款人地址senddate日期类型送货时间paymemo文本类型付款人备注paytime日期类型支付时间lasttime日期类型修改时间:第一次就是增加时间recname文本类型收款人姓名recnick文本类型收款人称呼recphone文本类型收款人电话recaddress文本类型收款人地址recmemo文本类型收款人备注recemaie文本类型收款人邮编recsay文本类型留言sendfee货币类型送货费sendarea数字类型送货地区totalpay货币类型总价realpay货币类型实际价格orderpass文本类型订单密码userid文本类型用户IDorderstatus文本类型订单状态comefrom数字类型来源,是否从合作网站来的表3-4中的autoid是订单在网站的惟一表识,数据增加是自动生成,category是对应目录表的分类字符串。订单的付款人一般是网站的会员,收款人可以是自己,也可以是自己的朋友,所以对这两方面信息分开进行记录。表3-5为订单名细表,极力花店定单具体购买的产品信息。 表3-5 orderitem订单明细表字段名称数据类型说明autoid自动编码惟一标识用户采购的一个产品productid数字类型产品IDproductname文本类型产品名称productprice货币类型成品价格quantity数字类型数量orderid数字类型订单ID订单明细表和订单表是多对一的关系,就是一张订单可以有多个产品。表3-6为目录性表,记录花店目录的属性。 表3-6 directoryproperty目录属性表字段名称数据类型说明autoid自动编码目录属性代码,惟一标识一个目录属性name文本类型目录属性名字directorycode文本类型属于那个目录目录属性是为了更好的导航产品,目录的产品有不同的属性,比如鲜花的用途、花材、对象等属性。表3-7为导航属性字典表,记录花店目录的属性值。 表3-7 navigationdict导航属性字典表字段名称数据类型说明autoid自动编码惟一标识一个导航属性directoryproperty数字类型对应目录属性的IDdirectoryvalue文本类型导航属性名称导航属性字典对应表3-6目录属性表的auotid字段,换种说法就是目录有什么属性,属性具体对应什么值。比如鲜花目录的用途属性有恋情、生日、友情、祝福、婚庆、商务等不同的用途。表3-8为产品导航属性对应表,记录花店产品对应的不同属性。 表3-8 navigationrelation 产品导航属性对应表字段名称数据类型说明productid数字类型产品IDnavigationid数字类型对应目录属性的ID一个产品可以对应多个导航属性,最终用户可以根据不同的属性浏览产品,方便用户查找产品。表3-9为用户评论表,记录用户对产品的评论。 表3-9comment 用户评论表字段名称数据类型说明autoid自动编码评论IDcomment备注类型评论内容nckname文本类型用户名称repiy备注类型管理答复内容status识字类型是否显示email文本类型邮件userautoid数字类型用户IDproductid数字类型产品IDlasttime数字类型对应目录属性ID表3-9记录用户对查的评论,userautoid为0客人,不是网站用户。3.4公用模块的编写3.4.1数据库连接文件把数据库连接操作作封状在一个页面Commondb.asp中,以方便其他页面调用。例程3-1为Commondb.asp页面的参考代码。 例程3-1 数据库连接页面commondb.asp 例程3-1定义了两个常量myDatabase和mydblocation,其中m,yDatabase为数据库名称,mydblocation为数据库存放位置,如果需要修改数据库存放位置和名称,就修改myDatabase和mydblocation这2个变量的值。例程3-1中引入了页面allcommon,asp,allcommon,asp页面中定义了数据库连接的操作函数,例程3-2为这些函数定义的参考代码。 例呈3-2 allcommon.asp定义的数据库公用函数代码 打开数据库 最顶级函数% Debug MessageSub Debug (msg)response.write msg & end sub get ComeFrom Cookiefunction getComeFromCookie()dim retret=Request.Cookies(comefrom)if (comefrom=null) thenret=end ifgetComeFromCookie=retend functionconst myCookieKey=lvzhiconst myUseCookies=noSub SetSess (field, value)If myUseCookiesYes then Session(field)=valueelse Response.cookies(myCookiekey) (field)=valueend if end subSub ProcessAccessOpen(connection)dim strconnstrconn = provider=microsoft.jet.oledb.4.0;persist security info=false;data source= & Server.MapPath( mydblocation & myDatabase & .mdb)Set connection = Server.CreateObject(ADODB.Connection)on error resume nextconnection.open strConnIf connection.errors.count 0 thenSetSess Openerror, Open Messages & connection.errors(0).description & & GetSess(dbc)elseSetSess Openerror,end ifEnd Sub main database open for shopSub ShopOpenDataBase (connection) ProcessAccessOpen connectionend sub close database Sub CloseRecordSet (irs)irs.closeset irs=nothingend sub*Sub ShopCloseDatabase (connection)on error resume nextconnection.closeset connection=nothingEnd subdisable property 对应的产品列表sub disableListFlower(property,value)dim retdim mynameif (property=0) thenmyname=List &property & Felsemyname=List &property & F &valueend ifApplication(myname)=end subList property 对应的产品列表function GetListFlower(property,value)dim retdim mynameif (property=0) thenmyname=List &property & Felsemyname=List &property & F &valueend ifret=Application(myname)if (ret=) thenret=GetListFlowerFromDB(property,value)Application(myname)=retend ifGetListFlower=retend functionList property 对应的产品列表 从数据库function GetListFlowerFromDb(property,value)Dim ret,dbc,query,rs,myconditionshopopendatabase dbcquery = select result from navigateresult mycondition=where sort=0 and property=&property & and value=&valuequery=query & myconditionset rs = dbc.execute(query)ret= if not rs.EOF thenret=CStr(rs(result)end ifcloserecordset rsshopclosedatabase dbcGetListFlowerFromDb=retend functiondir 对应的产品列表function GetDirProduct(dir)dim retif (dir =null or dir=) thendir=end ifdim dirnamedirname=dir & dirret=Application(dirname)if (ret=) thenret=GetDirProductFromDB(dir)Application(dirname)=retend ifGetDirProduct=retend functiondir 对应的产品列表,从数据库读出function GetDirProductFromDB(dir)dim retDim dbc,query,rsshopopendatabase dbcif (dir=) then 读出所有产品query = select autoid from product order by priorityelsequery = select autoid from product where Left(category,+Cstr(len(dir)+)=&dir&end ifset rs = dbc.execute(query)ret= Do WHILE not rs.EOFif (ret=) thenret=CStr(rs(autoid)elseret=ret+,+CStr(rs(autoid)end ifrs.movenext Loopcloserecordset rsshopclosedatabase dbcGetDirProductFromDb=retend function产品类定义Class Productpublic name,autoid,saleprice,Desc,marketPrice,vipPrice,netImageSmall,netImageMid,netImageBigEnd Class得到对应的产品function GetProduct(ID)dim retif (ID =null or ID=) thenID=1end ifdim productnameproductname=P & IDret=Application(productname)if ( not IsArray(ret) thenret=GetProductFromDB(ID)Application(productname)=retend ifGetProduct=Application(productname)end function得到对应的产品sub disableProduct(ID)dim retif (ID =null or ID=) thenID=1end ifdim productnameproductname=P & IDApplication(productname)=end sub对应的产品,从数据库读出dim FIELDAUTOID,FIELDNAME,FIELDSALEPRICE,FIELDDESC,FIELDMARKETPRICEdim FIELDVIPPRICE,FIELDNETIMAGESMALL,FIELDNETIMAGEMID,FIELDNETIMAGEBIG,FIELDCODEFIELDAUTOID=0FIELDNAME=1FIELDSALEPRICE=2FIELDDESC=3FIELDMARKETPRICE=4FIELDVIPPRICE=5FIELDNETIMAGESMALL=6FIELDNETIMAGEMID=7FIELDNETIMAGEBIG=8FIELDCODE=9function GetProductFromDB(ID)dim ret(10)Dim dbc,query,rsshopopendatabase dbcquery = select * from product where autoid=&IDset rs = dbc.execute(query) if not rs.EOF thenret(FIELDAUTOID)=rs(autoid)ret(FIELDNAME)=rs(name)ret(FIELDSALEPRICE)=rs(saleprice)ret(FIELDDESC)=rs(description)ret(FIELDMARKETPRICE)=rs(marketprice)ret(FIELDVIPPRICE)=rs(memberprice)ret(FIELDNETIMAGESMALL)=rs(myimageurl)ret(FIELDNETIMAGEMID)=rs(myimageurl)ret(FIELDNETIMAGEBIG)=rs(myimageurl)ret(FIELDNETIMAGESMALL)=rs(netimageurlsmall)ret(FIELDNETIMAGEMID)=rs(netimageurlmid)ret(FIELDNETIMAGEBIG)=rs(netimageurlbig)ret(FIELDCODE)=rs(code)elseret(FIELDAUTOID)=-1end ifcloserecordset rsshopclosedatabase dbcGetProductFromDB=retend function% 3.4.2页面头文件为了实现代码复用,把头文件设计成公用模块,单独保存为一个文件,其他页面应用的时候只要包含这个头文件就可以了。 头文件中主要放置网站标志和各个2级频道,保存成HTML文件格式,放置到文件夹inc/下,文件名称为top.html.这样其他页面只要应用,就可以使其他页面具有风格统一的“头”。 图3-16 网站头文件预览果图3.4.3页面尾文件和页头一样,我们把版权声明等信息保存在尾文件bottom.html中,本实例的尾部文件预览果如图3-17所示。3.5.1 用户登录判断用户登录判定一般由两个页面组成,页面login.asp提供表单让用户输入用户名和密码,当用户单击页面中【登录】按钮时,把用户名、密码提交到另一个页面userlogindo.asp,由userlogindo.asp页面作具体的登录处理。Login.asp就是一个简单的包含表单的HTML页面,并引入公用头尾文件,不过login.asp需要用到javascipt验证表单,防止用户输入空信息。图3-18为网站登录页面login.asp.的预览效果。例程3-3为login.asp页面中表单验证的javascript代码。 例程3-3 javascript校验代码 function userloginsubmit() var flag=false; if(document.loginForm.USERID.value=null| document.loginForm.USERID.value=) alert(请输入您的用户名!); document.loginForm.USERID.focus(); flag=true; if(document.loginForm.PASS.value=null| document.loginForm.PASS.value=) alert(请输入密码!); if (flag=false) document.loginForm.PASS.focus(); flag=true; if(flag=false) document.loginForm.submit(); return false; function userloginkeydown() if (window.event.keyCode=13) userloginsubmit(); function userloginuserid() if (window.event.keyCode=13) document.loginForm.PASS.focus(); 在例程3-3中函数userloginsubmit()主要在用户单击【登录】按钮的时候验证用户输入的用户名、密码是否为空。函数userloginkeydown(),主要完成当用户按回车键时,提交表单,也就时说当用户输入用户名、密码后单击【登录】按钮或者按回车键都会提交表单。实现这个功能是为了用户界面友好,方便最终用户的使用。函数userloginuserid()主要完成当用户输入完用户名按回车时,焦点跳到输入密码的文本框中。Userlogindo.asp主要完成用户登录的判定,把用户登录信息更新数据库和session等,例程3-4为页面Uselogindo.asp登录代码。 例程 3-4 Userlogindo.asp 登录代码 %dim dbc, urldim forwardURLdim strpassword, returnurlstrPassword=Request(strPassword)stremail=request(stremail)strpassword=replace(strpassword,=,)stremail=replace(stremail,=,)stremail=replace(stremail,)strpassword=replace(strpassword,)returnurl=request(returnurl)if strEmail= then sError = sError & 请输入Emailend ifif strPassword= then sError = sError & 请输入口令end ifIf sError= then RetrieveLoginDataelse Serror= 请登录 & & Serrorend ifsetsess Loginerror,Serror Setupreturnurl urlResponse.redirect urlSub RetrieveLogindataDim fieldvalueIf GetSess(Login)= then SetSess Login,Forceend ifLocateCustomer strLastName, stremail , strpasswordIf strCustomerID then LngLoginCount=lngLoginCount+1 UpdateCustomerSessionData UpdateLoginData SetSess Login,strlastname SetSess realname,strlastname Else SError = SError & getlang(langLoginLocateFail) SetSess Login, end ifShopCloseDatabase dbcset rs=nothingend subSub UpdateLoginDataDim dbcon error resume nextOpenCustomerDB dbcresponse.write Login count & lngLoginCountsql = update customers set sql = sql & logincount= & lnglogincountsql = sql & ,lastlogindate= & date() & sql = sql & ,lastlogindate= & datedelimit(date() )sql = sql & where contactid= & strcustomeriddbc.execute(sql)ShopCloseDatabase dbcend sub determine where to go toSub SetupReturnurl (url)if returnurl then if Serror= then url=returnurl exit sub else url=UserLogin.asp end if exit subend if If Getsess(Followonurl)= and getsess(Currenturl)= then If Serror= then url=getconfig(xhome) else url=UserLogin.asp end if exit sub end if If Serror= then url=GetSess(FollowonURL)else url=getSess(CurrentURL)end ifend sub% 3.5前台界面设计与实现3.5.1首页设计一般的电子商务网站,首页所含的信息量是非常大的,为了方便维护,对首页进行分块处理,然后用包含的方式,把各个块组装起来,这样不仅使页面结构清晰,而且维护方便。例程3-5为首页的参考代码。 例程3-5 用户首页代码 3.6.1 产品浏览页面Dir.asp和页面list.asp的实现类试,这里只介绍list.asp页面实现的核心部分。例程3-6为页面ist.aspl的开始部分代码。 图3-19 鲜花分类的目录式检索浏览页面 例程3-6 list.asp页面开始部分代码 在例程3-6中pagenum定义每页显示的产品数量,默认显示16个鲜花产品。!_ _#includefile=”commondb.asp”_ _引入commondb.asp公用文件。从例程3-6可以看出当产品个数大于16的时候,就需要显示在下一页,因此需要实现产品的分页显示,例程3-7为list.asp产品分页显示的代码。 例程3-7 list.asp产品分野显示的代码 UBound(aryReturn) thenendelment=UBound(aryReturn)end ifdim strSplitPage,allpageallpage=CInt(UBound(aryReturn)-LBound(aryReturn)/pagenum-0.5) +1strSplitPage=&nPage&/&allpage& 页dim startShow,endShow,nextShowif (n5)allpage) thenendShow=allpageelseendShow=nPage+5end ifdim kFor k=startShow To endShowdim showoneshowone=&k& strSplitPage=strSplitPage&showoneNextif (nPage1) thennextShow=上一页 end ifnextShow=nextShow&if (nPageallpage) thennextShow=nextShow&下一页 end if% 0 Thenif (n mod 4)=0) then response.write end if% % if (n mod 4)=3) then response.write end ifn=n+1end ifNext% 例程3-8为list.asp显示产品的代码。 例程3-8 list.asp显示产品的代码0 Thenif (n mod 4)=0) then response.write end if% % if (n mod 4)=3) then response.write end ifn=n+1end ifNext% 例程3-9为页面listone.asp的参考代码。 例程3-9 页面listone.asp 的参考代码 a href=Detail.asp?id= target=_blank img alt=鲜花 border=0 height=80 src= width=80 销售价格:元a href=javascript:add2cart() 例程3-9中one是在例程3-8中调用Getproduct()方法得到的一个产品对象(one=Getproduct(aryreturn(i),one(FIELDNAME)等是获得产品的名称等属性。3.5.2产品详细信息用户在产品浏览页面中单击某个产品,就会进入产品的详细信息页面,产品详细页面主要包含两部分内容:一部分是产品信息显示:另一部分是针对该产品的用户评论。图3-20为产品详细信息页面。 图3-20 产品信息页面产品信息页面的实现文件问Detail.asp,例程3-10为Detail.asp页面的参考代码。 例程3-10 Detail.asp页面的参考代码 例程3-10中利用包含文件来显示单个产品的纤细信息;利用包含来显示针对该产品的所有评论信息。在页面中Detailone.asp先调用Getproduct方法得到产品对象,如例程3-11所示/ 例程3-11 调用Getproduct方法得到产品对象 % Dim one One=Getproduct (productid) If one(FIELDAYTOID) 在例程3-11得到产品对象后,然后调用类似one(DIELDNAME)方法便可以得到产品名称等属性然后结合HTML控制便可以得到图3-10所示的效果。主页面主要包含头、尾文件。经过处理得到产品ID,如果没有就跳转到系统首页。Commentone.asp页面主要显示用户针对该产品的所有评论,例程3-12为Commentone.asp页面实现的参考代码。 例程3-12 Commentone.asp页面实现的参考代码 % dim dbc,rs,query shopopendatabase dbc query = select TOP 10 * from comment where productid = & productid & order by lasttime desc set rs = dbc.execute(query) dim content,ptime,pren,preply dim n n=0 Do WHILE not rs.EOF and n %if (preply) then % 答复: 例程3-12中的query = select TOP 10 * from comment where productid = & productid & order by lasttime desc语句,是从数据库comment表中得到相关产品的最后增加的前10条评论(按时间倒顺序排列,然后取前10条)。3.5.3我的购物车页面设计我的购物车页面主要暂存用户选择的预购买的产品,图3-21为购物车页面。. 图3-21 购物车页面Cart.asp购物车页面代码如例程3-13所示。 例程3-13 cart.asp购物车页面代码 %dim myactiondim cartstr,cartnumstrDimMyProductArray(20), MyNumArray(20),totalnum,MyProductArrayTmp,MyNumArrayTmpcartstr = getCartFromCookie()cartnumstr=getCartNumFromCookie()if (cartstr=NULL or cartstr =) thencartstr =end ifif (cartnumstr=NULL or cartnumstr =) thencartnumstr =end ifMyProductArrayTmp = Split(cartstr, ,-1,1) MyNumArrayTmp = Split(cartnumstr, ,-1,1) response.write cartstr= & cartstr &response.write cartnumstr= & cartnumstr &response.write UBound(MyProductArrayTmp)= &UBound(MyProductArrayTmp) &response.write LBound(MyProductArrayTmp)= &LBound(MyProductArrayTmp) &response.write UBound(MyNumArrayTmp= &UBound(MyNumArrayTmp) &response.write LBound(MyNumArrayTmp)= &LBound(MyNumArrayTmp) &If(UBound(MyProductArrayTmp)UBound(MyNumArrayTmp)or LBound(MyProductArrayTmp)LBound(MyNumArrayTmp) thencartstr =cartnumstr =setCartToCookie cartstr,cartnumstr,0,0MyProductArrayTmp = Split(cartstr, ,-1,1) MyNumArrayTmp = Split(cartnumstr, ,-1,1) end ifdim nFor n =LBound(MyProductArrayTmp) to UBound(MyProductArrayTmp)MyProductArray(n)=MyProductArrayTmp(n)MyNumArray(n)=MyNumArrayTmp(n)Nexttotalnum=getCartTotalNumFromCookie()if (totalnum=NULL or totalnum=) thentotalnum=0end ifmyaction=request(myaction)dim productidif (myaction=add) thenproductid=request(productid)if (IsValid(productid) thenif (cartstr=NULL or cartstr =) thencartstr=productidcartnumstr=1MyProductArray(0)=productidMyNumArray(0)=1totalnum=1elseDim i,IsExistIsExist=falseFor i = 0 to CInt(totalnum)-1if (MyProductArray(i) =productid) thenIsExist=trueexit forend if if (IsExist=true) thenMyNumArray(i)=MyNumArray(i)+1cartnumstr=For i = 0 to CInt(totalnum)-1if (cartnumstr=) thencartnumstr=CStr(MyNumArray(0)elsecartnumstr=CStr(cartnumstr)+,+CStr(MyNumArray(i)end ifNextelsecartstr=CStr(cartstr)+,+CStr(productid)cartnumstr=cartnumstr+,1MyProductArray(totalnum)=productidMyNumArray(totalnum)=1totalnum=totalnum+1end ifend ifsetCartToCookie cartstr,cartnumstr,totalnum,0response.redirect(cart.asp)response.endelseresponse.write 增加的产品id不合法!end ifelse if(myaction=del) thenproductid=request(productid)if (IsValid(productid) thencartstr=cartnumstr=For i = 0 to CInt(totalnum)-1if (productidMyProductArray(i) thenif (cartnumstr=) thencartstr=CStr(MyProductArray(i)cartnumstr=CStr(MyNumArray(i)endcartstr=cartstr+,+CStr(MyProductArray(i)cartnumstr=CStr(cartnumstr)+,+CStr(MyNumArray(i)end ifend ifNextend ifelse if(myaction=update) thencartstr=updateelseend ifend ifend ifsetCartToCookie cartstr,cartnumstr,totalnum,0ShowCart(yes)% 3.5.4结帐处理 当用户把产品放进购物车中,单击“结帐”按钮时,需要显示结帐页面,结帐页面如图3-22所示。结帐页面对应的文件是check.asp.从图3-22可以看出,在结帐页面需要先显示用户决定购买的产品信息,然后提供表单让用户输入姓名,选择送货的时间等。 图3-22 网站结帐页面例程3-14为结帐页面表单的参考代码 例程3-14 结帐页面表单的参考代码 %dim cartstrcartstr = getCartFromCookie()if (cartstr=NULL or cartstr =) thenresponse.redirect Cart.aspresponse.endend ifdim payName,payPhone,payEmail,payAddressif (session(userautoid)绿植鲜花玩具礼品店TD FONT-SIZE: 12px; FONT-FAMILY: 宋体 function setReceiverFormVisible(vGet) if(vGet=1)document.all.receiverinfo_form.style.display=none;elsedocument.all.receiverinfo_form.style.display=blockfunction checkinput()var payName=document.mymainform.MypayName.value;if (payName=)alert(付款人名称不能为空!);document.mymainform.MypayName.focus();eturn false;var payPhone=document.mymainform.payPhone.value;if (payPhone=)alert(付款人电话不能为空!);document.mymainform.payPhone.focus();eturn false;f(document.mymainform.myrec2.checked=true)var recName=document.mymainform.recName.value;if (recName=)alert(收货人名称不能为空!);document.mymainform.recName.focus();eturn false;var recPhone=document.mymainform.recPhone.value;f (recPhone=)alert(收货人电话不能为空!);document.mymainform.recPhone.focus();return false;return true; 付款人信息(姓名,电话必填项,客服确认后收款发货) 付款人收货(付款与收货同一个人) 其他人收货(付款送给其他人) 您的姓名: input type=text id=MypayName name=MypayName size=20 maxlength=40 value= 联系电话: input type=text id=payPhone name=payPhone size=20 maxlength=40 value= 邮箱Email: input type=text id=payName name=payEmail size=20 maxlength=40 value= 详细地址: input type=text id=payName name=payAddress size=20 maxlength=40 value= 送货时间: 1 2 3 4 5 6 7 8 9 10 11 12 月 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31日 (最好提前1天预定,当天加急配送的,请电话13910250117确定)document.mymainform.sendMonth.selectedIndex=document.mymainform.sendDay.selectedIndex= 特定说明: 其他人收货(选择其他人收货时候显示这栏内容)0) then% 你曾经送过的朋友: 1 2 % 当用户填写完表单,单击“确定并提交”按钮时需要对用户输入的信息进行验证,以确保用户输入信息都是有效的。例程3-15为表单验证的javascript源代码。 例程3-15 表单验证的javascript源代码 function setReceiverFormVisible(vGet) if(vGet=1) document.all.receiverinfo_form.style.display=none; else document.all.receiverinfo_form.style.display=block; function checkinput()var payName=document.mymainform.MypayName.value;if (payName=)alert(付款人名称不能为空!);document.mymainform.MypayName.focus();return false;var payPhone=document.mymainform.payPhone.value;if (payPhone=)alert(付款人电话不能为空!);document.mymainform.payPhone.focus();return false;if(document.mymainform.myrec2.checked=true)var recName=document.mymainform.recName.value;if (recName=)alert(收货人名称不能为空!);document.mymainform.recName.focus();return false;var recPhone=document.mymainform.recPhone.value;if (recPhone=)alert(收货人电话不能为空!);document.mymainform.recPhone.focus();return false;return true; 3.5.5用户注册的设计与实现 用户注册页面,首先提供一个供用户输入注册信息的表单,当用户提交表单信息的时候,由另一个页面去完成注册。本实例提供注册表单的页面是reg.asp,完成具
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。