ASP+SQL SERVER2000电子商城系统,若图片无法显示请联系站长QQ3710167
摘 要
电子商城系统是建立在Internet网上进行商务活动的虚拟网络空间和保障商务顺利运营的管理环境;是协调、整合信息流、物质流、资金流有序、关联、高效流动的重要场所。企业、商家可充分利用电子商城提供的网络基础设施、支付平台、安全平台、管理平台等共享资源有效地、低成本地开展自己的商业活动。
《电子商城系统》正是为此而设计的,该系统是运用Microsoft SQL SERVER 2000数据库系统和ASP.NET(C#)程序语言开发实现的,《电子商城系统》包括了等八大模块,具有操作简单、界面友善、灵活性好、系统安全性高、运行稳定等特点,是电子商务的理想选择。
本文简要介绍了《电子商城系统》的项目背景和意义,着重阐述了该系统开发实现过程,从系统的需求分析、方案论证、模块设计、数据设计、详细设计到系统测试等各个环节都进行了详尽的分析和描述。
关键词: 电子商城,B2C ,SQL,ASP.NET
Abstract
Electronic Shopping Mall System set up in Internet carrying on fictitious cyberspace of commercial activity and ensuring management environmenting that commercial affairing run smoothly at the network; A important place that coordinate , combine information flow , material flowing , in order , relation of the funds , flow high-efficiently. Enterprises, the trade company can fully exploit the network infrastructure offered by electronic store , payment platform , security platform,, management platform,etc. shared resource effectively, the low cost launches one's own business activity
《Electronic Shopping Mall System》is just designed for the occasion, it is developed and carried out by using Microsoft SQL Server 2000 database system and ASP.NET(C#) programming language, it include eight modules——foreground reception subsystem、foreground accounting subsystem、booking subsystem、housekeeping subsystem、telephone charging administration subsystem、manager enquire subsystem、night audit subsystem、VIP management subsystem, it has many features——simple operation、friendly interface、good flexibility、high system safety、stable performance, this is the best choice for the e - commerce
This paper has introduced the project background and meaning of 《Electrical Shopping Mall System》 briefly , has explained emphatically that should develop the course of realizing systematically , from systematic demand analysis , scheme demonstration, module design , data design, it reach such all link as system testing ,etc. go on exhaustive analysis and description to design in detail.
Keywords:Electronic Shopping Mall System,B2C,SQL,ASP.NET
目 录
第一章 前言... 6
1.1 课题的项目背景... 6
1.2 课题的现实意义... 6
第二章 综述... 7
2.1 电子商务发展历史... 7
2.2国外电子商务系统发展状况... 8
2.3国内电子商务发展趋势... 12
2.6 电子商务前景展望与对策建议... 17
第三章 系统需求分析... 18
3.1 系统目标... 18
3.2 概述... 18
3.3管理服务系统... 19
3.3.1 用户管理子系统... 20
3.3.2 商家管理子系统... 21
3.3.3 商城管理子系统... 23
3.3.4 物流公司管理子系统... 24
3.3.5 订单管理子系统... 26
3.3.6 购物管理子系统... 27
3.3.7统计管理子系统... 28
3.3.8计费结算管理子系统... 30
3.3.9接口管理子系统... 32
3.5公共服务系统... 32
3.5.1、电子公告牌服务... 32
3.5.2、资讯服务... 33
3.5.3商城导购服务... 33
3.5.4求购信息发布系统... 33
3.5.5广告系统... 34
3.6支持子系统... 34
3.6.1 邮件系统... 34
3.6.2 站内通信系统... 35
3.6.3 无线应用系统... 35
第四章 方案论证... 35
4.1 系统架构... 35
4.1.1 MVC三层体系结构基本概念... 41
4.1.2系统架构描述... 41
4.2 开发工具选择... 43
4.2.1 Visual Studio 2003. 43
4.2.2 Dreamweaver MX. 44
4.2.3 Rose. 44
4.2.4 Visio. 45
4.3 数据库平台选择... 45
第五章 总体设计... 48
5.1 系统模块设计... 48
5.1.1 用户管理模块... 48
5.1.2 商家管理模块... 49
5.1.3 商城管理模块... 50
5.1.4 物流公司管理模块... 51
5.1.5 订单管理模块... 52
5.1.6 购物管理模块... 53
5.1.7 统计管理模块... 56
5.1.8计费结算管理模块... 56
5.1.9接口模块... 56
5.2 数据结构设计... 57
5.2.1 系统数据库ER图... 57
5.2.2 系统数据表结构... 61
5.2.3 项目进度计划... 72
第六章 详细设计... 73
6.1用户管理模块... 73
6.1.1用户登陆... 73
6.1.2客户登记注册模块... 78
6.1.3相关类库:client.cs 82
6.2商家管理模块... 94
6.3商城管理模块... 107
6.3.1商城产品目录配置... 107
6.3.2 商城产品目录控件... 109
6.3.3商城产品展现... 112
6.3.4 数据库备份与还原... 119
6.3.5相关类库... 120
6.4物流公司管理模块... 126
6.4.1 物流公司注册管理... 126
6.4.2 收单管理... 128
6.4.3相关类库... 128
6.5定单管理模块... 131
6.5.1定单生成... 131
6.5.2定单查询... 133
6.5.3相关类库... 133
6.6购物管理模块... 133
6.6.1购物流程控制管理... 133
6.6.2购物车实现... 142
6.7统计管理模块... 147
6.7.1在线用户统计管理... 147
6.8计费结算管理模块... 148
6.8.1计费方式管理... 148
6.8.2结算... 149
6.8.3相关类库... 149
6.9接口模块... 149
6.9.1安全服务接口管理... 149
6.9.2支付服务接口管理... 149
6.10公共服务系统... 150
6.10.1电子公告牌服务... 150
6.10.2资讯服务... 150
6.10.3商城导购服务... 152
6.10.4求购信息发布系统... 156
6.10.5广告系统... 165
6.11支持子系统... 169
6.11.1邮件系统... 169
6.11.2站内通信系统... 173
6.11.3无线应用系统... 173
第七章 系统配置... 173
7.1对硬件设备的规定... 173
7.2运行所需的支持软件的规定... 174
7.3系统配置过程... 174
第八章 测试及性能分析... 175
8.1 功能测试... 175
8.2 系统测试... 175
8.3 性能分析... 175
8.4 改进意见... 175
结束语... 176
致谢... 176
参考文献... 177
第一章 前言
1.1 课题的项目背景
电子商务建设的最终目的是发展业务和应用。目前Internet网上商家不少,但由于缺乏相应的安全保障、支付手段和管理机制,一方面网上商家以一种无序的方式发展,造成重复建设和资源浪费;另一方面商家业务发展比较低级,很多业务仅以浏览为主,需通过网外的方式完成资金流和物流,不能充分利用Internet网无时空限制的优势。
因此有必要建立一个业务发展框架系统,规范网上业务的开展,提供完善的网络资源、安全保障、安全的网上支付和有效的管理机制,有效地实现资源共享,实现真正的电子商务。
1.2 课题的现实意义
电子商城系统的建设,可以建立起电子商务服务的门户站点,是现实社会到网络社会的真正体现,为广大网上商家以及网络客户提供一个符合中国国情的电子商务网上生存环境和商业运作空间。
电子商城系统是建立在Internet网上进行商务活动的虚拟网络空间和保障商务顺利运营的管理环境;是协调、整合信息流、物质流、资金流有序、关联、高效流动的重要场所。企业、商家可充分利用电子商城提供的网络基础设施、支付平台、安全平台、管理平台等共享资源有效地、低成本地开展自己的商业活动。
电子商城的建设,不仅仅是初级网上购物的实现,它能够有效地在Internet上构架安全的和易于扩展的业务框架体系,实现B To B(企业对企业)、B To C(企业对用户)以及C To C(用户到用户)等应用环境,推动电子商务在中国的发展。
第二章 综述
近年来我国电子商务发展非常迅速。在加入WTO后,市场将更加开放,企业导入电子商务的比例将持续增加,中国将成为电子商务在全球发展最快,潜力最大的地区之一。
2.1 电子商务发展历史
自从互联网诞生以来,越来越多的企业“触网”,随着技术的进步和时代的发展,企业电子商务经过了几个历程。 第一阶段,黄页型yellow page,互联网提供企业或产品黄页,取代了传统的传播介质,与之相比,它的优势在于使用方便,内容新,多,传播范围广,获得成本低,直到现在,这种服务依然受到市场的欢迎,生命力极强。 第二阶段,广告型pamphlet,取代了传统的企业介绍画册,增加了多媒体内容,信息量更大,作用相当于一个广告,同时为企业和消费者建立了平等的沟通渠道,由于成本低廉,更多受到小企业的欢迎,拉近了小企业和消费者的距离,降低了小企业和大企业竞争的资本。 第三阶段,销售型sale,取代传统的销售方式,一些适合在网上销售的产品开始向互联网转移,主要是出于减少流通环节和降低经营成本的考虑,同时因为互联网具有其他销售方式不可比拟的优势,集成了前两个阶段的功能,消费者和企业都更加乐意接受,最先采纳这种销售方式的是原有的邮购商品,大大降低了经营成本,使之成为最快获利的商业网站。当前国内互联网企业主要处于这个发展阶段,如B2C,B2B等,但就目前来说,还不能说“取代”传统的销售方式,只是提供了更多选择罢了。企业在研究网络销售模式的时候,往往忽略的一点是产品是否适合网络销售,它和传统的销售方式是什么关系?互补型(互不影响)?竞争型(此消彼长)?增强型(共同促进)?举例来说,一般计算机产品和CD是属于增强型,快餐属于互补型,药品属于竞争型,这是由商品的特性所决定的,企业必须处理好各种关系。美国不少计算机公司在开始采取网络销售的初期,都曾经受到经销商的抵触,如DELL,COMPAQ,CISCO,HP等,可是现在经销商从网络销售也获得了经济利益,COMPAQ还宣称找到了一条共同发展的最好途径。 第四阶段,整合型integrated,前面几个阶段着重于外向型商务平台,其实内部电子商务从简单的计算机文字处理时代就已经存在了,财务管理,库存管理,人事管理,决策管理等企业应用层软件一直没有停止过网络化的步骤。随着服务器系统管理软件功能的强大,为了节约成本,越来越多的企业采用了整合型的方案,从产品销售,招聘,招商引资,企业宣传,售后服务,技术支持,合作意向等,凡是可以公开的内容,都上网了,从消费者,员工,经销商,零售商,供应商,直到管理者,根据不同的角色和权限,可以浏览各种相关的内容,进行各种各样的活动,如咨询,采购,面试,组织会议,发布消息,采访等等,只要登录一台服务器。这时候,电子商务才真正成为一个企业应用平台,这不再是一个现在所谓的人机交互式的平台,而是人与人沟通的平台。消费者可以上网向值班的技术支持咨询,经销商可以上网了解生产进度,供应商可以上网和采购主管洽谈业务,这些客户不需要了解他的接触对象身在何处,也许在办公室,也可能在家,甚至可能在度假,也就产生了虚拟的概念,大部分都是通过网络会议技术实现的,员工每天第一件事情就是登录网络,在家办公也就成为可能。 第五阶段,在线生产在线消费Produce Online & Consume Online—POCO,其实这种方式现在就已经存在,只不过它仅仅存在一些特殊商品上,人们忽略罢了。如:软件,多媒体应用如电视,广播,电子图书,远程教育,远程医疗,咨询,报关,交税,金融业务等,这是电子商务化程度的最高形式。个人认为这是电子商务网站最快开始盈利的模式,只不过由于一些技术性问题阻碍了它的发展,如版权,稳定的带宽,网络安全,信用等,所以我们必须尽快过渡到这种盈利模式。也许有的企业认为,我是种水稻的,怎么可能POCO呢?这实际上是长期以来受实物经济束缚的结果,一直以来企业通过实物的形式实现价值,实物销售在企业获得的利润占很大比重,但是在新经济条件下,高附加价值的产品越来越多,产品本身的作用越来越来淡化。同样一个汉堡,在麦当老就可以卖9块,在其他地方只能卖6块,关键在于产品包含的附加价值不一样。销售水稻表面上看似乎就是销售一种粮食,聪明的企业会选择销售健康,销售环保,消费者通过网络接受到企业想传播的信息,了解了他们的产品,购买产品实际就购买了健康和环保,企业的价值也就实现了。
2.2国外电子商务系统发展状况
1、北美的现状
2、亚洲电子商务发展状况
3、日本推崇电子商务
4、韩国电子商务
1、北美的现状
目前美国和加拿大共有约4000多万Internet用户,占总人口的20%多。目前,Intern et网站的数量约有2000万个。在1996年1月,网站数量仅有约20万个;到1996年底,网站数量增加了约十倍达到200万个;1997年仍然保持了这个速率。主干网的速率为622M,有9个大节点。每个节点下挂几个一级ISP(Internet Service Provider),每个一级ISP下,又挂几个二级ISP,直至最终用户。用户的速率一般是56Kbps或33.6Kbps/28.8Kbps。现在有些地方已开始使用Cable
Modem,速度达500Kbps,许多地方已开始试用ADSL,速度达1.5Mbps。每个月用户要交给ISP的费用大约为15加元(相当于人民币90元),而且不限制通信量,服务很好,大部分ISP声称24小时×7天的技术支持。ISP出口到上一级ISP的速率一般为一根或多根T3(45Mbps)或T1(1.5Mbps)。一根T1线包月大约5000元人民币,一般标准是挂300个左右的终端用户。
大体上讲,Internet的发展,从近年起有了爆炸性的发展,应用面遍及各行各业。纵观美国Internet的历史及展望未来,笔者认为,从Internet的应用角度看,可分为三大阶段。
第一阶段,电子邮件阶段。这个阶段可以认为从70年代开始,平均的通信量以每年几倍的速度增长。比如,笔者在1996年发了大约200个电子邮件,1997年则有约1000个电子邮件。
第二阶段,信息发布阶段。从1995年起,以Web技术为代表的信息发布系统,爆炸式地成长起来,成为目前Internet的主要应用。
第三阶段,EC(Electronic Commerce),即电子商务阶段。EC在美国也才刚刚开始。之所以把EC列为一个划时代的东西,笔者认为,是因为
Internet的最终主要商业用途,就是电子商务。同时反过来也可以很肯定地说,若干年后的商业信息,主要是通过Internet传递。Internet即将成为我们这个商业信息社会的神经系统。
三个阶段开始的三个应用都正在以惊人的速度高速扩张中。电子邮件已经在很大程度上取代着目前的信件、一定程度上的电话和传真;信息发布功能已经取代了一部分的报纸、电台、电视台的新闻发布功能,几乎所有重要的报纸都有了免费的电子版本供查阅。许多日常工作,尤其是情况信息的搜集,通过一个鼠标短时间内就可以完成,免去了出差、长途电话、传真、邮寄等过去是必须的动作,这些已经产生了不可估量的社会效益。
由于Internet对社会资源的巨大发挥和节约,美国政府在促进Internet的普及和发展上,不遗余力,总统、副总统亲自上阵。比如,在Internet商业活动还不充分时,政府出钱使Internet免费运行,直至近年在Internet走上轨道,能自行良性快速发展壮大时为止;还规定美国政府的各个部门1997年必须在Internet上购买不少于450万件的商品,把指标分散开来,分配到政府各地和各部门,以培养在Internet上购物的习惯和环境。1997年5月份,克林顿公布了一个政策,即Internet-Tax-Free-Zone(Internet免税区),即在全球范围内,通过Internet网所购、销的商品不加税,包括关税和商业税。这个政策已得到加拿大、日本、欧洲等国的不同程度的支持。所以,Internet免税区,可能将成为世界上最大的自由贸易区,意义极其宽广和深远。
总而言之,在美国和加拿大,一场历史上最重要的技术革命--以Internet为纲的信息技术革命,正在席卷社会的每一个角落,而且其变革的速度之快,其影响之大,其涉及面之广,无可比拟。
2、亚洲电子商务发展状况
新加坡企业调查揭示:亚洲电子商务发展不容小觑
作为最具高回报及商业机会的区域,亚洲电子商务发展一直受到信息技术和商界人士的关心。1993年至1996年,亚洲Internet网站数目激增137%。有调查预测,到2001年,亚洲国家应用电子商务的贸易额将达300亿美元。由此可见,亚洲地区电子商务的发展不容小觑。
以新加坡为例,Price Waterhouse曾于1998年进行一项专题调查,访问了83家主要的商业组织,调查结果显示电子商务的应用主要围绕电子交易和市场推广,其中尤以电子数据交换(EDI)和网上广告为主。而电子邮件及网站是它们在Internet上宣传的主要工具。另外,网上智能卡缴款及电子转账服务也正在成为公司下一个信息技术发展项目。可见,从数据往来至交易程序都将以Internet为平台,电子商务的应用范围值得关注。
各行业趋向网上销售网上EDI逐渐普及 事实上,迈入1999年,网上银行服务(Internet Banking)已成为业界不可或缺的服务,不少大银行不但有网站,而且还提供网上转账和查询账户的功能。而零售及娱乐事业也大量应用网站从事订购服务,如大型超级市场、花店、唱片公司等。在商务方面,贸易商也利用Internet进行交易及报关工作,使Internet EDI活动逐渐成为工商业的信息科技应用趋势,并取代传统的EDI网络和服务。与此同时,金融投资也正在向网上电子交易发展,这有助于简化交易程序及增加市场信息透明度。
调查发现,公司发展电子商务是为了提高客户服务及竞争力,而以增加收入为目的者只有20%弱。再者,大多数公司还不知道发展电子商务的成本,而且20%的公司认为需要10万~50万美元。
用EDI未必会降低成本但可以提高工作效率 在网站上提供服务及产品信息,无疑有助于客户方便地掌握更多的资料。而电子商务的最大优点,就是提高工作效率及突破时间和地区界限。至于成本降低及收入增加与否,就要看应用电子商务的策略和营运之道。但有一点可以肯定:服务素质及效率必能高出同行。在成本方面,从专业角度评估,应该在13万~15万美元以下,因为其中的软、硬件和人手其实可沿用现有的部分资源,关键是要有一个熟悉电子商务的专业人员带领,使之可灵活运用信息技术及人力资源发展网上业务。
最大的开支是系统维护。有意发展电子商务的公司值得注意的是,大部分公司认为维护及后勤系统是电子商务的最大开支,其次便是保安措施。事实上,调查结果证明了这一看法的正确性,电子商务依赖网站服务器甚至需要公司的Intranet相配合,涉及的软硬件不少,而除了硬件的保养成本外,维持网站运行的人力及管理资源和不断的服务改善工程也是一笔主要的花销。 因此,在进行电子商务前,项目管理者、供应商和管理层应有充分的沟通,并且做好计划预算,以便在电子商务发展时能在技术及成本关系中得到最大的效益。尤其是考虑网站连接上公司Intranet或数据库时,在技术工作中所费时间甚多,而且可行性往往是最大难关。一旦预算失败,应用不了现有的信息技术资源,就可能损失不少的资金及时间。
3、日本推崇电子商务
过去,日本的计算机化主要用于生产过程的优化以及在公司中工作效率的提高。然而,现在的结构已经不适应经济的发展,泡沫经济破灭后日本的国际竞争力大大削弱了。由于这些原因,日本迫切需要改变现在的系统。作为这种结构性改变的工具之一,电子商务被日本政府和私人机构推到了显要位置。
在这种环境下,根据企业界的要求,日本政府尤其是日本国际经贸部积极同私人机构合作,在日本经济的每一个商务活动中开展电子商务的促进计划。
日本国际经贸部对电子商务进行了分类,把商家和客户之间的电子商务称作客户电子商务,把商家和商家之间的电子商务称作公司电子商务,并在1994年,准备了总计2亿5千万美元的预算。接着,他们为19个客户电子商务项目分配了8千万美元的预算,为26个公司电子商务项目分配了1亿7千万美元的预算。
在客户电子商务方面,日本现在有超过50家的本国银行准备采用SECE(安全电子商务环境)协议。在公司电子商务方面,日本已经发起了一项称为CALS的计划,以实现从研究发展部门到生产部门之间的过程数字化。在这个计划中,大量书面工作和商业过程被计算机的程序所代替,大大降低了费用,缩短了时间。
在客户电子商务方面,在开放性网络如Internet上进行电子交易必须做到安全可靠。而 SECE实现了在一个虚拟的世界中进行日本式的商务活动。1997年10月,由富士通、日立和NEC联合成立了日本认证服务有限公司以提供这种颁发电子认证的服务,现在已开始这项服务。
1996年,日本成立了电子商务促进委员会,简称ECOM,有251家公司或机构参加了该组织。此后,ECOM在诸如电子授权认证和电子预付款或"ECOM现金"协议等领域制订了规划和模型协议。这个授权认证规则得到了美国国家标准和技术研究院(NIST)及OECD的高度评价,并被指定为共同的全球规划的主要基础。因此,电子商务计划通过一些私人机构的努力得到了较大发展。
日本的电子商务促进计划采用了以下规则。首先,知识产权由发起这个计划的政府和公司共享;其次,对参与公司的选择是一个开放过程,一些外国公司实际上已经参与进来;第三,零售商通过提供系统服务来支持这个计划;第四,每一个计划有2年的时间框架。通过采用以上这些规则,这些计划取得了很好的实际效果。
4,韩国电子商务的发展状况
据韩国国家统计局日前统计的数字称,去年B2G的在线交易与2001年比增长了136.3%, 新增9.59万亿韩元达到16.63万亿韩元。去年B2C交易额新增2.46万亿韩元达到5.04万亿韩元,与前一年比增长幅度达到95.5%。 B2B在线交易去年新增46.76万亿韩元,与一年前比增长42.9%。去年韩国B2B在线交易占所有电子商务交易的87.6%,B2G占9.4%,B2C占2.8%。 去年韩国电子购物商店的数量增长了33.7%,从2001年的2166家增长至2896家。纯粹的电子商务企业增长了61%达到1111家。运用在线和传统两种方式经营的企业达到了1785家,同比增长20.9%。韩国去年电子商店销售额猛增至6.03万亿韩元,与一年前的3.35万亿韩元比增幅达到80.2%。
据Visakorea公司的调查结果,在电子商务的利用率方面,韩国在亚太12个国家中高居榜首。 网上购物及利用网上银行的人数正在迅速增加。去年网上购物规模预计突破了6万5000亿韩元大关。而且,使用互联网的每10人当中就有7人曾有网上购物经历。
2.3国内电子商务发展趋势
近年来,随着Internet的蓬勃发展,电子商务也在迅速崛起。电子商务(E-Commerce)是利用Internet 提供的信息网络在网上进行的商务活动。电子商务改变了传统的买卖双方面对面的交流方式,也打破了旧有工作经营模式,它通过网络使企业面对整个世界,为用户提供每周 7 天,每天 24 小时的全天候服务。电子商务的规模正在逐年迅速增长,根据Deloitte咨询公司最近研究,全球电子商务收入将从1997年的150亿美元上升至2002年的1.1万亿美元,到2002年70%的大公司将通过Web进行销售;eMarketer公司也预期全世界的电子商务收入将从1998年的984 亿美元增长到2003 年的1.2 万亿。虽然不同研究咨询机构对电子商务的增长预测有一定差异,但电子商务的飞速增长已是不争的事实,它带来的商机是巨大而深远的。由于电子商务所依托的Internet的全球性和开放性,电子商务的影响将是全面的,它不但在微观上影响企业的经营行为和消费者的消费行为,而且在宏观上影响到国际贸易关系和国家未来竞争力。作为快速发展中的中国,已经错过了多次发展机遇,我们再也不能坐失良机而应该应对挑战抓住电子商务发展带来的商机,为二十一世纪日益激烈的全球化竞争作好人才、技术准备和经营观念转变。
一、电子商务的涵义与竞争优势
1.电子商务涵义
对于电子商务的概念,目前并没有比较统一的定义,只是在实践应用的基础上加以总结形成的。经合组织OECD是较早对电子商务进行系统的研究,它将电子商务定义为是关于利用电子化手段从事的商业活动,它基于电子处理和信息技术,如文本、声音和图象等数据传输。OECD的定义特别强调了Internet基础上的电子商务发展,但是不全面的。我国较早研究电子商务学者李琪认为电子商务是指系统化地利用电子工具,高效率、低成本地从事以商品交换为中心的各种活动全过程。他强调的是以商品贸易为中心的各种事务活动的电子化,使得对电子商务活动范围定义过于狭小。一般认为,电子商务是以信息技术为基础的商务活动,它包括生产、流通、分配、交换和消费等环节中连接生产和消费的所有活动电子信息化处理。具体的说,电子商务活动是指以下列方式所进行的交易或商务活动:(1)通过Internet进行的交易,如联机商店(Online Shop)和网上直销(Internet Direct Sale);
(2)通过Internet进行商务活动,如联机服务(Online Service)和网上广告(Internet Adv.)等;(3)通过增值网络(Value-added network)进行的电子交易和服务,如通过EDI进行采购和报关等;(4)通过连接企业或机构的计算机网络发生的交易和服务。
电子商务是在全球性电子虚拟市场上展开的商务活动,因此传统的商务活动分成国内和国外对电子商务来说是没有必要的。由于网络信息技术发展对市场主体产生不同影响,而且差异性很大,因此根据电子商务活动参与主体不同进行分类比较妥当。根据是否有组织结构市场主体一般分为企业组织和个体消费者两大类,因此电子商务活动相应分成两大类:企业组织椘笠底橹?/FONT>(Business?/FONT>Business,简称B?/FONT>B)型和企业组织椣颜?/FONT>(Business?/FONT>Consumer,简称B?/FONT>C)型。根据统计,目前电子商务活动中80%的收入属于B?/FONT>B型商务活动,这是由于企业组织的信息化程度和技术水平比个体消费者明显要高,而且他们之间交易比较规范易于用电子商务交易方式完成。 2.电子商务的竞争优势
电子商务极大提高了传统商务活动的效益和效率。与传统商务活动相比它具有下列竞争优势:(1)降低交易成本。首先,通过网络营销活动企业可以提高营销效率和降低促销费用,据统计在Internet上做广告可以提高销售数量10倍,同时它的成本是传统广告的1/10;其次,电子商务可以降低采购成本,因为借助Internet企业可以在全球市场寻求最优惠价格的供应商,而且通过与供应商信息共享减少中间环节由于信息不准确带来的损失。有资料表明,使用EDI通常可以为企业节省5%-10%的采购成本。(2)减少库存。企业为应付变化莫测的市场需求,不得不保持一定库存产品和原材料库存。产生库存的根本原因是信息不畅,以信息技术为基础的电子商务则可以改变企业决策中信息不确切和不及时问题。通过Internet可以将市场需求信息传递给企业决策生产,同时企业的需求信息可以马上传递给供应商适时补充供给,从而实现零库存管理。(3)缩短生产周期。一个产品的生产是许多企业相互协作的成果,因此产品的设计开发和生产销售可能涉及许多关联的企业,通过电子商务可以改变过去由于信息封闭导致的分阶段合作方式改为信息共享的协同并行工作方式,从而最大限度减少因信息封闭而无谓等待的时间。(4)增加商机。传统的交易受到时间和空间限制,而基于Internet的电子商务则是24小时全球运作,网上的业务可以开展到传统营销人员销售和广告促销所达不到的市场范围,如我国湖南一养毒蛇农民通过Internet将其产品卖到美国一个它未曾谋面的公司。(5)减轻物资的依赖。传统企业的经营活动必须有一定物资基础才可能开展业务活动,而通过Internet可以创办虚拟企业,如网上商店和网上银行开设和发展基本不需要很多的实物基础设施,同时企业还可以将节省费用转让给消费者,这正是著名的网上书店Amazon为什么能给消费者提供传统书店无法提供的优惠折扣原因所在。(6)减少中间环节。电子商务重新定义了传统的流通模式,减少了中间环节,使得生产者和消费者的直接交易成为可能,从而在一定程度上改变了整个社会经济运行的方式。
二、电子商务在我国的发展与应用
1. 电子虚拟市场发展
电子商务活动的空间是电子虚拟市场(Electronic Marketplace),电子虚拟市场是由Internet上企业、政府组织和网民组成的网上市场,网上市场的扩张速度和发展直接影响着电子商务的发展速度和前景。自从1994年Internet的商业化以来,在短短5年时间内90%以上的世界500强公司建设有网站,30%的企业商务网站开始为顾客提供售后服务或直接进行网上商务活动;目前全球网民从1994年的100万增加到1998年的1.3亿,预计到2005年全球网民将达到10亿。虽然中国Internet起步较晚,但自从1994年接入Internet后我国的网上市场也得到快速增长,并且形成了一定的网上市场规模。根据我国网络管理机构CNNIC最近一次统计表明,我国的网民已从1998年底的210万增加到1999年6月底的400万,而且预计今年将接近1000万网民。由于Internet的技术性,上网网民一般学历知识较高,在我国,80%以上的都受过高等教育,80%以上的在21~35岁之间,而且50%以上的人月收入在1000元以上,因此从市场营销角度看这些网民属于消费领导型而且具有很高的购买潜力和消费能力,它是一个巨大的网上商机等待开发。作为电子商务的主导力量,我国企业也纷纷设立网站,目前约有3万多个在.Com下注册的商用域名,在半年之内竟增长了一倍,我国一些大企业也纷纷设立商务站点开拓网上商机,并取得了一定成效。今年是我国政府的上网年,目前政府机构上网踊跃,在.Gov下注册的域名在一年之内翻了三倍达到1600多个。
2. 电子商务应用与发展
电子商务的发展起源于70年代的EDI应用,我国海关是最早引入EDI进行报关,经过几年的完善发展目前企业可以在企业通过上网申请报关。电子商务迅速发展始于Internet的商用发展,目前电子商务活动发展较快的是网上销售、网上促销、网上服务。我国的电子商务发展还处在起步阶段,(1)1998年的网上广告收入1800万仅占全年320亿元的广告收入中很少比例,而在美国网上广告收入达到19.6亿美元已经超过户外广告收入;(2)去年我国网上购物达到1000万,今年网上购物得到飞跃发展,以8848--珠穆郎玛网站为例,4月份运营以来平均每天的销售额超过5万,而且每月以50%的速度在增长,今年6月份在联想的电子商务网站开通的首日订货量就惊人高达8500万元,虽然与美国的同类型DELL电脑公司的日销售600万美元还有一定差距,但足以显现出我国电子商务发展巨大潜力;(3)在一些政府职能部门的主导下,一些面向国际的商务综合网站纷纷开通为我国企业开拓全球市场推波助澜,如有对外贸易与合作部的主办的被称为“日不落”的中国商品市场自开通以来,就成为国内企业走向国外和国外企业了解中国产品的桥梁。
3. 电子商务环境发展
在传统实物市场进行商务活动是依赖于商务环境的(如:银行提供支付服务、媒体提供宣传服务、法律配套服务等),电子商务在电子虚拟市场进行商务活动同样离不开这些商务环境,并且提出了新的要求。最基本的电子商务交易系统包括企业的电子商务站点、电子支付系统、实物配送系统三部分组成。为大力推动电子商务发展,在中国人民银行牵头下我国商业银行联合成立了联合认证(Certified Access)委员会为网上交易提供认证服务,以保证交易的合法性和可识别性。我国的一些商业商业银行也纷纷开通网上支付服务,如招商银行的“一网通”,中国银行的电子钱包,和最近建设银行开设的网上银行服务为推动我国的电子商务发展打下坚实基础。我国积极引进一些国际标准作为国家标准,推动我国电子商务发展与国际接轨。但须认识到是,我国电子商务环境还是滞后于发展需要的,因此加强法律完善和出台相关政策扶持电子商务发展势在必行,这方面可以借鉴国外的一些经验,下面将重点分析面临的问题并讨论相应的对策。
三、我国电子商务的发展面临问题与对策
1. 电子虚拟市场培育
根据国外研究,当网民上网规模达到1000万时就可以形成规模市场,它也是Internet的服务商ISP(Internet Service Provider)和信息服务商ICP(Internet Content Provider )的盈亏点,目前我国的绝大多数的ISP/ICP还处在亏损状态,需要不断融资来求生存和发展,因此为使我国Internet发展步入良性循环,必须大力培育发展上网规模,只有ISP/ICP的健康发展才能为企业的电子商务活动提供市场基础和技术保障。根据CNNIC的调查显示,制约我国网络规模发展的主要因素是49.3%的调查对象认为是速度太慢,36.8%认为收费太贵。我国从1994年开始接入Internet,虽然与国外接口带宽达到241M,但与我国的Internet发展速度是不相称的。与此同时,由于中国电信的垄断地位,使得Internet的接入服务价格昂贵竟是美国的20倍,通讯资费成为制约发展瓶劲。因此,培育电子虚拟市场必须有合理的、可靠的、足够的带宽,但靠中国电信难以提高服务质量,必须改造我国电信业并引入竞争机制,扶持现有的有线电视网和联通电信网发展,形成业界“竞争机制”推动Internet发展。
制约上网的另外一个重要因素是,绝大多数家庭还缺少上网的信息终端,我国家庭拥有计算机的不及美国的1/10,目前上网计算机仅有146万台是美国的1/20。目前我国电视机的家庭普及率高达到80%,有线电视网在城镇的普及率也达到90%左右,如果发挥有线电视网的网络功能是一可行之路,为此国内外许多厂商纷纷研制出机电视机顶盒支持上网,微软早在今年3月份就在深圳宣布其“维纳斯”计划,我国针风相对提出了自己的“女娲”计划以求发展中国的Internet产业。为吸引更多的想上网苦于无计算机的用户,许多ISP与PC厂商合作纷纷推出“免费PC”计划,消费者只需交纳一定的上网服务费后,ISP为其提供一免费的可以上网PC机并且在一定时间内可以免费不限时上网。我国的互联网络技术公司也推出相应计划,但收效甚微,这与消费者的网络知识匮乏和ISP缺乏品牌形象有很大关系。我国的Internet发展还任重道远,对消费者培养教育和ISP的壮大发展是电子虚拟市场发展的基础所在。
1. 电子商务应用
电子商务的应用是一系统性的问题,涉及到消费者、企业和政府机构等多方面因素。目前电子商务的应用存在的一些障碍。从消费者方面看,首先,不很了解电子商务的特点和优点,缺乏必要的网络知识;其次,在发货及货运系统方面缺乏选择性;第三,缺乏个人信用卡及第三方支付系统,对网上产品的质量不信任,也不知道购物的结果如何;最后,中国一直受计划经济的影响,两千多年农业经济以及四十多年的计划经济,一直形成了节省、存钱、不借钱的消费观念,现金仍是人们购物支付的的主要方式,这也制约网上直接支付方式的发展和应用。从企业来说,上网资费太贵和速度太慢仍然是阻碍电子商务的最主要因素,在美国建设一有完善功能的电子商务站点需花费100万美元,这对企业来说是一沉重负担,中小型企业根本负担不起,另外企业缺乏网络技术人才和电子商务知识也是制约其发展的重要因素。对于政府方面,政府机构的高级官员不了解电子商务,无法快速适应电子商务环境,因此,不能投入足够的资源来发展人性化的电子商务环境。因此,推动电子商务的应用,首先必须解决企业上网问题,对于大型企业应积极扶持上网拓展网上业务参与全球竞争,特别是一些IT行业的企业要先行起到表率,我国一些著名的IT企业如联想、方正正不失时机开通电子商务站点,实践证明他们决策是正确的,如联想今后80%的订单将直接从网上获取;对于中小企业,需要提供技术支持及人才培训服务,并为中小企业提供集中开拓电子商务业务的架构模式,避免单独建造网站的昂贵费用。其次,促进电子商务在个人消费市场的发展,积极发展网上零售服务,根据CNNIC调查85%的网民有意愿上网购物,我国珠穆郎玛网站和北京图书大厦网站在今年初的顺利开通就是典范。最后,政府机构必须了解电子商务发展趋势,调整政策引导电子商务发展,如美国的政府采购80%都在网上竟标完成以吸引企业上网开拓业务;通过扶持或主持建设网上市场型网站为中小企业提供服务,如对外贸易与合作部开通的中国商品市场网站,就是为我国中小企业的产品走向世界提供“日不落”的虚拟市场。 3.电子商务环境完善
电子商务的发展离不开电子商务环境的配套和完善,我国的电子商务环境与国外相比还有一定差距。首先,推动商业银行的网络化发展,建立完善的电子支付体系,在电子交易支付及结算手段上,政府有必要制定出相应的政策、法规。目前,我国的银行业提供网上支付的只有招商银行、中国银行和建设银行三家,真正能开展网上银行业务还只有最近推出网上银行服务的建设银行,我国最大的国有商业银行工商银行却落在后面,因此企业的电子商务活动受到很大制约。其次,引导和扶持全国性的物流配送公司迅速成长,虽然电子商务交易中大部分环节通过网络的信息交换完成,对于实体物资商品还需借助物流系统完成,如果不建立与电子商务配套的配送系统,势必因货物不能及时交换妨碍电子交易的最终完成。目前,我国全国性的配送系统还是依赖传统的计划体制下的邮政系统,它的效率和昂贵费用已经制约我国货物全国流通,因此发展象美国的联邦快递公司的中国货物流通服务公司迫在眉睫。第三,完善现有法律法规,保证电子交易的合法性,保护个人隐私和防范网上犯罪,建立电子商务安全认证法律机制。电子交易由于信息的数字化和标准化,使其丧失了个性化特征,因此确保交易中信息的身份特征和安全保密性是电子交易关键所在,目前我国还没有立法明确说明数字签名的有效性,以及立法保护网上个人信息隐私。最后,为电子商务发展提供宽松的经济政策环境,遵循网上交易自由原则和不额外征税原则。
2.6 电子商务前景展望与对策建议
近两年电子商务发展速度之快远远超过我们的想象,普及速度之快令人难以置信。我们完全有理由相信,不论是发达国家还是发展中国家,不论是教育科研部门还是新闻媒体,都将以前所未有的热情投入电子商务,全球性的电子商务热潮必将一浪高于一浪。
未来几年的电子商务交易额将以数倍、数十倍的速度猛增。1997年全球电子商务销售额才26亿美元,到1998年就达到了430亿美元,到2000年将达到3000亿美元。Intel公司高级副总裁虞有澄先生预测到2002年电子商务销售额将达到9000亿美元。世界货币基金组织预测到2003年,全球电子商务销售额将达到1.5万亿美元。这种奇快的发展速度、诱人的发展前景,必然导致各国政府、全球商界不遗余力地争“山头”、“抢位置”。声势浩大的创新活动将带来经济增长方式的巨大变革。电子商务在整个供需链与贸易链过程中,从原材料采购供应到对消费者服务都进行双向的信息交换、传递和应用集成,并以高效快捷的信息交流与直接应用完成全部商务活动。因此,它既是一场商业领域的根本性革命,又是一次世界性的声势浩大的创新活动,是未来贸易方式的发展方向,是全新的商务模式,也是21世纪主流商业与贸易形态。电子商务带给人们的不仅是商业机会、商业利润,而更主要的是商务观念的深刻革命,是经济增长方式的巨大变革,是未来经济发展的严峻挑战,对此我们必须有足够的认识、深刻的理解。
世界将变成一个全新的数字化的庞大的虚拟市场。如果有人问电子商务市场有多大?边界有多长?我们的回答是:市场要多大有多大;边界要多长有多长。电子商务是一个没有边界的庞大的虚拟市场。据预测,在今后几年内将有数千亿甚至上万亿美元的潜在市场。电子商务基础建设的巨大投资又给电子技术的发展提供了庞大的商品市场,这不仅会吸引信息产业巨头们的兴趣,而且会带来巨大的发展机会。巨大的市场需求必然带来社会生产力的巨大提高,与此同时带来的还有文化的发展、生活的丰富、创造力的发挥、追求人与自然的和谐,等等。
我国电子商务虽起步较晚,但发展态势很好。如果能运用好“跟踪、迎头赶”战略,如果有一套既先进又符合我国基本国情的发展政策,如果能迅速启动作为电子商务主力军的企业,加大企业上网交易的宣传力度,变革传统的商务观念,我们就能够逐渐缩小与先进国家的差距。为此,必须制定可行措施与有力对策:
提高全民族对电子商务的认识。电子商务是未来商务发展的必然趋势,是商业领域的深层次变革。对此,全民族都要有紧迫感,要吸引更多企业上网,通过上网提高企业竞争力,提高企业盈利水平。发挥示范效应,鼓励更多行业参与。首先应在一些适合于电子商务发展的领域和部门积极推行,如外贸、银行、证券、民航、铁路售票、饭店订房、出版发行等行业可先开展电子商务,对于示范单位应在资金、税收等方面予以大力支持,并促其良性循环。创造发展环境,建立保障系统。电子商务的发展需要有相应的法律、法规,相应的技术标准与网络接入标准,相应的银行金融支持系统等等。要保证电子商务的规范化操作,就必须使这些标准与国际通用标准接轨。加强人才培训,建立一支素质较高、结构合理、专业配套的梯形队伍。政府、企业与社会各界都应重视培养复合型高级人才,一方面要重视引进一批电子商务人才,另一方面又要防止电子商务人才的外流。吸收另国经验,走我国发展之路。积极参与国际对话与讨论,在电子商务国际框架中及时吸收另国的经验教训,以加快我国电子商务的发展步伐。
第三章 系统需求分析
3.1 系统目标
在Internet上构架安全的和易于扩展的B2B2C电子商城业务框架体系,形成进行商务活动的虚拟网络空间和保障商务顺利运营的管理环境; 建立协调、整合信息流、物质流、资金流有序、关联、高效流动的重要场所。企业、商家、客户可充分利用电子商城提供的网络基础设施、支付平台、安全平台、管理平台等共享资源有效地、低成本地开展自己的商业活动。
3.2 概述
电子商城的建设,不仅仅是初级网上购物的实现,它能够有效地在Internet上构架安全的和易于扩展的业务框架体系,实现B To B(企业对企业)、B To C(企业对用户)以及C To C(用户到用户)等应用环境,推动电子商务在中国的发展。
电子商城服务管理系统,是在TCP/IP 协议基础上,基于ChinaNet网络平台,利用Web技术、数据库技术、ASP.NET, ADO.NET技术、C#语言开发技术、面向对象技术等技术开发的应用系统框架。系统提供完善的后台管理技术,提供支付服务、安全服务以及实现与电子商务平台的无缝集成。
电子商城系统具有以下特点:
1.平台无关性
系统采用以Java、标准C为主要开发语言的中间件技术,因而系统与平台的关联性小,便于系统的移植。
2.易扩展性
系统构造的是一个业务和技术框架并提供开放的接口,便于新业务的生成和实现第三方系统与电子商城系统的连接。另外系统提供动态页面定制工具,能够有效的帮助商家生成自己的产品目录表等信息。
3.安全性
电子商城系统通过中国电信CTCA安全认证系统的证书机制保证商城内交易的安全、可靠和防抵赖。
用户进行网上交易时填写的个人敏感信息(如:信用卡号、密码、电子帐号及密码、交易金额等)都是加密传输的(证书用户可用证书加密,非证书用户可通过SSL或对称加密),只有用户自己和收单银行才能解开相应信息。
进入电子商城的商家,商城通过证书或商家注册的方式确保商家身份的可靠性,用户在访问某个商家并进行支付时,商城在确认用户身份的同时还需确认商家的身份,防止网上欺诈。
为了防止网上纠纷,利用商城支付系统进行支付的用户或者拥有CTCA证书,或者在商城注册了帐号,这样商城能将用户的交易过程信息以日志形式保存,以作为仲裁交易纠纷的原始依据。
4.适用的广泛性
电子商城支持支付型业务和非支付型业务;
电子商城支持多种业务开展方式,即:自营业务、托管业务、第三方接入业务;
电子商城支持多种业务的接入方式,即:专线接入、Internet接入、VPN接入;
电子商城支持多种用户身份认证方式,即:证书认证方式、注册帐号认证方式;
电子商城支持实时支付和非实时支付(如货到付款)两种支付方式;
电子商城支持信用卡、储蓄卡、国际信用卡等多种支付手段。
3.3管理服务系统
管理服务系统对电子商城基本运作元素提供综合管理功能。电子商城基本运作元素包括:客户、商家、银行、物流公司、商城。管理服务系统提供以下管理功能:
l 用户管理
l 商家管理
l 商城管理
l 物流公司管理
l 订单管理
l 购物管理
l 统计管理
l 计费结费管理
l 接口管理
3.3.1 商家管理子系统
1、商家资料管理
l 商家注册管理
l 商家资料删除
l 商家资料修改
l 商家口令恢复
2、商家黑名单管理
3、商家远程管理
通过Web浏览器方式,提供以下远程管理功能:
l 商家管理员管理,即由商家超级管理员设置具有不同管理权限的其他管理员。目前系统设置四类管理员:
(1)超级管理员
(2)商品管理员
(3)优惠管理员
(4)收单管理员
l 商品信息管理,如商品目录,商品描述性信息等
l 商品优惠信息管理
l 商家收单管理
以下是商家管理子系统的用例图:
图4-3商家管理子系统的用例图
3.3.3 商城管理子系统
1、商城黑名单管理
2、商城商品目录管理
3、商家授权管理
只有经过商城授权的商家才可以利用商城的资源对外提供服务,如产品发布,在线支付,安全等。
4、商城管理员管理
由商城超级管理员根据管理权限的不同设置不同级别、不同权限的管理员,如:用户管理员,商家管理员,计费管理员,订单管理员等。
以下是商城管理子系统的用例图:
图4-5商城管理子系统的用例图
3.3.3接口管理子系统
1、安全服务接口管理
电子商城提供基于SSL安全认证系统的证书安全机制,可为商城的信息流、资金流和物流提供安全加、解密服务。
2、支付服务接口管理
电子商城提供多种支付手段,如:货到付款,款到发货,在线支付等。对于在线支付,电子商城提供与支付服务平台的连接,即商城将用户的支付信息打包后送到支付服务平台,由支付服务平台完成支付。
3.5公共服务系统
公共服务系统是面向广大用户的窗口,以浏览器页面的方式体现。
3.5.1、电子公告牌服务
l 商城商家排行榜信息
l 商城所有注册用户数
l 商城所有注册商家数
l 商城所有开放银行数
l 商城当前在线顾客数
l 商城当前在线注册顾客数
l 商城当前注册商家数
l 商城当前交易比数
l 商城黑名单信息
3.5.2、资讯服务
l 网上投述服务
l 网上商情服务
l 商城指南
提供的均为静态文本信息。
(1)用户须知
(2)商家须知
(3)购物指南
(4)安全知识介绍
3.5.3商城导购服务
通过商城导购服务为用户提供快速找到需要的商品的手段,即提供商品搜索引擎。
商城提供一般搜索和精确搜索两种搜索模式。
l 一般搜索:提供两种搜索条件(互斥条件),均实现模糊查询。
按商品关键字搜索,既可按商品名称关键字搜索,也可按商品类别关键字搜索;
按商家关键字搜索,既可按商家名称关键字搜索,也可按商家经营产品范围关键字搜索。
l 精确搜索
查询条件:商品类型(下拉列表,供用户选择)、商品名称、商家名称、商家所在国家、商家所在地市、商品价格、商品生产日期、商品生产厂家、选择限制条件(折扣/非折扣,在线支付/非在线支付,收单银行)
3.5.4求购信息发布系统
通过求购信息发布系统,用户可以提交求购商品的类型,名称,描述,心理价格范围,商品图片样例和截止日期。
商家通过该系统收集的信息,寻找自己的用户,扩展产品的销售渠道。
商城通过该系统可以向用户推荐满足其要求的商品,向商家提供相应的产品求购信息。
3.5.5广告系统
该系统用于发布各类广告,用于宣传商城内的产品和商家信息,以及在商城的推广。
3.6支持子系统
3.6.1 邮件系统
邮件系统负责电子商城系统与客户,商家,物流公司的通信。
负责发送以下邮件:
一,购物流程控制管理阶段
1. 买方生成定货单邮件
2. 卖方变更定货单邮件
3. 买方变更定货单邮件
4. 卖方确认定货单邮件
5. 买方确认定货单邮件
6. 卖放生成发货单邮件
7. 物流确认发货单邮件
8. 买方确认到货单邮件
9. 物流发出提货通知单邮件
10. 买方发出到货回单邮件
11. 买方向卖放付款邮件
12. 卖方确认到款邮件
13. 卖方向物流付款邮件
14. 物流确认到款邮件
二,注册认证阶段
1. 客户注册认证邮件
2. 商家注册认证邮件
3. 物流公司注册认证邮件
三,信息发布阶段
1. 系统信息发布
2. 商家信息发布
3. 礼品信息发布
1. 产品邮件广告信息发布
2. 推荐产品给好友
3.6.2 站内通信系统
负责客户与客户,客户与商家以及商家与商家之间的通信。
商家可以通过该系统寻找即定的用户,并发送产品广告,也可以确认订单信息,加强与客户的交流。也可以与商家伙伴发送站内信件进行通信。
3.6.3 无线应用系统
无线应用系统,根据电子商城系统生成的定单,向注册该服务的商家用户手持移动终端设备(手机/PDA)发送即时信息。也可以向客户发送产品广告信息。
第四章 方案论证
4.1 系统架构
在讨论电子商城系统的架构之前,先了解一下计算机网络发展的过程。计算机网络发展主要经历了以下几个阶段:
第一阶段 :单层结构
这种应用程序适合用于大型和企业数据中心。使用这种应用程序需要高级维护,意味着重新编译程序几乎成为了一种日常工作;
第二阶段 :两层结构
两层结构包括以下模式:
(1)主机/终端(Mainframe/Terminal)模式;
(2)文件服务器/工作站(FileServer/Workstation)模式;
(3)客户机/服务器(Client/Server)模式;
(4)浏览器/服务器(Browser/Server)模式。
在过去应用系统开发过程中,CLIENT/SERVER体系结构得到了广泛的应用 。其特点是,应用程序逻辑通常分布在客户和服务器两端,客户端发出数据资源访问请求,服务器端将结果返回客户端。但CLIENT/SERVER结构存在着很多体系结构上的问题,比如:当客户端数目激增时,服务器端的性能会因为负载过重而大大衰减;一旦应用的需求发生变化,客户端和服务器端的应用程序都需要进行修改,给应用维护和升级带来了极大的不便;大量的数据传输增加了网络的负载等等。
从应用软件的角度来看,客户机/服务器网络模式下的软件结构简称为C/S结构,浏览器/服务器网络模式下的软件结构简称为B/S结构。现在C/S结构和B/S结构得到了广泛的应用,主机/终端(Mainframe/Terminal)模式和文件服务器/工作站(FileServer/Workstation)模式在新构建的系统中已很少使用。
Browser/server(B/S)结构,它也是采用C/S结构的基本思想,使用浏览器作为系统前端,实现了我们理想中的瘦客户。但是系统的工作量并没有真正减少,而是将部分客户端的工作量交付给服务器端来完成。
二层设计的缺点:客户端充满了业务代码,客户端依然需要清楚知道数据源的详细位置。因为将功能集中到客户端,所以这种类型的客户端称为胖客户端。只要程序发生改变,通常需要升级胖客户端;另外,它需要为应用程序的所有客户端提供对后台数据的访问,这严重限制了应用程序的推广和升级性能。
第三阶段 :MVC三层结构
所谓三层体系结构,是在客户端与数据库之间加入了一个"中间层",也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。
三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互。
源于在不同机器上的多个应用程序间共享数据。数据访问逻辑层中的任何改变都不会影响应用程序中的表达层和业务层;
根据各部分程序代码的不同职责,将程序逻辑划分为各个功能层,即:
A,表达逻辑层 presentation logic:指示用户如何与应用程序进行交互,以及信息如何表达
B,逻辑层business logic:装载应用程序的核心,既用来控制内嵌在应用程序中的业务处理的规则
C,数据访问逻辑层data access logic:本层控制与程序使用的数据源的连接,并从数据源中取得数据提供给业务逻辑层;
ASP.net只是.net中的一部分。它最大的优点除了是编译执行速度快外,我觉得最大的优点是页面和代码分离的编写方式(效果就象 DELPHI里的FORM设计界面和处理代码分离一样),对我们这些惯使RAD工具的人来说不啻是个福音。再加上.net库提供的支持事件的各种WEB控件,和以前编写网页方式啾瓤晌绞且怀「锩K孀欧植际蕉韵蠹际醯闹鸾コ墒欤嗖惴植际接τ锰逑到峁沟玫搅嗽嚼丛蕉嗟挠τ谩Sτ孟低持挥邢蚨嗖惴植际阶洌拍茏钪战饩鯟LIENT/SERVER结构存在的问题。在多层架构下,应用可以分布在不同的系统平台上,通过分布式技术实现异构平台间对象的相互通信。将应用系统集成于分布式系统之上,能极大地提高系统的可扩展性。
在多层分布式应用中,在客户端和服务器之间加入了一层或多层应用服务程序,这种程序称为"应用服务器"。开发人员可以将应用的商业逻辑放在中间层应用服务器上,把应用的业务逻辑与用户界面分开。在保证客户端功能的前提下,为用户提供一个简洁的界面。这意味着如果需要修改应用程序代码,只需要对中间层应用服务器进行修改,而不用修改成千上万的客户端应用程序。从而使开发人员可以专注于应用系统核心业务逻辑的分析、设计和开发,简化了应用系统的开发、更新和升级工作。
图4.1系统构架图
由以上的结构示意图可以看出:电子商城服务器主要由Web服务器、应用处理系统服务器和数据库组成,CTCA中心、支付系统、物流系统、商家服务器构成商城的外围系统,通过与电子商城应用处理系统服务器的通信完成业务流程。
从系统开发角度出发,电子商城系统由两部分组成:电子商城站点和电子商城应用处理服务器。
1. 电子商城站点
电子商城站点为用户提供高度客户化的浏览器界面,引导用户去查找、浏览并购买所需的商品,或引导用户享用所需的服务,并为用户提供相关的页面服务。
2. 电子商城应用处理服务器
电子商城应用处理服务器完成所有的请求处理功能、商城管理功能、安全管理以及与CTCA认证中心的通信接口功能、支付管理以及与电子商务平台支付系统的通信接口功能等。
:选用Microsoft SQL Server 2000 数据库系统,存储用户,商家,物流公司,产品以及系统配置数据。
:选用Microsoft SQL Server 2000 数据库系统,备份数据库中的数据。
:运行ASP.NET应用程序,执行商业逻辑,调用相应的后台数据库操作,完成中间业务,最后反馈给客户端请求结果。
:接受客户端请求,把请求传送给应用服务器。
:用于商城管理人员,管理商城系统。想商家和客户提供服务。
:无线应用网关,通过电信网络,向移动终端发送服务信息。
:商家和客户通过Internet 访问电子商城系统。
:手机移动终端,接收WAG发送过来的消息,同时也可以向WAG发送消息。
:PDA终端,接收WAG发送过来的消息,同时也可以向WAG发送消息。
:负责接入网络的安全和数据监控。
:公网网络 Internet
: 电信网络 联通的CDMA
4.1.1 MVC三层体系结构基本概念
选择Microsoft .NET Framework 1.1构架,使用Visual Studio .NET 2003(C#)+SQL Server 2000作为开发平台。在前期系统设计过程中,使用Power Designer设计数据库,使用UML表达系统蓝图,以便于成员之间有效的共享和交流设计结果。
整个系统采用MVC(模型-视图-控制器)三层模式。ADO.NET封装了应用程序的数据结构和事务逻辑,集中体现了应用程序状态。HTML,ASP.NET页面作为视图是模型的外在表现。ASP.NET 页面的后台编码担当控制器这个角色,对用户的输入进行响应并将模型和视图联系在一起。模块化的自定义控件技术将有助于系统的维护,提高系统的可升级性和扩展性。组件的分离更有利于任务的划分。
4.1.2系统架构描述
按照需求分析的描述,把酒店管理信息系统分成前台接待子系统、前台收银子系统、经理查询子系统、电话计费管理子系统等几个功能相对独立而又相互联系的子系统。各子系统的数据均由系统数据库服务器提供,可以实现各自独立运行和操作,各子系统之间通过特定的接口进行彼此交换数据。以下是本系统的系统架构图:
4.2 开发工具选择
4.2.1 Visual Studio 2003
Visual Studio .NET 2003是 Microsoft 的第二代开发工具,用于构建和部署功能强大而安全的连接 Microsoft .NET 的软件。
为解决今天最具挑战性的软件开发需要而构建的 Visual Studio .NET 2003 增强并进一步完善了其前代产品的功能,并与前代产品高度兼容。Visual Studio .NET 2003 包括来自 Modeler 的全套功能,可帮助构建最复杂的企业级应用程序和在最小的设备上部署应用程序。通过全世界各种规模的公司的使用,Visual Studio .NET 和 Microsoft Windows Windows NET Framework 提供了一个强大而完善的端到端工具,用以设计、开发、调试和部署用于 Microsoft Windows? 和 Web 的安全的应用程序—这些应用程序强健而且易于使用。
Visual Studio .NET 2003 包含 Windows .NET Framework 的一个增强版本。Windows .NET Framework 1.1 版在前一版本的基础上增添了新的能力、功能增强和文档改进。通过对 .NET Compact Framework 的集成支持,Visual Studio .NET 2003 将移动和嵌入式设备,如 Pocket PC 和其他采用 Microsoft Windows CE .NET 操作系统的设备,带入 .NET。如今,开发人员能够使用同样的编程模型、开发工具及编程技能,来构建应用范围广泛--从小设备到最大的数据中心--的应用程序。
开发人员可以使用 Visual Studio .NET 来:
l 构建功能强大而且响应能力极好的基于 Windows 的应用程序。
l 构建功能强大而且响应能力极好的 Pocket PC 应用程序。
l 构建完善而安全的 Web 应用程序。
l 构建对设备有智能感知能力的完善而安全的移动 Web 应用程序。
l 在以上任何一种应用程序中使用 XML Web services。
l 避免“DLL 灾难”。
l 消除代价高昂的应用程序部署和维护问题。
Visual Studio .NET 是唯一的从头至尾都是基于通过 XML Web service 进行集成这一思想而构建的环境。通过允许应用程序通过 Internet 共享数据,XML Web services 使开发人员能够利用新的和现有的代码构建应用程序,而不用考虑平台、编程语言或对象模型。
4.2.2 Dreamweaver MX
Macromedia Dreamweaver MX 是创建专业网站的最佳途径, 同时也是构建强大 Internet 应用程序的最简便的途径。 开发人员第一次能在一个环境内快速创建和管理网站及 Internet 应用程序。Dreamweaver MX 是一个完整、集成的解决方案, 可为您提供可视化的布局工具、快速的 web 应用程序开发以及广泛的代码编辑支持。
Dreamweaver在项目中主要负责把前台的素材进行整和排版,以及和后台的程序交互。
4.2.3 Rose
提起建模,每一位软件开发人员都不会陌生,但我们还是要给它一个明确的定义:建模是人类对客观世界和抽象事物之间联系的具体描述.在过去的软件开发中,程序员利用手工建模,既耗费了大量的时间和精力又无法对整个复杂系统全面准确的描述,以至于直接影响应用系统的开发质量和速度.而今,我们不再为建模苦恼. Rational公司曾以Ada语言享誉世界,今天以面向对象的可视化建模工具Rational ROSE博得了业界一片好评.正如美国《应用程序开发战略》Yourdou教授所评价的:“Rational Rose 将对面向对象应用程序开发技术产生巨大影响;使大型开发项目的分析,建模、设计规范化了,——rational公司已成为OO CASE界的Microsoft。” Rational ROSE包括了一体化建模语言(UML),OOSE及OMT。其中一体化建模语言(UML)由Rational 公司三位世界级面向对象技术专家Grady Booch,Ivar Jacobson和Jim Rumbaugh通过对早期面向对象研究的设计方法的进一步扩展而得来的,为可视化建模软件奠定了坚实的理论基础。
Ratioal Rose产品为大型软件工程提供了可塑性和柔韧性极强的解决方案: 1.强有力的浏览器,用于查看模型和查找可重用的组件 2.可定制的目标库或编码指南的代码生成机制 3.既支持目标语言中的标准类型又支持用户自定义的数据类型 4.保证模型与代码之间转化的一致性 5.通过OLE连接,Ratioal Rose图表可动态连接到Microsoft Word中 6.能够与Rational Visual Test,SQA Suite和SoDA文档工具无缝集成,完成软件生命 周期中的全部辅助软件工程工作 7.强有力的正/反向建模工作 8.缩短开发周期 9.降低维护成本
如果没有一个被普遍认可的国际标准,事情就会陷入混乱之中。Rational Rose提供对工业标准标记的独家支持,其中包括一体化建模(UML),这一即将在工业界成为标准的面向对象建模语言。一体化建模语言(UML)是早期面向对象研究和设计方法的进一步扩展,由世界级面向对象技术知名专家Grady Booch,Ivar Jacobson和Jim Rumbaugh对Booch,OOSE和OMT理论的研究基础上提出的,为可视化建模软件奠定了坚实的理论基础。一体化建模语言对建模语言提供了以下支持 1.使用事件模型 2.类和对象模型 3.组件模型 4.分布处理模型 5.Rational Rose产品在支持UML的同时,也支持OOSE及OMT。
4.2.4 Visio
Visio是一个图形化管理软件,它可以将管理活动以图形的方式展示出来,以便于跟踪管理。然而,传统方式在处理图形化的工作过程中,既费时,又费力,且重复劳动影响着工作效率与质量。
Visio不但将绘图过程加以简化,而且融入图形化管理的规则。所以,它越来越成为办公管理活动中为可缺少的工具。
4.3 数据库平台选择
所谓数据库,我们可以把它形象地说成是存储数据的“仓库”。数据库是为了满足某一部门中多个用户的多种应用需要,按照一定的数据模型在计算机系统中组织、存储和使用的互相联系的数据集合。数据库系统是管理大量的、持久的、可靠的、共享的数据的工具。就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系开数据库管理系统的标准语言。
SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数浒的关系开数据库管理系统,如Oracle、Sybase、Microsoft SQL Server、Informix、IBM DB2等都采用了SQL语言标准。显然很多数据库产品都对SQL语句进行了再开发和扩展,但是包括Select、Insert、Update、Create以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。SQL是英文structure Query Language的缩写,意思为结构化查询语言。
数据库是酒店酒店管理的核心组成部分,所有信息处理子系统都将基于某种数据库平台,以便将其处理的信息资源完整、安全地保存起来,并且对其进行各种管理和利用。选择一个发的数据库平台是非常重要的。根据酒店信息管理应用的实际需要,在选择数据库平台时,应考虑下列因素:
(1)性能:数据库的数据处理能力。
(2)开放性:数据库是否能在多种操作系统下使用。
(3)安全性:数据库是否具有高度的安全性。
(4)可靠性:数据库是否具有高度的可靠性。
(5)并行性:数据库是否并行运行在多节点上。
(6)可操作性:数据库在使用前是否需要复杂的培训。
数据库平台选用的是MicroSoft 公司的SQL Server 2000,SQL Server 2000是SQL Server的最新版本,比以前版本提高了性能、可靠性、质量和易用性。Microsoft SQL Server 2000 增加了几种新的功能,由此成为大规模联机事务处理 (OLTP)、数据仓库和电子商务应用程序的优秀数据库平台。SQL Server 2000拥有大型数据库系统基本特征,但保持了windows环境下界面友好,操作简单的优点,成为windows环境下开发中、小型C/S系统较流行的数据库系统。与传统的桌面数据库系统相比SQL Server 2000有以下区别:
(1)面向集合与面向记录。面向集合与面向记录应该是C/S系统与桌面数据库系统的最本质的区别。在桌面数据库系统中,它得到的是整个数据表,面向的是整个数据表的所有记录,因此,在桌面数据库系统中,第一条;上一条、下一条、最后一条等概念是非常普遍的,而在C/S系统中没有这些概念,因为客户程序在向服务器发送服务请求时,得到的数据可以由一个或多个数据表的多个字段构成,是服务器上所有数据的一个子集,它的请求是通过SQL语句来实现的,因此在C/S系统中,它面向的是整个数据库的一个子集合。
(2)数据安全管理。SQL数据库在数据安全性管理方面比桌面数据库系统要强得多,它不仅对数据库的访问进行口令验证,而且它还能够对特定的数据库对象进行限制,包括视图、数据表的存储过程,更重要的是它可以设置用户权限,通过Grant和Revoke命令向一个用户或一组用户授权或收权。
(3)数据完整性管理。对于SQL数据库而言,它允许在服务器端定义一些业务规则用于验证数据的完整性,强制所有的客户端程序都必须接受相同的业务规则约束,这样有利于集中维护这些规则。虽然桌面数据库系统也能进行数据完整性管理,但是它只能在应用程序中定义这些验证规则,所有需要验证的地方都必须写入相同或相似的代码,这样不利于维护这样规则。另外,SQL数据库在完整性约束上,一般在创建数据表时就定义好的,它既可以定义为数据表的一部分,也可以通过存储过程或触发器等形式从数据表中独立出来。
(4)数据库的并发访问管理。SQL数据库采用优化锁定策略,允许多个用户可以同时访问服务器而不互相干扰。这种技术并不限制客户访问当前正在被其它用户访问的数据表,可以照常对它进行编辑(增、删、改),并请求服务器保存修改的数据。桌面数据库系统则明确地或完全地锁定策略,也就是说那些当前正在被其它用户使用的数据无法访问,更无法编辑,如果试图访问或修改这些数据,系统产生错误的提示信息。
(1)事务控制。用于在系统发生错误时保持数据库的一致性和完整性。每个更新 SQL Server 数据库内数据的应用程序都使用事务完成这个任务。事务是由一系列语句(选择、插入、更新或删除)构成的逻辑工作单元。如果在事务执行过程中没有遇到错误,则事务中的所有修改成为数据库的永久部分。如果遇到错误,则不对数据库做任何修改。桌面数据库系统一般不提供事务控制功能。
第五章 总体设计
按照系统架构设计方案,本电子商城信息系统分为:用户管理,商家管理, 商城管理,物流公司管理, 订单管理,购物管理, 统计管理,计费结费管理及接口管理。各子系统由后台数据库系统和相应的子系统应用程序组成。以下是本系统的结构图:
图5-1系统的结构图
5.1 系统模块设计
5.1.1 商家管理模块
以下是商家管理子系统的状态图:
图5-2 商家管理子系统的状态图
1.1.3 商城管理模块
以下是商城管理子系统的状态图:
图 5.3 商城管理子系统的状态图
5.2 数据结构设计
5.2.1 系统数据库ER图
l 产品模型
l 帐户模型
l 商家模型
l 定单模型
l 客户模型
l 其他
l 物流公司模型
5.2.2 系统数据表结构
数据库ESMS中的数据字典如下:
①表Product,商品货架所体现的数据都是从商品数据表中获得的,即商品表,用于存放商品数据。
表Product字段说明
序号
字段名
字段类型
长度
说明
NULL
1
ID
bigint
8
商品号
No
2
companyID
bigint
8
公司编号
Yes
3
productName
char
30
商品名称
Yes
4
unitPrice
Float
8
单价
Yes
5
introduce
varchar
300
详细信息介绍
Yes
6
updateTime
datetime
8
信息更新日期
Yes
7
categoryID
Int
4
商品分类号
Yes
8
imageData
image
16
图像数据
Yes
9
statusID
Int
4
商品状态号
Yes
10
freightStyle
char
12
货运方式
Yes
11
mailing
int
4
邮寄
Yes
12
express
int
4
快递
Yes
13
payStyle
char
15
付费种类
Yes
14
guarantee
char
4
是否有保险
Yes
15
invoice
char
4
是否有发票
Yes
16
province
char
10
省份
Yes
17
city
char
10
城市
Yes
18
amount
int
4
总计
Yes
19
browseTimes
int
4
浏览次数
Yes
20
newGrade
char
6
新旧程度
Yes
21
comment
char
2
评价
Yes
22
rate
int
4
好评率
Yes
23
shelf
char
2
是否上货架
Yes
24
listPrice
float
8
市场价格
Yes
②表Client,用来存放客户数据的表格。客户表所记录的信息应该有客户号、客户名称、客户实名、姓名、年龄、电话、电子邮箱等信息。
序号
字段名
字段类型
长度
NULL
说明
1
ID
bigint
8
No
客户号
2
name
char
20
Yes
客户名
3
firstname
varchar
20
Yes
名字
4
lastname
varchar
20
Yes
姓
5
password
char
20
Yes
密码
6
email
char
30
Yes
电子邮件
7
address
char
50
Yes
地址
8
Tel
char
15
Yes
座机
9
mobilePhone
char
15
Yes
手机
10
postalcode
char
10
Yes
邮编
11
birthday
datetime
8
Yes
出生日期
12
stateID
Int
4
Yes
客户状态号
13
city
varchar
20
Yes
城市
14
career
char
20
Yes
职业
15
accountID1
bigint
8
Yes
账户
16
accountID2
bigint
8
Yes
账户
17
accountID3
bigint
8
Yes
账户
18
blackAmount
Int
4
Yes
黑名单次数
19
creatdate
datetime
8
Yes
创建日期
20
state
varchar
20
Yes
客户状态
21
sex
char
6
Yes
性别
22
realName
char
20
Yes
真实姓名
23
identityID
char
30
Yes
身份证号
③表Company,用来存放公司号、公司名称、创建名、创建日期、创建密码、公司地址和邮编等信息。
序号
字段名
字段类型
长度
NULL
说明
1
ID
Int
4
No
公司号
2
name
varchar
30
Yes
公司名称
3
attribName
char
15
Yes
所属行业
4
creatName
char
20
No
创建名
5
creaDate
datetime
8
Yes
创建日期
6
creatPassword
char
20
Yes
创建密码
7
address
char
50
Yes
地址
8
postalCode
char
10
Yes
邮编
9
email
char
30
Yes
电邮
10
Tel
char
15
Yes
座机
11
Fax
char
15
Yes
传真
12
MobilePhone
char
15
Yes
手机
13
introduce
nvarchar
500
Yes
介绍
14
state
varchar
20
Yes
公司状态
15
city
varchar
20
Yes
城市
16
accountID
int
4
Yes
账户号
17
freeSelected
int
4
Yes
收费选择
18
blackAmount
int
4
Yes
黑名单次数
19
realName
char
20
Yes
真实名字
20
trade
char
20
Yes
经营方式
21
website
char
30
Yes
网站
22
sex
char
6
Yes
性别
④表Admin,用来存放管理员信息:管理员号、管理员名、密码、管辖域和账户等。
序号
字段名
字段类型
长度
NULL
说明
1
ID
int
4
No
管理员号
2
name
char
20
Yes
管理员名
3
password
char
20
Yes
密码
4
popedom
char
20
Yes
权限
5
creatTime
datetime
8
Yes
创建时间
6
accountID1
int
4
Yes
账号1
7
accountID2
int
4
Yes
账号2
8
accountID3
int
4
Yes
账号3
⑤表CompanyManager,用来存放公司经理信息,包括经理号、所在公司的ID、经理名、密码、经理类型、创建日期等信息,方便商城管理员对用户进行管理。
序号
字段名
字段类型
长度
NULL
说明
1
ID
int
4
No
经理号
2
companyID
int
4
Yes
公司号
3
Name
char
20
Yes
名字
4
Password
Char
20
Yes
密码
5
managerType
Char
20
Yes
用户类型
6
creatDate
datetime
8
Yes
创建日期
⑥表LineItem,用来存放交易项目信息:项目号、商品号、数量、单价、订单号等信息。
序号
字段名
字段类型
长度
NULL
说明
1
ID
int
4
No
交易号
2
productID
int
4
Yes
商品号
3
quantity
float
8
Yes
数量
4
unitPrice
float
8
Yes
单价
5
amount
float
8
Yes
总计
6
purchaseDate
datetime
8
Yes
购买时间
7
ordersID
int
4
Yes
订单号
8
statusID
int
4
Yes
状态号
9
FreightCompanyID
int
4
Yes
物流公司号
10
clientAddressID
int
4
Yes
客户地址ID
11
mailing
int
4
Yes
邮寄
12
express
int
4
Yes
快递
13
freightStyle
char
12
Yes
货运类型
⑦表FreightCompany,用来存放物流公司的信息。物流公司号、公司名称、电话、公司主页、电邮、地址等信息。
序号
字段名
字段类型
字段长度
NULL
说明
1
ID
int
4
No
公司号
2
companyName
Char
30
Yes
公司名称
3
tel
char
15
Yes
座机
4
phone
char
15
Yes
电话
5
homepage
char
50
Yes
主页
6
mailFreePage
char
50
Yes
邮费主页
7
email
char
30
Yes
电子邮箱
8
address
char
50
Yes
地址
9
postalCode
char
10
Yes
邮编
10
creatDate
datetime
8
Yes
创建日期
11
name
char
20
Yes
名称
12
password
char
20
Yes
密码
13
state
varchar
20
Yes
状态
14
city
varchar
20
Yes
城市
15
introduce
nvarchar
500
Yes
介绍
16
realName
char
20
Yes
真名
17
freeSelected
int
4
Yes
收费选择
18
remark
int
4
Yes
评价
19
accountID
int
4
Yes
帐户号
20
sex
char
6
Yes
性别
21
mobilePhone
char
15
Yes
手机
⑧表Profile,用于存放用户的一些附属信息,比如客户的爱好等信息。
序号
字段名
字段类型
字段长度
NULL
说明
1
clientID
Int
4
No
客户号
2
langpref
varchar
80
Yes
喜好
3
favcategory
varchar
30
Yes
喜欢的分类
4
mylistopt
Int
4
Yes
个性产品类别选择
5
banneropt
Int
4
Yes
品牌选择
表Account,存放帐户信息
序号
字段名
字段类型
字段长度
NULL
说明
1
ID
int
4
No
帐户号
2
number
bigint
8
Yes
帐号
3
bankTypeID
int
4
Yes
银行类型号
4
userID
char
10
Yes
用户号
5
userType
int
4
Yes
用户类型
⑩表AccountType,用于存放帐户类型
序号
字段名
字段类型
字段长度
NULL
说明
1
ID
int
4
No
帐户号
2
bankNAme
char
30
Yes
银行名称
⑾表Category,用于存放商品分类信息。
序号
字段名
字段类型
字段长度
NULL
说明
1
ID
int
4
No
分类号
2
name
varchar
30
Yes
名称
3
bname
varchar
30
Yes
二级类名
4
aname
varchar
30
Yes
一级类名
5
descn
varchar
80
Yes
描述
6
topic
char
10
Yes
主题
⑿表ClientAddress,用户地址簿。
序号
字段名
字段类型
字段长度
NULL
说明
1
ID
int
4
No
地址号
2
clientID
int
4
Yes
客户号
3
name
char
20
Yes
姓名
4
address
char
50
Yes
地址
5
postacode
char
10
Yes
邮编
6
phone
char
15
Yes
座机
7
mobilePhone
char
15
Yes
移动电话
⒀表ClientFreeAccount,付费用户帐户。
序号
字段名
字段类型
字段长度
NULL
说明
1
ID
int
4
No
客户付费号
2
beginDate
datetime
8
Yes
开始时间
3
endDate
datetime
8
Yes
结束时间
4
freeAmount
int
4
Yes
费用总计
5
ClientID
int
4
Yes
客户号
6
ClientStateID
int
4
Yes
客户状态号
⒁表ClientState,客户状态。
序号
字段名
字段类型
字段长度
NULL
说明
1
ID
int
4
No
客户状态号
2
stateName
varchar
10
Yes
状态名
3
amount
int
4
Yes
总计
4
free
int
4
Yes
费用
⒂表CompanyFree,存放公司收费情况。
序号
字段名
字段类型
字段长度
NULL
说明
1
ID
Int
4
No
公司费用号
2
freeName
nvarchar
50
Yes
费用名称
3
free
int
4
Yes
费用
⒃表freeAccount,存放付费帐户信息
序号
字段名
字段类型
字段长度
NULL
说明
1
ID
int
4
No
付费帐户号
2
beginDate
datetime
8
Yes
开始时间
3
endDate
datetime
8
Yes
结束时间
4
companyFreeID
int
4
Yes
公司付费号
5
free
int
4
Yes
费用
6
CompanyID
int
4
Yes
公司号
7
freeAmount
int
4
Yes
费用总计
⒄表LineItemStatus,
序号
字段名
字段类型
字段长度
NULL
说明
1
ID
int
4
No
交易项目号
2
status
varchar
30
Yes
状态
⒅表Orders
序号
字段名
字段类型
字段长度
NULL
说明
1
ID
int
4
No
订单号
2
clientID
int
4
Yes
客户号
3
orderStateID
int
4
Yes
订单状态号
4
creatTime
datetime
8
Yes
创建时间
5
amount
float
8
Yes
总计
6
arriveTime
dateTime
8
Yes
到货时间
⒆表OrderStatus
序号
字段名
字段类型
字段长度
NULL
说明
1
ID
int
4
No
订单状态号
2
status
char
20
Yes
订单状态
⒇表ProductStatus,存放商品信息状态。
序号
字段名
字段类型
字段长度
NULL
说明
1
ID
int
4
No
商品状态号
2
status
char
20
Yes
商品状态
(21)表Requirment,求购信息表。
序号
字段名
字段类型
字段长度
NULL
说明
1
ID
int
4
No
求购号
2
companyID
int
4
Yes
公司号
3
clientID
int
4
Yes
客户号
4
productName
char
30
Yes
产品名称
5
demand
varchar
300
Yes
需求
6
amount
int
4
Yes
总计
7
unitPrice
char
20
Yes
心理价格
8
creatrDate
datetime
8
Yes
创建日期
9
endDate
datatime
8
Yes
结束日期
10
imageData
image
16
Yes
图片数据
11
categoryID
int
4
Yes
分类号
1
newGrade
char
6
Yes
新旧程度
viewTimes
int
4
Yes
浏览次数
(22)表userType,用户类型表。
序号
字段名
字段类型
字段长度
NULL
说明
ID
int
4
No
编号
Type
char
12
Yes
用户类型
5.2.3 项目进度计划
第六章 详细设计
由总体设计的设计方案可知,本电子商城系统设计相对复杂、庞大,由于篇幅和时间的限制,在这里只是从中挑选比较有代表性、关键性的几个重要模块作相应的论述。
6.1商家管理模块
6.1.1 商家注册
a.商家登记注册需求
商家需要提供:公司的名字,法人代表,所经营的行业,联系地址,邮政编码,座机,传真,手机号,所在省市,公司类型,公司主页,公司简介等信息;公司在注册成功后会返回一个公司注册ID号。
b.商家登记模块设计
c.部分相关代码
private void CompanyReg_ServerClick(object sender, System.EventArgs e)
{
DateTime now=DateTime.Now;
if(CompanyName.Text.Equals("可用")&&MemberName.Text.Equals("可用"))
{
if (pwd.Value.Equals(pwdre.Value))
{
companyDB CPY =new companyDB();
Session["CompanyID"]=CPY.Add(name.Value,attribName.SelectedValue,createName.Value ,now,pwd.Value,address.Value ,postalCode.Value,
email.Value,phone1.Value,phone2.Value,phone3.Value,introduce.Value,state.Value,city.Value,1,realName.Value,trade.Value ,website.Text,sex.SelectedValue);
Session["name"]=name.Value ;
Session["email"]=email.Value ;
Session["createName"]=createName.Value ;
Response.Redirect("reg_ok.aspx");
}
else
{
pwdState.Text="请重新输入你的密码!";
}
}
else
{
Label3.Text ="请确认您的用户名和公司名称是否可用!";
}
}
6.1.2 产品登记
a. 产品登记需求
需要选择产品的类别,输入产品的名称,数量,新旧程度,产品描述,图片,市场价格,单价,运费选择,支付方式选择,产品所在地,是否有保修,发票等信息。并确认是否将产品放入货架。
b. 产品登记模块设计
c.部分相关代码
private void productAdd_Click(object sender, System.EventArgs e)
{
//get imageData
HttpPostedFile UpFile = imageFile.PostedFile;
int FileLength = UpFile.ContentLength;
Byte[] ImageData =new Byte[FileLength];
Stream StreamObject= UpFile.InputStream ;
StreamObject.Read(ImageData,0,FileLength);
int CompanyID= int.Parse(Session["CompanyID"].ToString()) ;
float UnitPrice=float.Parse(unitPrice.Text);
float ListPrice=float.Parse(listPrice.Value);
int CategoryID=int.Parse(Session["CategoryID"].ToString() );
int Mailing;
int Express;
if(freightStyle.SelectedValue.Equals("买家承担运费"))
{
Mailing =int.Parse(mailing.Text);
Express =int.Parse(express.Text );
}
else
{
Mailing=0;
Express=0;
}
int Amount =int.Parse(amount.Text);
String Shelf="是";
if(shelf.Checked==false)
{
Shelf="否";
}
//产品状态
//1.有库存 2.无库存 3.一折 4. 。。。。。。
int StatusID=1;
productDB PDB = new productDB() ;
//注意 :系统正式运行时,要重新考虑给产品状态赋值 stateID
PDB.Add(CompanyID,name.Text,UnitPrice,ListPrice,intro.Value,DateTime.Now,CategoryID,ImageData,StatusID,freightStyle.SelectedValue,
Mailing,Express,payStyle.SelectedValue,guarantee.SelectedValue,invoice.SelectedValue,province.Text ,city.Text ,Amount,newGrade.SelectedValue,Shelf);
}
private void freightStyle_SelectedIndexChanged(object sender, System.EventArgs e)
{
if(freightStyle.SelectedValue.Equals("买家承担运费"))
{
Panel1.Visible=true;
}
else
{
Panel1.Visible =false;
}
}
6.1.3相关类库
public class productDB
{
public productDB()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/*增加商品*/
public void Add(int CompanyID,String ProductName,float UnitPrice,float ListPrice,String Introduce,DateTime UpdateTime,int CategoryID,Byte[] ImageData ,int StatusID,
String FreightStyle,int Mailing,int Express,String PayStyle,String Guarantee,String Invoice,String Province,String City,int Amount,
String NewGrade,String Shelf)
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("ProductsAdd", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterCompanyID = new SqlParameter("@CompanyID", SqlDbType.Int );
parameterCompanyID.Value = CompanyID;
myCommand.Parameters.Add(parameterCompanyID);
SqlParameter parameterProductName = new SqlParameter("@ProductName", SqlDbType.Char, 30);
parameterProductName.Value = ProductName;
myCommand.Parameters.Add(parameterProductName);
SqlParameter parameterUnitPrice = new SqlParameter("@UnitPrice", SqlDbType.Float);
parameterUnitPrice.Value = UnitPrice;
myCommand.Parameters.Add(parameterUnitPrice);
SqlParameter parameterListPrice = new SqlParameter("@ListPrice", SqlDbType.Float);
parameterListPrice.Value = ListPrice;
myCommand.Parameters.Add(parameterListPrice);
SqlParameter parameterIntroduce = new SqlParameter("@Introduce", SqlDbType.VarChar ,300);
parameterIntroduce.Value = Introduce;
myCommand.Parameters.Add(parameterIntroduce);
SqlParameter parameterUpdateTime = new SqlParameter("@UpdateTime", SqlDbType.DateTime);
parameterUpdateTime.Value = UpdateTime;
myCommand.Parameters.Add(parameterUpdateTime);
SqlParameter parameterCategoryID = new SqlParameter("@CategoryID", SqlDbType.Int);
parameterCategoryID.Value = CategoryID;
myCommand.Parameters.Add(parameterCategoryID);
SqlParameter parameterImageData = new SqlParameter("@ImageData ", SqlDbType.Image);
parameterImageData.Value = ImageData ;
myCommand.Parameters.Add(parameterImageData );
SqlParameter parameterStatusID = new SqlParameter("@StatusID", SqlDbType.Int);
parameterStatusID.Value = StatusID;
myCommand.Parameters.Add(parameterStatusID);
SqlParameter parameterFreightStyle = new SqlParameter("@FreightStyle", SqlDbType.Char ,12 );
parameterFreightStyle.Value = FreightStyle;
myCommand.Parameters.Add(parameterFreightStyle);
SqlParameter parameterMailing = new SqlParameter("@Mailing", SqlDbType.Int );
parameterMailing.Value = Mailing;
myCommand.Parameters.Add(parameterMailing);
SqlParameter parameterExpress = new SqlParameter("@Express", SqlDbType.Int );
parameterExpress.Value = Express;
myCommand.Parameters.Add(parameterExpress);
SqlParameter parameterPayStyle = new SqlParameter("@PayStyle", SqlDbType.Char ,15);
parameterPayStyle.Value = PayStyle;
myCommand.Parameters.Add(parameterPayStyle);
SqlParameter parameterGuarantee = new SqlParameter("@Guarantee", SqlDbType.Char ,4);
parameterGuarantee.Value = Guarantee;
myCommand.Parameters.Add(parameterGuarantee);
SqlParameter parameterInvoice = new SqlParameter("@Invoice", SqlDbType.Char ,4);
parameterInvoice.Value = Invoice;
myCommand.Parameters.Add(parameterInvoice);
SqlParameter parameterProvince = new SqlParameter("@Province", SqlDbType.Char ,10);
parameterProvince.Value = Province ;
myCommand.Parameters.Add(parameterProvince);
SqlParameter parameterCity = new SqlParameter("@City", SqlDbType.Char ,10);
parameterCity.Value = City;
myCommand.Parameters.Add(parameterCity);
SqlParameter parameterAmount = new SqlParameter("@Amount", SqlDbType.Int );
parameterAmount.Value = Amount;
myCommand.Parameters.Add(parameterAmount);
SqlParameter parameterBrowseTimes = new SqlParameter("@BrowseTimes", SqlDbType.Int );
parameterBrowseTimes.Value = 0;
myCommand.Parameters.Add(parameterBrowseTimes);
SqlParameter parameterNewGrade = new SqlParameter("@NewGrade", SqlDbType.Char ,6);
parameterNewGrade.Value = NewGrade;
myCommand.Parameters.Add(parameterNewGrade);
SqlParameter parameterComment = new SqlParameter("@Comment", SqlDbType.Char ,2);
parameterComment.Value = "No" ; //不推荐
myCommand.Parameters.Add(parameterComment);
SqlParameter parameterShelf = new SqlParameter("@Shelf", SqlDbType.Char ,2);
parameterShelf.Value = Shelf;
myCommand.Parameters.Add(parameterShelf);
SqlParameter parameterRate = new SqlParameter("@Rate", SqlDbType.Int );
parameterRate.Value = 0;
myCommand.Parameters.Add(parameterRate);
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
/*删除商品*/
public void Delete(int ID)
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("ProductsDelete", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterID = new SqlParameter("@ID", SqlDbType.Int );
parameterID.Value = ID;
myCommand.Parameters.Add(parameterID);
// Open the database connection and execute the command
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
public void ProductViewTimesAdd(int ID)
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("ProductViewTimesAdd", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterID = new SqlParameter("@ID", SqlDbType.Int );
parameterID.Value = ID;
myCommand.Parameters.Add(parameterID);
// Open the database connection and execute the command
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
public SqlDataReader ProductDetail(int ID)
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("productDetail", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterID = new SqlParameter("@ID", SqlDbType.Int );
parameterID.Value = ID;
myCommand.Parameters.Add(parameterID);
// Execute the command
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
// Return the datareader
return result;
}
public SqlDataReader ProductImage(int ID)
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("productImage", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterID = new SqlParameter("@ID", SqlDbType.Int );
parameterID.Value = ID;
myCommand.Parameters.Add(parameterID);
// Execute the command
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
// Return the datareader
return result;
}
6.2商城管理模块
6.2.1商城产品目录配置
a. 商城产品目录配置需求
配置产品目录,需要收集足够的产品类别信息,在该电子商城中,我们采用三层数级目录。
b. 商城产品目录配置模块设计
c. 商城产品目录配置部分相关代码
private void CategoryAdd_Click(object sender, System.EventArgs e)
{
adminDB SYS =new adminDB();
SYS.CategoryAdd(Name.Text,BName.Text,AName.Text,Desc.Value,"");
Name.Text="";
Desc.Value = "";
}
6.2.2 商城产品目录控件
a. 商城产品目录控件需求
1. 获取一级目录名称
2. 获取二级目录名称
3. 获取三级目录名称
4. 返回三级目录名称ID
b. 商城产品目录控件模块设计
c. 商城产品目录控件部分相关代码
//载入一级目录名称所有列表
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
adminDB Category = new adminDB();
ListBox1.DataSource= Category.Category_AName_List();
ListBox1.DataTextField="AName";
ListBox1.DataBind();
}
// 在此处放置用户代码以初始化页面
}
//获取一级目录名称
private void ListBox1_IndexChanged(object sender, System.EventArgs e)
{
adminDB Category = new adminDB();
ListBox2.DataSource= Category.Category_BName_List(ListBox1.SelectedItem.Text);
ListBox2.DataTextField="BName";
ListBox2.DataBind();
Label2.Text=ListBox1.SelectedItem.Text;
}
//获取二级目录名称
private void ListBox2_IndexChanged(object sender, System.EventArgs e)
{
adminDB Category = new adminDB();
ListBox3.DataSource= Category.Category_Name_List(ListBox2.SelectedItem.Text,ListBox1.SelectedItem.Text );
ListBox3.DataTextField="name";
ListBox3.DataValueField="ID";
ListBox3.DataBind();
Label2.Text=ListBox1.SelectedItem.Text+"/"+ListBox2.SelectedItem.Text;
}
//获取三级目录名称
private void ListBox3_SelectedIndexChanged(object sender, System.EventArgs e)
{
Label2.Text=ListBox1.SelectedItem.Text+"/"+ListBox2.SelectedItem.Text+"/"+ListBox3.SelectedItem.Text+" ID:"+ ListBox3.SelectedValue;
CategoryID=int.Parse(ListBox3.SelectedValue);
Session["CategoryID"]=CategoryID.ToString();
//返回三级目录名称ID 放入Session 中
}
------ ListBox 控件绑定产品类别
------ DropDownList 控件绑定产品类别
6.2.3商城产品展现
a. 商城产品展现需求
获取产品类别名称,调用相应的系统接口,返回数据集合。
b. 商城产品展现模块设计
c. 商城产品展现部分相关代码
主页产品目录的绑定:
用以下代码绑定:
手机、通讯设备、卡
CDMA >
第一级产品类别展现:
前台产品目录和产品信息绑定代码:
分别使用DataList 与 Repeater WEB 控件。
DataList绑定该一级目录下的所有二级目录:
Repeater 绑定该一级目录下的所有商品:
border="0">
|
|
<%#DataBinder.Eval(Container.DataItem,"unitPrice")%>
|
<%#DataBinder.Eval(Container.DataItem,"province")%>
<%#DataBinder.Eval(Container.DataItem,"Pcity")%>
|
|
后台相应代码:
private void AName_SelectedIndexChanged(object sender, System.EventArgs e)
{
String AName=DropDownList1.SelectedValue;
Session["AName"]=AName;
Image1.ImageUrl="Images\\"+AName+".GIF";
adminDB Category = new adminDB();
//一级目录下,所有二级目录的绑定;
BName.DataSource =Category.Category_BName_List(AName);
BName.DataBind();
//一级目录下,所有商品的绑定;
ProductList.DataSource =Category.Products_AName_List(AName);
ProductList.DataBind();
}
第二级产品类别展现:
二级目录下的所有目录绑定和一级目录下情况一样,这里不做说明。
后台相应代码:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
String AName=Session["AName"].ToString();
String BName = (String)(Request.QueryString["BName"]);
Session["BName"]=BName;
ANameT.Text =AName;
BNameT.Text=BName;
adminDB Category = new adminDB();
DataList1.DataSource =Category.Category_Name_List(BName,AName);
DataList1.DataBind();
Repeater2.DataSource =Category.Products_BName_List(BName);
Repeater2.DataBind();
}
}
第三级产品展现
后台相应代码:
if(!IsPostBack)
{
String AName =Session["AName"].ToString() ;
String BName =Session["BName"].ToString();
String Name =(String)(Request.QueryString["Name"]);
Session["Name"]=Name;
ANameT.Text =AName;
BNameT.Text=BName;
NameT.Text =Name;
adminDB Category = new adminDB();
Repeater1.DataSource =Category.Products_Name_List(Name);
Repeater1.DataBind();
}
6.2.4 数据库备份与还原
1)数据库备份
public bool Backup()
{
string path=@"C:\BACKUP\ESMS.bak";
string backupSql="use ESMS backup database ESMS to disk="+path;
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand(backupSql,myConnection);
try
{
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
return true;
}
catch(Exception ex)
{
return false;
}
finally
{
myCommand.Connection.Close();
}
}
2) 还原数据库
public bool Restore()
{
string path=@"C:\BACKUP\ESMS.bak";
string backupSql="use ESMS restore database ESMS from disk="+path;
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand(backupSql,myConnection);
try
{
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
return true;
}
catch(Exception ex)
{
return false;
}
finally
{
myCommand.Connection.Close();
}
}
6.2.5相关类库
public class adminDB
{
public adminDB()
{
}
//产品类型配置
2
public void CategoryAdd(String Name, String BName,String AName,String Desn,String Topic)
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("CategoryAdd", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterName = new SqlParameter("@Name", SqlDbType.VarChar ,30);
parameterName.Value = Name;
myCommand.Parameters.Add(parameterName);
SqlParameter parameterBName = new SqlParameter("@BName", SqlDbType.VarChar ,30);
parameterBName.Value = BName;
myCommand.Parameters.Add(parameterBName);
SqlParameter parameterAName = new SqlParameter("@AName", SqlDbType.VarChar ,30);
parameterAName.Value = AName;
myCommand.Parameters.Add(parameterAName);
SqlParameter parameterDesn = new SqlParameter("@Desn", SqlDbType.VarChar,80 );
parameterDesn.Value = Desn;
myCommand.Parameters.Add(parameterDesn);
SqlParameter parameterTopic = new SqlParameter("@Topic", SqlDbType.Char ,10 );
parameterTopic.Value = Topic;
myCommand.Parameters.Add(parameterTopic);
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
//产品列表
public SqlDataReader Category_AName_List()
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("Category_AName_List", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Execute the command
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
// Return the datareader
return result;
}
public SqlDataReader Category_BName_List(String AName)
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("Category_BName_List", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterAName = new SqlParameter("@AName", SqlDbType.VarChar ,30);
parameterAName.Value = AName;
myCommand.Parameters.Add(parameterAName);
// Execute the command
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
// Return the datareader
return result;
}
public SqlDataReader Category_Name_List(String BName,String AName)
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("Category_Name_List", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterBName = new SqlParameter("@BName", SqlDbType.VarChar ,30);
parameterBName.Value = BName;
myCommand.Parameters.Add(parameterBName);
SqlParameter parameterAName = new SqlParameter("@AName", SqlDbType.VarChar ,30);
parameterAName.Value = AName;
myCommand.Parameters.Add(parameterAName);
// Execute the command
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
// Return the datareader
return result;
}
public SqlDataReader Products_AName_List(String AName)
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("Products_AName_List", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterAName = new SqlParameter("@AName", SqlDbType.VarChar ,30);
parameterAName.Value = AName;
myCommand.Parameters.Add(parameterAName);
// Execute the command
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
// Return the datareader
return result;
}
public SqlDataReader Products_BName_List(String BName)
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("Products_BName_List", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterBName = new SqlParameter("@BName", SqlDbType.VarChar ,30);
parameterBName.Value = BName;
myCommand.Parameters.Add(parameterBName);
// Execute the command
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
// Return the datareader
return result;
}
public SqlDataReader Products_Name_List(String Name)
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("Products_Name_List", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterName = new SqlParameter("@Name", SqlDbType.VarChar ,30);
parameterName.Value = Name;
myCommand.Parameters.Add(parameterName);
// Execute the command
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
// Return the datareader
return result;
}
6.10公共服务系统
6.10.1电子公告牌服务
电子公告牌,类似一个新闻发布系统,向用户发布系统消息以及统计信息。所以它的数据来源有两种,一是系统管理员发布的系统公告,二是统计管理模块生产的统计数据。在此就不再做更多的说明。
6.10.2资讯服务
咨询服务具体提供以下信息,其中大部分都是网络资源和静态的网站导航说明,在此不做更多描述,只给出下列具体信息列表。
l 网上投述服务
l 网上商情服务
l 商城指南
提供的均为静态文本信息。
1.用户须知
2.商家须知
3.购物指南
4.CA安全知识介绍
l 行业价格查询
· 建材价格
· 汽车报价 · 药品价格查询 · 农产品价格查询 · 工业品价格查询
l 电子商务助手
· 全球贸易资源指南· 世界买家库· 中国商品库· 中国专利检索· 国际专利检索· 在线帮助 · 行业代码· 帮您算税· 度量制式转换
l 商务出行
· 列车时刻表 · 飞机航班 · 天气预报· 酒店查询 · 在线地图 · 网站翻译 · 每日黄历· 邮政编码 · 行政区域 · 世界时间查询
6.10.3商城导购服务
a. 商城导购服务需求
需要选择搜索类别:商品或是商家。然后录入要查询的内容。
b. 商城导购服务模块设计
c. 商城导购服务部分相关代码
存储过程:
CREATE Procedure ProductSearch_Name
(
@ProductName char(30)
)
AS
SELECT
Products.ID as PID,name,productName,state,city,unitPrice
FROM
Products,Company
WHERE
productName LIKE '%'+@ProductName+ '%'
and
Company.ID=Products.companyID
GO
相关类库:
public SqlDataReader ProductSearchByName(String ProductName)
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("ProductSearch_Name", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterProductName = new SqlParameter("@ProductName", SqlDbType.Char, 30);
parameterProductName.Value = ProductName;
myCommand.Parameters.Add(parameterProductName);
// Execute the command
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
// Return the datareader
return result;
}
一般搜索:
相关代码:
private void searchByName(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
String Name = Convert.ToString(Request.QueryString["Name"]);
productDB PDB =new productDB();
If(DropDownList.selectedValue = = “商品”)
{
SqlDataReader result=PDB.ProductSearchByName(Name);
//商品搜索
DataList1.DataSource =result;
DataList1.DataBind();
}
else
{
SqlDataReader result=PDB.CompanySearchByName(Name);
//商家搜索
DataList1.DataSource =result;
DataList1.DataBind();
}
}
//精确搜索搜索
高级搜索
精确搜索:
相关代码:
private void searchAdvance_Click(object sender, System.EventArgs e)
{
productDB PDB =new productDB();
SqlDataReader
result =PDB.ProductSearch(name.Text,
int.Parse(Session["CategoryID"].ToString()));
Repeater1.DataSource=result;
Repeater1.DataBind();
//绑定数据到控件
}
6.10.4求购信息发布系统
a. 求购信息发布系统需求
需要获取发布求购信息者的身份,是商家还是客户。
需要有求购商品的基本信息:
商品的类别,名称,价格,要求,数量,新旧程度,样品图片等。
b. 求购信息发布系统模块设计
c. 求购信息发布系统部分相关代码
相关类库:
//添加求购信息。
public void RequirementAdd(int CompanyID,int ClientID,String ProductName,String Demand,int Amount,
String UnitPrice,DateTime EndDate,int CategoryID,byte[] ImageData,String NewGrade)
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("RequirementAdd", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterCompanyID = new SqlParameter("@CompanyID", SqlDbType.Int );
parameterCompanyID.Value = CompanyID;
myCommand.Parameters.Add(parameterCompanyID);
SqlParameter parameterClientID = new SqlParameter("@ClientID", SqlDbType.Int );
parameterClientID.Value = ClientID;
myCommand.Parameters.Add(parameterClientID);
SqlParameter parameterProductName = new SqlParameter("@ProductName", SqlDbType.Char, 30);
parameterProductName.Value = ProductName;
myCommand.Parameters.Add(parameterProductName);
SqlParameter parameterDemand = new SqlParameter("@Demand", SqlDbType.VarChar ,300);
parameterDemand.Value = Demand;
myCommand.Parameters.Add(parameterDemand);
SqlParameter parameterAmount = new SqlParameter("@Amount", SqlDbType.Int );
parameterAmount.Value = Amount;
myCommand.Parameters.Add(parameterAmount);
SqlParameter parameterUnitPrice = new SqlParameter("@UnitPrice", SqlDbType.Char,20);
parameterUnitPrice.Value = UnitPrice;
myCommand.Parameters.Add(parameterUnitPrice);
SqlParameter parameterCreateDate = new SqlParameter("@CreateDate", SqlDbType.DateTime);
parameterCreateDate.Value =DateTime.Now;
myCommand.Parameters.Add(parameterCreateDate);
SqlParameter parameterEndDate = new SqlParameter("@EndDate", SqlDbType.DateTime);
parameterEndDate.Value =EndDate;
myCommand.Parameters.Add(parameterEndDate);
SqlParameter parameterCategoryID = new SqlParameter("@CategoryID", SqlDbType.Int);
parameterCategoryID.Value = CategoryID;
myCommand.Parameters.Add(parameterCategoryID);
SqlParameter parameterImageData = new SqlParameter("@ImageData ", SqlDbType.Image);
parameterImageData.Value = ImageData ;
myCommand.Parameters.Add(parameterImageData );
SqlParameter parameterNewGrade = new SqlParameter("@NewGrade", SqlDbType.Char ,6);
parameterNewGrade.Value = NewGrade;
myCommand.Parameters.Add(parameterNewGrade);
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
}
//显示详细求购信息。
public SqlDataReader RequireDetail(int ID)
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("RequireDetail", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterID = new SqlParameter("@ID", SqlDbType.Int );
parameterID.Value = ID;
myCommand.Parameters.Add(parameterID);
// Execute the command
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
// Return the datareader
return result;
}
//显示近期的求购信息。
public SqlDataReader RequireIndex()
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ESMS"]);
SqlCommand myCommand = new SqlCommand("RequireIndex", myConnection);
// Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
// Execute the command
myConnection.Open();
SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
// Return the datareader
return result;
}
显示近期的求购信息:
前台代码:
[求购]<%# DataBinder.Eval(Container.DataItem,"productName") %>
后台代码:
//绑定供求信息
productDB PDB=new productDB();
DataList1.DataSource=PDB.RequireIndex();
DataList1.DataBind();
添加求购信息:
private void requireAdd_Click(object sender, System.EventArgs e)
{
//get imageData
HttpPostedFile UpFile = imageFile.PostedFile;
int FileLength = UpFile.ContentLength;
Byte[] ImageData =new Byte[FileLength];
Stream StreamObject= UpFile.InputStream ;
StreamObject.Read(ImageData,0,FileLength);
int CompanyID=int.Parse(Session["CompanyID"].ToString());
int ClientID =int.Parse(Session["ClientID"].ToString());
DateTime EndDate=Calendar1.SelectedDate;
productDB PDB =new productDB();
PDB.RequirementAdd(CompanyID,ClientID,name.Text,intro.Value,int.Parse(amount.Text),"¥"+unitPrice.Text+" -¥"+topPrice.Text,
EndDate,int.Parse(Session["CategoryID"].ToString()),ImageData,newGrade.SelectedValue);
}
6.10.5广告系统
1)自定义控件实现:
主页产品广告展现:
相关技术:
使用自定义控件 adv_productList.ascx
相关代码:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
int[] productID=new int[8];
productID[0]=23;
productID[1]=24;
productID[2]=13;
productID[3]=10;
productID[4]=11;
productID[5]=14;
productID[6]=15;
productID[7]=8;
if(!IsPostBack)
{
productDB PDB =new productDB();
//第一个商品广告
SqlDataReader result=PDB.ProductDetail(productID[0]);
result.Read();
HyperLink1.Text = (String) result["productName"];
HyperLink1.NavigateUrl = "Product\\showDetail.aspx?ProductID="+productID[0];
Image1.ImageUrl = "Product\\ReadImage.aspx?ProductID="+productID[0];
//第二个商品广告
result =PDB.ProductDetail(+productID[1]);
result.Read();
HyperLink2.Text = (String) result["productName"];
HyperLink2.NavigateUrl = "Product\\showDetail.aspx?ProductID="+productID[1];
Image2.ImageUrl = "Product\\ReadImage.aspx?ProductID="+productID[1];
result =PDB.ProductDetail(+productID[2]);
result.Read();
HyperLink3.Text = (String) result["productName"];
HyperLink3.NavigateUrl = "Product\\showDetail.aspx?ProductID="+productID[2];
Image3.ImageUrl = "Product\\ReadImage.aspx?ProductID="+productID[2];
result =PDB.ProductDetail(+productID[3]);
result.Read();
HyperLink4.Text = (String) result["productName"];
HyperLink4.NavigateUrl = "Product\\showDetail.aspx?ProductID="+productID[3];
Image4.ImageUrl = "Product\\ReadImage.aspx?ProductID="+productID[3];
result =PDB.ProductDetail(+productID[4]);
result.Read();
HyperLink5.Text = (String) result["productName"];
HyperLink5.NavigateUrl = "Product\\showDetail.aspx?ProductID="+productID[4];
Image5.ImageUrl = "Product\\ReadImage.aspx?ProductID="+productID[4];
result =PDB.ProductDetail(+productID[5]);
result.Read();
HyperLink6.Text = (String) result["productName"];
HyperLink6.NavigateUrl = "Product\\showDetail.aspx?ProductID="+productID[5];
Image6.ImageUrl = "Product\\ReadImage.aspx?ProductID="+productID[5];
result =PDB.ProductDetail(+productID[6]);
result.Read();
HyperLink7.Text = (String) result["productName"];
HyperLink7.NavigateUrl = "Product\\showDetail.aspx?ProductID="+productID[6];
Image7.ImageUrl = "Product\\ReadImage.aspx?ProductID="+productID[6];
result =PDB.ProductDetail(+productID[7]);
result.Read();
HyperLink8.Text = (String) result["productName"];
HyperLink8.NavigateUrl = "Product\\showDetail.aspx?ProductID="+productID[7];
Image8.ImageUrl = "Product\\ReadImage.aspx?ProductID="+productID[7];
}
2) 使用AdRotator Web 控件实现
相关技术:
使用web控件 AdRotator
载入的XML代码:
AdvertisementFile : Ads.xml
Ads\20050520066.gif
http://www.sohu.com
http://www.sohu.com
100
Topic1
Ads\20050519019.gif
http://www.taobao.com
http://www.taobao.com
100
Topic1
Ads\sports_0530_03.JPG
http://www.123trading.com
http://www.123trading.com
10
Topic1
6.11支持子系统
6.11.1邮件系统
1) 功能概述:
邮件系统负责客户,商家,商城,物流公司的通信。
负责发送以下邮件:
一,购物流程控制管理阶段
1. 买方生成定货单邮件
2. 卖方变更定货单邮件
3. 买方变更定货单邮件
4. 卖方确认定货单邮件
5. 买方确认定货单邮件
6. 卖放生成发货单邮件
7. 物流确认发货单邮件
8. 买方确认到货单邮件
9. 物流发出提货通知单邮件
10. 买方发出到货回单邮件
11. 买方向卖放付款邮件
12. 卖方确认到款邮件
13. 卖方向物流付款邮件
14. 物流确认到款邮件
二,注册认证阶段
1. 客户注册认证邮件
2. 商家注册认证邮件
3. 物流公司注册认证邮件
三,信息发布阶段
1. 系统信息发布
2. 商家信息发布
3. 礼品信息发布
4. 产品邮件广告信息发布
5. 推荐产品给好友
2) 功能实现:
ESMS系统使用Jmail组件实现邮件的收发。
Jmail是一个使用非常广泛的收发邮件的组件,发送邮件速度快,功能丰富并且不需要诸如Eudora,Exchange,Outlook 之类的邮件客户端。并且是免费。
下载地址:http://www.dimac.net . 下载w3Jmail free edition
在ASP.NET中使用Jmail组件实现邮件的收发。
第一步:在项目中引用Jmail组件:Jmail.dll
第二步:用类封装Jmail组件功能,使其适合ESMS系统的需要
public class Jmail
{
private jmail.Message mailMessage;
private string smtpServer;
public Jmail()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void SenderReg(string smtpServer,string smtpUser,string smtpPwd,string senderEmail,string name,string subject,string body)
{
mailMessage= new jmail.MessageClass();
mailMessage.Charset ="GB2312";
mailMessage.Encoding ="Base64";
mailMessage.ContentType="text/html";
mailMessage.ISOEncodeHeaders=false; //是否将信头编码成ISO-8859-1 方式
mailMessage.Priority=Convert.ToByte(1);
mailMessage.From = senderEmail;
mailMessage.FromName =name;
mailMessage.Subject = subject;
mailMessage.MailServerUserName=smtpUser;
mailMessage.MailServerPassWord=smtpPwd;
this.smtpServer = smtpServer;
mailMessage.Body=body;
}
//添加收信人
public void sendAddRecipient(string receiverEmail)
{
mailMessage.AddRecipient(receiverEmail,"","");
}
//密送
public void sendAddRecipientBCC(string receiverEmail)
{
mailMessage.AddRecipientBCC(receiverEmail,"");
}
//抄送
public void sendAddRecipientCC(string receiverEmail)
{
mailMessage.AddRecipientCC(receiverEmail,"","");
}
//增加附件 attPath= [Input File Field].PostedFile.FileName;
public void sendAddAttachment(string attPath)
{
mailMessage.AddAttachment(@attPath,true,attPath.Substring(attPath.LastIndexOf(".")+1,3));
}
public bool sendNow()
{
if(mailMessage.Send(this.smtpServer,false))
{
return true;
}
else
{
return false;;
}
this.mailMessage=null;
}
}
第三步:调用Jmail.cs类库的功能
Jmail mail = new Jmail();
//Register
//在body.text 中写入具体的信件内容。
mail.SenderReg(smtpServer.Text.Trim(),user.Text.Trim(),pwd.Text.Trim(),email.Text.Trim(),
name.Text.Trim(),subject.Text.Trim(),body.Text.Trim());
//add attachments
if(attachment.PostedFile.FileName!="")
{
mail.sendAddAttachment(attachment.PostedFile.FileName);
}
//add receivers
mail.sendAddRecipient(receiver.Text.Trim());
mail.sendAddRecipientBCC("vincentqiu@km169.net");
mail.sendAddRecipientCC("vincentqiu@hotmail.com");
//send
if(mail.sendNow())
{
Response.Write("send successfully !");
}
else
{
Response.Write("send faile !");
};
ESMS通过该邮件支持系统,根据不同的请求,套用具体的邮件内容模版,自动发送相应的邮件。
3) 存在问题:
该邮件支持系统,还没有实现发送网页邮件功能。而该功能的实现,将有助于提高系统的灵活性和可操作性。对于电子商城的管理,产品广告的发送,定单的处理都有很大的帮助。
6.11.2站内通信系统
6.11.3无线应用系统
第七章 系统配置
7.1对硬件设备的规定
数据库系统
Cpu : 3.0 G
内存: 2.0 G
硬盘空间:240 G
WEB服务器和应用服务器
Cpu : 3.0 G
内存: 3.0 G
硬盘空间:80 G
客户端
Cpu : 1.0 G
内存: 128 M
硬盘空间:20 G
7.2运行所需的支持软件的规定
数据库系统
操作系统:Windows 2003 Advance Server
数据库系统:Microsoft SQL Server 2000
WEB服务器
操作系统:Windows 2003 Advance Server
WEB 服务器:IIS 6.0
应用平台:ESMS V1.0
客户端
操作系统:Windows 98 / NT
浏览器:IE 6.0
7.3系统配置过程
7.3.1系统部署
1.IIS 6.0
2.Microsoft .NET Framework SDK v1.1
3.数据库安装,ESMS.sql
4.把ESMS放到 C:\Inetpub\wwwroot 并设成默认网站,
7.4..2系统初始化
1.用户状态,
2.商家状态,
3.定单状态,
4.产品状态,
5.产品分类,
6.行业分类,
7.定单状态,
8.邮件系统的配置 ,安装W3JMail 并在项目中引用中添加jmail.dll;
第八章 测试及性能分析
8.1 功能测试
功能测试的主要内容是按实际操作的数据向系统的各个功能模块输入数据,检测输出结果是否符合预期要求。
8.2 系统测试
在对各个模块的测试完成后对整个系统作一个完整的测试,以检验各模块在联合运行时运行结果是否符合预期要求。
8.3 性能分析
在实际测试中,打开历史客人的资料大概需要5~10秒,为一名客人办理入住需要5~10秒,统计一个客人的费用情况小于10秒,产生客人电话消费记录少于3秒。
8.4 改进意见
基于本系统要求的开发时间比较短,开发力量有限,有些隐性的问题在调试的过程中还没有出现,希望通过用户反馈回来的信息,作出调整,及时修正错误、完善所需的功能。
结束语
本电子商城系统,由于开发周期短再加上本人能力有限,只实现了电子商城的功能框架。需要改进和添加的地方很多,我想只要不断的去研究这个领域,汲取优秀的思想和先进的技术。这个电子商城系统将变得更加完善。
致谢
在本次毕业设计中,曾遇到过不少问题,如果单靠我个人的努力,很难按时完成毕业设计,在此,我衷心感谢我的指导老师——付晓东老师,我从付晓东老师身上学到了很多东西。付老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我获益非浅。他无论在理论上还是在实践中,都给与我无私帮助和悉心的教导,使我的毕业设计得以顺利地按时完成。还要感谢学校领导、班主任、各位同学对我们的关怀、帮助,为我们提供了良好的设计环境以及各方面的支持。参考文献
[1] 季久峰: 专家门诊-ASP.NET 开发答疑》 – 人民邮电出版社 2004.9
[2] Chris Ullman:《Beginning ASP.NET 1.1 with Visual C# .NET 2003》- by Wrox Press 2004.4
[3] Joseph Schmuller:《Sams Teach Yourself UML in 24 Hours》3 Edition - by Sams 2004.8
[4] Sean Dillon,Christopher Beck etc:《Beginning Oracle Programming》- by Wrox Press 2002.11
[5] Martin Bond,Dan Haywood,Debbie Law etc: 《21天学通J2EE》- by Wrox Press 2002.11
[6] 袁鹏飞:《SQL Server 7.0数据库系统管理与应用开发》 – 人民邮电出版社 1999.5
[7] Andrew Filev:《Professional UML Using Visual Studio .Net》by Wrox Press 2002.12
[8] 黄健英,李成岳:《解密中国电子商务》 – 中央民族大学出版社 2000.1
[9] Simon Robison:《Professional C#》(3nd edition) by Wrox Press Ltd 2004.5
[10] John Kauffman:《Beginning ASP.NET 2.0 Databases: Beta Preview》by Wrox Press 2005.4