1.1 网上购物系统可行性研究
中国互联网络信息中心2006年发布的《中国互联网络热点 调查报告》显示,相对于传统购物方式,网上购物在三个方面优势明显,53.9%的人认为送货上门比较方便,50.1%的人认为价格便宜,44.8%的认为可以购买到本地没有的物品。
网上购物系统对于所有销售者讲,具体的优势体现在,不受营业时间和地狱的限制,任何时候、任何地方的消费者都可以浏览商品信息并进行交;不必支付使用现实的场地所产生的种种费用,比如水电费、房租、装修费和管理费等;不必承担显示经营可能产生的风险,如遭遇盗窃,抢劫等。
从消费者角度讲,不受“营业时间”的限制,足不出户就可看到全国各地的商品,可以使用信用卡网上支付,节约了大量的时间和金钱,满足了消费者付出最小成本得到最大效用的目的。在这个过程中,机会成本将是人们做出抉择的重要依据。网上购物能够兴起并相对稳定发展,是由于相对于传统购物方式,它能够降低消费者的机会成本,同时也降低消费者的机会,达到双赢。
在收入越高的地方,由于时间的机会成本越高,人们越愿意采用网上购物系统。这一原因可以解释为什么现在电子商务的发展国家及大中城市发展快于不发达国家的现象。可以遇见随着我国经济的快速稳定发展、个人收入的不断提高,特别是购物理念的改变网上购物系统在我国将有更广阔的市场和良好的发展前景。
1.2 网上购物系统的目标
(1)用户注册后,登陆到网上购物系统中,可以进入购物流程(或在结帐之前注册并登陆系统)。
(2)客户可以登录网上购物系统浏览和购物,当注册后,可以在客户所购商品总金额达一定数量时,从普通会员根据量值不同自动升级成为不同等级的VIP会员,并享受不同折扣优惠。
(3)客户一次可以购买多种商品,当确认购买之后,将产生一张订单。
(4)订单生成后,客户可在前台查询订单的处理状态:“T”表示订单上的商品已发出,“F”表示订单上的商品未发出。若订单不能在规定日期送达,客户可退单或做其它处理。
(5)一个销售商可以提供多种商品,且一种商品可以由多家销售商提供。
(6)客户和商家可在系统发表留言或评论。
第二章 网上购物系统需求分析
2.1 客户前台功能:
① 客户管理功能
系统实行会员注册或登陆,对客户的相关信息的信息(允许项)可以进行修改。
② 商品信息浏览、查询功能
商品查询是指系统为客户提供模糊查询商品信息、搜寻商品的功能。
商品浏览是指只要登录到网站后,用户就可以在线浏览展示商品,当单击产品名或图片就会看到产品的详细介绍。
③ 购买功能
当客户确定了购买对象后就可以下订单,从而进入购物系统,最终完成购买。
只有注册用户才能利用该系统下订单。注册后并且处于在线状态才可以购物下订单。非注册用户和处于非在线状态的用户,只能浏览商品的基本情况。用户登录后,就可以使用系统提供的各种功能。单击产品对应的购买按钮后,将显示购物车界面,在该界面中实现购买产品数量统计、总价格统计及每种产品的购买时间。在购物车中,可以实现继续购买、产品数量的修改、删除购买物品、到收银台付款等功能。
④ 网上结算银行功能
系统采用网上银行方式,支持网上结算,经过模拟认证后,根据银行帐号在网上处理购买结算。
⑤ 售后评价及退货功能
完成购物后,可以进行评价或者要求商家予以退货服务。
2.2 商家后台功能
① 商品信息管理功能
由系统管理员或由系统管理员授权委托管理整个系统的商品信息,发布销售商品信息,商家注册取得授权后可在系统后台随时增添、修改、更新销售商品信息。
② 订单管理功能
系统内构成由订单生成,按时间顺序生成订单号、订单入库,订单查询组成的完整的订单处理流程。
③ 配送管理功能
合同(订单)确认后,卖方向买方送提货单证(网上下载),凭单提货、配货送货。
④ 商品退货处理和售后评价功能
售后服务中不合格退货的要求,系统支持退货处理,包括货款退还的操作,同时对客户予以评价。
⑤ 客户信息管理功能
系统实行会员注册,对客户的相关信息、交易信息等实行跟踪管理,适时会员实行升级制度。
2.3 网上购物系统的用例图设计
根据网上购物系统的需求,在系统的用例图中,包括的主要角色有管理员用户,消费者,系统和数据库。
(1) 针对消费者的顶层用例图
a. 用户注册和登陆:用户注册和登录是网上购物系统所必须拥有的一项功能。当用户决定结束购物去结账的时候,需要用户处于登录状态。网上购物系统要求用户输入用户名、密码。在输入用户名和密码之后,系统将确认用户名和密码是否正确,如果验证成功,就是用户处于登录状态。否则,系统只显示用户名和密码的错误信息。
用户在登陆页面中能够进行新用户的注册,这是系统要求输入用户注册信息。如果用户名已经存在,系统将向用户显示相应的错误信息,并提示用户是填写其他的用户名。并且用户登陆后可以随时修改个人注册信息。
b. 商品浏览与搜索:用户可以通过网站浏览各种商品。在系统的主页面上,是所有商品类别的列表,商品类别列表中包括各种类别的名称和描述。通过单击某个商品类别的链接,用户可以查看该商品的所有商品列表,它包括各个商品的名称、图片、产品介绍等信息,接着用户可以单击某个商品的链接,将进入该商品基本信息的列表页面。在该页面的商品条目中,包含有商品名称、所属名称、价格等,以及添加到购物车的按钮。如果用户点击购物车按钮,将进入购物车向导中。
c. 维护购物车:当用户在商品列表视图或商品详细视图中单击添加到购物车按钮时,将跳转到购物车的页面,商品会被自动添加到购物车中,默认数量为1.在购物页面,将列出用户的购物车的所有商品,并且每个商品列出商品名、所属的产品名、商品描述、是否有库存、购买数量、单价以及移除按钮。用户可以任意更改购买某个商品的数量,单击更新购物车按钮即可实现更新。用户可以单击移除按钮移除选择的商品,则可实现该商品从购物车中删除。同时在购物车的下方列出了总的价格。
d. 填写与确定购物:消费者结束购物后,将进行结账。结账是一个向导式的过程,购物车中的账单按钮可以将用户导向结账向导。结账向导首先向用户显示购物车中的商品信息,用户确认后开始填写订单的信息,包括信用卡号码、类型、过期时间以及送货的详细地址。填写完毕后,用户就可以提交订单了。系统验证用户填写的订单信息,如果正确,则可向用户显示订单成功的页面,用户在该页面下可以看到和打印订单号。
(2)针对管理员用户的顶层用例图:
a. 登陆与注销:网上购物系统要求管理员在进行相应管理操作前先进行登录,在登陆页面中输入用户名、密码。在输入用户名和密码之后,系统将确认用户名和密码是否正确,如果验证成功,就使管理员处于登录状态。否则,系统只显示用户名和密码的错误信息。注销即为重新登录,清楚该管理员的所用的登陆信息,并重新将其导入登陆页面进行重新登录。
b. 处理订单:当用户将其订单确认并提交以后,该订单将存储在后台数据库中,管理员通过相应的页面去查看(不能修改)订单,并按订单中的要求将商品邮寄到用户指定的地点。同时管理员可以对订单按其不同的分类进行管理。
c. 维护商品:管理员可对数据库中的商品进行维护,即及时更新商品,调整商品的价格等,并可按商品的不同分类进行管理,也可发布商品的促销信息等。
(3)针对管理员的订单处理子用例图
2.4 网上购物系统活动图设计
(1) 针对消费者的网上购物系统的活动图
商品浏览的活动图 添加商品到购物车中
用户注册活动图
(2)当进入网上购物系统的后台维护管理系统可以进行的活动图:
用户登录的活动图
第三章 概要设计
3.1角色分配与权限
根据系统的功能需求,系统中的角色可以分为管理员,普通用户和游客。各个角色的功能如下:
游客:可以浏览网站中的商品,查看商品的详细信息。
普通用户:为通过注册了的用户,他们可以浏览商品,查看商品详细信息,购买评论,修改个人信息等。
管理员:拥有最高权限,可以管理用户(如封锁违规用户)、管理商品信息、订单处理、发布公告及相关信息、设置友情链接、与供货商联系等。
角色名称 | 权限描述 |
游客 | 查看商品 |
用户(买家) | 注册/登录、购买商品、下(取消)订单 |
系统管理员 | 用户管理、商品管理、订单管理 |
3.2.系统功能点
功能需求点详细列表如下:
编号 | 功能名称 | 模块编号 | 功能描述 | 输入内容 | 输出内容 |
1.1 | 用户登录 | 1 | 保证所有系统的合法用户通过身份认证进入购物系统进行购物操作 | 用户名、密码、验证码 | 用户登录状态 |
1.2 | 用户注册 | 1 | 对用户名进行检测,信息通过检测之后成为本系统的用户 | 用户名、密码、性别、QQ、E-mail、电话等基本信息 | 注册的结果(提示用户“注册成功”或者“注册失败”) |
1.3 | 修改个人信息 | 1 | 用户根据自己当前的情况修改个人信息 | 要你修改的内容 | 提示修改结果(“修改成功”或者“修改失败”) |
1.4 | 用户查询 | 1 | 用户可以查看自己的详细信息 | 用户的用户名、密码 | 用户的详细信息 |
1.5 | 后台登录 | 1 | 仅管理员能够登录后台 | 后台用户名、密码 | 提示后台登录是否成功 |
2.1 | 商品查询 | 2 | 用户根据自己的喜好,查看商品的详细信息 | 商品的ID号 | 显示商品的详细信息 |
2.2 | 添加商品系列 | 2 | 管理员添加商品系列的信息 | 商品系列的ID号 | 提示是否添加成功 |
2.3 | 删除商品系列 | 2 | 管理员删除商品系列信息 | 选定的商品系列 | 提示系列信息删除成功或者删除失败 |
2.4 | 添加商品条目 | 2 | 管理员添加商品条目的信息 | 商品条目ID | 提示是否添加成功 |
2.5 | 删除商品条目 | 2 | 管理员删除商品系列信息 | 选定的商品条目 | 提示条目信息删除成功或者删除失败 |
3.1 | 添加商品到购物车中 | 3 | 用户根据自己的喜好,将商品添加到购物车中 | 选定商品的ID | 提示添加成功或失败 |
3.2 | 删除购物车中的商品 | 3 | 若用户不想想要该商品,将其从购物车中删除 | 选定商品的ID | 提示条目信息删除成功或者删除失败 |
3.3 | 浏览商品 | 3 | 用户查看添加到购物车中的商品 | 选定商品的ID | 显示购物车中商品的信息 |
4.1 | 查看用户订单 | 4 | 当用户选择好商品后,在支付之前,确认商品 | 订单号 | 显示订单中的所有商品 |
4.2 | 处理订单 | 4 | 管理员根据用户订单中的商品,处理订单 | 订单号、商品的ID | 修改数据库中的信息,并将商品发给用户 |
5.1 | 添加友情链接 | 5 | 管理员在后台添加友情链接 | 友情站点相关信息 | 显示友情站的Logo,通过点击Logo即可跳转到友情站点 |
5.2 | 编辑友情链接 | 5 | 管理员修改友情链接信息 | 友情链接信息 | 显示更新后的友情链接信息 |
5.3 | 删除友情链接 | 5 | 对于不合格的友情链接进行清理 | “删除”命令 | 显示删除结果(“删除成功”或者“删除失败”) |
第四章 网上购物系统架构设计
网上购物系统架构设计遵循多层次架构设计原则,从上到下依次为视图层、控制器层、模型层、数据持久层和数据库层,系统层次架构模
在网上购物系统中,视图层和控制层使用Structs框架实现,而数据持久层和数据层使用Hibernate实现,模型层实际上再细分为数据访问层(DAO)和数据服务层(Manager),Util是指一些使用工具类 ,例如系统配置类、执行数据转换类等。
- 网上购物系统业务实体类和业务类设计
5.1网上购物系统的业务实体及其关系
经过仔细研究得出,网上购物系统的业务实体包括注册用户(Member)、商品(Item)、商品类别(Category)、商品系列(Product)、订单(Order)、购物车(Cart)、购物车中的商品(CartItem)和订单中的商品(LineItem)等。
各实体间的关系如下:Item、LineItem和CartItem都是一对一的关系,订单和购物车的每一种商品是对应Item的不同包装形式,而Order与LineItem、Cart和CartItem都是一对多的关系,订单和购物车中都可以有多个商品。Item与Product、Product与Category都是多对一关系,一个类别下会有多个产品,一个产品下会有多个不同型号的商品条目。一个用户可以有多个订单,因此Order与Account之间的关系是多对一的关系。
订单中除了包括所购买的产品的信息,还应包括下订单的客户,订单的发货地址或收款地址,信用卡的详细信息以及订单状态,订单状态可以帮助商品客户和管理员了解彼此关于订单的处理情况。
5.2 网上购物系统的实体类图
根据以上分析得到的网上购物系统实体之间的关系,将该系统中的实体转化为实体类图如下:
5.3 网上购物系统的业务类图
根据系统中对实体相关的操作,得到系统业务类图如下:
对于用户、商品类别、商品系列、商品条目,订单等进行简单操作,如添加、删除、修改等。
- 网上购物系统数据库模型设计
注册用户(Member)、商品类别(Category)、商品系列(Product)、商品(Item)、订单中的商品(LineItem)和订单(Order)等对象都需要持久化,因为他们一般不会更改。所以他们在数据库中必须有对应的表。而代表购物车的Cart和代表购物车中的商品的CartItem类对象都不需要持久化,因为购物车Cart和购物车里的商品CartItem都是随着用户退出系统自动消亡,他们存在于内存中,生命也仅限于HTTP Session范围内,因此这两个模型并不存在对应的数据模型,并且每个注册用户相应的有一个用户账户Account。
根据以上数据模型设计原则,网上购物系统的数据表基本结构和香精的数据模型设计如下:
- 注册用户表(Member)与注册用户数据模型
注册用户表存放网上购物系统的组侧用户信息,包括用户的用户名、密码、姓名、联系方式等信息。
序号 | 字段名 | 类型 | 长度 | 主键 | 是否为空 | 描述 |
1 | userId | integer | 80 | 是 | 否 | 用户ID |
2 | userName | varchar | 80 | 否 | 否 | 用户名 |
3 | passWord | varchar | 80 | 否 | 否 | 密码 |
4 | | varchar | 80 | 否 | 是 | 电子邮件 |
4 | status | varchar | 2 | 否 | 否 | 状态 |
5 | listOption | varchar | 80 | 否 | 是 | 列表选择 |
- 用户账号表(Account)与用户账户数据模型
用户账户表用来保存注册用户的信用卡的信息。包括用户ID、密码、地址等。
序号 | 字段名 | 类型 | 长度 | 主键 | 是否允许为空 | 描述 |
1 | userId | integer | 80 | 是 | 否 | 用户ID |
2 | passWord | varchar | 80 | 否 | 否 | 密码 |
3 | | varchar | 80 | 否 | 否 | 电子邮件 |
4 | name | varchar | 255 | 否 | 否 | 用户名 |
5 | status | varchar | 2 | 否 | 否 | 状态 |
6 | Addr | varchar | 80 | 否 | 否 | 地址1 |
7 | city | varchar | 255 | 否 | 否 | 城市 |
8 | state | varchar | 20 | 否 | 否 | 省份 |
9 | zip | varchar | 20 | 否 | 否 | 邮编 |
10 | phone | varchar | 80 | 否 | 否 | 联系电话 |
3.商品类别表(Category)与商品类别数据模型
商品类别记录了网上购物系统的商品分类的相关信息,以便对商品的信息进行分类显示。为了能使用户找到所需的商品信息,对所示商品按照品牌进行分类管理。
序号 | 字段名 | 类型 | 长度 | 主键 | 是否允许为空 | 描述 |
1 | cartId | integer | 20 | 是 | 否 | 商品类别ID |
2 | name | varchar | 80 | 否 | 否 | 商品类别名称 |
3 | descn | varchar | 255 | 否 | 是 | 描述 |
4.商品条目表(Item)与商品条目数据模型
商品条目表包括条目的ID、产品的ID、单价、供货商、状态等,其字段设置为:
序号 | 字段名 | 类型 | 长度 | 主键 | 是否允许为空 | 描述 |
1 | itemId | integer | 20 | 是 | 否 | 商品条目ID |
2 | productId | varchar | 20 | 否 | 否 | 产品ID |
3 | listPrice | varchar | 20 | 否 | 否 | 单价 |
4 | unitCost | varchar | 20 | 否 | 否 | 进货价格 |
5 | supplier | varchar | 255 | 否 | 是 | 供货商 |
5.商品系列表(Product)与商品系列数据模型
商品系列表记录了商品的ID、商品类别、商品的名称以及相应的描述信息。
序号 | 字段名 | 类型 | 长度 | 主键 | 是否允许为空 | 描述 |
1 | productId | integer | 20 | 是 | 否 | 商品系列ID |
2 | cartId | varchar | 20 | 否 | 否 | 商品类别 |
3 | name | varchar | 20 | 否 | 否 | 商品名称 |
4 | descn | varchar | 255 | 否 | 是 | 描述 |
6.商品条目中的供应商表(Supplier)和供应商数据类型
商品条目包括供应商ID、名称、状态、电话等。
序号 | 字段名 | 类型 | 长度 | 主键 | 是否允许为空 | 描述 |
1 | suppId | integer | 20 | 是 | 否 | 供货商ID |
2 | name | varchar | 80 | 否 | 否 | 供货商名 |
3 | Addr | varchar | 80 | 否 | 是 | 地址 |
4 | city | varchar | 255 | 否 | 是 | 城市 |
5 | state | varchar | 20 | 否 | 是 | 省份 |
6 | zip | varchar | 80 | 否 | 是 | 邮编 |
7 | phone | varchar | 80 | 否 | 是 | 电话 |
7.存货清单表(Inventory)与存货清单数据模型
因为每个商品都有库存数量,而库存数量通常是与仓库信息系统相连的,所以必须建立一个单独的表即存货清单表
序号 | 字段名 | 类型 | 长度 | 主键 | 是否允许为空 | 描述 |
1 | itemId | integer | 20 | 是 | 否 | 商品ID |
2 | qty | varchar | 20 | 否 | 否 | 商品数量 |
8.订单表(Order)与订单数据类型
订单表包括条目ID,产品ID,单价,进货价格,状态;地址等信息。一个用户可以拥有多个订单,其中的字段属性userId描述了订单所属的用户,一个订单中,可以根据商品条目的不同,有不同的订单。
序号 | 字段名 | 类型 | 长度 | 主键 | 是否允许为空 | 描述 |
1 | orderId | integer | 20 | 是 | 否 | 订单ID |
2 | userId | varchar | 80 | 否 | 否 | 订单的用户 |
3 | orderDate | Date | 否 | 否 | 订单日期 | |
4 | shipaddr | varchar | 80 | 否 | 否 | 送货地址 |
5 | shipsCity | varchar | 80 | 否 | 否 | 送货城市 |
6 | shipState | varchar | 80 | 否 | 否 | 送货省份 |
7 | shipZip | varchar | 20 | 否 | 否 | 送货邮编 |
8 | courier | varchar | 80 | 否 | 否 | 送货方式 |
9 | totalPrice | decimal | 10 | 否 | 否 | 总价格 |
10 | billToname | varchar | 80 | 否 | 否 | 账单接收人 |
11 | shipToname | varchar | 80 | 否 | 否 | 货物接收人 |
12 | creditCard | varchar | 80 | 否 | 否 | 信用卡号 |
13 | payMethod | varchar | 20 | 否 | 否 | 支付方式 |
14 | cardType | varchar | 80 | 否 | 否 | 信用卡类型 |
9.订单条目表(LineItem)与订单条目数据类型
订单和订单条目之间是一对多的关系,LineItem表中的orderId字段描述了订单条目所属的订单。订单条目表包括订单条目的ID号,关联订单ID,商品在订单中的序号,数量,价格。
序号 | 字段名 | 类型 | 长度 | 主键 | 是否允许为空 | 描述 |
1 | lineitemId | integer | 20 | 是 | 否 | 订单条目ID |
2 | orderId | integer | 20 | 是 | 否 | 关联订单 |
3 | lineNum | integer | 80 | 否 | 否 | 序号 |
4 | itemId | varchar | 20 | 否 | 否 | 关联商品 |
5 | qty | integer | 255 | 否 | 否 | 数量 |
6 | unitPrice | decimal | 20 | 否 | 否 | 单价 |
10.订单状态表(OrderStatus)与订单状态数据模型
一个订单中的每一个订单条目都有一个相应的状态,如缺货还是发货,在这里单独列出一个订单状态表。orderId和linenum字段共同决定了一个条目,所以该表的主键为lineitemId和orderId.
序号 | 字段名 | 类型 | 长度 | 主键 | 是否允许为空 | 描述 |
1 | orderId | integer | 20 | 是 | 否 | 关联订单 |
2 | lineNum | integer | 80 | 否 | 否 | 序号 |
3 | timeStamp | Date | 否 | 是 | 时间 | |
4 | status | varchar | 2 | 否 | 否 | 状态 |