版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录目 录1第一章 系统概述31.1 系统开发的目的与意义31.2 系统的基本概况3第二章 系统分析42.1 系统目标设计42.2 系统功能模块42.2.1 系统功能模块42.3 系统的功能和特点52.3.1 系统主要功能52.3.2 系统主要特点72.4 系统开发工具82.4.1 前台开发工具82.4.2 后台开发工具82.5 数据库设计92.5.1 系统前台设计92.5.2 系统数据流图设计102.5.3 概念结构设计102.5.4 逻辑结构设计112.5.5 数据库的物理设计12第三章 系统的实现153.1 商品销售子系统的实现153.1.1 前台销售界面实现153.1.2 用户管理模
2、块的实现163.1.3 邮件发送模块的实现173.1.4 订单检索模块的实现173.1.5 公告发布模块的实现183.1.6 在线订购模块的实现183.2 订单管理子系统243.2.1 订单管理模块的实现243.2.2 产品信息管理模块的实现263.2.3 个人信息管理模块的实现263.2.4 站点通知管理模块的实现273.2.5 客户信息管理模块的实现273.2.6 邮件管理模块的实现273.2.7 折扣信息管理模块的实现28系统设计总结29参考文献30第一章 系统概述1.1 系统开发的目的与意义随着网络时代的发展,电子商务即将成为人们日常生活中的一部分。同时也即将成为一种时尚。在人类生活的
3、快节奏当中,这必将代替传统的商品交换手段而成为一种主流。电子商务无论在销售环节、售后服务还是维护方面,都有着传统商品交换手段所不可比拟的优势。它的诞生,无论是企业还是客户,都将从中受益。然而,在其中对客户的订单管理却是显得尤为重要,它包括了对订单整理与统计、客户所需商品和支付方式的选定,因此它成为了维系企业与客户之间信誉度的一个至关重要的筹码。该系统设计的初衷就是让企业的资金回笼得更快、服务更方便。而为客户提供更方便、更安全的支付方式。以此来推动电子商务的发展。1.2 系统的基本概况该系统分为前台的销售系统和后台的订单管理系统,在该商务运作系统中,订单模块其主要用来分析商品订单的基本信息,并根
4、据商品预计成本确认标准,计算出每张订单的预计成本作为历史记录存入数据库中,待日后分析使用。订单执行模块由商务部操作,用来指定并执行订单的催赶计划。此外,订单执行模块还可以协助决策者了解成本差异,及时发现问题,及时制定方案解。而前台的销售系统包括了商品信息的发布、商品的查询、和客户资料的管理。它沿用了windows的窗体管理模式,使得客户能更好的在该系统中选购自己所要的商品。对客户的订单如有未处理的订单,客户可以方便的联系管理员,以便更快的处理客户订单。第二章 系统分析2.1 系统目标设计该系统将能扩展为对多种商品的销售管理,它可以分为客户订购系统和管理员管理系统两部分。订单管理系统的功能分析如
5、下:1、客户订购系统的主要功能要求用户可以随时登陆或注册,购物车中的商品不会丢失。用户可以随时找回密码。用户申诉功能,如果用户订单未被处理,可以随时提出申诉(只要提供订单编号和用户帐号即可)。用户在最后支付时,可选择不同的支付方式。 用户可以随时查看站内公告。 用户可以在线搜索商品信息。 用户可以随时更改自己的资料和密码。2、管理员管理系统的功能要求用户管理(批量查看用户资料,能对用户进行编辑和删除)。订单管理(批量查看所有订单、根据多种方式查询如用户号、订单号、订单提交日期)。站内邮件管理(可接收和查看邮件)。商品管理(批量查看所有商品、添加商品、查看/修改/删除商品)。其它管理部分(添加/
6、编辑/删除公告、设置用户折扣比例、设置用户级别、设置积分与级别关系、添加/编辑/删除支付方式)。管理员管理(超级管理员可添加/修改/删除普通管理员)。2.2 系统功能模块2.2.1 系统功能模块该系统的功能模块共分为商品销售子系统功能模块图和订单管理子系统的功能模块图,在销售系统模块中,同时也包括了对客户功能模块的设计,此将其合并为总的系统功能模块图付上,如图2.1。图2.1 前台子系统功能模块图2.3 系统的功能和特点2.3.1 系统主要功能1、 客户管理功能销售子系统的面向对象是注册会员和非注册游客,对于非注册客户,系统将不提供销售服务,只提供普通的商品浏览和通知查看等低级服务,而对系统注
7、册会员则提供该系统中的所有功能,客户可以在线注册会员,同时提供相应的资料修改、密码修改、密码查询、订单查询、发送邮件和在线购物等功能。2、 客户邮件发送功能该系统只提供给客户一个发送邮件的功能,同时注册客户可以在查看自己未处理订单时随时给客户发送邮件,系统将自动记录该邮件的标题(提示相应的订单未被处理)。3、 客户的购物车功能在客户登陆进入系统并选购第一件商品后,系统将自动进行记录,提供给客户一个形象的购物车。该购物车将对客户所选购的商品进行跟踪记录,客户可以随时查看自己的购物车,同时对购物车内的商品做数量的修改,即时统计购物车中商品的数量、价格、总金额。该购物车将一直保存,直到客户跳出该系统
8、或者该订单被提交后才给予清除。4、 订单管理功能该功能将实现很多的智能统计功能。首先,在客户选购商品时,系统将记录客户所选购的商品种类和该商品的数量,随着客户的提交,系统将自动生成一订单号(以客户提交的系统时间为准),该订单提交后将随之记录客户帐号、订单总金额、支付方式等信息。同时系统将该订单的详细信息也做了相应的记录(将属于该订单的商品号、商品数量和订单号)至此,销售子系统的订单生成功能到此结束。在系统管理子系统中,将继续对客户所提交的订单进行管理,功能包括订单的删除、查看、处理和信息的统计与分析。在订单的处理中,系统将自动对订单的分值与客户的分值进行处理,同时将更新客户的等级信息。另一方面
9、,系统也将对商品的数量进行更改,实现了智能的即时更新。而在订单分析时,管理员可以查看到订单的总金额,订单的利润。同时管理员还可以按月统计订单,系统将自动列出管理员所需要的信息。由图2.2可知订单操作的具体流程。5、 通知管理功能管理员可以在线管理通知、包括通知的删除、更新、插入等操作,同时客户可以随时查看系统通知。6、 商品搜索功能公司将提供客户一搜索商品信息的平台,客户可以随时按自己所要查看的类别进行搜索。同时在商品类别中系统将列出所有现有商品种类,客户可以对其进行模糊或精确的查询。最后所得到的商品信息将以表格的形式列出,同时客户可以查看商品的详细信息。7、 其它管理功能管理员可对商品进行插
10、入、更新和删除操作,同时在商品信息中将包括商品的价格、优惠价格、和成本价格。只有当这三个信息全部填写完毕,系统才给订单进行统计。 管理员可对邮件进行编辑,其主要包括了邮件的删除和查看。 管理员可以管理其它如折扣信息的管理、商品种类等相应信息。2.3.2 系统主要特点1、该系统的购物车可以记录客户所选购的所有商品,对非注册客户,系统也同样将保留其选购商品记录,待该顾客注册后购物车中的信息依然存在。具体购物流程图如图2.3:图2.3 购物流程图对未执行的 订单加备注订单执行进度流程图显示现有未执行完的订单选择其他的订单跟踪操作显示所有订单加备注内容订单显示会员登陆订单的详细内容订单的详细内容查看所
11、有订单参考订单 的执行流程查看未执行完的订单图2.2 订单管理流程图块图2、该系统对客户实行了等级的管理,系统将自动更新客户的等级(根据其积分的多少来判断该客户所处的等级状态),同时在客户购买商品时,客户可以选择是否启用打折,如果选用打折,系统将自动根据其折扣值进行打折,在该订单提交处理时,系统将根据该折扣值和订单的分值对客户进行积分和等级的更新。3、该系统做到了高智能的商品管理,在客户的订单处理后,商品库的数据也将根据该订单中的商品号和商品数量做相应的更改,从而给管理员减少了工作量,同时也避免了数据更改所发生不必要的错误。4、订单统计将给管理员统计了不少的信息,由管理员自行选择来统计相应的数
12、据,包括了在某一个月来所有成交的订单数、交易总金额、利润、成本价等信息。2.4 系统开发工具2.4.1 前台开发工具JSP技术的概述JSP是一种动态创建Web页面的解释程序。通过对JSP代码的解释执行,他可以向Web浏览器输出标准的Html代码供浏览器调用,还可以通过一些由java 编写的组件JavaBean来配合使用。而且它有着“一次编写,处处使用”的方便。同样在开发动态WEB网站的还有微软的ASP开发语言,同asp相比,它最大的好处就是以上所说的就是它的跨平台性,我们可以在微软的windows下面使用,同样也可在unix操作系统下面使用,甚至其它更多的平台下。还有一个比较突出的就是使用JS
13、它能帮助你有效地把表达与内容分离开。从而更能有效的开发出高性能和安全性的三层结构。另外JSP所产生的执行结果都是标准的Html格式。而且这些程序是在服务器端执行,使用一般的浏览器(如IE和Netscape或其它浏览器)都可以正确的获得他的执行结果,并且将JSP执行的结果直接在浏览器中浏览。2.4.2 后台开发工具Orcale技术的概述Orcale数据库是Orcale公司的商品,它属于比较大型的关系型数据库,相比微软的SQL SERVER 2000数据库系统,它有着更高效、可靠安全的数据管理,现在的Orcale 9i加强了对网络计算的支持,适合于企业级高强度的网络计算。而出于更多的考虑的是Orc
14、ale能与java融合的十分默契,同时它能全面高效的支持SQLJ(它是在java编程语言中静态嵌入SQL的编程语言)。为了能发挥jsp的更大的作用,于是在后台选择了Orcale。2.5 数据库设计2.5.1 系统前台设计 非注册客户可以浏览系统中的所有商品信息、同时查看站点通知。而其它功能如在线购物、邮件的发送、订单检索功能都只为注册客户所提供。注册客户可随时在线订购公司商品,客户选购商品后,系统将商品的基本信息放入购物车,该客户对其自己的购物车有管理权限,如清空购物车、更改订购数量等。在客户选购完其所需的商品后即可结帐,结帐后系统将自动根据当前系统时间来生成订单号。然后生成订单入库。管理员可
15、在线对客户订单进行管理。在交易完毕后即可将订单提交到库存中,修改客户的分值和等级等信息。处理后的订单将存入数据库,做为以后订单统计的依据。其系统销售流程图如图2.4在线销售系统在线管理客户登陆客户注册选购产品提交购物车数据库生成订单图2.4 系统销售流程图2.5.2 系统数据流图设计图2.5 系统数据流图2.5.3 概念结构设计根据以上所得的信息,可以得出独立于具体DBMS的概念模型,可以用以下E-R图表示。图2.6 系统E-R图2.5.4 逻辑结构设计根据系统功能设计的要求以及功能模块的划分,对于系统信息数据库,可以列出以下数据项和数据结构: 用户信息:用户名、姓名、密码、取回密码的问题、答
16、案、所在省市、移动电话、Oicq号、电子邮件、电话、住址、邮编、所属行业、职业、收入、折扣等级、享受打折比例、积分、注册日期。 管理员信息:帐号、密码、信息。 订单信息:用户名、订单号、时间、总金额、支付方式、交易是否已经完成、送货地点、邮编、订单分值、是否打折。 订单商品明细表:商品号、订单号、商品数量。 商品明细表:商品号、分类、数量、名称、价格、优惠价、成本价、是否已经加入、加入时间、订购数量、说明、是否打包。 折扣信息:折扣等级、折扣值、积分。 电子邮件管理列表:邮件主题、邮件内容、寄信人、发信日期。 公告拦内容:标题、内容、发布时间、发布人姓名。 商品类别表:类别号、类别名称、类别信
17、息2.5.5 数据库的物理设计根据数据库需求分析,建立如下9个数据表表1 系统用户信息数据表(users)字段名称数据类型允许为空默认值说明IDint否自动编号主键usernameVarchar(20)否用户名passwordVarchar(20)否密码questionVarchar(50)是取回密码问题answerVarchar(50)是答案userfromVarchar(20)是所在省市mobileVarchar(50)是移动电话oicqVarchar(20)是Oicq号uemailVarchar(100)否电子邮件telphoneVarchar(50)是电话adressVarchar(5
18、0)是家庭住址codeVarchar(50)是邮政编码industryVarchar(50)是所属行业employmentVarchar(50)是职业incomeVarchar(20)是收入disleveltinyint是折扣等级scoresint是0积分udatedatetime是getdate()注册日期表2 系统管理员信息数据表(adminuser)字段名称数据类型允许为空默认值说明IDint否自动编号主键Admin_nameVarchar(20)否管理员帐号Admin_pswdVarchar(20)否密码Admin_inforVarchar(200)是管理员信息表3 订单信息数据表(o
19、rders)字段名称数据类型允许为空默认值说明IDint否自动编号主键usernameVarchar(20)否用户名billnoVarchar(20)否订单号ordertimeVarchar(20)是订购时间SummoneyVarchar(50)是总金额paytypeVarchar(50)否支付方式compbit否0交易是否完成saddressVarchar(200)是送货地点scodeVarchar(10)是邮编scoresInt是订单分值usediscountbit是是否打折表4 商品明细数据表(subs)字段名称数据类型允许为空默认值说明IDint否自动编号主键subsVarchar(2
20、0)否商品号kindnoVarchar(200)是商品分类subsnumVarchar(20)是商品数量subnameVarchar(100)是商品名称priceNumber是价格sale_priceNumber是优惠价costNumber是成本价格isaddBit是0是否已经加入add_timedatetime是Getdate()加入时间booknumVarchar(20)是订购数量inforVarchar(500)是说明ispacketBit是0是否打包表5 折扣信息数据表(discount)字段名称数据类型允许为空默认值说明disleveltinyint否折扣等级discountreal
21、是折扣值pointsnumber是积分表6 电子邮件管理数据表(maildefault)字段名称数据类型允许为空默认值说明IDint否自动编号主键mailtitleVarchar(200)是邮件主题mailbodytext是邮件内容frommailVarchar(100)是寄信人mdateDatetime(8)是发信日期表7 通知管理数据表(message)字段名称数据类型允许为空默认值说明IDint否自动编号主键titleVarchar(200)是标题messagetext是通知内容mdatedatetime是发布日期senduserVarchar(20)是发布人姓名表8 商品类别表(kin
22、d)字段名称数据类型允许为空默认值说明kindnoVarchar(20)否类别号kindnameVarchar(200)是类别名称inforVarchar(1000)是类别信息表9 订单商品明细表(bill_tail)字段名称数据类型允许为空默认值说明idint否自动编号主键billnoVarchar(20)否商品号subsVarchar(200)是订单号subsnumVarchar(1000)是商品数量第三章 系统的实现3.1 商品销售子系统的实现3.1.1 前台销售界面实现前台主要的编程工具为JSP、Dreamweaver MX、Fireworks MX。同时还要配置j2sdk和resin
23、服务器来进行调试。其制作的主页面如图3.1。图3.1 商品销售子系统图其中用到Dreamweaver MX中的层和鼠标事件来实现了导航条的动态滚动功能。Dreamweaver MX在动态网页的开发中的确是一款不可多得的工具,它集成了javascript脚本和vbscript脚本,而动态页面的制作对最终用户是透明的,作为一个商务网站,其最重要的就是要求功能清晰,界面友好。因为作为商务网站发展的趋势,在近阶段,其面向对象很大部分将是白领和蓝领阶层,而作为工薪阶层的他们,只能花费有限的一部分用于购物,因此对界面的设计一定要功能清晰明了,这样方能有利于公司产品的销售。而该系统的销售界面正是本着这个为出
24、发点而设计的。该子系统共分为四个子栏目:用户导航、用户自助服务、个人信息修改、站点连接服务。其中每个子栏目的内容清晰,便于用户在该站点进行浏览,同时其占用空间小。如图3.23.1.2 用户管理模块的实现该系统对客户实行会员制管理,对非会员的用户,该系统只提供部分功能。其中许多主要的功能如在线购物、发送邮件、订单检索等都不提供给非注册用户。客户可以先在系统注册为会员,其中会员都按积分和等级管理、在公司产品优惠活动时期,将根据客户的等级来进行具体的优惠细节。用户可以在线修改密码,修改个人资料。用户登陆后,系统将用session会话来记录用户的帐号,该session值在会话期间一直跟踪 图3.2 站
25、点导航该用户,直到用户退出系统或直到站点关闭会话才结束。如果用户登陆成功,将用session.setAttribute(user,username)语句产生该会话。在用户登出系统后,将用session.setAttribute(user,null)语句来清空这个会话。在用户登陆时同样也可以用存入cookie值的方法来对用户进行跟踪,这也是一个比较好的跟踪方法,但同时也考虑到该系统所面向的主要用户是工薪阶层,有很多可能是用公司的电脑来订购产品的,如果让用户选择该cookie保存的时间,其中一些关键的信息有可能被其它人所窃取,而且公司的电脑将有很多将可能因为安全问题而禁用了cookie,这样将造成
26、系统将无法提供正常的交易活动。虽然用session会话将给服务器带来一定的负担,但权衡再三,还是决定用它来对用户进行整个站点会话的跟踪。在用户的管理中还提供了用户等级和积分的查看功能,当客户需要订购商品时,可以很清楚的知道自己这次订购商品所需要的费用。同时也可以根据等级来查看自己能享用的折扣值。其中在用户资料表中用等级字段作为外键,而在折扣值表中的等级字段做为主键,从而对他们进行数据一致性的约束,在对用户进行判断的时候用到语句:/该语句包含在include/confirm.jsp中% if (session.getAttribute(user)=null)out.println(); out.
27、println(alert(你还没登陆,请先登陆);window.location= user_login.jsp;);out.println();%由于用户登陆后系统已经用一session会话来保存了用户的帐号,所以将以上的语句包含在一个文件中,将以下语句放在每个需要判断页面的开头即可这样当未登陆用户想进入该页时,系统将自动提示“未登陆”的错误信息。3.1.3 邮件发送模块的实现由于系统提供了用户投诉功能,所以要求用户能够在线给管理员发送信息,因此增加了该功能,由于该功能还要求能够在查看完自己的订单后给管理员发送,告之该订单还未被处理,因此这里加入了自动添加邮件标题的功能,当用户检索完自己的
28、订单后,如果发现自己的订当还未被处理,则可直接联系管理员,系统将自动加入邮件标题。其实现是只需将邮件发送页面加入如下代码:String title=new String();title=(request.getParameter(id)=nu-ll)?:订单号+request.getParameter(id)+未被处理!);其中的id是从“未处理订单页面”所传送过来的,它记录了用户所要投诉的订单id号。在页面list_search.jsp中的代码a href=mail_send.jsp?id=联系管理员实现了将订单号进行传送。3.1.4 订单检索模块的实现其中订单检索模块的实现页面是list_
29、search.jsp,它的显示订单信息部分的界面如图3.3。图3.3 订单检索显示图在“订单处理状态”中数据库是用bit类型存储的,而在前台读取的时候用语句:String comp=rs.getString(comp).toString();comp=(comp.equals(0)? 未处理:已经处理);这样就实现了在图3.3中“是否完成”栏中显示信息。而在“订购时间”的显示时也出现了时分秒的信息(数据库中是用函数getdate()来作为客户订购的时间),这是多余的信息,因此也必须将其过滤,只取其中的年月日,因此用到了String ordertime=rs.getString(ordertim
30、e).toString();String odate=new String();odate=(ordertime.length()10)? ordertime.substring(0,10):ordert-ime.substring(0, ordertime.length();当ordertime字段所存储的信息是全部的时间信息时,将用该语句做截断字符串处理,只显示前面的10个字节。而当所存储的只有年月日信息时,则直接输出。在此必须对它的长度做判断,否则当该长度一旦小于10时,页面将提示错误信息。在订单检索时用到了两个排序字段,因为必须先按订单状态排序,然后在按订单的提交时间排序,这样才算是比
31、较科学的,因此其检索的sql语句如下:SELECT * FROM dbo.orders WHERE username = + rs_MMColParam + order by comp,id desc在这里也可将id换成“订购日期“字段,因为id在数据库中是设为自动增长的,因此这样将更准确的对订单的提交先后进行排序。3.1.5 公告发布模块的实现该模块所用到的技术并不多,只是简单的将站内信息显示出来供用户查看,其显示界面图如图3.4图3.4 公告发布显示图3.1.6 在线订购模块的实现该模块将是前台销售子系统的关键部分,同时也是该子系统所用到的开发技术最难的一部分,为了能将该模块功能实现讲解的
32、更加清晰,在此首先对该模块的流程做一个大体的介绍,同时请参考图2.3:1、在线浏览商品信息,如果发现自己所需要的商品,用户可以将其添加到购物车中。2、到收银台付款。(这是注册会员所拥有的功能,对非注册用户,将提示其注册,同时购物车中的商品都一直保存)3、客户确认。(为了能更方便的给用户提供服务,这里将用户选购的每一件商品所须的费用做了统计,同时也有该订单所需的总金额)4、填写订单的附加信息。(包括:支付方式、邮寄地址、邮政编码、是否选用打折)5、订单提交成功。(这里将显示该订单所有信息。用户订购也将到此结束)通过以上的大体流程,以下将对每一流程所实现的功能做具体的分析: 一、在流程1中,这里主
33、要用到了一个javabeans来对整个购物车进行操作。对用户所选商品信息是用一个哈希表来存储的,它的整个会话期是从用户选购第一件商品开始,直到该用户退出系统或者一次交易完成。这是实现这个购物车的核心部分,同时也是较其它销售系统更胜一筹的好技术。看过很多其它的销售系统,购物车都是用java中的一个二维数组来存放的,而且在客户选购商品后都是用session会话来保存商品信息,这样的后果是实现复杂,同时也加重了服务器的负担。本来在这里是想在数据库中建一临时表来存储客户选购商品信息的,但想到那多次的对数据库进行建表,删表、以及很多次的数据库访问,就有点退却了。而用cookie技术来实现也有它的好处,可
34、以减少服务器的负担,但实现比前几种就更困难了,同时在用户电脑出现某些异常时,可能导致数据统计出错甚至丢失。因此权衡再三,最终还是决定用哈希表来存储信息,需要存储的信息包括了商品号、商品名称、商品价格、选购商品数量等四项。由于该技术的实现也是一个难点,同时也是该销售子系统的核心,因此在此将实现购物车技术的jsvabeans的源代码付上,在其中也将做一些简单的介绍。package beans; /*beans所表示存放该javabeans的文件夹*/import java.util.*;/*导入一些该组件所要用到的java类*/import java.io.*; /*导入一些该组件所要用到的jav
35、a类*/*声明一个购物车类,同时建立一哈希表来存储客户所选购的商品信息*/public class CartBean implements java.io.Serializable /*新建一个哈希表,是被保护类型的*/ protected Hashtable itemHashtable = new Hashtable(); public CartBean() /*声明一个公共类型的函数,该函数用于设置哈希表项目*/ public void setItemHashtable(Hashtable ht) itemHashtable = ht;/*声明一个公共类型的函数,该函数用于取得哈希表中所有
36、的项目*/ public Hashtable getItemHashtable() return itemHashtable; /*向购物车中添加商品,如果已经存在该商品号,则只对其数量加1*/ public void addItem(String id, String desc, double price, int qty) String item = id, desc, Double.toString(price), Integer.toString(qty); if (itemHashtable.containsKey(id) String workItem = (String)item
37、Hashtable.get(id); int workQty = Integer.parseInt(workItem3); qty = qty + workQty; workItem3 = Integer.toString(qty); else itemHashtable.put(id, item); /*声明一公共类型函数,用于更新购物车中的商品数量*/ public void updateItem(String id,int qty) String item = id,Integer.toString(qty); if (itemHashtable.containsKey(id) Stri
38、ng workItem = (String)itemHashtable.get(id); workItem3 = Integer.toString(qty); /*声明一公共类型函数,用于删除购物车中商品号为id的商品*/ public void removeItem(String id) if (itemHashtable.containsKey(id) itemHashtable.remove(id); public Enumeration getEnumeration() return itemHashtable.elements();/*声明一公共类型函数,返回购物车中商品的总价格*/
39、 public double getCost() Enumeration enum = itemHashtable.elements(); String workItem; double totalCost = 0.00; while (enum.hasMoreElements() workItem = (String)enum.nextElement(); totalCost = totalCost + (Integer.parseInt(workItem3) * Double.parseDouble(workItem2); return totalCost;/*声明一公共类型函数,返回购物
40、车中的商品的总数量*/ public int getNumOfItems() Enumeration enum = itemHashtable.elements(); String workItem; int num = 0; while (enum.hasMoreElements() workItem = (String)enum.nextElement(); num = num + Integer.parseInt(workItem3); return num; /*-javabeans结束-*/有了以上的这个javabeans,就可以在其它订购页面中对商品信息进行存储以及统计了。只要在所
41、要用到这个beans的页面中加入如下代码:其中的id是这个beans在该页面中的标志,scope是该beans的有效范围它的属性有session|application|page|request,其具体的意思在次就不一一讲解了(有兴趣的可以参考JSP高级开发技术 P69),这里只对session做简单介绍,它是从创建这个bean开始,用户就可以在任何使相同session的jsp页面中使用这个bean,这个bean是存在于整个session生存周期内的。而Class的值表示的是这个bean所存在的路径(注:java中用.来表示/)。而在商品的浏览页面则用语句:a onclick=addtocar
42、t(&desc=&price=)来将商品号,商品名称和商品价格传递给购物车页面,然后通过Cart-Bean组件来处理显示购物车的信息。在图3.5中可以很清楚的了解该购物车的所有功能。图3.5 购物车图其中“清空购物车”是用到了CartBean组件中的removeI-tem函数来循环的将购物车中的内容进行清除。而数量的更改则是用到了 CartBean组件中的updateItem函数来实现的,在每个商品号所对应的表单中,当用户更改了商品的数量后,将数量值和商品号传送给updateItem函数中的id和qty形参,从而实现商品数量的更改。其实现语句如下: String id=request.getP
43、arameter(id);int qly=Integer.parseInt(request.getParameter(qly);if(qly=0|qly0) cart.removeItem(id); /如果为0则删除else cart.updateItem(id,qly);/否则调用修改函数这里的id和qly是从购物车页面所传递过来的值,在该处进行处理。同时在购物车页面中还用到了函数getCost来统计了商品的总价格。二、在流程2、3中,这里首先对用户的身份进行判断,查看用户是否登陆,如果没有登陆,则返回登陆页面,在该网页的头部加入以下语句:如果是已登陆用户则对该用户所产生的订单进行详细的统计
44、,包括对每种商品的所需金额进行统计,同时也对总的价格进行统计,其中主要也是用到了bean来实现的。三、流程4为订单附加信息的填写,当用户购买完产品后需要确认提交了,则需要通过该步来将订单的信息填写完整。这里包括了支付方式的选择、邮寄地址、邮编的填写以及选择是否启用打折。在邮寄地址和邮编的填写框中,系统将给一默认值,该值就是该用户注册时候的地址和邮编,当用户没有填写该信息,则系统将直接启用默认值。四、流程5为订单提交成功后的处理。该步将是该订单生成的主要步骤,首先通过CartBean组件结合用户所选用的打折来统计订单总金额,同时也生成该订单的积分(对每一订单将产生一分值,当该订单成功交易后,该分
45、值将加到用户的积分当中去)。而用billno组件来取得生成订单号,为了方便知道该订单号所订购的日期,在订单的前8位是用订单提交的年月日来产生订单号的。而为了保证该订单的唯一性,系统则在后面增加了6位的随机数,代码为:Random mycartid=new Random();float myid=(float)mycartid.nextFloat()*;long mylong=(long)myid;String billno=bill.getBillno()+mylong;/billno为最终的订单号在该步中还必须将订单的订购细节存入订单细节库中,同时清除购物车中的内容。其实现的代码如下:/将产
46、品的详细信息添加到表bill_detailEnumeration enum = cart.getEnumeration();String workItem;while (enum.hasMoreElements()workItem = (String)enum.nextElement();String MM_columns = billno,subs,subsnum;String MM_fields = +billno+,+workItem0+,+workItem3+;String sql=INSERT INTO bill_detail (+MM_columns+) VALUES (+MM_f
47、ields+);stmt.executeUpdate(sql);/删除哈希表中的所有数据cart.removeItem(workItem0);这样就完成了整个购物的流程,用户只需等待订单的处理即可。而接下来用户也可继续购买商品。3.2 订单管理子系统3.2.1 订单管理模块的实现该系统的管理界面也是用jsp来实现的,在订单管理的模块中,包括了对未处理和已处理订单的编辑。管理员登陆后即可在线管理订单,同时还添加了订单的统计和订单的查询。以下将更加具体的说明个功能的实现。一、对未处理订单的编辑。在该处所要做的工作是最多的,首先在该处有对订单详细资料的查看。同时还有删除、和订单交易完成等功能。在这里
48、需要调用一个存储过程,同时还要对订单表做一个出发器,他们所要实现的功能就是:在订单交易成功后,系统需要自动按照该订单所订购的商品细节对商品的库存做更新。要对商品的数量做更改,这样就避免了人工的干预,在一定程度上实现了很大的智能化。同时对提交该订单的用户库存资料也要做相应的更新。用户的积分和等级也要随之而改变。在jsp页面中所调用存储过程的语句如下:Driver Driverrs = (Driver)Class.forName(MM_connbill_DRIVER).newInstan-ce();Connection Connrs = DriverManager.getConnection(MM
49、_connbill_STRING,MM_connbill_USERNAME,MM_connbill_PASSWORD);String sql=call sp_updatesub(?);CallableStatement sqlStmt=Connrs.prepareCall(sql);/调用存储过程sqlStmt.setString(1,id);/传入参数sqlStmt.executeUpdate();/执行该存储过程其中CallableStatement为预调用存储过程方法。在调用完该过程后,即可将订单表中的标志状态置为1(即为交易成功状态)。Statement stmt=Connrs.cre
50、ateStatement();String strsql=update dbo.orders set comp=1 where billno=+id+;stmt.executeUpdate(strsql);在执行完这步之后,由于它更改了订单表中的标志字段comp的内容,因此将触发订单表中的触发器。对用户的积分做更改。由于所用到的两个存储过程和触发器都比较长,在此就不将它列于该文档中,这里只是对其编写思想做大体的介绍:存储过程是用于根据订单细节表中的内容对商品的数量做更改,每更改一个产品的信息后,订单细节表中的内容也随之删除,在此同时也保持了数据的一致性。而触发器的编写主要是对用户的加分处理,当
51、用户成交一个订单后,用户的积分需要增加(增加的值的算法为:消费总额/10+5),同时如果用户选用了打折后,该用户的积分则需要减少(减少的值根据该用户的等级而定,而相对分值上由管理员设置的),而用户的等级则是根据用户的积分来定。由于考虑到越到后面,其等级增长也将越慢,因此选用了用到了算法FLOOR(SQRT(v_scores/10)来求得用户的等级。二、对已处理订单的编辑。对已处理订单只提供了比较少的编辑功能,包括对订单的删除和查看。三、对订单的统计。该系统设置了对订单的自动统计功能,其统计的项目有管理员自己选择。如图3.6 图3.6 订单统计界面管理员进入订单统计的界面后,将有四项的统计内容有
52、管理员自己选择。在订单范围拦中,管理员可以选择对某一月的订单进行统计(在这里只提供按月份统计订单),如果在不填写客户帐号时,则默认的是统计该月以来所有订单。而如果填写了某个帐号,则统计的为该用户在该月内成交的订单。这样将更方便订单的统计,同时功能上也增大了很多。其中用到了sql server2000中的内置函数DATEPART(),用这个可以很方便的将订单按月份进行统计,具体的sql语句为:sql=select summoney from orders where comp=1 and (DATEPART(year, ordertime) = +year_date+) AND (DATEPART(month, ordertime) = +month
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖北黄石市大冶市事业单位统一招聘118人备考题库(真题汇编)附答案详解
- 2026山东出版集团有限公司山东出版传媒股份有限公司招聘193人备考题库及答案详解(全优)
- 2026中德住房储蓄银行春季校园招聘2人备考题库【原创题】附答案详解
- 2026年漯河医学高等专科学校单招职业适应性测试题库附答案详细解析
- 2026四川新火炬化工有限责任公司招聘13人备考题库附答案详解【预热题】
- 2026浙江宁波东钱湖旅游度假区某国有企业招聘派遣制工作人员备考题库附答案详解
- 2026陕西西安交通大学党委医学部文员招聘1人备考题库(预热题)附答案详解
- 2026广西柳州市鱼峰区洛埠镇卫生院招聘2人备考题库含完整答案详解(考点梳理)
- 2026广东汕尾市城区消防救援大队招聘政府专职消防员4人备考题库含答案详解【基础题】
- 2026中国人民财产保险股份有限公司那曲分公司嘉黎县营销服务部招聘1人备考题库(b卷)附答案详解
- 十五五规划纲要解读:物业管理服务提质
- 糖尿病课件教学课件
- 网红集装箱商业街方案
- 在线网课学习课堂《学术交流英语(哈工 )》单元测试考核答案
- 2026兵团职工考试试题及答案大全
- 中国石化品牌管理办法
- 2025至2030药用包装材料市场行业发展趋势分析与未来投资战略咨询研究报告
- 江苏苏州2016-2024年中考满分作文103篇
- 2024年9月28日江西省南昌市五方面人员面试真题及答案解析
- 四肢骨折及术后护理
- DB13-T 1545-2025 预拌混凝土质量管理规程
评论
0/150
提交评论