1、项目开发技术购物车项目开发设计与实现 购物车项目开发设计与实现1目 录1 项目需求 31.1 系统功能需求 31.2 开发系统语言需求 31.3 开发以及运行环境需求 31.4 界面需求 41.5 约束条件 41.6 UML 设计 .41.6.1 网上购物参与者 .41.6.2 系统中的用例 .52 项目设计 72.1 系统功能 72.1.1 登录模块 .72.1.2 购物车模块 .72.1.3 订单模块 .72.2 流程图 72.2.1 在线购物流程图 .72.2.2 用户注册流程 .72.2.3 用户登陆流程 .82.2.4 购物车流程 .92.3 数据库设计 .102.4 系统界面实现
2、.112.4.1 登录界面的实现 112.4.2 商品列表界面的实现 112.4.3 购物车页面显示 122.4.4 操作订单界面显示 123 面向对象技术实现 .143.1 系统中的类 .143.2 数据库类 .153.3 边界类 .153.4 控制类 .154 测试方案 .174.1 测试方法 .174.2 系统功能测试用例 .17项目开发总结 19购物车项目开发设计与实现21 项目需求本次研究选择的开发语言为 Java,该系统基于 B/S 架构,用户可以通过浏览器对服务器使用访问。首先需要实现网上购物的基本功能,显示商品列表、添加商品到购物车、确认订单,我所研究的重点是对网上购物车的设计
3、与实现模块。 1.1 系统功能需求1、能够完成游客或已注册用户对网上商品列表的浏览,以及对各商品的详细信息的查看。2、能够完成已登陆客户对商品的选购:添加商品到个人购物车,并且对已添加到购物车的商品进行数量的增加、减少、修改和删除等操作。 3、能够通过查看购物车对所选商品进行确定、挑选,确认或修改购物者的联系方式,通过定单查询对支付费用进行确定。1.2 开发系统语言需求采用的主要技术是基于服务器端的 JSP、Java 的组件 JavaBean,以及网页编程语言 HTML。利用 JavaEE 平台提供的 Web 编程方式,通过 B/S 结构方式,实现数据从数据库,到业务处理,到前台展示。Web
4、部分采用基于 MVC 模式的 Struts 框架实现,表现层主要用 JSP 与JavaScript、EL 相结实现,控制层采用 ActionServlet 负责处理请求和转发请求,业务逻辑层使用 JavaBean 实现,并且采用 DAO 设计模式进行数据访问的封装,数据持久层采用JDBC 技术实现业务层和数据库的交互。设计开发的原则:每层之间都是采用面向接口编程技术,降低了上层对下层逻辑调用的依赖,该项目体现了低耦合、高内聚的设计思想。服务器: Apache Tomcat 5.27数据库: MySQL技术实现:Struts+JDBC+JavaBean发集成环境:用 Eclipcse 集成环境进
5、行开发JavaScript 程序运行环境:Windows XP 或 Windows 7。用于编辑 HTML 文档的字符编辑器或 HTML 文档编辑器。1.3 开发以及运行环境需求本系统开发的基本环境如表 1.3.1表 1-1 系统开发环境项目 最低配置CPU P4 或同型号的 CPU内存 256M硬盘 40G 以上显卡 Geforce2 以上购物车项目开发设计与实现3操作系统 Windows 7/XP本系统的运行环境如下表 1.3.2表 1-2 系统运行环境 项目 最低配置CPU P3 或同型号以上的 CPU内存 128M硬盘 20G 以上显卡 Geforce2 以上操作系统 Windows
6、7/XP1.4 界面需求界面的原则要求:如方便、简洁、美观、一致等。整个界面要保持友好、简易的风格。 1、输入设备:键盘、鼠标、扫描仪 2、输出设备:显示器、打印机 3、显示风格:IE 界面1.5 约束条件1、法律、法规和政策方面的限制。 首先,尊重消费者权益保护法等相关的法律法规; 其次,鉴于我国的电子商务交易的法律法规还不完善,还有相当大的一部分交易环节仍依赖于传统的商品贸易法。 2、硬件、软件、运行环境和开发环境方面的条件和限制 对于单机或浏览器版本太老的用户,或是受其他软硬件限制的用户,将无法进入网上商城方便快捷的进行购买,需更换软硬件资源。1.6 UML 设计1.6.1 网上购物参与
7、者图 1-1 参与者(网上购物)购物车项目开发设计与实现41.6.2 系统中的用例图 1-2 系统中的用例图 1-3 网上购物系统用例包图购物车项目开发设计与实现5图 1-4 总用例图购物车项目开发设计与实现62 项目设计2.1 系统功能系统主要分为以下几大模块:登录模块,购物车模块,订单模块各模块实现的功能如下: 2.1.1 登录模块登录模块在区分不同用户的使用权限、加强软件使用安全性和保证数据安全方面起着关键的作用。使注册用户能快捷的购买商品。2.1.2 购物车模块添加商品到个人购物车,并且对已添加到购物车的商品进行数量的增加、减少、修改和删除等操作。2.1.3 订单模块客户选择商品后产生
8、账单,让消费者能够完成选购,付账一起实现。2.2 流程图2.2.1 在线购物流程图此流程图显示用户浏览本网站所进行的操作,用户进入网站浏览商品,选择自己需要的商品,若用户未注册则跳转到用户注册界面,进行注册,进入购物车,确认订购商品,产生订单。若已登录则直接进入购物车确认商品。若已注册未登录则直接跳转到登陆界面,登陆后再进行商品的购买操作。其流程如图所示:图 2-1 用户购物流程图2.2.2 用户注册流程点击主页面的用户注册选项后,会弹出一个注册信息页面,用户需要如实填写用户名,密码,E-mail,邮编,地址,电话等各项信息,系统进行检测判断该用户的用户名须不少于两位,用户输入的两次密码均不少
9、于三位且是否一致,然后依次往后判断用户所填写的各项信息是否符合要求,直到所有信息均正确无误,系统将该用户注册信息写入会员表即cart_user 表并提示用户注册成功,用户登陆后,就可以进行有效的购物了。其流程图如图所示:浏 览 商 品选 择 商 品订 购 商 品 未定义用户已登录注册用户未登录注册用户去 购 物 车去 收 银 台提 交 订 单购物车项目开发设计与实现7图 2-2 注册功能流程图2.2.3 用户登陆流程用户登录,首先要有一个提供用户登录的表单。用户登录的表单应该嵌入整体的结构当中。在实际的应用中,可以这样设计,如果用户没有登录,则在页面中显示用户登录的选项,用户登录后,则可隐藏用
10、户登录的选项而代之以用户的个人信息管理链接。首先,用户要有一个用户名和密码。商务网站需要很高的稳定性和安全性,因此对用户名不允许使用恶意的代码作为用户名而使用真实姓名。同时对密码也要求保密,将密码加密后再存入数据库。另外,还需要用户的性别、地址、E-MAIL、邮编、电话号码等。系统确定用户登陆信息无误后会将用户 User 信息存入 JSP 页面 Session 中以便用户进行后续操作。用户的登陆流程图如图所示:注册入口用户名验证密码验证地址验证E-mail 验证电话号码验证注册成功YYYYYNNNNN购物车项目开发设计与实现8图 2-3 用户登陆流程图2.2.4 购物车流程购物车的具体实现可采
11、用这种形式:定义一个购物车的类,其属性为每一条记录 Item,每条记录 Item 的价格 Cost,Item 的 Map 以及若干方法的定义。1.列出商品的列表,使用户能够自由选择所需要的商品。2.当用户在点击“添加到购物车”的链接时,执行如下功能:检查用户购物车类是否存在。如不存在,则建立,并注册这 Session 变量;在有用户购物车类存在的情况下,检查该类中是否有该商品。如存在,则商品数量相应加 1;如没有该商品,则将该商品添加到该类中。3.对放入用户购物车的各条记录 Item 可以进行数量的修改、删除及清空购物车等操作。具体流程实现如图所示:图 2-4 购物车流程图用户登陆入口用户是否
12、存在密码是否正确取得用户信息将 user 存入 session中 登陆成功YYNN购物车查看购物车结账吗下订单调整商品YN购物车项目开发设计与实现92.3 数据库设计数据库结构设计使用的数据库管理系统以及系统开发工具设计出数据库以及各个数据表的结构。此次设计根据数据的大小以及管理的便捷性选择 MySql 作为数据库管理系统,使用数据管理器创建数据库。按照前面分析的系统,设计出系统数据库中的各个数据表。表 2-1 用户表字段名 描 述 类 型 长 度 可为空 主 键Id 客户编号 Integer 是Name 姓名 Varchar 32Password 密码 Varchar 16Address 地
13、址 Varchar 100Postcode 邮编 Varchar 10Email 电子邮件 Varchar 50HomePhone 家庭电话 Varchar 32 是CellPhone 移动电话 Varchar 32OfficePhone 办公室电话 Varchar 32 是客户的 Id 也可设置成 Integer 类型值自动生成,为其主键。密码的长度最长可达 16 位,Name 为 Varchar,长度为 16 位。Address、PostCode、Email 及 Remark 均为 Varchar 型。对于用户的话号码,考虑到个人的不同情况以及其他一些特殊情况,电话号码均为 Varchar
14、 型字段,且只有移动电话为 Not Null。表 2-2 商品表字段名 描 述 类 型 长 度 可为空 主 键Id 商品编号 Integer 是Name 商品名 Varchar 32Description 描述 Varchar 100 是Price 单价 Double商品信息表的主键为 Id 字段,在 MySql 中可设置其值为自动生成,即对数据库操作添加语句时,可以不管 Id 属性,每次加入一条记录 Id 值自动加 1。Id、Name、Price 字段均不能为空,Description 为对该商品的说明,长度为 100,可以为空。表 2-3 订单表字段名 描 述 类 型 长 度 可为空 主
15、键Id 订单编号 Integer 是Status 状态 IntegerUser_Id 用户编号 IntegerCost 总价格 Double订单的主键 Id 为 Integer 型,编号值自动生成。状态字段 Status 设置成 Integer 型,由管理员设置值为 1 或者 2。1 代表订单未交付即交易未完成;2 代表订单已经下达,交易已经完成,购物车项目开发设计与实现10即历史信息。Cost 字段是该订单所需价钱,即交易时用户应付商品的费用(不含运费) 。表 2-4 编号表字段名 描 述 类 型 长 度 可为空 主 键Id 条目编号 Integer 是Amount 价格 DoublePro
16、duct_Id 商品编号 IntegerOrder_Id 订单编号 Integer条目信息是为了方便管理员和送货工作人员对每一个商品的确定即统计。主键 Id 也是Integer 类型,自动生成其值。Amount 价格指某一种类商品的单价而并非总价格,这是为了方便网站后台管理人员。该表查询及修改数据库采用关联,Product_Id 和 Order_Id 均为Integer 类型,是分别为了确定其商品和订单号以方便送货。2.4 系统界面实现界面设置原则要求简单易用、简洁明了、兼容性好、标准、规范。制定界面设计标准规范的目的是为了规范和统一软件界面设计制定软件界面设计标准与规范。首先考虑标准化,在标
17、准化的基础上进行界面的美工设计。其次进一步完善程序的界面设计。对界面进行的优化不要使界面的操作变得困难。2.4.1 登录界面的实现该界面是用户登录的界面,用户从此界面登陆,可对商品进行操作。用户要有一个用户名和密码。商务网站需要很高的稳定性和安全性,因此对用户名不允许使用恶意的代码作为用户名而使用真实姓名。同时对密码也要求保密,将密码加密后再存入数据库。图 2-5 登陆界面2.4.2 商品列表界面的实现该界面显示的是商品列表,用户可在此界面对商品进行浏览,选择自己需要的商品放进购物车中,若未登录,也可以使用登录键进行登录操作。或使用购物车键进行查看所购商品的操作。也可以在登录界面进行结账操作,
18、直接跳转到操作账单页面,对所需的商品进行最终的确定。购物车项目开发设计与实现11图 2-6 商品列表界面2.4.3 购物车页面显示购物车页面是对所购商品的再操作,对所选商品进行删改数量,删除所选商品,若所选商品不是自己需要的,可以进行删除商品,也可以对商品直接进行清空。每个商品后跟的都是商品的单价,修改商品数量后,商品的价格变为所购商品的总价。从此页面也可跳转到商品列表页面继续进行购物,选新的商品添加到购物车中。若是已经购买了所需商品,就可以进行结账操作,进入账单操作页面。图 2-7 购物车界面2.4.4 操作订单界面显示对所选商品进行再确定,对登录用户的资料进行确认,对有改变的资料进行修改,
19、而且用户资料必须符合一定的格式,若不符合就报错不能进行修改,因此,例如邮政编码必须是6 位数字,因此必须是输入 6 个数字,输入多或少都是错误修改,无法成功修改。在此使用的验证是对格式的验证,用户资料进行修改必须符合格式,否则无法修改。修改完成,而且购物车项目开发设计与实现12商品确定后就可以进行结账操作,生成一个新的账单。图 2-8 操作订单界面购物车项目开发设计与实现133 面向对象技术实现3.1 系统中的类MerchandiseList:商品类属性:TotalCost 商品总价格方法:AddMerchandise()将 AddToCar()方法中加入购物车的商品增加到商品列表。Delet
20、eMerchandise()删除列表中某商品ComputerTotalCost()调用此方法计算商品列表 图 3-1 商品类图 中商品的总价ModifyMerchndiseLise()修改商品列表的方法, 有修改商品数量,删除商品等方法Order 类:订单类属性: order_date 订单日期order_number 订单号order_status 订单状态order_total 订单总价salesperson_name 售货人员姓名ship_address 发送地址order_payment 付款方式方法:CenerateCustomerAandOraderid()产生客户账号和订单流水号
21、GetOrder()取得当前订单信息NewOrder()声称新订单对象ModifyOrder()修改/删除当前订单,该方法由 SelfConfiguactionWindow 或者由用户使用 图 3-2 订单类图 SandarConputerWindow 类 调用。SetOrderSatus()设置订单状态,由 OrderServerWindow 类 的ModifyOrderStatus 方法调用。GetOrderStatus()取得订单状态,它调用 DateBase 中的 LoadOrder()方法。购物车项目开发设计与实现143.2 数据库类DateBase 类:数据库类方法:LoadOrd
22、er()从数据库中提取订单,被Order 类中的方法调用。StoreOrder()将订单存入数据库中,被 Order类中的方法调用。GerNeedContactOrderList()从数据库中提取需沟通的客户订单表。GetPaidOrderList()从数据库中提取已付款的订单列表,被 Payment 类调用。图 3-3 数据库类图 GerConmpleteOrderList()从数据库中提取已 发送的订单列表,被 Invoice 调用。3.3 边界类ShoppingListWindow 类功能:创建并显示购物清单窗口并可修改购物清单。方法:DisplayShoppingList()显示商品购
23、物清单,它将调用 MerchandiseList 类中的属性,获得商品清单。ModifyCar()修改购物车中的商品,它调用MerchndiseList()更新商品列表。DisplayTotalCost()显示当前选购的商品总 图 3-4 边界类图 值,该值由 merchandiselist 类中的ConmputeTotalCost()方法计算得到。GotoInputOrderWindow()进入到订单输入窗口。3.4 控制类QueryStatusWindow 类:功能: 创建并显示查询窗口。方法:GetCustmerID()取得用户输入帐号GetOrderID()取得订单流水号QuerySt
24、atus()客户点查询按钮出发它调用 Order 类的 图 3-5 控制类图 GetOrderStatus()方法取得订单状态。购物车项目开发设计与实现15DisplayStatus()显示订单状态。DisplayTatalCost()显示当前选购的商品总值,该值由 merchandiselist 类中的ConmputeTotalCost()方法计算得到。GotoShoppingList()显示购物清单窗口。NextPage()显示下一页商品图 3-6 控制类图Payment 类:付款类属性:payment_method 付款方式date_received 接受日期amount_receive
25、d 接收金额方法:linkPayment() 付款初始化图 3-7 付款类 SetPaymentStatus() 设置付款修改 Order 类 OrderPament 属性取值GetPaymentStatus()取得付款状态,从 Order 类 OrderPament 属性取值VerifyCustomerID()验证客户帐号被 Customer 类的 Paymoney 方法使用AcceptPayment()接受客户付款,方法将被修改 Order 类的 OrderPayment 对象购物车项目开发设计与实现164 测试方案4.1 测试方法黑盒测试(Black-box Testing,又称为功能测
26、试或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。黑盒测试试图发现以下类型的错误:功能错误或遗漏;界面错误;数据结构或外部数据库访问错误;性能错误;初始化和终止错误。4.2 系统功能测试用例表4-1功能测试用例表功能描述 系统登录模块测试用例目的 测试系统
27、登录模块中登录功能是否出错前提条件 数据库中有使用用户的表,并且表中存放一定的数据输入/动作 期望的输出/相应 实际情况用户名 lsz ,密码 lsz 能够正常的登录系统,并且显示为管理员用户正常用户名 lsz ,密码空 不能登录到系统,并且显示不存在该用户的信息正常用户名 空 ,密码空不能登录到系统,并且显示用户名和密码不能为空的信息正常功能描述 购物车删除商品功能的模块测试用例目的 测试系统删除商品功能是否出错前提条件 数据库中有商品信息表 输入/动作 期望的输出/相应 实际情况购物车项目开发设计与实现17删除 Id 为 1 的商品 Id 为 1 的商品被删除,不显示商品正常没有选择商品,
28、点删除键页面刷新一次,不改变 正常功能描述 商品修改功能的模块测试用例目的 测试系统修改模块中修改功能是否出错前提条件 数据库中有商品信息表,并且表中存入部分数据输入/动作 期望的输出/相应 实际情况对商品信息进行修改 能够显示出商品修改后的信息正常对商品的部分信息设置为非法字符商品信息不改变,并且显示该商品的信息修改错误正常功能描述 商品增加功能的模块测试用例目的 测试系统增加模块中增加功能是否出错前提条件 数据库中有商品信息表 输入/动作 期望的输出/相应 实际情况添加某商品的信息 能够显示出添加的商品的详细信息正常将非法商品信息输入 能够显示已有的商品信息,并且显示不能添加的消息正常购物车项目开发设计与实现18项目开发总结在设计过程中,主要用了JSP, HTML、SQL和JavaScript等设计语言。在做完设计后进一步的认识了JSP、HTML、 JavaScript,由于仓促之间完成,导致语言本身还有很多地方理解的不是很清楚。检索和数据传输方面更是非常的方便,好用,很突出它的特点。 。还简化了复杂的界面,使得界面简单易懂,可以按照用户和造作者能看懂的方式来制作,内容一目了然,也很正规,标准化。适合大众理解和掌握。本次设计完成了对网上购物的基本功能的实现。虽然其中可能功能还存在着许多不足,但主要功能已经实现,界面简单,操作方便也是本系统必须的。