1
问题陈述
本小组项目任务是开发一个虚拟商品在线交易系统。卖家需要一个全新的在线交易系统,用于向网络买家提供一个集在线购买和在线下载功能于一身的网络交易平台,销售的物品主要是正版软件和网络游戏充值卡等非实体的虚拟商品。本系统需要支持和集成支付宝公司的“虚拟商品交易服务”接口,并通过该接口收取买家费用,在交易完成后返回到本系统界面下给买家下载软件安装程序、软件激活码或充值卡密码等。
系统允许卖家在系统后台对商品进行维护,卖家可以在后台管理系统中对所销售的软件产品和充值卡商品进行修改、添加和删除,并可以查询所有买家信息。
系统允许买家在注册后对个人信息进行修改和维护,并查阅自己的购买记录;对于没有注册的临时买家,也可以直接购买,在交易完成后把其信息记录到数据库,但不会为临时买家注册系统ID。
系统允许买家在交易完成后通过网页界面在线下载软件安装程序,但需要做到防盗链,即防止软件的下载地址被公开或盗用,此项主要针对不需要激活码激活的软件产品。而对于软件激活码或充值卡密码,除了在交易完成后会在页面上显示外,也会自动E-MAIL一份到买家的电子邮箱里去。
同时,服务器使用Linux系统,安装有Apache、PHP和MySQL,需要把销售情况记录到MySQL数据库中,以便业务人员查询销售情况和进行管理。
系统需要对每周和每月销售的情况进行统计,并列印成报表,同时允许在线生成Excel及PDF格式文件以便保存。
2 需求分析
2.1 用例图
虚拟商品在线交易系统的用例图如图2-1所示,包括:用户登陆系统、商品展示系统、购物车、结算付款、支付宝服务接口、用户及定单管理系统、商品管理。
图2-1. 虚拟商品交易系统用例图
2.2 术语表
User:用户、顾客;
Shop Administrator:网上商店管理员、商家;
Products:商品、虚拟商品、非实体的商品;
Shopping Cart:购物车;
Payment:结算付款;
Alipay.com Server:支付宝服务器、与我方制作支付宝收款接口相连;
Order:在线定单。
2.3 活动图
2.3.1结算付款系统活动图
如图2-2所示,对应的用例规约请见表2.4-1:
图2-2. 结算付款系统活动图
2.4 用例规约
2.4.1用例规约Login
表2.4-1. 用例规约Login
主要参与者
用户及网上商店管理员
前置条件
输入正确的用户名、密码
后置条件(成功后的保证)
登入系统
基本流程(主要成功场景)
1) 输入用户名、密码
2) 验证用户名、密码
3) 如验证正确,登入系统
辅助流程(替代流程)
输入用户名或密码不正确:
1) 统显示错误信息
2) 提示用户重新输入
2.4.2用例规约Payment
表2.4-2. 用例规约Payment
主要参与者
用户或游客
前置条件
用户或游客已经把商品加入到购物车,并按下结算按钮
后置条件(成功后的保证)
返回商品结算清单及所需费用
基本流程(主要成功场景)
1) 户按下结算按钮
2) 系统显示购物列表及总价
3) 系统询问游客是否注册或登陆
4) 定单提交到支付宝接口
5) 用户通过支付宝或信用卡完成付款
6) 支付完成返回网上商店,显示下载地址及产品注册码、或点卡密码
辅助流程1(替代流程)
游客不登陆或注册:
1) 以游客身份把定单提交到支付宝接口
辅助流程2(替代流程)
游客以注册用户名登陆或注册:
1) 登陆后返回购物车
2) 以注册用户身份提交定单到支付宝接口
辅助流程3(替代流程)
用户或游客未完成支付或支付出错:
1) 返回网上商店
2) 显示定单未结算,不能下载虚拟商品
(*对应的活动图请参考图2-2)
2.4.3用例规约Shopping Cart
表2.4-3. 用例规约Shopping Cart
主要参与者
用户或游客
前置条件
用户或游客已经挑选商品,并且商品已经为勾选状态。
后置条件(成功后的保证)
返回商品名称、数量、价格及总计
基本流程(主要成功场景)
1) 系统显示购物列表及总价
2) 系统提供对所购物品的修改处理,或继续购物的功能选择
3) 转到结算模块
4) 转回购物网站
辅助流程1(替代流程)
游客不登陆或注册:
1) 以游客身份显示购物列表
辅助流程2(替代流程)
游客以注册用户名登陆或注册:
1) 登陆后返回购物车
2) 以注册用户身份显示购物列表
辅助流程3(替代流程)
用户或游客未完成挑选物品:
1) 返回提示未进行购物
2) 选择返回购物网页
2.4.4用例规约User Management
表2.4-4. 用例规约User Management
主要参与者
管理员
前置条件
以管理员身份登陆,并按下管理按钮。
后置条件(成功后的保证)
返回管理后台首页
基本流程(主要成功场景)
1) 显示已注册用户列表
2) 在列表中选择一个要操作的用户
3) 选择一种操作
4) 显示操作页面
5) 完成操作,并保存操作中更改的信息
辅助流程1(替代流程)
选择以显示的方式进行操作
1) 显示用户的注册信息
辅助流程2(替代流程)
选择以修改的方式进行操作
1) 显示用户的可修改的信息
2) 对信息进行修改
3) 显示修改的项目信息,对修改进行确认
辅助流程3(替代流程)
选择以删除的方式进行操作
1) 对删除进行确认
辅助流程4(替代流程)
选择以搜索的方式进行操作
1) 显示搜索页面
2) 填写需要搜索的关键字
3) 选择搜索方式(按名字,按注册日期,等)
4) 显示搜索后的内容
2.4.5用例规约Products Management
表2.4-5. 用例规约Products Management
主要参与者
管理员
前置条件
以管理员身份登陆,并按下管理按钮。。
后置条件(成功后的保证)
返回管理后台首页
基本流程(主要成功场景)
1) 显示商品分类
2) 添加、修改、删除商品(添加软件程序、点卡激活码等)
1、 商品查询
2、 库存管理
3、 商品批量修改
4、 商品评论浏览
5、 完成操作,并保存操作中更改的信息
辅助流程1(替代流程)
选择以显示的方式进行操作
1、显示商品分类
辅助流程2(替代流程)
选择以修改的方式进行操作
1、 商品的可修改的信息
2、进行修改
3、显示修改的项目信息,对修改进行确认
辅助流程3(替代流程)
选择以添加、删除的方式进行操作
1、 添加商品,并确认
2、 删除商品,并确认
辅助流程4(替代流程)
选择以搜索的方式进行操作
1、显示搜索页面
2、填写需要搜索的关键字
3、选择搜索方式(按商品名称,按修改日期,等)
4、显示搜索后的内容
2.4.6用例规约Order Management
表2.4-6. 用例规约Order Management
主要参与者
用户或管理员
前置条件
用户或管理员已经登陆
后置条件(成功后的保证)
返回管理后台首页
基本流程(主要成功场景)
1、检查以何种身份登陆
2、进入所属权限的订单管理页面
3、对订单进行管理操作
4、保存管理操作的结果
5、返回订单管理页面
辅助流程1(替代流程)
用户对已完成购买的订单进行历史记录查看
1、显示已完成购买的订单
辅助流程2(替代流程)
用户对未完成购买的订单进行记录查看
1、显示未完成购买的订单
辅助流程3(替代流程)
用户对未完成购买的订单进行记录删除
1、删除未完成购买的订单
2、对删除进行确认
辅助流程4(替代流程)
管理员对已经销售的订单进行历史记录查看
1、显示已完成销售的订单
辅助流程5(替代流程)
管理员对未完成销售的订单进行操作记录查看
1、显示未完成销售的订单
2、进入管理员人工销售操作页面
辅助流程6(替代流程)
管理员对未完成销售的订单进行人工销售操作
1、人工完成未完成销售的订单,订单确认
2、订单转到已经销售部分
2.5 补充文档
2.5.1 补充规约:支付接口的选择
由于支付宝接口在10月20日起对所有支付宝接口实施包年套餐的租借方式,严重影响项目的开发和调试,所以系统再Payment处增加一个对应中国贝宝(PAYPAL)的支付接口,使用户可以自由选择付款接口,对应的用例规约如下表2.5-1:
表2.5-1. 补充用例规约:支付接口的选择
主要参与者
用户或游客
前置条件
用户或游客已经把商品加入到购物车,并按下结算按钮
后置条件(成功后的保证)
返回商品结算清单及所需费用
基本流程(主要成功场景)
1、用户按下结算按钮
2、系统显示购物列表及总价
3、用户选择支付接口(PAYPAL中国或支付宝)
辅助流程1(替代流程)
用户选择PAYPAL:
1、系统把定单提交到PAYPAL.COM.CN接口。
辅助流程2(替代流程)
用户选择支付宝:
1、系统把定单提交到ALIPAY.COM接口。
3 分析与设计
3.1 架构分析
本系统使用B/S架构,以三层架构组成,由上到下分别是:界面层、业务流程层、数据库层。系统架构分层如图3-1。
图3-1 系统架构分层图
3.1.1 界面层
界面层向客户或系统管理员展示系统前台及后台操作界面,它集成的界面有:系统前/后台登陆界面、购物车、系统管理界面、在线支付结果界面等。
3.1.2 业务逻辑层
业务流程中与用户提交信息相关的服务在这一层中被定义。界面层的用户信息通过业务逻辑层访问数据库,对所指定的业务进行查询、增加、修改和删除等操作。
3.1.3 数据库层
数据库层由业务逻辑层访问,并返回结果到界面层。
3.2 关键抽象
本系统的关键抽象包括客户类、管理员类、提交信息类、界面类、结算类和数据库类,如图3-2所示。
图3-2. 关键抽象
3.3 用例实现
3.3.1 客户购买商品的用例实现
客户购买商品的用例中包括客户类(User)、界面类(UI)、信息提交类(File Offering)、数据库类(Database)、结算接口类(Alipay.com:
Payment),用顺序图表示出来,如图3-3所示:
图3-3 客户购买商品的用例实现顺序图
对应的协作图如图3-4所示:
图3-4 客户购买商品的用例实现协作图
3.3.2 管理员操作的用例实现
管理员操作的用例中包括管理员类(Admin)、界面类(UI)、信息提交类(File Offering)、数据库类(Database),用顺序图表示出来,如图3-5所示:
图3-5 管理员操作的用例实现顺序图
对应的协作图如图3-6所示:
图3-6 管理员操作的用例实现协作图
4 用例分析
4.1 分析类
分析类包括:
1) 界面类:管理员类、用户类、界面类。
2) 控制类:提交信息制类。
3) 实体类:数据库类、支付接口类。
4.2 分析类的功能
4.2.1 管理员类
职能:login();update_profile()。
属性:WebManager;UI。
4.2.2 用户类
职能:login();update_profile();AddtoCart()。
属性:WebManager;UI;CartDetail。
4.2.3提交信息制类
职能:count_totalprice();user_management();order_management();products_management();download()。
属性:SubmitInfo;UI。
4.2.4 数据库类
职能:alipay_service();verify_result()。
属性:userId;OrderId;OrderDetail。
4.2.5支付接口类
职能:return_url()。
属性:OrderNumber;OrderStatus;Date。
4.3 类图及类之间的关联
根据关键抽象及类的功能,得出类之间的联系如图4-1:
图4-1 系统类图
4.4 数据库设计
4.4.1 Admin Table
Table Name admin Field Name Field Type Size Not Null Default Value Extra Description admin_id INT 11 Not Null auto_increment PRIMARY KEY admin_email_address VARCHAR 96 Not Null Login name for admin login page. admin_password VARCHAR 40 Not Null permission tinyint 1 NULL 1 for admin admin_logdate datetime Last login date & time. |
4.4.2 User Table
Table Name customers Field Name Field Type Size Not Null Default Value Extra Description customers_id INT 11 Not Null auto_increment PRIMARY KEY customers_email_address VARCHAR 96 Not Null Login name for UI customers_telephone VARCHAR 32 Not Null customers_password VARCHAR 40 Not Null customers _logdate datetime Last login date & time. |
4.4.3 Shopping Cart Table
Table Name customers_basket Field Name Field Type Size Not Null Default Value Extra Description customers_basket_id INT 11 Not Null auto_increment PRIMARY KEY customers_id INT 11 Not Null 0 products_id INT 11 Not Null 0 customers_basket_quantity INT 3 Not Null 0 products quantity final_price decimal 10,2 Not Null 0.00 customers_basket_date_added VARCHAR 8 |
4.4.4 Categories Table
Table Name categories Field Name Field Type Size Not Null Default Value Extra Description categories_id INT 11 Not Null auto_increment PRIMARY KEY categories_name VARCHAR 32 Not Null categories_image VARCHAR 64 商品分类图片 parent_id INT 11 Not Null 0 上级商品目录ID sort_order INT 3 |
4.4.5 Manufacturers Table
Table Name manufacturers Field Name Field Type Size Not Null Default Value Extra Description manufacturers_id INT 11 Not Null auto_increment PRIMARY KEY manufacturers_name VARCHAR 32 Not Null manufacturers_url VARCHAR 255 Not Null manufacturers_image VARCHAR 64 |
4.4.6 Orders Table
Table Name orders Field Name Field Type Size Not Null Default Value Extra Description orders_id INT 11 Not Null auto_increment PRIMARY KEY customers_id INT 11 Not Null 0 payment_method VARCHAR 32 Not Null last_modified datetime date_purchased datetime orders_status INT 5 Not Null 0 orders_date_finished datetime |
4.4.7 Orders Detail Table
Table Name orders_products Field Name Field Type Size Not Null Default Value Extra Description orders_products_id INT 11 Not Null auto_increment PRIMARY KEY orders_id INT 11 Not Null 0 products_id INT 11 Not Null 0 final_price decimal 10,2 Not Null 0.00 products_quantity INT 3 Not Null 0 |
4.4.8 Orders Products Download Table
Table Name orders_products_download Field Name Field Type Size Not Null Default Value Extra Description orders_products_download_id INT 11 Not Null auto_increment PRIMARY KEY orders_id INT 11 Not Null 0 orders_products_id INT 11 Not Null 0 orders_products_filename VARCHAR 255 Not Null 0 URL for download products download_maxdays INT 2 Not Null 0 download_count INT 2 Not Null 0 |
4.4.9 Products Table
Table Name products Field Name Field Type Size Not Null Default Value Extra Description products_id INT 11 Not Null auto_increment PRIMARY KEY products_name VARCHAR 64 Not Null products_description TEXT products_quantity INT 4 Not Null 0 库存数量 products_image_small VARCHAR 64 产品小图片 products_image_large VARCHAR 64 产品大图片 products_filename_download VARCHAR 255 Not Null 0 same as orders_products_filename products_price decimal 10,2 Not Null 0.00 products_status tinyint 1 Not Null 0 manufacturers_id INT 11 categories_id INT 11 |
4.4.10 Products in Categories Table
Table Name products_to_categories Field Name Field Type Size Not Null Default Value Extra Description products_id INT 11 Not Null 0 PRIMARY KEY categories_id INT 11 Not Null 0 PRIMARY KEY |
*此表作用是可使一个商品从属于多个不同分类。
4.4.11 数据库结构及各表间的关系
数据库结构及各表间的关系如图4-2:
图4-2 数据库结构图 |